/* JetBrains Mono — Self-hosted */
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-SemiBold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'JetBrains Mono';
  src: url('/assets/fonts/JetBrainsMono-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ============================================
   Fallback metric override — CLS prevention
   --------------------------------------------
   "JBM Fallback" is local('Courier New') with metrics
   adjusted to match JetBrains Mono so font swap does
   not cause a vertical/line-height reflow (CLS).

   Reference values: JetBrains Mono UPM=1000, ascent=1020,
   descent=300, line-gap=0  → ascent-override 102%,
   descent-override 30%, line-gap-override 0%.
   size-adjust 100% (both fonts share monospace advance ~600).
   Source: JetBrains Mono OS/2 metrics + screenspan.net
   /fallback methodology (Malte Ubl / web.dev pattern).
   ============================================ */
@font-face {
  font-family: 'JBM Fallback';
  src: local('Courier New'), local('CourierNewPSMT');
  font-display: swap;
  size-adjust: 100%;
  ascent-override: 102%;
  descent-override: 30%;
  line-gap-override: 0%;
}
