/*
    Roboto -- drei Schnitte, latin.

    🚩 Bis zum 09.11.2026 standen hier dieselben drei Schnitte als
    base64-woff IM Stilblatt: 106,8 KB roh, davon 103,2 KB Base64.
    Base64 blaeht Binaerdaten um ein Drittel auf und laesst sich nicht
    packen -- die Datei kam mit 77.237 B ueber die Leitung und wog damit
    mehr als die gesamte HTML-Antwort der Startseite (37.754 B). Sie
    haelt das Rendern auf, und jede Aenderung an einem Buchstaben haette
    alle drei Schnitte erneut geschickt.

    Jetzt: drei echte .woff2-Dateien daneben. Es sind dieselben
    Schriften -- aus genau diesen base64-Bloecken umgepackt, nicht von
    Google neu geholt. Das ist Absicht:

    ⛔ Die Dateien in roboto/woff2/KFO*.woff2 (Googles Originale, liegen
    seit jeher ungenutzt daneben) sind NICHT dasselbe. Gemessen am
    09.11.2026: hhea ascent/descent 1900/-500 statt 2163/-595. Das ist
    die Zeilenhoehe jeder Textzeile im Shop. Ausserdem fehlen ihnen die
    Ligaturen fi/fl/ffi/ffl (in deutschen Woertern wie "Profi" oder
    "Flaeche" sichtbar), U+0178 und sechs Leerzeichenbreiten. Der
    Nachbau soll 1:1 aussehen -- also die eigenen Umpackungen.

    font-display: swap zeigt zuerst die Ersatzschrift. Dafuer steht
    unten 'Roboto Ersatz': eine metrisch angeglichene Systemschrift,
    sonst springt das Layout beim Umschalten.
*/

/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(roboto/woff2/roboto-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+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(roboto/woff2/roboto-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+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(roboto/woff2/roboto-latin-700.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/*
    Die Ersatzschrift fuer die Sekunde, in der Roboto noch laedt.

    🚩 Ohne diese Regel waere das die SERIFENSCHRIFT des Browsers.
    `style.css` (und `kritisch.css`) schreiben
    `font-family: "Roboto", "sans-serif"` -- mit Anfuehrungszeichen.
    Damit ist `sans-serif` kein Schluesselwort mehr, sondern ein
    Schriftname, den es nicht gibt; der Browser faellt auf seine
    Standardschrift zurueck, und die ist Times. Bisher fiel das
    niemandem auf, weil ohne `font-display` drei Sekunden lang
    ueberhaupt kein Text erschien. Mit `swap` saehe man es sofort.

    Gemessen am 09.11.2026, dieselbe Zeile in 14 px:

        Roboto 400   604,1 px
        Arial  400   609,3 px   (+0,86 %)
        Times  400   564,6 px   (-6,5 %)

    Zeilenhoehe: 42 px bei allen dreien, weil `line-height: 1.5` eine
    Zahl ist und nicht von den Schriftmetriken abhaengt.

    ⛔ Eine eigene, per `size-adjust` angeglichene Ersatzschrift
    (`local('Arial')` + ascent/descent-override) war gebaut und wurde
    wieder verworfen: `local()` trifft den Namen nur, wenn er exakt
    passt -- im Test fiel die Schrift durch und landete wieder bei
    Times, also genau beim Fehler, den sie beheben sollte. 0,86 %
    Breitenunterschied rechtfertigen das Risiko nicht.
*/
body {
  font-family: 'Roboto', Arial, Helvetica, sans-serif;
}
