/* Self-hosted app faces — vendored woff2, served from our own origin so the CSP can be truly
   self-only (no fonts.googleapis.com / fonts.gstatic.com). Replaces the Google Fonts <link> that
   used to sit in every template head; every page used to beacon Google on load, which the origin-
   sovereignty covenant forbids. DM Sans + Fraunces are variable (one file spans the weight range;
   Fraunces keeps its optical-size axis, so font-optical-sizing:auto still works); the mono faces
   ship one file per weight. font-display:swap mirrors the old &display=swap. Latin subset covers
   English + the German umlauts/ß in the 38C3 titles; rarer glyphs fall through the family stack.
   See DECISIONS 2026-07-17 "P0-C". */

@font-face {
  font-family: 'DM Sans'; font-style: normal; font-weight: 100 1000; font-display: swap;
  src: url('/static/vendor/fonts/dm-sans-var.woff2') format('woff2');
}
@font-face {
  font-family: 'Fraunces'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('/static/vendor/fonts/fraunces-var.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/static/vendor/fonts/dm-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/static/vendor/fonts/ibm-plex-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap;
  src: url('/static/vendor/fonts/ibm-plex-mono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 600; font-display: swap;
  src: url('/static/vendor/fonts/ibm-plex-mono-600.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 700; font-display: swap;
  src: url('/static/vendor/fonts/ibm-plex-mono-700.woff2') format('woff2');
}
