/* Self-hosted variable fonts (Google Fonts build, latin + latin-ext subsets).
   Served from /fonts with a one-year immutable cache; see scripts/build-css.mjs. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url(/fonts/inter-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url(/fonts/inter-latin.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url(/fonts/jetbrains-mono-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url(/fonts/jetbrains-mono-latin.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: 'Manrope';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/manrope-latin-ext.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/manrope-latin.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;
}

/* Arrow and check glyphs (U+2190–21D2, U+2713–2715) are outside the latin subsets;
   these ~1 KiB files keep "→" and "✓" in the brand fonts instead of a system font. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url(/fonts/inter-arrows.woff2) format('woff2');
  unicode-range: U+2190-2194, U+2197-2198, U+21D2, U+2713-2715;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/fonts/manrope-arrows.woff2) format('woff2');
  unicode-range: U+2190-2194, U+2197-2198, U+21D2, U+2713-2715;
}

/* Metric-adjusted local fallbacks (capsize metrics): while a web font is still
   loading, the system font is scaled to the same advance width and vertical
   metrics, so the swap does not move text. Liberation Sans ships the Arial
   metrics (Linux). */
@font-face { font-family: "Inter Fallback: Arial"; src: local("Arial"), local("ArialMT"), local("Liberation Sans"); ascent-override: 90.4365%; descent-override: 22.518%; line-gap-override: 0%; size-adjust: 107.1194%; }
@font-face { font-family: "Inter Fallback: Roboto"; src: local("Roboto Regular"), local("Roboto-Regular"), local("Roboto"); ascent-override: 90.2384%; descent-override: 22.4686%; line-gap-override: 0%; size-adjust: 107.3546%; }
@font-face { font-family: "Inter Fallback: Helvetica Neue"; src: local("Helvetica Neue"), local("HelveticaNeue"); ascent-override: 91.2883%; descent-override: 22.7301%; line-gap-override: 0%; size-adjust: 106.1198%; }
@font-face { font-family: "Inter Fallback: Segoe UI"; src: local("Segoe UI"), local("SegoeUI"); ascent-override: 89.9412%; descent-override: 22.3946%; line-gap-override: 0%; size-adjust: 107.7093%; }
@font-face { font-family: "Manrope Fallback: Arial"; src: local("Arial"), local("ArialMT"), local("Liberation Sans"); ascent-override: 103.3095%; descent-override: 29.074%; line-gap-override: 0%; size-adjust: 103.1851%; }
@font-face { font-family: "Manrope Fallback: Roboto"; src: local("Roboto Regular"), local("Roboto-Regular"), local("Roboto"); ascent-override: 103.0832%; descent-override: 29.0103%; line-gap-override: 0%; size-adjust: 103.4116%; }
@font-face { font-family: "Manrope Fallback: Helvetica Neue"; src: local("Helvetica Neue"), local("HelveticaNeue"); ascent-override: 104.2826%; descent-override: 29.3478%; line-gap-override: 0%; size-adjust: 102.2222%; }
@font-face { font-family: "Manrope Fallback: Segoe UI"; src: local("Segoe UI"), local("SegoeUI"); ascent-override: 102.7437%; descent-override: 28.9147%; line-gap-override: 0%; size-adjust: 103.7533%; }
@font-face { font-family: "JetBrains Mono Fallback"; src: local("Courier New"), local("CourierNewPSMT"), local("Roboto Mono"), local("Liberation Mono"); ascent-override: 102.0166%; descent-override: 30.0049%; line-gap-override: 0%; size-adjust: 99.9837%; }

