/* Self-hosted fonts (no CDN — validated environments run offline). docs/16 §3 */

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/archivo-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/archivo-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/archivo-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/archivo-latin-700-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');
}

/* ---- Selawik ---------------------------------------------------------------
   Microsoft's open-source (SIL OFL 1.1) face, metric-compatible with Segoe UI — same advance widths,
   so it sets to the same measure. It is here INSTEAD OF Segoe UI, not as second best: Segoe's licence
   is tied to Windows and does not permit redistribution as a webfont, and a system stack naming it
   would resolve on the CLIENT, so the same screen and the same printed report would set differently
   on a Windows PC and on a tablet. In a system with signed reports that is a validation problem, not
   a cosmetic one. Selawik ships with the product and renders identically everywhere.

   400 / 600 / 700 only: Selawik has no Medium. The handful of rules asking for 500 resolve to 400 by
   the CSS font-matching algorithm, which is the correct degradation and the reason not to declare a
   500 face pointing at a file that is really Regular.

   Files are Microsoft's own woff2 builds from the Selawik 1.01 release (selawk / selawksb / selawkb),
   renamed to the convention the rest of this folder uses. Unlike the Fontsource files beside them they
   are the complete face rather than a latin subset — the name is the folder's convention, not a
   promise about coverage. There is no Fontsource package for Selawik to take a real subset from. */
@font-face {
  font-family: 'Selawik';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/selawik-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Selawik';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/selawik-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Selawik';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/selawik-latin-700-normal.woff2') format('woff2');
}

/* ---- Cascadia Mono ---------------------------------------------------------
   Microsoft's monospace, also SIL OFL 1.1, so it can ship the way Selawik does. Mono, not Code: the
   Code cut carries programming ligatures, which turn "->" and "!=" into single glyphs. Harmless in an
   editor, wrong in a readings table where every character is data.

   400 and 600. The bundle has only ever shipped 400/500 for its mono face while `.series-stat-value`
   asks for 600, so that number has always been synthesised; 600 is declared here properly. */
@font-face {
  font-family: 'Cascadia Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/cascadia-mono-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Cascadia Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/cascadia-mono-latin-600-normal.woff2') format('woff2');
}
