/* ============================================================
   LUCID — luxe-minimal dark theme
   ============================================================ */
:root{
  --bg:#0a0908;
  --bg-2:#100e0b;
  --bg-3:#15120d;
  --ink:#f4efe6;
  --muted:#9a9183;
  --muted-2:#6e675b;
  --gold:#d9b873;
  --gold-bright:#f0d8a4;
  --gold-deep:#b1853f;
  --line:rgba(217,184,115,.16);
  --line-soft:rgba(244,239,230,.08);
  --serif:"Fraunces",Georgia,serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
  --gut:max(clamp(20px,5vw,80px),env(safe-area-inset-left,0px),env(safe-area-inset-right,0px));
  --maxw:1280px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-weight:300;line-height:1.6;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
body.menu-open{overflow:hidden}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
em{font-style:italic}
sup{font-size:.6em;vertical-align:super}
::selection{background:var(--gold);color:#0a0908}

h1,h2,h3{font-family:var(--serif);font-weight:340;line-height:1.04;letter-spacing:-.01em}
h2{font-size:clamp(2rem,5.2vw,4.2rem)}
h3{font-size:clamp(1.25rem,2.4vw,1.7rem);font-weight:380}
.eyebrow{font-family:var(--sans);font-size:.74rem;letter-spacing:.32em;text-transform:uppercase;color:var(--gold);font-weight:500}
.lead{font-size:clamp(1rem,1.6vw,1.18rem);color:var(--muted);max-width:46ch}

/* ---------- overlays ---------- */
#field{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.55}
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.cursor-glow{position:fixed;top:0;left:0;width:480px;height:480px;border-radius:50%;z-index:1;pointer-events:none;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(217,184,115,.10),transparent 60%);
  transition:opacity .4s;opacity:0;will-change:transform}
.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:60;
  background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));box-shadow:0 0 12px rgba(217,184,115,.6)}

/* ============ NAV ============ */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:max(22px,calc(12px + env(safe-area-inset-top))) var(--gut) 22px;transition:padding .4s var(--ease),background .4s,backdrop-filter .4s;border-bottom:1px solid transparent}
.nav.scrolled{padding:max(14px,calc(6px + env(safe-area-inset-top))) var(--gut) 14px;background:rgba(10,9,8,.7);backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line-soft)}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{width:30px;height:30px;overflow:visible;flex:none;
  filter:drop-shadow(0 0 9px rgba(217,184,115,.45))}
.brand-node{transform-box:fill-box;transform-origin:center;animation:nodePulse 3.6s var(--ease) infinite}
.brand:hover .brand-mark{animation:spin 14s linear infinite}
.brand-word{font-family:var(--sans);font-weight:600;letter-spacing:.015em;font-size:1.08rem}
.brand-word-r{color:var(--gold)}
.nav-links{display:flex;gap:38px}
.nav-links a{font-size:.86rem;color:var(--muted);letter-spacing:.02em;position:relative;transition:color .3s}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-6px;height:1px;width:0;background:var(--gold);transition:width .4s var(--ease)}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{width:100%}
.nav-burger{display:none;background:none;border:0;cursor:pointer;width:30px;height:22px;position:relative}
/* The glyph stays 30x22; the tappable box becomes 44x44. Padding rather than a
   bigger element so the bars don't move. */
.nav-burger::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px}
.nav-burger span{position:absolute;left:0;width:100%;height:1.5px;background:var(--ink);transition:.4s var(--ease)}
.nav-burger span:first-child{top:4px}.nav-burger span:last-child{bottom:4px}
body.menu-open .nav-burger span:first-child{top:10px;transform:rotate(45deg)}
body.menu-open .nav-burger span:last-child{bottom:10px;transform:rotate(-45deg)}

/* ============ BUTTONS ============ */
.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--sans);font-size:.9rem;font-weight:500;
  letter-spacing:.01em;padding:15px 30px;border-radius:100px;cursor:pointer;transition:transform .5s var(--ease),background .4s,color .4s,box-shadow .4s;will-change:transform}
