/* GENERATED by helm-console/scripts/ensure-style-fonts.mjs — DO NOT EDIT.
   Source of truth: helm-bridge/src/client/styles/<id>.fonts.css, read through
   helm-bridge/scripts/css-assemble.mjs in REGISTRY order. Regenerated on every
   console build; edits here are overwritten.

   Owner correction 2026-09-07: the style axis applies with the same rigor to
   the Bridge home and the KB portal as it does to the Helm. These are the
   per-style @font-face kits; the --font-* ROLE tokens that consume them ride
   style-materials.css, and the woff2 files these rules name are copied to
   public/fonts/ by the same generator. */

/* ---- src/client/styles/glass.fonts.css ---- */
/* ---- GLASS style font kit (PR-5). Vendored woff2, latin subset, NO CDN —
   the Helm is VM-served and must render with zero egress. Every family here
   is SIL Open Font Licence 1.1; provenance, upstream and version are in
   public/fonts/FONTS.md and in the PR body.
   `font-display: swap` (the code role keeps the kit's `block`: a terminal
   that reflows mid-paint is worse than a blank frame — R8.3 terminal parity
   means GLASS does not swap the code face at all).
   A declared face is only FETCHED when a rule actually names it, so a
   Blueprint session pays ZERO bytes for this block. ---- */
@font-face {
  font-family: 'Sora';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/Sora-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/Inter-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Inter-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Manrope-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/Manrope-600.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/IBMPlexMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/IBMPlexMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Barlow Semi Condensed';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/BarlowSemiCondensed-600.woff2') format('woff2');
}


/* ---- src/client/styles/synthwave.fonts.css ---- */
/* ---- SYNTHWAVE '88 style font kit (PR-11). Vendored woff2, latin subset,
   NO CDN — the Helm is VM-served and must render with zero egress. Every
   family here is SIL Open Font Licence 1.1; provenance, upstream package and
   version are in public/fonts/FONTS.md and in the PR body.

   THE KIT WAS REPLACED WHOLESALE (R20/R20.3). Every face in all three source
   attempts was either on the struck HUD list (Orbitron, Rajdhani, Chakra
   Petch, Share Tech Mono, Michroma, Audiowide) or already claimed by another
   style (Sora is Glass's), so not one of them survives here.

   `display` and `reading` differ in CONSTRUCTION CLASS, not merely in weight:
   Unbounded is a wide geometric display face, Hanken Grotesk a neo-grotesk
   drawn for paragraphs; `ui` (Outfit, geometric) and `reading` (humanist
   grotesk) likewise. The failure judge 1 named in glass-1 was three
   near-identical sans collapsing into one voice, and it is avoided here by
   construction rather than by taste.

   A declared face is only FETCHED when a rule actually names it, so a
   Blueprint session pays ZERO bytes for this block. ---- */
@font-face {
  font-family: 'Unbounded';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/fonts/Unbounded-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Unbounded';
  font-style: normal; font-weight: 800; font-display: swap;
  src: url('/fonts/Unbounded-800.woff2') format('woff2');
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/HankenGrotesk-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/HankenGrotesk-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Outfit';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Outfit-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Outfit';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/Outfit-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Spline Sans Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/SplineSansMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Spline Sans Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/SplineSansMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Syne';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/fonts/Syne-700.woff2') format('woff2');
}

/* ---- src/client/styles/quarterdeck.fonts.css ---- */
/* ---- QUARTERDECK style font kit (PR-8). Same contract as the GLASS kit
   above: vendored woff2, latin subset, NO CDN, `font-display: swap`, and the
   `code` role untouched (R8.3 terminal parity — a code island must render
   identically whichever style is painted, or diffs stop being comparable).
   Every family here is SIL Open Font Licence 1.1, verified per face from the
   upstream @fontsource package's own LICENSE file AND its package.json
   `license` field before the bytes were copied; provenance in
   public/fonts/FONTS.md and in the PR body.
   ONE SERIF PAIR ONLY (R8.4): Instrument Serif (high stroke contrast,
   engraved-copperplate, cartouche lettering) and Source Serif 4
   (screen-designed, low contrast, built for paragraphs) differ by an order of
   magnitude in stroke contrast, so display and reading never read as one
   voice. The `ui` role is deliberately NOT nautical — Figtree, because the
   fleet dashboard must scan at Blueprint speed and a serif never touches a
   control surface. Oswald and every other condensed display face is banned
   from that role (R8.2); the condensed-industrial register is Destroyer's. -- */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/InstrumentSerif-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/SourceSerif4-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/SourceSerif4-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Figtree';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/Figtree-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Figtree';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Figtree-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Figtree';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/Figtree-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Azeret Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/AzeretMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Azeret Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/AzeretMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Spectral SC';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/SpectralSC-500.woff2') format('woff2');
}


