/*
 * Self-hosted fonts (Inter, Space Grotesk, Geist, Geist Mono).
 * Replaces fonts.googleapis.com / fonts.gstatic.com requests so a single
 * connection serves both the embed JS and its fonts.
 *
 * Every family is one face built from the variable TTF vendored in
 * devops/base/fonts/, subset to latin plus latin-ext, with no unicode-range.
 * Google's css2 output splits a family into several @font-face that differ
 * only by unicode-range; on WebKit 26 that collision resolves the wght
 * variation instance to NaN and drops the uppercase A. Don't re-fetch any of
 * these from css2. That directory's README has the build command.
 *
 * Keep each `font-weight` range equal to the woff2's real `wght` axis. A
 * narrower range doesn't clamp gracefully: the browser pins the weight to the
 * declared bound and then fakes the rest with synthetic bold, so the requested
 * weight silently never renders. Geist and Geist Mono once shipped as
 * `300 700` while their axis is `100 900`, which made the `font-weight: 900`
 * section headers in MetricsGrid.tsx render identical to 700.
 * backend/monolith/tests/inline_font_face_sync_unit_test.py reads each woff2's
 * `fvar` table and fails CI on a range that disagrees, and fails CI on a
 * family that declares more than one face or any unicode-range.
 * Space Grotesk's 300-700 is genuinely its axis -- leave it.
 */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(inter/Inter-Variable.woff2) format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(spacegrotesk/SpaceGrotesk-Variable.woff2) format('woff2');
}
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(geist/Geist-Variable.woff2) format('woff2');
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(geistmono/GeistMono-Variable.woff2) format('woff2');
}
