/* WO-D3 — Self-hosted App-Schriften (Datenschutz: KEIN Google-Fonts-CDN → keine
   Nutzer-IP an Google/gstatic). Latin-Subsets aus der offiziellen Google-Auslieferung
   (Google-CDN), OFL 1.1 — Weiterverteilung/Self-Hosting ausdrücklich erlaubt. Ersetzt die
   bisherigen Google-Fonts-@imports in App.css / ABGeneratorV2.css / grundschulFeatures.js.
   Wird global via public/index.html eingebunden. URLs relativ zu dieser Datei (= /fonts/…),
   damit same-origin (auch in Client-Druckfenstern). */

/* Fraunces — Display/Serif */
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 300; font-display: swap; src: url('fraunces-300-latin.woff2') format('woff2'); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 600; font-display: swap; src: url('fraunces-600-latin.woff2') format('woff2'); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 700; font-display: swap; src: url('fraunces-700-latin.woff2') format('woff2'); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 300; font-display: swap; src: url('fraunces-300i-latin.woff2') format('woff2'); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+0323, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }

/* DM Sans — UI/Text */
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('dmsans-300-latin.woff2') format('woff2'); unicode-range: U+000D, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0102, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('dmsans-400-latin.woff2') format('woff2'); unicode-range: U+000D, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0102, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('dmsans-500-latin.woff2') format('woff2'); unicode-range: U+000D, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0102, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('dmsans-600-latin.woff2') format('woff2'); unicode-range: U+000D, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0102, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215; }

/* Inter — ABGeneratorV2 */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('inter-400-latin.woff2') format('woff2'); unicode-range: U+0000, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+FEFF; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('inter-500-latin.woff2') format('woff2'); unicode-range: U+0000, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+FEFF; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url('inter-600-latin.woff2') format('woff2'); unicode-range: U+0000, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+FEFF; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; font-display: swap; src: url('inter-700-latin.woff2') format('woff2'); unicode-range: U+0000, U+0020-007E, U+00A0-00AC, U+00AE-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2002, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2191, U+2193, U+2212, U+FEFF; }

/* Nunito — ABGeneratorV2 / Grundschul-Features */
@font-face { font-family: 'Nunito'; font-style: normal; font-weight: 400; font-display: swap; src: url('nunito-400-latin.woff2') format('woff2'); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0102, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }
@font-face { font-family: 'Nunito'; font-style: normal; font-weight: 600; font-display: swap; src: url('nunito-600-latin.woff2') format('woff2'); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0102, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }
@font-face { font-family: 'Nunito'; font-style: normal; font-weight: 700; font-display: swap; src: url('nunito-700-latin.woff2') format('woff2'); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0102, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215; }

/* Patrick Hand — Grundschul-Handschrift-Akzent */
@font-face { font-family: 'Patrick Hand'; font-style: normal; font-weight: 400; font-display: swap; src: url('patrick-hand-400-latin.woff2') format('woff2'); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00B4, U+00B6-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303, U+0309, U+0323, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+20AC, U+2122, U+2212; }

/* ═══════════════════════════════════════════════════════════════════════════
   RUECKFALL-FAMILIE 'FS Fallback' (02.08.2026)
   ═══════════════════════════════════════════════════════════════════════════
   ANLASS: Die Schriften oben sind LATIN-Subsets (220-232 Glyphen). Alles darueber
   hinaus kannte KEINE von ihnen — und wo auch die Systemschrift des Geraets nichts
   hat, erscheint ein Kaestchen (.notdef). Gemeldet ueber Formelzeichen in
   saarlaendischen Mathematik-/Physik-Lehrplaenen; gemessen war die Luecke deutlich
   groesser: 941 Zeichen / 64.554 Vorkommen im Prod-Bestand. Haeufigstes Zeichen war
   nicht ein Formelzeichen, sondern U+2011 NON-BREAKING HYPHEN (6.781 Vorkommen,
   141 Faecher) — gewoehnliche Interpunktion im Fliesstext.

   BAUART: Die Subsets sind nach der GEMESSENEN Codepoint-Liste gebaut
   (abdeckung.json), nicht nach ganzen Unicode-Bloecken — das haelt sie klein
   (zusammen ~128 kB fuer 941 Glyphen). Alle fuenf teilen EINE font-family; welche
   Datei geladen wird, entscheidet die unicode-range. Wer nie ein CJK-Zeichen sieht,
   laedt die 82-kB-CJK-Datei nie.

   REIHENFOLGE = EIGNUNG, nicht Abdeckungsmenge: Griechisch/Kyrillisch/Interpunktion
   kommen aus Noto Sans (Grotesk, passt zu DM Sans), nicht aus der CJK-Schrift, die
   sie zwar auch fuehrt, aber anders zeichnet.

   NICHT ABGEDECKT, mit Absicht: der Privatbereich (U+E000-F8FF, U+F0000-FFFFD,
   105 Zeichen / 18.374 Vorkommen). Dort ist die Bedeutung NICHT festgelegt — eine
   Rueckfallschrift zeichnet etwas Beliebiges und macht aus einem SICHTBAREN Fehler
   einen unsichtbaren. Das Kaestchen ist ehrlicher. Datenproblem, eigener Vorgang:
   claude/merkposten-pua-zeichen.md

   LIZENZ: alle Quellen Noto, SIL Open Font License 1.1 (OFL-Dateien liegen daneben)
   — Weiterverteilung und Self-Hosting ausdruecklich erlaubt, auch subsettet. Kein
   externes Nachladen zur Laufzeit, gleiche Rechtsgrundlage wie #1391.

   ERZEUGT von scripts/build-fallback-fonts.py — die unicode-range unten sind
   generiert, nicht handgepflegt. Nicht von Hand aendern. */

