:root { color-scheme: dark; --bg: #08090a; --panel: rgba(18, 19, 19, 0.86); --panel-strong: rgba(26, 27, 26, 0.94); --line: rgba(229, 197, 112, 0.26); --line-cold: rgba(170, 184, 191, 0.22); --text: #f4f1e8; --muted: #a8aba6; --gold: #dfbd62; --gold-hot: #f4d98b; --steel: #9fa9ac; --black: #090a0b; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } * { box-sizing: border-box; } html, body { min-height: 100%; margin: 0; } body { min-width: 320px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px) 0 0 / 76px 76px, repeating-linear-gradient( 102deg, #070808 0, #0d0e0e 2px, #090a0a 6px, #111211 8px ); color: var(--text); overflow-x: hidden; } #metal { position: fixed; inset: 0; width: 100vw; height: 100vh; pointer-events: none; opacity: 0.62; } .shell { position: relative; z-index: 1; width: min(1120px, calc(100% - 28px)); margin: 0 auto; padding: clamp(28px, 7vh, 76px) 0 40px; } .search-stage { min-height: min(540px, calc(100vh - 40px)); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; } .mark { display: inline-flex; align-items: center; gap: 10px; min-height: 32px; color: var(--text); font-size: clamp(25px, 5vw, 54px); font-weight: 680; letter-spacing: 0; text-shadow: 0 1px 0 #000, 0 0 24px rgba(244, 217, 139, 0.18); } .mark-dot { width: 14px; height: 14px; display: inline-block; border: 1px solid rgba(255, 231, 163, 0.8); background: linear-gradient(135deg, rgba(255, 237, 174, 0.96), rgba(165, 121, 34, 0.96)); box-shadow: 0 0 20px rgba(223, 189, 98, 0.42); } body[data-live="true"] .mark-dot { animation: livePulse 1.4s ease-in-out infinite; } body[data-busy="true"] .mark { text-shadow: 0 1px 0 #000, 0 0 18px rgba(244, 217, 139, 0.22), 0 0 42px rgba(159, 169, 172, 0.12); } .search-box { width: min(760px, 100%); min-height: 58px; display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 6px; border: 1px solid var(--line); background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 28%), rgba(12, 13, 13, 0.9); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 22px 80px rgba(0, 0, 0, 0.46), 0 0 0 1px rgba(0, 0, 0, 0.7); } .search-box:focus-within { border-color: rgba(244, 217, 139, 0.7); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 24px 90px rgba(0, 0, 0, 0.54), 0 0 0 3px rgba(223, 189, 98, 0.14); } .search-box input { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: var(--text); padding: 0 18px; font: inherit; font-size: 17px; } .search-box input::placeholder { color: rgba(231, 226, 212, 0.46); } button { position: relative; min-height: 40px; border: 1px solid rgba(255, 232, 165, 0.22); background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), transparent), #151615; color: var(--text); font: inherit; font-size: 13px; letter-spacing: 0; cursor: pointer; } button:hover { border-color: rgba(244, 217, 139, 0.7); color: #fff8dc; } button:active { transform: translateY(1px); } button[data-tip]::after { content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); z-index: 8; width: min(260px, 80vw); padding: 8px 10px; border: 1px solid rgba(223, 189, 98, 0.34); background: rgba(8, 9, 9, 0.96); color: #e9e2cf; font-size: 12px; line-height: 1.35; text-align: left; white-space: normal; box-shadow: 0 12px 38px rgba(0, 0, 0, 0.42); opacity: 0; transform: translate(-50%, 4px); pointer-events: none; transition: opacity 140ms ease, transform 140ms ease; } button[data-tip]:hover::after, button[data-tip]:focus-visible::after { opacity: 1; transform: translate(-50%, 0); } [data-tip]:not(button)::after { content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); z-index: 8; width: min(280px, 82vw); padding: 8px 10px; border: 1px solid rgba(223, 189, 98, 0.34); background: rgba(8, 9, 9, 0.97); color: #e9e2cf; font-size: 12px; line-height: 1.35; text-align: left; box-shadow: 0 12px 38px rgba(0, 0, 0, 0.42); opacity: 0; transform: translate(-50%, 4px); pointer-events: none; transition: opacity 140ms ease, transform 140ms ease; } [data-tip]:not(button):hover::after, [data-tip]:not(button):focus-visible::after { opacity: 1; transform: translate(-50%, 0); } .search-box button { min-width: 72px; padding: 0 18px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.18), transparent 44%), linear-gradient(135deg, #725719, #d7b75e 54%, #6b4c11); color: #100d06; font-weight: 720; } .quick-row, .status-strip { width: min(760px, 100%); display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; } .quick-row button { min-height: 34px; padding: 0 14px; color: var(--muted); background: rgba(14, 15, 15, 0.74); border-color: rgba(170, 184, 191, 0.18); } .quick-row button:hover { color: var(--text); } .status-strip { justify-content: center; color: var(--muted); font-size: 12px; } .status-strip span { min-height: 28px; display: inline-flex; align-items: center; padding: 0 10px; border: 1px solid rgba(170, 184, 191, 0.14); background: rgba(6, 7, 7, 0.46); } .dashboard { width: min(900px, 100%); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 4px; } .gauge { position: relative; min-height: 142px; display: grid; grid-template-rows: auto 1fr auto; gap: 10px; padding: 12px; border: 1px solid rgba(170, 184, 191, 0.18); background: linear-gradient(180deg, rgba(255, 255, 255, 0.075), transparent 42%), rgba(8, 9, 9, 0.72); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07), 0 16px 46px rgba(0, 0, 0, 0.24); } .gauge-top { min-height: 34px; display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; } .gauge-top span { color: var(--muted); font-size: 11px; text-transform: uppercase; } .gauge-top strong { color: var(--gold-hot); font-size: 14px; font-weight: 760; text-align: right; overflow-wrap: anywhere; } .gauge-bar { align-self: center; height: 12px; overflow: hidden; border: 1px solid rgba(170, 184, 191, 0.18); background: rgba(2, 3, 3, 0.76); } .gauge-bar span { display: block; width: 0%; height: 100%; background: linear-gradient(90deg, rgba(159, 169, 172, 0.92), rgba(244, 217, 139, 0.94)); transition: width 220ms ease; } .gauge-ring { --budget: 0%; place-self: center; width: 72px; height: 72px; display: grid; place-items: center; border-radius: 50%; background: radial-gradient(circle at center, #101211 0 48%, transparent 49%), conic-gradient(var(--gold-hot) var(--budget), rgba(170, 184, 191, 0.18) 0); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06); } .gauge-ring span { color: var(--text); font-size: 13px; font-weight: 720; } .gauge-meta { min-height: 34px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; align-items: end; } .gauge-meta.tall { grid-template-columns: 1fr; } .gauge-meta span { min-width: 0; color: var(--muted); font-size: 11px; line-height: 1.32; overflow-wrap: anywhere; } .dashboard[data-severity="warn"] .gauge-state { border-color: rgba(223, 189, 98, 0.52); } .dashboard[data-active="true"] .gauge { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 18px 52px rgba(0, 0, 0, 0.26), 0 0 0 1px rgba(223, 189, 98, 0.05); } .dashboard[data-active="true"] .gauge-state { border-color: rgba(244, 217, 139, 0.42); } .dashboard[data-busy="true"] .gauge-bar span { background: linear-gradient( 90deg, rgba(159, 169, 172, 0.92), rgba(244, 217, 139, 0.96), rgba(159, 169, 172, 0.92) ); background-size: 220% 100%; animation: flowBar 1.1s linear infinite; } .dashboard[data-severity="danger"] .gauge-state { border-color: rgba(255, 107, 107, 0.62); } .dashboard[data-severity="danger"] .gauge-state .gauge-top strong { color: #ff9c8c; } .result-grid { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 14px; align-items: start; } .panel { border: 1px solid var(--line-cold); background: linear-gradient(180deg, rgba(255, 255, 255, 0.055), transparent 120px), var(--panel); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06); } .panel-head { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-bottom: 1px solid rgba(170, 184, 191, 0.14); } .panel-head h1, .panel-head h2 { margin: 0; font-size: 14px; font-weight: 720; } .panel-head span { color: var(--gold); font-size: 12px; white-space: nowrap; } pre { min-height: 320px; max-height: 560px; margin: 0; overflow: auto; padding: 16px; color: #dce2dc; font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace; font-size: 12px; line-height: 1.52; white-space: pre-wrap; word-break: break-word; } .command-list { display: grid; gap: 8px; padding: 12px; } .route-card { margin: 12px 12px 0; padding: 12px; border: 1px solid rgba(223, 189, 98, 0.2); background: rgba(8, 9, 9, 0.68); } .route-card h3 { margin: 0 0 7px; color: var(--gold-hot); font-size: 13px; font-weight: 720; } .route-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.45; } .scale-control { display: grid; grid-template-columns: 1fr 92px 76px; align-items: end; gap: 8px; margin: 12px 12px 0; padding: 10px; border: 1px solid rgba(170, 184, 191, 0.18); background: rgba(8, 9, 9, 0.72); } .scale-control label { color: var(--muted); font-size: 12px; text-transform: uppercase; } .scale-control input { min-width: 0; height: 38px; border: 1px solid rgba(223, 189, 98, 0.26); outline: 0; background: rgba(14, 15, 15, 0.92); color: var(--text); padding: 0 10px; font: inherit; font-size: 15px; } .scale-control input:focus { border-color: rgba(244, 217, 139, 0.7); box-shadow: 0 0 0 3px rgba(223, 189, 98, 0.12); } .scale-control button { min-height: 38px; padding: 0 12px; font-weight: 720; } .route-actions { display: grid; gap: 7px; margin-top: 12px; } .route-actions a, .route-actions button { min-height: 34px; display: flex; align-items: center; padding: 0 10px; border: 1px solid rgba(170, 184, 191, 0.18); background: rgba(14, 15, 15, 0.8); color: var(--text); font-size: 12px; text-decoration: none; } .route-actions a:hover, .route-actions button:hover { border-color: rgba(244, 217, 139, 0.62); } .command-list button { width: 100%; text-align: left; padding: 0 12px; background: rgba(9, 10, 10, 0.72); } @keyframes livePulse { 0%, 100% { opacity: 0.72; box-shadow: 0 0 16px rgba(223, 189, 98, 0.32); } 50% { opacity: 1; box-shadow: 0 0 28px rgba(244, 217, 139, 0.62); } } @keyframes flowBar { from { background-position: 0% 0; } to { background-position: 220% 0; } } @media (max-width: 820px) { .shell { width: min(100% - 18px, 760px); padding-top: 24px; } .search-stage { min-height: auto; padding: 34px 0 24px; } .search-box { grid-template-columns: 1fr; gap: 6px; } .search-box input { min-height: 46px; padding: 0 12px; } .search-box button { width: 100%; } .result-grid { grid-template-columns: 1fr; } .dashboard { grid-template-columns: repeat(2, minmax(0, 1fr)); } .command-panel { order: -1; } .command-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .scale-control { grid-template-columns: 1fr 84px 70px; } } @media (max-width: 520px) { .dashboard { grid-template-columns: 1fr; } }