/* AU SPECTRA — color tokens (dark tactical console, single dark theme) */
:root{
/* backgrounds */
--bg-base:#0B1118;
--bg-sidebar:#0E151F;
--bg-panel:#111A25;
--bg-panel-elevated:#172230;
--bg-control:#1B2734;
--bg-hover:#202E3D;
--bg-active:#243447;
--bg-inset:#0A0F16;
/* borders */
--border-subtle:#202C3B;
--border-default:#29374A;
--border-strong:#364961;
/* text */
--text-primary:#D9E2EF;
--text-secondary:#9DAEC3;
--text-muted:#6D7E92;
--text-disabled:#465365;
--text-inverse:#0B1118;
/* primary accent */
--accent-primary:#4AA3FF;
--accent-primary-hover:#6BB5FF;
--accent-primary-soft:rgba(74,163,255,0.14);
--accent-primary-softer:rgba(74,163,255,0.07);
--accent-primary-border:rgba(74,163,255,0.32);
/* status */
--status-online:#38C180;
--status-online-soft:rgba(56,193,128,0.13);
--status-warning:#D6A85E;
--status-warning-soft:rgba(214,168,94,0.13);
--status-critical:#E25D5D;
--status-critical-soft:rgba(226,93,93,0.13);
--status-info:#61A9E8;
--status-info-soft:rgba(97,169,232,0.12);
--status-offline:#68788C;
--status-offline-soft:rgba(104,120,140,0.12);
--status-recording:#E16B65;
/* signal classification */
--sig-unknown:#8A99AC;
--sig-rf:#7FB8EF;
--sig-css:#4FC1D8;
--sig-candidate:#D6A85E;
--sig-confident:#38C180;
--sig-critical:#E25D5D;
--sig-selected:#4AA3FF;
/* track palette (hop timeline / waterfall overlays) */
--track-1:#4FC1D8;
--track-2:#D6A85E;
--track-3:#9A7FE8;
--track-4:#38C180;
--track-5:#E18AB4;
/* waterfall "Tactical Blue" ramp, weak → strong */
--wf-0:#070B10;
--wf-1:#0C1B33;
--wf-2:#14346B;
--wf-3:#1E5FA8;
--wf-4:#3D9BD1;
--wf-5:#7FD0DE;
--wf-6:#D8C97F;
--wf-7:#F4EFE0;
/* charts */
--chart-trace:#8FC6FF;
--chart-avg:#5A7FA6;
--chart-maxhold:#3D5A78;
--chart-noise:#5A6B80;
--chart-threshold:#D6A85E;
--chart-grid:rgba(157,174,195,0.08);
--chart-axis:#6D7E92;
/* semantic surfaces */
--surface-page:var(--bg-base);
--surface-card:var(--bg-panel);
--surface-raised:var(--bg-panel-elevated);
--surface-input:var(--bg-control);
/* focus */
--focus-ring:0 0 0 2px rgba(74,163,255,0.45);
/* background grid (48px, ≤5% opacity) */
--grid-line:rgba(157,174,195,0.035);
--grid-size:48px;
}
/* AU SPECTRA — typography tokens. Condensed sans for UI, mono for RF values. */
:root{
--font-ui:'Roboto Condensed','Arial Narrow',sans-serif; /* IBM Plex Sans Condensed
     не має базової кирилиці U+0400-045F — український текст нею не рендериться */
--font-mono:'JetBrains Mono','IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
/* sizes */
--fs-display:32px;      /* logo / boot screen only */
--fs-page-title:21px;
--fs-panel-title:12px;  /* uppercase, tracked */
--fs-body:13px;
--fs-body-lg:14px;
--fs-label:11px;        /* technical labels, uppercase, muted */
--fs-label-sm:10px;
--fs-mono:13px;         /* RF values */
--fs-mono-lg:16px;      /* primary readouts */
--fs-mono-xl:22px;      /* hero frequency readout */
/* weights */
--fw-regular:400; /* @kind font */
--fw-medium:500; /* @kind font */
--fw-semibold:600; /* @kind font */
/* tracking */
--ls-panel:0.07em;
--ls-label:0.06em;
--ls-brand:0.14em;
/* line heights */
--lh-tight:1.25; /* @kind font */
--lh-body:1.45; /* @kind font */
}
.u-panel-title{font-family:var(--font-ui);font-size:var(--fs-panel-title);font-weight:var(--fw-semibold);letter-spacing:var(--ls-panel);text-transform:uppercase;color:var(--text-secondary)}
.u-label{font-family:var(--font-ui);font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-muted)}
.u-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-mono)}
/* AU SPECTRA — spacing, radius, borders, shadows, motion, layout */
:root{
--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
/* radii — disciplined geometry, never pill cards */
--r-control:4px;
--r-button:5px;
--r-panel:6px;
--r-panel-lg:8px;
/* borders */
--bw:1px;
--bw-active:2px;
/* shadows — modal/drawer/popover only; panels separate by bg+border */
--shadow-popover:0 4px 16px rgba(4,8,13,0.5);
--shadow-modal:0 12px 40px rgba(4,8,13,0.65);
--shadow-drawer:-8px 0 32px rgba(4,8,13,0.5);
/* motion 120–220ms */
--t-fast:120ms cubic-bezier(.4,0,.2,1); /* @kind other */
--t-med:180ms cubic-bezier(.4,0,.2,1); /* @kind other */
--t-slow:220ms cubic-bezier(.4,0,.2,1); /* @kind other */
/* app shell */
--h-header:56px;
--h-statusbar:30px;
--w-sidebar-left:300px;
--w-sidebar-left-compact:248px;
--w-sidebar-right:348px;
--w-sidebar-collapsed:44px;
}
/* AU SPECTRA — base element styles for the dark console */
*{box-sizing:border-box}
body{margin:0;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}
.bg-grid{background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size)}
a{color:var(--accent-primary);text-decoration:none}
a:hover{color:var(--accent-primary-hover);text-decoration:underline}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px;border:2px solid var(--bg-panel)}
::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}
:focus-visible{outline:none;box-shadow:var(--focus-ring)}
::selection{background:var(--accent-primary-soft)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
