/* ============================================================
   Self-hosted fonts.

   Previously these came from Google, which cost two extra origins
   (fonts.googleapis.com for the stylesheet, fonts.gstatic.com for the
   files) and put a render-blocking request in front of every page:
   the browser had to fetch and parse Google's CSS before it could
   paint a single word.

   Now they are served from our own domain. Three deliberate choices:

   1. LATIN ONLY. Google's stylesheet carries seven alphabets
      including Cyrillic and Greek. The site is English, and
      Indonesian uses basic latin.

   2. VARIABLE FONTS where they exist. One Inter file covers every
      weight from 400 to 700 in 47 KB; the four separate weights it
      replaces came to 188 KB. Same for Manrope.

   3. ONLY THE WEIGHTS USED, established by grepping the source
      rather than guessing: Manrope 700–800, Inter 400–700,
      IBM Plex Mono 400 and 500.

   Total: 100 KB across 4 files, down from 266 KB across 8 —
   and zero third-party connections.

   font-display: swap means text is readable immediately in the
   fallback face and re-renders when the real one arrives. The
   alternative is a page that shows nothing while fonts load.
   ============================================================ */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;      /* variable */
  font-display: swap;
  src: url('/fonts/inter-var.woff2') format('woff2');
}

@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700 800;      /* variable */
  font-display: swap;
  src: url('/fonts/manrope-var.woff2') format('woff2');
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/ibm-plex-mono-400.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-500.woff2') format('woff2');
}
