/* Starfire OS shared design tokens + base components.
   SINGLE SOURCE OF TRUTH (2026-07-20 rebuild, per ops/research/OS-BENCH-2026-07-20.md).
   Pages must NOT redefine --sf-* tokens locally; scripts/check-os-tokens.py enforces.
   NASA-light theme per Adrien directive 2026-07-12. */
:root{
  /* Starfire OS dark command-center theme, per STATE/STARFIRE-OS-DESIGN-SYSTEM.md (locked 2026-06-30). */
  --sf-bg:#F7F8FA;--sf-bg-2:#EEF2F6;
  --sf-panel:rgba(255,255,255,0.88);--sf-panel-solid:#F1F4F8;
  --sf-line:rgba(11,61,145,0.14);--sf-line-faint:rgba(11,61,145,0.07);
  --sf-cyan:#0B3D91;--sf-cyan-dim:rgba(11,61,145,0.55);
  --sf-glow-cyan:0 1px 4px rgba(15,23,42,0.14);
  --sf-orange:#FC3D21;--sf-orange-dim:rgba(252,61,33,0.60);
  --sf-glow-orange:0 1px 4px rgba(15,23,42,0.14);
  --sf-green:#0A7D4F;--sf-red:#C8102E;--sf-amber:#B45309;--sf-purple:#6D28D9;
  --sf-glow-green:0 1px 4px rgba(15,23,42,0.12);
  --sf-text:#1F2937;--sf-text-bright:#0B1220;
  --sf-text-dim:#55677A;--sf-text-faint:#6E7E8F;
  --sf-mono:"SFMono-Regular",ui-monospace,"Consolas",monospace;
  --sf-sans:"DM Sans","Figtree","Outfit","Segoe UI",system-ui,sans-serif;
  --sf-r-sm:6px;--sf-r-md:10px;--sf-r-lg:14px;--sf-r-xl:20px;--sf-strip:64px;
  /* legacy short aliases used throughout this file's existing rules */
  --bg:var(--sf-bg);--bg2:var(--sf-bg-2);
  --panel:var(--sf-panel);--panel-s:var(--sf-panel-solid);
  --line:var(--sf-line);--line2:var(--sf-line-faint);
  --cyan:var(--sf-cyan);--cyan-d:var(--sf-cyan-dim);
  --orange:var(--sf-orange);--orange-d:var(--sf-orange-dim);
  --green:var(--sf-green);--red:var(--sf-red);--amber:var(--sf-amber);
  --ink:var(--sf-text-bright);--text:var(--sf-text);--dim:var(--sf-text-dim);--faint:var(--sf-text-faint);
  --glow-c:var(--sf-glow-cyan);--glow-o:var(--sf-glow-orange);--glow-g:var(--sf-glow-green);
  --mono:var(--sf-mono);--sans:var(--sf-sans);
  --strip-h:var(--sf-strip);
  --nav-w:220px;
}

/* base */
*{box-sizing:border-box;margin:0;padding:0;}
html,body{min-height:100%;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.55;}

/* numerics: always tabular (OS-BENCH decision 7) */
.num,[data-num],.hv,.kpi-v,.fc-pct{font-variant-numeric:tabular-nums;}

/* freshness stamp (OS-BENCH decision 5): clock time, amber when stale */
.freshness{font-family:var(--mono);font-size:10px;color:var(--faint);letter-spacing:0.04em;}
.freshness .stale-badge{color:var(--amber);border:1px solid rgba(180,83,9,0.35);border-radius:4px;padding:0 4px;margin-left:6px;font-weight:600;}

/* status dot: pulse only while active (OS-BENCH decision 8) */
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--sf-text-faint);}
.dot.ok{background:var(--green);}
.dot.warn{background:var(--amber);}
.dot.crit{background:var(--red);}
.dot.live{background:var(--green);position:relative;}
.dot.live::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--green);opacity:0.5;animation:sf-pulse 1.6s ease-out infinite;}
@keyframes sf-pulse{0%{transform:scale(0.6);opacity:0.6;}100%{transform:scale(1.3);opacity:0;}}
@media (prefers-reduced-motion:reduce){.dot.live::after{animation:none;}}

/* error state w/ retry (OS-BENCH decision 4) */
.fetch-error{border:1px solid rgba(200,16,46,0.3);background:rgba(200,16,46,0.05);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--dim);display:flex;align-items:center;gap:10px;}
.fetch-error button{font-family:var(--mono);font-size:11px;padding:3px 10px;border:1px solid var(--line);background:var(--panel-s);color:var(--cyan);border-radius:6px;cursor:pointer;}
.fetch-error button:hover{border-color:var(--cyan-d);}
