@charset "UTF-8";
/* ============================================================================
   Self-hosted webfonts (offline, no third-party requests)
   ----------------------------------------------------------------------------
   Inter and Source Serif 4 are served from assets/fonts/ instead of Google
   Fonts, so the page works with no network access and never contacts a
   third-party host.

   Both families are VARIABLE fonts: a single file covers the whole weight
   axis, so there are only two files rather than one per weight.

     assets/fonts/inter.woff2           Inter            wght 100-900
     assets/fonts/source-serif-4.woff2  Source Serif 4   wght 200-900, opsz 8-60

   Both files are the LATIN SUBSET only - see unicode-range below. Anything
   outside that range (CJK text, for instance) falls back to the next font in
   the stack declared by --font-sans / --font-serif in style.css.

   Source Serif 4 also carries an optical-size (opsz) axis. Browsers apply it
   automatically (font-optical-sizing: auto is the default), so headings set in
   it get the display cut and small text the text cut without any extra CSS.

   TO UPDATE OR REGENERATE
     1. Request the CSS from Google Fonts with a modern browser User-Agent, e.g.
          curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
                    (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
            "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Source+Serif+4:opsz,wght@8..60,200..900&display=swap"
        (Note: without a browser User-Agent you get legacy TTF URLs, not woff2.
         And `wght@100..900` must be a range, not a list, or Google returns
         one @font-face block per weight all pointing at the same file.)
     2. Copy the url(...) out of the latin-subset block for each family and
        save it under assets/fonts/ with the names listed above.
     3. If the response shows a different font-weight range or unicode-range,
        update the two @font-face blocks below to match.
     4. Only the `latin` subset is vendored. If you start serving non-Latin
        text, add the relevant subset(s) and extend or drop unicode-range.

     Editing note: do NOT paste the literal CSS comment delimiters (the
     star-slash pair) into this file's comments - as happened once here when
     quoting the latin label from Google's CSS. An early comment close turns
     the rest of the notes into stylesheet code, and the parser then swallows
     the next @font-face rule, which silently drops Inter and makes the page
     fall back to a system font. After editing, re-check that the page still
     renders in Inter.

   LICENSE
     Both fonts are licensed under the SIL Open Font License 1.1, which permits
     self-hosting and redistribution. The license texts ship alongside the
     fonts as OFL-Inter.txt and OFL-Source-Serif-4.txt - keep them in this
     folder, they must travel with the font files.

   This stylesheet is linked from index.html BEFORE style.css, so the faces are
   registered before the font-family variables are used.
   ============================================================================ */

/* Inter - variable weight axis 100-900 */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/inter.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;
}

/* Source Serif 4 - variable weight axis 200-900, optical size 8-60 */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('fonts/source-serif-4.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;
}
