/*
 * `30` §1.1 — IBM Plex, self-hosted.
 *
 * DS-F22: "Every fixed width in this document was measured against a face
 * the application never loads." index.html requested no webfont and its
 * CSP is `font-src 'self' data:`, so every surface rendered in the
 * browser's default serif while every measured width in `30` assumed
 * Plex.
 *
 * SELF-HOSTED RATHER THAN EXTERNAL, and the CSP is the reason: `'self'`
 * already permits these, so serving them from this origin needs NO CSP
 * change at all. Pointing at fonts.gstatic.com would have required
 * widening both `font-src` and `style-src` on the application's own
 * entry document — a permanent loosening of the running product's policy
 * to load a typeface. The design-system PROOF entry does exactly that and
 * says so in its own comment; that was acceptable for a development-only
 * page and is not acceptable here.
 *
 * ---------------------------------------------------------------------
 * WHICH FACES, AND WHY EXACTLY THESE FIVE.
 *
 * Derived from what the LIBRARY declares, not from §1.1's table and not
 * from the proof entry. Every `font-family` in components.module.css and
 * signIn.module.css resolves to `--ds-font-sans` or to
 * `--ds-type-{ident,meta}-family`, and every `font-weight` beside them
 * resolves to one of three weight tokens:
 *
 *   Sans 400  type.body        Sans 500  type.ui, StateChip
 *   Sans 600  type.display, type.title, type.section
 *   Mono 400  type.meta        Mono 500  type.ident
 *
 * MONO 600 IS NOT LOADED because nothing declares it. §1.1 gives mono at
 * two levels only — `type.ident` 500 and `type.meta` 400 — and no rule in
 * either stylesheet pairs a mono family with the semibold token. Loading
 * it would be 15KB serving no declaration.
 *
 * NO ITALIC, at any weight: zero `font-style: italic` in `src/`.
 *
 * LATIN SUBSET ONLY. Its range starts `U+0000-00FF`, which contains every
 * accented character Spanish uses on these surfaces — á é í ó ú ñ ü and
 * the inverted marks ¿ ¡ all sit below U+0100. `latin-ext` covers
 * Central and Eastern European glyphs that no string here contains.
 * §1.1's "Spanish sets the measure" is therefore satisfied by this
 * subset, which matters because a missing glyph would fall back to the
 * serif silently and re-introduce exactly the defect DS-F22 names.
 *
 * `font-display: swap` — a floor terminal on a cold cache shows text in
 * the fallback rather than nothing. The layout shift is real and is the
 * lesser failure: `30` §3's constraint is a person who is not looking
 * closely, and invisible text is worse than text that reflows once.
 *
 * Source: @fontsource/ibm-plex-sans and @fontsource/ibm-plex-mono, both
 * 5.3.0, `files/ibm-plex-{sans,mono}-latin-{weight}-normal.woff2`,
 * copied verbatim. IBM Plex is SIL Open Font License 1.1 — see LICENSE
 * beside this file. Neither package is a dependency of this project: the
 * five binaries are vendored so the build needs no network and the
 * runtime needs no package.
 * ---------------------------------------------------------------------
 */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/ibm-plex-sans-latin-600-normal.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-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");
}
