/* ═══════════════════════════════════════════════════════════════
   TRM Solutions — the design tokens. One file, loaded by every page.

   Before this existed the tokens were declared in seven places: site.css,
   js/modals.css, and inline <style> in index, about, privacy, terms,
   disclaimer and 404. Eighteen tokens existed in index.html that site.css
   had never heard of, and six pages did not load site.css at all.

   What that split actually cost, measured rather than assumed:

   js/modals.css carried its own copy of eleven tokens in a :where(:root)
   block. :where() has zero specificity, so that copy could never override a
   page's own value — the dialog itself always rendered correctly, on every
   page. What it did do was supply a value where the token was UNSET, and
   because that file is injected only when a dialog opens, the page behind the
   dialog changed the moment one did. On /tools, --blue-border went from unset
   to 0.12 on open: the .kit-bundle left accent switched on and the mobile nav
   CTA border dropped from its 0.35 fallback to 0.12, and both stayed changed
   after the dialog closed. Declaring the tokens here for every page at first
   paint is what closes that, not the deletion of the copy.

   About and 404 used to keep a private palette. That fork is closed: both
   pages inherit :root, so the firm is one color system.

   Loaded FIRST on every page, before site.css and chrome.css, so a page
   stylesheet can still override deliberately.
   ═══════════════════════════════════════════════════════════════ */

:root {

  /* ── Brand blue ── */
  --blue: #3b8bff;
  --blue-bright: #5ea3ff;
  --blue-pale: #8ec2ff;
  --blue-mid: rgba(59,139,255,0.14);
  --blue-border: rgba(59,139,255,0.12);
  --blue-border-hover: rgba(59,139,255,0.3);
  --blue-dim: rgba(59,139,255,0.07);
  --blue-glow: rgba(59,139,255,0.35);

  /* ── Accent ── */
  --cyan: #32dce8;
  --cyan-dim: rgba(50,220,232,0.08);
  --green: #00e87b;
  --green-dim: rgba(0, 232, 123, 0.08);
  --amber: #f59e0b;
  --red: #f43f5e;

  /* ── Surface ── */
  --bg: #030816;
  --midnight: #030816;
  --navy: #0a1630;
  --navy-deep: #060e22;
  --navy-mid: #0f1f42;
  --navy-light: #152954;
  --surface: #0a1428;
  --surface-2: #0e1b38;
  --hairline: rgba(150, 175, 220, 0.12);
  --slate: #1c3366;

  /* ── Paper (light sections) ── */
  --paper: #f4f1ea;
  --paper-2: #ece7dc;
  --ink: #1a1f2b;
  --ink-soft: #4a5262;
  --paper-hairline: rgba(26, 31, 43, 0.14);

  /* ── Text ── */
  --white: #f2f6ff;
  --text-bright: #dce4f5;
  --text-primary: #b0bdd6;
  --text-secondary: #7688a8;
  --text-muted: #7684a0;
  /* #2e3d58 on --bg was ~1.83:1. #6d7d98 is the faintest step that still
     clears WCAG AA 4.5:1 for text on #030816 (measured 4.8:1). Decorative
     rules may use it; UI text that uses it now passes. */
  --text-faint: #6d7d98;

  /* ── Type ── */
  --font-display: 'Source Serif 4', Georgia, serif;
  --font-body: 'IBM Plex Sans', system-ui, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, monospace;

  /* ── Layout ── */
  --container-max: 1200px;
  --measure: 42ch;
  --measure-body: 54ch;
  /* ── Type scale ──────────────────────────────────────────────────────────
     Measured before it was written: 42 distinct authored font-size literals
     across 605 declarations. Twelve values carry 527 of them; the rest was
     drift, including three adjacent steps at 16/17/18 and two at 19/20/21.
     The steps below are the twelve, named. Display sizes above 28px stay as
     clamp() declarations on their own components, because they are responsive
     ranges rather than fixed steps and there are eight of them, one per
     component.

     Line-heights are deliberately unitless ratios (1.06, 1.08, 1.14, 1.35,
     1.55, 1.65) and are NOT part of this scale. They compute to fractional
     pixels -- 25.08px is 1.14 x 22px -- which is the arithmetic working, not
     an unrounded value. Fixing them to whole pixels would stop them scaling
     with the clamp() headings they sit on. */
  --t-10: 10px;   /* smallest legible fine print */
  --t-11: 11px;   /* fine print, footer disclaimer, mono eyebrows */
  --t-12: 12px;
  --t-13: 13px;
  --t-14: 14px;
  --t-15: 15px;
  --t-16: 16px;   /* body */
  --t-18: 18px;
  --t-20: 20px;
  --t-22: 22px;
  --t-24: 24px;
  --t-28: 28px;

  --section-pad: clamp(60px, 8vw, 104px);

  /* Quiet motion. One duration, one ease, one travel. */
  --motion-duration: 340ms;
  --motion-ease: ease-out;
  --motion-travel: 8px;
  --motion-arrow: 2px;
}


/* About and 404 palette forks were removed. Both pages use :root. */
