/* Self-hosted fonts (OFL). Production CSP blocks Google Fonts. */
@font-face{font-family:"Space Grotesk";src:url("fonts/SpaceGrotesk-VariableFont_wght.woff2") format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Fira Code";src:url("fonts/FiraCode-VariableFont_wght.woff2") format("woff2");font-weight:300 700;font-display:swap}
/* Dark is the default for server-rendered pages and /map (see theme.js DEFAULT_THEME).
   Light tokens match threat-intelligence-frontend src/theme.ts. */
:root,[data-theme="dark"]{
  --bg-primary:#020617; --bg-secondary:#0f172a; --bg-tertiary:#1e293b; --card-bg:#0d1526;
  --bg-glass:rgba(255,255,255,.04); --bg-glass-hover:rgba(255,255,255,.07);
  --text-primary:#f1f5f9; --text-secondary:#94a3b8; --text-tertiary:#475569;
  --border-color:rgba(255,255,255,.08); --border-light:rgba(255,255,255,.05);
  --accent-primary:#f59e0b; --accent-cyan:#ef4444; --accent-glow:rgba(245,158,11,.25);
  --live:#10b981;
  --font-sans:"Space Grotesk","Noto Sans CJK JP","Noto Sans JP","Hiragino Sans",system-ui,sans-serif;
  --font-mono:"Fira Code",ui-monospace,"SFMono-Regular",monospace;
  color-scheme:dark;
}
[data-theme="light"]{
  --bg-primary:#eef2f7; --bg-secondary:#ffffff; --bg-tertiary:#f1f5f9; --card-bg:#ffffff;
  --bg-glass:rgba(15,23,42,.04); --bg-glass-hover:rgba(15,23,42,.07);
  --text-primary:#0f172a; --text-secondary:#334155; --text-tertiary:#475569;
  --border-color:rgba(15,23,42,.12); --border-light:rgba(15,23,42,.07);
  --accent-primary:#f59e0b; --accent-cyan:#ef4444; --accent-glow:rgba(245,158,11,.12);
  --live:#059669;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}
.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none}
.brand-mark{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;background:var(--accent-primary);color:#000}
.brand-text{font-size:13px;font-weight:700;letter-spacing:.12em;color:var(--accent-primary);text-transform:uppercase}
.live{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--live);font-family:var(--font-mono);font-weight:700;letter-spacing:.08em}
.live i{width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 6px rgba(16,185,129,.6);animation:recon-pulse 1.6s ease-in-out infinite}
@keyframes recon-pulse{50%{opacity:.45}}
