/* variables.css — the brand system in one place. Change a colour here and it changes everywhere.
   Values are fixed by the Mike Dempsey brand guidelines. Contrast ratios are measured, not guessed. */

/* ---------- typefaces, served from this domain ----------
   These were loaded from Google Fonts until 3 September 2026. They are self-hosted now, and
   the reason is privacy rather than speed. A Google Fonts link means every visitor's browser
   contacts Google before the page can finish drawing, which hands Google their IP address.
   That is the visitor's personal data, it happens before they have done anything, and it is
   impossible to describe honestly in a privacy notice without it sounding worse than the site
   deserves. Self-hosting removes the only third-party request on the site, so the notice can
   say plainly that nothing leaves this domain.

   IBM Plex is licensed under the SIL Open Font License 1.1, which permits self-hosting. The
   licence text travels with the files, in fonts/OFL.txt. Do not remove it.

   These are the official Latin-1 subsets from IBM's own packages, not re-encoded here: 98KB
   for five weights against 63KB for a single unsubsetted one. Checked against every character
   the page actually uses, including the pound sign and the em dash, with 220 codepoints of
   headroom for future edits.

   font-display:swap matches what Google Fonts was doing, so text is readable immediately in
   the fallback and reflows once Plex arrives. Only three weights of Sans and two of Mono are
   here, because that is all the CSS asks for. Adding a weight to the CSS without adding the
   file makes the browser fake it, which looks wrong at large sizes. */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/ibm-plex-sans-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;
  src:url(../fonts/ibm-plex-sans-500.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url(../fonts/ibm-plex-sans-600.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/ibm-plex-mono-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;
  src:url(../fonts/ibm-plex-mono-600.woff2) format('woff2')}

:root{
  --bg:#0F1419;        /* page background */
  --surface:#161C23;   /* raised panels */
  --ink:#E9EAEC;       /* body text — 15.4:1 on --bg */
  --ink-2:#9AA3AD;     /* secondary text — 7.2:1 on --bg */
  --copper:#C88B4A;    /* the single accent — 6.4:1 on --bg, passes AA */
  --rule:#2A333D;      /* hairlines */

  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;

  /* spacing scale — multiples of 4, so vertical rhythm stays consistent */
  --s1:.25rem; --s2:.5rem; --s3:.75rem; --s4:1rem; --s5:1.5rem;
  --s6:2rem; --s7:3rem; --s8:4rem; --s9:6rem; --s10:8rem;

  --wrap:1120px;
  --wrap-narrow:720px;
}
