/* Lokal gehostete Schriften — Ersetzen Google Fonts CDN (DSGVO-konform) */
/* Dateien in /public/assets/fonts/ ablegen, Download: https://gwfh.mranftl.com/fonts/ */

/* Outfit */
@font-face { font-family:'Outfit'; font-style:normal; font-weight:300; font-display:swap; src:url('Outfit-Light.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:400; font-display:swap; src:url('Outfit-Regular.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:500; font-display:swap; src:url('Outfit-Medium.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:600; font-display:swap; src:url('Outfit-SemiBold.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:700; font-display:swap; src:url('Outfit-Bold.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:800; font-display:swap; src:url('Outfit-ExtraBold.woff2') format('woff2'); }
@font-face { font-family:'Outfit'; font-style:normal; font-weight:900; font-display:swap; src:url('Outfit-Black.woff2') format('woff2'); }

/* DM Sans — woff2 enthalten */
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:400; font-display:swap; src:url('DMSans-Regular.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:500; font-display:swap; src:url('DMSans-Medium.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:600; font-display:swap; src:url('DMSans-SemiBold.woff2') format('woff2'); }
@font-face { font-family:'DM Sans'; font-style:normal; font-weight:700; font-display:swap; src:url('DMSans-Bold.woff2') format('woff2'); }

/* JetBrains Mono */
@font-face { font-family:'JetBrains Mono'; font-style:normal; font-weight:400; font-display:swap; src:url('JetBrainsMono-Regular.woff2') format('woff2'); }
@font-face { font-family:'JetBrains Mono'; font-style:normal; font-weight:500; font-display:swap; src:url('JetBrainsMono-Medium.woff2') format('woff2'); }
@font-face { font-family:'JetBrains Mono'; font-style:normal; font-weight:600; font-display:swap; src:url('JetBrainsMono-SemiBold.woff2') format('woff2'); }

/* DM Sans Fallback: Arial (bzw. das metrisch gleiche Liberation Sans / Arimo unter Linux), auf DM Sans angeglichen.
   Steht in der Schriftkette direkt hinter 'DM Sans' und gilt nur, bis DM Sans geladen ist: Breite und Hoehe bleiben
   beim Wechsel praktisch gleich, der Text springt nicht. Werte ausgerechnet (2026-10-18), nicht geschaetzt:
   size-adjust = Laufweite DM Sans / Arial, Mittel ueber den sichtbaren Text von / und /send in 13 Sprachen
   (Griechisch ausgenommen, DM Sans hat keine griechischen Zeichen); ascent/descent = DM Sans hhea 992/-310 bei
   1000 Einheiten, geteilt durch size-adjust; line-gap 0 wie DM Sans. 400/500 auf Arial Regular, 600/700 auf Arial Bold.
   unicode-range = Latin + Latin-Ext wie DM Sans; andere Schriften (z. B. Griechisch) laufen weiter ueber die alte Kette. */
@font-face { font-family:'DM Sans Fallback'; font-style:normal; font-weight:400; src:local('Arial'), local('ArialMT'), local('Liberation Sans'), local('LiberationSans'), local('Arimo'), local('Arimo-Regular');
  size-adjust:102.63%; ascent-override:96.66%; descent-override:30.21%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback'; font-style:normal; font-weight:500; src:local('Arial'), local('ArialMT'), local('Liberation Sans'), local('LiberationSans'), local('Arimo'), local('Arimo-Regular');
  size-adjust:105.99%; ascent-override:93.59%; descent-override:29.25%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback'; font-style:normal; font-weight:600; src:local('Arial Bold'), local('Arial-BoldMT'), local('Liberation Sans Bold'), local('LiberationSans-Bold'), local('Arimo Bold'), local('Arimo-Bold');
  size-adjust:96.65%; ascent-override:102.63%; descent-override:32.07%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback'; font-style:normal; font-weight:700; src:local('Arial Bold'), local('Arial-BoldMT'), local('Liberation Sans Bold'), local('LiberationSans-Bold'), local('Arimo Bold'), local('Arimo-Bold');
  size-adjust:101.98%; ascent-override:97.27%; descent-override:30.40%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* DM Sans Fallback Roboto: dasselbe fuer Geraete ohne Arial (Android, Systemschrift Roboto). Steht in der Kette direkt hinter
   'DM Sans Fallback'; wo Arial fehlt, greift diese Fassung. Werte wie oben ausgerechnet (2026-10-18), Laufweite DM Sans / Roboto
   ueber dieselben 13 Sprachen; 400 auf Roboto Regular, 500 auf Roboto Medium, 600/700 auf Roboto Bold. Gleiche unicode-range. */
@font-face { font-family:'DM Sans Fallback Roboto'; font-style:normal; font-weight:400; src:local('Roboto'), local('Roboto Regular'), local('Roboto-Regular');
  size-adjust:103.74%; ascent-override:95.63%; descent-override:29.88%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback Roboto'; font-style:normal; font-weight:500; src:local('Roboto Medium'), local('Roboto-Medium');
  size-adjust:105.21%; ascent-override:94.29%; descent-override:29.47%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback Roboto'; font-style:normal; font-weight:600; src:local('Roboto Bold'), local('Roboto-Bold');
  size-adjust:106.77%; ascent-override:92.91%; descent-override:29.03%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Sans Fallback Roboto'; font-style:normal; font-weight:700; src:local('Roboto Bold'), local('Roboto-Bold');
  size-adjust:108.07%; ascent-override:91.79%; descent-override:28.69%; line-gap-override:0%;
  unicode-range:U+0000-024F,U+0259,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+1E00-1EFF,U+2000-206F,U+20A0-20C0,U+2113,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
