/*
 * EasyScale type — one typeface, self-hosted.
 *
 * DM Sans variable (weight 100–1000, optical size 9–40), vendored from Google
 * Fonts under the OFL (see public/fonts/dm-sans/OFL.txt). Self-hosted rather
 * than CDN-linked: no third-party connection on first paint, no FOUT while
 * fonts.googleapis.com resolves, and the marketing pages stop making three
 * cross-origin requests before they can render a headline.
 *
 * This replaced Archivo + IBM Plex Sans + IBM Plex Mono on 2026-07-26. Three
 * families was one more than a UI needs; a variable weight axis does the work
 * that separate display and text faces used to. --display, --sans and --mono
 * all still exist as names because hundreds of rules reference them, but they
 * now resolve to the same family and differ only by weight and tracking.
 */

@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 100 1000;
    font-display: swap;
    src: url('/fonts/dm-sans/dm-sans-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;
}

@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 100 1000;
    font-display: swap;
    src: url('/fonts/dm-sans/dm-sans-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;
}

@font-face {
    font-family: 'DM Sans';
    font-style: italic;
    font-weight: 100 1000;
    font-display: swap;
    src: url('/fonts/dm-sans/dm-sans-italic-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;
}

@font-face {
    font-family: 'DM Sans';
    font-style: italic;
    font-weight: 100 1000;
    font-display: swap;
    src: url('/fonts/dm-sans/dm-sans-italic-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;
}

:root {
    --sans: 'DM Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
    --display: var(--sans);
    --mono: var(--sans);
}

html {
    /* DM Sans carries an optical-size axis; letting the browser drive it is what
       keeps 88px headlines from looking like inflated body copy. */
    font-optical-sizing: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/*
 * No tabular-figures rule here on purpose: DM Sans doesn't ship the `tnum`
 * feature (verified by measurement — `tabular-nums` renders identical to
 * normal), so asking for it is dead CSS. Its digits are strongly proportional;
 * a "1" is roughly half the width of a "0". That's invisible on the standalone
 * numbers this site uses, but it means a column of figures will not self-align.
 * Right-align the cells if one ever needs to.
 */
