/* Generated by scripts/build_font_subset.py — edit that file, not this one.

   Self-hosted so first paint no longer waits on fonts.googleapis.com. Both
   families are variable fonts: one file covers every weight the site uses.
   Inter's weight axis is narrowed to 400-800 (see the build script for the
   size numbers); weights outside that range are clamped by the browser, so
   bump the axis in the script before using 300 or 900. */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/inter-latin-var.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: 'Libre Baskerville';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/assets/fonts/libre-baskerville-latin-var.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 fallbacks.

   Both web fonts above are declared font-display: swap, which means text is
   first painted in a fallback and then reflowed when the real font lands. On a
   fast link that is invisible; measured on /contact/ over a ~20 KB/s link it
   produced CLS 0.0507, all of it from the swap. Blocking the font files
   entirely confirmed it (CLS -> 0.0000).

   font-display: optional also gives CLS 0 but is not usable here. Checked with
   CDP getPlatformFontsForNode, the H1 survives but body copy silently renders
   in Avenir Next instead of Inter - trading the typeface for a metric is not
   a trade worth making on a marketing site.

   So instead: make the fallback occupy the same box as the web font. These
   @font-face rules name a font that is already on the machine (no download)
   and then use size-adjust plus the three *-override descriptors to force its
   metrics to match. The swap still happens, but nothing moves because the
   geometry is identical - CLS goes to zero by construction rather than by luck
   of the network.

   Arial and Times New Roman are the anchors because both ship with macOS and
   Windows, so unlike "Avenir Next" / "Iowan Old Style" they resolve to the
   same face on every desktop platform. If a machine has neither, the
   @font-face simply does not resolve and the browser falls through to the next
   family in the stack - which is exactly today's behaviour, so this is
   fail-safe. Generated from FALLBACK_METRICS in the build script. */

@font-face {
  font-family: 'Inter Fallback';
  font-style: normal;
  font-weight: 400 800;
  src: local('Arial');
  size-adjust: 107.48%;
  ascent-override: 90.13%;
  descent-override: 22.44%;
  line-gap-override: 0%;
  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: 'Libre Baskerville Fallback';
  font-style: normal;
  font-weight: 400 700;
  src: local('Times New Roman');
  size-adjust: 128.1%;
  ascent-override: 75.72%;
  descent-override: 21.08%;
  line-gap-override: 0%;
  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;
}
