/* FONTS: self-hosted, SIL Open Font License 1.1, no font service and no CDN (Adobe Fonts removed 7 October 2026).
   The files live in /fonts/<family>/, each family's licence file beside them; they ship in dist/ (_tools/build-dist.cjs).
   Newsreader and Geist are fixed instances of the official variable fonts (fontTools instancer), subset to Latin; IBM
   Plex Mono is IBM's own published split files, unmodified ("Plex" is a Reserved Font Name). Sources, commits and the
   tuning measurements: _build/font-study/tuned/TUNING.md.
   Each face is declared over a weight RANGE, so the stylesheets keep asking for 400 / 500 / 600 as they always have,
   the browser never synthesises bold or slant, and this file is the only place that knows the real weights:
     Newsreader roman   wght 555, opsz 72   serves CSS weights 500-700   (display roman)
     Newsreader italic  wght 500, opsz 72   serves CSS weights 300-499   (display italic)
     Geist              wght 440            serves CSS weights 300-499   (text)
     Geist              wght 540            serves CSS weights 500-599   (links)
     Geist              wght 640            serves CSS weights 600-700   (the wordmark only)
     IBM Plex Mono Text (450), as published, serves CSS weight 400       (labels; IBM's Regular renders about 13 percent
                                                                          lighter than the copy the Adobe kit served) */
@font-face { font-family: "Newsreader Display"; src: url("/fonts/newsreader/Newsreader72-555.latin.woff2") format("woff2"); font-weight: 500 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Newsreader Display"; src: url("/fonts/newsreader/Newsreader72-Italic-500.latin.woff2") format("woff2"); font-weight: 300 499; font-style: italic; font-display: swap; }
@font-face { font-family: "Geist"; src: url("/fonts/geist/Geist-440.latin.woff2") format("woff2"); font-weight: 300 499; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("/fonts/geist/Geist-540.latin.woff2") format("woff2"); font-weight: 500 599; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("/fonts/geist/Geist-640.latin.woff2") format("woff2"); font-weight: 600 700; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/fonts/ibm-plex-mono/IBMPlexMono-Text-Latin1.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; src: url("/fonts/ibm-plex-mono/IBMPlexMono-Text-Pi.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap;
  unicode-range: U+03C0, U+2000-200D, U+2010-2012, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2190-2199, U+2215, U+221E, U+2248, U+2260, U+2264-2265, U+2713, U+FEFF, U+FFFD; }
