/* wageklug house fonts: self-hosted, latin subset, woff2.
 * Barlow (OFL 1.1, Fonts/LICENSE-barlow.txt): grotesque in the tradition of
 * DIN 1451 lettering; carries text (400), emphasis (700) and the nameplate
 * displays (900). IBM Plex Mono (OFL 1.1, Fonts/LICENSE-ibm-plex-mono.txt):
 * the technical labelling layer (spec bars, labels, reference numbers). One
 * 500 cut declared for 400-700, so browsers render "bold" without faux-bold
 * synthesis. Total weight: 4 files, about 56 KB.
 * Static (NO Vite import): paths stay stable for the preload links in the
 * Default.html layout.
 *
 * CLS protection: every house font has a metric-matched fallback below
 * ('Barlow Fallback', 'Plex Mono Fallback'). size-adjust and the
 * ascent/descent/line-gap overrides map the house metrics onto the system
 * font, so the font-display:swap exchange does not reflow the page. The web
 * viewport gate (hero-font-swap) holds the fonts and checks exactly that.
 * swap stays on purpose (not optional): text shows at once and the brand
 * font always arrives; the matched fallback makes the swap shift-free. */

@font-face {
    font-family: 'Barlow';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../Fonts/barlow-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+2000-206F, U+20AC, U+2122, U+2212;
}

@font-face {
    font-family: 'Barlow';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../Fonts/barlow-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+2000-206F, U+20AC, U+2122, U+2212;
}

@font-face {
    font-family: 'Barlow';
    font-style: normal;
    font-weight: 900;
    font-display: swap;
    src: url('../Fonts/barlow-900-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212;
}

@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../Fonts/ibm-plex-mono-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+2000-206F, U+20AC, U+2122, U+2212;
}

/* --- Metric-matched fallbacks (CLS protection during the font swap) ---
 * Each cut is calibrated against the system font that stands in for it:
 * 400 against Arial Regular, 700/900 against Arial Bold, Plex Mono against
 * Courier New. local() also lists the fonts with Arial's and Courier New's
 * advance widths, so the same values hold where Arial is missing: Liberation
 * Sans/Mono (Linux, the CI browser) and Arimo/Cousine (ChromeOS); Helvetica
 * covers macOS. Without them the fallback face did not resolve on Linux and
 * the swap re-wrapped the hero lede (ENT-1592).
 * size-adjust: width ratio of the house font to Arial over the German copy of
 * wageklug.de (start page, Preise, So funktioniert's, PDF-Katalog; HarfBuzz
 * shaping with kerning, 2026-10-04). 400/700 use the running text, 900 the
 * headings in capitals, since the 900 cut carries uppercase displays.
 * ascent/descent/line-gap: the house font's hhea metrics divided by
 * size-adjust (Fontaine/next/font formula), for Barlow plus 0.15 %, rounded
 * up. Chromium truncates the adjusted size to 1/64 px and rounds ascent and
 * descent to whole pixels, so the exact quotient left a line-height:normal
 * box 1 px short at every x.5 px size (buttons, the hero note). The margin
 * covers the truncation from 10 px up; display text sets its line-height.
 * Plex Mono keeps size-adjust at 100 %: Courier New's advance differs by
 * 0.016 %, and without scaling there is no truncation, so the exact
 * overrides hold at every size. */

@font-face {
    font-family: 'Barlow Fallback';
    font-style: normal;
    font-weight: 400;
    src: local('Arial'), local('ArialMT'), local('Liberation Sans'), local('LiberationSans'), local('Arimo'), local('Arimo-Regular'), local('Helvetica'), local('Helvetica Neue');
    size-adjust: 96.317%;
    ascent-override: 103.98%;
    descent-override: 20.796%;
    line-gap-override: 0%;
}

@font-face {
    font-family: 'Barlow Fallback';
    font-style: normal;
    font-weight: 700;
    src: local('Arial Bold'), local('Arial-BoldMT'), local('Liberation Sans Bold'), local('LiberationSans-Bold'), local('Arimo Bold'), local('Arimo-Bold'), local('Helvetica Bold'), local('Helvetica-Bold');
    size-adjust: 92.334%;
    ascent-override: 108.465%;
    descent-override: 21.693%;
    line-gap-override: 0%;
}

@font-face {
    font-family: 'Barlow Fallback';
    font-style: normal;
    font-weight: 900;
    src: local('Arial Bold'), local('Arial-BoldMT'), local('Liberation Sans Bold'), local('LiberationSans-Bold'), local('Arimo Bold'), local('Arimo-Bold'), local('Helvetica Bold'), local('Helvetica-Bold');
    size-adjust: 87.819%;
    ascent-override: 114.042%;
    descent-override: 22.809%;
    line-gap-override: 0%;
}

@font-face {
    font-family: 'Plex Mono Fallback';
    font-style: normal;
    font-weight: 400 700;
    src: local('Courier New'), local('CourierNewPSMT'), local('Liberation Mono'), local('LiberationMono'), local('Cousine'), local('Cousine-Regular');
    size-adjust: 100%;
    ascent-override: 102.5%;
    descent-override: 27.5%;
    line-gap-override: 0%;
}
