/* ═══════════════════════════════════════════
   BASE
   ═══════════════════════════════════════════ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:auto;
}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}

body{
  font-family:var(--f-body);
  font-size:var(--fs-body);
  line-height:1.75;
  color:var(--c-text);
  background:var(--c-bg);
  overflow-x:hidden;
  font-weight:300;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

img,canvas,video,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
ul,ol{list-style:none}
input,textarea{font:inherit;color:inherit;background:none;border:none;outline:none}
::selection{background:var(--c-gold);color:var(--c-bg)}

/* ─── Layout ─── */
.container{
  max-width:var(--container);
  margin:0 auto;
  padding:0 var(--sp-gutter);
  width:100%;
}
section{position:relative}

/* ─── Typography ─── */
h1,h2,h3,h4{
  font-family:var(--f-display);
  font-weight:700;
  line-height:1.1;
  letter-spacing:-.02em;
}
.h2{font-size:var(--fs-h2);font-weight:900;letter-spacing:-.03em}
.h3{font-size:var(--fs-h3);font-weight:800}
.h2 em,.hero__title em,.cta__title em{
  font-style:normal;
  background:linear-gradient(115deg,var(--c-gold-3),var(--c-gold),var(--c-gold-2) 60%,#F2D9A8);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
.lede{font-size:var(--fs-lede);color:var(--c-text-2);font-weight:300;max-width:60ch}
.eyebrow{
  display:inline-block;
  font-size:var(--fs-xs);
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--c-gold);
  font-weight:500;
  margin-bottom:1.75rem;
}
.eyebrow--center{display:block;text-align:center}

/* ─── Grain overlay ─── */
.grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;
  opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 8s steps(10) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}
  10%{transform:translate(-5%,-10%)}
  30%{transform:translate(3%,-15%)}
  50%{transform:translate(-8%,5%)}
  70%{transform:translate(8%,10%)}
  90%{transform:translate(-3%,8%)}
}

/* ─── Custom cursor ─── */
.cursor{
  position:fixed;top:0;left:0;pointer-events:none;z-index:10000;
  mix-blend-mode:difference;display:none;
}
@media (hover:hover) and (pointer:fine){
  .cursor{display:block}
  body{cursor:none}
  a,button{cursor:none}
}
.cursor-dot{
  position:fixed;width:6px;height:6px;border-radius:50%;
  background:#fff;transform:translate(-50%,-50%);
}
.cursor-ring{
  position:fixed;width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(255,255,255,.55);
  transform:translate(-50%,-50%);
  display:grid;place-items:center;
  transition:width .35s var(--ease-out),height .35s var(--ease-out),border-color .35s var(--ease-out),background .35s var(--ease-out);
}
.cursor-ring .cursor-label{
  font-size:10px;letter-spacing:.14em;color:#fff;opacity:0;
  transition:opacity .3s var(--ease-out);font-family:var(--f-body);font-weight:500;
}
.cursor.is-hover .cursor-ring{
  width:76px;height:76px;border-color:var(--c-gold);
}
.cursor.is-label .cursor-ring{
  width:96px;height:96px;
  background:rgba(200,155,92,.15);
  border-color:var(--c-gold);
}
.cursor.is-label .cursor-label{opacity:1}

/* ─── Reveal utilities ─── */
[data-reveal]{opacity:0;transform:translateY(28px);will-change:transform,opacity}
.word{display:inline-block;overflow:hidden;vertical-align:top}
.word__inner{display:inline-block;transform:translateY(105%)}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
  [data-reveal],.word__inner{opacity:1!important;transform:none!important}
  .grain{animation:none}
}