/* ============================================
   Typography Tokens
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap');

/* Explicit @font-face declarations (in addition to the @import above) so this
   design system's font closure is self-describing to tooling that only reads
   local @font-face rules and doesn't crawl external @import stylesheets.
   Sourced from the @fontsource CDN mirrors of the same two Google Fonts
   already used by the live site — no local .woff2 files exist in the source
   repo, so nothing is self-hosted yet. Upload the real files to swap these
   remote src urls for local ones. */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/space-grotesk/files/space-grotesk-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/space-grotesk/files/space-grotesk-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/space-grotesk/files/space-grotesk-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/space-grotesk/files/space-grotesk-latin-700-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbY2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKxjPQ.ttf') format('truetype');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/jetbrains-mono/files/jetbrains-mono-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('https://cdn.jsdelivr.net/npm/@fontsource/jetbrains-mono/files/jetbrains-mono-latin-600-normal.woff2') format('woff2');
}

:root {
    /* ---------- Font families ---------- */
    --font-primary: 'Space Grotesk', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

    /* ---------- Fluid font sizes ---------- */
    --text-xs: clamp(0.75rem, calc(0.7rem + 0.25vw), 0.875rem);
    --text-sm: clamp(0.875rem, calc(0.8rem + 0.375vw), 1rem);
    --text-base: clamp(1rem, calc(0.9rem + 0.5vw), 1.125rem);
    --text-lg: clamp(1.125rem, calc(1rem + 0.625vw), 1.25rem);
    --text-xl: clamp(1.25rem, calc(1.1rem + 0.75vw), 1.5rem);
    --text-2xl: clamp(1.5rem, calc(1.25rem + 1.25vw), 2rem);
    --text-3xl: clamp(1.875rem, calc(1.5rem + 1.875vw), 2.5rem);
    --text-4xl: clamp(2.25rem, calc(1.75rem + 2.5vw), 3.5rem);
    --text-5xl: clamp(3rem, calc(2rem + 5vw), 5rem);

    /* ---------- Weights ---------- */
    --font-normal: 400;
    --font-medium: 500;
    --font-semibold: 600;
    --font-bold: 700;

    /* ---------- Line heights ---------- */
    --leading-none: 1;
    --leading-tight: 1.25;
    --leading-snug: 1.375;
    --leading-normal: 1.5;
    --leading-relaxed: 1.625;

    /* ---------- Letter spacing ---------- */
    --tracking-tight: -0.025em;
    --tracking-normal: 0;
    --tracking-wide: 0.025em;
    --tracking-wider: 0.05em;
}
