/* Self-hosted Google Fonts — DSGVO-konform, keine externen Requests */

/* Inter */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/inter-400.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/inter-500.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/inter-600.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/inter-700.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/inter-800.woff2') format('woff2'); }

/* Poppins */
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/poppins-500.woff2') format('woff2'); }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/poppins-600.woff2') format('woff2'); }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/poppins-700.woff2') format('woff2'); }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/poppins-800.woff2') format('woff2'); }

/* DM Sans */
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/dm-sans-400.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/dm-sans-500.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/dm-sans-600.woff2') format('woff2'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/dm-sans-700.woff2') format('woff2'); }

/* Montserrat */
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/montserrat-500.woff2') format('woff2'); }
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/montserrat-600.woff2') format('woff2'); }
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/montserrat-700.woff2') format('woff2'); }
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/montserrat-800.woff2') format('woff2'); }

/* Barlow */
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/barlow-400.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/barlow-500.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/barlow-600.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/barlow-700.woff2') format('woff2'); }

/* DM Serif Display */
@font-face { font-family: 'DM Serif Display'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/dm-serif-display-400.woff2') format('woff2'); }

/* Space Grotesk */
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/space-grotesk-400.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/space-grotesk-500.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/space-grotesk-600.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/space-grotesk-700.woff2') format('woff2'); }

/* Orbitron */
@font-face { font-family: 'Orbitron'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/orbitron-500.woff2') format('woff2'); }
@font-face { font-family: 'Orbitron'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/orbitron-600.woff2') format('woff2'); }
@font-face { font-family: 'Orbitron'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/orbitron-700.woff2') format('woff2'); }
@font-face { font-family: 'Orbitron'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/orbitron-800.woff2') format('woff2'); }

/* Albert Sans */
@font-face { font-family: 'Albert Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/albert-sans-400.woff2') format('woff2'); }
@font-face { font-family: 'Albert Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/albert-sans-500.woff2') format('woff2'); }
@font-face { font-family: 'Albert Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/albert-sans-600.woff2') format('woff2'); }
@font-face { font-family: 'Albert Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/albert-sans-700.woff2') format('woff2'); }

/* Sora */
@font-face { font-family: 'Sora'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/sora-500.woff2') format('woff2'); }
@font-face { font-family: 'Sora'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/sora-600.woff2') format('woff2'); }
@font-face { font-family: 'Sora'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/sora-700.woff2') format('woff2'); }

/* Source Sans 3 */
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/source-sans-3-400.woff2') format('woff2'); }
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/source-sans-3-500.woff2') format('woff2'); }
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/source-sans-3-600.woff2') format('woff2'); }
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/source-sans-3-700.woff2') format('woff2'); }

/* Rubik */
@font-face { font-family: 'Rubik'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/rubik-500.woff2') format('woff2'); }
@font-face { font-family: 'Rubik'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/rubik-600.woff2') format('woff2'); }
@font-face { font-family: 'Rubik'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/rubik-700.woff2') format('woff2'); }
@font-face { font-family: 'Rubik'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/rubik-800.woff2') format('woff2'); }

/* Plus Jakarta Sans */
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/plus-jakarta-sans-400.woff2') format('woff2'); }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/plus-jakarta-sans-500.woff2') format('woff2'); }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/plus-jakarta-sans-600.woff2') format('woff2'); }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/plus-jakarta-sans-700.woff2') format('woff2'); }

/* Outfit */
@font-face { font-family: 'Outfit'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/outfit-500.woff2') format('woff2'); }
@font-face { font-family: 'Outfit'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/outfit-600.woff2') format('woff2'); }
@font-face { font-family: 'Outfit'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/outfit-700.woff2') format('woff2'); }
@font-face { font-family: 'Outfit'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/outfit-800.woff2') format('woff2'); }

/* Urbanist */
@font-face { font-family: 'Urbanist'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/urbanist-400.woff2') format('woff2'); }
@font-face { font-family: 'Urbanist'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/urbanist-500.woff2') format('woff2'); }
@font-face { font-family: 'Urbanist'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/urbanist-600.woff2') format('woff2'); }
@font-face { font-family: 'Urbanist'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/urbanist-700.woff2') format('woff2'); }

/* Bebas Neue */
@font-face { font-family: 'Bebas Neue'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/bebas-neue-400.woff2') format('woff2'); }

/* Archivo */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/archivo-500.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/archivo-700.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 900; font-display: swap; src: url('/fonts/archivo-900.woff2') format('woff2'); }

/* IBM Plex Mono */
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/ibm-plex-mono-400.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/ibm-plex-mono-500.woff2') format('woff2'); }

/* Hanken Grotesk */
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/hanken-grotesk-300.woff2') format('woff2'); }
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/hanken-grotesk-400.woff2') format('woff2'); }
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/hanken-grotesk-500.woff2') format('woff2'); }

/* Jost */
@font-face { font-family: 'Jost'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/jost-400.woff2') format('woff2'); }
@font-face { font-family: 'Jost'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/jost-600.woff2') format('woff2'); }
@font-face { font-family: 'Jost'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/jost-700.woff2') format('woff2'); }

/* Manrope */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/manrope-400.woff2') format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/manrope-600.woff2') format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/manrope-800.woff2') format('woff2'); }
/* ------------------------------------------------------------------------
   Metric-compatible local fallbacks (CLS)
   One "<Family> Fallback" face per webfont family: a locally installed font
   (Arial/Roboto, Times, Courier) with size-adjust + ascent/descent/line-gap
   overrides derived from the shipped woff2 metrics, so swapping from the
   fallback to the loaded webfont does not move the layout (font-display:
   swap above stays). Consumed via the '<Family> Fallback' entry that
   useTheme.ts appends to --font-body / --font-heading / --font-mono.
   Generated from the woff2 files (fontkit, hhea metrics, capsize-style
   weighted average character width) - regenerate when font files change.
   ------------------------------------------------------------------------ */

@font-face { font-family: 'Albert Sans Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 104.32%; ascent-override: 91.06%; descent-override: 23.96%; line-gap-override: 0.00%; }
@font-face { font-family: 'Archivo Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 100.46%; ascent-override: 87.40%; descent-override: 20.90%; line-gap-override: 0.00%; }
@font-face { font-family: 'Barlow Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 97.50%; ascent-override: 102.56%; descent-override: 20.51%; line-gap-override: 0.00%; }
@font-face { font-family: 'Bebas Neue Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 77.82%; ascent-override: 115.65%; descent-override: 38.55%; line-gap-override: 0.00%; }
@font-face { font-family: 'DM Sans Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 105.80%; ascent-override: 93.76%; descent-override: 29.30%; line-gap-override: 0.00%; }
@font-face { font-family: 'DM Serif Display Fallback'; src: local('Times New Roman'), local('Georgia'); size-adjust: 111.44%; ascent-override: 92.97%; descent-override: 30.06%; line-gap-override: 0.00%; }
@font-face { font-family: 'Hanken Grotesk Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 101.70%; ascent-override: 98.33%; descent-override: 29.79%; line-gap-override: 0.00%; }
@font-face { font-family: 'IBM Plex Mono Fallback'; src: local('Courier New'), local('Menlo'); size-adjust: 99.98%; ascent-override: 102.52%; descent-override: 27.50%; line-gap-override: 0.00%; }
@font-face { font-family: 'Inter Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 107.47%; ascent-override: 90.14%; descent-override: 22.44%; line-gap-override: 0.00%; }
@font-face { font-family: 'Jost Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 95.70%; ascent-override: 111.81%; descent-override: 39.19%; line-gap-override: 0.00%; }
@font-face { font-family: 'Manrope Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 104.27%; ascent-override: 102.23%; descent-override: 28.77%; line-gap-override: 0.00%; }
@font-face { font-family: 'Montserrat Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 110.99%; ascent-override: 87.22%; descent-override: 22.62%; line-gap-override: 0.00%; }
@font-face { font-family: 'Orbitron Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 125.34%; ascent-override: 80.66%; descent-override: 19.39%; line-gap-override: 0.00%; }
@font-face { font-family: 'Outfit Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 99.31%; ascent-override: 100.70%; descent-override: 26.18%; line-gap-override: 0.00%; }
@font-face { font-family: 'Plus Jakarta Sans Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 106.04%; ascent-override: 97.88%; descent-override: 20.93%; line-gap-override: 0.00%; }
@font-face { font-family: 'Poppins Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 115.08%; ascent-override: 91.24%; descent-override: 30.41%; line-gap-override: 8.69%; }
@font-face { font-family: 'Rubik Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 102.93%; ascent-override: 90.84%; descent-override: 24.29%; line-gap-override: 0.00%; }
@font-face { font-family: 'Sora Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 114.54%; ascent-override: 84.68%; descent-override: 25.32%; line-gap-override: 0.00%; }
@font-face { font-family: 'Source Sans 3 Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 90.23%; ascent-override: 113.49%; descent-override: 44.33%; line-gap-override: 0.00%; }
@font-face { font-family: 'Space Grotesk Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 111.34%; ascent-override: 88.38%; descent-override: 26.23%; line-gap-override: 0.00%; }
@font-face { font-family: 'Urbanist Fallback'; src: local('Arial'), local('Helvetica Neue'), local('Roboto'); size-adjust: 100.23%; ascent-override: 94.78%; descent-override: 24.94%; line-gap-override: 0.00%; }
