@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,wght@0,400;0,500;1,400&family=Italiana&display=swap');
:root,html,body{color-scheme:only light}
*{box-sizing:border-box}html,body{margin:0;background:#063e3d;color:#f3dfb4}body{font-family:Georgia,serif}button,input{font:inherit}button{cursor:pointer}#journey{height:330svh}.stage{height:100svh;position:sticky;top:0;overflow:hidden;display:flex;justify-content:center;background:radial-gradient(ellipse at center,#326b5a,#063e3d 80%)}.stage:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 68px,#d4bd7420 69px,transparent 70px);opacity:.2}.scene{height:100%;width:min(100%,56.25svh);position:relative;overflow:hidden;background:#f9f0da;isolation:isolate;box-shadow:0 0 100px #001f25aa;--p:0}.sky{position:absolute;inset:-8%;background:radial-gradient(ellipse at 48% 35%,#fffceb,#c4d9d7 90%);animation:sky-drift 20s ease-in-out infinite alternate}.architecture{position:absolute;inset:0;background:url('assets/pavilion.webp') center/100% 100% no-repeat;transform:translate3d(0,calc(var(--p) * -4%),0) scale(calc(1 + var(--p) * .055));transform-origin:50% 50%}.hero-names{position:absolute;z-index:2;top:30%;left:12%;width:76%;text-align:center;transform:translate3d(0,calc(var(--p) * -150px),0);opacity:var(--hero-opacity,1)}h1,h2{margin:0;font-family:'Bodoni Moda',Georgia,serif;font-weight:400;line-height:.98;color:#06484c}h1 span,h2 span{display:block}h1{font-size:clamp(48px,9.5svh,100px)}h1 i,h2 i{display:block;font-weight:400;line-height:1.2;font-size:.42em;color:#a07836}.piece{position:absolute;aspect-ratio:1;overflow:hidden;pointer-events:none}.piece img{position:absolute;width:200%;height:200%;max-width:none;user-select:none;-webkit-user-drag:none}.couple{width:85%;left:7.5%;top:49%;z-index:3;transform:translate3d(0,calc(var(--p) * 130px),0) scale(calc(1 + var(--p) * .08));opacity:var(--couple-opacity,1)}.couple img{top:0;left:0}.canopy{z-index:7;top:-4%;width:66%;transform-origin:12% 10%;animation:flower-sway 6.4s ease-in-out infinite alternate}.canopy img{left:0;top:-100%}.canopy-left{left:-7%}.canopy-right{right:-7%;transform:scaleX(-1);animation-name:flower-sway-mirror;animation-delay:-3s}.vine{z-index:8;top:4%;width:45%;transform-origin:50% 0;animation:vine-sway 7.5s ease-in-out infinite alternate}.vine img{top:-100%;left:-100%}.vine-left{left:-14%}.vine-right{right:-14%;transform:scaleX(-1);animation-name:vine-sway-mirror;animation-delay:-4s}.lantern{position:absolute;z-index:6;top:1%;width:35%;aspect-ratio:1;pointer-events:none}.lantern-left{left:1%}.lantern-right{right:1%;top:6%}.lantern-swing{inset:0;transform-origin:50% 0;animation:lantern-swing 4.8s ease-in-out infinite alternate}.lantern-right .lantern-swing{animation-duration:6s;animation-delay:-3s}.lantern-swing img{left:-100%;top:0}.glow{position:absolute;left:34%;top:45%;width:32%;height:36%;border-radius:50%;background:radial-gradient(ellipse,#fff5baaa,#ffd88555 45%,transparent 73%);mix-blend-mode:screen;animation:glow 3.6s ease-in-out infinite alternate}.family{position:absolute;z-index:4;left:12%;top:20%;width:76%;height:78%;border:2px solid #d7b672;border-radius:48% 48% 2px 2px / 20% 20% 2px 2px;background:radial-gradient(ellipse at 40% 25%,#125457,#063c40 85%);box-shadow:0 0 0 7px #fff0c980,0 12px 50px #192c2933;transform:translate3d(0,var(--panel-y,110%),0);opacity:var(--panel-opacity,0);overflow:hidden}.family:after{content:'';position:absolute;inset:0;opacity:.12;pointer-events:none;background:repeating-radial-gradient(ellipse at 50% 150%,transparent 0 19px,#c8ae6b 20px,transparent 21px 45px)}.inner-border{position:absolute;inset:10px;border:1px solid #d8bc7b88;border-radius:inherit;pointer-events:none}.family-copy{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12% 8% 5%;text-align:center;font-size:clamp(10px,1.5svh,15px);line-height:1.55}.family-copy>*{opacity:var(--copy-opacity,0);transform:translateY(var(--copy-y,20px))}.family p{margin:0 0 1.7svh}.family .bismillah{font-size:clamp(13px,2svh,20px);color:#e1bf75;margin-bottom:2.6svh}.blessings{font-style:italic;font-size:.9em}.parents{font-size:1.05em}.family .invite{font-family:'Italiana',Georgia,serif;font-size:clamp(20px,3.7svh,38px);letter-spacing:.12em;margin-bottom:1.1svh}.invitation-line{font-size:.88em}.family h2{font-size:clamp(39px,7.3svh,73px);color:#f1dba7;margin:1.3svh 0 2.3svh}.family h2 i{color:#d4af68}.groom-parents{font-size:.92em}.flourish{color:#c5a363;font-size:24px}.string-lights{position:absolute;z-index:5;left:6%;right:6%;top:1%;height:11%;border-bottom:1px solid #b88d43;border-radius:0 0 50% 50%;display:flex;align-items:flex-end;justify-content:space-around;transform:rotate(-3deg);pointer-events:none}.string-lights b{width:7px;height:9px;border-radius:50%;background:#fff5c6;box-shadow:0 0 9px 3px #ffde8b99;animation:glow 3s infinite alternate}.string-lights b:nth-child(2n){animation-delay:-1.8s;transform:translateY(-11px)}.string-lights b:first-child,.string-lights b:last-child{transform:translateY(-28px)}#petals{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-6%;width:9px;height:14px;background:linear-gradient(135deg,#efb0af,#b74762);border-radius:80% 15% 70% 20%;opacity:.7;animation:petal-fall var(--duration) linear infinite;animation-delay:var(--delay);left:var(--left)}.sunlight{position:absolute;z-index:1;inset:0;background:radial-gradient(ellipse at 62% 42%,#fff8cb55,transparent 48%);pointer-events:none;animation:sun-breathe 9s infinite alternate}.scroll-cue{position:absolute;z-index:10;bottom:1.7%;left:0;width:100%;text-align:center;color:#614828;font-size:11px;letter-spacing:.08em;text-shadow:0 1px #fff;opacity:var(--cue-opacity,1)}.scroll-cue span{background:#fff6dfbb;padding:4px 9px;border-radius:20px}.scroll-cue i{display:block;width:7px;height:7px;border-right:1px solid;border-bottom:1px solid;transform:rotate(45deg);margin:8px auto;animation:cue 2s infinite}.end-cue{position:absolute;z-index:10;bottom:1.5%;width:100%;text-align:center;font-size:10px;opacity:var(--end-opacity,0);pointer-events:var(--end-events,none)}.end-cue span{display:block;color:#5f4423;background:#ffefcaaa;width:max-content;margin:auto;padding:3px 8px;border-radius:15px}.end-cue button{margin-top:5px;border:0;background:#073e3de6;color:#f4dfb1;border-radius:20px;padding:7px 12px;font-size:11px}.controls-toggle{position:fixed;right:15px;bottom:15px;z-index:30;width:42px;height:42px;border:1px solid #d9c28e88;border-radius:50%;background:#073f3ee8;color:#f8e4b7;font-size:22px}.controls{position:fixed;right:15px;bottom:68px;z-index:30;width:245px;padding:20px;background:#073b3ff5;backdrop-filter:blur(10px);border:1px solid #c2a26877;border-radius:16px;box-shadow:0 10px 50px #0005;font-family:system-ui,sans-serif;font-size:13px}.controls h3{margin:0;font-family:Georgia,serif;font-weight:400;font-size:20px}.controls p{font-size:11px;color:#d3c4a3}.controls label{display:block;padding:8px 0}.controls input{accent-color:#c9a36a}.controls button{width:100%;padding:10px;border-radius:20px;background:#f1dfb7;border:0;color:#123e3f;margin:8px 0}.controls .note{line-height:1.6;margin-bottom:0}.paused .scene *,.offscreen .scene *{animation-play-state:paused!important}.no-petals #petals{display:none}.no-lights .glow,.no-lights .sunlight,.no-lights .string-lights{display:none}@keyframes lantern-swing{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}@keyframes flower-sway{from{transform:rotate(-1.5deg)}to{transform:rotate(2deg)}}@keyframes flower-sway-mirror{from{transform:scaleX(-1) rotate(-2deg)}to{transform:scaleX(-1) rotate(1.5deg)}}@keyframes vine-sway{from{transform:rotate(-2deg)}to{transform:rotate(3deg)}}@keyframes vine-sway-mirror{from{transform:scaleX(-1) rotate(1deg)}to{transform:scaleX(-1) rotate(-3deg)}}@keyframes glow{from{opacity:.5}to{opacity:1}}@keyframes sun-breathe{from{opacity:.35;transform:scale(1)}to{opacity:.8;transform:scale(1.08)}}@keyframes sky-drift{to{transform:translate3d(-2%,2%,0) scale(1.03)}}@keyframes petal-fall{0%{transform:translate3d(0,-5vh,0) rotate(0);opacity:0}8%{opacity:.7}90%{opacity:.65}100%{transform:translate3d(50px,110svh,0) rotate(500deg);opacity:0}}@keyframes cue{50%{translate:0 4px}}@media(prefers-reduced-motion:reduce){.scene *{animation:none!important}}@media(max-width:600px){.scene{width:100%}.controls-toggle{right:10px;bottom:10px;width:36px;height:36px}.controls{right:10px;bottom:55px}.hero-names{top:31%}h1{font-size:clamp(50px,16vw,82px)}.family{left:13%;width:74%}.family-copy{font-size:clamp(10px,2.9vw,14px)}.family h2{font-size:clamp(42px,13vw,68px)}}
/* Keep the moving ornaments clear of names and the couple. */
h1{font-size:clamp(48px,8svh,85px)}.canopy{width:58%;top:-15%}.canopy-left{left:-12%}.canopy-right{right:-12%}.vine{width:30%;top:3%}.vine-left{left:-13%}.vine-right{right:-13%}.lantern{z-index:9;width:28%;top:6%}.lantern-left{left:5%}.lantern-right{right:5%;top:11%}.family{height:76%}.family-copy{padding-top:15%}
@media(max-width:600px){h1{font-size:clamp(46px,14vw,72px)}.canopy{top:-10%}.couple{top:51%}.family-copy{font-size:clamp(10px,2.8vw,13px)}}
/* Wide-screen composition: retain the mobile scene and spread its layers. */
@media(min-width:768px) and (min-aspect-ratio:1/1){
.scene{width:100%;box-shadow:none;background:#faf1db}
.architecture{background-size:auto 125%;background-position:center 42%;inset:-2% 0;background-color:#faf1db}
.sky{z-index:0}
.scene:before,.scene:after{content:'';position:absolute;top:0;bottom:0;width:30%;background:url('assets/pavilion.webp') center/cover no-repeat;pointer-events:none;opacity:.7;mask-image:linear-gradient(to right,#000,transparent)}
.scene:before{left:0}.scene:after{right:0;transform:scaleX(-1)}
.hero-names{left:28%;width:44%;top:26%}
h1{font-size:clamp(55px,8.5svh,105px)}
.couple{width:min(48svh,38vw);left:50%;margin-left:calc(min(48svh,38vw) / -2);top:51%}
.canopy{width:36%;top:-24%;z-index:7}.canopy-left{left:-5%}.canopy-right{right:-5%}
.vine{width:23%;top:12%}.vine-left{left:-7%}.vine-right{right:-7%}
.lantern{width:min(24svh,20vw);top:1%}.lantern-left{left:19%}.lantern-right{right:19%;top:5%}
.string-lights{left:13%;right:13%;height:13%}
.family{left:50%;width:min(54svh,58vw);margin-left:calc(min(54svh,58vw) / -2);top:18%;height:79%}
.family-copy{font-size:clamp(11px,1.55svh,16px)}
.family h2{font-size:clamp(42px,7.1svh,78px)}
}
@media(min-width:768px) and (min-aspect-ratio:1/1){
.scene:before,.scene:after{display:none}
.scene{background:radial-gradient(ellipse at 50% 35%,#fffbe9,#f2e6c5)}
.architecture{background-color:transparent;mask-image:linear-gradient(to right,transparent 12%,#000 30%,#000 70%,transparent 88%)}
.canopy-right{animation-name:flower-sway-mirror;transform-origin:88% 10%}
}
/* Celebrations extend the family panel into a continuous illustrated setting. */
.celebrations{position:relative;z-index:12;margin-top:-12svh;padding:130px 8vw 85px;background:radial-gradient(ellipse at 50% 0,#145254,#063c40 80%);border-top:2px solid #d6b574;border-radius:48% 48% 0 0 / 75px 75px 0 0;overflow:hidden;isolation:isolate}
.celebrations:before{content:'';position:absolute;inset:0;z-index:-1;opacity:.12;background:repeating-radial-gradient(ellipse at 0 0,transparent 0 42px,#cba963 43px,transparent 44px 85px)}
.events-heading{text-align:center;position:relative;z-index:2;margin:0 auto 48px}.events-heading p{font-size:13px;font-style:italic;letter-spacing:.04em;margin:0 0 15px;color:#dfc99b}.events-heading h2{color:#f7e4ba;font-size:clamp(36px,5vw,68px);line-height:1.12}.events-heading>span{display:block;font-size:32px;color:#d5b575;margin-top:15px}
.events-grid{max-width:1050px;margin:auto;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:36px}.event-card{grid-column:span 2;position:relative;background:linear-gradient(135deg,#fff5dc,#f4e3bb);border:2px solid #caa25a;border-radius:48% 48% 15px 15px / 90px 90px 15px 15px;padding:12px 12px 25px;text-align:center;color:#073f40;box-shadow:0 0 0 4px #efd5a24d,0 16px 30px #001f2544;opacity:0;transform:translateY(45px) scale(.96);transition:opacity .85s ease,transform 1.1s cubic-bezier(.2,.7,.2,1);transition-delay:var(--delay,0ms)}.event-card:nth-child(4){grid-column:2 / span 2}.event-card:nth-child(5){grid-column:4 / span 2}.event-card.is-visible{opacity:1;transform:none}.event-art{aspect-ratio:1.4;overflow:hidden;border-radius:48% 48% 5px 5px / 80px 80px 5px 5px}.event-art img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.5s ease}.event-card.is-visible .event-art img{transform:scale(1.035)}.event-card h3{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(27px,2.7vw,36px);font-weight:400;margin:17px 0 8px}.event-card .ornament{display:block;color:#a77d32;font-size:22px;margin-bottom:10px}.event-card p{font-size:14px;line-height:1.6;margin:7px 0}.event-card a{display:inline-block;color:#78501d;text-underline-offset:4px;font-size:14px;padding:12px 8px 3px;min-height:44px}.event-card a:focus-visible{outline:2px solid #78501d;outline-offset:3px}.events-note{text-align:center;font-style:italic;margin:55px 0 0;color:#e6cca0;font-size:15px}.event-floral{top:-45px;width:310px;z-index:1;transform-origin:15% 5%;animation:flower-sway 9s ease-in-out infinite alternate}.event-floral img{left:0;top:-100%}.event-floral-left{left:-85px}.event-floral-right{right:-85px;animation-name:flower-sway-mirror}.scene{transform:scale(var(--scene-exit-scale,1));opacity:var(--scene-exit-opacity,1)}
@media(max-width:767px){.celebrations{padding:105px 29px 65px;border-radius:45% 45% 0 0 / 45px 45px 0 0}.events-grid{display:flex;flex-direction:column;align-items:center;gap:32px}.event-card{width:100%;max-width:350px}.event-card h3{font-size:32px}.event-art{aspect-ratio:1.55}.event-floral{width:185px;top:-20px}.event-floral-left{left:-65px}.event-floral-right{right:-65px}.events-heading{margin-bottom:35px}.events-heading p{font-size:11px}.events-heading h2{font-size:39px}.event-card p{font-size:14px}}
@media(prefers-reduced-motion:reduce){.event-card{transition:none;transform:none;opacity:1}.event-art img{transition:none}}
/* Block 4: gallery and floral continuation. Only this section owns these rules. */
.photo-gallery{position:relative;z-index:13;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 50% 35%,#145457,#053a3e 90%);padding:110px 0 85px;border-top:1px solid #c5a06455;color:#f2dfb7}
.photo-gallery:before{content:'';position:absolute;z-index:-1;inset:0;background:repeating-radial-gradient(ellipse at 100% 0,transparent 0 42px,#cba963 43px,transparent 44px 85px);opacity:.09}
.photo-gallery:after{content:'';position:absolute;z-index:0;inset:20px 24px;border:1px solid #d0ae6455;border-radius:46% 46% 2px 2px / 80px 80px 2px 2px;pointer-events:none}
.gallery-heading{position:relative;z-index:2;text-align:center;max-width:750px;margin:0 auto 45px;padding:0 30px;opacity:0;transform:translateY(24px);transition:opacity .9s,transform 1.1s}
.gallery-heading>p:first-child{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(25px,3.5vw,42px);margin:0 0 3px}.gallery-heading h2{color:#f9e9c8;font-size:clamp(43px,5.3vw,72px);line-height:1.1}.gallery-divider{font-size:31px;color:#d3b272;display:block;margin:20px 0}.gallery-heading .gallery-message{font-size:clamp(14px,1.5vw,18px);line-height:1.8;margin:0 auto;max-width:650px}
.gallery-window{position:relative;z-index:3;max-width:1150px;margin:auto;opacity:0;transform:translateY(35px);transition:opacity 1s .18s,transform 1.2s .18s}
.gallery-track{--photo-width:min(43vw,390px);position:relative;display:flex;gap:42px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;padding:10px calc((100% - var(--photo-width))/2) 14px;touch-action:pan-x pan-y;overscroll-behavior-x:contain}.gallery-track::-webkit-scrollbar{display:none}.gallery-track:focus-visible{outline:2px solid #d8b572;outline-offset:-3px;border-radius:12px}
.gallery-slide{flex:0 0 var(--photo-width);width:var(--photo-width);aspect-ratio:500/720;position:relative;scroll-snap-align:center;margin:0;opacity:.45;transform:scale(.93);transition:opacity .65s,transform .8s;overflow:hidden}.gallery-slide.selected{opacity:1;transform:scale(1)}
.photo-mat{position:absolute;inset:3.3% 5% 2.7%;background:radial-gradient(ellipse at 50% 35%,#fff9e8,#f1deaf);border-radius:48% 48% 4% 4% / 20% 20% 3% 3%;overflow:hidden}.photo-frame-border{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 3px 2px #041e2244);pointer-events:none}
.real-photo{width:100%;height:100%;object-fit:cover;display:block}.photo-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:22px;color:#a38b60;font-size:clamp(16px,2vw,22px);text-align:center;padding:20% 9%}.photo-monogram{font-family:'Italiana',Georgia,serif;letter-spacing:.06em;font-size:clamp(37px,4.5vw,58px);color:#bfab8155}.photo-ornament{color:#b49555;font-size:27px}
.photo-flower{width:45%;z-index:2;bottom:-2%;transform-origin:25% 90%;animation:flower-sway 9s ease-in-out infinite alternate}.photo-flower img{left:0;top:-100%}.photo-flower-left{left:-5%;rotate:180deg}.photo-flower-right{right:-5%;rotate:180deg;animation-name:flower-sway-mirror}
.gallery-arrow{position:absolute;top:45%;width:48px;height:58px;border:1px solid #d2b07188;background:#073e40d9;color:#f7e4b6;border-radius:50%;font-family:Georgia,serif;font-size:42px;line-height:1;box-shadow:0 4px 20px #002b3555}.gallery-arrow:hover{background:#195558}.gallery-arrow:disabled{opacity:.25;cursor:default}.gallery-arrow:focus-visible,.gallery-dot:focus-visible{outline:2px solid #f5d28c;outline-offset:3px}.gallery-prev{left:15%}.gallery-next{right:15%}
.gallery-dots{position:relative;z-index:3;display:flex;justify-content:center;margin:15px auto 10px;gap:0}.gallery-dot{width:44px;height:44px;border:0;background:transparent;padding:0;display:grid;place-items:center}.gallery-dot:before{content:'';width:10px;height:10px;border:1px solid #e5bc6a;border-radius:50%;transition:background .25s,scale .25s}.gallery-dot[aria-current=true]:before{background:#e5bc6a;scale:1.15}.gallery-signature{position:relative;z-index:2;text-align:center;font-family:'Italiana',Georgia,serif;font-style:italic;font-size:clamp(30px,4vw,43px);color:#e4c787;margin:18px 15px 5px}.signature-ornament{display:block;text-align:center;color:#cfaf6d;font-size:31px}
.gallery-flowers{z-index:4;top:-40px;width:min(35vw,370px);transform-origin:15% 5%;animation:flower-sway 10s ease-in-out infinite alternate}.gallery-flowers img{left:0;top:-100%}.gallery-flowers-left{left:-70px}.gallery-flowers-right{right:-70px;transform-origin:50% 5%;animation-name:flower-sway-mirror}.gallery-lantern{position:absolute;top:20px;width:180px;aspect-ratio:1;z-index:3;pointer-events:none}.gallery-lantern-left{left:8%}.gallery-lantern-right{right:8%}.gallery-lantern-right .lantern-swing{animation-delay:-3s;animation-duration:7.5s}.gallery-visible .gallery-heading,.gallery-visible .gallery-window{opacity:1;transform:none}.photo-gallery:not(.gallery-visible) *{animation-play-state:paused!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:767px){.photo-gallery{padding:90px 0 60px}.photo-gallery:after{inset:12px 9px}.gallery-heading{padding:0 35px;margin-bottom:27px}.gallery-heading h2{font-size:43px}.gallery-heading>p:first-child{font-size:29px}.gallery-heading .gallery-message{font-size:14px;line-height:1.7}.gallery-track{--photo-width:76vw;gap:18px}.gallery-prev{left:2%}.gallery-next{right:2%}.gallery-arrow{width:42px;height:48px;font-size:35px}.gallery-flowers{width:200px;top:-25px}.gallery-flowers-left{left:-65px}.gallery-flowers-right{right:-65px}.gallery-lantern{width:95px;top:15px}.gallery-lantern-left{left:2%}.gallery-lantern-right{right:2%}.photo-placeholder{font-size:17px}.photo-monogram{font-size:43px}.gallery-dots{margin-top:6px}.gallery-dot{width:38px;height:44px}}
@media(prefers-reduced-motion:reduce){.gallery-heading,.gallery-window{opacity:1;transform:none;transition:none}.gallery-slide,.photo-frame-border{transition:none;filter:none}}
.photo-mat{inset:0;clip-path:polygon(5% 95.8%,5% 26.4%,6% 23%,9% 21%,14% 20.1%,15% 17%,22% 13.9%,26% 10%,36% 9%,43% 7%,50% 2.8%,57% 7%,64% 9%,74% 10%,78% 13.9%,85% 17%,86% 20.1%,91% 21%,94% 23%,95% 26.4%,95% 95.8%,90% 97.2%,10% 97.2%);border-radius:0}
.photo-flower{top:12%;bottom:auto;width:34%;rotate:0deg;transform-origin:50% 50%}.photo-flower-left{left:0}.photo-flower-right{right:0}.photo-flower-bottom-left{left:-6%;top:auto;bottom:-1.5%;rotate:180deg;animation-name:flower-sway-mirror}.photo-flower-bottom-right{right:-6%;top:auto;bottom:-1.5%;rotate:180deg}
.paused .photo-gallery *,.offscreen .photo-gallery *{animation-play-state:paused!important}.no-lights .photo-gallery .glow{display:none}
/* Blocks 5 and 6 reuse the approved floral environment. */
.guest-section{position:relative;z-index:14;overflow:hidden;isolation:isolate;color:#f6e7c5;background:radial-gradient(ellipse at 50% 20%,#135155,#053c3f 90%);border-top:1px solid #b9985366}.guest-section:before{content:'';position:absolute;inset:0;z-index:-1;background:repeating-radial-gradient(ellipse at 0 0,transparent 0 42px,#cba963 43px,transparent 44px 85px);opacity:.09}
.rsvp-section{min-height:620px;display:flex;align-items:center;justify-content:center;padding:135px 24px 115px}.rsvp-arch{position:absolute;inset:35px 8% 30px;border:1px solid #d5b57277;border-radius:48% 48% 5px 5px / 35% 35% 5px 5px;transform:scale(.92);opacity:0;transition:opacity 1s,transform 1.6s cubic-bezier(.2,.7,.2,1)}.rsvp-arch:after{content:'';position:absolute;inset:10px;border:1px solid #d5b57233;border-radius:inherit}
.guest-content{position:relative;z-index:3;text-align:center;max-width:850px;margin:auto;opacity:0;transform:translateY(24px);transition:opacity .9s .15s,transform 1.2s .15s}.guest-content h2{font-size:clamp(42px,5.5vw,74px);line-height:1.15;color:#f7e9c7}.guest-divider{display:block;color:#d1ac65;font-size:32px;margin:22px 0}.guest-content p{font-size:clamp(16px,1.7vw,21px);line-height:1.7;margin:0 0 32px}
.rsvp-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:13px;min-height:64px;padding:16px 37px;border:2px solid #cda454;outline:3px solid #fae6b033;outline-offset:3px;border-radius:50px;background:linear-gradient(135deg,#fff9e9,#f7e7bd);color:#073e40;font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(18px,2.3vw,27px);text-decoration:none;box-shadow:0 9px 25px #001d2644;transform:translateY(16px);opacity:0;transition:opacity .8s .45s,transform .9s .45s,box-shadow .25s}.rsvp-button:hover{box-shadow:0 8px 32px #b9a25b33}.rsvp-button:focus-visible{outline:3px solid #f3d998;outline-offset:6px}
.guest-floral{top:-40px;width:min(34vw,340px);z-index:4;transform-origin:15% 5%;animation:flower-sway 9s ease-in-out infinite alternate;pointer-events:none}.guest-floral img{left:0;top:-100%}.guest-floral-left{left:-55px}.guest-floral-right{right:-55px;animation-name:flower-sway-mirror}.guest-lantern{position:absolute;top:15px;width:175px;aspect-ratio:1;z-index:3;pointer-events:none}.guest-lantern-left{left:7%}.guest-lantern-right{right:7%}.guest-lantern-right .lantern-swing{animation-delay:-3.3s;animation-duration:7s}
.info-section{padding:120px 5vw 100px}.info-section .guest-content{margin-bottom:48px}.guest-info-grid{position:relative;z-index:3;max-width:1200px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:27px;margin:auto}.guest-card{position:relative;background:linear-gradient(135deg,#fff7e1,#f0dfb5);color:#073f40;border:2px solid #cba25a;border-radius:48% 48% 14px 14px / 70px 70px 14px 14px;box-shadow:0 0 0 4px #efd5a22d,0 13px 25px #001c2533;padding:65px 18px 30px;text-align:center;opacity:0;transform:translateY(35px) rotate(-1deg);transition:opacity .85s var(--guest-delay,0ms),transform 1.1s cubic-bezier(.2,.7,.2,1) var(--guest-delay,0ms)}.guest-card:before{content:'❧';position:absolute;top:20px;left:0;right:0;color:#b28943;font-size:24px}.guest-card img{display:block;width:100%;height:auto;aspect-ratio:1.6;object-fit:cover;mix-blend-mode:multiply}.guest-card h3{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(27px,2.6vw,36px);font-weight:400;margin:20px 0 4px}.guest-ornament{display:block;color:#af8740;font-size:24px;margin-bottom:14px}.guest-card p{font-size:16px;line-height:1.65;margin:9px 0;overflow-wrap:anywhere}.guest-card .guest-highlight{font-size:19px;color:#075055}.guest-card a{display:inline-block;color:#6c4e22;min-height:44px;padding:10px 0;font-size:16px;overflow-wrap:anywhere}.guest-card a:focus-visible{outline:2px solid #9a7738;outline-offset:3px}
.guest-visible>.guest-content,.guest-visible .rsvp-arch,.guest-visible .rsvp-button,.guest-card.guest-visible{opacity:1;transform:none}.guest-section:not(.guest-visible) *,.paused .guest-section *,.offscreen .guest-section *{animation-play-state:paused!important}
.rsvp-dialog{width:min(90vw,480px);border:1px solid #c7a363;background:#fff5dd;color:#073e40;padding:30px;border-radius:25px;box-shadow:0 20px 80px #00181a66}.rsvp-dialog::backdrop{background:#002c32c9;backdrop-filter:blur(4px)}.rsvp-dialog h2{font-size:34px}.rsvp-dialog p{line-height:1.65;font-size:16px}.rsvp-message-label{font-style:italic;color:#80632d}.rsvp-dialog blockquote{margin:0;border-left:2px solid #c7a363;padding:6px 15px;line-height:1.7}.rsvp-dialog button{display:block;min-height:44px;border:1px solid #b59657;background:#073e40;color:#fff1ce;border-radius:24px;padding:10px 20px;margin:25px auto 0}.rsvp-dialog button:focus-visible{outline:2px solid #826127;outline-offset:3px}
@media(min-width:768px) and (max-width:1050px){.guest-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:720px;gap:30px}.guest-card img{max-width:260px;margin:auto}.guest-lantern{width:135px}}
@media(max-width:767px){.rsvp-section{min-height:520px;padding:135px 30px 95px}.rsvp-arch{inset:22px 15px 20px;border-radius:48% 48% 4px 4px / 90px 90px 4px 4px}.guest-content h2{font-size:42px}.guest-content p{font-size:16px}.guest-divider{margin:20px 0}.rsvp-button{font-size:19px;padding:14px 22px;min-height:58px;gap:9px}.rsvp-button svg{width:25px}.guest-floral{width:190px;top:-25px}.guest-floral-left{left:-65px}.guest-floral-right{right:-65px}.guest-lantern{width:100px;top:10px}.guest-lantern-left{left:0}.guest-lantern-right{right:0}.info-section{padding:130px 30px 65px}.info-section .guest-content{margin-bottom:35px}.guest-info-grid{grid-template-columns:1fr;max-width:350px;gap:30px}.guest-card{padding:58px 26px 28px}.guest-card img{max-width:245px;margin:auto}.guest-card h3{font-size:34px}.guest-card p{font-size:16px}.guest-card .guest-highlight{font-size:21px}}
@media(prefers-reduced-motion:reduce){.guest-content,.rsvp-arch,.rsvp-button,.guest-card{transition:none;opacity:1;transform:none}}
.guest-floral-right{transform-origin:50% 5%}
.guest-section[hidden]{display:none}
/* Blocks 7–8: social invitation and the garden farewell. */
.social-section{min-height:550px;padding:150px 30px 100px;display:grid;place-items:center}.social-content{position:relative;z-index:3;text-align:center;max-width:800px;opacity:0;transform:translateY(24px);transition:opacity 1s,transform 1.3s}.social-content h2,.closing-content h2{font-size:clamp(42px,5.4vw,72px);line-height:1.15;color:#f8e9c7}.social-content>p{font-size:clamp(16px,1.8vw,22px);line-height:1.7}.social-button{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:64px;padding:15px 36px;border:2px solid #cda454;outline:3px solid #fae6b033;outline-offset:3px;border-radius:50px;background:linear-gradient(135deg,#fff9e9,#f7e7bd);color:#073e40;font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(19px,2.3vw,28px);text-decoration:none;box-shadow:0 9px 25px #001d2644;margin:18px 0}.social-button:hover{box-shadow:0 8px 35px #cbb16c44}.social-button:focus-visible{outline:3px solid #f0ca7b;outline-offset:6px}.social-content .social-handle{color:#e0c47e;font-size:22px;margin:20px 0 0;overflow-wrap:anywhere}
.closing-section{padding:140px 0 0}.closing-content{position:relative;z-index:3;max-width:850px;margin:auto;padding:0 30px;text-align:center;opacity:0;transform:translateY(30px);transition:opacity 1s,transform 1.3s}.countdown-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin:35px auto;max-width:730px}.countdown-grid>div{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:155px;padding:27px 12px 20px;background:radial-gradient(ellipse at 50% 30%,#fff9e8,#f4e3bb);border:2px solid #cba55d;border-radius:48% 48% 14px 14px / 43px 43px 14px 14px;box-shadow:0 0 0 4px #efd5a22d;color:#073e40;opacity:0;translate:0 20px;transition:opacity .8s,translate 1s}.countdown-grid>div:before{content:'❧';position:absolute;top:8px;left:0;right:0;color:#b18c47;font-size:19px}.countdown-grid dt{order:2;text-transform:uppercase;font-size:13px;letter-spacing:.06em;margin-top:7px}.countdown-grid dd{order:1;font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(42px,5.2vw,66px);font-variant-numeric:tabular-nums;line-height:1.1;margin:0}.closing-message{max-width:650px;margin:35px auto 0;font-size:clamp(17px,2vw,23px);line-height:1.7}.closing-signature{font-family:'Italiana',Georgia,serif;font-style:italic;font-size:clamp(38px,5vw,64px);color:#e9cd8d;margin:30px 0 20px}.countdown-end{font-family:'Bodoni Moda',Georgia,serif;font-size:30px;color:#f4d99e}.garden-window{position:relative;z-index:2;overflow:hidden;margin-top:15px;background:#164b47;opacity:0;transition:opacity 1.5s .35s}.garden-window:before{content:'';position:absolute;z-index:3;top:0;left:0;right:0;height:18%;background:linear-gradient(#0b4142,transparent);pointer-events:none}.closing-garden{width:100%;height:auto;max-height:720px;object-fit:cover;object-position:50% 65%;display:block;transform-origin:50% 50%;animation:garden-breathe 20s ease-in-out infinite alternate}.garden-light{position:absolute;width:23%;height:50%;bottom:9%;border-radius:50%;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(ellipse,#ffd77c55,transparent 68%);animation:glow 4s ease-in-out infinite alternate}.garden-light-one{left:0}.garden-light-two{right:0;animation-delay:-2s}.garden-fireflies{position:absolute;inset:0;pointer-events:none}.garden-fireflies i{position:absolute;width:4px;height:4px;background:#fff3b2;border-radius:50%;box-shadow:0 0 12px 3px #ffde9277;animation:firefly-drift 8s ease-in-out infinite alternate}.garden-fireflies i:nth-child(1){left:12%;top:35%}.garden-fireflies i:nth-child(2){left:28%;top:15%;animation-delay:-3s}.garden-fireflies i:nth-child(3){left:70%;top:28%;animation-delay:-5s}.garden-fireflies i:nth-child(4){left:88%;top:50%;animation-delay:-2s}.garden-fireflies i:nth-child(5){left:18%;top:70%;animation-delay:-6s}.garden-fireflies i:nth-child(6){left:77%;top:68%;animation-delay:-4s}.closing-farewell{position:relative;z-index:3;text-align:center;padding:24px 25px 30px;background:linear-gradient(#074042,#05373b)}.closing-farewell p{font-size:clamp(16px,2vw,21px);margin:0;line-height:1.7}.closing-farewell span{display:block;font-size:27px;color:#ceab63;margin-top:9px}.closing-visible .social-content,.closing-visible .closing-content,.closing-visible .garden-window{opacity:1;transform:none}.closing-visible .countdown-grid>div{opacity:1;translate:0 0}.countdown-grid>div:nth-child(2){transition-delay:.12s}.countdown-grid>div:nth-child(3){transition-delay:.24s}.countdown-grid>div:nth-child(4){transition-delay:.36s}.social-section:not(.closing-visible) *,.closing-section:not(.closing-visible) *,.paused .closing-section *,.offscreen .closing-section *{animation-play-state:paused!important}.no-lights .garden-light,.no-lights .garden-fireflies{display:none}
@keyframes garden-breathe{from{transform:scale(1.005)}to{transform:scale(1.035) translateY(-.5%)}}@keyframes firefly-drift{0%{opacity:.15;transform:translate(0,0)}50%{opacity:.8}100%{opacity:.25;transform:translate(14px,-28px)}}
@media(max-width:767px){.social-section{min-height:500px;padding:140px 30px 85px}.social-content h2{font-size:43px}.social-content>p{font-size:16px}.social-button{font-size:20px;min-height:58px;padding:14px 23px;gap:10px}.social-content .social-handle{font-size:20px}.closing-section{padding-top:145px}.closing-content{padding:0 24px}.closing-content h2{font-size:42px;max-width:310px;margin:auto}.countdown-grid{gap:10px;margin:30px auto;max-width:390px}.countdown-grid>div{min-height:107px;padding:25px 3px 14px;border-radius:48% 48% 10px 10px / 25px 25px 10px 10px;box-shadow:0 0 0 2px #efd5a22d}.countdown-grid dd{font-size:clamp(29px,8vw,40px)}.countdown-grid dt{font-size:9px;letter-spacing:.02em}.countdown-grid>div:before{font-size:14px;top:7px}.closing-message{font-size:17px;margin-top:28px}.closing-signature{font-size:42px;margin:27px 0 20px}.closing-garden{max-height:none;object-fit:contain}.garden-window{margin-top:0}.closing-farewell{padding-bottom:max(28px,env(safe-area-inset-bottom))}.closing-farewell p{font-size:16px}}
@media(prefers-reduced-motion:reduce){.social-content,.closing-content,.garden-window,.countdown-grid>div{opacity:1;transform:none;translate:none;transition:none}.closing-garden,.garden-fireflies i{animation:none}}
.journey-offscreen .scene *{animation-play-state:paused!important}.closing-garden{max-height:none;object-fit:contain}.garden-window:before{height:5%}
/* Block 3 only: continuous, layered celebration theatre. */
.celebrations.events-interactive{padding:0;overflow:clip;border-radius:0;isolation:auto}.events-interactive>.events-heading,.events-interactive>.events-grid,.events-interactive>.events-note,.events-interactive>.event-floral{display:none}.event-scroll-story{height:540svh;position:relative}.event-theatre{position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 35% 55%,#fbf0d0,#dfdbbb);color:#073f40;--pointer-x:0px;--pointer-y:0px}.story-landscape{position:absolute;inset:-10%;background:url('assets/pavilion.webp') center 65%/cover no-repeat;opacity:.18;transform:translate3d(calc(var(--pointer-x) * -.4),calc(var(--pointer-y) * -.4),0) scale(1.08);filter:saturate(.65)}.story-halo{position:absolute;inset:0;background:radial-gradient(ellipse at 35% 50%,#fff7dcaa,transparent 60%);opacity:.9;transition:opacity .7s}.story-heading{position:absolute;z-index:6;top:4%;width:100%;text-align:center;pointer-events:none}.story-heading p{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(31px,3.7vw,48px);margin:0}.story-heading span{display:block;font-size:12px;letter-spacing:.05em;margin-top:8px;color:#76623e}.story-floor{position:absolute;left:7%;bottom:13%;width:57%;height:16%;border:1px solid #c2a36c77;background:radial-gradient(ellipse,#e5c58699,#b0944e22 60%,transparent 72%);border-radius:50%;transform:perspective(500px) rotateX(35deg) translateX(var(--pointer-x));box-shadow:0 15px 45px #9c884c33}.story-atlas{position:absolute;aspect-ratio:1;overflow:hidden;pointer-events:none}.story-atlas img{position:absolute;width:200%;height:200%;max-width:none}.story-arch{width:min(66svh,59vw);left:3%;bottom:18%;transform:translate3d(calc(var(--pointer-x) * .5),calc(var(--arch-rise,0px) + var(--pointer-y) * .5),0) scale(calc(1 + var(--story-progress,0) * .06));transform-origin:50% 100%;z-index:2}.story-arch img{top:0;left:0}.story-actors{position:absolute;left:5%;bottom:12%;width:55%;height:66%;z-index:4;transform:translate3d(var(--pointer-x),var(--pointer-y),0)}.story-actor{position:absolute;inset:0;transform-origin:50% 90%;will-change:transform,opacity}.story-prop{width:75%;bottom:0;left:12.5%;filter:drop-shadow(0 16px 13px #7c66332e)}.prop-sofa img{left:-100%;top:0}.prop-hands{width:78%;left:11%;bottom:3%;animation:mehendi-float 5s ease-in-out infinite alternate}.prop-hands img{left:0;top:-100%}.prop-table{width:95%;left:2.5%;bottom:-3%}.prop-table img{left:-100%;top:-100%}.prop-couple{width:78%;bottom:-2%;left:11%}.prop-couple img{left:0;top:0}.story-details{position:absolute;z-index:7;left:64%;width:31%;top:31%;color:#073f40}.story-event-copy[hidden]{display:none}.story-event-copy h3{font-family:'Bodoni Moda',Georgia,serif;font-size:clamp(38px,5vw,69px);font-weight:400;line-height:1.1;margin:10px 0 7px}.story-event-number{font-size:12px;letter-spacing:.2em;color:#9a7436}.story-ornament{display:block;color:#af8740;font-size:30px;margin:10px 0}.story-event-copy p:not(.story-event-number){font-size:clamp(14px,1.6vw,19px);line-height:1.7;margin:9px 0}.story-event-copy a{display:inline-block;min-height:44px;padding:12px 0;color:#725124;font-size:15px;text-underline-offset:5px}.story-nav{position:absolute;z-index:10;bottom:5%;left:10%;right:10%;display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.story-nav button{border:1px solid #ac874d66;background:#fff7e4aa;border-radius:22px;color:#34544d;min-height:44px;padding:8px 17px;font-size:14px;transition:background .2s,color .2s}.story-nav button[aria-current=true]{background:#073f40;color:#fff0c9;border-color:#073f40}.story-hint{position:absolute;z-index:9;bottom:.6%;left:0;width:100%;text-align:center;font-size:11px;color:#75603b;pointer-events:none}.story-flower{position:absolute;z-index:8;top:-8%;width:32%;background:transparent;border:0;padding:0;pointer-events:auto;cursor:pointer;transform-origin:50% 0;animation:story-flower-breeze 6s ease-in-out infinite alternate}.story-flower img{top:-100%;left:0}.story-flower-left{left:-10%;translate:calc(var(--pointer-x) * -1.5) 0}.story-flower-right{right:-10%;scale:-1 1;translate:calc(var(--pointer-x) * 1.5) 0;animation-delay:-2s}.story-flower:hover{filter:brightness(1.06)}.story-flower:focus-visible,.story-lamp:focus-visible,.story-nav button:focus-visible{outline:2px solid #9d742e;outline-offset:-3px}.story-lamp{position:absolute;z-index:9;top:0;right:10%;width:min(23svh,19vw);aspect-ratio:1;border:0;padding:0;background:transparent;cursor:pointer}.story-lamp .lantern-swing{pointer-events:none}.story-lights-off .story-halo{opacity:.15}.story-lights-off .glow{display:none}.story-petals{position:absolute;inset:0;z-index:11;pointer-events:none;overflow:hidden}.story-burst-petal{position:absolute;display:block;width:12px;height:18px;background:linear-gradient(135deg,#eaa5ae,#a63755);border-radius:80% 10% 65% 20%;animation:story-petal-shower 2.5s ease-out both}.event-theatre:not(.story-visible) *,.paused .event-theatre *,.offscreen .event-theatre *{animation-play-state:paused!important}.no-lights .story-halo{opacity:.15}.no-lights .story-lamp .glow{display:none}.no-petals .story-petals{display:none}
@keyframes story-petal-shower{0%{opacity:0;transform:translate(0,0) rotate(0)}8%{opacity:.9}100%{opacity:0;transform:translate(var(--petal-x),var(--petal-y)) rotate(430deg)}}@keyframes story-flower-breeze{from{rotate:-3deg}to{rotate:3deg}}@keyframes mehendi-float{from{translate:0 0;rotate:-2deg}to{translate:0 -12px;rotate:2deg}}
@media(max-width:767px){.event-scroll-story{height:560svh}.story-heading{top:3%}.story-heading p{font-size:32px}.story-heading span{font-size:10px}.story-arch{width:94vw;left:3%;bottom:auto;top:14%;transform-origin:50% 80%}.story-floor{left:8%;width:84%;bottom:40%;height:9%}.story-actors{left:6%;width:88%;height:42%;bottom:39%}.story-prop{width:80%;left:10%;bottom:0}.prop-table{width:96%;left:2%;bottom:-3%}.prop-couple{width:76%;left:12%;bottom:-2%}.story-details{left:8%;width:84%;top:63%;text-align:center}.story-event-copy h3{font-size:40px;margin:5px 0}.story-event-number{display:none}.story-ornament{font-size:22px;margin:3px 0}.story-event-copy p:not(.story-event-number){font-size:13px;line-height:1.45;margin:5px 0}.story-event-copy a{font-size:13px;padding:9px 0;min-height:38px}.story-nav{left:3%;right:3%;gap:5px;bottom:5%}.story-nav button{font-size:10px;padding:7px 9px;min-height:44px}.story-hint{font-size:10px;bottom:1%}.story-flower{width:48%;top:-4%}.story-flower-left{left:-20%}.story-flower-right{right:-20%}.story-lamp{width:25vw;right:0;top:5%}}
@media(max-height:650px) and (max-width:767px){.story-heading{top:2%}.story-heading span{display:none}.story-arch{width:75vw;left:12.5%;top:10%}.story-actors{height:43%;bottom:39%}.story-details{top:60%}.story-event-copy h3{font-size:30px}.story-nav button{padding:5px 7px}.story-ornament{display:none}}
@media(prefers-reduced-motion:reduce){.story-actor,.story-arch,.story-actors{will-change:auto}.story-flower,.prop-hands{animation:none}.story-burst-petal{animation-duration:.01s}}
.story-atlas:not(.prop-couple) img{width:100%;height:100%;left:0;top:0}
.story-actors{cursor:grab;touch-action:pan-y;translate:var(--drag-x,0px) 0;transition:translate .6s cubic-bezier(.2,.7,.2,1)}.story-actors.is-dragging{cursor:grabbing;transition:none}.story-actors:focus-visible{outline:1px dashed #ad874f88;outline-offset:3px}
.event-theatre{overflow:clip}
/* Closing scene only: separate static couple, wind-blown fabric and water/light. */
.garden-window.layered-garden{aspect-ratio:1.5;isolation:isolate;background:#0a4141;--garden-depth:0}
.garden-background{position:absolute;inset:-3%;width:106%;height:106%;object-fit:cover;transform:translateY(calc(var(--garden-depth) * -12px)) scale(1.01)}
.garden-couple-layer,.garden-veil-layer,.garden-stole-layer{position:absolute;aspect-ratio:1;pointer-events:none}.garden-couple-layer{width:65%;left:17.5%;bottom:0;z-index:5;transform:translateY(calc(var(--garden-depth) * 10px))}.garden-couple-layer img,.garden-veil-layer img,.garden-stole-layer img{width:100%;height:100%;object-fit:contain;display:block}.garden-veil-layer{width:51%;left:2%;bottom:0;z-index:6;transform-origin:62% 6%;animation:anchal-breeze 3.4s ease-in-out infinite alternate}.garden-stole-layer{width:38%;left:48%;bottom:7%;z-index:6;transform-origin:50% 6%;animation:stole-breeze 4.8s ease-in-out infinite alternate}.layered-garden .garden-light,.layered-garden .garden-fireflies{z-index:7}.layered-garden:before{z-index:9;pointer-events:none}.fountain-water{position:absolute;left:22%;top:18%;width:56%;height:47%;z-index:3;pointer-events:none;opacity:.55}.fountain-water path{fill:none;stroke:#fff8df;stroke-width:1.4;stroke-dasharray:2 7;animation:fountain-cascade 1.3s linear infinite}.fountain-water path:nth-child(2n){animation-delay:-.5s;stroke-width:.9}.fountain-water ellipse{fill:none;stroke:#fff7d8;stroke-width:.7;transform-origin:center;animation:fountain-ripple 3s ease-out infinite}.fountain-water ellipse:nth-of-type(2){animation-delay:-1.5s}.layered-garden .garden-fireflies i{width:3px;height:3px}.layered-garden:not(.garden-in-view) *,.paused .layered-garden *,.offscreen .layered-garden *{animation-play-state:paused!important}
@keyframes anchal-breeze{0%{transform:translateY(calc(var(--garden-depth) * 10px)) rotate(-.7deg) skewX(-.3deg)}100%{transform:translateY(calc(var(--garden-depth) * 10px)) rotate(1.5deg) skewX(1deg)}}@keyframes stole-breeze{0%{transform:translateY(calc(var(--garden-depth) * 10px)) rotate(1deg)}100%{transform:translateY(calc(var(--garden-depth) * 10px)) rotate(-1.4deg) skewX(-.6deg)}}@keyframes fountain-cascade{to{stroke-dashoffset:-36}}@keyframes fountain-ripple{0%{opacity:.65;scale:.94 1}100%{opacity:0;scale:1.08 1.05}}
@media(max-width:767px){.garden-window.layered-garden{aspect-ratio:1.2}.garden-background{object-position:50% 55%}.garden-couple-layer{width:78%;left:11%;bottom:1%}.garden-veil-layer{width:61%;left:-8%;bottom:1%}.garden-stole-layer{width:46%;left:47%;bottom:8%}.fountain-water{left:15%;width:70%;top:20%;height:43%}}
@media(prefers-reduced-motion:reduce){.garden-background,.garden-couple-layer{transform:none}.garden-veil-layer,.garden-stole-layer,.fountain-water *{animation:none!important}}
.garden-stole-layer{width:50%;left:34%;bottom:7%}
@media(max-width:767px){.garden-stole-layer{width:60%;left:30%;bottom:8%}}

/* Keep the shoulder intact; animate only the lower free fabric. */
.garden-veil-layer{mask-image:linear-gradient(to bottom,transparent 0%,transparent 72%,#000 74%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,transparent 72%,#000 74%);transform-origin:62% 45%}
.layered-garden .fountain-water{inset:-3%;width:106%;height:106%;opacity:.65;transform:translateY(calc(var(--garden-depth) * -12px)) scale(1.01)}
.fountain-water path{stroke-width:1;stroke-dasharray:1.5 5;animation-duration:1.8s}.fountain-water path:nth-child(2n){stroke-width:.65;animation-delay:-.7s}
@media(max-width:767px){.layered-garden .fountain-water{object-position:50% 55%}}
@media(prefers-reduced-motion:reduce){.layered-garden .fountain-water{transform:none}}

/* Lower bridal cloth reuses the exact registered couple artwork, avoiding a separate train seam. */
#gallerySignature,#instagramHandle,#closingSignature{display:none!important}
.garden-veil-layer{width:65%;left:17.5%;bottom:0;mask-image:linear-gradient(transparent 55%,#000 78%);-webkit-mask-image:linear-gradient(transparent 55%,#000 78%);clip-path:polygon(0 0,55% 0,55% 100%,0 100%);transform-origin:48% 58%}
@keyframes anchal-breeze{from{transform:translateY(calc(var(--garden-depth) * 10px)) skewX(-.2deg)}to{transform:translateY(calc(var(--garden-depth) * 10px)) skewX(.45deg)}}
@media(max-width:767px){.garden-veil-layer{width:78%;left:11%;bottom:1%}}

/* Event guidance and fixed invitation palette on devices using dark mode. */
.story-hint{bottom:.35%;display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:6px;font-size:11px;line-height:1.25}.story-hint strong{grid-row:1 / span 2;font-size:16px;font-weight:400;animation:story-scroll-cue 1.8s ease-in-out infinite}.story-hint span,.story-hint small{display:block}.story-hint small{font-size:9px;opacity:.82}@keyframes story-scroll-cue{50%{transform:translateY(3px)}}
@media(prefers-reduced-motion:reduce){.story-hint strong{animation:none}}

/* Production frame: retain review controls in the DOM for the animation engine, hide from guests. */
[hidden]{display:none!important}.controls-toggle,.controls{display:none!important}.hide-sky .sky,.hide-architecture .architecture,.hide-lanterns .lantern,.hide-lanterns .gallery-lantern,.hide-lanterns .guest-lantern,.hide-lanterns .story-lamp{display:none!important}
.family-copy .parents,.family-copy .groom-parents{white-space:pre-line;overflow-wrap:anywhere}.family-copy{overflow-wrap:anywhere}.hero-names h1 span{overflow-wrap:anywhere}
#pavilionWatermark{position:fixed;left:14px;bottom:max(18px,env(safe-area-inset-bottom));z-index:80;color:#fff8dc;background:#073e3eaa;padding:7px 12px;border:1px solid #d9bd7c70;border-radius:20px;font:12px Georgia,serif;pointer-events:none}
#pavilionBuy{position:fixed;right:14px;bottom:max(18px,env(safe-area-inset-bottom));z-index:81;padding:12px 16px;border-radius:24px;background:#f3e5bc;color:#073e3e;text-decoration:none;font:14px Georgia,serif;box-shadow:0 2px 18px #0003}#pavilionBuy small{display:block;text-align:center;margin-top:3px}#pavilionMusic{position:fixed;right:14px;top:max(14px,env(safe-area-inset-top));z-index:81;background:#073e3edd;color:#f2dfb1;border:1px solid #d8b66a80;border-radius:22px;padding:10px 14px;font:12px Georgia,serif;cursor:pointer}
