/* fonts-public.css — the public site's four faces + metric-matched fallbacks.
 * Geist 400/500 and JetBrains Mono 400/500 from /static/fonts (same files the
 * admin shell uses; the admin's fonts.css is not edited and not linked here).
 *
 * Fallback faces: 'Geist Fallback' and 'JetBrains Mono Fallback' are local()
 * aliases of system fonts with size-adjust / ascent-override / descent-override
 * / line-gap-override tuned so the swap from fallback to web font moves
 * nothing. Values computed from the real font tables (fontTools over the
 * woff2 files) against Arial-metric Liberation Sans and Menlo:
 *   Geist 400: upm 1000, ascender 920, descender 220, lineGap 100,
 *              frequency-weighted a-z+space advance 0.4904em; Arial 0.4563em
 *              -> size-adjust 107.48%, ascent 920/1000/1.0748 = 85.60%,
 *                 descent 20.47%, line-gap 9.30%.
 *   Geist 500: advance 0.5018em -> size-adjust 109.97%, ascent 83.66%,
 *              descent 20.01%, line-gap 9.09%.
 *   JetBrains Mono 400/500: upm 1000, ascender 1020, descender 300, gap 0,
 *              advance 0.600em; Menlo 0.602em (1233/2048) -> size-adjust 99.66%,
 *              ascent 102.35%, descent 30.10%, line-gap 0%.
 *              Liberation Mono / Courier New are 0.6001em, so the same
 *              numbers hold on Linux and Windows; Consolas (0.550em) is listed
 *              last and only used when none of the width-matched faces exist.
 */
@font-face{font-family:'Geist';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/geist-400.woff2') format('woff2')}
@font-face{font-family:'Geist';font-style:normal;font-weight:500;font-display:swap;src:url('/static/fonts/geist-500.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/jetbrains-mono-400.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/static/fonts/jetbrains-mono-500.woff2') format('woff2')}

@font-face{font-family:'Geist Fallback';font-style:normal;font-weight:400;src:local('Arial'),local('Liberation Sans'),local('Roboto'),local('Helvetica Neue'),local('Segoe UI');size-adjust:107.48%;ascent-override:85.60%;descent-override:20.47%;line-gap-override:9.30%}
@font-face{font-family:'Geist Fallback';font-style:normal;font-weight:500;src:local('Arial'),local('Liberation Sans'),local('Roboto'),local('Helvetica Neue'),local('Segoe UI');size-adjust:109.97%;ascent-override:83.66%;descent-override:20.01%;line-gap-override:9.09%}
@font-face{font-family:'JetBrains Mono Fallback';font-style:normal;font-weight:400;src:local('Menlo'),local('Liberation Mono'),local('Courier New'),local('Consolas');size-adjust:99.66%;ascent-override:102.35%;descent-override:30.10%;line-gap-override:0%}
@font-face{font-family:'JetBrains Mono Fallback';font-style:normal;font-weight:500;src:local('Menlo'),local('Liberation Mono'),local('Courier New'),local('Consolas');size-adjust:99.66%;ascent-override:102.35%;descent-override:30.10%;line-gap-override:0%}