.btn-gold{background:linear-gradient(135deg,var(--gold-bright),var(--gold-deep));color:#1a1206;
  box-shadow:0 10px 40px -12px rgba(217,184,115,.6)}
.btn-gold:hover{box-shadow:0 16px 50px -10px rgba(217,184,115,.8);transform:translateY(-2px)}
.btn-ghost{border:1px solid var(--line);color:var(--ink);background:rgba(244,239,230,.02)}
.btn-ghost:hover{border-color:var(--gold);background:rgba(217,184,115,.07)}
.btn-link{color:var(--muted);padding:15px 6px}
.btn-link:hover{color:var(--gold)}
.btn-link span{transition:transform .4s var(--ease);display:inline-block}
.btn-link:hover span{transform:translateX(5px)}
.nav-cta{padding:11px 22px;font-size:.82rem}
.menu-cta,.menu-foot{display:none}

/* ============ HERO ============ */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding:0 var(--gut);overflow:hidden;isolation:isolate}
.hero-video-wrap{position:absolute;inset:-12% 0 0;z-index:-1;will-change:transform}
.hero-video{width:100%;height:118%;object-fit:cover;opacity:.62;filter:contrast(1.05) saturate(1.05)}
.hero-vignette{position:absolute;inset:0;background:
  linear-gradient(90deg,rgba(10,9,8,.92) 0%,rgba(10,9,8,.6) 32%,transparent 58%),
  radial-gradient(120% 80% at 72% 32%,transparent 30%,var(--bg) 94%),
  linear-gradient(180deg,rgba(10,9,8,.5),transparent 28%,transparent 55%,var(--bg) 97%)}
.hero-inner{max-width:var(--maxw);margin:0 auto;width:100%}
.hero .eyebrow{display:block;margin-bottom:26px}
.hero-title{font-size:clamp(2.9rem,9vw,7.4rem);line-height:.98;margin-bottom:34px;font-weight:320}
.hero-title em{color:var(--gold);font-style:italic}
.hero-title .line{display:block;overflow:hidden}
.hero-title .line>span{display:block}
.hero-sub{font-size:clamp(1.05rem,1.9vw,1.4rem);color:var(--muted);max-width:40ch;margin-bottom:42px;font-weight:300}
.hero-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.scroll-cue{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;
  align-items:center;gap:12px;font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--muted-2)}
.scroll-cue-line{width:1px;height:50px;background:linear-gradient(var(--gold),transparent);animation:cueDrop 2.2s var(--ease) infinite}

/* ============ MANIFESTO ============ */
.manifesto{padding:clamp(120px,18vh,220px) var(--gut);max-width:1180px;margin:0 auto;position:relative;z-index:3}
.manifesto-text{font-family:var(--serif);font-weight:330;font-size:clamp(1.7rem,4.6vw,3.4rem);line-height:1.22;letter-spacing:-.015em}
.manifesto-text em{color:var(--gold)}

/* ============ SPLIT ============ */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,110px);align-items:center;
  max-width:var(--maxw);margin:0 auto;padding:clamp(70px,10vh,140px) var(--gut);position:relative;z-index:3}
.split-media{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4/5;box-shadow:0 50px 120px -50px rgba(0,0,0,.9)}
.media-video,.split-media img{width:100%;height:100%;object-fit:cover}
.media-frame{position:absolute;inset:0;border-radius:18px;border:1px solid var(--line);pointer-events:none;
  box-shadow:inset 0 0 80px rgba(0,0,0,.6)}
.split-copy h2{margin:18px 0 24px}
.ticks{list-style:none;margin-top:30px;display:grid;gap:15px}
.ticks li{padding-left:30px;position:relative;color:var(--muted);font-size:1.02rem}
.ticks li::before{content:"";position:absolute;left:0;top:.62em;width:12px;height:12px;border-radius:50%;
  border:1px solid var(--gold);box-shadow:0 0 10px rgba(217,184,115,.4)}
.ticks li::after{content:"";position:absolute;left:4px;top:calc(.62em + 4px);width:4px;height:4px;border-radius:50%;background:var(--gold)}

