/* Self-hosted web fonts (SIL OFL 1.1; licence texts sit next to the files). Same families, weights and DM Sans opsz axis as before, no third-party requests. */
@font-face { font-family: 'DM Sans'; font-style: normal; font-display: swap; font-weight: 100 1000; src: url(/fonts/dm-sans-latin-ext-opsz-normal.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-display: swap; font-weight: 100 1000; src: url(/fonts/dm-sans-latin-opsz-normal.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 Mono'; font-style: normal; font-display: swap; font-weight: 400; src: url(/fonts/dm-mono-latin-ext-400-normal.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 Mono'; font-style: normal; font-display: swap; font-weight: 400; src: url(/fonts/dm-mono-latin-400-normal.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 Mono'; font-style: normal; font-display: swap; font-weight: 500; src: url(/fonts/dm-mono-latin-ext-500-normal.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 Mono'; font-style: normal; font-display: swap; font-weight: 500; src: url(/fonts/dm-mono-latin-500-normal.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: 'Unbounded'; font-style: normal; font-display: swap; font-weight: 200 900; src: url(/fonts/unbounded-latin-ext-wght-normal.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: 'Unbounded'; font-style: normal; font-display: swap; font-weight: 200 900; src: url(/fonts/unbounded-latin-wght-normal.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; }
/* Metric-matched fallback: local Arial scaled to DM Sans so text doesn't rewrap when DM Sans swaps in on a first
   visit (was ~0.1 CLS on long pages). One face per weight band, since DM Sans and Arial widen differently with
   weight (privacy still rewrapped a list item with the old single face): Arial for 400-500, Arial Bold for 600+.
   Measured in Chrome 2026-10-13 on body copy at 15-24px: DM Sans/Arial width 400 1.042, 500 1.059 (Arial has no
   500), 600 1.003 and 700 1.017 (against Arial Bold); DM Sans ascent 0.99, descent 0.31. */
@font-face { font-family: 'DM Sans Fallback'; font-weight: 100 449; src: local('Arial'), local('ArialMT'); size-adjust: 104.2%; ascent-override: 95.0%; descent-override: 29.8%; line-gap-override: 0%; }
@font-face { font-family: 'DM Sans Fallback'; font-weight: 450 549; src: local('Arial'), local('ArialMT'); size-adjust: 105.9%; ascent-override: 93.5%; descent-override: 29.3%; line-gap-override: 0%; }
@font-face { font-family: 'DM Sans Fallback'; font-weight: 550 649; src: local('Arial Bold'), local('Arial-BoldMT'); size-adjust: 100.3%; ascent-override: 98.7%; descent-override: 30.9%; line-gap-override: 0%; }
@font-face { font-family: 'DM Sans Fallback'; font-weight: 650 1000; src: local('Arial Bold'), local('Arial-BoldMT'); size-adjust: 101.7%; ascent-override: 97.3%; descent-override: 30.5%; line-gap-override: 0%; }
/* DM Mono's advance is Menlo's within 0.4% (measured 2026-10-13), so inline <code> keeps its width on swap; the
   system ui-monospace (SF Mono) is narrower and shifted the rest of the line (terms: 0.04 CLS). */
@font-face { font-family: 'DM Mono Fallback'; src: local('Menlo'), local('Menlo-Regular'); size-adjust: 99.7%; }
