:root{--wine:#12080c;--burgundy:#4c0d1e;--ivory:#f5e9d8;--gold:#c79a45;--muted:#ba9c83;--amber:#e2c27a}body{background:#12080c;color:var(--ivory)}.cinema-scene{isolation:isolate;position:relative}.environment{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;perspective:1000px;contain:paint}.environment-depth{position:absolute;inset:-5%;transform-style:preserve-3d;transform:translate3d(0,var(--depth-drift,0px),0)}.ambient-arch{position:absolute;width:88%;max-width:700px;height:92%;left:50%;top:8%;transform:translateX(-50%) translateZ(-80px);border:1px solid #b58b3833;border-radius:50% 50% 0 0 / 26% 26% 0 0;box-shadow:0 0 0 12px #12080c22,0 0 0 13px #a9772818,inset 0 0 90px #08020566}.geometric-veil{position:absolute;inset:0;opacity:.075;background-image:linear-gradient(45deg,transparent 48.5%,#c79a45 49%,#c79a45 50%,transparent 50.5%),linear-gradient(-45deg,transparent 48.5%,#c79a45 49%,#c79a45 50%,transparent 50.5%);background-size:74px 74px;mask-image:radial-gradient(ellipse,transparent 10%,#000 95%);transform:translateZ(-60px)}.light-beam{position:absolute;width:65%;height:110%;top:-25%;background:linear-gradient(160deg,#f0c57710,transparent 55%);transform-origin:top;mix-blend-mode:screen}.beam-one{left:-20%;animation:beam-drift 25s ease-in-out infinite alternate}.beam-two{right:-30%;animation:beam-drift 32s -14s ease-in-out infinite alternate-reverse;opacity:.65}.haze{position:absolute;inset:-25%;background:radial-gradient(ellipse at 35% 57%,#ad683516,transparent 48%),radial-gradient(ellipse at 74% 30%,#8c223426,transparent 43%);animation:haze-drift 29s ease-in-out infinite alternate;transform:translateZ(30px)}.haze-near{animation-duration:21s;animation-delay:-9s;opacity:.5;transform:translateZ(70px)}.bokeh-depth{position:absolute;inset:0;opacity:.45;transform:translateZ(-40px)}.bokeh-depth i{position:absolute;width:7px;height:7px;border-radius:50%;background:#e2bd74;box-shadow:0 0 12px 3px #c8984533;animation:candle 5s ease-in-out infinite alternate}.bokeh-depth i:nth-child(1){left:17%;top:32%}.bokeh-depth i:nth-child(2){left:83%;top:57%;animation-delay:-2s;width:4px;height:4px}.bokeh-depth i:nth-child(3){left:76%;top:17%;animation-delay:-3s}.lantern-layer{position:absolute;inset:0;transform:translateZ(50px)}.lantern-photo{position:absolute;top:-5%;width:110px;height:230px;background:url('assets/palace.webp') 50% 7%/520px auto;mask-image:radial-gradient(ellipse,#000 25%,transparent 69%);filter:brightness(.55) sepia(.4);transform-origin:top center;animation:lantern-sway 11s ease-in-out infinite alternate;opacity:.65}.lantern-left{left:-18px}.lantern-right{right:-18px;top:8%;animation-delay:-6s;animation-duration:14s}.gold-speck{position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;background:#e2c27a;border-radius:50%;opacity:0;box-shadow:0 0 7px #e2c27a66;animation:speck-drift var(--duration) var(--delay) linear infinite}.dust-near{position:absolute;inset:0;transform:translateZ(90px)}.dust-far{position:absolute;inset:0;transform:translateZ(-30px)}.dust-near .gold-speck{width:3px;height:3px;animation-duration:16s;opacity:.3}.shadow-curtain{position:absolute;inset:0;background:linear-gradient(110deg,#08020560,transparent 40%,#08020522 70%);animation:shadow-travel 26s ease-in-out infinite alternate}.environment *{animation-play-state:paused!important}.ambient-active .environment *{animation-play-state:running!important}.ambience-paused *{animation-play-state:paused!important}@keyframes beam-drift{from{transform:rotate(-12deg) translateX(-3%)}to{transform:rotate(9deg) translateX(3%)}}@keyframes haze-drift{from{transform:translate3d(-3%,-2%,25px) scale(1)}to{transform:translate3d(5%,3%,25px) scale(1.07)}}@keyframes lantern-sway{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}@keyframes candle{0%,100%{opacity:.65}22%{opacity:.87}36%{opacity:.7}67%{opacity:1}}@keyframes speck-drift{0%{transform:translate3d(0,35px,0);opacity:0}25%,70%{opacity:.5}100%{transform:translate3d(var(--drift),-75px,20px);opacity:0}}@keyframes shadow-travel{to{transform:translateX(6%);opacity:.55}}
.arrival{background:radial-gradient(ellipse at 50% 47%,#4c0d1e77,#1b0a10 55%,#090407)}.arrival>.environment{z-index:0}.arrival-art{opacity:.55;animation:floral-breathe 22s ease-in-out infinite alternate}.arrival:after{border-color:#c79a4540;box-shadow:inset 0 0 50px #0004}.arrival-title,.arrival-top,.arrival-action,.arrival-foot{z-index:4}.arrival h1{color:#f5e9d8;text-shadow:0 3px 25px #0008}.envelope-back{background:linear-gradient(125deg,#4b1023,#210810)}.envelope-front{background:linear-gradient(155deg,#57152a,#260811)}.envelope-flap{background:linear-gradient(155deg,#6b1c34,#350b1a)}.envelope-stage{filter:drop-shadow(0 0 40px #b2761a15)}.wax-seal:after{content:'';position:absolute;inset:4px;border-radius:50%;background:linear-gradient(110deg,transparent 25%,#e2c27a44 46%,transparent 60%);animation:seal-reflection 9s ease-in-out infinite;mix-blend-mode:screen}.letter{background:#281019;color:#e2c27a}.letter:after{border-color:#c79a4555}.opening .letter{box-shadow:0 0 65px #bf843522}.arrival.card-expand .letter{background:#12080c}.arrival-art:before,.arrival-art:after{filter:brightness(.65)}@keyframes floral-breathe{to{transform:translate3d(2px,-5px,0) scale(1.015)}}@keyframes seal-reflection{0%,40%{opacity:0;transform:rotate(-30deg)}60%{opacity:.65}100%{opacity:0;transform:rotate(35deg)}}
/* A pinned, dark ceremonial chamber with sequential calligraphy and translation. */
.blessing{height:190svh;min-height:0;display:block;padding:0;background:#12080c;color:var(--ivory)}.blessing-sticky{position:sticky;top:0;min-height:650px;height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 25px;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 45%,#4c0d1e55,transparent 65%)}.blessing-sticky>.ornament,.blessing-sticky>.eyebrow,.blessing-frame,.blessing-translation,.blessing-sticky>.scroll-cue{position:relative;z-index:3}.blessing-sticky>.eyebrow{color:#c0a268;font-size:11px;margin:15px 0 30px;letter-spacing:.18em}.blessing-frame{width:min(100%,700px);padding:28px 8px;margin:10px 0 25px}.blessing-frame:before,.blessing-frame:after{content:'';position:absolute;left:12%;right:12%;height:1px;background:linear-gradient(90deg,transparent,#c79a4588,transparent);transform:scaleX(0)}.blessing-frame:before{top:0}.blessing-frame:after{bottom:0}.blessing h2.calligraphy{font-family:'Amiri',serif;font-size:clamp(32px,7.8vw,64px);font-weight:400;line-height:2.1;margin:0;white-space:normal;opacity:0;clip-path:inset(0 100% 0 0);transform:translateZ(35px);text-shadow:0 0 32px #c79a4522;letter-spacing:0}.blessing-translation{font-size:19px;line-height:1.65;color:#c5b3a2;opacity:0}.blessing-sticky .scroll-cue{position:absolute;bottom:85px;color:#b59763}.ceremony-started .blessing-frame:before,.ceremony-started .blessing-frame:after{animation:ceremony-line 1.7s .25s forwards}.ceremony-started .calligraphy{animation:calligraphy-emerge 2.7s .45s forwards,foil-travel 16s 3s ease-in-out infinite}.ceremony-started .blessing-sticky>.ornament{animation:ceremony-glow 3s ease both}.ceremony-started .geometric-veil{animation:pattern-emerge 3.5s 1s both}@keyframes ceremony-line{to{transform:scaleX(1)}}@keyframes calligraphy-emerge{from{opacity:0;clip-path:inset(0 100% 0 0);filter:blur(2px)}to{opacity:1;clip-path:inset(0 0 0 0);filter:blur(0)}}@keyframes ceremony-glow{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes pattern-emerge{from{opacity:0}to{opacity:.07}}
.foil-type{color:#e2c27a;background-image:linear-gradient(110deg,#b58b4e 5%,#ebd5a3 28%,#c89c58 43%,#f8edcf 49%,#c89c58 56%,#e0c18c 77%,#b38a4b);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 24px #b88a3020}.foil-type:not([data-reveal]):not([data-date-reveal]),.foil-type.type-lit{animation:foil-travel 16s ease-in-out infinite}.foil-type[data-reveal]{animation-play-state:paused}.foil-type.type-lit{animation-play-state:running}@keyframes foil-travel{0%,25%{background-position:100% 50%}70%,100%{background-position:0% 50%}}
.world-track{background:#12080c;color:var(--ivory)}.world-sticky{background:#160910}.world-image{filter:brightness(.23) saturate(.65);opacity:.9;transform:translate3d(0,var(--travel,0px),-60px) scale(var(--push,1))}.world-wash{background:radial-gradient(ellipse at 50% 48%,#210b15bd,#16080fd9 38%,#12080c44 78%),linear-gradient(#12080c,transparent 20%,transparent 70%,#12080c)}.world-vignette{box-shadow:inset 0 0 100px #070204aa;border-color:#b4812610}.world-content{z-index:5}.family-lines{color:#dbc6ad}.family-lines .eyebrow{color:#b9a071}.person p{color:#c7b09a}.couple-and{color:#c79a45;text-shadow:0 0 20px #a0713b22}.world-floral{z-index:4;filter:brightness(.38) saturate(.8);opacity:.85}.world-floral:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 60% 70%,#d0983022,transparent 50%);animation:candle 7s infinite alternate}.world-hint,.scene-number{color:#bc9b68}.world-bottom .eyebrow{color:#beaa8a}.world-bottom .ornament{color:#bc8f43}.date-track,.date-sticky{background:#12080c}.date-sticky{background:radial-gradient(ellipse at 50% 42%,#4c0d1e55,#12080c 70%)}.date-content{z-index:3}.date-arch{z-index:2;box-shadow:0 0 0 10px #12080c55,0 0 0 11px #c79a451a,inset 0 0 55px #c79a4505;border-color:#c79a4540}.date-time{color:#dfbd7e}.countdown span{color:#e2c27a;transition:opacity .35s;animation:number-light 8s ease-in-out infinite}.countdown>div:nth-child(2) span{animation-delay:-2s}.countdown>div:nth-child(3) span{animation-delay:-4s}.countdown-heading{color:#d9c3ab}.countdown-note{color:#bda68e}@keyframes number-light{50%{text-shadow:0 0 18px #c79a4520}}
.formal-section{background:radial-gradient(ellipse at 30% 40%,#39101e77,#16090f 65%);color:var(--ivory);overflow:hidden}.formal-section>.section-kicker,.formal-card,.formal-section>.text-button{z-index:3}.formal-card{background:linear-gradient(145deg,#33121de8,#180b12f5);box-shadow:0 35px 80px #0008,0 0 50px #9b602912;color:#e9d5b7;border:1px solid #c79a4555}.formal-card:before,.formal-card:after{mix-blend-mode:luminosity;opacity:.08;filter:brightness(.6)}.card-inner{border-color:#c79a4566;outline-color:#c79a451c}.formal-bismillah{font-family:'Amiri',serif;color:#d8b772}.formal-invitation,.parent,.card-address{color:#c3ab94}.formal-and{color:#c79a45}.card-date,.formal-card h3{color:#e2c27a}.formal-section>.text-button{color:#d4b375}.section-kicker{color:#bfa06e}.card-ending{color:#ddc6aa}.formal-card:after{background:linear-gradient(115deg,transparent 20%,#e2c27a12 49%,transparent 70%);inset:0;height:auto;mask-image:none;transform:none;animation:panel-reflection 20s ease-in-out infinite;z-index:0;pointer-events:none}.card-inner{z-index:2}@keyframes panel-reflection{0%,30%{transform:translateX(-100%)}70%,100%{transform:translateX(100%)}}
.venue-section{background:#12080c}.venue-art{z-index:2}.venue-art img{filter:brightness(.32) saturate(.7);animation:venue-camera 27s ease-in-out infinite alternate}.venue-art:after{background:linear-gradient(transparent 30%,#12080c 98%),linear-gradient(90deg,#12080c55,transparent,#12080c55)}.venue-copy{z-index:3}.venue-address{color:#c1ac98}.venue-art-label{color:#d5b779}.rsvp-section{background:radial-gradient(ellipse at 20% 20%,#4c0d1e55,transparent 60%),#170a10;color:var(--ivory);overflow:hidden}.rsvp-heading,.rsvp-form-wrap{position:relative;z-index:3}.rsvp-heading>p:not(.eyebrow){color:#c5af98}.rsvp-heading>.eyebrow{color:#c79a45}.rsvp-form-wrap{padding:25px;border:1px solid #c79a453b;background:linear-gradient(130deg,#4c0d1e30,#12080caa);box-shadow:0 22px 60px #0003,inset 0 1px #e2c27a0d}.rsvp-monogram{color:#c79a4566}input:not([type=radio]),textarea,select{background:#12080c99;border-color:#c79a4544;color:#f5e9d8}select option{background:#1b0a10;color:#f5e9d8}input::placeholder,textarea::placeholder{color:#9b8575}label small,.rsvp-availability{color:#bda48d}.attendance-options label{border-color:#c79a4544;color:#e2cfb9}.attendance-options label:has(input:checked){background:#c79a4510;border-color:#c79a45aa}.attendance-options input{accent-color:#c79a45}.form-status{color:#e2c27a}.rsvp-success{position:relative;overflow:hidden}.rsvp-success:before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse,#c79a4514,transparent 70%);animation:ceremony-glow 2s both}.rsvp-success h3,.success-names{color:#e2c27a}.closing{background:radial-gradient(ellipse at 50% 45%,#4c0d1e66,#12080c 75%)}.closing>*:not(.environment):not(.closing-art){position:relative;z-index:3}.closing-art{opacity:.18;filter:brightness(.65)}.closing-venue{color:#c1aa93}.gallery-section,.our-story{background:#170a10;color:var(--ivory)}.gallery-photo{background:#2a0c16}.button,.button.gold,.rsvp-form-wrap .gold{position:relative;isolation:isolate;overflow:hidden;border:1px solid #c79a4577;background:linear-gradient(125deg,#4c0d1e99,#16080fe8);color:#e2c27a;box-shadow:inset 0 1px #e2c27a12,0 7px 20px #0002;transition:border-color .3s,box-shadow .3s,transform .3s;transform:perspective(700px) translateZ(0)}.button:before{content:'';position:absolute;inset:-1px;z-index:-1;background:linear-gradient(110deg,transparent 30%,#e2c27a16 48%,transparent 64%);transform:translateX(-110%);transition:transform .8s}.button:hover,.button.gold:hover,.rsvp-form-wrap .gold:hover,.button:focus-visible{background:#4c0d1e77;border-color:#e2c27abb;box-shadow:0 4px 24px #c79a4510;transform:perspective(700px) translateZ(4px)}.button:hover:before,.button:focus-visible:before{transform:translateX(110%)}.button:active{transform:perspective(700px) translateZ(2px)}.round-control{background:#12080ce8;border-color:#c79a4555}.menu-dialog,.small-dialog{background:radial-gradient(ellipse at 40% 10%,#4c0d1e77,transparent 60%),#12080c}.toast{background:#2a0c16;color:#f5e9d8}.grain{opacity:.045}.preloader{background:#12080c}.ornament{color:#c79a45}@keyframes venue-camera{to{transform:scale(1.045) translateY(-5px)}}
/* Each transition falls into shadow, then receives the next scene's amber light. */
.formal-section:before,.venue-section:before,.rsvp-section:before,.closing:before{content:'';position:absolute;left:0;right:0;top:0;height:90px;background:linear-gradient(#080407,transparent);pointer-events:none;z-index:6}.low-motion .blessing{height:auto}.low-motion .blessing-sticky{position:relative;height:auto;min-height:100svh}.low-motion .calligraphy{opacity:1!important;clip-path:none!important;filter:none!important;animation:none!important}.low-motion .blessing-frame:before,.low-motion .blessing-frame:after{transform:scaleX(1);animation:none}.low-motion .blessing-translation{opacity:1!important;transform:none!important}.low-motion .environment *,.low-motion .foil-type,.low-motion .arrival-art,.low-motion .venue-art img,.low-motion .formal-card:after,.low-motion .wax-seal:after{animation:none!important}.low-motion .dust-near,.low-motion .dust-far,.low-motion .haze-near,.low-motion .beam-two{display:none}.low-motion .environment-depth{transform:none}.ambience-paused .foil-type{animation-play-state:paused!important}
@media(max-width:759px){.rsvp-form-wrap{padding:22px 17px}.attendance-options{grid-template-columns:1fr}.attendance-options label{font-size:16px;padding:15px}.blessing-frame{padding:25px 0}.blessing h2.calligraphy{font-size:clamp(32px,8.3vw,42px)}.blessing-translation{font-size:19px}.world-wash{background:radial-gradient(ellipse at center,#1b0a10dd 0,#1b0a10c9 42%,#12080c70 88%)}.family-line{font-size:25px}.lantern-photo{width:90px;height:195px;opacity:.5}.world-floral{width:45%}.rsvp-heading h2{font-size:56px}.formal-section{padding-top:85px}.blessing-sticky .scroll-cue{bottom:75px}.formal-card{padding:10px}.card-inner{padding-top:40px;padding-bottom:40px}}
@media(min-width:760px){.rsvp-form-wrap{max-width:490px;padding:38px}.blessing-frame{margin-top:20px;padding:35px 10px}.blessing-sticky{padding-top:90px}.blessing-translation{font-size:23px}.lantern-left{left:5%}.lantern-right{right:5%}.lantern-photo{width:140px;height:290px;background-size:650px auto}.venue-art:after{background:linear-gradient(90deg,transparent,#12080c),linear-gradient(#12080c66,transparent 40%,#12080c)}.venue-art img{filter:brightness(.38) saturate(.7)}}
@media(prefers-reduced-motion:reduce){.blessing{height:auto}.blessing-sticky{position:relative;height:auto;min-height:100svh}.calligraphy{opacity:1!important;clip-path:none!important;filter:none!important}.environment *{animation:none!important}.blessing-frame:before,.blessing-frame:after{transform:scaleX(1)}.blessing-translation{opacity:1!important;transform:none!important}.environment-depth{transform:none!important}.dust-near,.dust-far{display:none}}
@media print{.environment{display:none!important}.formal-section{background:white!important;color:#31040c!important}.formal-card{background:#faf3e7!important;color:#31040c!important;border:0;box-shadow:none}.formal-card:after{display:none}.formal-card .foil-type{-webkit-text-fill-color:#5a0718;background:none;color:#5a0718}.formal-bismillah,.formal-invitation,.parent,.card-address,.card-ending{color:#5a0718}.card-date,.formal-card h3{color:#5a0718}}
.low-motion [data-reveal],.low-motion [data-date-reveal]{clip-path:none!important}.geometric-veil{opacity:.035}.environment .light-beam{opacity:.65}.menu-dialog #motion-toggle{display:block;margin:20px auto 0;color:#c3a16c;font-size:11px}.cinema-scene:not(.ambient-active) .foil-type,.cinema-scene:not(.ambient-active) .venue-art img,.cinema-scene:not(.ambient-active) .formal-card:after{animation-play-state:paused}.world-floral:after{animation-play-state:paused}.ambient-active .world-floral:after{animation-play-state:running}.blessing-sticky>.ornament{margin-top:0}.blessing-frame{transform:perspective(1100px) translateZ(calc(var(--blessing-progress,0)*35px))}.world-sticky .shadow-curtain{background:linear-gradient(110deg,#08020540,transparent 45%,#08020540);opacity:calc(.4 + var(--camera,0)*.2)}
.ceremony-started h2.calligraphy.foil-type{animation:calligraphy-emerge 2.7s .45s forwards,foil-travel 16s 3s ease-in-out infinite}.ceremony-started .blessing-sticky.ambient-active h2.calligraphy{animation-play-state:running}.ambience-paused .calligraphy{animation-play-state:paused!important}.blessing-sticky{background-color:#12080c}.environment .geometric-veil{opacity:.025}.ceremony-started .geometric-veil{animation-name:pattern-emerge}@keyframes pattern-emerge{from{opacity:0}to{opacity:.025}}
.world-sticky.cinema-scene,.date-sticky.cinema-scene{position:sticky;top:0}.low-motion .world-sticky.cinema-scene,.low-motion .date-sticky.cinema-scene{position:relative}
.world-floral{background-image:none}.world-floral:before{content:'';position:absolute;inset:-3%;background-image:url('assets/palace.webp');background-size:290% 275%;background-position:inherit;animation:floral-breathe 20s ease-in-out infinite alternate;animation-play-state:paused}.ambient-active .world-floral:before{animation-play-state:running}.low-motion .world-floral:before,.low-motion .world-floral:after{animation:none!important}.ambience-paused .world-floral:before,.ambience-paused .world-floral:after{animation-play-state:paused!important}
.blessing-sticky .lantern-photo{opacity:.28}.date-sticky .lantern-photo{opacity:.38;top:14%}.date-sticky .ambient-arch{display:none}.date-sticky .geometric-veil{opacity:.018}.rsvp-section .lantern-left{display:none}.rsvp-section .ambient-arch{left:25%;width:90%;opacity:.55}.rsvp-section .geometric-veil{opacity:.018}.formal-section .lantern-layer{opacity:.4}.venue-section .ambient-arch{display:none}.venue-section .lantern-left{display:none}.closing .geometric-veil{opacity:.018}.world-sticky .ambient-arch{opacity:.4}.world-sticky:after{content:'';position:absolute;inset:0;z-index:7;pointer-events:none;background:radial-gradient(ellipse at center,transparent 18%,#080407 76%);opacity:clamp(0,calc((var(--camera,0) - .85)*5),.8)}.world-sticky .environment-depth{transform:translate3d(0,var(--depth-drift,0px),0) scale(calc(1 + var(--camera,0)*.05))}.date-sticky .light-beam{background:linear-gradient(155deg,#c79a4515,transparent 60%)}

/* Opening composition: enough room for the rotated corners, then the action. */
.arrival.cinema-scene{position:fixed;min-height:100svh;justify-content:center}
.arrival-top{margin-top:clamp(24px,4svh,40px);flex-shrink:0}
.arrival-title{margin-top:clamp(24px,4svh,48px);flex-shrink:0}
.envelope-stage{width:min(72vw,440px);margin:clamp(30px,4svh,44px) 0 clamp(40px,6svh,64px);flex-shrink:0}
.arrival-action{margin:0;flex-shrink:0}
.arrival-foot{margin:clamp(24px,4svh,38px) 0 28px;flex-shrink:0}
/* One scale factor keeps flowers round and fabric naturally proportioned. */
.arrival-art:before,.arrival-art:after{width:min(76vw,700px);height:auto;aspect-ratio:3/2;background-size:200% auto}
.arrival-art:before{top:0;left:0;mask-image:radial-gradient(ellipse at top left,#000 5%,transparent 68%)}
.arrival-art:after{bottom:0;right:0;mask-image:radial-gradient(ellipse at bottom right,#000 5%,transparent 68%)}
.world-floral{height:auto;aspect-ratio:2/3;background-size:290% auto}
/* Hanging metalwork: layered glass, flame, reflection and illuminated air. */
.lantern-photo{background:none;mask-image:none;filter:none;width:84px;height:252px;top:-18px;opacity:.8;transform-style:preserve-3d;animation:lantern-hang 10s ease-in-out infinite alternate}
.lantern-left{left:2%;transform-origin:50% 0}
.lantern-right{right:2%;top:10px;width:70px;height:210px;animation-duration:13s;animation-delay:-5s}
.lantern-object{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(3px 8px 5px #0008)}
.lantern-photo:before{content:'';position:absolute;inset:44% -45% -12%;border-radius:50%;background:radial-gradient(ellipse,#c79a4526,transparent 65%);animation:lantern-light 6s ease-in-out infinite alternate;transform:translateZ(-5px)}
.lantern-glass{animation:lantern-light 5s -2s ease-in-out infinite alternate}
.lantern-flame{transform-box:fill-box;transform-origin:50% 100%;animation:flame-breathe 3s ease-in-out infinite;filter:drop-shadow(0 0 4px #efb452)}
.lantern-glint{animation:metal-reflection 8s ease-in-out infinite alternate}
.arrival .lantern-photo{opacity:.9}
.arrival .lantern-left{top:-30px}
.arrival .lantern-right{top:-5px}
@keyframes lantern-hang{from{transform:translate3d(0,0,12px) rotateZ(-2deg) rotateY(-9deg)}to{transform:translate3d(2px,1px,24px) rotateZ(2deg) rotateY(9deg)}}
@keyframes lantern-light{0%,100%{opacity:.62}38%{opacity:.84}66%{opacity:.7}82%{opacity:1}}
@keyframes flame-breathe{0%,100%{transform:scale(.94,1) rotate(-2deg);opacity:.85}40%{transform:scale(1,1.06) rotate(2deg);opacity:1}72%{transform:scale(.92,.96);opacity:.9}}
@keyframes metal-reflection{from{opacity:.12}to{opacity:.65}}
.lantern-photo:before{animation-play-state:inherit}
.low-motion .lantern-photo:before{animation:none!important}
@media(min-width:760px){.arrival-top{position:absolute;margin:0}.arrival-title{margin-top:clamp(80px,11svh,110px)}.envelope-stage{width:min(440px,max(250px,calc((100svh - 500px)*1.65)))}.arrival-foot{margin-top:auto}.lantern-photo{width:110px;height:330px}.lantern-left{left:7%;top:-20px}.lantern-right{right:7%;width:94px;height:282px;top:22px}.arrival .lantern-left{top:-35px}.arrival .lantern-right{top:-5px}}
@media(max-height:700px){.arrival-top{margin-top:22px}.arrival-title{margin-top:20px}.arrival h1{font-size:48px}.envelope-stage{width:min(62vw,340px);margin:26px 0 36px}.arrival-foot{margin:20px 0 24px}.lantern-photo{width:62px;height:186px}.lantern-right{width:56px;height:168px}}
@media(prefers-reduced-motion:reduce){.lantern-photo,.lantern-photo:before,.lantern-object *{animation:none!important}}
@media(max-width:759px){.rsvp-section .ambient-arch{left:50%}.formal-card .script{font-size:clamp(40px,10vw,62px)}}
@media(prefers-reduced-motion:reduce){.world-sticky:after{opacity:0}.world-floral:before{animation:none!important}}
.low-motion .world-sticky:after{opacity:0}.low-motion .blessing-frame{transform:none}

/* A continuous current carries dust and petals through three depth planes. */
.particle-stream{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
.flow-particle{position:absolute;top:-8%;left:var(--origin);width:var(--particle-size);height:var(--particle-size);border-radius:50%;background:#e2c27a;box-shadow:0 0 6px #dba85166;opacity:0;animation:particle-flow var(--flow-time) var(--flow-delay) linear infinite;will-change:transform}
.petal-particle{border-radius:80% 10% 70% 25%;background:linear-gradient(135deg,#a44358,#4c0d1e 70%);border-top:1px solid #da928047;box-shadow:none}
@keyframes particle-flow{0%{opacity:0;transform:translate3d(0,-12svh,var(--flow-depth)) rotate(0)}12%{opacity:.55}45%{transform:translate3d(var(--flow-drift),45svh,var(--flow-depth)) rotate(70deg)}78%{opacity:.45}100%{opacity:0;transform:translate3d(calc(var(--flow-drift)*-.5),110svh,var(--flow-depth)) rotate(155deg)}}
.wedding-rings-3d{position:absolute;z-index:3;right:12%;top:49%;width:130px;height:130px;pointer-events:none;filter:drop-shadow(0 15px 8px #0008)}
/* Material detail complements the actual gold mesh without raster stretching. */
.envelope-back,.envelope-front,.envelope-flap{background-blend-mode:soft-light,normal;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cfilter id='paper'%3E%3CfeTurbulence baseFrequency='.65' numOctaves='2' seed='4'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23paper)' opacity='.18'/%3E%3C/svg%3E"),var(--paper-tones,linear-gradient(145deg,#651b32,#280912));background-size:100px 100px,cover}
.envelope-back{box-shadow:inset 1px 1px 1px #e6af7155,inset -2px -2px 2px #130308}
.wax-seal{box-shadow:3px 9px 12px #080205aa,inset 2px 3px 4px #e5a18188,inset -4px -4px 4px #260510}
.button-spark{display:block;width:14px;height:14px;font-size:0;transform:rotate(-12deg);background:conic-gradient(from 45deg,#f5df9e,#795021,#e2c27a,#966127,#fff0bc);clip-path:polygon(50% 0,62% 37%,100% 50%,62% 63%,50% 100%,38% 63%,0 50%,38% 37%);filter:drop-shadow(1px 2px 1px #0008)}
@media(max-width:759px){.wedding-rings-3d{top:auto;bottom:25px;right:28px;width:58px;height:58px;opacity:.85}}
@media(min-width:760px) and (max-width:1000px){.wedding-rings-3d{right:5%;width:100px;height:100px}}
.low-motion .particle-stream{display:none}
@media(prefers-reduced-motion:reduce){.particle-stream{display:none}}


.envelope-flap{--paper-tones:linear-gradient(155deg,#80243e,#430e20)}.envelope-front{--paper-tones:linear-gradient(155deg,#511327,#240911)}

