/**
 * Typography — the single source of truth for fonts and figures.
 *
 * Every view gets its fonts, and its figure style (lining / tabular), from
 * here and names none of its own: the
 * buyer-facing site, the broadcast graphics, the overlays, both clerk views
 * and the Tabler admin. Change a typeface by editing the @import below and
 * the tokens under :root; nothing else should need touching.
 *
 * Buyer-facing and broadcast views link this file directly, before their other
 * stylesheets. The admin and superadmin views reach it through an @import at
 * the top of admin.css, which they all load: an @import serialises the
 * request, which is fine for an internal tool but not for the latency-
 * sensitive buyer and broadcast views.
 *
 * Load it FIRST, before any other stylesheet. auction-shared.css and
 * auction-overlays.css both consume these tokens and define none of their own.
 *
 * ONE DELIBERATE EXCEPTION, which this file should not absorb:
 *
 *   public/css/catalog-preview.css self-hosts Roboto as @font-face. Playwright
 *   renders the catalogue PDF from it, and PDF output has to embed a font file
 *   it controls - a Google Fonts @import would make the PDF depend on a network
 *   fetch at render time. It is a separate system on purpose.

 *
 * @author Budnavet Development Team
 * @version 1.0.0
 */

/* ===========================================
   FONT FILES

   Self-hosted in public/fonts/ (woff2, from Google Fonts' own builds; all
   three families are SIL Open Font License). Nothing is fetched from Google:
   a visitor's IP never leaves our servers for a typeface (see the privacy
   policy, homepage/privacy-policy.html).

   Weights are the union of what the views actually use: Archivo is one
   variable file per style (300-900, upright and italic), the Spectral faces
   are static 300-800. No serif rule is ever italic, so the Spectral italics
   are deliberately not shipped. Each face comes as a latin and a latin-ext
   subset with Google's unicode-range, so a browser fetches only the subset a
   page renders (Swedish text lives in latin).

   To change a family: put its woff2 files here and replace its @font-face
   rules and its token below. Nothing else in the project names a family.
   =========================================== */

@font-face {
    font-family: 'Archivo';
    font-style: italic;
    font-weight: 300 900;
    font-display: swap;
    src: url('/fonts/archivo-300-900-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;
}

@font-face {
    font-family: 'Archivo';
    font-style: italic;
    font-weight: 300 900;
    font-display: swap;
    src: url('/fonts/archivo-300-900-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 300 900;
    font-display: swap;
    src: url('/fonts/archivo-300-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+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: 'Archivo';
    font-style: normal;
    font-weight: 300 900;
    font-display: swap;
    src: url('/fonts/archivo-300-900-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('/fonts/spectral-300-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: 'Spectral';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('/fonts/spectral-300-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/spectral-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+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: 'Spectral';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/spectral-400-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/fonts/spectral-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+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: 'Spectral';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/fonts/spectral-500-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/fonts/spectral-600-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: 'Spectral';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/fonts/spectral-600-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/fonts/spectral-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+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: 'Spectral';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/fonts/spectral-700-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('/fonts/spectral-800-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: 'Spectral';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('/fonts/spectral-800-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('/fonts/spectral-sc-300-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: 'Spectral SC';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('/fonts/spectral-sc-300-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/spectral-sc-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+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: 'Spectral SC';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/spectral-sc-400-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/fonts/spectral-sc-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+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: 'Spectral SC';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/fonts/spectral-sc-500-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/fonts/spectral-sc-600-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: 'Spectral SC';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/fonts/spectral-sc-600-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/fonts/spectral-sc-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+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: 'Spectral SC';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/fonts/spectral-sc-700-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spectral SC';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('/fonts/spectral-sc-800-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: 'Spectral SC';
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url('/fonts/spectral-sc-800-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ===========================================
   FAMILY TOKENS
   =========================================== */

:root {
    /* Display voice. Spectral SC applies its small caps through an always-on
       OpenType `ccmp` feature rather than `smcp`, so naming the family is
       enough - `font-variant-caps` neither enables nor disables it. The only
       way to get mixed case is to use --font-serif instead.

       Small caps set ~20-29% wider than the Playfair Display they replaced,
       so this belongs on display type and short labels, never on prose. */
    --font-display: 'Spectral SC', Georgia, serif;

    /* Mixed-case serif. The readable fallback for generic headings, alert
       headings, empty states and anything sentence-shaped. */
    --font-serif: 'Spectral', Georgia, serif;

    /* Everything else: body copy, UI, numbers, labels.

       Archivo replaced Inter here. It is narrower than Inter on every string
       measured, digits included (-5%), so it can never overflow a box Inter
       fitted, and its x-height is within 3% of Inter's so nothing reads
       smaller at the same font-size. */
    --font-sans: 'Archivo', -apple-system, BlinkMacSystemFont, sans-serif;

    /* Fixed-width, for operator surfaces: keyboard hints, ids, slugs, debug
       output. A system stack on purpose - it downloads nothing, and these are
       desktop views where the local mono face is the familiar one.

       Deliberately NOT used for the broadcast countdown: that renders on
       whatever machine runs OBS, so a system stack would make the output vary
       by machine. See .auto-clerk-timer-display .timer-value. */
    --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco,
                 Consolas, 'Liberation Mono', 'Courier New', monospace;

    /* Admin surface: ids, slugs and codes (.font-mono in admin.css). Admin
       body text is --font-sans, set by admin.css. */
    --font-admin-mono: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;

    /* Neither Spectral face ships a 900 - the range stops at 800. Rules that
       want maximum weight on --font-display must say 800; 900 on a --font-sans
       element is fine, Archivo has it. */
}

/* ===========================================
   FIGURES

   Spectral and Spectral SC default to old-style figures: digits at
   lowercase height, with a zero that reads as the letter o ("125 ooo",
   "Lot 1o"). Lining figures are set once, on the root, and every element
   inherits them - font-variant-numeric is an inherited property. Archivo's
   figures are lining already, so this changes nothing there.

   Numbers that change while you watch - bids, prices in a list, countdowns,
   timers, bid times - also want tabular (fixed-width) figures, or the text
   jitters as digits change. Use the token:

       font-variant-numeric: var(--numeric-tabular);

   Never write a bare `tabular-nums`. The declaration replaces the inherited
   value rather than adding to it, so `tabular-nums` alone silently drops
   Spectral back to old-style figures. The token carries both.
   =========================================== */

:root {
    --numeric-default: lining-nums;
    --numeric-tabular: lining-nums tabular-nums;
}

html {
    font-variant-numeric: var(--numeric-default);
}
