/**
 * Self-hosted faces for Modern Necessity.
 *
 * visual/DESIGN.md, "Typography": the WOFF2 files are served from public/fonts/
 * with @font-face rules in a static stylesheet OUTSIDE src/, so the faces are
 * named here and reach component code only as --font-* roles. No hosted-font
 * import, so no third-party request from a visitor's browser on a healthcare
 * site, and no font-host round trip in front of the largest contentful paint.
 *
 * All three are SIL Open Font License 1.1, which permits self-hosting.
 * Latin subsets only, fetched from Google Fonts on 2026-10-03.
 *
 * font-display: swap keeps text painting immediately in the fallback; the
 * baseline brief requires mobile LCP under 2.5s against an old site that took
 * roughly ten seconds to paint anything.
 */

/* Display and heading. Variable optical size 6–72, weight 500. */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url('/fonts/newsreader-500.woff2') format('woff2');
}

/* Body. One variable file covers 400 and 500 — they are byte-identical. */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 500;
  font-stretch: normal;
  font-display: swap;
  src: url('/fonts/instrument-sans-var.woff2') format('woff2');
}

/* Labels only: section indices, hours, phone label, diagram step numbers. */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-400.woff2') format('woff2');
}

/* Display italic — one or two words per page, the r2 direction's single
   ornamental move. Optical size 6–72, weight 400. Fetched 2026-10-05. */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/newsreader-italic-400.woff2') format('woff2');
}
