/* Self-hosted font faces.
 *
 * Generated companion to tools/build_font_subsets.py — the .woff2 files and
 * site/assets/fonts/MANIFEST.json come from there. This file is hand-maintained
 * because it is the contract the pages consume; if you add a face to PLAN in
 * that tool, add its @font-face here.
 *
 * These replace three tags that used to sit in every page head: two preconnects
 * and a stylesheet link to fonts.googleapis.com. A reader of a regulatory
 * intelligence site should not have their IP address sent to a third party in
 * order to read a paragraph, and the first paint should not wait on a network
 * we do not control.
 *
 * url() paths are relative to THIS file, so they resolve identically for a page
 * at / and a page at /brief/2026-08-31/ without either needing to know its depth.
 *
 * font-display: swap is deliberate. The alternative, `optional`, avoids the
 * reflow but silently serves the fallback face to anyone on a slow first load —
 * on a page whose tables are aligned to a monospace face, that is a worse
 * outcome than a brief swap.
 */

/* Newsreader — display/serif register. Variable weight 400-600; optical size
   pinned at 16 during subsetting, so there is no opsz axis to drive here. */
@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/newsreader.woff2") format("woff2-variations"),
       url("fonts/newsreader.woff2") format("woff2");
}

@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/newsreader-italic.woff2") format("woff2-variations"),
       url("fonts/newsreader-italic.woff2") format("woff2");
}

/* Inter — sans register. Variable weight 400-600; optical size pinned at 18.
   A <th> or <strong> asking for 700 clamps to 600 rather than synthesising a
   heavier face. */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/inter.woff2") format("woff2-variations"),
       url("fonts/inter.woff2") format("woff2");
}

/* IBM Plex Mono — numeric/label register. No variable axis upstream, so 400 and
   500 are separate files. */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/ibm-plex-mono.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/ibm-plex-mono-500.woff2") format("woff2");
}
