:root {
  --ink:#393628;--olive:#3d4932;--wine:#801d28;--wine-dark:#5b101c;
  --gold:#c79b4c;--gold-pale:#f1d7a0;--cream:#fff5e3;--navy:#122536;
  --safe-bottom:env(safe-area-inset-bottom, 0px);--dock-h:72px;
  --ui:'DM Sans',Arial,sans-serif;--formal:'Cinzel',Georgia,serif;
  --serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes',cursive;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-snap-type:y proximity;-webkit-tap-highlight-color:transparent}
body{margin:0;color:var(--ink);background:#1c1c1b;font-family:var(--serif);overflow-x:hidden}
body.pre-entry{overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}button,button:focus-visible,a:focus-visible{outline-offset:3px}a{text-decoration:none;color:inherit}
svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;flex-shrink:0}
button{border:0;background:transparent;color:inherit}img{display:block;max-width:100%}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
#particles{pointer-events:none;position:fixed;inset:0;z-index:22;overflow:hidden}
#webgl-sparkles,#flower-petals{width:100%;height:100%;position:absolute;inset:0;opacity:.6}
#flower-petals{opacity:1}
.scene{position:relative;isolation:isolate;min-height:100svh;min-height:100dvh;overflow:hidden;scroll-snap-align:start;display:flex;align-items:center;justify-content:center}
.scene__art{position:absolute;inset:-3%;z-index:-2;background-position:center;background-size:cover;background-repeat:no-repeat;will-change:transform;transform:scale(1.04);filter:saturate(.98)}
.scene__veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(255,249,229,.12),rgba(255,244,224,.05) 50%,rgba(78,44,19,.08))}
.scene__veil--hero{background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,247,221,.06) 35%,rgba(255,247,220,.16))}
.scene__veil--closing{background:rgba(255,245,222,.12)}
.scene__lights{position:absolute;inset:0;pointer-events:none;z-index:-1;mix-blend-mode:screen;background:radial-gradient(circle at 54% 13%,rgba(250,226,139,.28),transparent 22%),radial-gradient(circle at 80% 60%,rgba(255,242,179,.1),transparent 35%);animation:lampPulse 6s ease-in-out infinite alternate}
@keyframes lampPulse{to{opacity:.3;transform:scale(1.05)}}
.eyebrow{font-family:var(--formal);font-size:clamp(.58rem,.95vw,.78rem);font-weight:600;letter-spacing:.15em;line-height:1.7;text-transform:uppercase}
.ornament{display:flex;align-items:center;justify-content:center;gap:13px;color:#a38c4d;font-size:22px;line-height:1;margin:10px auto}
.ornament span{height:1px;width:clamp(35px,10vw,100px);background:linear-gradient(90deg,transparent,#b6975d,transparent)}
/* OPENING: the two halves use the original ceremonial gateway artwork as independent 3D panels. */
.gates{position:fixed;inset:0;z-index:100;isolation:isolate;background:#1b271f;display:flex;align-items:center;justify-content:center;overflow:hidden;perspective:1400px;transition:opacity .6s ease 1.3s,visibility 0s linear 1.9s}
.gates__backdrop{position:absolute;inset:0;z-index:-3;background:#111c1b url('assets/bg/scene_08.webp') center/cover}
.gate-half{position:absolute;width:50.3%;height:110%;top:-5%;z-index:-1;background-image:url('assets/bg/scene_08.webp');background-size:200% 100%;box-shadow:0 0 80px rgba(19,13,8,.55);will-change:transform}
.gate-half--left{left:0;background-position:left center;transform-origin:left center}
.gate-half--right{right:0;background-position:right center;transform-origin:right center}
.gates__content{position:relative;padding:35px 23px 40px;max-width:550px;width:calc(100% - 40px);text-align:center;color:#f7e9cc;z-index:1;text-shadow:0 3px 18px #15211fcc;background:radial-gradient(ellipse,rgba(9,20,20,.90) 0,rgba(9,21,24,.78) 54%,rgba(10,23,23,.34) 100%);border:1px solid rgba(216,185,104,.27);box-shadow:0 0 0 6px rgba(20,16,12,.10),0 15px 80px rgba(0,0,0,.22);backdrop-filter:blur(3px)}
.gates__symbol{font-size:51px;color:var(--gold-pale);animation:floatLotus 4s ease-in-out infinite}
.gates__eyebrow,.gates__family,.gates__date{display:block;font:500 .65rem/1.8 var(--formal);letter-spacing:.1em}
.gates__family{margin:17px 0 0;font-size:.61rem;color:#c9bb98}
.gates__names{font:400 clamp(3.2rem,10vw,6rem)/1.1 var(--script);color:#fff1d0;text-shadow:0 2px 20px rgba(248,212,155,.35);margin:9px 0 3px}
.gates__names em{font:400 .48em var(--serif)}.gates__line{width:95px;height:1px;background:linear-gradient(90deg,transparent,#deb770,transparent);margin:9px auto 15px}
.gates__date{font-size:.73rem;color:#f9dfad}.enter-button{display:inline-flex;align-items:center;justify-content:center;gap:11px;margin-top:25px;padding:14px 26px;font:600 .74rem var(--ui);letter-spacing:.03em;border:1px solid #e8be6f;background:linear-gradient(145deg,#dbb66a,#a9782b);color:#241b10;box-shadow:0 8px 35px rgba(222,169,79,.32);border-radius:100px;transition:transform .3s,box-shadow .3s}
.enter-button:hover{transform:translateY(-3px);box-shadow:0 12px 35px rgba(222,169,79,.48)}
.enter-button svg{width:17px;height:17px}.gates__sound-note{font:400 .65rem var(--ui);opacity:.66;margin:13px 0 0}
@keyframes floatLotus{50%{transform:translateY(-8px) rotate(7deg)}}
body.entered .gate-half--left{animation:openGateLeft 1.45s cubic-bezier(.77,0,.25,1) both}
body.entered .gate-half--right{animation:openGateRight 1.45s cubic-bezier(.77,0,.25,1) both}
body.entered .gates__content{animation:gateContentOut .5s ease both}
body.entered .gates{opacity:0;visibility:hidden;pointer-events:none}
@keyframes openGateLeft{0%{transform:rotateY(0)}100%{transform:rotateY(-100deg) translateX(-22%)}}
@keyframes openGateRight{0%{transform:rotateY(0)}100%{transform:rotateY(100deg) translateX(22%)}}
@keyframes gateContentOut{to{opacity:0;transform:scale(.85)}}
.topbar{z-index:40;position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:calc(10px + env(safe-area-inset-top,0px)) clamp(14px,3vw,32px) 12px;pointer-events:none;transition:opacity .3s}
.topbar:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(27,30,23,.52),transparent);pointer-events:none}
.topbar>*{pointer-events:auto}.topbar__control{display:flex;align-items:center;gap:8px;padding:9px 12px;background:rgba(34,30,25,.56);border:1px solid rgba(255,238,190,.29);backdrop-filter:blur(13px);border-radius:100px;color:#fff3d9;font:500 .64rem var(--ui);letter-spacing:.02em;min-width:76px;justify-content:center}
.topbar__control svg{width:18px;height:18px}.topbar__monogram{font:400 1.35rem var(--script);color:#ffe1a7;text-shadow:0 1px 7px #292416;white-space:nowrap}
.topbar__monogram span{font-size:.7em}.vertical-progress{z-index:43;position:fixed;top:0;left:0;width:3px;height:100%;pointer-events:none;background:rgba(212,186,131,.2)}
#progress-fill{width:100%;height:0;background:linear-gradient(180deg,#ffe9b0,#b76f33);box-shadow:0 0 12px #e8bd64;transition:height .3s}
.chapter-count{position:fixed;z-index:30;right:20px;bottom:calc(var(--dock-h) + var(--safe-bottom) + 16px);font:600 .68rem var(--ui);color:#fff;letter-spacing:.13em;text-shadow:0 2px 14px #25211b;padding:5px 9px;background:rgba(28,28,25,.3);border-radius:20px}
.chapter-count span{opacity:.75}
/* Welcome */
.welcome-card{z-index:3;position:relative;width:min(87vw,660px);max-height:calc(100dvh - var(--dock-h) - 115px);overflow:auto;scrollbar-width:none;margin:24px 0 80px;text-align:center;color:var(--olive);padding:18px clamp(12px,3vw,30px) 16px;background:radial-gradient(ellipse,rgba(255,250,237,.64),rgba(255,248,233,.17) 72%,transparent);text-shadow:0 1px rgba(255,250,237,.5)}
.welcome-card::-webkit-scrollbar{display:none}.host-line{font:500 clamp(1.45rem,4.2vw,2rem)/1.13 var(--serif);margin:15px auto 9px}.host-line span{font-style:italic}
.small-intro{font:500 clamp(.93rem,2.4vw,1.35rem)/1.23 var(--serif);max-width:470px;margin:10px auto}
.hero-names{font:400 clamp(3.8rem,10vw,7.8rem)/.89 var(--script);color:var(--wine);margin:25px auto 13px;text-shadow:0 1px 2px #fff7eb}
.hero-names span{display:block;font:.44em var(--script);color:var(--olive);line-height:1}
.date-large{font:500 clamp(1.3rem,4vw,2rem)/1.1 var(--serif);margin:18px auto}
.welcome-subtext{font:500 clamp(.89rem,2.1vw,1.26rem)/1.3 var(--serif);max-width:455px;margin:10px auto}
.hashtag{display:block;font:400 clamp(1.5rem,4.2vw,2.5rem) var(--script);color:var(--wine);margin-top:12px}
.scroll-cue{position:absolute;z-index:5;bottom:calc(var(--dock-h) + var(--safe-bottom) + 15px);left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:2px;color:#644d2f;font:600 .6rem var(--ui);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 8px #fff}
.scroll-cue svg{width:19px;height:19px;animation:nudgeDown 2.5s ease-in-out infinite}
@keyframes nudgeDown{50%{transform:translateY(7px)}}
/* Event slides */
.scene--event{--event-y:50%;color:var(--ink)}
.scene--event[data-event="sangeeth"]{--event-y:36%;color:#fff0c9}
.scene--event[data-event="vratam"]{--event-y:66%}
.scene--event[data-event="wedding"]{--event-y:60%}
.scene--event[data-event="deepa"]{--event-y:58%}
.scene--event[data-event="haldi"]{--event-y:46%}
.scene--event[data-event="mehendi"]{--event-y:49%}
.scene--event[data-event="pelli23"]{--event-y:48%}
.scene--event[data-event="pelli24"]{--event-y:51%}
.scene--event[data-event="pelli25"]{--event-y:47%}
.scene--event[data-event="sangeeth"] .scene__veil{background:linear-gradient(180deg,rgba(3,15,28,.3),rgba(4,18,30,.36) 65%,transparent)}
.event-card{position:absolute;z-index:2;top:var(--event-y);left:50%;width:min(86%,530px);max-height:calc(100dvh - var(--dock-h) - 135px);padding:clamp(16px,2.7vw,34px) clamp(14px,4vw,38px) clamp(19px,3vw,29px);transform:translate(-50%,-50%);text-align:center;overflow-y:auto;scrollbar-width:none;background:radial-gradient(ellipse,rgba(255,248,230,.73) 0%,rgba(255,248,228,.55) 45%,rgba(255,247,227,.11) 100%);border:1px solid rgba(190,159,102,.18);box-shadow:0 15px 80px rgba(95,56,26,.08);backdrop-filter:blur(2px)}
.event-card::-webkit-scrollbar{display:none}
.event-card:before,.event-card:after{content:'';position:absolute;width:29px;height:29px;border-color:rgba(172,129,55,.52);border-style:solid;pointer-events:none}
.event-card:before{top:6px;left:6px;border-width:1px 0 0 1px}.event-card:after{bottom:6px;right:6px;border-width:0 1px 1px 0}
.event-card__invitation{font:400 clamp(.82rem,2.2vw,1.25rem)/1.25 var(--serif);margin:2px 0 8px}
.event-card__title{font:400 clamp(3.75rem,12vw,6.9rem)/.95 var(--script);margin:11px auto 8px;color:var(--wine);text-shadow:0 2px 0 rgba(255,247,221,.35)}
.event-card__title--long{font-size:clamp(3.2rem,10.4vw,6.1rem)}
.event-card__couple{font:500 clamp(1.2rem,3.8vw,2rem) var(--serif);margin:6px auto;color:var(--olive);font-style:italic}
.event-card__divider{display:flex;align-items:center;gap:12px;justify-content:center;margin:10px auto;color:#9f844a;font-size:16px}
.event-card__divider:before,.event-card__divider:after{content:'';width:50px;height:1px;background:currentColor;opacity:.65}
.event-card__date{font:600 clamp(.8rem,2.2vw,1.18rem)/1.5 var(--formal);letter-spacing:.09em;color:var(--olive);margin:6px 0 0}
.event-card__time{font:italic 500 clamp(1.15rem,3vw,1.65rem)/1.1 var(--serif);margin:6px auto 16px;color:var(--olive)}
.event-card__venue{font:600 clamp(1.3rem,3.3vw,2rem)/1.1 var(--serif);margin:10px 0 0;color:var(--ink)}
.event-card__address{font:500 clamp(.92rem,2.2vw,1.25rem)/1.15 var(--serif);margin:3px auto 8px}
.event-card__link{display:inline-flex;justify-content:center;align-items:center;gap:5px;font:600 .66rem var(--ui);letter-spacing:.04em;color:var(--wine);border-bottom:1px solid rgba(139,43,43,.3);margin-top:11px;padding:6px 5px 5px}
.event-card__link svg{width:15px;height:15px}
.event-card__hash{font:400 1.7rem var(--script);margin:13px auto 0;color:var(--wine)}
.scene--night .event-card{background:radial-gradient(ellipse,rgba(7,23,38,.73),rgba(8,26,39,.32) 60%,transparent);border-color:rgba(225,183,101,.16);box-shadow:none;backdrop-filter:none}
.scene--night .event-card *{color:#f1ddb4}
.scene--night .event-card__title{color:#ffdaa0;text-shadow:0 2px 25px rgba(255,209,128,.22)}
.scene--night .event-card__divider{color:#dfb578}
.scene--night .event-card__link{border-color:rgba(255,209,143,.4)}
.scene--night .event-card__hash{color:#edc489}
.scene__tag{position:absolute;z-index:4;top:calc(77px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);padding:7px 13px;border:1px solid rgba(193,155,83,.25);border-radius:100px;background:rgba(247,228,192,.35);font:600 .56rem var(--ui);letter-spacing:.13em;color:var(--olive);white-space:nowrap;text-transform:uppercase}
.scene--night .scene__tag{color:#ffe7b3;background:rgba(11,27,39,.28)}
.scene__sequence{position:absolute;z-index:2;bottom:calc(var(--dock-h) + var(--safe-bottom) + 20px);left:50%;transform:translateX(-50%);font:600 .58rem var(--ui);letter-spacing:.12em;text-transform:uppercase;color:rgba(76,57,44,.72);white-space:nowrap}
.scene--night .scene__sequence{color:rgba(253,226,176,.7)}
.scene__sparkles{position:absolute;pointer-events:none;inset:0;z-index:1;background:radial-gradient(circle at 53% 9%,rgba(255,217,135,.29),transparent 15%),radial-gradient(circle at 38% 85%,rgba(255,234,155,.12),transparent 23%);mix-blend-mode:screen;animation:lampPulse 6s infinite alternate}
.scene--event[data-event="haldi"] .scene__sparkles{background:radial-gradient(ellipse at 54% 71%,rgba(255,223,67,.35),transparent 34%)}
.scene--event[data-event="deepa"] .scene__sparkles{background:radial-gradient(circle at 25% 52%,rgba(255,164,41,.25),transparent 21%),radial-gradient(circle at 76% 73%,rgba(255,169,60,.35),transparent 27%)}
/* Gallery */
.scene--memories{flex-direction:column;padding:calc(80px + env(safe-area-inset-top,0px)) 0 calc(125px + var(--safe-bottom));background:radial-gradient(ellipse at 50% 0%,#526052 0%,#253629 37%,#122021 75%,#0d191b 100%);color:#fff0d5}
.memories__aura{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 24% 30%,rgba(218,160,65,.14),transparent 30%),radial-gradient(circle at 80% 70%,rgba(150,139,99,.18),transparent 30%)}
.memories__heading{position:relative;z-index:1;text-align:center;padding:0 20px 15px}
.memories__heading .eyebrow{color:#edc684}.memories__heading h2{font:500 clamp(2rem,6vw,3.9rem)/.92 var(--serif);margin:4px 0 7px}
.memories__heading h2 em{font:400 1.3em var(--script);color:#eec98c}
.memories__heading p:last-child{font:400 clamp(.85rem,2vw,1.3rem)/1.2 var(--serif);color:#d0cab4;margin:5px 0}
.photo-gallery{position:relative;width:min(100%,1100px);display:flex;justify-content:safe center;align-items:center;gap:18px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:15px max(20px,calc((100vw - 1000px)/2)) 15px}
.photo-gallery::-webkit-scrollbar{display:none}.photo-card{position:relative;flex:0 0 clamp(195px,24vw,260px);height:clamp(290px,40dvh,400px);margin:0;padding:8px 8px 15px;background:rgba(255,236,202,.11);border:1px solid rgba(245,216,166,.35);box-shadow:0 12px 36px rgba(0,0,0,.23);transform-style:preserve-3d;scroll-snap-align:center;transition:transform .4s ease,background .4s ease}
.photo-card:nth-child(2n){transform:rotate(2deg)}.photo-card:nth-child(2n+1){transform:rotate(-2deg)}
.photo-card:hover{transform:translateY(-8px) rotate(0deg)}.photo-open{display:block;width:100%;height:calc(100% - 20px);padding:0;overflow:hidden;position:relative}
.photo-open img{width:100%;height:100%;object-fit:cover;object-position:center 20%;transition:transform .65s ease}.photo-open:hover img{transform:scale(1.08)}
.photo-card:nth-child(3) img{object-position:top center}.photo-card__shine{position:absolute;inset:0;background:linear-gradient(125deg,transparent 32%,rgba(255,251,224,.23) 50%,transparent 66%);transform:translateX(-170%);transition:transform .9s}
.photo-card:hover .photo-card__shine{transform:translateX(170%)}
.photo-card figcaption{text-align:center;color:#ebd6ac;font:italic 500 .88rem/1 var(--serif);padding:7px 0 0;white-space:nowrap}
.gallery-hint{position:relative;font:500 .66rem var(--ui);color:#e6d1ae;letter-spacing:.09em;padding:9px;opacity:.8}.gallery-hint span{font-size:16px}
.scroll-cue--light{color:#f7db9b;text-shadow:none}
/* Close */
.closing-card{width:min(90%,620px);position:relative;text-align:center;padding:35px 24px;margin:30px 0 75px;background:radial-gradient(ellipse,rgba(254,245,222,.74),rgba(253,243,224,.28) 78%,transparent);color:var(--olive)}
.closing-card h2{font:500 clamp(2.5rem,6vw,4.6rem)/.94 var(--serif);margin:24px auto 17px}.closing-card h2 em{font:400 1.15em var(--script);color:var(--wine)}
.closing-card>p:not(.eyebrow){font:500 clamp(1rem,2.6vw,1.5rem)/1.35 var(--serif);max-width:450px;margin:15px auto}
.closing-sign{margin-top:25px!important}.closing-sign strong{font-size:1.25em}
.closing-rsvp{display:inline-flex;align-items:center;gap:9px;font:600 .75rem var(--ui);padding:12px 20px;color:#fff6df;background:var(--wine);border-radius:100px;margin:21px auto 0;box-shadow:0 8px 22px rgba(87,14,31,.23)}
.closing-rsvp svg{width:17px;height:17px}
/* Fixed footer */
.action-dock{z-index:50;position:fixed;left:0;right:0;bottom:0;height:calc(var(--dock-h) + var(--safe-bottom));padding:6px max(12px,calc((100vw - 630px)/2)) calc(6px + var(--safe-bottom));display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;background:rgba(25,27,23,.91);color:#f7e8d0;border-top:1px solid rgba(213,173,105,.43);box-shadow:0 -8px 40px rgba(31,27,22,.19);backdrop-filter:blur(19px)}
.action-dock__item{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;font:600 .65rem var(--ui);border-radius:11px;transition:background .25s,color .25s}
.action-dock__item svg{width:21px;height:21px;stroke-width:1.8}.action-dock__item:hover{background:rgba(255,235,173,.1)}
.action-dock__item--highlight{color:#f5d59f;background:linear-gradient(145deg,rgba(159,108,41,.2),rgba(119,86,52,.09))}
/* Modal/Drawer */
.modal-backdrop{position:fixed;inset:0;z-index:65;background:rgba(13,15,14,.72);backdrop-filter:blur(8px)}
.modal-backdrop[hidden]{display:none}
.drawer{z-index:70;position:fixed;top:0;right:0;bottom:0;max-width:460px;width:min(100%,460px);background:#fcf3e4;color:var(--ink);box-shadow:-15px 0 70px rgba(0,0,0,.24);padding:calc(26px + env(safe-area-inset-top,0px)) 22px 36px;overflow:auto;transform:translateX(103%);visibility:hidden;transition:transform .42s cubic-bezier(.2,.7,.25,1),visibility 0s .42s}
.drawer.is-open{transform:translateX(0);visibility:visible;transition:transform .42s cubic-bezier(.2,.7,.25,1)}
.drawer__head,.modal__header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.drawer__head .eyebrow,.modal__header .eyebrow{color:#a27737;font-size:.59rem}.drawer__head h2,.modal__header h2{font:500 2.6rem/1 var(--serif);margin:3px 0 9px;color:var(--wine)}
.icon-close{display:grid;place-items:center;width:37px;height:37px;border:1px solid #dccba9;border-radius:50%;color:var(--wine)}
.icon-close svg{width:18px;height:18px}.drawer__description,.modal__explanation{font:500 1rem/1.3 var(--serif);margin:10px 0 20px;color:#615746}
.drawer__events{display:flex;flex-direction:column;gap:5px}
.drawer-event{display:grid;grid-template-columns:57px 1fr 22px;align-items:center;gap:12px;text-align:left;border:1px solid rgba(168,127,74,.16);padding:12px 11px;background:rgba(255,255,255,.58)}
.drawer-event:hover{background:#f3e6cf}.drawer-event__day{font:600 .71rem var(--formal);line-height:1.3;color:#a36938;text-align:center}
.drawer-event__day strong{font:600 1.7rem var(--serif);display:block;color:var(--wine)}.drawer-event__label{font:600 1.24rem var(--serif)}
.drawer-event__label small{display:block;font:500 .68rem/1.4 var(--ui);color:#756956}
.drawer-event__chev{font:1.8rem var(--serif);color:#97703c}.drawer__footer-link{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--wine);color:#fff6e2;width:100%;padding:12px;margin-top:18px;border-radius:5px;font:600 .75rem var(--ui)}
.modal{z-index:72;position:fixed;left:50%;top:50%;width:min(calc(100vw - 30px),490px);max-height:min(86dvh,740px);overflow-y:auto;background:#fbf2e5;color:var(--ink);padding:25px;border:1px solid #d7bd8e;box-shadow:0 25px 100px rgba(0,0,0,.4);transform:translate(-50%,-45%) scale(.96);visibility:hidden;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s,visibility 0s .3s}
.modal.is-open{visibility:visible;opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1);transition:opacity .3s,transform .3s}
.venue-list{display:flex;flex-direction:column;gap:10px}.venue-link{display:flex;align-items:center;gap:14px;padding:15px;background:#fffaf2;border:1px solid #e7d2ae;text-align:left;border-radius:4px;width:100%;transition:border-color .2s,transform .2s}
.venue-link:hover{transform:translateX(2px);border-color:#b28b4b}.venue-link>svg{color:#9c662d;width:25px;height:25px}.venue-link>span{flex:1}
.venue-link strong{font:600 1.35rem var(--serif);display:block}.venue-link small{font:500 .68rem/1.5 var(--ui);color:#6f6557}
.venue-link--selected{border-color:#9e6c30;background:#ffefcf}
.rsvp-form{display:flex;flex-direction:column;gap:13px}.rsvp-form label{font:600 .73rem var(--ui);display:flex;flex-direction:column;gap:6px;color:#55472e}
.rsvp-form input,.rsvp-form select,.rsvp-form textarea{width:100%;padding:12px 13px;background:#fffaf3;border:1px solid #d7c19b;color:#393628;border-radius:4px;font:500 .85rem var(--ui);outline-color:#ab793a}
.rsvp-form textarea{resize:vertical}.submit-rsvp{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--wine);color:#fff8e6;border-radius:4px;padding:13px;font:600 .79rem var(--ui);margin-top:5px}
.submit-rsvp svg{width:19px;height:19px}.rsvp-form__note{font:400 .7rem/1.5 var(--ui);margin:2px 0 0;color:#8a7463}
.photo-lightbox{position:fixed;z-index:82;inset:0;background:rgba(7,11,11,.94);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s,visibility 0s .3s;padding:55px 15px}
.photo-lightbox.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .3s}
.photo-lightbox img{max-height:100%;max-width:100%;object-fit:contain;box-shadow:0 20px 60px #0009}.photo-lightbox__close{position:absolute;top:24px;right:24px;color:white;border:1px solid #ffffff8a;width:40px;height:40px;border-radius:50%;display:grid;place-items:center}
.toast{z-index:110;position:fixed;left:50%;bottom:calc(var(--dock-h) + var(--safe-bottom) + 17px);transform:translate(-50%,15px);padding:12px 20px;width:max-content;max-width:calc(100vw - 35px);text-align:center;border-radius:10px;background:#2a3027;color:#fff6d7;font:500 .76rem/1.5 var(--ui);box-shadow:0 8px 35px #0006;opacity:0;pointer-events:none;transition:.25s}
.toast.visible{opacity:1;transform:translate(-50%,0)}#transition-wash{position:fixed;inset:0;z-index:28;pointer-events:none;background:radial-gradient(circle,transparent,rgba(21,20,15,.11));opacity:.25}
@media(min-width:950px){
  .scene__art{background-position:center center}
  .welcome-card{background:radial-gradient(ellipse,rgba(255,250,235,.7),rgba(255,248,233,.15) 75%,transparent)}
  .photo-gallery{gap:23px;overflow-x:visible;padding-left:25px;padding-right:25px}
  .photo-card{height:min(44vh,410px);flex-basis:230px}
  .gallery-hint{display:none}
}
@media(max-width:650px){
  :root{--dock-h:67px}
  .gates__names{font-size:clamp(3.2rem,13vw,4.6rem)}
  .gates__content{width:calc(100% - 34px)}
  .scene__art{background-position:center center}
  .welcome-card{width:91%;margin-top:38px;padding:12px 8px 18px;max-height:calc(100dvh - var(--dock-h) - 118px)}
  .host-line{font-size:clamp(1.35rem,5.7vw,2rem)}
  .small-intro{font-size:clamp(.89rem,3.6vw,1.25rem)}
  .hero-names{font-size:clamp(3.6rem,14.5vw,5.9rem);margin:17px auto 7px}
  .date-large{font-size:clamp(1.2rem,5vw,1.8rem)}
  .welcome-subtext{font-size:clamp(.92rem,3.9vw,1.25rem)}
  .scene__art{inset:-1.5%;filter:saturate(.99)}
  .event-card{width:89%;max-height:calc(100dvh - var(--dock-h) - 144px);padding:15px 10px 18px;box-shadow:0 10px 30px rgba(75,55,36,.03)}
  .event-card__title{font-size:clamp(3.9rem,14.5vw,5.7rem);margin:7px auto 4px}
  .event-card__title--long{font-size:clamp(3.3rem,12.8vw,5.3rem)}
  .event-card__divider{margin:6px auto}
  .event-card__date{font-size:clamp(.73rem,2.8vw,.95rem)}
  .event-card__time{font-size:1.25rem;margin:5px auto 10px}
  .event-card__venue{font-size:1.45rem}
  .event-card__hash{margin:10px auto 0}
  .scene__tag{top:calc(72px + env(safe-area-inset-top,0px))}
  .topbar__control{padding:9px 10px;min-width:64px;font-size:.60rem}
  .chapter-count{right:13px}
  .scene--memories{padding-top:calc(75px + env(safe-area-inset-top,0px))}
  .memories__heading h2{font-size:clamp(2.2rem,7.9vw,3.4rem)}
  .photo-gallery{justify-content:flex-start;padding:10px 8vw 13px;gap:17px;width:100%}
  .photo-card{flex:0 0 57vw;height:min(48dvh,400px)}
  .action-dock__item{gap:4px;font-size:.63rem}
  .action-dock__item svg{width:20px;height:20px}
  .closing-card h2{font-size:clamp(2.4rem,9vw,3.5rem)}
}
@media(max-height:720px){
  .welcome-card{margin-top:55px;max-height:calc(100dvh - var(--dock-h) - 135px)}
  .welcome-card .ornament{margin:5px auto}
  .welcome-card .host-line{margin:8px auto 4px}
  .welcome-card .hero-names{margin:10px auto 6px}
  .welcome-card .date-large{margin:8px auto}
  .event-card{max-height:calc(100dvh - var(--dock-h) - 112px)}
  .scene__tag{top:calc(59px + env(safe-area-inset-top,0px))}
  .event-card__title{font-size:clamp(3.2rem,11.8vw,5rem)}
  .event-card__title--long{font-size:clamp(2.9rem,10vw,4.7rem)}
  .scene__sequence{display:none}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  #particles{display:none}.gate-half{transform:none!important}
}
/* Independent ritual-specific animation layers, above the reconstructed artwork. */
.scene__motif{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}
.scene__motif span{display:block;position:absolute;opacity:0}
.scene__motif--sangeeth span{bottom:23%;width:7px;height:7px;border-radius:50%;background:#ffce74;box-shadow:0 0 14px 5px rgba(255,202,101,.3);animation:musicLight 5s ease-in-out infinite}
.scene__motif--sangeeth span:nth-child(1){left:18%;animation-delay:0s}.scene__motif--sangeeth span:nth-child(2){left:30%;animation-delay:1.3s}.scene__motif--sangeeth span:nth-child(3){left:68%;animation-delay:2.1s}.scene__motif--sangeeth span:nth-child(4){left:82%;animation-delay:3.2s}.scene__motif--sangeeth span:nth-child(5){left:58%;animation-delay:4s}
@keyframes musicLight{0%{opacity:0;transform:translateY(0) scale(.4)}30%{opacity:1}80%{opacity:.35}100%{opacity:0;transform:translateY(-28vh) scale(1.2)}}
.scene__motif--haldi span{width:8px;height:11px;right:13%;top:63%;border-radius:75% 0 75% 75%;transform:rotate(-30deg);background:linear-gradient(145deg,rgba(255,255,229,.92),rgba(250,200,83,.5));box-shadow:0 0 8px rgba(255,234,168,.6);animation:haldiDrop 2.5s ease-in infinite}
.scene__motif--haldi span:nth-child(1){right:12%;animation-delay:0s}.scene__motif--haldi span:nth-child(2){right:17%;animation-delay:.42s}.scene__motif--haldi span:nth-child(3){right:23%;animation-delay:.83s}.scene__motif--haldi span:nth-child(4){right:19%;animation-delay:1.2s}.scene__motif--haldi span:nth-child(5){right:15%;animation-delay:1.7s}
@keyframes haldiDrop{0%{opacity:0;translate:0 -18px}30%{opacity:.65}100%{opacity:0;translate:-10px 67px}}
.scene__motif--mehendi span{bottom:17%;left:75%;font-size:17px;color:rgba(209,159,67,.62);animation:mehendiFloat 7s ease-in-out infinite}
.scene__motif--mehendi span:before{content:'✿'}
.scene__motif--mehendi span:nth-child(2){left:13%;bottom:36%;animation-delay:1.2s;font-size:12px}.scene__motif--mehendi span:nth-child(3){left:67%;bottom:48%;animation-delay:2.3s}
.scene__motif--mehendi span:nth-child(4){left:30%;bottom:20%;animation-delay:3.5s;font-size:11px}.scene__motif--mehendi span:nth-child(5){left:88%;bottom:28%;animation-delay:4.7s}
@keyframes mehendiFloat{0%{transform:translateY(16px) rotate(-25deg);opacity:0}35%{opacity:.65}85%{opacity:.5}100%{transform:translateY(-75px) rotate(35deg);opacity:0}}
.scene__motif--deepa span{width:6px;height:17px;left:15%;top:76%;background:radial-gradient(ellipse at center bottom,#fffddd,#ffc34f 40%,#ed7334 90%);border-radius:95% 0 65% 45%;box-shadow:0 0 13px 7px rgba(248,177,69,.26);transform-origin:bottom center;animation:flameFlicker 1.45s ease-in-out infinite alternate}
.scene__motif--deepa span:nth-child(2){left:81%;top:73%;animation-delay:.3s}.scene__motif--deepa span:nth-child(3){left:87%;top:80%;animation-delay:.6s}.scene__motif--deepa span:nth-child(4){left:21%;top:78%;animation-delay:.9s}.scene__motif--deepa span:nth-child(5){left:16%;top:74%;animation-delay:1.2s}
@keyframes flameFlicker{0%{opacity:.2;transform:skewX(-12deg) scale(.75)}100%{opacity:.8;transform:skewX(13deg) scale(1.1)}}
.scene__motif--wedding span{top:15%;left:30%;width:2px;height:70px;background:linear-gradient(transparent,rgba(247,217,147,.76),transparent);filter:blur(.6px);transform:rotate(24deg);animation:weddingRay 7s linear infinite}
.scene__motif--wedding span:nth-child(2){left:70%;top:6%;animation-delay:2s}.scene__motif--wedding span:nth-child(3){left:48%;top:12%;animation-delay:3.7s}.scene__motif--wedding span:nth-child(4){left:87%;top:20%;animation-delay:4.6s}.scene__motif--wedding span:nth-child(5){left:12%;top:15%;animation-delay:5.3s}
@keyframes weddingRay{0%{opacity:0;transform:translateY(-20px) rotate(24deg)}40%{opacity:.52}80%{opacity:.26}100%{opacity:0;transform:translateY(110px) rotate(24deg)}}
.scene__motif--vratam span{bottom:14%;width:2px;height:60px;left:63%;border-left:2px solid rgba(221,193,154,.25);border-radius:45%;filter:blur(3px);animation:incenseRise 5.5s ease-in-out infinite}
.scene__motif--vratam span:nth-child(2){left:65%;animation-delay:.8s}.scene__motif--vratam span:nth-child(3){left:67%;animation-delay:1.6s}.scene__motif--vratam span:nth-child(4){left:61%;animation-delay:2.4s}.scene__motif--vratam span:nth-child(5){left:69%;animation-delay:3.2s}
@keyframes incenseRise{0%{opacity:0;transform:translate(0,10px) rotate(0)}28%{opacity:.8}100%{opacity:0;transform:translate(27px,-110px) rotate(30deg)}}
/* Keep ceremony typography entirely above the action dock on short and wide screens. */
.scene--event[data-event="sangeeth"]{--event-y:44%}
.scene--event[data-event="wedding"]{--event-y:55%}
.scene--event[data-event="vratam"]{--event-y:58%}


/* Cinematic per-chapter transition masks. Native touch scrolling stays enabled. */
.scene-arrival{
  position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden;
  perspective:1100px;transform-style:preserve-3d;
  
}
.scene-arrival__panel{
  position:absolute;top:0;bottom:0;width:50%;left:0;
  background:linear-gradient(125deg,#f2dfb7,#e7cfa1 52%,#fff1d4);
  box-shadow:0 0 45px rgba(77,49,23,.13);
  transform-origin:left center;backface-visibility:hidden;
}
.scene-arrival__panel--b{left:50%;transform-origin:right center}
.scene-arrival--memories .scene-arrival__panel{
  background:linear-gradient(110deg,#304c41,#192e31 65%,#253d34)
}
.scene-arrival--pelli23 .scene-arrival__panel,
.scene-arrival--haldi .scene-arrival__panel{
  left:0;width:100%;height:50%;bottom:auto;
  background:linear-gradient(120deg,#f5deac,#f1c976,#f7e4b8);
}
.scene-arrival--pelli23 .scene-arrival__panel--b,
.scene-arrival--haldi .scene-arrival__panel--b{top:50%}
.scene-arrival--sangeeth .scene-arrival__panel{
  background:linear-gradient(145deg,#091d2e,#223d49 60%,#161f2a)
}
.scene-arrival--pelli24 .scene-arrival__panel{
  background:linear-gradient(120deg,#f9efd9,#dfd9b4);
}
.scene-arrival--pelli25 .scene-arrival__panel{
  background:linear-gradient(100deg,#f4e6c5,#dfc18e 54%,#f5e5c4)
}
.scene-arrival--mehendi .scene-arrival__panel{
  background:linear-gradient(115deg,#dce0bd,#e4caac,#e5b7a3)
}
.scene-arrival--deepa .scene-arrival__panel{
  background:linear-gradient(160deg,#4b3d31,#be9368 65%,#d3a26c);
}
.scene-arrival--wedding .scene-arrival__panel{
  background:linear-gradient(115deg,#f1e5c1,#e5c58b,#f4e5c5)
}
.scene-arrival--vratam .scene-arrival__panel{
  background:linear-gradient(135deg,#e8cf9f,#f4e5c7,#d5be93)
}
.scene-arrival--blessings .scene-arrival__panel{
  background:linear-gradient(110deg,#fff1db,#eee1bb,#fff0ce)
}
/* Fallback ensures no mask can block content when motion is reduced. */
@media(prefers-reduced-motion:reduce){.scene-arrival{display:none!important}}
