/*
 * Stalewatch — the typefaces, served from our own origin
 * ======================================================
 * IBM Plex Sans (UI/prose), Mono (labels, code, the logo) and Serif (research prose only). The
 * families are named in 00-tokens.css as --font-sans / --font-mono / --font-serif; this file is
 * only the @font-face declarations that make those names resolve. Numbered 05 so it sits between
 * the tokens that name them and the base styles that spend them.
 *
 * ── THESE CAME FROM fonts.googleapis.com UNTIL NOW ──────────────────────────────────────────────
 *
 * The layout carried two preconnects and a render-blocking <link> to a stylesheet on a SECOND
 * origin, which then referenced font files on a THIRD. So the critical path for a first-time reader
 * was: our HTML, then a DNS lookup and a TLS handshake to fonts.googleapis.com, then a 142ms
 * stylesheet, then another handshake to fonts.gstatic.com, then ten font files — 152KB, measured,
 * for the latin subsets alone. Two of those origins are now gone and the files are on the same
 * connection that already fetched the page.
 *
 * They are also digested and served with the same one-year immutable cache as every other asset,
 * where before they were at the mercy of a third party's cache headers and availability. A site
 * whose whole argument is that a reader can check the numbers should not need Google to be up in
 * order to render them.
 *
 * ── LATIN SUBSET ONLY, DELIBERATELY ─────────────────────────────────────────────────────────────
 *
 * Google serves each face split across about seven unicode-range subsets — latin, latin-ext,
 * cyrillic, greek, vietnamese — and a browser fetches only the ones it needs. Every word on this
 * site is latin, so that is what is here. The `unicode-range` is kept on each face rather than
 * dropped, so a page that somehow does contain a Cyrillic character falls through to the next font
 * in the stack instead of rendering it from a file that has no glyph for it.
 *
 * ── SANS IS ONE VARIABLE FILE, NOT FOUR STATIC ONES ─────────────────────────────────────────────
 *
 * Google returned the same URL for weights 400, 500, 600 and 700, and the file's table directory
 * carries fvar, avar, HVAR and MVAR — it is a genuine variable font. So it is declared once over
 * the range it is used across, and four faces cost one 45KB download instead of four. Mono and
 * Serif are static cuts and are declared per weight, which is what Google served for them too.
 *
 * font-display: swap on every face, which is what the old query string asked for: text is readable
 * in the fallback immediately and reflows once, rather than being invisible while a font loads.
 */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/assets/ibm-plex-sans-variable-bf0c3289.woff2") format("woff2-variations");
  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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/ibm-plex-mono-400-d803141a.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/ibm-plex-mono-500-3f7bbac1.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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/ibm-plex-mono-600-b71798d4.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: "IBM Plex Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/ibm-plex-serif-400-28710ec4.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: "IBM Plex Serif";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/ibm-plex-serif-600-7904a07f.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: "IBM Plex Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/ibm-plex-serif-400-italic-e80d65dc.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;
}