/* ============ STATS ============ */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(30px,5vw,70px);max-width:var(--maxw);
  margin:0 auto;padding:clamp(60px,9vh,120px) var(--gut);border-block:1px solid var(--line-soft);position:relative;z-index:3}
.stat{text-align:center}
.stat-num{font-family:var(--serif);font-size:clamp(3.4rem,9vw,6.2rem);font-weight:300;line-height:1;
  background:linear-gradient(180deg,var(--gold-bright),var(--gold-deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat-unit{font-family:var(--serif);font-size:clamp(1.6rem,4vw,2.6rem);color:var(--gold);margin-left:2px}
.stat p{color:var(--muted);font-size:.92rem;max-width:24ch;margin:14px auto 0}

/* ============ FEATURES ============ */
.features{max-width:var(--maxw);margin:0 auto;padding:clamp(80px,12vh,160px) var(--gut);position:relative;z-index:3}
.features-head{margin-bottom:clamp(46px,7vh,86px)}
.features-head h2{margin-top:18px}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.feature-card{padding:40px 34px 44px;border:1px solid var(--line-soft);border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,0));transition:transform .6s var(--ease),border-color .6s,background .6s;position:relative;overflow:hidden}
.feature-card::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 50% -10%,rgba(217,184,115,.10),transparent 60%);opacity:0;transition:opacity .6s}
.feature-card:hover{transform:translateY(-6px);border-color:var(--line);background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.01))}
.feature-card:hover::before{opacity:1}
.feature-card h3{margin:26px 0 14px}
.feature-card p{color:var(--muted);font-size:.98rem}
.feature-card em{color:var(--gold);font-style:italic}
.feature-glyph{width:52px;height:52px;border-radius:14px;border:1px solid var(--line);display:grid;place-items:center;
  background:rgba(217,184,115,.05);position:relative}
.feature-glyph::after{content:"";width:22px;height:22px}
.feature-glyph[data-glyph="pulse"]::after{border-radius:50%;border:2px solid var(--gold);box-shadow:0 0 0 0 rgba(217,184,115,.5);animation:ping 2.6s var(--ease) infinite}
.feature-glyph[data-glyph="moon"]::after{border-radius:50%;box-shadow:inset -7px -3px 0 0 var(--gold)}
.feature-glyph[data-glyph="book"]::after{border:2px solid var(--gold);border-radius:3px;border-left-width:5px}

/* ============ EXPERIENCE (full-bleed) ============ */
.experience{position:relative;min-height:108svh;display:flex;align-items:center;justify-content:center;
  text-align:center;overflow:hidden;isolation:isolate;z-index:3}
.experience-video{position:absolute;inset:-12% 0;z-index:-1;will-change:transform}
.bleed-video{width:100%;height:118%;object-fit:cover;opacity:.5}
.experience-tint{position:absolute;inset:0;background:
  radial-gradient(80% 60% at 50% 50%,transparent,var(--bg) 90%),
  linear-gradient(var(--bg),transparent 22%,transparent 78%,var(--bg))}
.experience-copy{padding:0 var(--gut);max-width:900px}
.experience-copy h2{font-size:clamp(2.2rem,6.5vw,5rem);margin-bottom:24px}
.experience-copy p{color:var(--muted);font-size:clamp(1rem,1.8vw,1.3rem);max-width:36ch;margin:0 auto}

/* ============ ECHO / THE DIALOGUE ============ */
.echo{max-width:var(--maxw);margin:0 auto;padding:clamp(90px,13vh,170px) var(--gut);position:relative;z-index:3}
.echo-head{max-width:640px;margin-bottom:clamp(50px,8vh,90px)}
.echo-head h2{margin:18px 0 24px}
.echo-steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  border-block:1px solid var(--line-soft)}
.echo-step{padding:clamp(36px,4.5vw,54px) clamp(24px,3vw,44px);position:relative}
.echo-step+.echo-step{border-left:1px solid var(--line-soft)}
.echo-num{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:50%;
  border:1px solid var(--line);font-family:var(--serif);font-style:italic;font-size:1.15rem;
  color:var(--gold);box-shadow:0 0 18px rgba(217,184,115,.18);margin-bottom:26px}
