:root{
  --bg:#07040a;--bg2:#0f0614;
  --gold:#d4a853;--gl:#f0cc7a;--gd:#7a5820;
  --rose:#c0536e;--rl:#f0708a;--rd:#6a2035;
  --cream:#f5ead8;--muted:#8a7060;
  --gb:rgba(255,255,255,0.038);--gbr:rgba(212,168,83,0.16);
  --fd:'Playfair Display',serif;--fe:'Cormorant Garamond',serif;--fb:'Poppins',sans-serif;
}
#eid-wish-root,#eid-wish-root *,#eid-wish-root *::before,#eid-wish-root *::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
#eid-wish-root{background:var(--bg);color:var(--cream);font-family:var(--fb);font-weight:300;overflow-x:hidden;cursor:none}
::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--gd);border-radius:2px}

/* CURSOR */
#CC{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999}

/* MUSIC BTN */
#mb{position:fixed;top:22px;right:24px;z-index:900;background:var(--gb);border:1px solid var(--gbr);backdrop-filter:blur(14px);border-radius:50%;width:46px;height:46px;display:flex;align-items:center;justify-content:center;cursor:none;font-size:17px;transition:.3s}
#mb:hover{border-color:var(--gold);box-shadow:0 0 20px rgba(212,168,83,.3)}
#mb.on .mi{animation:spin 3s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* SHARED */
#eid-wish-root section{position:relative;padding:110px 6vw;overflow:hidden}
.lbl{font-family:var(--fb);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--gd);margin-bottom:16px;opacity:0;transform:translateY(18px);transition:.8s ease}
.lbl.v{opacity:1;transform:none}
.stitle{font-family:var(--fd);font-size:clamp(2rem,4.5vw,3.4rem);font-weight:700;line-height:1.2;background:linear-gradient(135deg,var(--gl),var(--gold),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;opacity:0;transform:translateY(28px);transition:.9s .1s ease}
.stitle.v{opacity:1;transform:none}

/* ══════════════ HERO ══════════════ */
#hero{height:100vh;min-height:660px;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 5vw;background:radial-gradient(ellipse 80% 70% at 50% 42%,#1e0a1a 0%,var(--bg) 100%)}
#hcanvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hi{position:relative;z-index:2}
.for-name{font-family:var(--fe);font-size:clamp(.9rem,2vw,1.1rem);letter-spacing:.55em;text-transform:uppercase;color:var(--gd);margin-bottom:22px;opacity:0;animation:fdU .9s .2s forwards}
.htitle{font-family:var(--fd);font-size:clamp(2.6rem,7vw,5.8rem);font-weight:700;line-height:1.1;background:linear-gradient(135deg,var(--gl) 0%,var(--gold) 45%,var(--rl) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;opacity:0;animation:fdU 1.1s .7s cubic-bezier(.16,1,.3,1) forwards}
.hsub{margin-top:26px;font-family:var(--fe);font-size:clamp(1rem,2.2vw,1.35rem);font-style:italic;color:var(--cream);line-height:1.85;max-width:600px;margin-inline:auto;opacity:0;animation:fdU 1s 1.3s ease forwards}
.hurdu-old-removed{display:none}
.scr{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;animation:fadeI 1s 2.6s forwards;font-size:.62rem;letter-spacing:.3em;color:var(--gd);text-transform:uppercase}
.scrl{width:1px;height:48px;background:linear-gradient(to bottom,var(--gd),transparent);animation:scp 2s ease-in-out infinite}
@keyframes scp{0%,100%{opacity:.3;transform:scaleY(1)}50%{opacity:1;transform:scaleY(.55)}}
@keyframes fdU{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes fadeI{from{opacity:0}to{opacity:1}}

/* ══════════════ SPECIAL ══════════════ */
#special{background:linear-gradient(180deg,var(--bg) 0%,#100810 100%)}
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:22px;margin-top:56px}
.card{background:var(--gb);border:1px solid var(--gbr);border-radius:22px;padding:40px 30px;backdrop-filter:blur(16px);position:relative;overflow:hidden;opacity:0;transform:translateY(38px);transition:opacity .7s,transform .7s,border-color .4s,box-shadow .4s;cursor:none}
.card.v{opacity:1;transform:none}
.card::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 30%,rgba(212,168,83,.055),transparent 65%);opacity:0;transition:.4s}
.card:hover::before{opacity:1}
.card:hover{border-color:rgba(212,168,83,.4);box-shadow:0 0 40px rgba(212,168,83,.1),0 20px 55px rgba(0,0,0,.4);transform:translateY(-6px)!important}
.cicon{font-size:2.3rem;margin-bottom:18px;display:block;filter:drop-shadow(0 0 8px rgba(212,168,83,.45))}
.ctitle{font-family:var(--fd);font-size:1.25rem;color:var(--gl);margin-bottom:11px}
.cbody{font-size:.86rem;line-height:1.85;color:var(--muted)}

