/* src/tokens.css
 *
 * THE CANON. This file IS the original now; flow, gex, and lab hold
 * generated copies under tools/check.mjs, and "change one, change both"
 * is retired in favour of "edit here, then sync". The @font-face rules
 * live in the generated fonts-rails.css / fonts-flat.css (face URLs are
 * target-specific -- see fonts/README.md); the app-own gamma pair that
 * rode along in the old "verbatim twin" stays home in gex.
 */
:root {
  /* NATIVE CONTROLS FOLLOW THIS, and nothing else makes them stop being white.
   * Measured 2026-08-25 in a browser: with no declaration a <select> paints
   * rgb(255,255,255) on black text; with `dark` it paints rgb(59,59,59) on
   * white. It also fixes scrollbars and any future form control. */
  color-scheme: dark;

  --ground: #0e1116;
  --muted: #aab4c2;
  --text: #e6edf5;
  --rule: #1e2530;

  /* The self-hosted faces go at the FRONT; the system stacks stay behind them
   * so a font that fails to load degrades instead of falling off a cliff. */
  --font-ui: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
             Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-num: "IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo,
              Consolas, "Liberation Mono", monospace;

  --step-0: 0.8125rem;
  --step-1: 1rem;
  --step-2: 1.5rem;
  --gap: 0.75rem;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  height: 100%;
  background: var(--ground);
  color: var(--text);
  font-family: var(--font-ui);
  font-size: var(--step-0);
}

/* Digits that sit in columns must not jitter as they change. */
.num { font-family: var(--font-num); font-variant-numeric: tabular-nums; }
