/* Pop Dot — brand site tokens */
:root{
  --pink:#EE5FA7; --pink-deep:#D84893;
  --ink:#2B2733; --ink-soft:#3A3542;
  --cream:#FAF6EF; --board:#FBF5EA;
  --s00:#F3EDE0; --s01:#EBCBAA; --s02:#D9A87E; --s03:#B97F55; --s04:#6E4227;

  --display:"Fredoka", system-ui, sans-serif;
  --text:"Space Grotesk", system-ui, sans-serif;

  --t-cap: clamp(12px, .78vw + 9px, 14px);
  --t-label: clamp(14px, .9vw + 10px, 17px);
  --t-body: clamp(17px, 1vw + 12px, 20px);
  --t-lede: clamp(20px, 1.3vw + 14px, 28px);
  --t-h3: clamp(28px, 2.4vw + 16px, 48px);
  --t-h2: clamp(42px, 5vw + 12px, 96px);
  --t-hero: clamp(48px, 7vw + 10px, 136px);
  --t-tag: clamp(52px, 8.5vw + 10px, 168px);

  --gutter: clamp(20px, 5vw, 80px);
  --ease: cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--text);font-size:var(--t-body);line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,p{margin:0}
.pink{color:var(--pink)}

/* type roles */
.h-hero{font-family:var(--display);font-weight:700;font-size:var(--t-hero);line-height:.94;letter-spacing:-.02em}
.h-big{font-family:var(--display);font-weight:700;font-size:var(--t-h2);line-height:.98;letter-spacing:-.02em}
.h-tag{font-family:var(--display);font-weight:700;font-size:var(--t-tag);line-height:.92;letter-spacing:-.025em}
.eyebrow{font-family:var(--text);font-weight:700;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--pink);margin-bottom:1.2rem}