.echo-step h3{margin-bottom:14px}
.echo-step p{color:var(--muted);font-size:.99rem;line-height:1.65}
.echo-step p em{color:var(--gold);font-style:italic}
.echo-coda{font-family:var(--serif);font-weight:330;text-align:center;max-width:820px;
  margin:clamp(56px,9vh,100px) auto 0;font-size:clamp(1.5rem,3.6vw,2.6rem);line-height:1.3;letter-spacing:-.01em}
.echo-coda em{color:var(--gold)}

/* ============ OBJECT / SPECS ============ */
.object{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,100px);align-items:center;
  max-width:var(--maxw);margin:0 auto;padding:clamp(80px,12vh,160px) var(--gut);position:relative;z-index:3}
.object-copy h2{margin:18px 0 24px}
.specs{margin-top:40px;border-top:1px solid var(--line-soft)}
.specs>div{display:flex;justify-content:space-between;gap:20px;padding:17px 0;border-bottom:1px solid var(--line-soft)}
.specs dt{color:var(--muted-2);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase}
.specs dd{color:var(--ink);font-size:.98rem;text-align:right}
.object-media{position:relative;display:grid;place-items:center}
.object-media img{border-radius:18px;width:100%}
.object-halo{position:absolute;inset:6% 6%;border-radius:50%;z-index:-1;
  background:radial-gradient(circle,rgba(217,184,115,.22),transparent 62%);filter:blur(30px);animation:breathe 6s var(--ease) infinite}

/* ============ QUOTE ============ */
.quote{max-width:1080px;margin:0 auto;padding:clamp(80px,14vh,180px) var(--gut);text-align:center;position:relative;z-index:3}
.quote blockquote{font-family:var(--serif);font-weight:330;font-size:clamp(1.6rem,4.2vw,3.1rem);line-height:1.28;letter-spacing:-.01em}
.quote em{color:var(--gold)}
.quote-by{margin-top:34px;color:var(--muted-2);font-size:.9rem;letter-spacing:.04em}

/* ============ PRICING ============ */
.pricing{max-width:var(--maxw);margin:0 auto;padding:clamp(70px,10vh,140px) var(--gut);position:relative;z-index:3}
.pricing-head{text-align:center;max-width:620px;margin:0 auto clamp(46px,7vh,80px)}
.pricing-head h2{margin:18px 0 18px}
.pricing-head .lead{margin:0 auto}
.plans{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;max-width:880px;margin:0 auto}
.plan{padding:46px 40px;border:1px solid var(--line-soft);border-radius:22px;background:rgba(255,255,255,.02);position:relative;transition:transform .6s var(--ease),border-color .6s}
.plan:hover{transform:translateY(-6px)}
.plan-feature{border-color:var(--line);background:linear-gradient(180deg,rgba(217,184,115,.07),rgba(217,184,115,.01));
  box-shadow:0 40px 110px -50px rgba(217,184,115,.4)}
.plan-tag{position:absolute;top:-13px;left:40px;background:linear-gradient(135deg,var(--gold-bright),var(--gold-deep));
  color:#1a1206;font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:6px 14px;border-radius:100px}
.plan h3{margin-bottom:14px}
.plan-price{font-family:var(--serif);font-size:clamp(2.8rem,6vw,3.8rem);font-weight:300;line-height:1;color:var(--ink)}
.plan-price span{font-size:.5em;vertical-align:super;color:var(--gold)}
.plan-price small{font-size:.28em;color:var(--muted);font-family:var(--sans);margin-left:8px;letter-spacing:.02em}
.plan-note{color:var(--muted-2);font-size:.86rem;margin:8px 0 26px}
.plan ul{list-style:none;display:grid;gap:13px;margin-bottom:34px}
.plan li{color:var(--muted);font-size:.96rem;padding-left:26px;position:relative}
.plan li::before{content:"";position:absolute;left:0;top:.55em;width:13px;height:8px;border-left:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold);transform:rotate(-45deg)}
.plan .btn{width:100%;justify-content:center}

