/* Dev & Shivani: original stylesheet (Genriva demo) */
:root{
  --navy:#0d2346; --navy2:#12305d; --teal:#7fbfb2; --teal-d:#1f5e57; --plum:#3a2350; --plum-d:#2a173c;
  --cream:#fbf1d4; --gold:#e1b85e; --gold-l:#f7e2a1; --gold-d:#a8782a; --ink:#2b1d0e; --rose:#7a1f3d;
  --f-disp:"Cinzel Decorative","Cinzel",serif; --f-cap:"Cinzel",serif; --f-body:"EB Garamond",Georgia,serif;
  --f-script:"Great Vibes",cursive; --f-dev:"Tiro Devanagari Hindi",serif;
  --ease:cubic-bezier(.2,.7,.1,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--f-body);font-size:18px;line-height:1.6;color:#f6ecd4;background:var(--navy);overflow-x:hidden}
body.is-locked{overflow:hidden;height:100svh}
img{display:block;max-width:100%}
button{font:inherit;cursor:pointer}
.wrap{width:min(1080px,100% - 40px);margin-inline:auto;position:relative;z-index:2}
.center{text-align:center}
.ph{font-style:italic;border-bottom:1px dashed currentColor;opacity:.9}
.ph-inline{font-size:.8em;opacity:.7}
.note-ph{font-size:.82rem;letter-spacing:.04em;opacity:.75;font-style:italic;margin:.8rem auto 0;max-width:560px}

/* ---------- gold text ---------- */
.shimmer,.display,.script,.names{background:linear-gradient(100deg,#b07d25 0%,#f7e2a1 20%,#d9a945 40%,#fff3c4 50%,#c99536 62%,#f3d98a 80%,#a8782a 100%);
  background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 7s linear infinite}
@keyframes shine{to{background-position:-250% 0}}

/* ---------- star fields ---------- */
[data-stars]{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.star{position:absolute;width:var(--s);height:var(--s);animation:twinkle var(--t) ease-in-out infinite;animation-delay:var(--d)}
.star svg{width:100%;height:100%}
.dot-star{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff6d8;opacity:.7;animation:twinkle var(--t) ease-in-out infinite;animation-delay:var(--d)}
@keyframes twinkle{0%,100%{opacity:.25;transform:scale(.7) rotate(0)}50%{opacity:1;transform:scale(1.1) rotate(20deg)}}

/* ---------- INTRO doors ---------- */
.intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;perspective:1600px;background:radial-gradient(ellipse at 50% 40%,#183c72,#081631 70%)}
.door{position:absolute;top:0;bottom:0;width:50.5%;transition:transform 1.8s var(--ease),opacity 1.8s ease;transform-style:preserve-3d}
.door--l{left:0;transform-origin:left center}.door--r{right:0;transform-origin:right center}
.door__panel{position:absolute;inset:0;background:url(../img/pattern-navy.svg) repeat,var(--navy);background-size:90px;
  border:10px solid transparent;border-image:linear-gradient(180deg,#f6dc93,#b07d25,#f3d98a,#a8782a) 1;box-shadow:inset 0 0 80px #050d1f}
.door--l .door__panel{border-right-width:4px}.door--r .door__panel{border-left-width:4px}
.door__mandala{position:absolute;width:min(70vw,360px);height:min(70vw,360px);top:50%;opacity:.35}
.door--l .door__mandala{right:0;transform:translate(50%,-50%)}.door--r .door__mandala{left:0;transform:translate(-50%,-50%)}
.intro__card{position:relative;z-index:3;text-align:center;padding:40px 24px;max-width:420px;transition:opacity .8s ease,transform 1s var(--ease)}
.intro__ganesh-ring{position:absolute;width:520px;height:520px;left:50%;top:50%;transform:translate(-50%,-50%);opacity:.18;animation:spin 60s linear infinite;z-index:-1}
.intro__om{font-family:var(--f-dev);color:var(--gold-l);font-size:1.05rem;letter-spacing:.06em;margin-bottom:14px}
.intro__dear{font-family:var(--f-script);font-size:2.2rem;color:var(--gold-l);line-height:1.1}
.intro__line{font-family:var(--f-cap);font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;opacity:.85;margin:8px 0 6px}
.intro__names{font-family:var(--f-script);font-weight:400;font-size:clamp(3.2rem,13vw,5rem);line-height:1;display:flex;gap:.2em;justify-content:center;align-items:baseline;
  background:linear-gradient(100deg,#b07d25,#f7e2a1,#d9a945,#fff3c4,#c99536);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 6s linear infinite}
.intro__names em{font-size:.6em;font-style:normal}
.seal{position:relative;margin:26px auto 10px;width:108px;height:108px;border:0;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#b8344f,#7a1f3d 55%,#4a0f22);box-shadow:0 10px 30px #0008,inset 0 -6px 14px #0006,inset 0 6px 10px #fff3;
  display:grid;place-items:center;animation:pulse 2.4s ease-in-out infinite}
.seal__ring{position:absolute;inset:9px;border-radius:50%;border:2px dashed #f3d98a99}
.seal__txt{font-family:var(--f-disp);font-size:1.6rem;color:var(--gold-l);text-shadow:0 2px 0 #3a0a18}
.seal__txt i{font-family:var(--f-script);font-style:normal;font-size:1.1em;margin:0 2px}
@keyframes pulse{0%,100%{transform:scale(1);box-shadow:0 10px 30px #0008,0 0 0 0 #e1b85e66}50%{transform:scale(1.05);box-shadow:0 10px 30px #0008,0 0 0 18px #e1b85e00}}
.intro__tap{font-family:var(--f-cap);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;opacity:.7}
.intro.is-open .door--l{transform:rotateY(-105deg);opacity:.0}
.intro.is-open .door--r{transform:rotateY(105deg);opacity:.0}
.intro.is-open .intro__card{opacity:0;transform:scale(1.15)}
.intro.is-open{background:transparent;pointer-events:none;transition:background 1.2s ease 0.4s}
.intro.is-gone{display:none}

/* ---------- music ---------- */
.music{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:60;width:54px;height:54px;border-radius:50%;border:1.5px solid var(--gold);
  background:#0d2346d9;backdrop-filter:blur(6px);color:var(--gold-l);display:grid;place-items:center;box-shadow:0 6px 20px #0006;opacity:0;transform:scale(.6);transition:.5s var(--ease)}
.music.show{opacity:1;transform:none}
.music svg{width:24px;height:24px}
.music__bars{position:absolute;bottom:9px;display:flex;gap:2px;opacity:0}
.music__bars i{width:3px;height:6px;background:var(--gold-l);border-radius:2px;animation:bars .9s ease-in-out infinite}
.music__bars i:nth-child(2){animation-delay:.2s}.music__bars i:nth-child(3){animation-delay:.4s}
.music.playing .music__bars{opacity:1}.music.playing svg{transform:translateY(-5px) scale(.85)}
.music.missing{border-style:dashed}
@keyframes bars{50%{height:12px}}

/* ---------- HERO diorama ---------- */
.hero{position:relative;height:210svh;background:linear-gradient(180deg,#081631,#0d2346 60%,#0f2a52)}
.hero__pin{position:sticky;top:0;height:100svh;overflow:hidden}
.hero__sky{z-index:0}
.hero__moon{position:absolute;width:min(22vw,130px);height:min(22vw,130px);top:6%;right:8%;z-index:1}
.hero__title{position:absolute;top:calc(3.5svh + env(safe-area-inset-top));left:0;right:0;text-align:center;z-index:5;will-change:transform,opacity}
.kicker{font-family:var(--f-cap);font-size:.74rem;letter-spacing:.32em;text-transform:uppercase;color:var(--gold-l);opacity:.9}
.names{font-family:var(--f-script);font-weight:400;font-size:clamp(3.6rem,15vw,7.5rem);line-height:.95;filter:drop-shadow(0 3px 8px #0009)}
.weds{font-family:var(--f-cap);letter-spacing:.5em;font-size:.8rem;color:var(--gold-l);margin:.1rem 0 .2rem;text-indent:.5em}
.hero__date{font-family:var(--f-cap);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;margin-top:.6rem;color:#f6ecd4cc}
.stage{position:absolute;left:0;right:0;bottom:0;height:64svh;z-index:3}
.stage__scene{position:absolute;inset:6% 6% 0;overflow:hidden;will-change:transform;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 16%),linear-gradient(to right,transparent,#000 7%,#000 93%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,transparent,#000 16%),linear-gradient(to right,transparent,#000 7%,#000 93%,transparent);mask-composite:intersect}
.stage__scene img{width:100%;height:100%;object-fit:cover;object-position:50% 40%;transform:scale(var(--zoom,1.25));transition:transform .1s linear}
.arch{position:absolute;top:0;bottom:0;width:50.2%;background:url(../img/arch.svg) no-repeat;background-size:200% 100%;z-index:4;will-change:transform;filter:drop-shadow(0 0 20px #0008)}
.arch--l{left:0;background-position:left top}
.arch--r{right:0;background-position:right top}
.balloon{position:absolute;z-index:5;filter:drop-shadow(0 8px 10px #0007)}
.b1{width:clamp(60px,14vw,120px);height:clamp(100px,23vw,200px);left:7%;top:-26%}
.b2{width:clamp(36px,8vw,70px);height:clamp(60px,13vw,117px);right:12%;top:-14%}
.cloud{position:absolute;z-index:5;filter:drop-shadow(0 6px 8px #0005)}
.c1{width:clamp(140px,34vw,300px);height:auto;aspect-ratio:220/90;left:-6%;bottom:16%}
.c2{width:clamp(120px,28vw,260px);height:auto;aspect-ratio:220/90;right:-5%;bottom:30%}
.lantern{position:absolute;z-index:6;width:clamp(26px,6vw,46px);height:auto;aspect-ratio:60/130;top:2%;transform-origin:top center}
.l1{left:14%}.l2{right:14%}
.petals{position:absolute;inset:0;z-index:7;pointer-events:none;width:100%;height:100%}
.scroll-cue{position:absolute;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:8;color:var(--gold-l);font-family:var(--f-cap);font-size:.65rem;letter-spacing:.3em;text-decoration:none;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:6px}
.scroll-cue span{width:22px;height:34px;border:1.5px solid var(--gold);border-radius:12px;position:relative}
.scroll-cue span::after{content:"";position:absolute;left:50%;top:6px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--gold-l);animation:cue 1.6s infinite}
@keyframes cue{to{transform:translateY(12px);opacity:0}}

/* ---------- bands ---------- */
.band{position:relative;padding:110px 0 90px;background-size:110px}
.band--navy{background:url(../img/pattern-navy.svg) repeat,var(--navy);background-size:120px;color:#f6ecd4}
.band--teal{background:url(../img/pattern-teal.svg) repeat,var(--teal);background-size:120px;color:#10332e}
.band--plum{background:url(../img/pattern-plum.svg) repeat,var(--plum);background-size:120px;color:#f3e9f7}
.band--cream{background:url(../img/pattern-cream.svg) repeat,var(--cream);background-size:120px;color:var(--ink)}
.band + .band--navy,.band.events{padding-top:20px}
.band.gallery,.band.route,.band.know,.band.follow{padding-top:40px}
.scallop{position:absolute;left:0;right:0;height:46px;z-index:1;pointer-events:none}
.scallop--top{top:-45px;background:radial-gradient(circle at 50% 100%,currentColor 0 22px,transparent 23px) 0 0/46px 46px repeat-x}
.band--navy>.scallop{color:var(--navy)} .band--teal>.scallop{color:var(--teal)} .band--plum>.scallop{color:var(--plum)} .band--cream>.scallop{color:var(--cream)}
.scallop::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:3px;background:linear-gradient(90deg,transparent,var(--gold),var(--gold-l),var(--gold),transparent)}

.sticker{position:absolute;z-index:1;pointer-events:none}
.moon-s{width:90px;height:90px;left:4%;top:60px}
.balloon-s{width:60px;height:100px;right:6%;top:120px}
.lantern-s{width:34px;height:74px;left:8%;top:-20px}.lantern-s2{width:30px;height:66px;right:9%;top:-24px}

.ganesh{position:relative;width:min(58vw,250px);aspect-ratio:1;margin:0 auto 18px}
.ganesh img{position:absolute;inset:14%;width:72%;height:72%;border-radius:50%;object-fit:cover;box-shadow:0 0 0 3px var(--gold),0 0 40px #e1b85e55}
.ganesh__ring{position:absolute;inset:0;width:100%;height:100%}
.mantra{font-family:var(--f-dev);font-size:clamp(1.4rem,5vw,1.9rem);color:var(--gold-l);letter-spacing:.03em}
.mantra-sub{font-family:var(--f-dev);font-size:.95rem;opacity:.8;margin-top:6px}
.flourish{width:min(300px,80%);height:40px;margin:26px auto;display:block}
.blessing{font-size:1.1rem;opacity:.95}
.blessing b{font-weight:500;color:var(--gold-l)}
.personal{margin:34px auto 6px;padding:18px 24px;max-width:520px;border:1px solid #e1b85e55;border-radius:14px;background:#0a1a36aa}
.personal__dear{font-family:var(--f-script);font-size:2.4rem;line-height:1.1;color:var(--gold-l)}
.personal__msg{font-style:italic;opacity:.9}
.display{font-family:var(--f-disp);font-weight:400;font-size:clamp(2.6rem,10vw,4.6rem);line-height:1.05;letter-spacing:.04em;margin-top:28px}
.display--dark{background-image:linear-gradient(100deg,#0c3c37,#1f6b62,#0c3c37,#2f8b80,#0c3c37)}
.display--plum{background-image:linear-gradient(100deg,#3a2350,#7a4f9e,#3a2350,#a26fc7,#3a2350)}
.display--sm{font-size:clamp(1.7rem,6vw,2.4rem);margin-top:6px}
.lead{font-size:1.15rem;font-style:italic;opacity:.92;margin:.4rem auto;max-width:560px}
.lead--dark{color:#4a3424}
.couple{display:grid;gap:8px;margin:24px 0}
.script{font-family:var(--f-script);font-weight:400;font-size:clamp(3rem,12vw,5rem);line-height:1.05}
.script--plum{background-image:linear-gradient(100deg,#3a2350,#8f5fb5,#3a2350)}
.parent{font-family:var(--f-cap);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;opacity:.85}
.couple__and{font-family:var(--f-script);font-size:3rem;color:var(--gold)}

/* ---------- events ---------- */
.events__grid{display:grid;gap:64px 34px;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));width:min(1180px,100% - 40px);margin:46px auto 0}
.ev{position:relative;text-align:center}
.ev__frame{position:relative;width:min(300px,82vw);margin:0 auto;aspect-ratio:3/4.1}
.ev__img{position:absolute;inset:0;border-radius:999px 999px 26px 26px;overflow:hidden;border:5px solid transparent;
  background:linear-gradient(var(--navy),var(--navy)) padding-box,linear-gradient(160deg,#f6dc93,#b07d25,#f3d98a,#a8782a) border-box;box-shadow:0 18px 40px #0009,0 0 0 9px #0d234699,0 0 0 11px #e1b85e88}
.ev__img img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 1.4s var(--ease)}
.ev.is-in .ev__img img{transform:scale(1)}
.ev:hover .ev__img img{transform:scale(1.05)}
.ev__badge{position:absolute;left:50%;top:-22px;transform:translateX(-50%);width:56px;height:56px;z-index:3}
.ev__moon{position:absolute;width:64px;height:64px;right:-18px;top:22%;z-index:3}
.ev__cloud{position:absolute;width:130px;height:54px;left:-34px;bottom:12%;z-index:3}
.ev__balloon{position:absolute;width:40px;height:66px;right:-6px;top:-30px;z-index:3}
.ev__marigold{position:absolute;width:42px;height:42px;z-index:3}
.ev__marigold.m1{left:-8px;top:40%}.ev__marigold.m2{right:6px;bottom:-12px}
.ev h3{font-family:var(--f-disp);font-weight:400;font-size:2.2rem;margin-top:20px;color:var(--gold-l);letter-spacing:.04em}
.ev__hindi{font-family:var(--f-dev);color:var(--gold);font-size:1rem;margin-top:-4px}
.ev__meta{list-style:none;margin:10px 0 14px;font-size:1.02rem}
.ev__meta li{opacity:.92}
.ev__meta .ph{opacity:.95}
.ev__dress{font-size:.86rem;font-style:italic;opacity:.8}
.chip{display:inline-block;width:12px;height:12px;border-radius:50%;margin:0 2px;vertical-align:-1px;border:1px solid #fff6}
.btn{display:inline-flex;align-items:center;gap:8px;padding:.7rem 1.4rem;border-radius:999px;font-family:var(--f-cap);font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;border:0;transition:transform .3s var(--ease),box-shadow .3s}
.btn:hover{transform:translateY(-2px)}
.btn--gold{background:linear-gradient(120deg,#f6dc93,#c99536,#f3d98a);color:#3a2408;box-shadow:0 6px 18px #0005}
.btn--line{border:1.3px solid var(--gold);color:var(--gold-l);background:transparent}
.btn--plum{background:linear-gradient(120deg,#5a3577,#3a2350);color:#f7e2a1;box-shadow:0 6px 18px #3a235055;width:100%;justify-content:center;padding:1rem}

/* ---------- story ---------- */
.story__art{position:relative;width:min(1000px,100% - 40px);margin:30px auto 50px}
.story__frame{border-radius:200px 200px 24px 24px;overflow:hidden;border:6px solid #1f5e57;box-shadow:0 0 0 3px var(--gold),0 24px 50px #0005;aspect-ratio:16/9}
.story__frame img{width:100%;height:118%;object-fit:cover;will-change:transform}
.corner{position:absolute;width:70px;height:70px;z-index:3}
.c-tl{left:-14px;top:-14px}.c-tr{right:-14px;top:-14px;transform:scaleX(-1)}.c-bl{left:-14px;bottom:-14px;transform:scaleY(-1)}.c-br{right:-14px;bottom:-14px;transform:scale(-1)}
.timeline{list-style:none;position:relative;max-width:760px;margin:0 auto;padding:10px 0}
.timeline::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(#1f5e5700,#1f5e57,#1f5e5700)}
.timeline li{position:relative;width:50%;padding:14px 34px;background:none}
.timeline li:nth-child(odd){text-align:right}
.timeline li:nth-child(even){margin-left:50%}
.tl__dot{position:absolute;top:24px;width:16px;height:16px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 5px #fbf1d4aa}
.timeline li:nth-child(odd) .tl__dot{right:-8px}.timeline li:nth-child(even) .tl__dot{left:-8px}
.timeline h4{font-family:var(--f-disp);font-weight:700;font-size:1.3rem;color:#123f39}
.timeline p{color:#173e39}
.couple-note{max-width:640px;margin:40px auto 0;text-align:center;font-size:1.35rem;font-style:italic;color:#123f39}
.couple-note cite{display:block;font-family:var(--f-script);font-size:2.2rem;font-style:normal;color:var(--teal-d);margin-top:6px}

/* ---------- gallery ---------- */
.gallery__grid{width:min(1080px,100% - 32px);margin:34px auto 0;display:grid;gap:14px;grid-template-columns:repeat(2,1fr);grid-auto-rows:180px}
.g{position:relative;overflow:hidden;border-radius:18px;border:4px solid #fbf1d4;box-shadow:0 12px 30px #0d3a3455;cursor:zoom-in}
.g img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.g:hover img{transform:scale(1.07)}
.g--tall{grid-row:span 2}.g--wide{grid-column:span 2}
@media(min-width:800px){.gallery__grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:220px}.g--wide{grid-column:span 2}}
.lightbox{position:fixed;inset:0;z-index:90;background:#081631ee;display:grid;place-items:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .4s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-height:88vh;border-radius:14px;border:3px solid var(--gold);transform:scale(.9);transition:transform .5s var(--ease)}
.lightbox.open img{transform:none}

/* ---------- medallions ---------- */
.medallion{position:relative;width:min(380px,88vw);aspect-ratio:1;margin:0 auto;display:grid;place-items:center}
.medallion__ring{position:absolute;inset:0;width:100%;height:100%}
.medallion__inner{position:relative;width:80%;aspect-ratio:1;border-radius:50%;display:grid;place-content:center;text-align:center;padding:24px;
  background:radial-gradient(circle,#123f6e,#0d2346);border:4px solid var(--gold);box-shadow:0 0 0 8px #0d234699,0 20px 50px #0007;color:#f6ecd4}
.medallion--plum .medallion__inner{background:radial-gradient(circle,#5a3577,#2a173c)}
.medallion__icon{width:40px;height:40px;margin:0 auto 4px;color:var(--gold)}
.venue-name{font-size:1.15rem;margin-top:4px}
.venue-addr{font-size:.9rem;opacity:.8;margin-bottom:14px}
.venue-art{position:relative;width:min(760px,100% - 40px);margin:40px auto 0;height:260px;border-radius:24px;overflow:hidden;border:4px solid #fbf1d4;box-shadow:0 16px 40px #0d3a3455}
.venue-art__img{position:absolute;inset:-10%;background-size:cover;background-position:50% 55%}
.venue-art__pin{position:absolute;left:62%;top:38%;width:46px;height:46px;color:#b8344f;filter:drop-shadow(0 6px 6px #0006)}

/* ---------- countdown ---------- */
.clock{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:620px;margin:30px auto 0}
.clock div{padding:18px 4px;border-radius:16px;background:#2a173cc0;border:1px solid #e1b85e66;box-shadow:inset 0 0 20px #0004}
.clock b{display:block;font-family:var(--f-cap);font-weight:600;font-size:clamp(1.8rem,8vw,3.2rem);color:var(--gold-l);line-height:1}
.clock span{font-family:var(--f-cap);font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;opacity:.8}
.flip{animation:flip .5s var(--ease)}
@keyframes flip{0%{transform:rotateX(90deg);opacity:.2}100%{transform:none;opacity:1}}

/* ---------- know ---------- */
.know__grid{width:min(1080px,100% - 32px);margin:36px auto 0;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}
.tile{text-align:center;padding:26px 18px;border-radius:20px;background:#2a173cb3;border:1px solid #e1b85e55;transition:transform .4s var(--ease),box-shadow .4s}
.tile:hover{transform:translateY(-6px);box-shadow:0 14px 30px #0006}
.tile svg{width:44px;height:44px;color:var(--gold)}
.tile h4{font-family:var(--f-disp);font-weight:400;font-size:1.5rem;color:var(--gold-l);margin:6px 0}
.tile p{font-size:1rem;opacity:.9}
.tile b{color:var(--gold-l);font-weight:500}

/* ---------- RSVP ---------- */
.diya{width:80px;height:60px;margin:0 auto;display:block;filter:drop-shadow(0 0 12px #ffcf4a88)}
.rsvp__card{position:relative;width:min(560px,100% - 32px);margin:30px auto 0;padding:34px 24px;border-radius:24px;background:#fffaf0f2;border:2px solid var(--gold);box-shadow:0 20px 50px #a8782a33;display:grid;gap:16px;color:var(--ink)}
.rsvp__card label{display:grid;gap:6px;font-family:var(--f-cap);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:#5a3d1a}
.rsvp__card input:not([type=radio]):not([type=checkbox]),.rsvp__card select,.rsvp__card textarea{font:inherit;font-family:var(--f-body);font-size:1.05rem;letter-spacing:0;text-transform:none;padding:.7rem .9rem;border-radius:12px;border:1px solid #d8b35f;background:#fff;color:var(--ink);width:100%}
.rsvp__card input:focus,.rsvp__card select:focus,.rsvp__card textarea:focus{outline:2px solid #7a4f9e55;border-color:#7a4f9e}
fieldset{border:0;display:flex;flex-wrap:wrap;gap:8px}
legend{font-family:var(--f-cap);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:#5a3d1a;margin-bottom:8px;width:100%}
.choice label,.events-pick label{display:inline-flex;flex-direction:row;align-items:center;gap:0;font-family:var(--f-body);font-size:1rem;letter-spacing:0;text-transform:none}
.choice input,.events-pick input{position:absolute;opacity:0}
.choice span,.events-pick span{padding:.5rem 1rem;border-radius:999px;border:1px solid #d8b35f;background:#fff;transition:.25s}
.choice input:checked+span,.events-pick input:checked+span{background:linear-gradient(120deg,#5a3577,#3a2350);color:#f7e2a1;border-color:#3a2350}
.choice input:focus-visible+span,.events-pick input:focus-visible+span{outline:2px solid #7a4f9e}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rsvp .note-ph{text-align:center;color:#6b5236}
.rsvp__thanks{text-align:center;margin:30px auto 0;color:var(--ink)}
.heart{width:64px;height:64px;color:#b8344f}
.pop{animation:popin .8s var(--ease)}
@keyframes popin{0%{transform:scale(0)}60%{transform:scale(1.25)}100%{transform:scale(1)}}

/* ---------- footer ---------- */
.follow{padding-bottom:60px}
.footer{background:url(../img/pattern-cream.svg) repeat,var(--cream);background-size:120px;color:#4a3424;text-align:center;padding:10px 20px calc(60px + env(safe-area-inset-bottom))}
.footer__names{font-size:3.2rem;background-image:linear-gradient(100deg,#a8782a,#e1b85e,#a8782a)}
.footer__small{font-family:var(--f-cap);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;margin-top:16px;opacity:.6}

/* ---------- motion utilities ---------- */
.reveal,.reveal-up,.reveal-zoom,.reveal-left,.reveal-right{opacity:0;transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease);transition-delay:var(--delay,0ms)}
.reveal{transform:translateY(24px);filter:blur(6px)}
.reveal-up{transform:translateY(70px)}
.reveal-zoom{transform:scale(.8) rotate(-4deg)}
.reveal-left{transform:translateX(-60px)}.reveal-right{transform:translateX(60px)}
.is-in.reveal,.is-in.reveal-up,.is-in.reveal-zoom,.is-in.reveal-left,.is-in.reveal-right{opacity:1;transform:none;filter:none}
.float{animation:float 6s ease-in-out infinite}
.float-slow{animation:float 9s ease-in-out infinite}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -16px}}
.drift{animation:drift 18s ease-in-out infinite}.drift-rev{animation:drift 22s ease-in-out infinite reverse}
@keyframes drift{0%,100%{translate:0 0}50%{translate:30px 0}}
.sway{animation:sway 4s ease-in-out infinite;transform-origin:top center}.sway-rev{animation:sway 5s ease-in-out infinite reverse;transform-origin:top center}
@keyframes sway{0%,100%{rotate:-6deg}50%{rotate:6deg}}
.spin-slow{animation:spin 80s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.intro__ganesh-ring.spin-slow,.intro__ganesh-ring{animation:spin2 60s linear infinite}
@keyframes spin2{to{transform:translate(-50%,-50%) rotate(360deg)}}
.bounce{animation:bounce 2s ease-in-out infinite}
@keyframes bounce{0%,100%{translate:0 0}50%{translate:0 -12px}}

@media (min-width:900px){
  body{font-size:19px}
  .stage{height:70svh;width:min(820px,70vw);left:50%;right:auto;transform:translateX(-50%)}
  .hero__title{top:4svh}
  .names{font-size:clamp(4rem,8vw,7rem)}
  .couple{grid-template-columns:1fr auto 1fr;align-items:center}
  .row2{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .timeline::before{left:12px}
  .timeline li,.timeline li:nth-child(even){width:100%;margin-left:0;text-align:left;padding:12px 0 12px 40px}
  .timeline li:nth-child(odd) .tl__dot,.timeline li:nth-child(even) .tl__dot{left:4px;right:auto}
  .row2{grid-template-columns:1fr}
  .band{padding:90px 0 70px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,.reveal-up,.reveal-zoom,.reveal-left,.reveal-right{opacity:1;transform:none;filter:none}
  .hero{height:auto}.hero__pin{position:relative;height:100svh}
}
