/* ---------- Reset / Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg-0);
  color: var(--fg);
  font-family: "Geist", ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", sans-serif;
  font-size: var(--fs-base);
  font-feature-settings: "ss01", "ss03", "cv11";
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  letter-spacing: -0.01em;
  transition: background-color 0.6s var(--ease-out), color 0.4s var(--ease-out);
  overflow-x: hidden;
}
img, svg, video { max-width: 100%; display: block; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; padding: 0; }
a { color: inherit; text-decoration: none; }
ul, ol { padding: 0; margin: 0; list-style: none; }
h1, h2, h3, h4, h5, h6, p { margin: 0; }
::selection { background: var(--accent); color: var(--accent-ink); }

/* ---------- Typography ---------- */
.display {
  font-family: "Geist", ui-sans-serif, -apple-system, BlinkMacSystemFont, sans-serif;
  font-weight: 540;
  letter-spacing: -0.035em;
  line-height: 0.96;
}
.h1 { font-size: var(--fs-4xl); }
.h2 { font-size: var(--fs-3xl); font-weight: 540; letter-spacing: -0.03em; line-height: 1.02; }
.h3 { font-size: var(--fs-2xl); font-weight: 540; letter-spacing: -0.025em; line-height: 1.1; }
.h4 { font-size: var(--fs-xl); font-weight: 540; letter-spacing: -0.02em; line-height: 1.2; }
.eyebrow {
  font-size: var(--fs-micro);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--fg-2);
  font-weight: 500;
}
.mono {
  font-family: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
  font-feature-settings: "ss01", "ss02";
  letter-spacing: -0.01em;
}
.lede { font-size: var(--fs-lg); color: var(--fg-2); line-height: 1.4; max-width: 60ch; letter-spacing: -0.015em; }
.text-2 { color: var(--fg-2); }
.text-3 { color: var(--fg-3); }

/* ---------- Layout primitives ---------- */
.container { width: min(100% - 48px, var(--container)); margin-inline: auto; }
.container-narrow { width: min(100% - 48px, var(--container-narrow)); margin-inline: auto; }
.section { padding-block: clamp(72px, 9vw, 144px); position: relative; }
.section-tight { padding-block: clamp(48px, 6vw, 96px); }
.divider { height: 1px; background: var(--border); width: 100%; }
.flex { display: flex; }
.col { flex-direction: column; }
.between { justify-content: space-between; }
.center { align-items: center; }
.gap-1 { gap: var(--sp-1); }
.gap-2 { gap: var(--sp-2); }
.gap-3 { gap: var(--sp-3); }
.gap-4 { gap: var(--sp-4); }
.gap-5 { gap: var(--sp-5); }
.gap-6 { gap: var(--sp-6); }

/* ---------- Reveal motion ---------- */
.reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.8s var(--ease-out), transform 0.9s var(--ease-out); }
.reveal.in { opacity: 1; transform: none; }
.reveal-stagger > * { opacity: 0; transform: translateY(12px); transition: opacity 0.7s var(--ease-out), transform 0.8s var(--ease-out); }
.reveal-stagger.in > * { opacity: 1; transform: none; }
.reveal-stagger.in > *:nth-child(1) { transition-delay: 0.00s; }
.reveal-stagger.in > *:nth-child(2) { transition-delay: 0.06s; }
.reveal-stagger.in > *:nth-child(3) { transition-delay: 0.12s; }
.reveal-stagger.in > *:nth-child(4) { transition-delay: 0.18s; }
.reveal-stagger.in > *:nth-child(5) { transition-delay: 0.24s; }
.reveal-stagger.in > *:nth-child(6) { transition-delay: 0.30s; }
.reveal-stagger.in > *:nth-child(7) { transition-delay: 0.36s; }
.reveal-stagger.in > *:nth-child(8) { transition-delay: 0.42s; }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-stagger > * { opacity: 1; transform: none; transition: none; }
  html { scroll-behavior: auto; }
}
