@font-face{font-family:Poppins;font-weight:300;font-display:swap;src:url(assets/poppins-300.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:400;font-display:swap;src:url(assets/poppins-400.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:500;font-display:swap;src:url(assets/poppins-500.woff2) format("woff2")}
@font-face{font-family:Poppins;font-weight:600;font-display:swap;src:url(assets/poppins-600.woff2) format("woff2")}
:root{
  --bg:#002526; --bg2:#002e2e; --cream:#F3E9DC; --muted:#A8C4BF;
  --mint:#5FE3C0; --gold:#F2B35A; --line:rgba(243,233,220,.14);
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  min-height:100dvh;
  background:radial-gradient(120% 70% at 50% 58%, var(--bg2) 0%, var(--bg) 62%) fixed, var(--bg);
  color:var(--cream);
  font-family:Poppins,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  overflow-x:hidden;
}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.name{color:var(--gold);font-weight:600}
em{font-style:normal;color:var(--mint)}
#sparks{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}

/* sound */
.sound{position:fixed;top:max(14px,env(safe-area-inset-top));right:14px;z-index:20;width:44px;height:44px;
  border-radius:50%;border:1px solid var(--line);background:rgba(0,37,38,.55);color:var(--cream);
  display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(6px)}
.sound svg{width:20px;height:20px;fill:currentColor;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.sound .off{display:none}
.sound[aria-pressed="false"] .on{display:none}
.sound[aria-pressed="false"] .off{display:block}
:focus-visible{outline:2px solid var(--mint);outline-offset:3px}

/* ================= STORY ================= */
.story{position:fixed;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;
  padding:max(18px,env(safe-area-inset-top)) 20px max(22px,env(safe-area-inset-bottom));
  transition:opacity .9s ease}
.story.gone{opacity:0;pointer-events:none}
.top{width:100%;max-width:480px;display:flex;align-items:center;justify-content:space-between;min-height:44px;padding-right:56px}
.logo{width:118px;height:auto;display:block;opacity:.95}
.dots{display:flex;gap:8px;list-style:none;margin:0;padding:0}
.dots li{width:22px;height:4px;border-radius:2px;background:rgba(243,233,220,.18);transition:background .5s}
.dots li.done{background:var(--mint)}

.captions{position:relative;z-index:3;width:100%;max-width:480px;height:132px;margin-top:22px;text-align:center}
.cap{position:absolute;inset:0;opacity:0;transform:translateY(12px);transition:opacity .7s ease, transform .9s var(--ease);pointer-events:none}
.cap.on{opacity:1;transform:none;transition-delay:.25s}
.eyebrow{margin:0 0 10px;font-size:13px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.eyebrow .name{letter-spacing:.08em}
.title{margin:0;font-size:clamp(25px,7.4vw,34px);line-height:1.18;font-weight:500;letter-spacing:-.02em}

.scene{position:relative;flex:1;width:100%;max-width:560px;min-height:240px}
.glow{position:absolute;left:50%;top:48%;width:150%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle, rgba(247,165,49,.22), rgba(247,165,49,0) 58%);opacity:0;transition:opacity 1.6s ease}
body.s1 .glow{opacity:1}
body.holo-on .glow{background:radial-gradient(circle at 40% 50%, rgba(247,165,49,.2), rgba(247,165,49,0) 45%),radial-gradient(circle at 64% 50%, rgba(95,227,192,.16), rgba(95,227,192,0) 42%)}

/* diyas */
.diyas{--shift:21%;position:absolute;left:50%;top:46%;width:min(108vw,640px);aspect-ratio:941/460;
  transform:translate(calc(-50% + var(--shift)),-50%);transition:transform 1.4s var(--ease) .5s}
body.s1 .diyas{--shift:0%}
.diyas img{position:absolute;inset:0;width:100%;height:100%;display:block}
.d-real{opacity:0;filter:brightness(1.6) saturate(1.2);transition:opacity .9s ease, filter 1.6s ease}
body.s1 .d-real{opacity:1;filter:none}
body.s1 .d-unlit{opacity:0;transition:opacity 1.2s ease .2s}
.d-holo{opacity:0;clip-path:inset(100% 0 0 0)}
body.holo-on .d-holo{animation:scan 1.6s cubic-bezier(.3,.7,.2,1) forwards, flicker 1.6s steps(1) forwards}
body.holo-done .d-holo{opacity:1;clip-path:none;animation:breathe 4s ease-in-out infinite}
@keyframes scan{to{clip-path:inset(0 0 0 0)}}
@keyframes flicker{0%{opacity:.15}10%{opacity:.8}14%{opacity:.25}22%{opacity:1}30%{opacity:.55}36%{opacity:1}100%{opacity:1}}
@keyframes breathe{0%,100%{filter:brightness(1)}50%{filter:brightness(1.2) saturate(1.1)}}

.ember{position:absolute;left:39.2%;top:35%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  background:radial-gradient(circle,#FFE6A6 0%,#F7A531 45%,rgba(247,165,49,0) 70%);
  box-shadow:0 0 18px 6px rgba(247,140,40,.35);animation:ember 1.6s ease-in-out infinite}
body.s1 .ember{opacity:0;animation:none;transition:opacity .3s}
@keyframes ember{0%,100%{transform:scale(.8);opacity:.7}50%{transform:scale(1.25);opacity:1}}
.flare{position:absolute;left:39.2%;top:24%;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,236,180,.95),rgba(247,165,49,.5) 35%,rgba(247,165,49,0) 70%);opacity:0;pointer-events:none}
body.s1 .flare{animation:flare 1.4s ease-out forwards}
@keyframes flare{0%{opacity:0;transform:scale(.2)}18%{opacity:1;transform:scale(2.2)}100%{opacity:0;transform:scale(5)}}

/* rangoli — a floor pattern in front of the diyas */
.rangoli{position:absolute;left:50%;top:82%;width:80%;z-index:2;aspect-ratio:1;transform:translate(-50%,-50%) scaleY(.34);
  overflow:visible;mix-blend-mode:screen;opacity:0;transition:opacity .4s}
body.s2 .rangoli{opacity:1}
.rangoli path,.rangoli .c1,.rangoli .c2,.rangoli .ring{fill-opacity:0;stroke-width:3.2;stroke-dasharray:1;stroke-dashoffset:1;stroke-linejoin:round}
.rangoli .c3,.rangoli .dots-ring circle{opacity:0;transform-box:fill-box;transform-origin:center}
.rg-hand{stroke:#FFC86B}
.rg-hand .p-outer path:nth-child(odd){fill:#E8487F}
.rg-hand .p-outer path:nth-child(even){fill:#F28C28}
.rg-hand .p-inner path{fill:#F5C342}
.rg-hand .c1{fill:#F5C342}
.rg-hand .c2{fill:#E8487F}
.rg-hand .c3{fill:#3FA27C}
.rg-hand .dots-ring circle{fill:#F5C342}
.rg-holo{stroke:var(--mint);fill:var(--mint);filter:drop-shadow(0 0 6px rgba(95,227,192,.8))}
.rg-holo .ring{fill:none;stroke-width:1.4;stroke-opacity:.6}
body.s2 .rangoli .p-outer path{animation:draw 1.3s var(--ease) forwards}
body.s2 .rangoli .p-inner path{animation:draw 1s var(--ease) .6s forwards}
body.s2 .rangoli .c1,body.s2 .rangoli .c2{animation:draw 1s var(--ease) .9s forwards}
body.s2 .rangoli .ring{animation:draw 1.8s var(--ease) 1s forwards}
body.s2 .rangoli .rg-hand path,body.s2 .rangoli .rg-hand .c1,body.s2 .rangoli .rg-hand .c2{animation-name:drawfill}
body.s2 .rangoli .rg-holo path,body.s2 .rangoli .rg-holo .c1,body.s2 .rangoli .rg-holo .c2{animation-name:drawglow}
body.s2 .rangoli .c3{animation:pop .5s ease 1.4s forwards}
body.s2 .rangoli .dots-ring circle{animation:pop .5s ease 1.6s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes drawfill{60%{stroke-dashoffset:0;fill-opacity:0}100%{stroke-dashoffset:0;fill-opacity:.95}}
@keyframes drawglow{60%{stroke-dashoffset:0;fill-opacity:0}100%{stroke-dashoffset:0;fill-opacity:.14}}
@keyframes pop{0%{opacity:0;transform:scale(.2)}70%{opacity:1;transform:scale(1.25)}100%{opacity:1;transform:scale(1)}}

/* the big lantern */
.lantern{position:absolute;left:50%;top:30%;width:78px;opacity:0;transform:translate(-50%,0) scale(.35);
  filter:drop-shadow(0 0 22px rgba(255,180,80,.75)) drop-shadow(0 0 60px rgba(255,150,60,.35))}
.lantern svg{display:block;width:100%;height:auto}
body.s3 .lantern{animation:rise 5.2s cubic-bezier(.45,.05,.4,1) forwards}
@keyframes rise{
  0%{opacity:0;transform:translate(-50%,40px) scale(.35) rotate(0)}
  12%{opacity:1;transform:translate(-50%,0) scale(1) rotate(-3deg)}
  40%{transform:translate(-40%,-26vh) scale(.9) rotate(4deg)}
  70%{opacity:1;transform:translate(-58%,-50vh) scale(.7) rotate(-3deg)}
  100%{opacity:0;transform:translate(-50%,-78vh) scale(.45) rotate(2deg)}
}

/* sky of lanterns */
.sky{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.kandil{position:absolute;bottom:-60px;width:var(--w);height:calc(var(--w) * 1.3);opacity:0;
  clip-path:polygon(16% 0,84% 0,100% 92%,50% 100%,0 92%);border-radius:4px;
  background:radial-gradient(ellipse at 50% 78%,#FFF1C2 0%,#FFC25A 40%,#D9681C 100%);
  filter:drop-shadow(0 0 10px rgba(255,170,70,.8));animation:float var(--d) linear var(--delay) forwards}
.kandil.mint{background:radial-gradient(ellipse at 50% 78%,rgba(220,255,245,.9) 0%,rgba(95,227,192,.75) 45%,rgba(43,181,154,.45) 100%);
  filter:drop-shadow(0 0 10px rgba(95,227,192,.9))}
@keyframes float{
  0%{opacity:0;transform:translate(0,0)}
  10%{opacity:.95}
  85%{opacity:.85}
  100%{opacity:0;transform:translate(var(--dx),calc(-100dvh - 120px))}
}

/* call to action */
.cta{width:100%;max-width:480px;display:flex;flex-direction:column;align-items:center;gap:10px;min-height:100px;transition:opacity .5s}
body.s3 .cta{opacity:0;pointer-events:none}
.next{position:relative;min-height:54px;padding:0 30px;border-radius:999px;border:0;cursor:pointer;
  background:var(--cream);color:#002526;font:600 16px/1 Poppins,sans-serif;letter-spacing:-.005em;
  box-shadow:0 10px 30px rgba(0,0,0,.35);transition:transform .15s, opacity .4s}
.next:active{transform:scale(.97)}
.next[disabled]{opacity:.35;cursor:default}
.next .label{position:relative;z-index:1}
.next .pulse{position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(243,233,220,.45);animation:ring 2s ease-out infinite}
.next[disabled] .pulse{animation:none}
@keyframes ring{0%{box-shadow:0 0 0 0 rgba(243,233,220,.45)}100%{box-shadow:0 0 0 18px rgba(243,233,220,0)}}
.hint{margin:0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);transition:opacity .5s}
body.s1 .hint{opacity:0}

/* ================= FINALE ================= */
.finale{position:relative;z-index:3}
.finale[hidden]{display:none}
.fin-wrap{max-width:480px;margin:0 auto;padding:max(22px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom));
  display:flex;flex-direction:column;align-items:center;text-align:center}
.fin-wrap>.logo{align-self:flex-start}
.plate{width:min(112%,560px);height:auto;margin:14px -6% 0;display:block}
.phone-glow{animation:pglow 3s ease-in-out infinite}
@keyframes pglow{0%,100%{opacity:.55}50%{opacity:.95}}
.fin-title{margin:6px 0 0;font-size:clamp(38px,11.5vw,54px);line-height:1.04;font-weight:600;letter-spacing:-.035em}
.fin-sub{margin:10px 0 0;text-wrap:balance;font-size:clamp(18px,5vw,22px);line-height:1.35;font-weight:400;color:var(--mint)}
.wish{margin-top:34px;padding:22px 18px;width:100%;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.wish p{margin:0}
.w1{font-size:28px;font-weight:600;letter-spacing:-.02em}
.w2{margin-top:4px!important;font-size:20px;font-weight:300}
.w2 b{font-weight:600;color:var(--gold)}
.w3{margin-top:12px!important;font-size:15px;color:var(--muted)}

.finale.in .plate{animation:up .9s var(--ease) both}
.finale.in .fin-title{animation:up .9s var(--ease) .35s both}
.finale.in .fin-sub{animation:up .9s var(--ease) .7s both}
.finale.in .wish{animation:up .9s var(--ease) 1.1s both}
.finale.in .create,.finale.in .share,.finale.in .replay,.finale.in .foot{animation:up .9s var(--ease) 1.4s both}
@keyframes up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

.create,.share{width:100%;margin-top:30px;padding:24px 20px 22px;border-radius:16px;
  background:rgba(243,233,220,.05);border:1px solid var(--line)}
.create h3,.share h3{margin:0;text-wrap:balance;font-size:19px;font-weight:600;letter-spacing:-.01em}
.sub{margin:6px 0 16px;font-size:14px;color:var(--muted);line-height:1.5}
.field input{width:100%;height:52px;padding:0 16px;border-radius:12px;border:1px solid rgba(243,233,220,.25);
  background:rgba(0,37,38,.75);color:var(--cream);font:500 17px/1 Poppins,sans-serif;text-align:center}
.field input::placeholder{color:#7FA19B}
.field input:focus{outline:none;border-color:var(--mint);box-shadow:0 0 0 3px rgba(95,227,192,.18)}
.err{min-height:18px;margin:6px 0 4px;font-size:13px;color:#FFB4A2}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 20px;
  border-radius:12px;border:1px solid transparent;font:600 16px/1 Poppins,sans-serif;cursor:pointer;
  text-decoration:none;transition:transform .15s, background .2s}
.btn:active{transform:scale(.98)}
.btn.primary{width:100%;background:var(--cream);color:#002526}
.btn.wa{width:100%;background:#25D366;color:#062e1c}
.btn.wa svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6}
.btn.wa svg .fill{fill:currentColor;stroke:none}
.btn.ghost{flex:1;background:transparent;color:var(--cream);border-color:rgba(243,233,220,.3)}
.share-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.link{margin:10px 0 0;padding:12px;border-radius:10px;background:rgba(0,37,38,.75);font-size:13px;
  color:var(--muted);word-break:break-all;user-select:all}
.again,.replay{background:none;border:0;color:var(--muted);font:500 14px Poppins,sans-serif;
  text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:44px}
.again{margin-top:10px}
.replay{margin-top:18px}
.foot{margin-top:18px;font-size:13px;color:var(--muted)}
.foot b{color:var(--cream);font-weight:600}
.foot a{color:inherit;text-decoration:none}

@media (min-height:760px){ .captions{margin-top:34px} }
@media (max-height:640px){ .captions{height:112px;margin-top:10px} .title{font-size:24px} .cta{min-height:84px} }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important;transition-delay:0s!important}
}
.story[hidden]{display:none}

.sky.dim{opacity:.4;transition:opacity 1.2s}
