/* tokens.css — the shared design tokens for Alexan Labs.

   Linked with a plain <link> tag from line 20 of all five pages, alongside
   fonts.css; there is no bundler and no build step, so this file is served
   exactly as committed.

   WHAT IS IN HERE, AND WHY ONLY THIS

   Fourteen custom properties, and they got here two different ways. Read the
   distinction before changing anything, because it is the whole safety model
   of this file.

   Twelve of them — every property except --t1 and --t2 — were declared
   identically, byte for byte, in the :root block of all five pages before
   this file existed. Nothing was normalised to get them here and no value was
   chosen: each one is the value all five pages already agreed on.

   --t1 and --t2 are different. They did not agree, a value WAS chosen, and
   adding them here repainted four of the five pages deliberately. See THE TWO
   CONVERGED VALUES below.

   A sixth surface — /admin/ — can inherit all fourteen and be provably the
   same colour and typeface as the site, which is the whole reason this file
   exists. Body text colour is now inheritable; before the convergence it was
   not, because no such colour existed.

   Every page still carries its own :root block at :23-31 for the tokens that
   are genuinely page-local. That block is declared in the inline <style> at
   :21, after this file's <link> at :20, so a page always wins against this
   file on any property it redeclares. That is deliberate: a page overrides
   locally, and adding a token here can never silently repaint a page.

   THE TWO CONVERGED VALUES — --t1 .80 AND --t2 .55

   Before this, --t1 carried four values across the five pages (.75 .72 .72
   .60 .55) and --t2 carried three (.45 .40 .40 .40 .28). Nobody chose that;
   it drifted from five :root blocks edited separately and was invisible until
   they were compared to each other. Ruled under DEC-1 and converged here. No
   page keeps a local override. If a page needs one, that is a new decision,
   not a carry-over.

   WHY THESE TWO NUMBERS, AND NOT THE MIDDLE OF THE RANGE

   The primary reason is not consistency. It is that the old --t2 values
   failed WCAG AA for contrast on all five pages — 4.02:1, 3.39:1, 3.39:1,
   3.39:1 and 2.21:1 against a 4.5:1 threshold, with no large-text exemption
   available because every consumer of these tokens is 9px to 13px type. The
   convergence went to the brighter end of the range rather than the middle
   because small dense type on #07090c wants more contrast, not less.

   Measured, composited over --bg #07090c (worst case is --bg3, in brackets):

     --t1 .80  10.96:1 [10.29:1]  AA pass, AAA pass
     --t2 .55   5.53:1  [5.44:1]  AA pass, AAA FAIL

   So --t1 now clears AAA on every page; compliance.html and services.html did
   not before. --t2 now clears AA on every page, where no page cleared it
   before, and still falls short of AAA. That gap is a known, recorded limit.
   The thing that would close it is larger type, not more alpha — pushing --t2
   brighter to chase AAA collapses it into --t1 and destroys the tier.

   KNOWN CONSEQUENCE — DO NOT FIX IT BY WALKING --t1 BACK DOWN

   Raising --t1 to .80 narrows the gap between body copy and the --t0 <strong>
   emphasis inside it, from 2.67:1 at compliance.html's old .60 to 1.57:1 —
   weaker than on any page before. This was ruled acceptable: the strong still
   reads brighter than the body, so it loses margin and not rank, and the
   alternative was keeping body copy that fails AAA so that bold text could
   look bolder. Emphasis is a nice-to-have; legibility is not.

   If the legal pages read flat, the fix is the emphasis treatment — weight,
   spacing, or a distinct colour for statute names — NOT lowering --t1. That
   is the easy lever and it is the wrong one. docs/DECISIONS.md records the
   emphasis treatment as scoped work, including the part that makes it a real
   decision: compliance.html:196 asks for font-weight 700 from DM Mono, which
   fonts.css self-hosts at 300/400/500 only, so faux-bold is currently doing
   the emphasis work there.

   WHAT IS DELIBERATELY NOT IN HERE

   Page-local by nature and staying that way: --t3, --bg4, --b3, --spring,
   --red, --violet, --amber, --teal, --fill, --fill-b, --fill-t, --law25 and
   --bill96, plus the two component-scoped properties --accent
   (services.html:71-74) and --rc (compliance.html:71-72).

   There is no spacing, type, radius or duration scale here because the site
   has none — those values are literals throughout. docs/DECISIONS.md records
   that as scoped work before an admin panel ships. */

:root{
  /* surfaces */
  --bg:#07090c;--bg2:#0c0f14;--bg3:#111520;
  /* borders */
  --b0:rgba(255,255,255,0.055);--b1:rgba(255,255,255,0.11);--b2:rgba(255,255,255,0.26);
  /* primary text */
  --t0:#eceef2;
  /* body and secondary text — converged under DEC-1, see the header */
  --t1:rgba(236,238,242,0.80);--t2:rgba(236,238,242,0.55);
  /* accent */
  --ac:#c8d4ee;--ac2:rgba(200,212,238,0.12);
  /* type — faces are declared in fonts.css, which this file does not touch */
  --mono:'DM Mono',monospace;--disp:'Rajdhani',sans-serif;
  /* motion */
  --ease:cubic-bezier(.4,0,.2,1);
}
