/* Self-hosted webfonts — no external (Google) requests. Served from public/fonts/ and <link>ed
   from Base.astro alongside the bundled site.css; both sit in <head> and fetch in parallel.
   woff2 only: an engine without woff2 support also lacks custom properties, :focus-visible and
   IntersectionObserver, all of which this site hard-depends on, so it could never render the page
   a TTF fallback would be serving. */
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/Manrope-Regular.woff2') format('woff2');}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/Manrope-SemiBold.woff2') format('woff2');}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/Manrope-Bold.woff2') format('woff2');}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/Manrope-ExtraBold.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/IBMPlexMono-Regular.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/IBMPlexMono-Bold.woff2') format('woff2');}

/* Metric-matched stand-in for Manrope, used while the real face loads (font-display:swap paints
   the fallback first). Without it the swap reflows every line box: the browser's own sans-serif
   is ~3% narrower per glyph and carries a shorter ascent, so text jumps at the exact moment the
   visitor starts reading. It matters more here than on a typical site — src/scripts/site.js
   MEASURES rendered text to place the #agenten cluster, so a mismatched fallback puts real
   geometry on wrong numbers for the first paint.

   size-adjust normalises Manrope's average glyph width (920/2000 em) against the fallback's, and the vertical overrides are Manrope's own hhea metrics
   (ascent 2132, descent -600, lineGap 0 @ 2000 upm) pre-divided by size-adjust, because they
   resolve AFTER size-adjust has scaled the em. Arial (Windows/macOS), Helvetica (older macOS) and
   Roboto (Android) all land within 0.25% of each other, so one face covers every platform and the
   Arial figure is the one used. Liberation Sans and Nimbus Sans are Linux's metric-compatible
   clones of Arial and Helvetica — identical advance widths by design, so the same numbers hold.
   They have to be named explicitly: local() matches on font NAME and does not follow fontconfig's
   Arial→Liberation alias, so without them a Linux visitor gets no adjustment at all. src order is
   first-match-wins; a box with none of them falls through to the unadjusted sans-serif beneath it
   in the stack. */
@font-face{
  font-family:'Manrope Fallback';
  src:local('Arial'),local('Helvetica'),local('Roboto'),local('Liberation Sans'),local('Nimbus Sans');
  size-adjust:103.19%;
  ascent-override:103.31%;
  descent-override:29.07%;
  line-gap-override:0%;
}