/* ============ FAQ ============ */
.faq{max-width:880px;margin:0 auto;padding:clamp(60px,9vh,120px) var(--gut);position:relative;z-index:3}
.faq h2{text-align:center;margin-bottom:clamp(34px,5vh,60px)}
.faq-item{border-bottom:1px solid var(--line-soft)}
.faq-item summary{list-style:none;cursor:pointer;padding:26px 0;display:flex;justify-content:space-between;align-items:center;gap:24px;
  font-family:var(--serif);font-size:clamp(1.1rem,2.2vw,1.5rem);font-weight:360;transition:color .3s}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{color:var(--gold)}
.faq-plus{position:relative;width:18px;height:18px;flex:none}
.faq-plus::before,.faq-plus::after{content:"";position:absolute;background:var(--gold);transition:transform .4s var(--ease);top:50%;left:50%}
.faq-plus::before{width:18px;height:1.5px;transform:translate(-50%,-50%)}
.faq-plus::after{width:1.5px;height:18px;transform:translate(-50%,-50%)}
.faq-item[open] .faq-plus::after{transform:translate(-50%,-50%) scaleY(0)}
.faq-item p{color:var(--muted);padding:0 40px 28px 0;font-size:1rem;max-width:62ch}

/* ============ PRE-RELEASE WAITLIST ============ */
.waitlist{position:relative;z-index:3;padding:clamp(80px,12vh,160px) var(--gut);overflow:hidden;
  background:radial-gradient(90% 120% at 50% 115%,rgba(217,184,115,.10),transparent 60%),var(--bg-3);
  border-top:1px solid var(--line-soft)}
.waitlist-inner{max-width:720px;margin:0 auto;text-align:center}
.waitlist h2{font-size:clamp(2.2rem,6vw,4.4rem);margin:18px 0 22px}
.waitlist .lead{color:var(--muted);max-width:52ch;margin:0 auto 40px}
.waitlist-form{display:flex;gap:12px;max-width:520px;margin:0 auto;
  padding:6px;border-radius:100px;border:1px solid var(--line);background:rgba(10,9,8,.55);
  backdrop-filter:blur(8px);transition:border-color .4s,box-shadow .4s}
.waitlist-form:focus-within{border-color:var(--gold);box-shadow:0 0 0 4px rgba(217,184,115,.08),0 18px 60px -20px rgba(217,184,115,.35)}
.waitlist-form input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--ink);
  font-family:var(--sans);font-size:.95rem;padding:12px 10px 12px 22px}
.waitlist-form input::placeholder{color:var(--muted-2)}
.waitlist-form .btn{padding:13px 30px;flex:none}
.waitlist-note{margin-top:18px;color:var(--muted-2);font-size:.82rem;min-height:1.2em;transition:color .4s}
.waitlist-note.ok{color:var(--gold)}
.waitlist-note.err{color:#d98a73}
.waitlist.joined .waitlist-form{border-color:var(--gold);pointer-events:none;opacity:.55}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media (max-width:560px){
  /* The cue is absolutely positioned 34px off the hero's bottom and collides
     with the last hero action on a phone — measured overlapping at 375x812.
     A scroll hint is redundant on a touch device anyway; it was already
     aria-hidden, so nothing is lost. */
  .scroll-cue{display:none}
  .waitlist-form{flex-direction:column;border-radius:26px;padding:10px}
  .waitlist-form input{padding:14px 16px;text-align:center}
  .waitlist-form .btn{width:100%;justify-content:center}
}

/* ============ FOOTER ============ */
.footer{position:relative;z-index:3;border-top:1px solid var(--line-soft);background:var(--bg-2)}
.footer-cta{text-align:center;padding:clamp(90px,16vh,200px) var(--gut) clamp(70px,11vh,140px)}
.footer-cta h2{font-size:clamp(2.4rem,7vw,5.4rem);margin-bottom:38px}
.footer-meta{max-width:var(--maxw);margin:0 auto;padding:40px var(--gut);display:flex;flex-wrap:wrap;gap:20px 40px;
  align-items:center;justify-content:space-between;border-top:1px solid var(--line-soft)}
.footer-meta .brand-word{font-size:1rem}
.footer-meta nav{display:flex;gap:26px;flex-wrap:wrap}
.footer-meta nav a{color:var(--muted);font-size:.86rem;transition:color .3s}
.footer-meta nav a:hover{color:var(--gold)}
.footer-meta p{color:var(--muted-2);font-size:.8rem}

/* ============ REVEAL ANIMATIONS ============ */
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}
.hero-title .line>span{transform:translateY(110%);transition:transform 1.1s var(--ease);display:block}
.hero-title .line.in>span,.line.in>span{transform:none}
.reveal-burst{opacity:0;transform:scale(.92) translateY(40px);filter:blur(14px);
  transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease)}
