/* NeXify AI — selbst ausgelieferte Schriften
 *
 * Erstellt 08.09.2026 (Europe/Berlin). Arbeitspaket AP-06 aus
 * NEXIFYAI-PP-2026-09-00002, Massnahme M-03 zu Befund B4-01.
 *
 * Begruendung: Zuvor luden alle 21 Dokumente Archivo und IBM Plex Mono
 * von fonts.googleapis.com bzw. fonts.gstatic.com. Damit gingen die
 * IP-Adresse und der User-Agent jedes Besuchers vor jeder Einwilligung
 * an einen Dritten. Jetzt liegt alles auf der eigenen Herkunft.
 *
 * Archivo ist ein variabler Font (Achse wght 100-900) und ersetzt die
 * zuvor sechs einzeln geladenen Schnitte 400/500/600/700/800/900 durch
 * EINE Datei. Wichtig: font-weight MUSS als Bereich stehen. Die
 * Vorgabe-Instanz der Achse liegt bei 600, nicht bei 400 -- ein
 * Einzelwert wuerde die Achse festklemmen und alles halbfett rendern.
 *
 * Kein Kursivschnitt: im gesamten Bestand kommt font-style:italic kein
 * einziges Mal vor (nachgezaehlt am 08.09.2026).
 *
 * Lizenz beider Familien: SIL Open Font License 1.1. Die Lizenztexte
 * liegen als Archivo-OFL.txt und IBMPlex-OFL.txt daneben. Die Dateien
 * sind unveraendert uebernommen (kein Subsetting), damit greift die
 * Umbenennungspflicht aus OFL Ziffer 3 (Reserved Font Name "Plex")
 * nicht.
 *
 * Bezug: Fontsource, gepinnte Versionen
 *   @fontsource-variable/archivo@5.3.0
 *   @fontsource/ibm-plex-mono@5.3.0
 * Die unicode-range-Werte sind unveraendert aus dem Fontsource-CSS
 * uebernommen, nicht selbst getippt.
 */

@font-face {
  font-family: "Archivo";
  src: url("/vendor/fonts/v1/archivo-latin-ext-wght-normal.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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: "Archivo";
  src: url("/vendor/fonts/v1/archivo-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-500-normal.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-600-normal.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-ext-500-normal.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  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: "IBM Plex Mono";
  src: url("/vendor/fonts/v1/ibm-plex-mono-latin-ext-600-normal.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  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;
}

/* Ausweichschriften mit angeglichenen Metriken.
 * Grund: font-display:swap zeigt zuerst die Systemschrift. Ohne
 * Angleichung springt das Layout, sobald der Webfont eintrifft.
 * Werte aus den hhea-Tabellen, unitsPerEm = 1000:
 *   Archivo        ascent 878,  descent -210, lineGap 0
 *   IBM Plex Mono  ascent 1025, descent -275, lineGap 0
 */
@font-face {
  font-family: "Archivo Ausweich";
  src: local("Arial"), local("Helvetica"), local("Liberation Sans");
  ascent-override: 87.8%;
  descent-override: 21%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "IBM Plex Mono Ausweich";
  src: local("Courier New"), local("Liberation Mono"), local("DejaVu Sans Mono");
  ascent-override: 102.5%;
  descent-override: 27.5%;
  line-gap-override: 0%;
}
