/* ============================================================
   fonts.css — self-hosted, subset (Latin + Latin-Ext) web fonts.  CWV-01/02.
   Generated to match tools/subset-fonts.py output names.
   - Variable fonts (one file = full weight range) for all families except
     Space Mono (no variable exists -> static 400 + 700).
   - font-display: swap  => the system fallback in each stack shows text
     instantly, then swaps to the web font (no invisible-text flash).
   ============================================================ */

/* Cormorant Garamond — body / poetry / titles (variable 300–700, + italic) */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal; font-weight: 300 700; font-display: swap;
  src: url('../assets/fonts/cormorant-garamond.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic; font-weight: 300 700; font-display: swap;
  src: url('../assets/fonts/cormorant-garamond-italic.woff2') format('woff2');
}

/* Playfair Display — headings (variable 400–900; no italic used) */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal; font-weight: 400 900; font-display: swap;
  src: url('../assets/fonts/playfair-display.woff2') format('woff2');
}

/* Montserrat — labels / UI (variable 100–900) */
@font-face {
  font-family: 'Montserrat';
  font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('../assets/fonts/montserrat.woff2') format('woff2');
}

/* Dancing Script — single handwritten accent on interviews (variable 400–700) */
@font-face {
  font-family: 'Dancing Script';
  font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('../assets/fonts/dancing-script.woff2') format('woff2');
}

/* Space Mono — mono labels (static 400 + 700; Google has no variable version) */
@font-face {
  font-family: 'Space Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('../assets/fonts/space-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('../assets/fonts/space-mono-700.woff2') format('woff2');
}

/* ============================================================
   Metrics-matched fallbacks — zero-CLS font swap, ALL platforms (V4).
   Each reshapes a LOCAL system font so it occupies the web font's exact
   width + line-box → no layout shift when the real font swaps in. One
   matched face per platform's system font, chained in the --font-* stacks
   so the browser uses whichever the OS actually has:
     serif → Georgia (Win/macOS/iOS) · Times New Roman (Linux≈Liberation) · Noto Serif (Android)
     sans  → Arial (Win/macOS/iOS; Linux≈Liberation) · Roboto (Android)
   Values are constants of each (web font ↔ reference font) pair —
   size/page-independent; regenerate only if a font changes, via
   tools/gen-font-fallbacks.mjs (Capsize).
   ============================================================ */
@font-face {
  font-family: "Cormorant Garamond Fallback: Georgia";
  src: local('Georgia');
  ascent-override: 104.5482%;
  descent-override: 32.4733%;
  size-adjust: 88.3803%;
}
@font-face {
  font-family: "Cormorant Garamond Fallback: Times New Roman";
  src: local('Times New Roman'), local('TimesNewRomanPSMT');
  ascent-override: 95.2728%;
  descent-override: 29.5923%;
  line-gap-override: 0%;
  size-adjust: 96.9846%;
}
@font-face {
  font-family: "Cormorant Garamond Fallback: Noto Serif";
  src: local('Noto Serif Regular'), local('NotoSerif-Regular');
  ascent-override: 112.803%;
  descent-override: 35.0373%;
  size-adjust: 81.9127%;
}
@font-face {
  font-family: "Playfair Display Fallback: Georgia";
  src: local('Georgia');
  ascent-override: 106.716%;
  descent-override: 24.7558%;
  size-adjust: 101.3906%;
}
@font-face {
  font-family: "Playfair Display Fallback: Times New Roman";
  src: local('Times New Roman'), local('TimesNewRomanPSMT');
  ascent-override: 97.2483%;
  descent-override: 22.5595%;
  line-gap-override: 0%;
  size-adjust: 111.2615%;
}
@font-face {
  font-family: "Playfair Display Fallback: Noto Serif";
  src: local('Noto Serif Regular'), local('NotoSerif-Regular');
  ascent-override: 115.142%;
  descent-override: 26.7104%;
  size-adjust: 93.9709%;
}
@font-face {
  font-family: "Montserrat Fallback: Arial";
  src: local('Arial'), local('ArialMT');
  ascent-override: 85.7923%;
  descent-override: 22.2457%;
  line-gap-override: 0%;
  size-adjust: 112.8307%;
}
@font-face {
  font-family: "Montserrat Fallback: Roboto";
  src: local('Roboto Regular'), local('Roboto-Regular');
  ascent-override: 85.6043%;
  descent-override: 22.197%;
  size-adjust: 113.0784%;
}
