/* Selbst gehostete Schriften — ersetzt fonts.googleapis.com.
 * Erzeugt aus der Google-Fonts-CSS, nur die Subsets latin und latin-ext
 * (deckt Deutsch und Englisch vollstaendig ab). Kyrillisch und
 * Vietnamesisch sind bewusst weggelassen: 27 Dateien weniger.
 *
 * Geist und Geist Mono: SIL Open Font License 1.1 (Vercel).
 * Space Grotesk: SIL Open Font License 1.1 (Florian Karsten).
 * Selbst-Hosting ist damit ausdruecklich erlaubt.
 *
 * Kein Aufruf an Google mehr — damit faellt der Dienst aus der
 * Datenschutzerklaerung. NICHT wieder auf die CDN-Fassung umstellen.
 */

/* Geist 400 — latin-ext */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/Geist-400-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;
}

/* Geist 400 — latin */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/Geist-400-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;
}

/* Geist 500 — latin-ext */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/Geist-500-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;
}

/* Geist 500 — latin */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/Geist-500-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;
}

/* Geist 600 — latin-ext */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/Geist-600-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;
}

/* Geist 600 — latin */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/Geist-600-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;
}

/* Geist 700 — latin-ext */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/Geist-700-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;
}

/* Geist 700 — latin */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/Geist-700-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;
}

/* Geist Mono 400 — latin-ext */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/GeistMono-400-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;
}

/* Geist Mono 400 — latin */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/GeistMono-400-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;
}

/* Geist Mono 500 — latin-ext */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/GeistMono-500-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;
}

/* Geist Mono 500 — latin */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/GeistMono-500-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;
}

/* Geist Mono 600 — latin-ext */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/GeistMono-600-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;
}

/* Geist Mono 600 — latin */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/GeistMono-600-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;
}

/* Space Grotesk 500 — latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-500-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;
}

/* Space Grotesk 500 — latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-500-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;
}

/* Space Grotesk 600 — latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-600-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;
}

/* Space Grotesk 600 — latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-600-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;
}

/* Space Grotesk 700 — latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-700-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;
}

/* Space Grotesk 700 — latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/SpaceGrotesk-700-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;
}

/* ─── Farb-Emoji erzwingen ────────────────────────────────────────────────
   Reihenfolge im font-family-Stack REICHT NICHT: Zeichen wie ☀ (U+2600)
   oder ❤ (U+2764) sind "text-default". Findet der Browser in einer
   frueheren Schrift (auch einer System-Fallback-Schrift) ein monochromes
   Glyph, nimmt er es — der Variation-Selector U+FE0F wird ignoriert. Im
   Broadcast blieben Sonnen deshalb schwarz-weiss, obwohl die Emoji-
   Schriften im Stack standen.

   Loesung: eine eigene Familie, die per unicode-range NUR fuer Emoji-
   Codepoints gilt und im Stack GANZ VORNE steht. Fuer alles andere ist
   sie unsichtbar, fuer Emoji gewinnt sie. src: local() — es wird nichts
   geladen, nur die vorhandene System-Emoji-Schrift benannt.

   Reihenfolge in local(): iOS/macOS, Windows, Android, Linux. */
@font-face {
    font-family: 'ElvEmoji';
    src: local('Apple Color Emoji'),
         local('Segoe UI Emoji'),
         local('Noto Color Emoji'),
         local('Twemoji Mozilla'),
         local('EmojiOne Color');
    font-display: swap;
    /* Nur Zeichen, die als Emoji gemeint sind — Pfeile, Symbole,
       Piktogramme, Variation-Selector und die eigentlichen Emoji-Bloecke.
       Lateinische Schrift und Interpunktion bleiben unberuehrt. */
    unicode-range: U+203C, U+2049, U+2122, U+2139, U+2194-21AA,
                   U+231A-231B, U+2328, U+23CF-23FA, U+24C2,
                   U+25AA-25FE, U+2600-27BF, U+2934-2935, U+2B00-2BFF,
                   U+3030, U+303D, U+3297, U+3299, U+FE0F,
                   U+1F000-1F02F, U+1F0A0-1F0FF, U+1F100-1F1FF,
                   U+1F200-1F2FF, U+1F300-1F5FF, U+1F600-1F64F,
                   U+1F650-1F67F, U+1F680-1F6FF, U+1F700-1F77F,
                   U+1F780-1F7FF, U+1F900-1F9FF, U+1FA70-1FAFF;
}

/* Zweite Stufe fuer Zeichen mit TEXT-Default (☀ ❤ ✈ ⚠ …): Chromium
   ignoriert den Variation Selector U+FE0F, wenn mitten im Text eine
   Schrift der Kette ein schwarz-weisses Glyph hat (Noto Sans Symbols,
   Segoe UI Symbol). local() allein reicht dann nicht — deshalb liegt
   hier ein echtes Farb-Subset von Noto Color Emoji (COLRv1, ~140 KB,
   wird per unicode-range nur geladen, wenn so ein Zeichen vorkommt).
   Apple-Geraete nehmen weiter ihre Systemschrift (local matcht dort).
   Diese Regel steht bewusst NACH der obigen: bei ueberlappenden
   unicode-ranges gewinnt die spaeter deklarierte Face.
   Bewusst OHNE U+00A9/00AE/2122 — ©®™ in Fliesstext bleiben Text. */
@font-face {
    font-family: 'ElvEmoji';
    src: local('Apple Color Emoji'),
         url('../fonts/ElvEmoji-text-default.woff2') format('woff2');
    font-display: swap;
    unicode-range: U+203C, U+2049, U+2139, U+2194-2199, U+21A9-21AA,
                   U+2328, U+23CF, U+23E9-23FA, U+24C2, U+25AA-25AB,
                   U+25B6, U+25C0, U+25FB-25FE, U+2600-27BF,
                   U+2934-2935, U+2B05-2B07, U+2B1B-2B1C, U+2B50,
                   U+2B55, U+3297, U+3299, U+FE0F, U+1F170-1F171,
                   U+1F17E-1F17F, U+1F202, U+1F21A, U+1F22F,
                   U+1F232-1F23A, U+1F250-1F251, U+1F321,
                   U+1F324-1F32C, U+1F336, U+1F37D, U+1F396-1F397,
                   U+1F399-1F39B, U+1F39E-1F39F, U+1F3CB-1F3CE,
                   U+1F3D4-1F3DF, U+1F3F3, U+1F3F5, U+1F3F7, U+1F43F,
                   U+1F441, U+1F4FD, U+1F549-1F54A, U+1F56F-1F570,
                   U+1F573-1F579, U+1F587, U+1F58A-1F58D, U+1F590,
                   U+1F5A4-1F5A5, U+1F5A8, U+1F5B1-1F5B2, U+1F5BC,
                   U+1F5C2-1F5C4, U+1F5D1-1F5D3, U+1F5DC-1F5DE,
                   U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF, U+1F5F3,
                   U+1F5FA, U+1F6CB, U+1F6CD-1F6CF, U+1F6E0-1F6E5,
                   U+1F6E9, U+1F6EB-1F6EC, U+1F6F0, U+1F6F3;
}
