/* Lokal ausgelieferte Schriften (SL-12)
 *
 * Inter und Playfair Display kamen bisher bei jedem Seitenaufruf von
 * fonts.googleapis.com/fonts.gstatic.com — damit ging die IP-Adresse jedes
 * Besuchers ohne Einwilligung an Google (LG München I, 3 O 17493/20). Die
 * Dateien liegen jetzt unter /fonts und werden von hier eingebunden.
 *
 * Enthalten sind nur die Subsets latin und latin-ext; Cyrillic, Greek und
 * Vietnamese wurden weggelassen, weil die Oberfläche nur auf Deutsch und
 * Englisch existiert.
 *
 * Schriftlast im kritischen Ladefenster (A5, gemessen 24.08.2026 gegen
 * https://dev.picjoy-app-website.pages.dev/de, sichtbare Elemente + berechnete
 * Stile bei 390px und 1280px, siehe docs/marketing-routen-ladeweg.md):
 * Inter 400/500/600/700 (normal) rendern im ersten Viewport (Headline, Body,
 * CTA, Nav, Cookie-Banner). Playfair Display kommt im ersten Viewport auf
 * keiner der beiden Breiten vor (Akzent-Font weiter unten auf der Seite) —
 * bleibt auf `font-display: optional`, kein Preload.
 *
 * A7 (24.08.2026): Die vier Inter-Normalschnitte belegten trotzdem 192 KB im
 * kritischen Fenster (vorgeladen, fertig erst bei ~2,8s) und verzögerten
 * damit das Hero-Bild (LCP-Element). Preloads jetzt entfernt (index.html);
 * die Schnitte bleiben `font-display: swap` und laden nach dem Hero-Bild
 * nach. Damit der Schriftwechsel dabei nicht sichtbar wird, gibt es unten
 * eine metrisch auf Inter angeglichene Ersatzschrift ('Inter Fallback').
 *
 * `inter-800` stand vorher auf `font-display: optional` ohne Preload, mit
 * der Begründung, er käme im ersten Viewport nicht vor (siehe A5-Tabelle
 * oben). Die Zeitachse-Messung vom 24.08.2026 widerlegt das: Der Schnitt lud
 * trotzdem bei 1.444 ms. Grund: Die Seite wird vollständig vorgerendert
 * (website/scripts/vorrendern.mjs) — auch Abschnitte unterhalb des Folds
 * (hier: der Schritt-Zähler in HowItWorks.jsx, fontWeight 800) liegen beim
 * ersten Parsen bereits im DOM. Der Browser matcht `font-family`/`font-weight`
 * gegen das gesamte DOM, nicht gegen das, was gerade im Viewport sichtbar
 * ist — "im ersten Viewport" war also die falsche Messgröße für "löst einen
 * frühen Font-Fetch aus". `inter-800` bekommt deshalb jetzt dieselbe
 * Behandlung wie 400/500/600/700: `font-display: swap` (kein Preload). Das
 * ist jetzt unbedenklich, weil auch für Gewicht 800 dieselbe Ersatzschrift
 * greift ('Inter Fallback' deckt alle Inter-Schnitte ab) — ein früher Wechsel
 * verschiebt nichts mehr. Playfair Display bleibt unverändert auf `optional`,
 * weil dafür (bewusst) keine Ersatzschrift existiert — Playfair ist reiner
 * Zier-Font, kein Layout-tragender Text.
 *
 * A8 (24.08.2026): Die fünf statischen Inter-Schnitte (400/500/600/700/800,
 * je Subset latin + latin-ext, zusammen 240 KB) sind durch eine variable
 * Inter-Datei je Subset ersetzt (48 KB latin + 85 KB latin-ext,
 * `font-weight: 400 800`, `format('woff2-variations')`). Quelle:
 * `@fontsource-variable/inter@5.3.0`, Dateien `inter-latin-wght-normal.woff2`
 * / `inter-latin-ext-wght-normal.woff2`, hier lokal unter
 * `/fonts/inter-variable-normal-latin(-ext).woff2` gehostet (CSP erlaubt nur
 * `font-src 'self' data:` — kein CDN-Import). Identische Glyphen/Metriken
 * wie die vorherigen statischen Schnitte, nur eine Datei statt fünf pro
 * Subset. 'Inter Fallback' (oben) bleibt unverändert bestehen.
 */