/* ══════════════ MEMORIES ══════════════ */
#memories{background:#0b0609}
.mgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:18px;margin-top:56px}
.mframe{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4/5;background:linear-gradient(135deg,#1a0f16,#0e0a0d);border:1px solid var(--gbr);opacity:0;transform:scale(.94);transition:opacity .7s,transform .7s,box-shadow .4s;cursor:none}
.mframe.v{opacity:1;transform:scale(1)}
.mframe img{width:100%;height:100%;object-fit:cover;opacity:.6;transition:opacity .5s,transform .6s}
.mframe:hover img{opacity:.92;transform:scale(1.07)}
.mov{position:absolute;inset:0;background:linear-gradient(to top,rgba(8,4,10,.95) 0%,transparent 60%);display:flex;align-items:flex-end;padding:22px 18px}
.mcap{font-family:var(--fe);font-size:.93rem;font-style:italic;color:var(--cream);opacity:.88}
.mframe:hover{box-shadow:0 0 48px rgba(212,168,83,.16)}
.mph{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--gd);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase}
.phi{font-size:2.2rem}

/* ══════════════ HEART MESSAGE ══════════════ */
#message{background:radial-gradient(ellipse 100% 80% at 50% 50%,#1c0813 0%,var(--bg) 100%);text-align:center}
.morn{font-size:1.5rem;color:var(--gold);opacity:.35;letter-spacing:1.5em;display:block;margin-bottom:38px}
.lovemsg{font-family:var(--fe);font-size:clamp(1.15rem,2.4vw,1.55rem);font-style:italic;line-height:2.05;color:var(--cream);max-width:700px;margin:0 auto 44px;opacity:0;transform:translateY(28px);transition:opacity 1s,transform 1s}
.lovemsg.v{opacity:1;transform:none}
.lovemsg em{color:var(--gl);font-style:normal}
.sig{font-family:var(--fd);font-size:1.05rem;color:var(--rl);opacity:0;transition:opacity 1s .4s}
.sig.v{opacity:1}
.sbtn{display:inline-flex;align-items:center;gap:10px;margin-top:50px;padding:15px 36px;background:linear-gradient(135deg,var(--gd),var(--gold));color:var(--bg);font-family:var(--fb);font-weight:500;font-size:.86rem;letter-spacing:.12em;text-transform:uppercase;border:none;border-radius:60px;cursor:none;position:relative;overflow:hidden;opacity:0;transition:opacity .8s .6s,box-shadow .4s,transform .3s}
.sbtn.v{opacity:1}
.sbtn::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--gold),var(--gl));opacity:0;transition:.4s}
.sbtn:hover::before{opacity:1}
.sbtn:hover{box-shadow:0 0 38px rgba(212,168,83,.45),0 8px 28px rgba(0,0,0,.4);transform:translateY(-2px)}
.sbtn span{position:relative;z-index:1}

