/* ───────────────────────────────────────────────────────────────
   DeftBid — Marketing Landing Page ("Ink" direction)
   A2 · Fonts: load & configure the three type families.

   - Archivo (400–900) ....... sans — all UI + headings
   - Spline Sans Mono (400–600) mono — eyebrows, meta, money, ticket IDs
   - Caveat (500–700) ........ signature accent — client signature ONLY

   F4 (perf): the fonts are now SELF-HOSTED as latin-subset woff2 under
   assets/fonts/ (previously a render-blocking @import of the Google Fonts CSS,
   which serialized html → fonts.css → googleapis → gstatic). Self-hosting drops
   the third-party origin entirely and lets index.html <link rel="preload"> the
   three render-critical Archivo faces. `font-display: swap` still paints in the
   fallback immediately, then swaps — no FOIT. The role → family mapping and
   heading-tracking variables live in tokens.css (--font-sans / --font-mono /
   --font-signature, --tracking-*).

   Weights shipped = only those the page actually uses: Archivo 400–900 (all six),
   Spline Sans Mono 400/500/600, Caveat 500 (the client signature's only weight —
   .approved-card__sig sets it explicitly). Only the `latin` subset is bundled — the English copy plus —, ·,
   ©, curly quotes are all in latin; the one U+2192 arrow ("Draft → Sent …") falls
   through to the system stack (renders identically). No unicode-range is set, so
   each single face is the sole source and out-of-subset glyphs fall back cleanly.
   ─────────────────────────────────────────────────────────────── */

/* ── Archivo (sans) — 400/500/600/700/800/900, latin ── */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400; font-display: swap; src: url('../assets/fonts/archivo-400.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 500; font-display: swap; src: url('../assets/fonts/archivo-500.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 600; font-display: swap; src: url('../assets/fonts/archivo-600.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 700; font-display: swap; src: url('../assets/fonts/archivo-700.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 800; font-display: swap; src: url('../assets/fonts/archivo-800.woff2') format('woff2'); }
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 900; font-display: swap; src: url('../assets/fonts/archivo-900.woff2') format('woff2'); }

/* ── Spline Sans Mono (mono) — 400/500/600, latin ── */
@font-face { font-family: 'Spline Sans Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('../assets/fonts/spline-sans-mono-400.woff2') format('woff2'); }
@font-face { font-family: 'Spline Sans Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('../assets/fonts/spline-sans-mono-500.woff2') format('woff2'); }
@font-face { font-family: 'Spline Sans Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url('../assets/fonts/spline-sans-mono-600.woff2') format('woff2'); }

/* ── Caveat (signature accent) — 500 only, latin ── */
@font-face { font-family: 'Caveat'; font-style: normal; font-weight: 500; font-display: swap; src: url('../assets/fonts/caveat-500.woff2') format('woff2'); }

/* ── Role utilities — apply a family without hard-coding it in components. ── */
.font-sans      { font-family: var(--font-sans, 'Archivo', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif); }
.font-mono      { font-family: var(--font-mono, 'Spline Sans Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); }
.font-signature { font-family: var(--font-signature, 'Caveat', cursive); }

/* Mono is used for money / totals — keep figures tabular so columns align. */
.font-mono.tabular,
.tabular-nums   { font-variant-numeric: tabular-nums; }

/* ── Heading tracking helpers (tight letter-spacing per the spec). ── */
.track-hero     { letter-spacing: var(--tracking-hero, -0.04em); }
.track-section  { letter-spacing: var(--tracking-section, -0.03em); }
.track-wordmark { letter-spacing: var(--tracking-wordmark, -0.035em); }
.track-eyebrow  { letter-spacing: var(--tracking-eyebrow, 0.16em); text-transform: uppercase; }
