/*
 * Self-hosted Geist + Geist Mono (SIL OFL 1.1).
 * Mirrors the four weight/family combos previously fetched from
 * fonts.googleapis.com — dropping the runtime dependency on Google
 * (one fewer cross-origin handshake, zero analytics leak, no CDN
 * outage risk).
 *
 * The .woff2 files are the Latin subset only (U+0000-00FF + a handful
 * of symbols) — same subset Google's preload tag pointed at. Total
 * payload ≈ 58 KB, served from the same origin as the SPA so the TLS
 * session is already warm.
 *
 * Geist + Geist Mono are variable fonts: Google ships one woff2 per
 * family and the browser interpolates weight from the @font-face
 * declaration. We follow the same pattern — both 400 and 500 rules
 * for a family reference the same file, but live as separate
 * declarations so existing `font-weight: 500` consumers in the app
 * pick up the right metric.
 *
 * font-display: swap matches Google's default — fall back to the
 * system font during the few ms it takes to load Geist, then swap
 * in (no FOIT, snappy first paint).
 */

@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/geist-400.woff2') format('woff2');
}

@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/geist-400.woff2') format('woff2');
}

@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/geist-mono-400.woff2') format('woff2');
}

@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/geist-mono-400.woff2') format('woff2');
}
