/* ===========================================================================
   gk-fonts.css — IBM Plex, self-hosted
   GK-MASTER, 2026-10-11.

   THE DEFECT

   gk.css line 28-29 has declared Plex since the shell was written:
       --mono: 'IBM Plex Mono', ui-monospace, 'Cascadia Mono', Consolas, …
       --sans: 'IBM Plex Sans', -apple-system, 'Segoe UI', system-ui, …
   and NOTHING EVER LOADED IT. No @font-face, no <link>, no font file anywhere
   under public/. So every fallback fired and the app has been rendering in
   Segoe UI and Consolas — not the typeface Jason approved in the mockup,
   which loads Plex from a CDN. Found by the council, 2026-10-11.

   WHY SELF-HOSTED AND NOT A CDN

   The mockup uses a CDN because a mockup is opened once on a desk. The
   application is used by "someone logging core in a shed with poor internet"
   (docs/council/context.md), and a webfont that fails to arrive is a layout
   that reflows mid-session. These five files are 96 KB in total, served from
   the same origin as everything else, and work with no network at all.

   WHAT IS HERE, AND WHAT IS DELIBERATELY NOT

   Six faces, latin subset only: Sans 400/500/600/700 and Mono 400/500. That
   is every weight the stylesheets actually ask for, from
   `grep -oh "font-weight:\s*[0-9]*" *.css | sort -u` across all five of
   them — and the grep is the reason 700 is here. I shipped five faces first
   on the assumption that 600 was the heaviest, and gk-io.css:84 (`.im-n`,
   the import step number) asks for 700. Nothing uses Mono 700.

   No italics (the app uses none), no cyrillic/greek/vietnamese subsets, no
   100/200/300. The full fontsource packages are 1.8 MB; this is 115 KB.

   IBM Plex is OFL-1.1. vendor/plex/LICENSE.txt travels with the files, which
   the licence requires.

   font-display: swap — text is readable in the fallback immediately and
   reflows once when Plex lands. On a slow link that is the right trade: a
   geologist reading a depth in Consolas for 200 ms beats invisible text.
   =========================================================================== */

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