/* Self-hosted latin subsets. Removes two third-party origins (fonts.googleapis.com
   for the CSS, then fonts.gstatic.com for the files) from the critical path — on
   4G that is ~2 RTT chains before any text can paint. Both faces are variable, so
   every weight the design system uses comes from one file per family. */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/assets/fonts/inter-var.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:100 800;font-display:swap;
  src:url('/assets/fonts/jbmono-var.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;
}
/* Metric-matched fallback. Without it the Inter swap reflows the entire above-fold
   block ~0.5-1.5s in on a slow connection — the single biggest real-device CLS
   source, and one a localhost/headless run reads as 0. */
@font-face{
  font-family:'Inter Fallback';
  src:local('Helvetica Neue'),local('Arial'),local('Roboto');
  size-adjust:107%;ascent-override:90%;descent-override:22%;line-gap-override:0%;
}
/* Mono is above the fold too (the hero eyebrow, the header tag). */
@font-face{
  font-family:'JBM Fallback';
  src:local('Menlo'),local('Courier New');
  size-adjust:92%;ascent-override:102%;descent-override:30%;line-gap-override:0%;
}
/* html:root beats the bare :root in base.css, which is loaded after this file
   and would otherwise drop the metric-matched fallbacks on the floor. */
html:root{
  --font-sans:'Inter','Inter Fallback',-apple-system,'Helvetica Neue',sans-serif;
  --font-mono:'JetBrains Mono','JBM Fallback','SF Mono',Menlo,monospace;
}