/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:14px var(--gutter);mix-blend-mode:normal;transition:background .4s var(--ease),backdrop-filter .4s}
.nav.solid{background:rgba(43,39,51,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px}
.wordmark{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.01em;color:var(--cream)}
.nav-links{display:flex;align-items:center;gap:clamp(14px,2vw,28px);font-size:var(--t-label);font-weight:500}
.nav-links a{opacity:.85;transition:opacity .2s}
.nav-links a:hover{opacity:1}
.btn{display:inline-flex;align-items:center;gap:.5em;font-family:var(--display);font-weight:600;background:var(--pink);color:var(--cream);border-radius:999px;padding:.72em 1.35em;line-height:1;transition:transform .25s var(--ease),background .25s}
.btn:hover{transform:translateY(-2px);background:var(--pink-deep)}
.btn-nav{font-size:15px;padding:.6em 1.1em;opacity:1!important}

/* ============ BEAT 1 — HERO ============ */
.hero{position:relative;height:100vh;height:100svh;overflow:hidden;background:var(--ink)}
.hero-stage{position:absolute;inset:0}
.photo{position:absolute;left:50%;top:50%;will-change:transform}
.photo img{width:100%;height:100%;object-fit:fill}
.shade{position:absolute;inset:0;background:rgba(43,39,51,.78);opacity:0;
  --cx:57.8%;--cy:43.5%;--r:2000px;
  -webkit-mask-image:radial-gradient(circle at var(--cx) var(--cy),transparent 0,transparent var(--r),#000 calc(var(--r) + 90px));
  mask-image:radial-gradient(circle at var(--cx) var(--cy),transparent 0,transparent var(--r),#000 calc(var(--r) + 90px));
  pointer-events:none}
.ring{position:absolute;left:57.8%;top:43.5%;width:14.2%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}
.ring svg{width:100%;height:100%;overflow:visible;transform:rotate(-90deg)}
.ring circle{fill:none;stroke:var(--pink);stroke-width:1.7;stroke-linecap:butt;stroke-dasharray:289.03;stroke-dashoffset:289.03}
.tag{position:absolute;left:104%;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.5em;white-space:nowrap;opacity:0}
.tag-num{font-family:var(--display);font-weight:700;font-size:clamp(28px,3vw,44px);color:var(--pink);background:var(--cream);border-radius:999px;padding:.05em .45em;line-height:1.1}
.tag-txt{font-family:var(--display);font-weight:600;font-size:clamp(20px,2.2vw,32px);color:var(--cream);text-shadow:0 2px 24px rgba(43,39,51,.5)}
@media (max-width:767px){.tag{left:50%;top:112%;transform:translateX(-50%)}br.d{display:none}}

.hero-copy{position:absolute;left:var(--gutter);bottom:clamp(56px,9vh,110px);right:var(--gutter);max-width:1100px;display:grid}
.hero-block{grid-area:1/1;align-self:end;display:flex;flex-direction:column;gap:clamp(14px,1.6vw,24px)}
.hero-block .h-hero{color:var(--cream);text-shadow:0 2px 40px rgba(43,39,51,.45);font-size:var(--t-tag)}
.hero-sub{font-size:var(--t-lede);max-width:38ch;color:var(--cream);text-shadow:0 1px 20px rgba(43,39,51,.5)}
#heroBlock2{opacity:0}
@media (max-width:767px){.dx{display:none}.hero-copy{bottom:clamp(96px,15vh,150px)}.hero-sub{font-size:var(--t-body);max-width:30ch}}
.cue{position:absolute;right:var(--gutter);bottom:28px;display:flex;align-items:center;gap:.5em;font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--cream);opacity:.9}
.cue svg{animation:bob 1.6s var(--ease) infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

/* ============ FULL-BLEED CHAPTERS (2, 3, 4) — photo fills the screen, copy sits on a scrim ============ */
.problem,.apply,.shades{position:relative;height:100vh;height:100svh;overflow:hidden;background:var(--ink)}
.problem-stage,.apply-stage,.shades-stage{position:absolute;inset:0}
.panel{position:absolute;inset:0;overflow:hidden;background:var(--ink-soft)}
.panel::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(43,39,51,.92) 0%,rgba(43,39,51,.74) 26%,rgba(43,39,51,.2) 48%,rgba(43,39,51,0) 62%)}
.problem{--sc:43,39,51}
.problem[data-beat="2"]{--sc:64,30,16}
.problem[data-beat="3"]{--sc:43,39,51}
.problem .panel::after{background:linear-gradient(90deg,rgba(var(--sc),.94) 0%,rgba(var(--sc),.76) 26%,rgba(var(--sc),.22) 48%,rgba(var(--sc),0) 62%)}
.copy-right .panel::after{background:linear-gradient(270deg,rgba(43,39,51,.92) 0%,rgba(43,39,51,.72) 30%,rgba(43,39,51,.18) 56%,rgba(43,39,51,0) 70%)}
.pimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 46%;opacity:0}
#probGray{opacity:1}
.carton-card{display:grid;place-items:center;background:var(--pink)}
.carton-card img{width:min(58%,420px);height:auto;filter:drop-shadow(0 30px 50px rgba(43,39,51,.35))}
.flash{position:absolute;inset:0;background:var(--pink);opacity:0;pointer-events:none;z-index:3}
.problem-copy,.apply-copy,.shades-copy{position:absolute;inset:0;z-index:2;padding:0 var(--gutter);display:flex;flex-direction:column;justify-content:center;width:min(56%,800px)}
.shades-copy,.copy-right .apply-copy{width:min(46%,640px)}
.copy-right .problem-copy,.copy-right .apply-copy,.copy-right .shades-copy{left:auto;right:0;align-items:flex-start}
.eyes{display:grid}.eyes .eyebrow{grid-area:1/1}#probEye2{opacity:0}
.stack{display:grid}
.stack .h-big{grid-area:1/1;align-self:start;max-width:13ch;text-shadow:0 2px 30px rgba(43,39,51,.5)}
.sweep .w{display:inline-block;opacity:.18;transition:none;margin-right:.24em}
/* word beats: each segment is its own line and slams in on scroll */
.beats .b{display:block;opacity:0;will-change:transform}
.problem .stack .h-big.beats{font-size:clamp(40px,5.2vw + 10px,96px);line-height:.9;max-width:none}
@media (max-width:767px){.problem .stack .h-big.beats{font-size:clamp(46px,13vw,68px)}}
@media (min-width:768px){
  .problem img.pimg,.shades img.pimg{width:114%;left:0;right:auto}   /* nudge the subject right, out from under the copy */
  #probGray{width:148%}
  .carton-card{grid-template-columns:1fr 1fr}
  .copy-right .carton-card img{grid-column:1}
  .carton-card img{grid-column:2;width:min(64%,460px)}
}
@media (max-width:767px){
  .panel::after,.copy-right .panel::after{background:linear-gradient(180deg,rgba(43,39,51,0) 30%,rgba(43,39,51,.88) 75%)}
  .problem .panel::after{background:linear-gradient(180deg,rgba(var(--sc),0) 30%,rgba(var(--sc),.9) 75%)}
  .problem-copy,.apply-copy,.shades-copy,.copy-right .problem-copy,.copy-right .apply-copy,.copy-right .shades-copy{width:auto;left:0;right:0;justify-content:flex-end;padding-bottom:12vh}
  .stack .h-big{max-width:11ch}
  .carton-card{place-items:start center;padding-top:14vh}
  .carton-card img{width:min(58%,320px)}
}