/* Ersatzschrift für Inter (A7). Lokale Systemschrift (Arial — auf Windows und
 * macOS direkt installiert, auf Android/Linux/ChromeOS per Font-Substitution
 * metrisch identisch als "Arimo" hinterlegt, daher plattformübergreifend
 * verlässlich), mit auf Inter angeglichenen Metriken. Werte berechnet aus den
 * tatsächlichen Font-Dateien (fontTools, siehe docs/marketing-routen-ladeweg.md
 * Abschnitt „Schriftlast" für die Herleitung), nicht geschätzt:
 *
 * - ascent-override / descent-override / line-gap-override: Inters eigene
 *   OS/2-Metriken (sTypoAscender/-Descender/-LineGap, `USE_TYPO_METRICS`-Bit
 *   gesetzt), normiert auf Inters unitsPerEm (2048) → 96.88% / 24.12% / 0%.
 *   Diese Werte sind unabhängig von der Ersatzschrift — sie legen fest,
 *   welche Zeilenhöhe der Ersatz haben MUSS, damit er zu Inter passt.
 * - size-adjust: Verhältnis der durchschnittlichen Zeichenbreite (gewichtet
 *   nach Standard-Buchstabenhäufigkeit a–z + Leerzeichen, aus den `hmtx`-
 *   Advance-Widths beider Fonts gemessen, je auf das eigene unitsPerEm
 *   normiert) → 107.36%. Das OS/2-Feld `xAvgCharWidth` wurde bewusst NICHT
 *   direkt verwendet: Inters eigener Wert ergibt ein deutlich anderes (und an
 *   den tatsächlich gemessenen Glyphenbreiten falsches) Verhältnis.
 *
 * Ergebnis: Zeilenhöhe und mittlere Zeichenbreite von 'Inter Fallback' bei
 * gleichem font-size wie 'Inter' — der Wechsel beim Nachladen verschiebt
 * kein Zeichen (siehe A7-Screenshot-Vergleich vor/nach Schriftwechsel).
 */
@font-face {
  font-family: 'Inter Fallback';
  font-weight: 400 800; /* deckt alle genutzten Inter-Schnitte 400–800 ab,
    damit der Browser dieselbe Ersatzschrift matcht statt bei fehlendem
    Schnitt in der generischen 'sans-serif' zu landen (deren Metriken nicht
    angeglichen sind). */
  src: local('Arial');
  ascent-override: 96.88%;
  descent-override: 24.12%;
  line-gap-override: 0%;
  size-adjust: 107.36%;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800; /* deckt alle bisher genutzten Schnitte ab (400-800),
    siehe HowItWorks.jsx fontWeight 800 */
  font-display: swap;
  src: url(/fonts/inter-variable-normal-latin-ext.woff2) format('woff2-variations');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/inter-variable-normal-latin.woff2) format('woff2-variations');
  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: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: optional;
  src: url(/fonts/playfair-display-400-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: optional;
  src: url(/fonts/playfair-display-400-italic-latin.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: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/playfair-display-600-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/playfair-display-600-italic-latin.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: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url(/fonts/playfair-display-400-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url(/fonts/playfair-display-400-normal-latin.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: 'Playfair Display';
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url(/fonts/playfair-display-500-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url(/fonts/playfair-display-500-normal-latin.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: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/playfair-display-600-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url(/fonts/playfair-display-600-normal-latin.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: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url(/fonts/playfair-display-700-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url(/fonts/playfair-display-700-normal-latin.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;
}
