/* ==========================================================================
   HappyDraft — self-hosted webfonts

   WIRED UP 2026-10-28. The site serves IBM Plex from site/assets/fonts/ and
   makes no request to Google Fonts. This keeps the project's claim intact
   (no dependencies, works offline) and removes a DNS lookup plus a
   round-trip before the first paint.

   Files: IBM Plex v5.3.0 builds as packaged by Fontsource (latin subset),
   renamed to the IBM file names below. Eight faces: Sans 400/500/600/700
   and Mono 400/500/600/700. Mono 600 and 700 were added to the original
   six because the eyebrow label and bold mono text use them; without the
   files the browser would synthesise a faux bold from the 500 weight.

   Both families are SIL OFL 1.1 — self-hosting is explicitly permitted.
   The licence text is alongside the fonts in site/assets/fonts/OFL.txt.

   Usage, on every page, BEFORE tokens.css:
     <link rel="stylesheet" href="css/fonts.css">
   (path relative to the page; from a subfolder use ../css/fonts.css)

   Deploy header worth adding:
     /assets/fonts/*  Cache-Control: public, max-age=31536000, immutable

   font-display: swap means text paints immediately in the fallback stack and
   reflows when Plex arrives. The fallbacks in --hd-font-sans are chosen to be
   metrically close enough that the shift is small.
   ========================================================================== */

@font-face {
  font-family: "IBM Plex Sans";
  src: url("../assets/fonts/IBMPlexSans-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans";
  src: url("../assets/fonts/IBMPlexSans-Medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans";
  src: url("../assets/fonts/IBMPlexSans-SemiBold.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans";
  src: url("../assets/fonts/IBMPlexSans-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../assets/fonts/IBMPlexMono-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../assets/fonts/IBMPlexMono-Medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../assets/fonts/IBMPlexMono-SemiBold.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("../assets/fonts/IBMPlexMono-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
