:root{--saffron:#e98b1f;--deep:#b85c0f;--gold:#c9922e;--ink:#5a3216;--muted:#7d5a3c;--cream:#fcebe8}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{font-family:"Cormorant Garamond",Georgia,serif;color:var(--ink);background:#f6dfc0;
 background-image:radial-gradient(ellipse at 50% 0%,#fff6e8 0%,#f8e3c6 55%,#f0cfa4 100%),repeating-linear-gradient(0deg,rgba(160,110,60,.035) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(160,110,60,.035) 0 1px,transparent 1px 3px);
 background-attachment:fixed;-webkit-font-smoothing:antialiased;text-align:center}
html[lang=gu] body{font-family:"Noto Sans Gujarati","Cormorant Garamond",serif}
body.locked{overflow:hidden}
#petals{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:30;will-change:transform;transform:translateZ(0)}@media (prefers-reduced-motion:reduce){#petals{display:none}}
.lang{position:fixed;top:max(12px,env(safe-area-inset-top));right:12px;z-index:60;display:flex;background:rgba(255,248,236,.9);border:1px solid var(--gold);border-radius:999px;padding:3px;box-shadow:0 2px 10px rgba(120,70,20,.15)}
.lang button{border:0;background:transparent;font:600 13px/1 "Noto Sans Gujarati",Georgia,serif;color:var(--deep);padding:8px 12px;border-radius:999px;cursor:pointer}
.lang button[aria-pressed=true]{background:var(--saffron);color:#fff}
/* GATE */
#gate{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;overflow:hidden}
#gate{background:#4a2612}
.doorway{position:absolute;left:10%;right:10%;top:5%;bottom:0;background:radial-gradient(ellipse at 50% 55%,#fff3c4,#ffc65a 40%,#e98b1f 75%,#7a3a10)}
.glow{position:absolute;left:50%;top:0;bottom:0;width:14px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#fff0b0,transparent);z-index:3;transition:opacity 1.2s;opacity:.95}
.door{position:absolute;top:0;bottom:0;width:50%;display:flex;flex-direction:column;justify-content:space-evenly;padding:16% 9% 6%;transition:transform 1.9s cubic-bezier(.55,.05,.3,1);z-index:2;
 background:radial-gradient(circle,#e8c36a 0 2.2px,transparent 2.6px) 0 0/22px 22px,repeating-linear-gradient(92deg,rgba(0,0,0,.08) 0 2px,transparent 2px 7px),linear-gradient(90deg,#3b1d0c,#6e3a1a 30%,#5a2e14 70%,#3b1d0c);
 box-shadow:inset 0 0 0 5px #b8862b,inset 0 0 0 8px #e8c36a,inset 0 0 0 11px #5a2e14}
.door.l{left:0;transform-origin:0 50%}.door.r{right:0;transform-origin:100% 50%}
.door .shade{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity 1.9s}
.door.l .shade{background:linear-gradient(90deg,rgba(0,0,0,.1),rgba(0,0,0,.65))}.door.r .shade{background:linear-gradient(270deg,rgba(0,0,0,.1),rgba(0,0,0,.65))}
.panel{position:relative;flex:0 0 26%;border:3px solid #d9a845;border-radius:8px;background:linear-gradient(160deg,#6e3a1a,#4a2612);box-shadow:inset 0 0 0 3px #3b1d0c,inset 0 0 14px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center}
.panel:nth-child(3){flex-basis:32%;border-radius:50% 50% 8px 8px/22% 22% 8px 8px}
.ros{width:58%;max-width:70px}.ros.big{width:70%;max-width:90px}
.knock{position:absolute;top:52%;width:22px;height:22px;border:3px solid #e8c36a;border-radius:50%;box-shadow:0 2px 3px rgba(0,0,0,.5)}
.door.l .knock{right:10px}.door.r .knock{left:10px}
.archf{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}
.toran{position:absolute;top:4.5%;left:8%;width:84%;z-index:6;pointer-events:none}
.bells{position:absolute;top:calc(4.5% + 7vw);left:14%;width:72%;z-index:5;pointer-events:none}
#gate.open .bell{animation:sway 1.4s ease-in-out 2}
.bell{transform-box:view-box}
@keyframes sway{25%{transform:rotate(9deg)}75%{transform:rotate(-9deg)}}
#gate.open .door.l,#gate.open .door.r{transform:scaleX(.06)}
#gate.open .door .shade{opacity:1}
#gate.open .glow{opacity:0}
#gate.open .doorway{background:radial-gradient(ellipse at 50% 55%,#fffbe6,#ffe3a0 45%,#f3a640 80%,#9a4a12)}
.reveal{color:#7a2e08;text-shadow:0 0 18px #fff6d0,0 0 4px #fff}
.gate-text{position:relative;z-index:7;width:min(86vw,360px);margin:0 auto;padding:28px 18px;background:rgba(253,243,228,.95);border:2px solid var(--gold);border-radius:24px;box-shadow:0 10px 40px rgba(110,50,0,.35);transition:opacity .5s}
.gate-for{font-size:17px;color:var(--muted);font-style:italic}
.gate-names{font-family:"Great Vibes",cursive;font-size:clamp(32px,9vw,42px);color:var(--deep);line-height:1.15;margin:8px 0 14px}
html[lang=gu] .gate-names{font-family:"Noto Sans Gujarati";font-size:24px;font-weight:600}
.knob{width:76px;height:76px;border-radius:50%;border:3px solid #f7d58e;background:radial-gradient(circle at 35% 30%,#ffd27a,#e98b1f 60%,#b85c0f);color:#fff7e0;font-size:34px;cursor:pointer;box-shadow:0 0 0 6px rgba(233,139,31,.2),0 6px 18px rgba(120,60,0,.4);animation:pulse 2.2s ease-in-out infinite;display:block;margin:0 auto}
@keyframes pulse{50%{box-shadow:0 0 0 14px rgba(233,139,31,.08),0 6px 18px rgba(120,60,0,.4)}}
.gate-tap{margin-top:12px;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--deep)}
html[lang=gu] .gate-tap{letter-spacing:0;text-transform:none}
#gate.open .gate-text{opacity:0;pointer-events:none}
.reveal{position:absolute;z-index:8;left:0;right:0;top:50%;transform:translateY(-50%);font-family:"Great Vibes",cursive;font-size:clamp(46px,13vw,84px);color:var(--deep);opacity:0;transition:opacity .9s;text-shadow:0 2px 0 #fff3d6}
html[lang=gu] .reveal{font-family:"Noto Sans Gujarati";font-weight:600;font-size:clamp(34px,9vw,56px)}
#gate.open .reveal{opacity:1}
#gate.gone{opacity:0;transition:opacity .8s;pointer-events:none}
/* CARD */
#card{position:relative;z-index:2;opacity:0;transform:scale(.97);transition:opacity 1s,transform 1s;padding:70px 14px 60px}
#card.show{opacity:1;transform:none}
.sheet{width:100%;max-width:560px;margin:0 auto;background:var(--cream);border-radius:22px;padding:8px 22px 34px;box-shadow:0 0 0 2px #e7c27a,0 0 0 8px #fdf3e4,0 0 0 10px #c9922e,0 20px 50px rgba(120,70,20,.25)}
.hero{margin:0 -22px;border-radius:20px 20px 0 0;overflow:hidden}
.hero img{display:block;width:100%;height:auto;-webkit-mask-image:linear-gradient(#000 78%,transparent);mask-image:linear-gradient(#000 78%,transparent)}
.script{font-family:"Great Vibes",cursive;font-weight:400;font-size:clamp(46px,12vw,64px);color:var(--deep);margin-top:-10px;line-height:1.1}
html[lang=gu] .script{font-family:"Noto Sans Gujarati";font-weight:600;font-size:34px;margin-top:6px}
.grace{font-size:19px;line-height:1.5;margin:10px 4px 18px}
.duo{display:flex;align-items:flex-start;justify-content:center;gap:6px}
.duo figure{flex:1;max-width:220px}
.ring{width:min(36vw,150px);aspect-ratio:1;margin:0 auto 8px;border-radius:50%;padding:4px;background:linear-gradient(135deg,#f7d58e,#c9922e 45%,#f7d58e 70%,#a8741e);box-shadow:0 4px 14px rgba(120,70,20,.3)}
.ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;border:3px solid var(--cream)}
.nm{font-family:"Cinzel Decorative",Georgia,serif;font-size:clamp(17px,4.8vw,22px);color:var(--deep);line-height:1.2}
html[lang=gu] .nm{font-family:"Noto Sans Gujarati";font-weight:600;font-size:20px}
figcaption{font-size:15px;color:var(--muted);line-height:1.35;margin-top:4px}
.amp{font-family:"Great Vibes",cursive;font-size:44px;color:var(--gold);align-self:center;margin-top:-40px}
.body{font-size:19px;line-height:1.55;margin:18px 2px 6px}.body b{color:var(--deep)}
html[lang=gu] .grace,html[lang=gu] .body{font-size:16px;line-height:1.9}
.orn{margin:18px auto;width:min(80%,300px)}.orn svg{display:block;width:100%}
.lbl{font-family:"Cinzel Decorative",Georgia,serif;font-size:15px;letter-spacing:.12em;color:var(--saffron);margin:16px 0 6px}
html[lang=gu] .lbl{font-family:"Noto Sans Gujarati";letter-spacing:0;font-size:17px;font-weight:600}
.big{font-size:22px;font-weight:600;color:var(--ink)}
.sched{list-style:none;margin:12px auto 0;max-width:340px}
.sched li{display:flex;justify-content:space-between;gap:10px;padding:9px 4px;border-bottom:1px dashed #e2bf85;font-size:18px}
.sched li b{color:var(--deep);white-space:nowrap}
.mandir{display:block;width:150px;margin:6px auto 8px}
.addr{font-size:18px;color:var(--muted);margin:4px 0 14px}
.btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.btn{display:inline-block;text-decoration:none;font:600 16px/1 Georgia,serif;padding:13px 20px;border-radius:999px;cursor:pointer}
html[lang=gu] .btn{font-family:"Noto Sans Gujarati"}
.btn.line{border:1.5px solid var(--gold);color:var(--deep);background:#fff8ec}
.btn.solid{background:linear-gradient(180deg,#f3a640,#d9731a);color:#fff;box-shadow:0 6px 16px rgba(200,100,20,.35);border:0}
.btn.big{font-size:19px;padding:16px 40px;margin-top:8px}
.kind{font-style:italic;font-size:20px}
.status{font-size:15px;color:var(--muted);margin:6px 0 4px;min-height:1.2em}
.svc{font-style:italic;font-size:19px;margin-top:26px}
.fam{font-size:19px;line-height:1.55;color:var(--deep);font-weight:600}
#rsvpSheet{position:fixed;inset:0;z-index:70;background:rgba(80,40,10,.55);display:flex;align-items:flex-end;justify-content:center}
#rsvpSheet[hidden]{display:none}
.sheet-in{position:relative;width:100%;max-width:640px;height:92vh;height:92dvh;background:#fff;border-radius:18px 18px 0 0;overflow:hidden}
.sheet-in iframe{width:100%;height:100%;border:0}
.x{position:absolute;top:8px;right:10px;width:36px;height:36px;border-radius:50%;border:0;background:var(--saffron);color:#fff;font-size:16px;cursor:pointer;z-index:2}
.mute{position:fixed;right:10px;bottom:max(10px,env(safe-area-inset-bottom));z-index:65;width:26px;height:26px;border-radius:50%;border:1px solid rgba(201,146,46,.6);background:rgba(255,248,236,.85);padding:5px;cursor:pointer;opacity:.75}
.mute svg{width:100%;height:100%;fill:none;stroke:var(--deep);stroke-width:2;stroke-linecap:round}
.mute .o{display:none}.mute.is-off .o{display:inline}.mute.is-off .w{display:none}
@media (min-width:700px){#card{padding-top:80px}.sheet{padding:8px 40px 40px}.hero{margin:0 -40px}}
@media (prefers-reduced-motion:reduce){.door,#card,.reveal{transition:none}.knob{animation:none}}

.mem{text-align:center;margin:22px 0 6px}.mem .kind{margin:4px 0 12px}

/* === Darshan: golden lotus opening === */
#gate.lz{background:radial-gradient(ellipse at 50% 58%,#5a1a12 0%,#2a0a10 55%,#14050a 100%);flex-direction:column;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 64px) 18px calc(env(safe-area-inset-bottom) + 40px);color:#f8e6c0}
.lz-rays{position:absolute;left:50%;top:58%;width:220vmax;height:220vmax;margin:-110vmax 0 0 -110vmax;background:repeating-conic-gradient(from 0deg,rgba(255,214,130,.13) 0 4deg,transparent 4deg 15deg);-webkit-mask:radial-gradient(circle,#000 0,rgba(0,0,0,.6) 18%,transparent 48%);mask:radial-gradient(circle,#000 0,rgba(0,0,0,.6) 18%,transparent 48%);animation:lzspin 60s linear infinite;opacity:.55;transition:opacity 1.6s,transform 1.6s;pointer-events:none}
.lz-ring{position:absolute;left:50%;top:58%;width:min(110vw,560px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.55) rotate(0);opacity:0;transition:transform 2.6s cubic-bezier(.2,.8,.2,1),opacity 1.4s;pointer-events:none}
.lz-ring svg{width:100%;height:100%;animation:lzspin 40s linear infinite}
.lz-top,.lz-bottom{position:relative;z-index:3;text-align:center;transition:opacity .9s,transform .9s}
.lz-for{font-style:italic;font-size:17px;opacity:.85}
.lz-name{font-family:"Great Vibes",cursive;font-size:clamp(40px,11vw,62px);line-height:1.1;margin-top:6px;background:linear-gradient(180deg,#fff3c9,#f2c260 55%,#c98a23);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 10px rgba(255,190,90,.35))}
html[lang=gu] .lz-name{font-family:"Noto Sans Gujarati";font-weight:600;font-size:clamp(26px,7vw,36px)}
.lz-stage{position:relative;z-index:2;width:min(88vw,420px);margin:0 auto;flex:none}
.lz-lotus{width:100%;display:block;overflow:visible;filter:drop-shadow(0 0 22px rgba(255,190,90,.35))}
.lz-lotus .pt{transform-box:view-box;transform-origin:200px 300px;transform:rotate(calc(var(--a)*.1deg)) scaleX(.55);transition:transform 1.9s cubic-bezier(.25,1.15,.35,1) var(--d)}
.lz-core{opacity:.35;transform-box:fill-box;transform-origin:center;animation:lzbreath 2.6s ease-in-out infinite;transition:opacity 1.2s .6s}
.lz-burst{position:absolute;left:50%;top:70%;width:0;height:0}
.lz-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle,#fffbe6,#ffc35a 60%,transparent 70%);opacity:0;transform:rotate(var(--a)) translateY(0)}
.lz-btn{width:84px;height:84px;border-radius:50%;border:2px solid #f6c76a;background:radial-gradient(circle at 50% 40%,rgba(255,214,130,.35),rgba(120,40,10,.6));cursor:pointer;position:relative;box-shadow:0 0 0 0 rgba(246,199,106,.6);animation:lzpulse 2.2s ease-out infinite}
.lz-btn span{position:absolute;inset:22px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:linear-gradient(180deg,#fff3c9,#f2b84a);clip-path:polygon(50% 0,64% 38%,100% 30%,72% 62%,84% 100%,50% 80%,16% 100%,28% 62%,0 30%,36% 38%)}
.lz-tap{margin-top:12px;font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:#f6d38a}
html[lang=gu] .lz-tap{letter-spacing:0;text-transform:none}
.lz-jay{position:absolute;z-index:4;left:0;right:0;top:20%;text-align:center;font-family:"Great Vibes",cursive;font-size:clamp(48px,13vw,84px);color:#fff1c4;text-shadow:0 0 24px rgba(255,200,100,.8);opacity:0;transform:translateY(14px) scale(.96);transition:opacity 1.2s 2.1s,transform 1.6s 2.1s;pointer-events:none}
html[lang=gu] .lz-jay{font-family:"Noto Sans Gujarati";font-weight:600;font-size:clamp(32px,9vw,52px)}
.lz-flash{position:absolute;inset:0;z-index:5;background:radial-gradient(circle at 50% 62%,#fffdf2,#ffe7a8 40%,rgba(255,220,150,0) 75%);opacity:0;pointer-events:none}
#gate.lz.open .lz-lotus .pt{transform:rotate(calc(var(--a)*1deg)) scaleX(1)}
#gate.lz.open .lz-core{opacity:1}
#gate.lz.open .lz-rays{opacity:1;transform:scale(1.15)}
#gate.lz.open .lz-ring{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(30deg)}
#gate.lz.open .lz-burst i{animation:lzburst 1.6s cubic-bezier(.15,.7,.3,1) calc(1.1s + var(--t)) forwards}
#gate.lz.open .lz-top,#gate.lz.open .lz-bottom{opacity:0;transform:translateY(-10px);pointer-events:none}
#gate.lz.open .lz-jay{opacity:1;transform:none}
#gate.lz.open .lz-stage{animation:lzzoom 1.4s cubic-bezier(.6,0,.8,.4) 4.9s forwards}
#gate.lz.open .lz-flash{animation:lzflash 1.6s ease-in 4.9s forwards}
#gate.lz.gone{opacity:0;transition:opacity .8s;pointer-events:none}
@keyframes lzspin{to{transform:rotate(360deg)}}
@keyframes lzbreath{50%{transform:scale(1.12)}}
@keyframes lzpulse{0%{box-shadow:0 0 0 0 rgba(246,199,106,.55)}100%{box-shadow:0 0 0 22px rgba(246,199,106,0)}}
@keyframes lzburst{0%{opacity:0;transform:rotate(var(--a)) translateY(0)}15%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(calc(var(--d)*-1))}}
@keyframes lzzoom{to{transform:scale(3.2);opacity:0}}
@keyframes lzflash{0%{opacity:0}60%{opacity:1}100%{opacity:.9}}
@media (prefers-reduced-motion:reduce){.lz-rays,.lz-ring svg,.lz-core,.lz-btn{animation:none}}
.fam{font-size:15px;line-height:1.55}

/* rose petals burst from the lotus */
.lz-burst i{width:13px;height:15px;left:-6px;top:-7px;border-radius:55% 55% 50% 50%/65% 65% 35% 35%;background:radial-gradient(circle at 50% 30%,rgba(255,255,255,.35),transparent 55%),var(--c);box-shadow:inset 0 -2px 3px rgba(60,0,10,.35)}
@keyframes lzburst{0%{opacity:0;transform:rotate(var(--a)) translateY(0) rotate(0)}12%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(calc(var(--d)*-1)) rotate(var(--r)) scale(.8)}}
#gate.lz.open .lz-burst i{animation:lzburst 2.2s cubic-bezier(.15,.7,.3,1) calc(1s + var(--t)) forwards}
.lz-ring g{fill:#e88a9a}

.ash-moment{position:relative;z-index:2;margin:18px auto 6px;width:min(92%,520px)}
.ash-moment img{display:block;width:100%;height:auto;border-radius:22px;height:auto;object-fit:contain;-webkit-mask:radial-gradient(ellipse 98% 98% at 50% 50%,#000 68%,transparent 100%);mask:radial-gradient(ellipse 98% 98% at 50% 50%,#000 68%,transparent 100%)}

/* === Darshan v3: rose petals, blush card, written greeting === */
.lz-burst i{width:12px;height:15px;left:-6px;top:-7px;border-radius:50% 50% 50% 50%/42% 42% 58% 58%;background:linear-gradient(to top,rgba(70,0,12,.45),transparent 50%,rgba(255,235,238,.3)),var(--c);box-shadow:inset 0 2px 3px rgba(255,255,255,.25)}
.lz-jay{display:none!important}
body{background:radial-gradient(120% 80% at 50% 0%,#f8e1df 0%,#f2d2cf 55%,#ecc6c2 100%) fixed}
.sheet{background:linear-gradient(180deg,#fdf1ef 0%,#fbe6e3 45%,#fcefec 100%);box-shadow:0 0 0 2px #e2b29a,0 0 0 8px #fbe9e6,0 0 0 10px #b97b62,0 20px 50px rgba(130,50,50,.22)}
.jw-wrap{position:relative}
.jw-wrap h1.script{background:linear-gradient(100deg,#8f5410 0%,#b7771c 35%,#f2d58a 50%,#b7771c 65%,#8f5410 100%);background-size:260% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;color:transparent;clip-path:inset(-30% 100% -30% -10%)}
.jw-on h1.script{animation:jwwrite 2.4s cubic-bezier(.4,.1,.3,1) .2s forwards,jwshine 2.2s ease-in-out 2.7s forwards}
@keyframes jwwrite{to{clip-path:inset(-30% -10% -30% -10%)}}
@keyframes jwshine{from{background-position:100% 0}to{background-position:0 0}}
.jw-p{position:absolute;left:var(--x);top:0;width:9px;height:11px;border-radius:50% 50% 50% 50%/42% 42% 58% 58%;background:linear-gradient(to top,rgba(70,0,12,.4),transparent 55%),var(--c);opacity:0;pointer-events:none}
.jw-on .jw-p{animation:jwp 4.5s ease-in-out var(--d) 2 }
@keyframes jwp{0%{opacity:0;transform:translate(0,-10px) rotate(0)}20%{opacity:.85}100%{opacity:0;transform:translate(18px,120px) rotate(220deg) scaleX(.5)}}
@media (prefers-reduced-motion:reduce){.jw-wrap h1.script{clip-path:none;animation:none!important;background-position:50% 0}.jw-p{display:none}}

/* === Darshan intro scene (after lotus) === */
#gate.lz.open .lz-stage{animation:lzzoom 1.1s cubic-bezier(.6,0,.8,.4) 2.3s forwards}
#gate.lz.open .lz-flash{animation:none}
.dv-intro{position:absolute;inset:0;z-index:20;opacity:0;pointer-events:none;overflow:hidden}
#gate.lz.open .dv-intro{animation:dvin .9s ease 2.7s forwards}
@keyframes dvin{to{opacity:1}}
.dv-bg{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 40%,#b83a55 0%,#8e1430 38%,#5c0a1d 72%,#3a0612 100%)}
.dv-bg:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.025) 0 2px,transparent 2px 7px);mix-blend-mode:overlay}
.dv-mand{position:absolute;left:50%;top:42%;width:150vmin;height:150vmin;margin:-75vmin 0 0 -75vmin;opacity:.2;animation:dvspin 70s linear infinite}
@keyframes dvspin{to{transform:rotate(360deg)}}
.dv-bok i{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle,rgba(255,224,150,.55),rgba(255,200,110,0) 70%);animation:dvbok 6s ease-in-out var(--d) infinite alternate}
@keyframes dvbok{from{transform:translateY(0);opacity:.3}to{transform:translateY(-26px);opacity:.9}}
.dv-pet i{position:absolute;top:-20px;width:12px;height:15px;border-radius:50% 50% 50% 50%/42% 42% 58% 58%;background:linear-gradient(to top,rgba(70,0,12,.45),transparent 50%,rgba(255,235,238,.3)),var(--c);animation:dvfall var(--t) linear var(--d) infinite}
@keyframes dvfall{0%{transform:translate(0,0) rotate(0) scaleX(1)}50%{transform:translate(var(--x),55vh) rotate(180deg) scaleX(.4)}100%{transform:translate(0,110vh) rotate(360deg) scaleX(1)}}
.dv-stage{position:absolute;left:0;right:0;top:50%;transform:translateY(-55%);text-align:center}
.dv-rays{position:absolute;left:50%;top:130px;width:560px;height:560px;margin:-280px 0 0 -280px;background:repeating-conic-gradient(from 0deg,rgba(255,215,130,.22) 0 5deg,transparent 5deg 15deg);-webkit-mask:radial-gradient(circle,#000 20%,transparent 65%);mask:radial-gradient(circle,#000 20%,transparent 65%);opacity:0;animation:dvspin 50s linear infinite}
#gate.lz.open .dv-rays{opacity:1;transition:opacity 1.2s 3.1s}
.dv-frame{position:relative;width:240px;height:240px;margin:10px auto 0;border-radius:50%;padding:0;box-shadow:0 0 0 3px #e9c46a,0 0 0 9px rgba(233,196,106,.25),0 0 50px 12px rgba(255,200,110,.55);overflow:hidden;opacity:0;transform:translateY(30px) scale(.9)}
#gate.lz.open .dv-frame{animation:dvrise 1.1s cubic-bezier(.2,.8,.3,1) 3.1s forwards}
@keyframes dvrise{to{opacity:1;transform:none}}
.dv-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;-webkit-mask:radial-gradient(circle,#000 62%,rgba(0,0,0,.75) 72%);mask:radial-gradient(circle,#000 62%,rgba(0,0,0,.75) 72%)}
.dv-frame .b{opacity:0}
#gate.lz.open .dv-frame .b{animation:dvin 1.1s ease 6.4s forwards}
.dv-jay{margin:22px 0 0;font-family:"Great Vibes",cursive;font-size:clamp(44px,12vw,64px);line-height:1.15;background:linear-gradient(100deg,#c8902e 0%,#f2d58a 35%,#fff6d8 50%,#f2d58a 65%,#c8902e 100%);background-size:260% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;color:transparent;clip-path:inset(-30% 100% -30% -10%);filter:drop-shadow(0 2px 6px rgba(40,0,10,.5))}
html[lang=gu] .dv-jay{font-family:"Noto Sans Gujarati";font-weight:600;font-size:clamp(32px,9vw,46px)}
#gate.lz.open .dv-jay{animation:jwwrite 1.9s cubic-bezier(.4,.1,.3,1) 3.7s forwards,jwshine 1.8s ease-in-out 5.7s forwards}
.dv-sub{margin:6px 0 0;font-family:"Cormorant Garamond",serif;font-size:20px;letter-spacing:.18em;text-transform:uppercase;color:#f6dca0;opacity:0}
html[lang=gu] .dv-sub{font-family:"Noto Sans Gujarati";letter-spacing:0;text-transform:none}
#gate.lz.open .dv-sub{animation:dvin .9s ease 6.8s forwards}
#gate.lz.open .dv-stage{animation:dvout .7s ease 8.9s forwards}
@keyframes dvout{to{opacity:0;transform:translateY(-58%) scale(.94)}}
.dv-c{position:absolute;inset:0;opacity:0;clip-path:inset(24% 7% 24% 7% round 20px)}
#gate.lz.open .dv-c{animation:dvin .8s ease 9.2s forwards,dvexp 1.3s cubic-bezier(.6,0,.2,1) 10.4s forwards}
@keyframes dvexp{to{clip-path:inset(0 0 0 0 round 0)}}
.dv-cf{position:absolute;inset:24% 7%;border:3px solid #e9c46a;border-radius:20px;box-shadow:inset 0 0 30px rgba(255,210,120,.6)}
#gate.lz.open .dv-cf{animation:dvfade .8s ease 10.4s forwards}
@keyframes dvfade{to{opacity:0}}
.dv-door{position:absolute;inset:0}
.dv-door.l{clip-path:inset(0 50% 0 0)}.dv-door.r{clip-path:inset(0 0 0 50%)}
.dv-dbg{position:absolute;inset:0;background:url(intro-dblur.jpg) center/cover;filter:brightness(.7)}
.dv-door img{position:absolute;left:0;top:50%;width:100%;height:auto;transform:translateY(-50%)}
@media (min-aspect-ratio:1/1){.dv-door img{left:50%;top:0;height:100%;width:auto;transform:translateX(-50%)}}

@keyframes dvl{to{transform:translateX(-100%)}}@keyframes dvr{to{transform:translateX(100%)}}
.dv-bloom{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,246,220,.95),rgba(255,220,160,.5) 30%,transparent 60%);opacity:0}

@keyframes dvbloom{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
#gate.lz.open .lz-rays,#gate.lz.open .lz-ring{transition-delay:0s}
@media (prefers-reduced-motion:reduce){.dv-intro{display:none}}
/* card: richer rose-ivory damask */
body{background:#e9c2bf url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cg fill='none' stroke='%23b0606a' stroke-opacity='.18'%3E%3Cpath d='M32 8c8 8 8 16 0 24c-8-8-8-16 0-24zM32 56c8-8 8-16 0-24c-8 8-8 16 0 24zM8 32c8-8 16-8 24 0c-8 8-16 8-24 0zM56 32c-8-8-16-8-24 0c8 8 16 8 24 0z'/%3E%3Ccircle cx='32' cy='32' r='3'/%3E%3C/g%3E%3C/svg%3E")}
.sheet{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cg fill='none' stroke='%23c07a7e' stroke-opacity='.12'%3E%3Cpath d='M45 15c10 10 10 20 0 30c-10-10-10-20 0-30zM45 75c10-10 10-20 0-30c-10 10-10 20 0 30zM15 45c10-10 20-10 30 0c-10 10-20 10-30 0zM75 45c-10-10-20-10-30 0c10 10 20 10 30 0z'/%3E%3Ccircle cx='45' cy='45' r='4'/%3E%3Ccircle cx='0' cy='0' r='6'/%3E%3Ccircle cx='90' cy='90' r='6'/%3E%3C/g%3E%3C/svg%3E"),linear-gradient(180deg,#fdeeea 0%,#f8dcd8 50%,#fbe8e4 100%);box-shadow:0 0 0 2px #d9a088,0 0 0 7px #fae3df,0 0 0 9px #a8654f,0 0 0 11px #e7b59c,0 22px 50px rgba(110,30,40,.3)}

.dv-frame{flex:none;width:240px!important;height:240px!important;aspect-ratio:1/1}
#gate.lz.gone{opacity:0;transition:opacity .5s 1.15s;background:transparent!important}
#gate.lz.gone>*:not(.dv-intro),#gate.lz.gone .dv-intro>*:not(.dv-c):not(.dv-bloom){opacity:0!important;transition:opacity .3s}
#gate.lz.gone .dv-door.l{animation:dvl 1.2s cubic-bezier(.7,0,.3,1) .1s forwards}
#gate.lz.gone .dv-door.r{animation:dvr 1.2s cubic-bezier(.7,0,.3,1) .1s forwards}
#gate.lz.gone .dv-bloom{animation:dvbloom 1s ease forwards}
.ash-sky{background:radial-gradient(ellipse 70% 60% at 50% 35%,rgba(255,240,228,.95) 0%,rgba(250,222,214,.5) 45%,transparent 75%)!important}

/* === Sky of Diyas (test) === */
#gate.lz.sky{background:linear-gradient(180deg,#070a22 0%,#0f1238 38%,#2a0f3a 66%,#6a0f2a 88%,#8e1430 100%)}
#sky{position:absolute;inset:0;z-index:1;pointer-events:none}
#gate.sky .lz-stage,#gate.sky .lz-rays,#gate.sky .lz-ring,#gate.sky .lz-burst,#gate.sky .lz-flash,#gate.sky .dv-bg,#gate.sky .dv-mand,#gate.sky .dv-bok,#gate.sky .dv-rays{display:none!important}
#gate.sky .lz-top,#gate.sky .lz-bottom{position:relative;z-index:25}
#gate.sky .dv-intro{background:none}
#gate.lz.sky.open .dv-intro{animation:dvin .3s ease 0s forwards}
#gate.sky .dv-pet{opacity:0}
#gate.lz.sky.open .dv-pet{animation:dvin 1s ease 11.6s forwards}
#gate.sky .dv-frame{box-shadow:0 0 0 2px rgba(255,226,160,.9),0 0 40px 14px rgba(255,214,140,.65)}
#gate.lz.sky.open .dv-frame{animation:dvrise 1.3s cubic-bezier(.2,.8,.3,1) 5.2s forwards}
#gate.lz.sky.open .dv-frame .b{animation:dvin 1.1s ease 8.9s forwards}
#gate.lz.sky.open .dv-jay{animation:jwwrite 1.9s cubic-bezier(.4,.1,.3,1) 5.9s forwards,jwshine 1.8s ease-in-out 7.9s forwards}
#gate.sky .dv-jay{filter:drop-shadow(0 2px 8px rgba(10,0,30,.9))}
#gate.lz.sky.open .dv-sub{animation:dvin .9s ease 9.3s forwards}
#gate.sky .dv-sub{text-shadow:0 2px 8px rgba(10,0,30,.9)}
#gate.lz.sky.open .dv-stage{animation:dvout .6s ease 11.3s forwards}
#gate.lz.sky.open .dv-c{animation:dvin .8s ease 11.9s forwards,dvexp 1.3s cubic-bezier(.6,0,.2,1) 13.0s forwards}
#gate.lz.sky.open .dv-cf{animation:dvfade .8s ease 13.0s forwards}
#gate.sky .dv-jay{margin-top:84px}
/* sky v2 timing (12s, no darshan doors) */
#gate.lz.sky.open .dv-pet{animation:dvin 1s ease 9.4s forwards}
#gate.lz.sky.open .dv-frame{animation:dvrise 1.2s cubic-bezier(.2,.8,.3,1) 4.3s forwards}
#gate.lz.sky.open .dv-frame .b{animation:dvin 1.1s ease 7.6s forwards}
#gate.lz.sky.open .dv-jay{animation:jwwrite 1.8s cubic-bezier(.4,.1,.3,1) 4.9s forwards,jwshine 1.6s ease-in-out 6.8s forwards}
#gate.lz.sky.open .dv-sub{animation:dvin .9s ease 7.9s forwards}
#gate.lz.sky.open .dv-stage{animation:dvout .6s ease 9.2s forwards}
#gate.lz.sky.gone{transition:opacity .7s .45s}
#gate.sky .dv-bloom{background:radial-gradient(circle at 50% 45%,rgba(255,248,228,1),rgba(255,214,150,.75) 35%,rgba(255,180,120,0) 75%)}
#gate.lz.sky.gone .dv-bloom{animation:dvbloom2 1.2s ease forwards}
@keyframes dvbloom2{0%{opacity:0;transform:scale(.3)}45%{opacity:1;transform:scale(1.4)}100%{opacity:0;transform:scale(2.2)}}
/* card: Darshan of Bapa photo */
.dmo{position:relative;margin:30px auto 40px;width:min(80%,320px);text-align:center}
.dmo-lotus{position:absolute;left:50%;top:44%;width:150%;height:auto;transform:translate(-50%,-50%);overflow:visible;pointer-events:none}
.dmo .lp{fill:url(#dmoG);stroke:#a8701e;stroke-width:1.2;opacity:0;transform:translateY(40px)}
.dmo .lp.s{fill:#f3c9c2;stroke:#c98a7a}
.dmo.on .lp{animation:dmoP .7s cubic-bezier(.2,.8,.3,1) calc(.5s + var(--i)*.08s) forwards}
@keyframes dmoP{to{opacity:.9;transform:none}}
.dmo-ph{position:relative;overflow:hidden;border-radius:48% 48% 16px 16px/34% 34% 16px 16px;box-shadow:0 0 0 3px #e9c46a,0 0 0 7px rgba(255,241,210,.9),0 0 0 9px #c48a3a,0 14px 34px rgba(110,30,40,.35);opacity:0;transform:scale(.9)}
.dmo-ph img{display:block;width:100%;height:auto}
.dmo.on .dmo-ph{animation:dmoIn 1s cubic-bezier(.2,.8,.3,1) .2s forwards,dmoFl 6s ease-in-out 2.6s infinite}
@keyframes dmoIn{to{opacity:1;transform:none}}
@keyframes dmoFl{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.dmo-sh{position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,rgba(255,240,200,.55) 48%,rgba(255,255,255,.75) 50%,rgba(255,240,200,.55) 52%,transparent 70%);transform:translateX(-130%)}
.dmo.on .dmo-sh{animation:dmoSh 1.4s ease-in-out 1.7s forwards}
@keyframes dmoSh{to{transform:translateX(130%)}}
.dmo-pet{position:absolute;inset:0;pointer-events:none}
.dmo-pet i{position:absolute;left:50%;top:45%;width:12px;height:15px;border-radius:50% 50% 50% 50%/42% 42% 58% 58%;background:linear-gradient(to top,rgba(70,0,12,.45),transparent 50%,rgba(255,235,238,.3)),var(--c);opacity:0}
.dmo.on .dmo-pet i{animation:dmoSw 1.8s cubic-bezier(.3,.6,.4,1) var(--d) forwards}
@keyframes dmoSw{0%{opacity:0;transform:translate(var(--sx),var(--sy)) rotate(0)}25%{opacity:1}100%{opacity:0;transform:translate(calc(var(--sy)*.25),calc(var(--sx)*-.2)) rotate(540deg) scale(.6)}}
.dmo figcaption{position:relative;margin-top:14px;font-family:"Great Vibes",cursive;font-size:30px;color:#9a5a14}
html[lang=gu] .dmo figcaption{font-family:"Noto Sans Gujarati";font-size:19px;font-weight:600}
@media (prefers-reduced-motion:reduce){.dmo .lp{opacity:.9;transform:none;animation:none!important}.dmo-ph{opacity:1;transform:none;animation:none!important}.dmo-pet,.dmo-sh{display:none}}