.reveal-burst.in{opacity:1;transform:none;filter:blur(0)}
/* word-by-word: clean upward rise + soft focus-in, no tilt */
.reveal-words .word{display:inline-block;opacity:0;transform:translateY(.6em) scale(.97);filter:blur(9px);
  transition:opacity .82s var(--ease),transform .9s var(--ease),filter .82s var(--ease);
  will-change:transform,filter,opacity}
.reveal-words.in .word{opacity:1;transform:none;filter:blur(0)}

/* ============ KEYFRAMES ============ */
@keyframes nodePulse{0%,100%{opacity:.5;transform:scale(.82)}50%{opacity:1;transform:scale(1.18)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes breathe{0%,100%{opacity:.7;transform:scale(.96)}50%{opacity:1;transform:scale(1.06)}}
@keyframes cueDrop{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(217,184,115,.5)}70%,100%{box-shadow:0 0 0 12px rgba(217,184,115,0)}}

/* ============ RESPONSIVE ============ */
@media (max-width:900px){
  .nav-cta{display:none}
  .nav-burger{display:block;z-index:2}
  .nav{padding:max(18px,calc(10px + env(safe-area-inset-top))) var(--gut) 18px}
  .nav.scrolled{padding:max(14px,calc(6px + env(safe-area-inset-top))) var(--gut) 14px}
  .nav.menu-active{background:transparent;backdrop-filter:none;border-bottom-color:transparent}

  /* ---- full-screen mobile menu (always present, toggled by opacity) ---- */
  .nav-links{position:fixed;inset:0;flex-direction:column;justify-content:flex-start;gap:0;
    padding:max(94px,13vh)
            max(clamp(26px,7vw,46px),env(safe-area-inset-right,0px))
            calc(40px + env(safe-area-inset-bottom))
            max(clamp(26px,7vw,46px),env(safe-area-inset-left,0px));
    background:radial-gradient(130% 55% at 50% 0%,rgba(217,184,115,.12),transparent 62%),var(--bg);
    z-index:40;overflow-y:auto;opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .45s var(--ease),visibility .45s}
  .nav-links.open{opacity:1;visibility:visible;pointer-events:auto}
  /* Centre with auto margins, never justify-content. The menu is ~640px tall and
     an iPhone in landscape gives this panel 375-430px; centring a box taller than
     its scroll container puts the first link above scrollTop:0, where it cannot be
     reached — measured at -80px of a 101px link on a 844x390 viewport, and it took
     the bottom safe-area padding with it. Auto margins collapse to zero when free
     space is negative, so tall viewports still centre exactly. */
  .nav-links>a:first-of-type{margin-top:auto}
  .nav-links .menu-foot{margin-bottom:auto}
  .nav-links a:not(.menu-cta){font-family:var(--serif);font-size:clamp(1.7rem,7vw,2.2rem);font-weight:340;
    color:var(--ink);padding:22px 34px 22px 2px;border-bottom:1px solid var(--line-soft);
    display:block;position:relative;
    opacity:0;transform:translateY(18px);transition:opacity .55s var(--ease),transform .55s var(--ease)}
  .nav-links a:not(.menu-cta)::after{content:"→";position:absolute;right:2px;left:auto;bottom:auto;top:50%;
    width:auto;height:auto;background:none;transform:translateY(-50%);
    font-family:var(--sans);font-size:1.15rem;color:var(--gold);
    opacity:.5;transition:transform .4s var(--ease),opacity .3s}
  .nav-links a:not(.menu-cta):active>span{color:var(--gold)}
  .nav-links a:not(.menu-cta):active::after{transform:translateY(-50%) translateX(6px);opacity:1}
  .nav-links .menu-cta{display:inline-flex;justify-content:center;width:100%;margin-top:30px;
    font-size:1rem;padding:18px 30px;opacity:0;transform:translateY(18px);
    transition:opacity .55s var(--ease),transform .55s var(--ease),box-shadow .4s}
  .nav-links .menu-foot{display:block;text-align:center;color:var(--muted-2);font-size:.8rem;
    letter-spacing:.04em;margin-top:22px;opacity:0;transition:opacity .55s var(--ease)}
  /* staggered reveal once the menu is open */
  body.menu-open .nav-links a:not(.menu-cta),
  body.menu-open .nav-links .menu-cta{opacity:1;transform:none}
  body.menu-open .nav-links .menu-foot{opacity:1}
  body.menu-open .nav-links a:nth-of-type(1){transition-delay:.10s}
  body.menu-open .nav-links a:nth-of-type(2){transition-delay:.16s}
  body.menu-open .nav-links a:nth-of-type(3){transition-delay:.22s}
  body.menu-open .nav-links a:nth-of-type(4){transition-delay:.28s}
  body.menu-open .nav-links a:nth-of-type(5){transition-delay:.34s}
  body.menu-open .nav-links a:nth-of-type(6){transition-delay:.40s}
  body.menu-open .nav-links .menu-cta{transition-delay:.36s}
  body.menu-open .nav-links .menu-foot{transition-delay:.44s}

  .split,.object{grid-template-columns:1fr;gap:44px}
  .object-media{order:-1}
  .echo-steps{grid-template-columns:1fr}
  .echo-step+.echo-step{border-left:0;border-top:1px solid var(--line-soft)}
  .feature-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr;gap:50px}
  .plans{grid-template-columns:1fr;max-width:480px}
  .cursor-glow{display:none}
  .split-media{aspect-ratio:1/1}
  /* mobile hero: more breathing room between the fixed logo and the headline */
  .hero{padding-top:clamp(64px,9vh,104px)}
  /* mobile hero: full-width copy needs a vertical scrim, not the desktop left-bias */
  .hero-video{opacity:.42}
  .hero-vignette{background:
    linear-gradient(180deg,rgba(10,9,8,.72) 0%,rgba(10,9,8,.35) 22%,rgba(10,9,8,.55) 52%,var(--bg) 96%),
    radial-gradient(140% 70% at 50% 40%,transparent 40%,rgba(10,9,8,.7) 100%)}
}
@media (max-width:520px){
  .footer-meta{flex-direction:column;align-items:flex-start;text-align:left}
  .hero-actions{flex-direction:column;align-items:stretch}
  .hero-actions .btn{justify-content:center}
  .hero-title{font-size:clamp(2.9rem,13.5vw,4rem)}
  /* tighter vertical rhythm on phones */
  .manifesto{padding:clamp(90px,12vh,140px) var(--gut)}
  .split,.object{padding:60px var(--gut)}
  .echo{padding:70px var(--gut)}
  .features,.pricing{padding:64px var(--gut)}
  .stats{padding:56px var(--gut)}
  .quote{padding:80px var(--gut)}
  .feature-card{padding:32px 26px 34px}
  .plan{padding:38px 28px}
  .footer-cta{padding:90px var(--gut) 70px}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;transition-duration:.001ms!important}
  .reveal,.reveal-burst,.reveal-words .word,.hero-title .line>span{opacity:1;transform:none;filter:none}
  html{scroll-behavior:auto}
}