/* MODAL */
.mback{position:fixed;inset:0;z-index:800;background:rgba(0,0,0,.9);backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:22px;opacity:0;pointer-events:none;transition:.5s}
.mback.open{opacity:1;pointer-events:all}
.mbox{background:linear-gradient(145deg,#1a0d16,#0f0a0d);border:1px solid var(--gbr);border-radius:28px;padding:58px 46px;max-width:510px;width:100%;text-align:center;position:relative;transform:scale(.84) translateY(28px);transition:transform .5s cubic-bezier(.16,1,.3,1);box-shadow:0 0 80px rgba(192,83,110,.12)}
.mback.open .mbox{transform:scale(1) translateY(0)}
.mcls{position:absolute;top:18px;right:22px;background:none;border:none;color:var(--muted);font-size:1.3rem;cursor:none;transition:.3s}
.mcls:hover{color:var(--gold)}
.mhrt{font-size:2.9rem;margin-bottom:18px;animation:hp 1.2s ease-in-out infinite}
@keyframes hp{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
.mtitle{font-family:var(--fd);font-size:clamp(1.3rem,4vw,1.9rem);background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:18px}
.mdiv{width:56px;height:1px;background:linear-gradient(to right,transparent,var(--gold),transparent);margin:24px auto}
.mmsg{font-family:var(--fe);font-size:1.08rem;font-style:italic;line-height:1.95;color:var(--cream);opacity:.88}
.bh{position:fixed;pointer-events:none;font-size:1.3rem;z-index:850;animation:bfly 1.6s ease-out forwards}
@keyframes bfly{0%{transform:translate(0,0) scale(1) rotate(0);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.25) rotate(var(--dr));opacity:0}}

/* ══════════════ COUNTDOWN ══════════════ */
#countdown{background:linear-gradient(180deg,var(--bg) 0%,#0e0512 50%,var(--bg) 100%);text-align:center;padding:120px 5vw}
.cdg{position:absolute;inset:0;background:radial-gradient(ellipse 55% 50% at 50% 50%,rgba(212,168,83,.05),transparent);pointer-events:none}
.cde{font-family:var(--fb);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--gd);margin-bottom:16px;opacity:0;transform:translateY(16px);transition:.8s}
.cde.v{opacity:1;transform:none}
.cdh{font-family:var(--fd);font-size:clamp(1.8rem,4.5vw,3.2rem);line-height:1.22;background:linear-gradient(135deg,var(--cream) 0%,var(--gl) 55%,var(--rl) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:60px;opacity:0;transform:translateY(24px);transition:.9s .15s}
.cdh.v{opacity:1;transform:none}
.cdw{margin:0 auto 46px;display:inline-flex;flex-direction:column;align-items:center;gap:10px;opacity:0;transform:scale(.88);transition:opacity .8s .3s,transform .8s .3s cubic-bezier(.34,1.56,.64,1)}
.cdw.v{opacity:1;transform:scale(1)}
.cdds{display:flex;gap:8px}
.cdd{display:inline-flex;align-items:center;justify-content:center;width:clamp(58px,13vw,96px);height:clamp(76px,17vw,124px);background:var(--gb);border:1px solid var(--gbr);border-radius:16px;backdrop-filter:blur(14px);font-family:var(--fd);font-size:clamp(2.6rem,7.5vw,5.8rem);font-weight:700;color:var(--gl);text-shadow:0 0 28px rgba(212,168,83,.5);box-shadow:0 0 28px rgba(212,168,83,.07),inset 0 1px 0 rgba(255,255,255,.04);position:relative;overflow:hidden;transition:.3s}
.cdd::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(212,168,83,.08)}
.cdu{font-family:var(--fb);font-size:.72rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gd)}
.cds{font-family:var(--fe);font-size:clamp(.9rem,2vw,1.15rem);font-style:italic;color:var(--muted);margin-top:4px}
.cdq{max-width:510px;margin:0 auto 50px;font-family:var(--fe);font-size:clamp(.95rem,2vw,1.25rem);font-style:italic;line-height:1.95;color:var(--cream);opacity:.82;min-height:3em}
.cdblink{display:inline-block;color:var(--gold);animation:blk .7s step-end infinite}
@keyframes blk{0%,100%{opacity:1}50%{opacity:0}}
.cdra{opacity:0;transform:translateY(18px);transition:.7s}
.cdra.v{opacity:1;transform:none}
.cdrbl{font-family:var(--fe);font-size:1.1rem;font-style:italic;color:var(--cream);opacity:.7;margin-bottom:22px}
.cdrb{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;padding:15px 40px;background:linear-gradient(135deg,#1a0d10,#2a1018);border:1px solid rgba(212,168,83,.32);border-radius:60px;font-family:var(--fb);font-size:.88rem;font-weight:500;letter-spacing:.07em;color:var(--gl);cursor:none;transition:border-color .4s,box-shadow .4s,transform .3s}
.cdrb:hover{border-color:var(--gold);box-shadow:0 0 28px rgba(212,168,83,.28),0 8px 28px rgba(0,0,0,.5);transform:translateY(-3px)}
.cdsh{position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,245,200,.12),transparent);transform:skewX(-20deg);animation:shine 3s ease-in-out infinite}
@keyframes shine{0%,100%{left:-100%}50%{left:150%}}
.cdsmile{display:none;flex-direction:column;align-items:center;gap:14px;position:relative;animation:smr .9s cubic-bezier(.16,1,.3,1) forwards}
.cdsmile.show{display:flex}
@keyframes smr{from{opacity:0;transform:scale(.86) translateY(20px)}to{opacity:1;transform:none}}
.cdse{font-size:5rem;animation:sg 1.8s ease-in-out infinite alternate;filter:drop-shadow(0 0 22px rgba(212,168,83,.5))}
@keyframes sg{from{transform:scale(1) rotate(-3deg)}to{transform:scale(1.12) rotate(3deg)}}
.cdd0{font-family:var(--fd);font-size:clamp(1.5rem,4vw,2.5rem);background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.cdsmm{font-family:var(--fe);font-size:clamp(.95rem,2vw,1.25rem);font-style:italic;line-height:1.95;color:var(--cream);max-width:520px;text-align:center;opacity:.9}
.cdspark{position:absolute;inset:-50px;pointer-events:none}
.spdot{position:absolute;animation:spspin var(--ss) linear infinite;transform-origin:calc(50% + var(--sr)) 50%;left:50%;top:50%;margin:-.5em;animation-delay:var(--sd)}
@keyframes spspin{to{transform:rotate(360deg)}}
@keyframes zeroPop{from{transform:scale(0)}to{transform:scale(1)}}

/* ══════════════ DON'T MOVE ON SECTION ══════════════ */
#donot{background:linear-gradient(180deg,var(--bg) 0%,#0c0318 50%,var(--bg) 100%);text-align:center;padding:130px 6vw 140px;position:relative;overflow:hidden}
.dn-bg{position:absolute;inset:0;background:radial-gradient(ellipse 70% 60% at 50% 50%,rgba(192,83,110,.07),transparent);pointer-events:none}
.dn-stars{position:absolute;inset:0;pointer-events:none}
.dn-star{position:absolute;background:white;border-radius:50%;animation:twk var(--td) ease-in-out infinite alternate;animation-delay:var(--tdd)}
.dn-eyebrow{font-family:var(--fb);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--rose);margin-bottom:18px;opacity:0;transform:translateY(16px);transition:.8s}
.dn-eyebrow.v{opacity:1;transform:none}
.dn-title{font-family:var(--fd);font-size:clamp(2.2rem,5.5vw,4rem);line-height:1.18;background:linear-gradient(135deg,var(--cream),var(--rl),var(--gl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:70px;opacity:0;transform:translateY(28px);transition:.9s .12s}
.dn-title.v{opacity:1;transform:none}
.dn-clock-wrap{margin:0 auto 80px;opacity:0;transform:translateY(24px);transition:.8s .2s}
.dn-clock-wrap.v{opacity:1;transform:none}
.dn-clock-label{font-family:var(--fb);font-size:.68rem;letter-spacing:.35em;text-transform:uppercase;color:var(--gd);margin-bottom:24px}
.dn-clock-boxes{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.dn-box{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--gb);border:1px solid rgba(192,83,110,.22);border-radius:16px;padding:22px 20px;backdrop-filter:blur(14px);min-width:clamp(68px,14vw,100px)}
.dn-num{font-family:var(--fd);font-size:clamp(1.6rem,4vw,2.8rem);font-weight:700;color:var(--rl);text-shadow:0 0 20px rgba(240,112,138,.4);line-height:1;animation:numPulse 3s ease-in-out infinite}
@keyframes numPulse{0%,100%{text-shadow:0 0 20px rgba(240,112,138,.4)}50%{text-shadow:0 0 38px rgba(240,112,138,.75)}}
.dn-unit{font-family:var(--fb);font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}
.dn-sep{font-family:var(--fd);font-size:clamp(1.4rem,3vw,2.2rem);color:var(--rose);opacity:.4;align-self:flex-start;padding-top:18px}
.dn-clock-sub{font-family:var(--fe);font-size:clamp(.9rem,2vw,1.15rem);font-style:italic;color:var(--muted);margin-top:22px;max-width:480px;margin-inline:auto;line-height:1.8}
.dn-lines{max-width:720px;margin:0 auto 80px;display:flex;flex-direction:column;gap:32px}
.dn-line{display:flex;align-items:flex-start;gap:20px;opacity:0;transition:opacity .8s,transform .8s}
.dn-line-left{transform:translateX(-30px);text-align:left}
.dn-line-right{flex-direction:row-reverse;transform:translateX(30px);text-align:right}
.dn-line.v{opacity:1;transform:none!important}
.dn-line-icon{font-size:1.8rem;flex-shrink:0;filter:drop-shadow(0 0 8px rgba(212,168,83,.35));margin-top:4px}
.dn-line-text{font-family:var(--fe);font-size:clamp(1rem,2.2vw,1.3rem);font-style:italic;line-height:2.05;color:var(--cream);opacity:.88}
.dn-line-text em{color:var(--gl);font-style:normal}
.dn-plea{max-width:640px;margin:0 auto;position:relative;opacity:0;transform:translateY(32px) scale(.97);transition:opacity .9s,transform .9s}
.dn-plea.v{opacity:1;transform:none}
.dn-plea-inner{background:linear-gradient(145deg,rgba(192,83,110,.09),rgba(212,168,83,.05));border:1px solid rgba(192,83,110,.28);border-radius:28px;padding:52px 44px;backdrop-filter:blur(16px);position:relative;z-index:1}
.dn-plea-icon{font-size:3rem;margin-bottom:20px;animation:hp 1.4s ease-in-out infinite}
.dn-plea-title{font-family:var(--fd);font-size:clamp(1.3rem,3vw,1.9rem);line-height:1.35;background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px}
.dn-plea-divider{width:70px;height:1px;background:linear-gradient(to right,transparent,var(--rose),transparent);margin:26px auto}
.dn-plea-msg{font-family:var(--fe);font-size:clamp(1rem,2.1vw,1.3rem);font-style:italic;line-height:2.05;color:var(--cream);opacity:.9}
.dn-plea-msg em{color:var(--gl);font-style:normal}
.dn-plea-sig{font-family:var(--fd);font-size:1rem;color:var(--rl);margin-top:6px;opacity:.85}
.dn-plea-glow{position:absolute;inset:-1px;border-radius:28px;background:conic-gradient(from var(--ang,0deg),transparent 70%,rgba(192,83,110,.55) 85%,transparent 100%);animation:bspin 4s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;padding:1px}
@keyframes bspin{to{--ang:360deg}}
@property --ang{syntax:'<angle>';initial-value:0deg;inherits:false}
@media(max-width:640px){.dn-plea-inner{padding:36px 22px}.dn-clock-boxes{gap:6px}.dn-box{padding:16px 10px}.dn-line-right{flex-direction:column}.dn-line-left{flex-direction:column}}

/* ══════════════ APOLOGY ══════════════ */
#apology{background:linear-gradient(180deg,#0c0410 0%,#18061e 40%,#0c0410 100%);text-align:center;padding:130px 5vw 150px;position:relative;overflow:hidden}
.apoglow{position:absolute;inset:0;background:radial-gradient(ellipse 65% 55% at 50% 60%,rgba(192,83,110,.08),transparent);pointer-events:none}

/* falling petals */
.petal{position:absolute;pointer-events:none;animation:pfall var(--pd) ease-in-out infinite;font-size:var(--pf);left:var(--pl);top:-6%;opacity:var(--po);animation-delay:var(--pdd)}
@keyframes pfall{0%{transform:translateY(0) rotate(0deg) translateX(0)}50%{transform:translateY(55vh) rotate(200deg) translateX(35px)}100%{transform:translateY(115vh) rotate(380deg) translateX(-25px);opacity:0}}

.apolbl{font-family:var(--fb);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--rose);margin-bottom:16px;opacity:0;transform:translateY(18px);transition:.8s}
.apolbl.v{opacity:1;transform:none}
.apotitle{font-family:var(--fd);font-size:clamp(2.2rem,5.5vw,4rem);background:linear-gradient(135deg,var(--rl),var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:14px;opacity:0;transform:translateY(28px);transition:.9s .1s}
.apotitle.v{opacity:1;transform:none}
.apohint{color:var(--muted);font-family:var(--fe);font-size:1.05rem;font-style:italic;margin-bottom:60px;opacity:0;transition:1s .35s}
.apohint.v{opacity:1}

/* scene */
.scene{position:relative;width:min(580px,92vw);height:420px;margin:0 auto 80px;border-radius:28px;overflow:hidden;background:linear-gradient(180deg,#040110 0%,#0e0520 60%,#1c0a20 100%);border:1px solid rgba(192,83,110,.16);box-shadow:0 0 90px rgba(192,83,110,.08)}
.sky{position:absolute;inset:0;pointer-events:none}
.skys{position:absolute;background:white;border-radius:50%;animation:twk var(--td) ease-in-out infinite alternate;animation-delay:var(--tdd)}
@keyframes twk{from{opacity:.07}to{opacity:.94}}
.ground{position:absolute;bottom:0;left:0;right:0;height:76px;background:linear-gradient(to top,#1a0825,transparent);border-radius:0 0 28px 28px}
.sroses{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);font-size:1.3rem;letter-spacing:3px;filter:drop-shadow(0 0 8px rgba(192,83,110,.6));opacity:0;transition:opacity .9s 1.2s;white-space:nowrap}
.sroses.show{opacity:1}
.rring{position:absolute;bottom:64px;left:50%;transform:translateX(-50%);display:flex;gap:4px;opacity:0;transition:opacity .9s 1.8s;font-size:.9rem}
.rring.show{opacity:1}

/* boy SVG */
.boy{position:absolute;bottom:48px;left:50%;transform:translateX(-50%);width:160px;opacity:0;transition:opacity .8s .5s}
.boy.show{opacity:1}
.bsvg{width:100%;animation:beg 1.9s ease-in-out infinite}
@keyframes beg{0%,100%{transform:translateY(0) rotate(0deg)}30%{transform:translateY(-5px) rotate(-2deg)}70%{transform:translateY(-3px) rotate(2deg)}}
.tl,.tr{animation:tear 1.5s ease-in infinite}
.tr{animation-delay:.7s}
@keyframes tear{0%{transform:translateY(0);opacity:.85}100%{transform:translateY(14px);opacity:0}}
.tdrop{position:absolute;animation:ftear 2.2s ease-in infinite;opacity:0;font-size:.85rem}
.td1{left:-14px;top:28px;animation-delay:0s}
.td2{left:8px;top:8px;animation-delay:.9s}
.td3{right:-12px;top:22px;animation-delay:1.5s}
@keyframes ftear{0%{opacity:0;transform:translateY(0)}20%{opacity:.9}100%{opacity:0;transform:translateY(-55px) translateX(8px)}}

/* speech bubbles */
.sb{position:absolute;background:rgba(255,255,255,.065);backdrop-filter:blur(10px);border:1px solid rgba(192,83,110,.24);border-radius:18px 18px 18px 4px;padding:10px 15px;font-family:var(--fb);font-size:.74rem;line-height:1.55;color:var(--cream);max-width:175px;text-align:left;opacity:0;transform:scale(.8) translateY(8px);transition:opacity .6s,transform .6s;pointer-events:none}
.sb.show{opacity:1;transform:scale(1) translateY(0)}
.sbr{border-radius:18px 18px 4px 18px;text-align:right}
.sb1{left:14px;top:30px}
.sb2{right:10px;top:58px}
.sb3{left:10px;top:185px}
.sb4{right:10px;top:200px}
.sb5{left:50%;transform:translateX(-50%) scale(.8) translateY(8px)!important;bottom:105px;max-width:230px;text-align:center;border-radius:18px}
.sb5.show{transform:translateX(-50%) scale(1) translateY(0)!important}

/* apology letters */
.apoletters{max-width:700px;margin:0 auto 68px;display:flex;flex-direction:column;gap:26px}
.apoletter{background:var(--gb);border:1px solid rgba(192,83,110,.14);border-radius:22px;padding:38px 34px;backdrop-filter:blur(14px);text-align:left;opacity:0;transform:translateY(30px) translateX(-22px);transition:opacity .7s,transform .7s;position:relative;overflow:hidden}
.apoletter:nth-child(even){transform:translateY(30px) translateX(22px)}
.apoletter.v{opacity:1;transform:none}
.apoletter::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%;background:linear-gradient(to bottom,var(--rose),var(--gold))}
.alnum{font-family:var(--fb);font-size:.62rem;letter-spacing:.35em;text-transform:uppercase;color:var(--rose);margin-bottom:12px}
.altxt{font-family:var(--fe);font-size:clamp(1.05rem,2.2vw,1.35rem);font-style:italic;line-height:2;color:var(--cream)}
.altxt em{color:var(--gl);font-style:normal}
.apoletter:hover{border-color:rgba(192,83,110,.3);box-shadow:0 0 40px rgba(192,83,110,.07)}

/* forgiveness meter */
.fm{max-width:460px;margin:0 auto 48px;background:var(--gb);border:1px solid rgba(192,83,110,.2);border-radius:24px;padding:38px 32px;backdrop-filter:blur(14px);opacity:0;transform:translateY(28px);transition:.8s .3s}
.fm.v{opacity:1;transform:none}
.fmlbl{font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--rose);margin-bottom:14px}
.fmbw{background:rgba(255,255,255,.055);border-radius:50px;height:22px;position:relative;margin-bottom:10px;overflow:visible}
.fmb{height:100%;width:0%;border-radius:50px;background:linear-gradient(90deg,var(--rd),var(--rose),var(--gold));transition:width .6s cubic-bezier(.34,1.56,.64,1)}
.fmem{position:absolute;right:-12px;top:-20px;font-size:1.8rem;transition:right .6s cubic-bezier(.34,1.56,.64,1),all .5s}
.fmhint{font-size:.73rem;color:var(--muted);margin-bottom:20px}
.fmbtn{background:linear-gradient(135deg,var(--rd),var(--rose));border:none;border-radius:50px;padding:14px 34px;color:white;font-family:var(--fb);font-size:.85rem;font-weight:500;cursor:none;transition:transform .2s,box-shadow .3s;box-shadow:0 4px 20px rgba(192,83,110,.32)}
.fmbtn:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 8px 30px rgba(192,83,110,.5)}
.fmbtn:active{transform:scale(.96)}
.fmst{margin-top:16px;font-family:var(--fe);font-size:1.05rem;font-style:italic;color:var(--gl);min-height:1.5em;transition:opacity .4s}

/* forgiven */
.fgv{display:none;flex-direction:column;align-items:center;gap:18px;animation:fgvr .9s cubic-bezier(.16,1,.3,1) forwards;position:relative}
.fgv.show{display:flex}
@keyframes fgvr{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}
.fgvemoji{font-size:4rem;animation:hp 1.2s ease-in-out infinite}
.fgvtitle{font-family:var(--fd);font-size:clamp(1.7rem,4vw,2.7rem);background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.fgvmsg{font-family:var(--fe);font-size:clamp(.95rem,2.1vw,1.28rem);font-style:italic;line-height:2.05;color:var(--cream);max-width:560px;text-align:center;opacity:.92}
.fgvc{position:absolute;inset:0;pointer-events:none}
.cfetti{position:absolute;border-radius:2px;animation:cfall var(--cd) ease-in forwards;opacity:0;animation-delay:var(--cdd)}
@keyframes cfall{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--cx),var(--cy)) rotate(var(--cr))}}
.hpop{position:absolute;font-size:1.4rem;animation:hpu 2.1s ease-out forwards;pointer-events:none}
@keyframes hpu{0%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-130px) scale(1.3)}}

