/* Premium Pilot: fonts.
   Geist + Geist Mono (SIL OFL 1.1, see ../fonts/OFL.txt), self-hosted, variable, latin subset, 32 KB in total.
   Weight range is 400-700 (use 400 body, 500 labels, 600 headings, 700 H1/figures; nothing heavier or lighter is shipped).
   Glyphs outside the subset (for example the check mark U+2713) fall back to the system font: draw ticks as inline SVG.
   The sans subset includes the footnote daggers U+2020-2021 (the page uses them as footnote marks). The mono subset leaves them out
   on purpose: no monospaced element carries one.
   Preload in <head> (crossorigin is required even for same-origin fonts; subpages prefix the href with ../):
     <link rel="preload" href="assets/fonts/geist-latin-2.woff2" as="font" type="font/woff2" crossorigin>
     <link rel="preload" href="assets/fonts/geist-mono-latin.woff2" as="font" type="font/woff2" crossorigin>
   URLs are relative to this file, so the site works under any host path. */

@font-face {
  font-family: "Geist";
  src: url("../fonts/geist-latin-2.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2021, U+2022, U+2026, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+2248, U+2264-2265;
}

@font-face {
  font-family: "Geist Mono";
  src: url("../fonts/geist-mono-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+2248, U+2264-2265;
}

/* Metric-matched fallbacks: Arial (or its metric-compatible clones) scaled so the swap to Geist barely moves text.
   size-adjust is the median width ratio Geist / Arial over 620 real sentences measured in Chromium (kerning on),
   one face per weight because Geist grows wider relative to Arial as the weight rises (600 and 700 are nudged
   up 0.7% because headings carry more capitals and digits than running text). Ascent and descent are Geist's
   hhea metrics (1.005 / 0.295, line gap 0) divided by size-adjust. Measured worst-case width error is about 1%
   (re-check with: node scripts/assets.mjs --measure-fonts). If no local source resolves, the browser skips the
   face and uses the next family in the stack. */
@font-face {
  font-family: "Geist Fallback";
  src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
  font-weight: 400;
  font-style: normal;
  size-adjust: 102.53%;
  ascent-override: 98.02%;
  descent-override: 28.77%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Geist Fallback";
  src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
  font-weight: 500;
  font-style: normal;
  size-adjust: 104.98%;
  ascent-override: 95.73%;
  descent-override: 28.10%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Geist Fallback";
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("LiberationSans-Bold"), local("Arimo Bold");
  font-weight: 600;
  font-style: normal;
  size-adjust: 100.20%;
  ascent-override: 100.30%;
  descent-override: 29.44%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Geist Fallback";
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("LiberationSans-Bold"), local("Arimo Bold");
  font-weight: 700;
  font-style: normal;
  size-adjust: 102.50%;
  ascent-override: 98.05%;
  descent-override: 28.78%;
  line-gap-override: 0%;
}

/* Weight 650 is the heading weight (h1 to h3, the step titles, form legends). Without a face of its own it took the 700 face above, which is 3 to 4% wider than
   Geist on strings like "workers' comp reporting", so the H1 wrapped to four lines in the fallback and three in Geist: a 36px jump of everything under it at
   414px and 430px wide, and again from about 1240px up, when the font arrived late. At 100% the H1 wraps the same in both from 320px to 1920px except 608 to 676px
   (check with a delayed font file and node scripts/assets.mjs --measure-fonts). */
@font-face {
  font-family: "Geist Fallback";
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("LiberationSans-Bold"), local("Arimo Bold");
  font-weight: 650;
  font-style: normal;
  size-adjust: 100%;
  ascent-override: 100.5%;
  descent-override: 29.5%;
  line-gap-override: 0%;
}

/* Geist Mono is monospaced at 0.6 em, exactly Courier New's advance, so size-adjust stays 100%. */
@font-face {
  font-family: "Geist Mono Fallback";
  src: local("Courier New"), local("CourierNewPSMT"), local("Liberation Mono"), local("Cousine");
  font-weight: 400 500;
  font-style: normal;
  size-adjust: 100%;
  ascent-override: 100.5%;
  descent-override: 29.5%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Geist Mono Fallback";
  src: local("Courier New Bold"), local("CourierNewPS-BoldMT"), local("Liberation Mono Bold"), local("LiberationMono-Bold"), local("Cousine Bold");
  font-weight: 600 700;
  font-style: normal;
  size-adjust: 100%;
  ascent-override: 100.5%;
  descent-override: 29.5%;
  line-gap-override: 0%;
}

:root {
  --font-sans: "Geist", "Geist Fallback", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "Geist Mono", "Geist Mono Fallback", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
}
