/* ===========================================================================
   FOLD UNIVERSITY — @font-face, AND WHY IT IS NOT IN src/css/custom.css
   ===========================================================================

   THIS FILE IS SERVED VERBATIM. It lives under static/, which Docusaurus copies
   to the output byte for byte, so webpack never sees it and the `url()` values
   below reach the browser exactly as written.

   THAT IS THE ENTIRE POINT, AND IT FIXES A MEASURED BUG.

   These four declarations used to live in `src/css/custom.css` §1. That file IS
   processed by webpack, and Docusaurus sets `resolve.roots` to include static/,
   so css-loader resolved `url('/fonts/plex-sans-var-latin.woff2')` into a module
   and re-emitted it under a content hash:

       /fonts/plex-sans-var-latin-7af7c608e21cb6a1d297a2c5b4ff0606.woff2

   Meanwhile `headTags` in docusaurus.config.js preloaded the UNHASHED path,
   because that is the only name a human can write in a config file. The two never
   met. Measured on the built site: eight .woff2 files in the output instead of
   four, and the two `rel=preload` links fetching 100 KB (Newsreader 59.7 KB +
   Plex Sans 40.2 KB) that no stylesheet would ever ask for — while the faces that
   actually render arrived unpreloaded, on the second round trip, discovered only
   after the CSS parsed. A preload that misses is worse than no preload: it is the
   cost with none of the benefit, and Chrome logs it as an unused preload.

   Serving the faces from a static file makes one name true everywhere: the
   preload, the @font-face and the network request are the same URL, one copy is
   shipped, and it arrives before the stylesheet that needs it.

   WHAT STAYED IN custom.css: the metric-matched FALLBACK faces. They reference
   `local()` only, resolve no files, and belong beside the tokens that use them.

   The bytes themselves are static files in git — no font CDN (a third-party
   runtime dependency that leaks every reader's IP and page URL, and this audience
   is US healthcare staff) and no @fontsource package (typography in the
   install-time dependency graph). Provenance and sha256: static/fonts/FONTS.md.
   =========================================================================== */

@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  /* Variable. The weight axis is clamped to 500–600 and the optical-size axis to
     20–42px: the only weights and only sizes the masthead register renders. That
     clamp is why this file is 58 KB rather than 129 KB. */
  font-weight: 500 600;
  font-display: swap;
  src: url('/fonts/newsreader-var-latin.woff2') format('woff2-variations');
  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 Sans';
  font-style: normal;
  /* 100-700 is the UNMODIFIED upstream axis range, and it stays that way on purpose.
     IBM Plex is licensed OFL 1.1 *with Reserved Font Name "Plex"*, whose clause 3
     forbids a Modified Version from carrying the reserved name. Clamping the weight axis
     produces a modified font, so these bytes are shipped exactly as IBM/Google
     distribute them and the family keeps its name legitimately. Newsreader declares no
     reserved name, which is why the masthead file IS clamped. The 10 KB the clamp would
     have saved is not worth a licence question. See static/fonts/FONTS.md. */
  font-weight: 100 700;
  font-display: swap;
  src: url('/fonts/plex-sans-var-latin.woff2') format('woff2-variations');
  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 Sans';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/plex-sans-var-italic-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: swap;
  src: url('/fonts/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;
}
