/* Rural Gas Supply Co. — type loading. Tycho, 2026-09-06.
   Display: Bitter (variable wght 100–900), SIL Open Font Licence 1.1.
   Body:    Public Sans (variable wght 100–900), SIL Open Font Licence 1.1.
   Both self-hosted, Google "latin" subset (includes curly quotes, en/em dash,
   ellipsis — the previous subsets did not, so every smart quote fell back to a
   different face). scripts/fetch-fonts.py re-downloads them.

   font-display: swap, NOT optional: the first line a cold visitor reads is a
   phone number and a town name. `optional` would drop the brand face for the
   whole first visit on a weak rural signal — that trades the site's voice for a
   shift that the metric-matched fallbacks below already remove.

   The fallback faces are measured, not guessed: headless Chrome renders this
   site's own body corpus (~4,000 chars of the real page text) in the web font
   and in each fallback at the weights actually used, and size-adjust is the
   ratio of those two widths — an alphabet average was 3% out on Segoe UI and
   14% out on Georgia bold, and that error is exactly what shifts a line.
   ascent/descent overrides are the real face's metrics divided by size-adjust,
   so the fallback and the web font occupy the SAME line box and the swap does
   not move a pixel. (Android aliases "Arial" to Roboto, ~2% narrower than
   Arial — the residual is under a character width and does not shift a block.) */

@font-face {
  font-family: "Bitter";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("bitter.woff2") format("woff2");
}
@font-face {
  font-family: "Public Sans";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("public-sans.woff2") format("woff2");
}

/* --- metric-matched fallbacks --- */
@font-face {
  font-family: "Bitter Fallback Georgia";
  src: local("Georgia");
  size-adjust: 90.0%;
  ascent-override: 103.9%;
  descent-override: 29.4%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Bitter Fallback Times";
  src: local("Times New Roman"), local("Times"), local("Liberation Serif");
  size-adjust: 105.9%;
  ascent-override: 88.3%;
  descent-override: 25.0%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Public Sans Fallback Segoe";
  src: local("Segoe UI");
  size-adjust: 105.2%;
  ascent-override: 90.3%;
  descent-override: 21.4%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Public Sans Fallback Arial";
  src: local("Arial"), local("Helvetica Neue"), local("Liberation Sans");
  size-adjust: 102.5%;
  ascent-override: 92.7%;
  descent-override: 22.0%;
  line-gap-override: 0%;
}
