/* Self-hosted fonts for the search dash (desktop Jinja, classic mobile, logins, the React /v4 app)
   (2026-10-15, Peteer: "a different font shows before it resets to the actual font ... so tacky").
   Replaces the Google Fonts <link>s, which painted text in a system font until fonts.gstatic.com
   answered, then swapped. Same files + numbers as the ops suite's bz-fonts.css:
   - every brand face uses font-display: block (text waits the few ms for the file, never paints
     a different font first); the critical weights are PRELOADED in each page's <head>;
   - "... Fallback" faces = local Arial / Courier New / Calibri scaled to the brand metrics, so a
     file later than the ~3 s block period lands with no reflow;
   - every URL carries ?v=1 and is served immutable for a year (app.py _bz_font_cache_headers).
     Change a file = bump ?v= here AND in every preload naming it (tests/test_font_no_flash.py). */
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:400;font-display:block;src:url("/static/fonts/hanken-400.woff2?v=1") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:500;font-display:block;src:url("/static/fonts/hanken-500.woff2?v=1") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:600;font-display:block;src:url("/static/fonts/hanken-600.woff2?v=1") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:700;font-display:block;src:url("/static/fonts/hanken-700.woff2?v=1") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:800;font-display:block;src:url("/static/fonts/hanken-800.woff2?v=1") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:block;src:url("/static/fonts/plex-mono-400.woff2?v=1") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:block;src:url("/static/fonts/plex-mono-500.woff2?v=1") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:block;src:url("/static/fonts/plex-mono-600.woff2?v=1") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:700;font-display:block;src:url("/static/fonts/plex-mono-700.woff2?v=1") format("woff2")}
@font-face{font-family:"Hanken Grotesk Fallback";font-style:normal;font-weight:1 449;src:local("Arial"),local("ArialMT");size-adjust:97.89%;ascent-override:102.16%;descent-override:30.95%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback";font-style:normal;font-weight:450 549;src:local("Arial"),local("ArialMT");size-adjust:98.41%;ascent-override:101.62%;descent-override:30.79%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback";font-style:normal;font-weight:550 649;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:94.04%;ascent-override:106.34%;descent-override:32.22%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback";font-style:normal;font-weight:650 749;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:94.47%;ascent-override:105.85%;descent-override:32.07%;line-gap-override:0%}
@font-face{font-family:"Hanken Grotesk Fallback";font-style:normal;font-weight:750 1000;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:95.01%;ascent-override:105.25%;descent-override:31.89%;line-gap-override:0%}
@font-face{font-family:"IBM Plex Mono Fallback";font-style:normal;font-weight:100 900;src:local("Courier New"),local("CourierNewPSMT");size-adjust:99.98%;ascent-override:102.52%;descent-override:27.5%;line-gap-override:0%}
@font-face{font-family:"Carlito";font-style:normal;font-weight:400;font-display:block;src:url("/static/fonts/carlito-400.woff2?v=1") 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}
@font-face{font-family:"Carlito";font-style:normal;font-weight:700;font-display:block;src:url("/static/fonts/carlito-700.woff2?v=1") 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}
/* Carlito = Calibri metrics: stacks read Carlito, Calibri, "Carlito Fallback" (Arial scaled, only where Calibri is missing). */
@font-face{font-family:"Carlito Fallback";font-style:normal;font-weight:1 549;src:local("Arial"),local("ArialMT");size-adjust:89.2%;ascent-override:106.74%;descent-override:30.11%;line-gap-override:0%}
@font-face{font-family:"Carlito Fallback";font-style:normal;font-weight:550 1000;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:86.43%;ascent-override:110.16%;descent-override:31.07%;line-gap-override:0%}