/* Griechisch, Kyrillisch, Interpunktion (u. a. U+2011), Latin Ext. */
@font-face { font-family: 'FS Fallback'; font-style: normal; font-weight: 400; font-display: swap; src: url('fs-fallback-text.woff2') format('woff2'); unicode-range: U+019E-019F, U+01E6-01E7, U+0251, U+0254, U+0259, U+025B-025C, U+0263, U+0272, U+0283, U+028E, U+0292, U+02A4, U+02A7, U+02BE-02BF, U+02C8, U+0305, U+032E, U+0351-0352, U+038F, U+0392-0394, U+0399, U+039D, U+03A3, U+03A6-03A9, U+03AC-03AF, U+03B1-03C9, U+03CB-03CE, U+03D1, U+03D5, U+0410-0418, U+041A-0428, U+042D, U+042F-044F, U+0451, U+0456, U+04AB, U+04AF, U+1D51, U+1E0D-1E0F, U+1E24-1E25, U+1E2A-1E2B, U+1E62-1E63, U+1E6C-1E6D, U+1E6F, U+1F00-1F01, U+1F04, U+1F10, U+1F14, U+1F21, U+1F30-1F31, U+1F35-1F36, U+1F40-1F41, U+1F50-1F51, U+1F55, U+1F61, U+1F65, U+1F71, U+1F73, U+1F75-1F79, U+1F7B, U+1F7D, U+1FB6, U+1FBF, U+1FC4, U+1FC6, U+1FD6, U+1FE1, U+1FE6, U+1FF6-1FF7, U+2010-2012, U+2020, U+2027, U+202B-202C, U+202F, U+2061, U+2074, U+207B, U+207F-2080, U+2082, U+2102, U+210E, U+2113, U+2115, U+211A, U+211D, U+2124, U+2153, U+FB00-FB02; }

/* Mathematische Alphanumerik, Operatoren, Pfeile, Klammern */
@font-face { font-family: 'FS Fallback'; font-style: normal; font-weight: 400; font-display: swap; src: url('fs-fallback-math.woff2') format('woff2'); unicode-range: U+20D7, U+2192, U+2194, U+21A6, U+21C0, U+21D2, U+21D4, U+2205-2206, U+2208-220D, U+2211, U+2217-221A, U+221E, U+2222, U+2225, U+2227-222A, U+223C-223D, U+2245, U+224C, U+2259, U+225F, U+2261, U+2282-2283, U+2286-2287, U+22A5, U+22C5, U+22DA-22DB, U+22EF, U+239B-23A0, U+2500, U+25A0-25A1, U+25AA, U+25B3, U+25B7, U+25C1, U+25CB, U+25CF, U+27F6, U+29A0, U+1D434-1D454, U+1D456, U+1D458-1D467, U+1D6C2, U+1D6D1, U+1D6D4, U+1D6E5, U+1D6F7, U+1D6F9-1D6FA, U+1D6FC-1D700, U+1D702, U+1D706-1D707, U+1D70B-1D70C, U+1D70E, U+1D711, U+1D714, U+1D716-1D717, U+1D719-1D71A; }

