/* ==========================================================================
   THROUGHLINE — self-hosted faces (PRD 6.2)
   Latin subset, generated with fontTools from the vendor originals. Geist and Geist Mono
   are variable (wght 100-900), so one file each covers every weight the site
   uses. Five files, 61.5 KB, against a 100 KB budget.

   Every real face is paired with a metric-matched fallback. size-adjust
   matches the AVERAGE LOWERCASE ADVANCE rather than x-height: advance is what
   decides where lines break, so matching it is what stops reflow when the
   real face swaps in. The ascent/descent/line-gap overrides are then expressed
   against that adjusted em. All values computed from the actual font tables,
   not estimated.

   font-display: swap on the display and mono roles, optional on body — body
   is the long-measure text where a swap would move the most, and optional
   makes that shift structurally impossible.
   ========================================================================== */

/* ---- Cabinet Grotesk — display -------------------------------------------- */
@font-face {
  font-family: 'Cabinet Grotesk';
  src: url('../fonts/cabinet-grotesk-500.301bd0e9.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Cabinet Grotesk';
  src: url('../fonts/cabinet-grotesk-700.798321cd.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Cabinet Grotesk';
  src: url('../fonts/cabinet-grotesk-800.f0816bf4.woff2') format('woff2');
  font-weight: 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Cabinet Grotesk Fallback';
  src: local('Arial');
  size-adjust: 101.82%;
  ascent-override: 85.44%;
  descent-override: 27.50%;
  line-gap-override: 8.84%;
}

/* ---- Geist — body --------------------------------------------------------- */
@font-face {
  font-family: 'Geist';
  src: url('../fonts/geist-400.bbdb5db8.woff2') format('woff2');
  font-weight: 100 900;          /* variable wght axis: one file covers the range */
  font-style: normal; font-display: optional;
}
@font-face {
  font-family: 'Geist Fallback';
  src: local('Arial');
  size-adjust: 109.05%;
  ascent-override: 92.16%;
  descent-override: 27.05%;
  line-gap-override: 0.00%;
}

/* ---- Geist Mono — numerals, labels, the bracket signature ----------------- */
@font-face {
  font-family: 'Geist Mono';
  src: url('../fonts/geist-mono-400.ae6c079f.woff2') format('woff2');
  font-weight: 100 900;          /* variable wght axis */
  font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Geist Mono Fallback';
  src: local('Courier New');
  size-adjust: 99.98%;
  ascent-override: 100.52%;
  descent-override: 29.50%;
  line-gap-override: 0.00%;
}
