/* ─── NETSHIELD Design Tokens ─── */
:root {
  /* Backgrounds */
  --bg-0: #06080c;
  --bg-1: #0c1018;
  --bg-2: #121822;
  --bg-3: #1a2230;

  /* Borders */
  --border: #1e2a3a;
  --border-hi: #2a3a4e;

  /* Text */
  --tx-0: #e8ecf2;
  --tx-1: #a0afc0;
  --tx-2: #607080;
  --tx-3: #3a4a5a;

  /* Accent */
  --accent: #4af;
  --accent-dim: #4af3;

  /* Risk levels */
  --crit: #ff3b4e;
  --crit-bg: #ff3b4e18;
  --crit-br: #ff3b4e40;
  --high: #ff8c26;
  --high-bg: #ff8c2618;
  --high-br: #ff8c2640;
  --med: #e8c840;
  --med-bg: #e8c84018;
  --med-br: #e8c84040;
  --low: #3ad;
  --low-bg: #33aadd20;
  --low-br: #33aadd40;
  --green: #3ddc84;

  /* Typography */
  --font-body: system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'SF Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', 'Menlo', monospace;
  --fs-xs: 10px;
  --fs-sm: 11px;
  --fs-base: 13px;
  --fs-md: 14px;
  --fs-lg: 16px;
  --fs-xl: 20px;
  --fs-2xl: 28px;
  --fs-3xl: 36px;

  /* Spacing */
  --sp-xs: 4px;
  --sp-sm: 8px;
  --sp-md: 14px;
  --sp-lg: 20px;
  --sp-xl: 28px;

  /* Layout */
  --radius: 6px;
  --sidebar-w: 200px;
  --sidebar-collapsed: 52px;
  --topbar-h: 50px;
}

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { font-size: var(--fs-base); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body { background: var(--bg-0); color: var(--tx-0); font-family: var(--font-body); line-height: 1.5; min-height: 100vh; overflow-x: hidden; }
::selection { background: var(--accent); color: var(--bg-0); }
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--bg-1); }
::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 3px; }

@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulseDot { 0%,100% { opacity: 1; } 50% { opacity: .3; } }
.fade-in { animation: fadeIn .35s ease both; }
.stagger { animation: fadeIn .35s ease both; }
