/* ─────────────────────────────────────────────────────────────
   UraniumX theme tokens.

   Before 2026-08-27 the site carried 971 hardcoded colour literals across
   ten files, almost all inline styles assuming a black ground, in two
   competing ink systems (pure white and a warm off-white). Changing theme
   meant editing every one. These tokens make it one edit.

   Roles, not colours. --ink means "primary text on the current ground",
   which is near-white on a dark section and near-black on a light one.
   Never reintroduce a literal; add a role.

   The page ground is soft warm off-white; the hero, photo cards, nav and
   footer are dark islands marked .on-dark. Flipping the whole site between
   light and dark is now the :root block below and nothing else.
   ───────────────────────────────────────────────────────────── */

:root{
  /* page ground - black. Reverted 28 Aug 2026 from the soft warm off-white
     of 576838b, at Esen's direction. Switching the whole site between light
     and dark is this block and nothing else. The off-white values are kept
     in that commit if the flip is ever wanted back. */
  --surface:#000;
  --surface-2:rgba(255,255,255,.05);
  --surface-3:rgba(255,255,255,.08);

  /* Text, by emphasis. The ground is the pre-flip black, but the ink scale is
     the one solved numerically against a dark ground during the 27 Aug audit,
     not the pre-flip scale. Verbatim restoration would have reinstated
     --ink-4 at .32, which measures 2.67:1 on black - one of the 90 failures
     that audit was run to remove. On #000 these sit a little above the
     figures quoted for the #061725 islands they were solved for. */
  --ink:#F4F2EA;
  --ink-2:rgba(244,242,234,.76);
  --ink-3:rgba(244,242,234,.58);
  --ink-4:rgba(244,242,234,.52);

  /* rules and borders */
  --line:rgba(244,242,234,.1);
  --line-2:rgba(244,242,234,.2);

  /* brand hues - identical in both grounds */
  --cyan:#00D4FF;
  --blue:#2ea3f2;
  --gold:#FFB800;
  --accent:var(--cyan);
  --accent-ink:var(--cyan);
  /* --warn postdates the pre-flip block: 46 text declarations were moved off
     raw gold when the page went light. On a dark ground it is gold again,
     matching what .on-dark already does. Without it those 46 resolve to
     nothing. */
  --warn:var(--gold);

  /* dark island ground, used by .on-dark */
  --dark:#061725;
  --dark-2:#03111C;
}

/* A dark section on a light page. Inert while :root is still dark; becomes
   load-bearing at stage 2. Marks a dark island so everything inside stays
   legible when the page around it turns soft white. */
.on-dark{
  --surface:var(--dark);
  --surface-2:rgba(255,255,255,.05);
  --surface-3:rgba(255,255,255,.08);
  --ink:#F4F2EA;
  --ink-2:rgba(244,242,234,.76);
  --ink-3:rgba(244,242,234,.58);
  --ink-4:rgba(244,242,234,.52);
  --line:rgba(244,242,234,.1);
  --line-2:rgba(244,242,234,.2);
  --accent:var(--cyan);
  --accent-ink:var(--cyan);
  --warn:var(--gold);
  color:var(--ink);

  /* Re-point the legacy aliases too. A var() declared in :root is resolved
     against :root and the computed result inherits, so without these the
     old names keep the light-theme colour inside a dark island. */
  --white:var(--ink);
  --t7:var(--ink-2);
  --t5:var(--ink-3);
  --t3:var(--ink-4);
  --bdr:var(--line);
  --bg:var(--surface);
  --bg2:var(--surface-2);
}

/* Legacy aliases. Older files still reference these names; they now resolve
   to roles rather than literals, so anything this sweep misses degrades to
   the right role instead of a wrong colour. */
:root{
  --white:var(--ink);
  --t7:var(--ink-2);
  --t5:var(--ink-3);
  --t3:var(--ink-4);
  --bdr:var(--line);
  --bg:var(--surface);
  --bg2:var(--surface-2);
}

html,body{background:var(--surface);color:var(--ink)}