/* ============ CALM CLOSE ============ */
.close{background:var(--cream);color:var(--ink);padding:clamp(96px,14vh,180px) var(--gutter) 40px;display:flex;flex-direction:column;gap:clamp(40px,6vh,80px)}
.close .h-tag{max-width:12ch}
.close-row{display:flex;flex-wrap:wrap;gap:clamp(18px,3vw,40px);font-size:var(--t-label);font-weight:500;border-top:1px solid rgba(43,39,51,.15);padding-top:24px}
.close-row a{color:var(--pink);font-weight:700}
.fine{font-size:var(--t-cap);opacity:.6;max-width:60ch}


/* ============ BEAT 3 — APPLY (scrubbed film) ============ */
.apply-copy .h-big{opacity:0}
#apL1{opacity:1}
.scrub-cue{margin-top:clamp(20px,3vh,36px);font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;font-weight:700;opacity:.55}
.film{background:#1d1a22 url(/assets/apply-poster-wide.webp) center/cover no-repeat}
@media (max-width:767px){.film{background-image:url(/assets/apply-poster.webp)}}
.film canvas{position:absolute;inset:0;width:100%;height:100%}
.film::after{background:linear-gradient(270deg,rgba(43,39,51,.9) 0%,rgba(43,39,51,.62) 30%,rgba(43,39,51,.1) 56%,rgba(43,39,51,0) 70%)}
@media (max-width:767px){.film::after{background:linear-gradient(180deg,rgba(43,39,51,0) 35%,rgba(43,39,51,.9) 78%)}}

/* ============ BEAT 4 — SHADE SLABS: each shade owns the whole screen in its own color ============ */
.shades{--slab:var(--s01);--on:var(--ink);background:var(--slab)}
.shades[data-slab="02"]{--slab:var(--s02);--on:var(--ink)}
.shades[data-slab="03"]{--slab:var(--s03);--on:var(--cream)}
.shades[data-slab="04"]{--slab:var(--s04);--on:var(--cream)}
.shades .eyebrow{color:var(--on);opacity:.8}
.shades .panel{inset:auto;right:var(--gutter);top:50%;height:min(78vh,880px);aspect-ratio:864/1820;width:auto;border-radius:clamp(18px,2vw,30px);
  background:var(--ink-soft);box-shadow:0 40px 90px rgba(43,39,51,.32);transform:translateY(-50%) rotate(-3deg);transition:transform .5s var(--ease)}
.shades[data-slab="02"] .panel{transform:translateY(-50%) rotate(2.5deg)}
.shades[data-slab="03"] .panel{transform:translateY(-50%) rotate(-2deg)}
.shades[data-slab="04"] .panel{transform:translateY(-50%) rotate(3deg)}
.shades .panel::after{display:none}
.shades .panel img.pimg{width:100%;left:0;object-position:50% 40%}
.shades .flash{background:var(--cream)}
.num-stack,.name-stack{display:grid}
.num{grid-area:1/1;font-family:var(--display);font-weight:700;font-size:clamp(150px,24vw,400px);line-height:.85;letter-spacing:-.05em;color:var(--cream);opacity:0;text-shadow:0 6px 40px rgba(43,39,51,.22)}
#num01{opacity:1}
.shade-meta{grid-area:1/1;opacity:0;margin-top:.5em;color:var(--on)}
#name01{opacity:1}
.shade-name{font-family:var(--display);font-weight:600;font-size:var(--t-h3);line-height:1.05}
.shade-line{font-size:var(--t-lede);opacity:.82;margin-top:.35em;max-width:22ch}
.chips{display:flex;gap:10px;margin-top:clamp(20px,3vh,40px)}
.chip{width:26px;height:26px;border-radius:50%;background:var(--c);opacity:.35;transition:opacity .3s,transform .3s;box-shadow:0 0 0 2px rgba(250,246,239,.7)}
.chip.on{opacity:1;transform:scale(1.25);box-shadow:0 0 0 3px var(--slab),0 0 0 5px var(--on)}
@media (max-width:767px){
  .num{font-size:clamp(120px,34vw,180px)}
  .shades .panel{right:5vw;top:9vh;height:38vh;transform:rotate(-3deg)}
  .shades[data-slab="02"] .panel{transform:rotate(2.5deg)}
  .shades[data-slab="03"] .panel{transform:rotate(-2deg)}
  .shades[data-slab="04"] .panel{transform:rotate(3deg)}
  .shade-line{font-size:var(--t-body)}
}

/* ============ SLAB BREAKS — full-screen color punctuation between chapters ============ */
.slab-break{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(24px,4vh,48px);padding:0 var(--gutter);text-align:center;overflow:hidden}
.pinkslab{background:var(--pink);color:var(--cream)}
.inkslab{background:var(--ink);color:var(--cream)}
.slab-word{font-family:var(--display);font-weight:700;font-size:var(--t-tag);line-height:.9;letter-spacing:-.03em;will-change:transform}
.slab-dots{display:flex;gap:clamp(14px,2vw,28px)}
.slab-dots i{width:clamp(44px,7vw,110px);height:clamp(44px,7vw,110px);border-radius:50%;background:var(--c);box-shadow:0 20px 50px rgba(0,0,0,.35)}

/* ============ BEAT 5 — CARTON LINEUP ============ */
.lineup{position:relative;height:100vh;height:100svh;overflow:hidden;background:var(--pink);color:var(--cream)}
.lineup-stage{position:absolute;inset:0}
.stripes{position:absolute;left:0;right:0;bottom:0;height:58%;display:grid;grid-template-columns:repeat(5,1fr)}
.stripes i{background:var(--c);will-change:transform}
.lineup-copy{position:absolute;left:var(--gutter);right:var(--gutter);top:clamp(96px,14vh,160px);display:flex;flex-direction:column;gap:14px}
.lineup-copy .h-big{max-width:16ch}
.lineup-sub{font-size:var(--t-label);font-weight:500;opacity:.9}
.cartons{position:absolute;left:0;right:0;bottom:clamp(40px,7vh,90px);z-index:2;display:flex;justify-content:center;align-items:flex-end;gap:clamp(8px,1.6vw,28px);padding:0 var(--gutter)}
.ct{width:min(17vw,calc(min(52vh,560px)*.69));height:auto;filter:drop-shadow(0 30px 40px rgba(43,39,51,.35));will-change:transform}
@media (max-width:767px){
  .lineup-copy{top:clamp(80px,12vh,120px)}
  .cartons{gap:0;padding:0 8px}
  .ct{width:24vw;margin:0 -2vw}
}

/* ============ BEAT 6 — HOW IT WORKS ============ */
.how{background:var(--cream);color:var(--ink);padding:clamp(96px,14vh,180px) var(--gutter)}
.eyebrow.ink,.h-big.ink{color:var(--ink)}
.how .eyebrow{color:var(--pink)}
.how .h-big{max-width:14ch;margin-bottom:clamp(40px,6vh,80px)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,48px)}
.step{display:flex;flex-direction:column;gap:12px}
.step img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:24px;background:var(--pink)}
.step-n{font-family:var(--display);font-weight:700;font-size:var(--t-h3);color:var(--pink);margin-top:10px;line-height:1}
.step h3{font-family:var(--display);font-weight:600;font-size:var(--t-lede)}
.step p{font-size:var(--t-body);opacity:.8;max-width:34ch}
@media (max-width:767px){.steps{grid-template-columns:1fr;gap:48px}}