/* ══════════════ PROMISE SECTION ══════════════ */
#promise-section{background:linear-gradient(180deg,var(--bg) 0%,#0a0414 50%,var(--bg) 100%);padding:130px 6vw 140px;position:relative;overflow:hidden;text-align:center}
.ps-bg{position:absolute;inset:0;background:radial-gradient(ellipse 65% 55% at 50% 50%,rgba(212,168,83,.06),transparent);pointer-events:none}
.ps-eyebrow{font-family:var(--fb);font-size:.68rem;letter-spacing:.38em;text-transform:uppercase;color:var(--gd);margin-bottom:18px;opacity:0;transform:translateY(16px);transition:.8s}
.ps-eyebrow.v{opacity:1;transform:none}
.ps-title{font-family:var(--fd);font-size:clamp(2.2rem,5.5vw,4rem);line-height:1.18;background:linear-gradient(135deg,var(--gl),var(--gold),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:16px;opacity:0;transform:translateY(28px);transition:.9s .12s}
.ps-title.v{opacity:1;transform:none}
.ps-subtitle{font-family:var(--fe);font-size:clamp(1rem,2vw,1.2rem);font-style:italic;color:var(--muted);margin-bottom:72px;opacity:0;transition:.8s .25s}
.ps-subtitle.v{opacity:1}
.ps-promises{max-width:700px;margin:0 auto 80px;display:flex;flex-direction:column;gap:0}
.ps-promise{display:flex;gap:28px;align-items:flex-start;padding:36px 0;border-bottom:1px solid rgba(212,168,83,.08);opacity:0;transform:translateX(-24px);transition:opacity .7s,transform .7s;text-align:left}
.ps-promise:last-child{border-bottom:none}
.ps-promise.v{opacity:1;transform:none}
.ps-num{font-family:var(--fd);font-size:2.8rem;font-weight:700;color:rgba(212,168,83,.15);line-height:1;flex-shrink:0;width:56px;transition:.3s}
.ps-promise:hover .ps-num{color:rgba(212,168,83,.42)}
.ps-content{flex:1}
.ps-ptitle{font-family:var(--fd);font-size:clamp(1.05rem,2.2vw,1.35rem);color:var(--gl);margin-bottom:10px;line-height:1.3}
.ps-pbody{font-family:var(--fe);font-size:clamp(.95rem,2vw,1.15rem);font-style:italic;line-height:1.95;color:var(--muted)}
.ps-seal{max-width:580px;margin:0 auto;text-align:center;opacity:0;transform:translateY(24px);transition:.9s}
.ps-seal.v{opacity:1;transform:none}
.ps-seal-ring{font-size:3rem;margin-bottom:20px;animation:hp 1.6s ease-in-out infinite}
.ps-seal-text{font-family:var(--fe);font-size:clamp(1rem,2.1vw,1.28rem);font-style:italic;line-height:2.05;color:var(--cream);opacity:.88}
.ps-seal-text em{color:var(--gl);font-style:normal}
.ps-seal-sig{font-family:var(--fd);font-size:1.1rem;color:var(--rl);margin-top:18px;opacity:.9}

/* ══════════════ RICH FOOTER ══════════════ */
#eid-wish-root #main-footer{background:linear-gradient(180deg,var(--bg) 0%,#06030a 100%);padding:100px 8vw 60px;position:relative;overflow:hidden;text-align:center}
.ft-top-line{position:absolute;top:0;left:50%;transform:translateX(-50%);width:340px;height:1px;background:linear-gradient(to right,transparent,var(--rose),var(--gold),var(--rose),transparent)}
.ft-quote{font-family:var(--fd);font-size:clamp(1.6rem,4vw,2.8rem);font-style:italic;background:linear-gradient(135deg,var(--gl),var(--gold),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:breathe 4s ease-in-out infinite;margin-bottom:32px}
@keyframes breathe{0%,100%{opacity:.65}50%{opacity:1}}
.ft-para{font-family:var(--fe);font-size:clamp(.95rem,2vw,1.2rem);font-style:italic;line-height:2.1;color:var(--cream);opacity:.75;max-width:620px;margin:0 auto 50px}
.ft-para em{color:var(--gl);font-style:normal}
.ft-lines{display:flex;flex-direction:column;gap:14px;max-width:560px;margin:0 auto 50px}
.ft-line{font-family:var(--fe);font-size:clamp(.9rem,1.9vw,1.1rem);font-style:italic;color:var(--cream);opacity:.7;line-height:1.7;padding:14px 20px;background:var(--gb);border:1px solid rgba(212,168,83,.1);border-radius:12px;backdrop-filter:blur(8px);transition:opacity .3s,border-color .3s}
.ft-line:hover{opacity:1;border-color:rgba(212,168,83,.25)}
.ft-divider{font-family:var(--fd);font-size:1.2rem;color:var(--gd);opacity:.4;margin:44px 0;letter-spacing:.5em}
.ft-signoff{margin-bottom:36px}
.ft-name{font-family:var(--fd);font-size:clamp(2rem,5vw,3.5rem);font-weight:700;background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:breathe 5s 1s ease-in-out infinite}
.ft-tagline{font-family:var(--fe);font-size:clamp(.9rem,2vw,1.15rem);font-style:italic;color:var(--muted);margin-top:8px}
.ft-eid{font-family:var(--fb);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gd);margin-top:32px;opacity:.6}
.ft-hearts{position:relative;height:60px;margin-top:24px;pointer-events:none}
.ft-heart{position:absolute;animation:hpu 3s ease-out forwards;font-size:1.2rem;bottom:0}

/* special 6th card — extra glow */
.card-special{border-color:rgba(212,168,83,.35)!important;background:linear-gradient(135deg,rgba(212,168,83,.06),rgba(192,83,110,.06))!important}
.card-special .ctitle{background:linear-gradient(135deg,var(--gl),var(--rl));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.card-special .cbody em{color:var(--gl);font-style:normal}

/* Urdu line cycling */
.hurdu{margin-top:14px;font-family:var(--fd);font-size:clamp(.95rem,1.9vw,1.18rem);color:var(--gold);opacity:0;animation:fdU 1s 1.9s ease forwards;direction:rtl;min-height:1.6em;transition:opacity .5s}
.hurdu.fade-out{opacity:0!important;transition:opacity .4s}
.hurdu.fade-in{opacity:1;transition:opacity .6s}
.floater{position:fixed;pointer-events:none;z-index:1;animation:fdrift var(--dur) ease-in-out infinite alternate;opacity:var(--op);font-size:var(--fs);left:var(--lx);top:var(--ty)}
@keyframes fdrift{0%{transform:translate(0,0) rotate(0)}100%{transform:translate(var(--mx),var(--my)) rotate(20deg)}}

@media(max-width:640px){section{padding:80px 5vw}.mbox{padding:38px 24px}#mb{top:14px;right:14px}.apoletter{padding:26px 20px}.fm{padding:28px 20px}}
