/*
 * Self-hosted webfont faces (SIL OFL). Extracted from base.css so the minimal
 * print layout can link the fonts without dragging in base.css's screen chrome
 * (crosshatch body::before, page tokens). Linked as a tracked global sheet
 * BEFORE base.css by every app layout, and by layouts/print.html.erb.
 *
 * The Instrument Serif latin subset is preloaded by the app + print layouts
 * (it owns the H1 / LCP element). base.css's :root --font-display / --font-body
 * stacks name these families and their metric-matched fallbacks.
 *
 * Collaborators: base.css (:root token stacks), application/admin/auth/print
 *   layouts (link tags + font preloads).
 */

/* Self-hosted webfonts (SIL OFL). Replaces Google Fonts to remove a
 * render-blocking cross-origin CSS request that gated first paint by
 * ~150ms on Slow 4G. Source: @fontsource/instrument-serif 5.2.8,
 * @fontsource-variable/outfit 5.2.8. The Instrument Serif latin subset is
 * preloaded by the application layout because it owns the H1 (LCP element). */
@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/instrument-serif-latin-400-normal-af2fa92a.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/instrument-serif-latin-ext-400-normal-2a7fe9c0.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/instrument-serif-latin-400-italic-2b919920.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/instrument-serif-latin-ext-400-italic-4940d809.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: "Outfit";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/outfit-latin-wght-normal-c0a8d111.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Outfit";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/outfit-latin-ext-wght-normal-e51c1c3c.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* Metric-matched fallback faces (PA3-3, #2588). font-display: swap above means
 * first paint always renders in the fallback until the woff2 lands; without
 * these, the fallback's box model differs from the real font's, so the swap
 * itself reflows text (CLS) on top of the visible flash. Each override is
 * derived from the real font's own hhea/OS/2 metrics against the local()
 * fallback's published metrics via the standard size-adjust/ascent-override
 * formula (same one @capsizecss/unpack + fontaine use) — not hand-tuned. */
@font-face {
  font-family: "Instrument Serif Fallback";
  src: local("Georgia");
  size-adjust: 76.4916%;
  ascent-override: 129.426%;
  descent-override: 40.5273%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Outfit Fallback";
  src: local("Arial"), local("ArialMT");
  size-adjust: 99.1474%;
  ascent-override: 100.8599%;
  descent-override: 26.2236%;
  line-gap-override: 0%;
}