/* ============ TICKER — slanted pink strip between the cream sections ============ */
.marquee{background:var(--cream);padding:clamp(24px,4vh,56px) 0;overflow:hidden}
.marquee.on-ink{background:var(--ink)}
.strip{background:var(--pink);color:var(--cream);padding:clamp(18px,2.4vh,30px) 0;white-space:nowrap;overflow:hidden;transform:rotate(-2.2deg) scale(1.06)}
.track{display:inline-flex;align-items:center;gap:clamp(22px,3vw,44px);font-family:var(--display);font-weight:700;font-size:var(--t-h3);will-change:transform}
.track i{width:14px;height:14px;border-radius:50%;background:var(--cream);flex:none}

/* ============ CLOSE — one bold line ============ */
.close-line{max-width:none!important}
.close-drop{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:clamp(20px,3vw,48px)}
.close-drop .drop-line{font-size:var(--t-lede);max-width:34ch;display:flex;flex-direction:column;gap:.5em}
.close-drop .eyebrow{margin:0}
.btn-lg{font-size:var(--t-label);padding:.9em 1.5em;align-self:flex-start}
@media (max-width:767px){.close-drop{flex-direction:column;align-items:flex-start}}

@media (prefers-reduced-motion: reduce){
  .cue svg{animation:none}
}
