/* Pedesta brand tokens. THE ONLY PLACE A COLOUR OR A TYPEFACE IS DECIDED.
 *
 * No page may carry a hex literal. tests/test_brand.py asserts it, because a colour
 * typed into one page is how a palette stops being a palette: it drifts, and the drift
 * is invisible until someone screenshots two pages side by side.
 *
 * CONTRAST. The owner is dyslexic and needs high contrast, so every pair actually used
 * was measured against WCAG AA rather than eyeballed. Measured ratios are in the
 * comments beside each token. Three pairs failed and were fixed:
 *
 *   muted on the unlit floor   4.01:1  ->  4.69:1   by lifting muted to #969084
 *   muted on the lit surface   3.30:1  ->  4.97:1   by using --muted-on-light instead
 *   beam on the lit surface    1.52:1  ->  never used as text; beam is a DARK-GROUND
 *                                          token only, and there is a separate token
 *                                          for text on light surfaces
 *
 * One prediction was wrong and is worth recording: layer-failed on the ground measures
 * 5.06:1 and PASSES. It was expected to fail at about 4.4:1 and needed no change.
 */
:root{
  /* ── surfaces ─────────────────────────────────────────────────────── */
  --ground:#0E0E10;          /* the floor the whole thing sits on */
  --floor:#2A2721;           /* unlit floor: panels and cards on the ground */
  --lit:#F7F1E3;             /* lit surface: light backgrounds, and text on dark */
  --beam:#CFC5AE;            /* the beam. Headings and accents ON DARK ONLY */

  /* ── text ─────────────────────────────────────────────────────────── */
  --ink:var(--lit);          /* primary text on dark      17.12:1 on ground */
  --muted:#969084;           /* secondary text on dark     6.08:1 ground, 4.69:1 floor */
  --ink-on-light:#0E0E10;    /* primary text on light     17.12:1 on lit */
  --muted-on-light:#6E675A;  /* secondary text on light    4.97:1 on lit */
  --deep-on-light:#46433B;   /* strong text on light       8.77:1 on lit */

  /* ── functional, never decorative ─────────────────────────────────── */
  --pass:#7FA89F;            /* layer passed               7.35:1 on ground */
  --fail:#B0736A;            /* layer failed               5.06:1 on ground */

  /* ── lines and shadow ─────────────────────────────────────────────── */
  --rule:#26262A;
  --rule-on-light:#DED5C2;
  --shadow:rgba(0,0,0,.5);

  /* ── type ─────────────────────────────────────────────────────────── */
  --geo:"Century Gothic","Futura","Avenir Next",system-ui,sans-serif;  /* headings */
  --ui:"Segoe UI",-apple-system,Arial,sans-serif;                      /* body */
  --mono:"Consolas","JetBrains Mono","Courier New",monospace;          /* prices, numerals */

  /* ── derived, so a surface colour is decided once ─────────────────── */
  --paper:color-mix(in srgb,var(--floor) 38%,var(--ground));
  --line:var(--rule);
  --radius:14px;
  --maxw:1120px;
}

/* Shared primitives, so a page does not restate them and drift. */
body{background:var(--ground);color:var(--ink);font-family:var(--ui);}
h1,h2,h3,.h{font-family:var(--geo);}
.num,.price,.credits,code,kbd{font-family:var(--mono);}
a{color:inherit;}
.muted{color:var(--muted);}
.on-light{background:var(--lit);color:var(--ink-on-light);}
.on-light .muted{color:var(--muted-on-light);}
