/* ==========================================================================
   Cosmos Aesthetics — typography (self-hosted)
   Headings: Libre Baskerville (elegant serif). Body/UI: Hanken Grotesk, served by
   cosmos-versions/inc/perf.php. Graphik was dropped on 4 Nov 2026 (photo pages now use
   Hanken Grotesk too); its files stay in assets/fonts.
   font-display: optional (4 Nov 2026): text never changes font after it appears. If a
   file is not ready at first paint, the matched fallback below stays for that page and
   the next page uses the cached file.
   ========================================================================== */

/* --- Libre Baskerville (serif headings) ----------------------------------- */
@font-face {
  font-family: "Libre Baskerville";
  font-style: normal; font-weight: 400; font-display: optional;
  src: url("../fonts/LibreBaskerville-400.woff2") format("woff2");
}
@font-face {
  font-family: "Libre Baskerville";
  font-style: normal; font-weight: 700; font-display: optional;
  /* LibreBaskerville-700.woff2 is byte for byte the 400 file: one download serves both. */
  src: url("../fonts/LibreBaskerville-400.woff2") format("woff2");
}

/* --- Matched fallbacks ------------------------------------------------------
   When a web font is not ready at first paint, text sets in a local font scaled to
   the same width and line metrics, so it takes the same space as the web font.
   Measured 3 Nov 2026 against the woff2 files on the site's own copy.
   Georgia and Arial cover iPhone, Mac and Windows. Noto Serif and Roboto are
   Android's built-in fonts, listed separately because they set wider or
   narrower. Order in the tokens: web font, desktop/iOS fallback, Android. */
@font-face {
  font-family: "Libre Baskerville Fallback";
  src: local("Georgia");
  size-adjust: 115.83%; ascent-override: 83.75%; descent-override: 23.31%; line-gap-override: 0%;
}
@font-face {
  font-family: "Libre Baskerville Fallback Android";
  src: local("Noto Serif"), local("NotoSerif-Regular");
  size-adjust: 107.18%; ascent-override: 90.5%; descent-override: 25.19%; line-gap-override: 0%;
}
@font-face {
  font-family: "Hanken Grotesk Fallback";
  font-weight: 400;
  src: local("Arial"), local("ArialMT");
  size-adjust: 100.72%; ascent-override: 99.28%; descent-override: 29.78%; line-gap-override: 0%;
}
@font-face {
  font-family: "Hanken Grotesk Fallback";
  font-weight: 700;
  src: local("Arial Bold"), local("Arial-BoldMT");
  size-adjust: 94.79%; ascent-override: 105.5%; descent-override: 31.65%; line-gap-override: 0%;
}
@font-face {
  font-family: "Hanken Grotesk Fallback Android";
  font-weight: 400;
  src: local("Roboto"), local("Roboto-Regular");
  size-adjust: 100.78%; ascent-override: 99.22%; descent-override: 29.77%; line-gap-override: 0%;
}
@font-face {
  font-family: "Hanken Grotesk Fallback Android";
  font-weight: 700;
  src: local("Roboto Bold"), local("Roboto-Bold");
  size-adjust: 100.78%; ascent-override: 99.22%; descent-override: 29.77%; line-gap-override: 0%;
}
