/* ============================================================
   Axiom — Typography Tokens
   Note: Using Inter from Google Fonts (matches specified stack).
   Replace with local Inter files for production.
   ============================================================ */

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

:root {
  /* ── Font families ────────────────────────────────────── */
  --font-sans:   'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:   'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;

  /* ── Type scale ───────────────────────────────────────── */
  --text-display:  48px;
  --text-h1:       32px;
  --text-h2:       22px;
  --text-h3:       18px;
  --text-body:     16px;
  --text-sm:       14px;
  --text-xs:       12px;
  --text-label:    11px;

  /* ── Line heights ─────────────────────────────────────── */
  --leading-tight:  1.15;
  --leading-snug:   1.3;
  --leading-normal: 1.5;
  --leading-relaxed: 1.7;

  /* ── Letter spacing ───────────────────────────────────── */
  --tracking-tight:  -0.03em;
  --tracking-normal:  0em;
  --tracking-wide:    0.04em;
  --tracking-widest:  0.12em;
  --tracking-label:   0.1em;

  /* ── Font weights ─────────────────────────────────────── */
  --weight-light:     300;
  --weight-regular:   400;
  --weight-medium:    500;
  --weight-semibold:  600;
  --weight-bold:      700;
  --weight-extrabold: 800;
  --weight-black:     900;

  /* ── Semantic text styles ─────────────────────────────── */
  --type-display: var(--weight-black) var(--text-display)/var(--leading-tight) var(--font-sans);
  --type-h1:      var(--weight-bold) var(--text-h1)/var(--leading-snug) var(--font-sans);
  --type-h2:      var(--weight-semibold) var(--text-h2)/var(--leading-snug) var(--font-sans);
  --type-h3:      var(--weight-semibold) var(--text-h3)/var(--leading-snug) var(--font-sans);
  --type-body:    var(--weight-regular) var(--text-body)/var(--leading-normal) var(--font-sans);
  --type-sm:      var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-sans);
  --type-label:   var(--weight-semibold) var(--text-label)/var(--leading-tight) var(--font-sans);
  --type-mono:    var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-mono);
}

/* ── Base resets ──────────────────────────────────────────── */
body {
  font: var(--type-body);
  font-family: var(--font-sans);
  color: var(--text-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

h1 { font: var(--type-h1); letter-spacing: var(--tracking-tight); }
h2 { font: var(--type-h2); }
h3 { font: var(--type-h3); }

.text-display {
  font: var(--type-display);
  letter-spacing: var(--tracking-tight);
}
.text-label-caps {
  font: var(--type-label);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}
