    /* ── THEME: DARK WORKSPACE, LIGHT SIDEBAR ──
       The content area runs the dark scale; the sidebar runs a light one. That inversion is the
       point of the design — a white rail against a charcoal workspace — so the two ramps are kept
       genuinely separate rather than one being derived from the other.

       The dark values are the ones .dark-shell already used for the Facility pane and
       rankings.css hardcoded for the leaderboards. Reusing them rather than inventing a second
       charcoal means those pre-existing dark islands now sit flush with the page instead of
       floating a shade off it. */
    :root{
      --bg:#0E1014;--s1:#181B21;--s2:#20242C;--s3:#252A33;
      --b1:#2A2E36;--b2:#343A45;--b3:#454C59;
      --lime:#5FA512;--lime-d:rgba(132,204,22,.12);--lime-g:rgba(132,204,22,.22);--on-accent:#000;
      --lime-bright:#A3E635;
      --text:#F5F6F8;--t2:#C4C8CF;--t3:#9AA0AB;--t4:#6B7280;
      --green:#16A34A;--green-b:rgba(22,163,74,.16);--green-t:rgba(22,163,74,.34);
      --blue:#3B82F6;--blue-b:rgba(59,130,246,.16);--blue-t:rgba(59,130,246,.34);
      --amber:#D97706;--amber-b:rgba(217,119,6,.16);--amber-t:rgba(217,119,6,.34);
      --red:#DC2626;--red-b:rgba(220,38,38,.16);
      /* Light app-shell sidebar. Its own scale, because the dark --text/--t2/--b1 ramp is
         unreadable on a light surface. .sidebar also re-declares the content tokens locally
         (layout.css) so the handful of sidebar rules that reach for --text/--b2/--s1 — the
         facility switcher menu — resolve light too. */
      --sidebar:#FFFFFF;--rail:#0B0B0D;
      --sidebar-t:#14161A;      /* primary label on the sidebar */
      --sidebar-t2:#6B7078;     /* secondary/inactive label */
      --sidebar-b:#E7E8EC;
      --sidebar-hover:rgba(10,12,20,.05);
      --sidebar-active:rgba(10,12,20,.075);
      --sh:0 1px 2px rgba(0,0,0,.24),0 4px 18px rgba(0,0,0,.28);
      /* ── TYPE ──
         One family everywhere. The app used to run three: Barlow Condensed 900 uppercase for every
         heading (--fd), Barlow for body copy (--fs), Inter for UI chrome (--fb). That gave headings
         a shouted, compressed voice — ATHLETES, SESSIONS, DATA & BACKUP — that fought the calm
         card-and-hairline layout underneath and made scanning harder, not easier.
         All three tokens now resolve to Inter and hierarchy comes from weight, size and colour
         instead of from case and compression. The token NAMES are kept because ~200 rules
         reference them, and collapsing them to one name would be a rename with no behaviour
         change; treat --fd/--fs/--fb as display/body/UI ROLES that currently share a family. */
      --fd:'Inter',sans-serif;--fs:'Inter',sans-serif;--fb:'Inter',sans-serif;
      --r:10px;--rl:16px;--ease:.2s cubic-bezier(.4,0,.2,1);
    }
