/* Base typography & layout primitives */
html{scroll-behavior:smooth}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
.lenis.lenis-smooth iframe{pointer-events:none}

body{
  font-family:var(--font-body);
  font-size:var(--fz-base);
  line-height:var(--lh-base);
  color:var(--fg);
  background:var(--bg);
  cursor:none;
  overflow-x:hidden;
}
@media (max-width:900px),(pointer:coarse){
  body{cursor:auto}
}

/* Display fonts */
h1,h2,h3,.display{
  font-family:var(--font-display);
  font-weight:600;
  line-height:var(--lh-tight);
  letter-spacing:var(--tracking-tight);
}
h1,.h1{font-size:var(--fz-4xl);font-weight:700}
h2,.h2{font-size:var(--fz-3xl)}
h3,.h3{font-size:var(--fz-2xl)}
h4,.h4{font-size:var(--fz-xl);letter-spacing:var(--tracking-snug)}

.eyebrow{
  display:inline-flex;align-items:center;gap:.5rem;
  font-family:var(--font-display);
  font-size:var(--fz-xs);
  text-transform:uppercase;
  letter-spacing:var(--tracking-mega);
  color:var(--accent);
  font-weight:600;
}
.eyebrow::before{
  content:"";width:24px;height:1px;background:var(--accent);
  display:inline-block;
}

p{color:var(--fg-muted);max-width:62ch}
.lead{font-size:var(--fz-lg);color:var(--fg);max-width:50ch}

/* ===== Layout ===== */
.container{
  width:100%;max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.container-narrow{
  width:100%;max-width:var(--container-narrow);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.section{
  padding-block:clamp(5rem,10vw,9rem);
  position:relative;
}
.section-tight{padding-block:clamp(3rem,6vw,5rem)}

/* Reveal helpers (used by GSAP & static fallback) */
.reveal{opacity:0;transform:translateY(40px)}
.is-revealed .reveal,.reveal.is-in{opacity:1;transform:none;transition:opacity .8s var(--ease-out),transform .8s var(--ease-out)}
.split-line{display:block;overflow:hidden}
.split-line > span{display:inline-block;will-change:transform}

/* Accent text */
.accent{color:var(--accent)}
.muted{color:var(--fg-muted)}
.faint{color:var(--fg-faint)}

/* Visually hidden */
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