/* Hebraeisch (Israelitische Religionslehre) */
@font-face { font-family: 'FS Fallback'; font-style: normal; font-weight: 400; font-display: swap; src: url('fs-fallback-hebrew.woff2') format('woff2'); unicode-range: U+05B0, U+05B2, U+05B4-05B9, U+05BE, U+05C1, U+05D0-05D1, U+05D3-05D5, U+05D7-05E0, U+05E2, U+05E4, U+05E7-05EA, U+FB31, U+FB35, U+FB39, U+FB3B, U+FB3E, U+FB40, U+FB4A; }

/* Zwei Pfeilsymbole, die sonst keine Quelle fuehrt */
@font-face { font-family: 'FS Fallback'; font-style: normal; font-weight: 400; font-display: swap; src: url('fs-fallback-symbols.woff2') format('woff2'); unicode-range: U+2794, U+27A2; }

/* CJK (Chinesisch als Fach) — groesste Datei, laedt nur bei Bedarf */
@font-face { font-family: 'FS Fallback'; font-style: normal; font-weight: 400; font-display: swap; src: url('fs-fallback-cjk.woff2') format('woff2'); unicode-range: U+3001-3002, U+3042, U+3044, U+3046, U+3048, U+304A-3055, U+3057-3059, U+305B-305D, U+305F-3061, U+3063-3064, U+3066-306B, U+306D-3070, U+3078, U+307B, U+307E-307F, U+3081-3084, U+3087-308D, U+3092-3093, U+4E00, U+4E03, U+4E07, U+4E09-4E0B, U+4E0D-4E0E, U+4E14, U+4E1A, U+4E1C, U+4E24, U+4E2A, U+4E2D, U+4E3A-4E3B, U+4E3E, U+4E48-4E49, U+4E4B, U+4E50, U+4E5F-4E61, U+4E66, U+4E86, U+4E8B-4E8C, U+4E8E, U+4E94-4E95, U+4E9B, U+4EA4, U+4EAE, U+4EBA-4EBB, U+4EBF-4EC0, U+4ECA-4ECB, U+4ECE, U+4ED6, U+4EE3, U+4EE5, U+4EEC, U+4EF6, U+4F11, U+4F17, U+4F1A, U+4F20, U+4F46, U+4F4D, U+4F4F, U+4F53, U+4F55, U+4F59, U+4F5C, U+4F60, U+4F7F, U+4FA8, U+4FBF, U+4FD7, U+500D, U+5019, U+503E, U+5047, U+505A, U+5065, U+50CF, U+513F, U+5143, U+5148-5149, U+514B, U+5168, U+516B-516D, U+5171, U+5173, U+5176-5177, U+5185, U+518A, U+518D, U+5199, U+51B5, U+51CF, U+51E0, U+51FA, U+5206, U+5219, U+5229, U+522B, U+522E, U+5230, U+5236, U+524D, U+529B, U+52A0-52A1, U+52A8-52A9, U+5316, U+5339-533A, U+5341, U+5343, U+534E, U+5361, U+5370, U+5373-5374, U+5386, U+53BB, U+53C2, U+53C8, U+53CA-53CB, U+53CD, U+53D1, U+53D8, U+53E3-53E4, U+53E6, U+53EA-53EB, U+53EF, U+53F2, U+53F6, U+5403, U+5409, U+540C, U+540E, U+5410-5411, U+5417, U+541B, U+5427, U+542C, U+5462, U+5468, U+547D, U+548C, U+54CD, U+54EA, U+5510, U+559C, U+56DB, U+56DE, U+56E0, U+56ED, U+56FD, U+571F, U+5723, U+5728, U+5730, U+5747, U+5750, U+5757, U+57CE, U+5883, U+589E, U+5904, U+5916, U+591A, U+5927, U+5929-592A, U+5957-5958, U+5973, U+5979, U+597D, U+5982, U+5987, U+59CB, U+59FB, U+5A5A, U+5A92, U+5B09, U+5B50, U+5B57, U+5B5D, U+5B66, U+5B69, U+5B89, U+5B8B-5B8C, U+5B9C-5B9E, U+5BA2, U+5BB6, U+5BB9, U+5BF9, U+5C09, U+5C0F, U+5C11, U+5C31, U+5C3D, U+5C42, U+5C45, U+5C55, U+5DE5-5DE6, U+5DF1, U+5E01-5E02, U+5E0C, U+5E1D, U+5E26, U+5E2E, U+5E38, U+5E73-5E74, U+5E76, U+5E84, U+5E94, U+5EA6, U+5EAD, U+5EB7, U+5EFA, U+5F00, U+5F0F, U+5F15, U+5F20, U+5F53, U+5F55, U+5F62, U+5F71, U+5F80-5F81, U+5F88, U+5F97, U+5FB7, U+5FC3-5FC4, U+5FEB, U+5FF5, U+600E, U+601D, U+6027, U+603B, U+606D, U+6076, U+60C5, U+60EF, U+60F3, U+6109, U+610F, U+6162, U+61C2, U+6210-6211, U+6216, U+6218, U+6240, U+624B-624C, U+6253, U+6280, U+628A, U+6298, U+62C9, U+62D0, U+63CF, U+64CD, U+6539, U+653E-653F, U+6559, U+6570, U+6587, U+65B0, U+65B9, U+65C5, U+65E5, U+65E9, U+65F6, U+660E, U+6625, U+662F, U+6642, U+665A, U+66F4, U+6700, U+6708-6709, U+670B, U+670D, U+671B, U+671F, U+6728, U+672A-672C, U+672F, U+6751, U+6761, U+6765, U+676F, U+6784, U+6790, U+679A, U+679C, U+67E5, U+6821, U+6837, U+683C, U+6977, U+6982, U+69D8, U+6B21-6B22, U+6B27, U+6B63-6B64, U+6B66, U+6B7B, U+6BB5, U+6BCD-6BCE, U+6BD4, U+6BDB, U+6C11, U+6C14, U+6C34-6C35, U+6C49, U+6C64, U+6CA1, U+6CBB, U+6CD5, U+6CFD, U+6D3B, U+6D41, U+6D4E, U+6D88, U+6E05, U+6E38, U+6F02, U+706B, U+70B9, U+70E6, U+70ED, U+7136, U+7231, U+7236, U+7247, U+7279, U+7384, U+738B, U+73AF-73B0, U+7403, U+7406, U+751F, U+7528, U+7531, U+7537, U+753B, U+756A, U+767D-767E, U+7684, U+76F8, U+770B, U+7740, U+77E5, U+77F3, U+786E, U+793C, U+793E, U+795D, U+7968, U+79D1, U+7A7F, U+7ACB, U+7AD9, U+7AE0, U+7B2C, U+7B51, U+7B54, U+7BA1, U+7BC7, U+7CFB, U+7EA6, U+7ECD, U+7ECF, U+7ED3, U+7ED9, U+7EDF, U+7F8A, U+7F8E, U+7FA4, U+7FFB, U+8003, U+8005, U+800C, U+804C, U+8054, U+809A, U+80B2, U+80FD, U+81EA, U+8282, U+82E5, U+867D, U+884C, U+8863, U+8868, U+88AB, U+897F, U+8981, U+89C1-89C2, U+89C9, U+89D2, U+89E3, U+8A00, U+8BA0, U+8BA4, U+8BA9, U+8BAE, U+8BB0, U+8BBA, U+8BC4, U+8BC6, U+8BD1, U+8BDD-8BDE, U+8BE5, U+8BED, U+8BF4, U+8BF7, U+8BFB, U+8BFE, U+8C01, U+8C03, U+8C22, U+8C61, U+8D1D, U+8D22, U+8D24, U+8D35, U+8D39-8D3A, U+8D70, U+8D77, U+8D8A, U+8D9F, U+8DB3, U+8DDF, U+8DEF, U+8EAB, U+8F66, U+8F7B, U+8F83, U+8FB9, U+8FC7, U+8FD1, U+8FD8-8FD9, U+8FDB, U+901A, U+9031, U+9047, U+904D, U+9053-9054, U+9063, U+90A3, U+90D1, U+90FD, U+9177, U+91C7, U+91CC-91CD, U+91CF, U+91D1, U+94B1, U+9577, U+957F, U+9593, U+95E8, U+95EE, U+95F2, U+95F4, U+9636, U+963F, U+9646, U+964D, U+9650, U+9664, U+96E8, U+9752, U+9762, U+9769, U+987A, U+9898, U+98CE, U+98DF, U+996E, U+9A6C, U+9A91, U+9AD8, U+9EBB, U+9ED1, U+9F99, U+FF01, U+FF08-FF09, U+FF0C, U+FF1A, U+FF1F; }
