@font-face{font-family:LoveLight;src:url('/fonts/love-light.woff2') format('woff2');font-display:swap}@font-face{font-family:MeaCulpa;src:url('/fonts/mea-culpa.woff2') format('woff2');font-display:swap}@font-face{font-family:Amiri;src:url('/fonts/amiri.woff2') format('woff2');font-display:swap}@font-face{font-family:Amiri;font-style:italic;src:url('/fonts/amiri-italic.woff2') format('woff2');font-display:swap}@font-face{font-family:Italianno;src:url('/fonts/italianno.woff2') format('woff2');font-display:swap}@font-face{font-family:Tangerine;src:url('/fonts/tangerine.woff2') format('woff2');font-display:swap}@font-face{font-family:Poppins;src:url('/fonts/poppins.woff2') format('woff2');font-display:swap}@font-face{font-family:Poppins;font-style:italic;src:url('/fonts/poppins-italic.woff2') format('woff2');font-display:swap}@font-face{font-family:Poppins;font-weight:700;font-style:italic;src:url('/fonts/poppins-bold-italic.woff2') format('woff2');font-display:swap}@font-face{font-family:Amiri;font-weight:700;src:url('/fonts/amiri-bold.woff2') format('woff2');font-display:swap}
:root{--burgundy:#6d2736;--wine:#44212a;--ivory:#f5efdf;--ink:#513f37;--gold:#94703f;--line:#b59669;--paper:#f9f4e8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px;overflow-x:clip}body{margin:0;background:#281a20;color:var(--ink);font:13px/1.85 Poppins,sans-serif;overflow-x:clip}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--burgundy);outline-offset:4px}button,input,select{min-height:44px}p,h1,h2,h3{margin:0}h2,h3{font-weight:400}p{overflow-wrap:anywhere}img{max-width:100%;display:block}svg{flex-shrink:0}[hidden]{display:none!important}.phone{max-width:480px;margin:auto;position:relative;isolation:isolate;background:#5c2430;box-shadow:0 0 90px #0006;min-height:100svh;touch-action:pan-y pinch-zoom}.skip-link{position:fixed;z-index:100;top:-70px;left:10px;background:var(--ivory);padding:10px}.skip-link:focus{top:10px}.cover{min-height:740px;height:100svh;max-height:1030px;position:relative;background:url('/assets/background.webp') center/100% 100% no-repeat;display:flex;justify-content:center;align-items:center;overflow:clip}.cover-content{width:72%;position:relative;z-index:4;text-align:center;padding-top:12px}.eyebrow{font-size:10px;letter-spacing:.26em;color:var(--burgundy);font-weight:400}.cover-note{font:11px/1.5 Amiri,serif;letter-spacing:.16em;margin:8px 0 18px;color:#806745}.names{font:clamp(64px,18vw,88px)/1.12 MeaCulpa,cursive;color:var(--burgundy);font-weight:400;padding:8px 0 14px}.names>span{display:block}.names .amp{font:30px/1.25 Italianno,cursive;margin:4px 0 5px;color:#9a793e}.date-rule{display:flex;align-items:center;gap:12px;justify-content:center;margin:16px auto 0}.date-rule>span{height:1px;flex:1;background:linear-gradient(90deg,transparent,#ab895a)}.date-rule>span:last-child{transform:rotate(180deg)}.date-rule p{font-size:11px;letter-spacing:.07em}.cover-day{font:16px Amiri,serif;margin-top:4px}.open-card{display:flex;align-items:center;flex-direction:column;background:none;border:0;margin:24px auto 0;padding:0 15px;position:relative}.seal{width:65px;height:65px;display:grid;place-items:center;border-radius:50%;color:#76551c;font:28px Italianno,cursive;background:radial-gradient(ellipse at 35% 28%,#f4d995,#b88c43 70%,#8c6328);border:4px double #b28b46;box-shadow:0 3px 6px #5b341a40,inset 0 0 0 3px #e2bf7b,inset 1px 1px 5px #fff8;transition:transform .5s}.open-card:hover .seal{transform:rotate(-6deg) scale(1.05)}.open-label{font-size:10px;letter-spacing:.15em;margin-top:10px;text-transform:uppercase;color:#755029}.open-card svg{margin-top:2px;animation:invitation-nod 2.4s ease-in-out infinite}.cover-foot{position:absolute;bottom:9%;font:9px Poppins,sans-serif;letter-spacing:.24em;color:#e7d8ba;z-index:4}.flower{position:absolute;pointer-events:none;z-index:2;transform-origin:25% 75%;width:200px}.flower img{width:100%;filter:drop-shadow(0 5px 6px #321e2420)}.flower-cover-top{width:240px;top:-38px;left:-42px;transform:rotate(6deg)}.flower-cover-bottom{width:235px;bottom:12px;right:-49px;transform:rotate(180deg)}.flower-anchor{position:absolute;left:35%;top:47%;width:1px;height:1px}.flower-side{width:155px}.flower-couple{top:45%;left:-99px;transform:rotate(-28deg)}.flower-prayer{right:-87px;top:-18px;transform:rotate(166deg)}.paper{position:relative;margin:0 17px;background:var(--paper);padding:45px 15px 50px;isolation:isolate;box-shadow:0 0 0 1px #ccb68a,0 0 25px #14000630;background-image:radial-gradient(#aa885718 .5px,transparent .5px);background-size:5px 5px}.paper:before,.paper:after{content:'';position:absolute;top:0;bottom:0;width:10px;pointer-events:none;background:radial-gradient(ellipse at center,#f7efdd 34%,#c2aa7844 36%,#f7efdd 44%,transparent 48%) 0 0/10px 16px;z-index:1}.paper:before{left:-10px}.paper:after{right:-10px}.section{position:relative;text-align:center;padding:30px 13px;scroll-margin-top:22px}.section>*:not(.flower){position:relative;z-index:4}.hashtag{font-size:11px;color:var(--gold);margin-bottom:20px}.small-monogram{font:35px/1.5 Italianno,cursive;color:var(--gold);display:block}.bismillah{width:235px;height:auto;margin:18px auto 28px}.greeting{font:19px/1.65 Amiri,serif;white-space:pre-line;color:var(--burgundy)}.hosts{font:22px/1.6 Amiri,serif;color:var(--burgundy);margin:28px 0 22px}.host-amp{font:25px/1.5 Italianno,cursive;color:var(--gold)}.invitation-copy{white-space:pre-line;font-size:12px;line-height:2.1}.divider{height:48px;margin:27px auto 0;overflow:hidden;width:100%;display:flex;align-items:center;justify-content:center;opacity:.87}.divider img{width:100%;max-width:330px;flex-shrink:0}.couple-section{padding:18px 0 8px}.couple-row{display:flex;align-items:center;gap:4px;text-align:left}.couple-row.reverse{flex-direction:row-reverse;text-align:right}.portrait{width:51%;aspect-ratio:880/1168;flex-shrink:0;position:relative;transform:rotate(-5deg);filter:drop-shadow(3px 7px 5px #6a49242b)}.portrait-groom{transform:rotate(5deg)}.gold-frame{position:absolute;inset:0;width:100%;height:100%;z-index:2}.couple-photo,.photo-placeholder{position:absolute;left:16.2%;right:16.2%;top:12.4%;bottom:12.4%;width:67.6%;height:75.2%;object-fit:cover}.photo-placeholder{background:linear-gradient(135deg,#e8dbc2,#fbf5e9 45%,#e1cfb0);display:flex;justify-content:center;align-items:center;flex-direction:column;color:#8c714d;text-align:center;padding:8px}.photo-placeholder span{font:35px Italianno,cursive}.photo-placeholder small{font:7px/1.8 Poppins,sans-serif;letter-spacing:.12em;text-transform:uppercase;margin-top:8px}.couple-name{flex:1;min-width:0;z-index:3}.tiny-label{font-size:7px;letter-spacing:.17em;line-height:1.8;color:#876b48}.couple-name h2{font:40px/1.14 Italianno,cursive;color:var(--burgundy);margin-top:9px;overflow-wrap:anywhere}.couple-join{font:37px Italianno,cursive;color:#aa8b54;margin:10px auto 16px}.script-heading{font:46px/1.15 Tangerine,cursive;color:var(--burgundy);margin-bottom:22px}.event .eyebrow,.schedule .eyebrow,.rsvp .eyebrow{margin-bottom:12px}.event-date{font:24px/1.5 Amiri,serif;color:var(--burgundy);letter-spacing:.04em}.little-line{width:30px;height:1px;background:var(--line);margin:22px auto}.serif-heading{font:23px Amiri,serif;color:var(--burgundy);margin-bottom:5px}.text-button{font:10px/1.8 Poppins,sans-serif;border:0;border-bottom:1px solid #b69b70;background:none;margin-top:16px;padding:8px 0;color:var(--burgundy)}.venue{padding-top:42px}.location-icon{width:25px;height:25px;color:var(--gold);margin:auto auto 15px}.venue-name{font:22px/1.5 Amiri,serif;color:var(--burgundy);margin-bottom:8px}.venue p:not(.venue-name){font-size:11px}.map-links{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}.outline-button{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:1px solid #a08358;border-radius:3px;background:transparent;color:var(--burgundy);padding:10px 16px;min-height:44px;font-size:11px}.timeline{list-style:none;padding:0;margin:34px 0 0;text-align:left}.timeline li{position:relative;margin:0 0 0 76px;padding:0 0 30px 23px;border-left:1px solid #c9b38c;min-height:55px}.timeline li:last-child{padding-bottom:0;border-color:transparent}.timeline li:before{content:'';position:absolute;width:7px;height:7px;border:1px solid #a68852;background:var(--paper);border-radius:50%;left:-4px;top:7px}.timeline time{position:absolute;left:-83px;width:65px;text-align:right;font-size:10px;color:#826646;line-height:1.8;top:1px}.timeline span{font:19px/1.5 Amiri,serif;color:var(--burgundy)}.dresscode{padding-top:8px}.prayer{padding-top:45px}.prayer p{font:18px/1.85 Amiri,serif;white-space:pre-line}.rsvp{background:#eee4d34d;margin:10px -2px 0;border-top:1px solid #d4bd942e;border-bottom:1px solid #d4bd942e;padding:35px 16px}.rsvp-note{font-size:11px;margin-bottom:25px}.rsvp form{text-align:left}.rsvp label,.rsvp legend{display:block;font-size:11px;margin:15px 0 5px;color:var(--burgundy)}input:not([type=radio]),select{width:100%;border:1px solid #ac9573;background:#fffcf5;color:var(--ink);border-radius:3px;padding:11px 12px;font-size:14px}input[readonly]{background:#e8dfcf;color:#6e5941}.code-row{display:flex;gap:6px}.code-row input{min-width:0;font-size:12px}.code-row button{padding:8px 12px}.muted{font-size:10px!important;line-height:1.8;color:#806c55;margin-top:12px}.rsvp fieldset{border:0;padding:0;margin:14px 0}.attendance-options{display:flex;gap:10px}.attendance-options label{display:flex;align-items:center;gap:8px;border:1px solid #aa906a;min-height:44px;margin:0;padding:8px 12px;flex:1;border-radius:3px}.attendance-options label:has(:checked){background:#6d27360b;border-color:var(--burgundy)}input[type=radio]{accent-color:var(--burgundy);min-height:0;margin:0}.primary-button{display:flex;align-items:center;justify-content:center;width:100%;border:1px solid var(--burgundy);background:var(--burgundy);color:#fff9ec;border-radius:3px;padding:12px 18px;margin-top:24px;font-size:12px}.form-status{font-size:12px;margin-top:16px;white-space:pre-line}.form-status.error{color:#9c2034}.form-status.success{color:#365c3a}.moments-teaser{padding-top:50px}.moments-teaser .script-heading{font-size:41px}.moments-teaser p{font-size:11px}.moments-teaser a{margin-top:20px}.camera-icon{width:30px;height:30px;color:var(--gold);margin:0 auto 18px}.contact a{display:block;margin:12px auto}.footer{padding-top:45px;padding-bottom:45px}.footer-names{font:32px Italianno,cursive;color:var(--burgundy);margin-top:20px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);z-index:30;display:grid;grid-template-columns:repeat(4,1fr);padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#512c31f5;color:#f6eddc;border-top:1px solid #ba936a70;backdrop-filter:blur(12px)}.bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;border:0;background:none;color:inherit;min-height:44px;font-size:9px;letter-spacing:.04em;padding:0}.bottom-nav svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.2;margin-bottom:4px}.bottom-nav [aria-pressed=true]{opacity:.5}.atmosphere{position:fixed;top:0;left:50%;transform:translateX(-50%);width:min(100%,480px);height:100dvh;pointer-events:none;z-index:3;overflow:hidden}.atmosphere canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#touch-layer,#butterfly-layer{position:absolute;inset:0;pointer-events:none}.butterfly{position:absolute;width:64px;height:44px;perspective:160px;transform-style:preserve-3d;will-change:transform}.butterfly .wing{position:absolute;top:0;width:29px;height:44px;background-repeat:no-repeat;background-size:80px 54px}.butterfly .wing-left{left:4px;background-position:-3px -4px;transform-origin:100% 50%}.butterfly .wing-right{right:4px;background-position:-49px -4px;transform-origin:0% 50%}.butterfly .body{position:absolute;left:21px;top:-1px;width:23px;height:44px;background-repeat:no-repeat;background-size:80px 54px;background-position:-29px -5px;z-index:2}.wing,.butterfly .body{background-image:url('/assets/butterfly-parts.webp')}.touch-fallback{position:absolute;width:128px;height:128px;border:1px solid #f1e1b786;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff8 0,transparent 20%,#edd6a40b 60%,#fff4 95%);opacity:0}.music-panel{position:fixed;bottom:78px;left:50%;transform:translateX(-50%);width:min(calc(100% - 42px),340px);background:var(--paper);padding:12px;z-index:40;border:1px solid #ad905e;box-shadow:0 12px 60px #21071455;border-radius:5px}.music-bar{display:flex;gap:8px;align-items:center;justify-content:space-between;font:16px Amiri,serif;margin-bottom:10px}.music-bar button{background:none;border:1px solid #b09a77;padding:3px 10px;min-width:44px}.music-bar button:last-child{font:24px Amiri,serif}#youtube-player{width:100%;height:200px}#music-status,.music-panel>a{font-size:10px;margin-top:8px}.music-panel audio{max-width:100%}.noscript{padding:30px;color:#f5ead7;text-align:center}.paused *, .paused *:before,.paused *:after{animation-play-state:paused!important}.upload-page{min-height:100svh;padding:38px 18px 70px;background:url('/assets/background.webp') top center/100% auto no-repeat #592632}.upload-paper{position:relative;background:var(--paper);padding:35px 23px;border:1px solid #c9ae7a;min-height:80svh;text-align:center}.upload-paper .script-heading{margin-top:26px}.upload-paper>p{font-size:12px}.upload-flower{width:130px;position:absolute;top:-40px;left:-35px;pointer-events:none}.upload-intro{margin-top:25px}.upload-note{font-size:10px!important;margin-top:18px}.upload-item{border-top:1px solid #cabda7;padding:20px 0;text-align:left}.upload-item h3{font-size:12px;overflow-wrap:anywhere}.upload-item progress{width:100%;accent-color:var(--burgundy);height:8px}.upload-item p{font-size:10px}.upload-item button{margin:5px 6px 0 0;padding:5px 12px;font-size:10px}.upload-list{margin-top:28px}.upload-disabled{border:1px solid #c7b594;padding:18px;margin-top:28px;font-size:12px}.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}@keyframes invitation-nod{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}@media(min-width:600px){body{background:radial-gradient(ellipse at top,#59323b,#241b20 70%);background-attachment:fixed}.phone{border-left:1px solid #b89e6940;border-right:1px solid #b89e6940}}@media(max-width:350px){.cover{min-height:660px}.cover-content{width:70%}.names{font-size:66px}.flower-cover-top{width:205px}.flower-cover-bottom{width:195px}.section{padding-left:8px;padding-right:8px}.paper{margin:14px;padding-left:10px;padding-right:10px}.couple-name h2{font-size:33px}.script-heading{font-size:41px}.rsvp{padding-left:12px;padding-right:12px}.cover-note{font-size:9px}.eyebrow{font-size:9px}.date-rule p{font-size:9px}.open-card{margin-top:17px}.seal{width:55px;height:55px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}.reduced-motion .atmosphere{display:none}.reduced-motion .open-card svg{animation:none}
.paper{isolation:auto}.butterfly .wing-left{clip-path:polygon(0 0,76% 0,77% 22%,100% 48%,100% 100%,0 100%)}.butterfly .wing-right{clip-path:polygon(24% 0,100% 0,100% 100%,0 100%,0 48%,23% 22%)}.butterfly .body{clip-path:polygon(0 0,100% 0,71% 43%,100% 73%,68% 100%,34% 100%,0 72%,27% 43%)}

@media(max-height:740px){.flower-cover-top{width:205px;top:-65px;left:-45px}}

/* Redesign: white stage with burgundy drapes, fixed flower scene, envelope opening, rounded maroon bar. Later rules override the first block above. */
:root{--burgundy:#6b0d16;--wine:#4a0a0e;--ink:#4b4347;--gold:#a67c3d;--line:#c9a66b;--paper:#fff;--bar:#630d14;--col:min(100vw,480px)}
html.sealed{overflow:hidden}
.phone{background:#fff}
.scene{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);pointer-events:none;z-index:3;overflow:hidden}
/* The garden sits above the text so the first section rises out from behind the flowers; bubbles and butterfly float over both. */
.scene-over{z-index:5}
.atmosphere{z-index:6;height:100vh;height:100lvh}
.deco{position:absolute;will-change:transform}
.deco img{display:block;width:100%;height:auto}
.drift{position:relative;will-change:transform}
.curtain{top:0;left:0;width:100%}
.curtain .drift{transform-origin:50% 0}
.chandelier{top:-4px;left:50%;width:min(31%,16.5svh);translate:-50% 0}
.chandelier .drift{transform-origin:50% 0}
.garden-back{left:-3%;width:106%;bottom:54px}
.garden-front{left:-4%;width:108%;bottom:24px}
.garden-back .drift,.garden-front .drift{transform-origin:50% 100%}
.corner-tr{top:-10px;right:-14px;width:40%}
.corner .drift{transform-origin:100% 0}
.corner-bl{bottom:50px;left:-14px;width:34%}
.corner-bl{rotate:180deg}
.stripe{top:0;bottom:0;width:36px;background:linear-gradient(90deg,var(--wine) 0 15px,#fff 15px 18px,var(--wine) 18px 20px,#3a060a26 20px,transparent 36px)}
.stripe-l{left:0}.stripe-r{right:0;scale:-1 1}
.flower-anchor{position:absolute;width:1px;height:1px}
.static-scene .inner,.static-scene .cov{transition:opacity .6s}
.static-scene .inner,.static-scene.reading .cov{opacity:0}
.static-scene.reading .inner{opacity:1}

.cover{background:none;min-height:600px;height:100svh;max-height:none;align-items:center;padding:calc(var(--col)*.34) 0 calc(var(--col)*.5 + 30px)}
.cover-content{width:64%;padding-top:0}
.eyebrow{color:var(--ink);font:13px/1.6 Amiri,serif;letter-spacing:.2em}
.cover-note{color:#8a7a6a;margin:4px 0 10px}
.names .amp{color:var(--gold)}
.cover-day{font:17px Amiri,serif;letter-spacing:.14em;margin-top:6px;text-transform:uppercase}
.date-rule{margin-top:4px}
.date-rule p{font:15px Amiri,serif;letter-spacing:.14em}
.cover-foot{position:static;color:#8a7a6a;margin-top:14px;font-size:9px}
.scroll-hint{position:absolute;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));translate:-50% 0;z-index:7;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#ffffffe0;color:var(--burgundy);box-shadow:0 4px 14px #3a060a33;animation:invitation-nod 2.2s ease-in-out infinite}
.reduced-motion .scroll-hint{animation:none}

.paper{margin:calc(var(--col)*-.5) 30px 0;background:#fff;background-image:none;box-shadow:none;padding:30px 8px 130px}
.paper:before,.paper:after{content:none}
.rsvp{background:#f8ecea80;border-color:#e6c9c9}
.upload-page{background:#fff}
.upload-flower{left:auto;right:-26px;top:-34px;width:150px}

.bottom-nav{display:flex;height:calc(70px + env(safe-area-inset-bottom));padding:0 8px env(safe-area-inset-bottom);background:var(--bar);color:#fff;border:0;border-radius:22px 22px 0 0;backdrop-filter:none;box-shadow:0 -6px 24px #3a060a2e;transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.bottom-nav a,.bottom-nav button{flex:1;font-size:11.5px;letter-spacing:.01em}
.bottom-nav svg{width:24px;height:24px;stroke-width:1.15;margin-bottom:6px}
.sealed .bottom-nav{transform:translate(-50%,115%)}
.music-source{position:fixed;left:0;bottom:0;width:200px;height:200px;opacity:0;pointer-events:none;z-index:-1;overflow:hidden}
.music-fab{position:fixed;z-index:31;right:calc(50% - min(50vw,240px) + 14px);bottom:calc(84px + env(safe-area-inset-bottom));width:42px;height:42px;min-height:0;display:grid;place-items:center;border:0;border-radius:50%;background:var(--bar);color:#fff;box-shadow:0 4px 14px #3a060a4d;transition:opacity .6s,transform .6s}
.music-fab svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.3}
.music-fab:after{content:'';position:absolute;width:26px;height:1.5px;background:#fff;rotate:-45deg;box-shadow:0 0 0 1px var(--bar)}
.music-fab.playing:after{content:none}
.music-fab.playing svg{animation:music-bob 1.1s ease-in-out infinite}
.sealed .music-fab{opacity:0;pointer-events:none;transform:translateY(20px)}
.gift-copy{white-space:pre-line}
.gift-card{margin:18px auto 0;padding:18px 14px;border:1px solid #e0c9a4;border-radius:6px;background:#fffaf4}
.gift-bank{font:20px/1.5 Amiri,serif;color:var(--burgundy)}
.gift-number{font:22px/1.6 Amiri,serif;letter-spacing:.12em;color:var(--ink)}
.gift-card .outline-button{margin-top:12px}
.gift-qr{width:min(70%,220px);margin:20px auto 0;border:1px solid #e0c9a4;border-radius:6px}
@keyframes music-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(-8deg)}}

.butterfly{filter:drop-shadow(0 1px 1.5px #5a2a3299) drop-shadow(0 0 1px #5a2a3266)}
.wing,.butterfly .body{background-image:url('/assets/butterfly-white.webp')}

/* Opening: two frosted glass doors over the live scene, the gold seal holds them shut. */
.doors{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);z-index:60;perspective:1400px;overflow:hidden;touch-action:none}
.doors.gone{display:none}
/* Behind the glass: an opaque blush foyer framed with flowers, so the stage (curtain, chandelier, garden) stays hidden until the doors open. */
.foyer,.foyer-bg{position:absolute;inset:0}
.foyer-bg{background:radial-gradient(110% 75% at 50% 46%,#fffaf7 0,#fbeceb 55%,#efd3d6 100%)}
.foyer i{position:absolute;width:64%;aspect-ratio:640/807;will-change:transform}
.foyer b{display:block;width:100%;height:100%;background:url('/assets/corner.webp') center/contain no-repeat;transform-origin:100% 0;will-change:transform}
.foyer i:nth-of-type(1){top:-14px;right:-18px}
.foyer i:nth-of-type(2){top:-14px;left:-18px;scale:-1 1}
.foyer i:nth-of-type(3){bottom:-14px;left:-18px;rotate:180deg}
.foyer i:nth-of-type(4){bottom:-14px;right:-18px;scale:1 -1}
.doors.opening{pointer-events:none}
.door{position:absolute;top:0;bottom:0;width:50%;background:linear-gradient(100deg,#ffffffd9,#fff7f5c4);will-change:transform}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.door{background:linear-gradient(100deg,#ffffff6b,#ffffff2e 55%,#ffffff57);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}}
.door-l{left:0;transform-origin:0 50%;border-right:1px solid #8a6a6a40;box-shadow:inset -14px 0 22px -18px #5a2a3266}
.door-r{right:0;transform-origin:100% 50%;border-left:1px solid #ffffffb3;box-shadow:inset 14px 0 22px -18px #5a2a3266}
.door-center{position:absolute;left:50%;top:50%;translate:-50% -50%;width:min(42%,190px);display:flex;flex-direction:column;align-items:center}
.door-seal{position:relative;width:100%;aspect-ratio:1;border:0;background:none;padding:0;min-height:0;border-radius:50%}
.door-seal img{position:relative;width:100%;height:auto;filter:drop-shadow(0 8px 12px #2a040670);animation:seal-lift 3s ease-in-out infinite}
.door-seal-glow{position:absolute;inset:-22%;border-radius:50%;background:radial-gradient(circle,#fff6d6e6 0,#ffe08a66 42%,transparent 70%);animation:seal-glow 2.6s ease-in-out infinite}
.door-sparks{position:absolute;left:50%;top:38%;width:0;height:0;z-index:2}
.door-sparks span{position:absolute;width:6px;height:6px;margin:-3px;border-radius:50%;background:#fff3c4;box-shadow:0 0 8px #fff,0 0 16px #ffd86b;opacity:0}
.door-sparks span:before,.door-sparks span:after{content:'';position:absolute;left:50%;top:50%;translate:-50% -50%;background:inherit;border-radius:9px;width:2px;height:17px}
.door-sparks span:after{width:17px;height:2px}
.door-hint{margin-top:18px;white-space:nowrap;text-align:center;font:11px/1.6 Poppins,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:var(--burgundy);text-shadow:0 0 10px #fff,0 0 4px #fff;animation:hint-pulse 2.6s ease-in-out infinite}
.door-hint small{display:block;font-size:9px;letter-spacing:.1em;text-transform:none;color:#6f5a50;margin-top:3px}
.doors.simple-out{opacity:0;transition:opacity .5s}
.doors.opening .door-hint,.doors.opening .door-seal-glow,.doors.opening .door-seal img{animation:none}
.sealed .cover-content,.sealed .scroll-hint{visibility:hidden}
@keyframes seal-lift{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes seal-glow{0%,100%{transform:scale(.86);opacity:.55}50%{transform:scale(1.08);opacity:1}}
@keyframes hint-pulse{0%,100%{opacity:.55}50%{opacity:1}}
@media(max-width:350px){.paper{margin:calc(var(--col)*-.5) 26px 0;padding-left:4px;padding-right:4px}}
@media(max-height:700px){.names{font-size:60px;padding:2px 0 8px}.cover-note{margin-bottom:4px}.cover-foot{margin-top:8px}}
@media(max-height:820px) and (min-width:440px){.garden-back{bottom:18px}.garden-front{bottom:-12px}}
/* Couple names sit centred in the space beside each frame, in the serif face so full names wrap in balanced lines. */
.couple-row,.couple-row.reverse{gap:10px;text-align:center}
.portrait{width:46%}
.couple-name{padding:0 2px}
.couple-name h2{font:25px/1.35 Amiri,serif;letter-spacing:.01em;margin-top:8px;text-wrap:balance;overflow-wrap:break-word}
@media(max-width:350px){.couple-name h2{font-size:21px}}
/* Lace panels: the owner's lace-and-ribbon artwork behind the three key sections, as a top image and a bottom image over a flat panel colour. Longer text only adds more flat colour in the middle, so the lace and ribbons never distort, and nothing has to be re-stretched while scrolling. */
.laced{--burgundy:#fff7f0;--ink:#f1e2dc;--gold:#ecd3a1;--pw:calc(var(--col) - 44px);margin:44px -16px;padding:calc(var(--pw)*.615) 36px calc(var(--pw)*.6);min-height:calc(var(--pw)*1.271);color:var(--ink);background:#652435;border:0}
.laced:before,.laced:after{content:'';position:absolute;left:0;width:100%;background:center/100% 100% no-repeat;pointer-events:none}
.laced:before{top:0;aspect-ratio:1024/660;background-image:url('/assets/lace-top.webp')}
.laced:after{bottom:0;aspect-ratio:1024/641;background-image:url('/assets/lace-bottom.webp')}
.laced>.divider{display:none}
.laced .bismillah{width:100%;max-width:215px;filter:invert(1) brightness(1.7)}
.laced .muted{color:#e6d2cb}
.laced .little-line{background:var(--gold)}
.laced input:not([type=radio]),.laced select{color:#4b4347}
.laced .outline-button,.laced .text-button,.laced .attendance-options label{border-color:#e9cfa0}
.laced .attendance-options label:has(:checked){background:#ffffff1f;border-color:#fff}
.laced .primary-button{background:#fff7f0;border-color:#fff7f0;color:#6b0d16}
.laced .form-status.error{color:#ffd0d0}
.laced .form-status.success{color:#dcf3d2}
@media(max-width:350px){.laced{--pw:calc(var(--col) - 28px);padding-left:30px;padding-right:30px}}
.count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;max-width:300px;margin:0 auto}
.count-grid b{display:block;font:400 34px/1.2 Amiri,serif;color:var(--burgundy);font-variant-numeric:tabular-nums}
.count-grid span{display:block;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:#8a7a6a}
.count-note{font:20px/1.6 Amiri,serif;color:var(--burgundy)}
/* Open RSVP form and wishes wall, shared by every theme. */
textarea{width:100%;border:1px solid #ac9573;background:#fffcf5;color:var(--ink);border-radius:3px;padding:11px 12px;font:14px/1.6 Poppins,sans-serif;resize:vertical;min-height:96px}
.field-label{display:block;font-size:11px;margin:15px 0 5px;color:var(--burgundy)}
.stepper{display:flex;align-items:center;gap:12px}
.stepper button{width:44px;height:44px;flex-shrink:0;border:1px solid currentColor;border-radius:50%;background:none;color:var(--burgundy);font-size:20px;line-height:1}
.stepper button:disabled{opacity:.35;cursor:default}
.stepper output{flex:1;text-align:center;font-size:13px}
.kids-note{margin:6px 0 0;font-size:12px;opacity:.75}
/* A rule separates the form from the wall; each wish is a light speech bubble so it stands off the dark panel. */
.wishes{margin-top:40px;padding-top:34px;border-top:1px solid #ffffff59;text-align:center}
.wishes-title{font:26px/1.3 Amiri,serif;color:var(--burgundy);margin-bottom:18px}
#wish-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:22px}
#wish-list li{position:relative;padding:16px 18px 14px;border-radius:20px;background:#fbf6f1;box-shadow:0 6px 18px #0000002e;text-align:left}
#wish-list li:after{content:'';position:absolute;left:26px;bottom:-9px;width:18px;height:18px;background:#fbf6f1;border-radius:0 0 4px 0;transform:rotate(45deg)}
#wish-list li:nth-child(even):after{left:auto;right:26px}
#wish-list li:nth-child(even){text-align:right}
#wish-list p{position:relative;z-index:1;font:16px/1.55 Amiri,serif;color:#4b3238;white-space:pre-line;overflow-wrap:anywhere}
#wish-list b{position:relative;z-index:1;display:block;margin-top:8px;font:600 10px/1.6 Poppins,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8a5a66}
#wish-more{margin-top:18px}
.laced textarea{color:#4b4347}
.couple-photo{object-position:50% 12%}
.schedule-tagline{margin-top:26px;font:italic 17px/1.6 Amiri,serif;color:var(--burgundy)}
.hosts{font-size:18px;letter-spacing:.03em}
.host-serta{display:block;margin:8px 0 6px;font:italic 15px Amiri,serif;color:var(--gold)}
.map-button{gap:9px}
.map-button img{width:20px;height:20px;flex-shrink:0}
.schedule .script-heading{font:400 25px/1.3 Amiri,serif;letter-spacing:.1em}
.small-monogram,.seal{word-spacing:.08em}
