/* ══════════════════════════════════════════════════════════════════════
   EH — Schriften, selbst gehostet
   ══════════════════════════════════════════════════════════════════════

   Ersetzt die bisherige doppelte Auslieferung: fonts.bunny.net (Track,
   Shield, Layers, Check — 11 statische Latin-Dateien, 160,3 KB) und
   fonts.googleapis.com (nur der Hub — 68,5 KB). Zusammen 228,8 KB von zwei
   fremden Herkuenften.

   Jetzt: 104,7 KB aus dem eigenen Ursprung, 124,1 KB weniger. Moeglich, weil
   Plus Jakarta Sans und DM Sans als VARIABLE Schriften alle Gewichte in je
   einer Datei tragen. DM Mono gibt es nur statisch — die beiden benutzten
   Gewichte 400 und 500 liegen daneben.

   ── Zur Kursiven (seit 2026-09-19) ──
   Die Bauleiter-Seiten fordern von Bunny dm-sans:400i,500i an, und sie
   benutzen Kursiv auch wirklich: font-style:italic steht in 11 Dateien
   (Platzhalter, Hinweise, Kommentare, Beschreibungen), <em> in sechs.
   Ohne eine echte Kursive wuerde der Browser eine schraeggestellte
   Normale errechnen — aehnlich, aber nicht dasselbe, und das auf einen
   Schlag auf 15 Seiten.

   Die Datei kostet 74,4 KB, faellt aber nur dort an, wo Kursiv
   tatsaechlich gerendert wird: ein Browser laedt eine @font-face-Quelle
   erst, wenn ein Zeichen sie braucht. Seiten ohne Kursiv uebertragen
   weiterhin dieselben 104,7 KB wie bisher.

   Bewusst NICHT in den Vorrat des Service Workers (GEMEINSAM in sw.js)
   aufgenommen: die fuenf Seiten, die den SW registrieren, sind genau die
   ohne Kursiv — eh-monteur, eh-layers-eingabe und eh-check-eingabe haben
   je ein <em>, das per font-style:normal neutralisiert ist, track-eingabe
   und eh-shield haben gar keins. 74,4 KB dort vorzuladen traefe genau die
   Geraete, fuer die diese Umstellung 124 KB eingespart hat. Braucht eine
   dieser Seiten spaeter doch Kursiv, legt der SW die Datei beim ersten
   Gebrauch ab — woff2 laeuft ueber istUnveraenderlich(), also
   Cache-zuerst.

   Die Datei stammt aus derselben Schriftversion wie die Normale: die
   eingecheckte dm-sans-latin-var.woff2 ist byte-identisch mit der
   heutigen Google-Fassung v17 (62.556 Bytes, gleicher SHA-256), die
   Kursive kommt aus demselben v17-Satz. Gleiche unicode-range, gleiches
   Gewichtsintervall.

   Warum ueberhaupt selbst hosten: ein Service Worker kann nur garantieren,
   was er selbst ausliefert. Ausserdem faellt damit eine Abhaengigkeit weg,
   die genau dann traegt, wenn der Monteur noch schlechtes Netz hat.

   ── Zum Gewicht 900 ──
   eh-shield.html benutzt an 11 Stellen font-weight:900. Plus Jakarta Sans
   hat dieses Gewicht nicht (der variable Bereich endet bei 800), und Bunny
   lieferte es bisher auch nicht aus — nachgezaehlt: null @font-face-Bloecke
   mit 900, obwohl die URL es anfordert. Diese Stellen wurden also schon
   immer aus dem 800er gerechnet. Hier aendert sich nichts.

   Beide Familien stehen unter der SIL Open Font License; das Selbsthosten
   ist ausdruecklich erlaubt.
   ══════════════════════════════════════════════════════════════════════ */

@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 200 800;          /* variabel */
  font-display: swap;
  src: url('/fonts/plus-jakarta-sans-latin-var.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 100 1000;         /* variabel */
  font-display: swap;
  src: url('/fonts/dm-sans-latin-var.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'DM Sans';
  font-style: italic;
  font-weight: 100 1000;         /* variabel */
  font-display: swap;
  src: url('/fonts/dm-sans-latin-italic-var.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/dm-mono-latin-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/dm-mono-latin-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
