/* ── Sharp Nine design tokens — Stage 0 (2026-09-10) ─────────────────────
   Single source for every customer-facing surface: app.html, index.html,
   explorer.html link this file; data/render.py inlines it at the top of
   SHARED_CSS so the standalone cheat sheet / accuracy report carry it too.
   Edit HERE only. Legacy names (--sn-bg, --sn9-*, …) are aliased at the
   bottom under html:root so they beat any older :root block that still
   ships inside a previously rendered cheat sheet. ─────────────────────── */
:root {
  /* surface ladder */
  --sn-canvas:#0b0e14; --sn-surface:#121620; --sn-surface-2:#1a2130; --sn-surface-3:#232a36;
  --sn-line:#232a36; --sn-line-2:#2b3446;
  /* ink (fg) — 15.6:1 / 7.6:1 / 5.3:1 on canvas; fg-4 is decorative only */
  --sn-fg:#e8ebf1; --sn-fg-2:#98a2b3; --sn-fg-3:#7c8798; --sn-fg-4:#3a4354;
  /* the only chromatic accent */
  --sn-gold:#e0b64a; --sn-gold-ink:#0b0e14; --sn-gold-dim:#2a2410;
  /* links + info */
  --sn-sky:#8fb0ec; --sn-sky-dim:#1a2a45;
  /* semantic pairs */
  --sn-good:#7fd79a; --sn-good-bg:#153a24;
  --sn-bad:#f0938c;  --sn-bad-bg:#3d1a1a;
  --sn-warn:#e6b95a; --sn-warn-bg:#3a2c0f;
  /* series position + streaks keep their own hues */
  --sn-opener:#5dcaea; --sn-middle:#e6b95a; --sn-finale:#c78bff;
  --sn-hot:#ff6b35; --sn-cold:#5dcaea;
  /* type */
  --sn-font-display:"Archivo","Arial Narrow",system-ui,sans-serif;
  --sn-font-ui:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --sn-font-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --sn-fs-label:11px; --sn-fs-row:13px; --sn-fs-body:15px; --sn-fs-title:20px;
  /* spacing + geometry */
  --sn-sp-1:4px; --sn-sp-2:8px; --sn-sp-3:12px; --sn-sp-4:16px; --sn-sp-6:24px;
  --sn-r-sm:6px; --sn-r-md:8px; --sn-r-lg:10px; --sn-r-pill:999px;
  --sn-tap:44px;
}
/* Legacy aliases — html:root outranks the :root blocks older cheat sheets
   still carry, so the app never shows two palettes at once. */
html:root {
  --sn-bg:var(--sn-canvas); --sn-card:var(--sn-surface); --sn-card-dim:var(--sn-surface);
  --sn-border:var(--sn-line); --sn-border-dim:var(--sn-line);
  --sn-accent:var(--sn-sky); --sn-text:var(--sn-fg); --sn-text-dim:var(--sn-fg);
  --sn-muted:var(--sn-fg-2); --sn-muted-dim:var(--sn-fg-3); --sn-muted-dimmer:var(--sn-fg-4);
  --sn-chip-bg:var(--sn-surface-2);
  --sn-dim:var(--sn-fg-3); --sn-gold-hi:var(--sn-gold); --sn-green:var(--sn-good); --sn-red:var(--sn-bad);
  --sn-font:var(--sn-font-ui);
  --sn9-bg:var(--sn-canvas); --sn9-bg2:var(--sn-surface); --sn9-navy:var(--sn-canvas); --sn9-navy2:var(--sn-surface-2);
  --sn9-gold:var(--sn-gold); --sn9-gold2:var(--sn-gold); --sn9-white:var(--sn-fg); --sn9-muted:var(--sn-fg-2);
  --sn9-dim:var(--sn-fg-3); --sn9-border:var(--sn-line); --sn9-cyan:var(--sn-sky); --sn9-font:var(--sn-font-ui);
}
