/* Self-hosted brand fonts. Replaces the render-blocking fonts.googleapis.com
   stylesheet + gstatic preconnects with same-origin woff2 served from /fonts.
   Family NAMES are kept identical ("IBM Plex Sans" / "IBM Plex Mono") so every
   existing reference (tokens.css, cutaway.css, report-formal.css, logo.js)
   resolves unchanged. Latin subset only; weights are the ones actually used.
   IBM Plex Sans ships as a single variable woff2 (100-700 axis); Plex Mono is
   two static weights.

   font-display: optional (2026-07-12, was swap): with swap, the webfont sits
   on the text-LCP critical path — the homepage headline scored ~7.5s mobile
   LCP waiting on the swap render. optional makes first paint final: the
   preloaded 39KB woff2 wins the ~100ms block window on any normal connection;
   a genuinely slow first visit renders the metrics-matched Arial fallback
   below (and gets the brand font from cache on the next navigation). */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 100 700;
  font-display: optional;
  src: url("/fonts/ibm-plex-sans-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url("/fonts/ibm-plex-mono-latin-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url("/fonts/ibm-plex-mono-latin-500.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Metrics-matched local fallback for the optional strategy above — when the
   webfont misses the block window, Arial renders at Plex-like metrics so the
   layout is the same one the webfont would produce (ratios measured in-browser
   against the real subset, not OS/2 averages). */
@font-face {
  font-family: "IBM Plex Sans Fallback";
  src: local("Arial");
  size-adjust: 101.3%;
  ascent-override: 101.2%;
  descent-override: 27.2%;
  line-gap-override: 0%;
}
