/* Self-hosted, latin-subset woff2. No third-party request on the critical path.
   Total 96.8 kB against a 120 kB budget. font-display:swap so text paints
   immediately in the fallback and reflows once, rather than blocking. */

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('fonts/ibm-plex-sans-latin-wght-normal.woff2') format('woff2-variations');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');
}
/* Source Serif 4 carries an optical-size axis running 8-60, and its default
   instance is 20 — drawn for body text: wide, high x-height, sturdy strokes.
   Shipping that default and setting it at 26-44px is what made the headings
   look heavy and clumsy.
   This file is the variable font instanced at opsz 36 / wght 600, which is the
   display drawing: finer hairlines, more contrast, tighter fit. 20.8 kB, very
   slightly smaller than the text instance it replaces. */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fonts/source-serif-4-latin-display-600.woff2') format('woff2');
}