/* ---- src/client/styles/starship.fonts.css ---- */
/* ---- STARSHIP style font kit (PR-6). Vendored woff2, latin subset, NO CDN,
   same deployment constraint as the GLASS kit above: a release VM inside a
   VPC cannot depend on fonts.gstatic.com resolving for every viewer. Every
   family here is SIL Open Font Licence 1.1; provenance, upstream package and
   version are in public/fonts/FONTS.md and in the PR body.
   No face is shared with GLASS or with Blueprint (ruling R20 — no face
   appears in two styles) and the code role is not swapped at all (R8.3
   terminal parity), which is why there is no mono here but DM Mono, the
   `data` face.
   A declared face is only FETCHED when a rule actually names it, so a
   Blueprint or GLASS session pays ZERO bytes for this block. ---- */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/SpaceGrotesk-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/SpaceGrotesk-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/SourceSans3-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/SourceSans3-600.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/IBMPlexSans-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/IBMPlexSans-500.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/IBMPlexSans-600.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/DMMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/DMMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Titillium Web';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/TitilliumWeb-600.woff2') format('woff2');
}


/* ---- src/client/styles/studio.fonts.css ---- */
/* ---- STUDIO style font kit (PR-10). Vendored woff2, latin subset, NO CDN,
   same deployment reason as the kit above (public/fonts/FONTS.md).

   THREE physical families for five roles, and the economy IS the argument: a
   quiet style that ships six families has not understood its own brief.
   `reading` and `data` are ONE SUPERFAMILY (Geist / Geist Mono) so that a
   number in a sentence and the same number in a table are visibly the same
   number, and `accent` is a TREATMENT of `ui` (Schibsted Grotesk 600,
   uppercase, +0.08em) rather than a fourth face. The one serif is the
   DISPLAY role and it is fenced to >= 20px — a serif on the reading role at
   13px in a long transcript is the mistake this style does not repeat, and
   the fence is measured by the smoke rather than promised here. `code` is
   deliberately untouched (terminal parity, R8.3). ---- */
@font-face {
  font-family: 'Newsreader';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Newsreader-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/Geist-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Geist-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Schibsted Grotesk';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/SchibstedGrotesk-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Schibsted Grotesk';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/SchibstedGrotesk-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/GeistMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/GeistMono-500.woff2') format('woff2');
}

/* ---- src/client/styles/mainframe.fonts.css ---- */
/* ---- MAINFRAME '84 style font kit (PR-9). ONE family, four weights, and
   that is the whole kit: the owner constraint is absolute — the five
   non-code roles are differentiated by WEIGHT, SIZE and CASE, never by face
   (R20.1). Source Code Pro is reserved to MAINFRAME for exactly that reason:
   its 300-900 range is what makes a weight-differentiated role table
   possible, and reusing JetBrains Mono (the invariant `code` face, R8.3)
   would have turned the programme's one deliberately invariant face into
   this style's whole voice and erased the seam between a code island and
   MAINFRAME's own chrome.
   SIL Open Font Licence 1.1, latin subset, vendored from
   @fontsource/source-code-pro@5.3.0 — provenance in public/fonts/FONTS.md.
   Same NO-CDN rule and the same "a declared face is only FETCHED when a rule
   names it" economy as the kit above. ---- */
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/SourceCodePro-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/SourceCodePro-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/SourceCodePro-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/fonts/SourceCodePro-700.woff2') format('woff2');
}


/* ---- src/client/styles/destroyer.fonts.css ---- */
/* ---- DESTROYER style font kit (PR-7). Same contract as the GLASS block
   above: vendored woff2, latin subset, NO CDN, `font-display: swap`, and the
   code role deliberately absent — DESTROYER does not swap the terminal face
   either (R8.3 terminal parity).
   The condensed / stencil-industrial register is this style's exclusively
   (R8.1/R20): hull-number and switch-plate lettering. Ten faces is the
   largest kit in the programme and it is held together by ROLE SCARCITY with
   hard size floors, not by discipline — see the style block's `--font-*`
   comment. Every family is SIL Open Font Licence 1.1; provenance, upstream
   and package version are in public/fonts/FONTS.md and in the PR body.
   A declared face is only FETCHED when a rule actually names it, so a
   Blueprint or GLASS session pays ZERO bytes for this block. ---- */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/BigShouldersDisplay-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/fonts/BigShouldersDisplay-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/PublicSans-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/PublicSans-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/Archivo-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Archivo-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('/fonts/Archivo-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('/fonts/SpaceMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Mono';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('/fonts/SpaceMono-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Oswald';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('/fonts/Oswald-500.woff2') format('woff2');
}

