/* ==========================================================================
   CapInteract — self-hosted webfonts

   Two variable fonts, one file per family, weight axis only. No italic files:
   the site uses no italic. woff2 only — every browser in the §10 floor
   supports it, so woff, ttf and eot would be dead weight.

   Both are SIL Open Font License 1.1. Provenance is recorded in CLAUDE.md §10.

   Verified with fontTools 4.63.0 against the downloaded files:
     inter-var.woff2    wght 100..900, no ital/slnt axis, 518 glyphs, 2048 upem
     manrope-var.woff2  wght 200..800, no ital/slnt axis, 280 glyphs, 2000 upem

   NOTE the two ranges differ. Manrope's axis really is 200..800 — it has no
   Thin or Black master — so declaring 100 900 on it would claim a range the
   file does not carry. Both cover every weight tokens.css uses: Inter 400 and
   600, Manrope 600 and 700.

   Loaded BEFORE tokens.css so the faces are known by the time any rule
   references --font-body or --font-display.
   ========================================================================== */

@font-face {
  font-family: "Inter";
  src: url("/fonts/inter-var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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+2074, U+20AC, U+2122, U+2191,
    U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Manrope";
  src: url("/fonts/manrope-var.woff2") format("woff2");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  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+2074, U+20AC, U+2122, U+2191,
    U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================================
   On swap shift

   No size-adjust is declared, deliberately. Two reasons.

   First, every one of the 19 font-size rules in site.css pairs with an
   explicit line-height from a --lh-* token, so line box height is fixed by
   CSS and does not follow the font's vertical metrics. A face swapping in
   cannot change any block's height, which is where layout shift comes from.
   Glyphs reflow horizontally inside a fixed box instead.

   Second, size-adjust corrects a ratio against a specific fallback, and the
   fallback here is system-ui — SF Pro on macOS, Segoe UI on Windows, Roboto
   on Android. Their metrics differ, so one value cannot be right on all
   three, and picking one would trade a small shift on one platform for a
   permanently wrong cap height on the others.

   For reference, measured from the files:
     Inter    asc+|desc| 1.2100 em   xHeight 0.5459   capHeight 0.7275
     Manrope  asc+|desc| 1.3660 em   xHeight 0.5400   capHeight 0.7200

   Manrope is the taller face per em by a wide margin, so it is the one to
   watch if a shift does show up. Both files are preloaded and small enough
   to land inside the ~100ms block period on any normal connection, in which
   case no swap happens at all.
   ========================================================================== */
