@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap');
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;line-height:1.7}button,a{-webkit-tap-highlight-color:transparent}button,input,select{font:inherit}a{color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3,.serif{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;line-height:1.06}h1{font-size:clamp(4.5rem,12vw,10rem)}h2{font-size:clamp(3rem,7vw,5.5rem)}h3{font-size:2rem}.eyeline{text-transform:uppercase;letter-spacing:.24em;font-size:.75rem}.topbar{position:absolute;z-index:5;top:0;left:0;width:100%;display:flex;justify-content:space-between;gap:20px;padding:25px 5vw;font-size:.75rem;letter-spacing:.08em}.topbar a{text-decoration:none}.demo-label{opacity:.75}.sound{position:fixed;bottom:22px;right:22px;z-index:20;border:1px solid var(--accent);background:var(--paper);color:var(--ink);padding:11px 16px;border-radius:30px;box-shadow:0 5px 20px #0001}.cover{min-height:100svh;display:grid;place-items:center;position:relative;overflow:hidden;text-align:center;padding:100px 24px 80px}.cover:before{content:'';position:absolute;inset:0;background:url('/weddings/art/florals.webp') center/cover;opacity:.5;pointer-events:none}.dark .cover:before{mix-blend-mode:soft-light;opacity:.24}.cover-frame{position:absolute;inset:82px 5vw 35px;border:1px solid var(--accent);opacity:.6;pointer-events:none}.cover-frame:after{content:'';position:absolute;inset:9px;border:1px solid var(--accent);opacity:.4}.cover-copy{position:relative;z-index:2;max-width:700px}.cover .eyeline{margin-bottom:28px}.cover h1 span{display:block;font-size:.6em;font-style:italic}.cover-date{margin:25px 0 32px;letter-spacing:.15em}.seal{width:78px;height:78px;border-radius:50%;border:4px double var(--accent);background:var(--paper);color:var(--ink);font:italic 27px Georgia;box-shadow:0 8px 24px #0002;transition:transform .3s}.seal:hover{transform:scale(1.08)}.open-label{display:block;margin-top:17px;font-size:.8rem;letter-spacing:.06em}.scroll-hint{font-size:.75rem;margin-top:24px;opacity:.6}.curtain-panel{position:absolute;inset:0 50% 0 0;background:var(--paper);opacity:.65;transform-origin:left;pointer-events:none;transition:transform 1.5s cubic-bezier(.2,.8,.2,1),opacity 1.3s}.curtain-panel.right{inset:0 0 0 50%;transform-origin:right}.opened .curtain-panel{transform:translateX(-102%) rotateY(-20deg);opacity:0}.opened .curtain-panel.right{transform:translateX(102%) rotateY(20deg)}.cover-copy{transition:transform 1.2s,opacity 1.2s}.opened .cover-copy{transform:translateY(-18px)}.invitation{overflow:hidden}.intro{text-align:center;padding:100px 24px 75px;max-width:830px;margin:auto}.intro h2{margin:25px 0}.intro p:last-child{max-width:510px;margin:auto;opacity:.8}.ornament{width:60px;height:1px;background:var(--accent);margin:35px auto}.date-block{display:flex;justify-content:center;align-items:center;gap:30px;margin:40px 0}.date-block .day{font-size:6rem;line-height:1}.date-block .side{font-size:.78rem;letter-spacing:.15em;text-transform:uppercase;border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);padding:14px 0}.story{max-width:1200px;margin:auto;padding:50px 6vw 100px;display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:center}.art-photo{width:100%;height:560px;object-fit:cover;border-radius:48% 48% 0 0}.story-copy h2{margin:22px 0}.story-copy p{max-width:470px;opacity:.8}.quote{font-style:italic;font-size:2rem!important;margin-top:25px}.moment{text-align:center;padding:85px 24px;background:var(--accent);color:var(--paper)}.moment h2{margin:20px 0 40px}.countdown{display:flex;justify-content:center;gap:clamp(15px,5vw,60px)}.countdown b{display:block;font-family:Georgia,serif;font-size:clamp(2rem,5vw,4rem);font-weight:400;line-height:1.2}.countdown span{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.details{max-width:1100px;margin:auto;text-align:center;padding:100px 24px}.details h2{margin:20px 0 50px}.schedule{display:grid;grid-template-columns:repeat(3,1fr);gap:35px}.schedule article{padding:35px 15px;border-top:1px solid var(--accent)}.schedule time{font-size:.75rem;letter-spacing:.15em}.schedule h3{margin:20px 0 15px}.schedule p{font-size:.9rem;opacity:.8}.venue{text-align:center;max-width:850px;margin:20px auto 90px;padding:50px 25px;border:1px solid var(--accent)}.venue h2{margin:25px 0}.venue p{max-width:500px;margin:15px auto}.link-button{display:inline-block;margin-top:24px;padding:13px 28px;border:1px solid var(--accent);text-decoration:none;font-size:.85rem;transition:background .2s,color .2s}.link-button:hover{background:var(--accent);color:var(--paper)}.closing{text-align:center;padding:90px 24px 120px;position:relative;background:linear-gradient(transparent,#00000009)}.closing h2{margin:22px 0}.closing p{max-width:500px;margin:20px auto}.footer{text-align:center;padding:25px 85px 40px;font-size:.75rem;opacity:.75}.reveal{opacity:1;transform:none}.motion .reveal{opacity:0;transform:translateY(30px);transition:opacity 1s,transform 1s}.motion .reveal.visible{opacity:1;transform:none}.progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--accent);z-index:30}.bloom .cover-frame{border-radius:48% 48% 0 0;inset:65px 10vw 20px}.bloom .cover-frame:after{border-radius:inherit}.doors .cover-frame{border-radius:48% 48% 0 0;inset:65px 12vw 20px}.doors .curtain-panel{border-right:1px solid var(--accent)}.doors .curtain-panel.right{border-left:1px solid var(--accent)}.curtain .cover-copy h1{font-style:italic}.curtain .cover{background:repeating-linear-gradient(90deg,transparent,#0002 4%,transparent 8%)}.slide .cover{text-align:left;place-items:center start;padding-left:12vw}.slide .cover h1{font-size:clamp(5rem,13vw,12rem);letter-spacing:-.06em}.slide .cover-frame{border:0;border-bottom:1px solid var(--accent)}.slide .cover-frame:after{display:none}.slide .seal{border-radius:0;width:auto;height:auto;padding:13px 25px;font:14px 'DM Sans';box-shadow:none}.letter .cover-copy{padding:45px;background:color-mix(in srgb,var(--paper) 85%,transparent);border:1px solid var(--accent)}.sidi-bou-said .art-photo{border:12px solid #fff;box-shadow:0 12px 30px #17497925}.sidi-bou-said .story{direction:rtl}.sidi-bou-said .story-copy{direction:ltr}.andalusian-palace .venue{border-radius:45% 45% 0 0;padding-top:90px}.rose-garden .art-photo{border-radius:50% 50% 40% 40%}.olive-estate .story{grid-template-columns:1.2fr .8fr}.olive-estate .art-photo{border-radius:0;filter:sepia(.2)}.bordeaux-velvet .intro{border-bottom:1px solid var(--accent)}.pearl-minimal .cover:before{opacity:.17}.pearl-minimal .art-photo{border-radius:0;filter:grayscale(1)}.pearl-minimal h1,.pearl-minimal h2{font-family:Georgia,serif;letter-spacing:-.07em}.desert-sunset .art-photo{border-radius:50% 50% 0 0;filter:sepia(.6)}.celestial-blue .cover{background:radial-gradient(ellipse at top,#50619555,transparent 65%)}.celestial-blue .cover-frame{border-radius:50%}.celestial-blue .cover-frame:after{border-radius:50%}.celestial-blue .art-photo{border-radius:50% 50% 0 0;filter:saturate(.45)}
@media(max-width:650px){.topbar{padding:18px 20px;font-size:.68rem}.cover{padding:95px 28px 60px}.cover-frame{inset:65px 14px 20px}.cover h1{font-size:4.5rem}.letter .cover-copy{padding:35px 20px}.intro{padding:75px 24px 45px}.story{grid-template-columns:1fr!important;padding:30px 25px 70px;gap:40px}.art-photo{height:420px}.schedule{grid-template-columns:1fr;gap:10px}.details{padding:75px 25px 40px}.schedule article{padding:25px 10px}.venue{margin:20px 25px 60px}.slide .cover{padding-left:30px}.slide .cover h1{font-size:5.5rem}.date-block{gap:22px}.date-block .day{font-size:5rem}.countdown{gap:25px}.bloom .cover-frame,.doors .cover-frame{inset:65px 16px 20px}.closing{padding-top:50px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion .reveal{opacity:1;transform:none}}


/* Cinematic invitation experience */
:root{--mx:0;--my:0}
body:not(.experience-open){overflow:hidden}
.letter-gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(circle at 50% 36%,color-mix(in srgb,var(--paper) 82%,white),var(--paper));perspective:1200px;transition:opacity .8s ease .9s,visibility .8s ease .9s}
.gate-glow{position:absolute;width:min(82vw,720px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 25%,transparent),transparent 66%);filter:blur(25px);animation:gatePulse 3.2s ease-in-out infinite}
.envelope{position:relative;width:min(82vw,560px);aspect-ratio:1.6;transform-style:preserve-3d;filter:drop-shadow(0 32px 38px #0003);animation:envelopeFloat 4s ease-in-out infinite}
.envelope-back,.envelope-front,.envelope-flap{position:absolute;inset:0;background:color-mix(in srgb,var(--paper) 90%,var(--accent));border:1px solid color-mix(in srgb,var(--accent) 55%,transparent)}
.envelope-back{border-radius:5px}
.envelope-front{z-index:4;clip-path:polygon(0 18%,50% 69%,100% 18%,100% 100%,0 100%);background:linear-gradient(145deg,color-mix(in srgb,var(--paper) 96%,white),color-mix(in srgb,var(--paper) 80%,var(--accent)))}
.envelope-flap{z-index:5;clip-path:polygon(0 0,100% 0,50% 68%);transform-origin:top;transition:transform 1s cubic-bezier(.2,.75,.2,1);background:linear-gradient(175deg,var(--paper),color-mix(in srgb,var(--paper) 77%,var(--accent)))}
.letter-card{position:absolute;z-index:2;inset:5% 8%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--paper);border:1px solid var(--accent);box-shadow:0 8px 20px #0002;transition:transform 1.1s cubic-bezier(.2,.8,.2,1) .5s}
.letter-card:before{content:'';position:absolute;inset:8px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}
.letter-card span,.letter-card small{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase}.letter-card strong{font:400 clamp(2.2rem,8vw,4.6rem)/1 'Cormorant Garamond';margin:16px}.letter-card i{font-weight:400}
.wax-seal{position:absolute;z-index:8;left:50%;top:49%;transform:translate(-50%,-50%);width:84px;height:84px;border:0;border-radius:50%;color:#fff4d7;background:radial-gradient(circle at 35% 30%,#d09272,#813e35 58%,#55211f);box-shadow:0 8px 18px #0005,inset 0 0 0 5px #ffffff18;font:italic 24px Georgia;transition:transform .25s,opacity .45s;animation:sealBeat 2.4s ease-in-out infinite}
.wax-seal:after{content:'';position:absolute;inset:9px;border:1px solid #f8dfb677;border-radius:50%}.wax-seal i{font-size:.7em;margin:0 2px}.wax-seal:hover{transform:translate(-50%,-50%) scale(1.1)}
.gate-instruction{position:absolute;bottom:max(7vh,35px);font-size:.72rem;text-transform:uppercase;letter-spacing:.24em;animation:instruction 1.8s ease-in-out infinite}
.experience-open .envelope{animation:none}.experience-open .envelope-flap{transform:rotateX(180deg);z-index:1}.experience-open .letter-card{transform:translateY(-62%) scale(1.04)}.experience-open .wax-seal{transform:translate(-50%,-50%) scale(.2);opacity:0}.experience-open .letter-gate{opacity:0;visibility:hidden}
.cover-video{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;opacity:.3;filter:saturate(.7) sepia(.12);transform:translate(calc(var(--mx)*-14px),calc(var(--my)*-12px)) scale(1.05);transition:transform .2s linear}
.dark .cover-video{opacity:.2;mix-blend-mode:luminosity}.cover-shade{position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--paper) 58%,transparent),color-mix(in srgb,var(--paper) 82%,transparent))}
.sparkles{position:absolute;inset:0;overflow:hidden;pointer-events:none}.sparkles i{position:absolute;left:var(--x);top:var(--y);width:4px;height:4px;border-radius:50%;background:var(--accent);box-shadow:0 0 13px var(--accent);animation:twinkle var(--d) ease-in-out var(--delay) infinite}
.cover-copy{transform:translate(calc(var(--mx)*18px),calc(var(--my)*15px));will-change:transform}.opened .cover-copy{transform:translate(calc(var(--mx)*18px),calc(var(--my)*15px - 18px))}
.memories{text-align:center;padding:100px 4vw 120px;overflow:hidden}.memories h2{margin:20px 0 55px}.photo-ribbon{display:grid;grid-template-columns:.8fr 1.25fr .8fr;align-items:center;gap:clamp(12px,3vw,42px);max-width:1250px;margin:auto}.couple-photo{margin:0;position:relative;overflow:hidden;box-shadow:0 25px 60px #0002}.couple-photo img{display:block;width:100%;height:clamp(360px,55vw,650px);object-fit:cover;transition:transform 1.4s cubic-bezier(.2,.7,.2,1),filter .8s}.couple-photo.portrait img{height:clamp(300px,45vw,540px)}.couple-photo:first-child{transform:rotate(-3deg) translateY(24px)}.couple-photo:last-child{transform:rotate(3deg) translateY(24px)}.couple-photo:hover img{transform:scale(1.07);filter:saturate(1.15)}.couple-photo figcaption{position:absolute;inset:auto 0 0;padding:45px 15px 18px;color:white;background:linear-gradient(transparent,#0009);font:italic 1.25rem 'Cormorant Garamond'}
.motion .couple-photo{opacity:0;transition:opacity 1.2s,transform 1.2s}.motion .memories.visible .couple-photo{opacity:1}.motion .memories.visible .couple-photo:first-child{transform:rotate(-3deg) translateY(24px);transition-delay:.15s}.motion .memories.visible .couple-photo:nth-child(2){transform:none;transition-delay:.35s}.motion .memories.visible .couple-photo:last-child{transform:rotate(3deg) translateY(24px);transition-delay:.55s}
@keyframes envelopeFloat{50%{transform:translateY(-10px) rotateX(1deg)}}@keyframes gatePulse{50%{transform:scale(1.12);opacity:.65}}@keyframes sealBeat{50%{box-shadow:0 10px 25px #0005,0 0 0 12px color-mix(in srgb,var(--accent) 12%,transparent)}}@keyframes instruction{50%{opacity:.45;transform:translateY(4px)}}@keyframes twinkle{0%,100%{opacity:.1;transform:scale(.4)}50%{opacity:.8;transform:scale(1.5)}}
@media(max-width:650px){.envelope{width:88vw}.wax-seal{width:72px;height:72px}.memories{padding:75px 18px}.photo-ribbon{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding:5px 8vw 35px;gap:18px}.couple-photo,.couple-photo:first-child,.couple-photo:last-child{flex:0 0 77vw;transform:none!important;scroll-snap-align:center}.couple-photo img,.couple-photo.portrait img{height:440px}.cover-video{inset:0;width:100%;height:100%}}

/* Wedding-card opening inspired by classic printed invitations */
.invitation-gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--accent) 18%,var(--paper)),var(--paper) 72%);overflow:hidden;transition:opacity .75s ease 1s,visibility .75s ease 1s}
.invitation-gate:before,.invitation-gate:after{content:'';position:absolute;width:38vw;height:38vw;min-width:300px;min-height:300px;background:url('/weddings/art/florals.webp') center/contain no-repeat;opacity:.28;filter:saturate(.7);animation:floralDrift 7s ease-in-out infinite alternate}.invitation-gate:before{left:-12vw;top:-13vw;transform:rotate(20deg)}.invitation-gate:after{right:-12vw;bottom:-13vw;transform:rotate(200deg);animation-delay:-3.5s}
.wedding-card{position:relative;width:min(92vw,570px);min-height:min(82svh,720px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:46px 48px 40px;background:linear-gradient(145deg,color-mix(in srgb,var(--paper) 96%,white),var(--paper));border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);box-shadow:0 30px 80px #0003,0 0 0 9px color-mix(in srgb,var(--paper) 72%,transparent);overflow:hidden;transform:translateY(0) rotateX(0);transition:transform 1.15s cubic-bezier(.2,.75,.2,1),opacity .8s ease .35s;animation:cardArrival 1.2s cubic-bezier(.2,.75,.2,1) both}
.wedding-card:before{content:'';position:absolute;inset:12px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);pointer-events:none}.card-kicker,.save-date{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase}.card-kicker{opacity:.72}.save-date{margin-top:18px;color:var(--accent)}
.card-photo-wrap{position:relative;width:170px;height:190px;margin:24px 0 0;transform:rotate(-2deg)}.card-photo-wrap:before{content:'';position:absolute;inset:-9px;border:1px solid var(--accent);border-radius:50% 50% 8px 8px}.card-photo-wrap img{width:100%;height:100%;object-fit:cover;border-radius:50% 50% 7px 7px;filter:saturate(.85) sepia(.08)}.photo-ring{position:absolute;right:-27px;bottom:-18px;width:70px;height:70px;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--paper);border:5px double var(--paper);box-shadow:0 9px 22px #0003;font:italic 18px Georgia}.photo-ring i{font-size:.7em}
.wedding-card h1{font-size:clamp(2.8rem,8vw,4.8rem);margin:7px 0 10px}.wedding-card h1 i{font-weight:400;font-size:.72em}.wedding-card time{font:500 .76rem 'DM Sans';letter-spacing:.18em}.card-divider{display:flex;align-items:center;gap:10px;width:150px;margin:0 auto 14px;color:var(--accent)}.card-divider:before,.card-divider:after{content:'';height:1px;flex:1;background:var(--accent)}
.open-card{display:flex;align-items:center;gap:13px;margin-top:25px;padding:12px 20px 12px 24px;border:1px solid var(--accent);border-radius:40px;background:var(--accent);color:var(--paper);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 8px 24px color-mix(in srgb,var(--accent) 30%,transparent);transition:transform .25s,box-shadow .25s}.open-card b{display:grid;place-items:center;width:24px;height:24px;border:1px solid currentColor;border-radius:50%;animation:arrowBounce 1.6s ease-in-out infinite}.open-card:hover{transform:translateY(-3px);box-shadow:0 13px 30px color-mix(in srgb,var(--accent) 38%,transparent)}
.floral-corner{position:absolute;width:150px;height:150px;background:url('/weddings/art/florals.webp') center/cover no-repeat;opacity:.28;pointer-events:none}.floral-one{left:-50px;bottom:-45px;transform:rotate(15deg)}.floral-two{right:-50px;top:-45px;transform:rotate(195deg)}
.experience-open .wedding-card{transform:translateY(-35px) scale(1.08);opacity:0}.experience-open .invitation-gate{opacity:0;visibility:hidden}.experience-open .gate-instruction{opacity:0}.invitation-gate .gate-instruction{z-index:3;color:var(--ink)}
.cover-video{opacity:.52;filter:saturate(.78) sepia(.08)}.dark .cover-video{opacity:.42;mix-blend-mode:normal}.cover-shade{background:linear-gradient(180deg,color-mix(in srgb,var(--paper) 30%,transparent),color-mix(in srgb,var(--paper) 75%,transparent))}
.venue{max-width:1160px;padding:0;display:grid;grid-template-columns:.85fr 1.15fr;overflow:hidden;text-align:left;background:color-mix(in srgb,var(--paper) 94%,var(--accent));box-shadow:0 24px 70px #00000012}.venue-copy{padding:55px clamp(28px,5vw,65px);align-self:center}.venue h2{margin:18px 0 26px}.venue h3{font-size:1.75rem;margin-bottom:7px}.venue-copy p{margin:10px 0;max-width:440px}.venue-actions{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 12px}.venue-actions .link-button{margin:0}.link-button.ghost{background:transparent}.map-frame{position:relative;min-height:470px;background:color-mix(in srgb,var(--accent) 15%,var(--paper));overflow:hidden}.map-frame iframe{width:100%;height:100%;min-height:470px;border:0;filter:saturate(.65) sepia(.12);transition:filter .5s,transform .7s}.map-frame:hover iframe{filter:none;transform:scale(1.015)}.map-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);display:grid;place-items:center;width:54px;height:54px;border-radius:50% 50% 50% 0;rotate:-45deg;background:var(--accent);color:var(--paper);font-size:22px;box-shadow:0 8px 24px #0004;pointer-events:none}.map-pin::first-letter{rotate:45deg}
@keyframes cardArrival{from{opacity:0;transform:translateY(45px) scale(.94)}to{opacity:1;transform:none}}@keyframes arrowBounce{50%{transform:translateY(3px)}}@keyframes floralDrift{to{translate:12px 9px;scale:1.05}}
@media(max-width:760px){.invitation-gate{padding:18px}.wedding-card{min-height:min(86svh,690px);padding:34px 24px 30px}.card-photo-wrap{width:145px;height:160px;margin-top:19px}.wedding-card h1{font-size:3.1rem}.venue{display:block;margin:20px 18px 60px}.venue-copy{padding:45px 25px}.map-frame,.map-frame iframe{min-height:390px}.venue-actions{flex-direction:column}.venue-actions .link-button{text-align:center}.invitation-gate:before,.invitation-gate:after{opacity:.18}}

/* Theme-specific opening art directions */
.royal-ivory .wedding-card{border:5px double var(--accent);background:linear-gradient(145deg,#fffdf8,var(--paper))}.royal-ivory .wedding-card:before{inset:15px;border:1px solid var(--accent)}.royal-ivory .photo-ring{background:radial-gradient(circle at 30% 25%,#dabb7c,#8d6530)}
.sidi-bou-said .invitation-gate{background-color:#f4fafc;background-image:linear-gradient(45deg,#287daa10 25%,transparent 25% 75%,#287daa10 75%),linear-gradient(-45deg,#287daa10 25%,transparent 25% 75%,#287daa10 75%);background-size:38px 38px}.sidi-bou-said .wedding-card{border:10px solid #fff;box-shadow:0 0 0 2px var(--accent),0 30px 80px #17497933}.sidi-bou-said .wedding-card:before{border:2px solid var(--accent);border-radius:48% 48% 6px 6px}.sidi-bou-said .card-photo-wrap,.sidi-bou-said .card-photo-wrap img,.sidi-bou-said .card-photo-wrap:before{border-radius:50% 50% 5px 5px}
.midnight-gold .invitation-gate{background:radial-gradient(circle at 50% 35%,#34496b,#102239 72%)}.midnight-gold .wedding-card{background:linear-gradient(145deg,#172f4d,#0c1b30);border:3px double var(--accent);box-shadow:0 30px 90px #0008,0 0 55px #d3ae6522}.midnight-gold .wedding-card:before{inset:17px;border:2px solid var(--accent);border-radius:50% 50% 8px 8px}.midnight-gold .card-photo-wrap,.midnight-gold .card-photo-wrap img,.midnight-gold .card-photo-wrap:before{border-radius:50% 50% 5px 5px}.midnight-gold .floral-corner{filter:sepia(1) saturate(.55);opacity:.18}
.andalusian-palace .invitation-gate{background:repeating-linear-gradient(45deg,#ad794312 0 8px,transparent 8px 16px),var(--paper)}.andalusian-palace .wedding-card{border-radius:48% 48% 4px 4px;padding-top:70px;border:3px double var(--accent)}.andalusian-palace .wedding-card:before{border-radius:48% 48% 4px 4px;border-style:dashed}.andalusian-palace .card-photo-wrap,.andalusian-palace .card-photo-wrap img,.andalusian-palace .card-photo-wrap:before{border-radius:48% 48% 4px 4px}
.rose-garden .invitation-gate{background:radial-gradient(circle at 30% 20%,#fff,#fbeced 65%)}.rose-garden .wedding-card{border-radius:50% 50% 18px 18px;background:linear-gradient(#fff8,#fbeced),var(--paper)}.rose-garden .wedding-card:after{content:'❀';position:absolute;right:28px;top:24px;color:var(--accent);font-size:4rem;opacity:.36}.rose-garden .card-photo-wrap{transform:rotate(2deg)}.rose-garden .card-photo-wrap,.rose-garden .card-photo-wrap img,.rose-garden .card-photo-wrap:before{border-radius:50%}
.olive-estate .invitation-gate{background:repeating-linear-gradient(120deg,#c0bd910b 0 3px,transparent 3px 10px),#293e32}.olive-estate .wedding-card{background:#293e32;border:1px solid #c0bd91}.olive-estate .wedding-card:before{border-style:dashed}.olive-estate .card-photo-wrap{width:190px;height:180px;transform:rotate(-4deg);border:10px solid #f2ecd7;box-shadow:0 18px 35px #0006}.olive-estate .card-photo-wrap img,.olive-estate .card-photo-wrap:before{border-radius:0}.olive-estate .photo-ring{right:-38px}
.bordeaux-velvet .invitation-gate{background:radial-gradient(circle,#7b3047,#3b111f 75%)}.bordeaux-velvet .wedding-card{background:linear-gradient(90deg,#501c2b 0 12%,#6d263b 12% 88%,#501c2b 88%);border:1px solid var(--accent);box-shadow:0 34px 95px #18060caa}.bordeaux-velvet .wedding-card:before{border-width:0 1px}.bordeaux-velvet .card-photo-wrap,.bordeaux-velvet .card-photo-wrap img,.bordeaux-velvet .card-photo-wrap:before{border-radius:3px}.bordeaux-velvet .wedding-card h1{font-style:italic}
.pearl-minimal .invitation-gate{background:#f4f4f0}.pearl-minimal .wedding-card{align-items:flex-start;text-align:left;background:#f8f8f4;border:0;box-shadow:0 24px 70px #0002}.pearl-minimal .wedding-card:before{inset:18px 0;border-width:1px 0}.pearl-minimal .card-photo-wrap{width:100%;height:210px;transform:none}.pearl-minimal .card-photo-wrap,.pearl-minimal .card-photo-wrap img,.pearl-minimal .card-photo-wrap:before{border-radius:0}.pearl-minimal .photo-ring{right:18px}.pearl-minimal .card-divider{margin-left:0}.pearl-minimal .open-card{border-radius:0}
.desert-sunset .invitation-gate{background:radial-gradient(circle at 70% 18%,#ffdca8,#f1d2b3 48%,#c7865f)}.desert-sunset .wedding-card{background:linear-gradient(165deg,#f7dfc7,#e9bd95);border-radius:48% 48% 7px 7px}.desert-sunset .wedding-card:before{border-radius:48% 48% 7px 7px}.desert-sunset .wedding-card h1{font-style:italic}.desert-sunset .card-photo-wrap,.desert-sunset .card-photo-wrap img,.desert-sunset .card-photo-wrap:before{border-radius:50% 50% 0 0}
.celestial-blue .invitation-gate{background:radial-gradient(circle at 50% 20%,#526592,#182447 72%)}.celestial-blue .invitation-gate:before,.celestial-blue .invitation-gate:after{background:radial-gradient(circle,#afbfeb 0 2px,transparent 3px);background-size:28px 28px;opacity:.28}.celestial-blue .wedding-card{background:radial-gradient(circle at 50% 15%,#35466d,#182447 70%);border-radius:50%;border:1px solid var(--accent);box-shadow:0 0 70px #afbfeb30,0 30px 80px #0007}.celestial-blue .wedding-card:before{border-radius:50%;box-shadow:inset 0 0 45px #afbfeb22}.celestial-blue .card-photo-wrap,.celestial-blue .card-photo-wrap img,.celestial-blue .card-photo-wrap:before{border-radius:50%}.celestial-blue .photo-ring{box-shadow:0 0 28px #afbfeb99}
@media(max-width:760px){.andalusian-palace .wedding-card{padding-top:48px}.olive-estate .card-photo-wrap{width:160px;height:150px}.pearl-minimal .card-photo-wrap{width:100%;height:180px}.celestial-blue .wedding-card{border-radius:42%}}

/* Complete invitation scenes — each collection changes composition, not only colour */
body{overflow-x:hidden}.scene{position:relative;overflow:hidden}.hero-scene{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;color:#fff;text-align:center}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:heroBreath 14s ease-in-out infinite alternate}.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,#0005,#0002 42%,#0008)}.hero-frame{position:absolute;inset:4.8vw;border:1px solid #fff8}.hero-copy{position:relative;z-index:2;padding:100px 24px 60px;text-shadow:0 2px 24px #0008}.hero-copy h1{font-size:clamp(4.6rem,14vw,11rem)}.hero-copy h1 span,.hero-copy h1 i{display:block}.hero-copy h1 i{font-size:.45em;font-weight:400;margin:-.2em 0}.hero-date{letter-spacing:.28em;text-transform:uppercase;margin-top:28px}.opening-card{position:relative;z-index:2;width:min(91vw,620px);min-height:min(84svh,760px);display:grid;grid-template-rows:1.15fr 1fr;overflow:hidden;background:var(--paper);color:var(--ink);border:1px solid var(--accent);box-shadow:0 35px 100px #0005;animation:openingArrive 1.2s cubic-bezier(.16,.75,.25,1) both;transition:transform 1.35s cubic-bezier(.7,0,.2,1),opacity 1s}.opening-art{position:relative;overflow:hidden}.opening-art img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.85)}.opening-art:after{content:'';position:absolute;inset:auto 0 0;height:45%;background:linear-gradient(transparent,var(--paper))}.opening-monogram{position:absolute;z-index:2;right:22px;bottom:17px;width:70px;height:70px;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--paper);border:5px double var(--paper);font:italic 18px Georgia}.opening-copy{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px 30px 34px}.opening-copy h1{font-size:clamp(2.8rem,8vw,4.7rem);margin:4px 0}.opening-copy h1 i{font-size:.7em}.opening-ornament{color:var(--accent);font-size:1.4rem}.opening-copy time{letter-spacing:.2em;font-size:.78rem}.open-card,.rsvp-open,.wish-form button,.rsvp-dialog form button{border:1px solid var(--accent);background:var(--accent);color:var(--paper);padding:13px 24px;margin-top:20px;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem}.open-card b{margin-left:13px}.gate-atmosphere{position:absolute;inset:0;overflow:hidden}.gate-atmosphere i{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 20px var(--accent);animation:floatSpeck 7s ease-in-out infinite}.gate-atmosphere i:nth-child(1){left:8%;top:20%}.gate-atmosphere i:nth-child(2){left:82%;top:12%;animation-delay:-2s}.gate-atmosphere i:nth-child(3){left:91%;top:72%;animation-delay:-4s}.gate-atmosphere i:nth-child(4){left:15%;top:85%;animation-delay:-1s}.gate-atmosphere i:nth-child(5){left:70%;top:45%;animation-delay:-5s}.experience-open .opening-card{transform:scale(1.1) translateY(-40px);opacity:0}.experience-open .invitation-gate{opacity:0;visibility:hidden}.experience-open .gate-instruction{opacity:0}
.portrait-intro{min-height:100svh;padding:9vw 5vw;display:grid;place-items:center;background:var(--paper)}.portrait-stack{position:relative;width:min(900px,90vw);height:min(75vw,690px)}.portrait-stack img{position:absolute;width:52%;height:85%;object-fit:cover;box-shadow:0 25px 80px #0003}.portrait-stack img:first-child{left:4%;top:0;clip-path:polygon(0 0,86% 0,100% 100%,0 100%)}.portrait-stack img:nth-child(2){right:4%;bottom:0;clip-path:polygon(14% 0,100% 0,100% 100%,0 100%)}.portrait-stack>span{position:absolute;z-index:3;left:50%;top:47%;translate:-50% -50%;font:italic clamp(5rem,12vw,11rem) 'Cormorant Garamond';color:var(--accent);text-shadow:0 2px 20px var(--paper)}.portrait-names{display:flex;gap:30px;align-items:center;font:400 clamp(2rem,5vw,4rem) 'Cormorant Garamond';margin-top:30px}.portrait-names i{font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}.ceremony{text-align:center;padding:120px 5vw;background:color-mix(in srgb,var(--paper) 94%,var(--accent))}.ceremony h2,.gallery-scene h2,.reception h2,.guestbook h2{margin:22px 0 60px}.family-grid{max-width:1050px;margin:auto;display:grid;grid-template-columns:1fr 140px 1fr;align-items:center;gap:30px}.family-grid article{padding:35px 20px;border-block:1px solid var(--accent)}.family-grid small{letter-spacing:.12em;text-transform:uppercase}.family-grid h3{margin:12px 0}.family-grid p{font-size:.9rem;opacity:.75}.family-mark{font:400 3.8rem/1 'Cormorant Garamond';color:var(--accent)}.family-mark i{font-size:.7em}.ceremony-date,.date-hero{display:flex;align-items:center;justify-content:center;gap:35px;margin:65px auto 20px}.ceremony-date b,.date-hero b{font:400 clamp(5rem,12vw,9rem)/.8 'Cormorant Garamond'}.ceremony-date span,.date-hero span{text-transform:uppercase;letter-spacing:.18em;font-size:.75rem;border-block:1px solid var(--accent);padding:14px 0}.ceremony-note{font:italic 1.35rem 'Cormorant Garamond'}
.gallery-scene{text-align:center;padding:115px 4vw;background:var(--paper)}.gallery-stage{position:relative;width:min(1080px,92vw);height:min(72vw,720px);margin:auto}.gallery-slide{position:absolute;inset:0;margin:0;opacity:0;transform:scale(.92) rotate(2deg);transition:opacity .9s,transform 1.2s;pointer-events:none}.gallery-slide.active{opacity:1;transform:none;pointer-events:auto}.gallery-slide img{width:100%;height:100%;object-fit:cover}.gallery-slide figcaption{position:absolute;right:20px;bottom:18px;color:#fff;background:#0006;padding:6px 12px;font-size:.72rem;letter-spacing:.15em}.gallery-prev,.gallery-next{position:absolute;z-index:3;top:50%;translate:0 -50%;width:54px;height:54px;border-radius:50%;border:1px solid #fff;background:#0005;color:#fff;font-size:1.2rem}.gallery-prev{left:18px}.gallery-next{right:18px}.gallery-dots{display:flex;justify-content:center;gap:9px;margin-top:28px}.gallery-dots button{width:28px;height:3px;padding:0;border:0;background:color-mix(in srgb,var(--accent) 25%,transparent)}.gallery-dots button.active{background:var(--accent)}
.reception{min-height:100svh;display:grid;place-items:center;text-align:center;padding:110px 25px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--paper) 72%,var(--accent)));color:var(--paper)}.reception-card{width:min(860px,92vw);padding:80px 5vw;border:1px solid currentColor;box-shadow:0 0 0 10px color-mix(in srgb,var(--paper) 12%,transparent)}.reception .countdown{margin:45px 0 10px}.rsvp-open{background:var(--paper);color:var(--ink);border-color:var(--paper)}.dress-schedule{padding:120px 6vw;display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw;background:var(--paper)}.dress h2{margin:20px 0}.swatches{display:flex;gap:12px;margin:30px 0}.swatches i{width:46px;height:46px;border-radius:50%;background:var(--accent)}.swatches i:nth-child(2){background:var(--ink)}.swatches i:nth-child(3){background:color-mix(in srgb,var(--accent) 40%,white)}.swatches i:nth-child(4){background:color-mix(in srgb,var(--paper) 70%,black);border:1px solid var(--accent)}.timeline ol{list-style:none;margin:25px 0;padding:0;border-left:1px solid var(--accent)}.timeline li{display:grid;grid-template-columns:100px 1fr;gap:25px;padding:15px 0 15px 30px;position:relative}.timeline li:before{content:'';position:absolute;width:9px;height:9px;border-radius:50%;background:var(--accent);left:-5px;top:25px}.timeline time{font-size:.8rem;letter-spacing:.12em}.timeline span{font:400 1.7rem 'Cormorant Garamond'}
.guestbook{text-align:center;padding:120px 6vw;background:color-mix(in srgb,var(--paper) 92%,var(--accent))}.wish-form{max-width:720px;margin:auto;display:grid;gap:20px}.wish-form label,.rsvp-dialog label{display:grid;gap:7px;text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.1em}.wish-form input,.wish-form textarea,.rsvp-dialog input,.rsvp-dialog select{width:100%;border:0;border-bottom:1px solid var(--accent);background:transparent;color:inherit;padding:14px 4px;font:1rem 'DM Sans'}.wish-form textarea{min-height:110px;resize:vertical}.wishes{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:900px;margin:55px auto 0}.wishes blockquote{margin:0;padding:30px;border:1px solid var(--accent);font:italic 1.3rem 'Cormorant Garamond'}.wishes cite{display:block;margin-top:15px;font:500 .7rem 'DM Sans';letter-spacing:.15em}.gift{text-align:center;padding:120px 24px;min-height:75vh;background:var(--paper)}.gift-box{position:relative;width:190px;height:155px;margin:70px auto 30px;background:none;border:0;color:var(--paper);perspective:800px}.gift-body{position:absolute;inset:35px 10px 0;display:grid;place-items:center;background:var(--accent);font:italic 2rem Georgia;box-shadow:0 22px 40px #0003}.gift-lid{position:absolute;z-index:2;left:0;right:0;top:20px;height:50px;background:color-mix(in srgb,var(--accent) 82%,black);transform-origin:left bottom;transition:transform .9s cubic-bezier(.2,.8,.2,1)}.gift-box.open .gift-lid{transform:translateY(-20px) rotate(-14deg)}.gift-message{opacity:0;transform:translateY(20px);transition:.8s}.gift-message.open{opacity:1;transform:none}.gift-message h2{font-size:clamp(2.7rem,6vw,5rem)}.closing{min-height:90svh;padding:0;display:grid;grid-template-columns:1.1fr .9fr;align-items:stretch;background:var(--paper)}.closing img{width:100%;height:100%;min-height:90svh;object-fit:cover}.closing>div{display:flex;flex-direction:column;justify-content:center;padding:8vw}.closing h2{font-size:clamp(3rem,6vw,6rem);margin:25px 0}.rsvp-dialog{display:none;position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);z-index:200;width:min(520px,92vw);max-height:90svh;overflow:auto;border:1px solid var(--accent);background:var(--paper);color:var(--ink);padding:55px;box-shadow:0 40px 100px #0007}.rsvp-dialog.open{display:block}.rsvp-dialog.open:before{content:'';position:fixed;z-index:-1;inset:-100vh -100vw;background:#0009;backdrop-filter:blur(8px)}.modal-open{overflow:hidden}.rsvp-dialog h2{font-size:3.5rem;margin:15px 0 30px}.rsvp-dialog form{display:grid;gap:20px}.rsvp-close{position:absolute;right:15px;top:10px;border:0;background:none;color:inherit;font-size:2rem}.rsvp-success{font:italic 1.7rem 'Cormorant Garamond'}
.motion .reveal{opacity:0;transform:translateY(55px);transition:opacity 1.1s,transform 1.1s}.motion .reveal[data-reveal="split"]{transform:scale(.94)}.motion .reveal[data-reveal="wipe"]{clip-path:inset(0 50%)}.motion .reveal[data-reveal="bloom"]{transform:scale(.8)}.motion .reveal.visible{opacity:1;transform:none;clip-path:inset(0)}
/* Royal / porcelain / velvet / editorial compositions */
.royal-ivory .opening-card,.royal-ivory .reception-card{border:5px double var(--accent)}.royal-ivory .hero-frame{border:5px double #d6b06d}.royal-ivory .ceremony:before,.royal-ivory .gift:before{content:'❦';position:absolute;font:18rem Georgia;color:var(--accent);opacity:.05;left:50%;top:50%;translate:-50% -50%}
.sidi-bou-said .opening-card{border:10px solid white;box-shadow:0 0 0 2px var(--accent),0 35px 90px #17497944}.sidi-bou-said .opening-art,.sidi-bou-said .hero-frame,.sidi-bou-said .reception-card{border-radius:48% 48% 0 0}.sidi-bou-said .ceremony,.sidi-bou-said .gift{background-color:#f7fcff;background-image:linear-gradient(45deg,#287daa0c 25%,transparent 25% 75%,#287daa0c 75%);background-size:32px 32px}.sidi-bou-said .portrait-stack img{border:12px solid white;box-shadow:0 20px 70px #17497930}
.midnight-gold .opening-card{border-radius:48% 48% 0 0;background:#102239}.midnight-gold .opening-art{border-radius:48% 48% 0 0}.midnight-gold .hero-photo{filter:saturate(.6) brightness(.65)}.midnight-gold .hero-frame,.midnight-gold .gallery-stage{border-radius:48% 48% 0 0;overflow:hidden}.midnight-gold .ceremony{background:radial-gradient(circle at 50% 25%,#233d60,#102239);color:#f9e4b7}
.andalusian-palace .opening-card,.andalusian-palace .reception-card{clip-path:polygon(10% 8%,18% 0,26% 8%,34% 0,42% 8%,50% 0,58% 8%,66% 0,74% 8%,82% 0,90% 8%,100% 0,100% 100%,0 100%,0 0)}.andalusian-palace .hero-frame{border-radius:48% 48% 0 0;border-width:3px}.andalusian-palace .gallery-stage{border:14px solid var(--accent);outline:3px dashed var(--paper);outline-offset:-9px}.andalusian-palace .ceremony{background:repeating-linear-gradient(45deg,#ad794312 0 8px,transparent 8px 16px),var(--paper)}
.rose-garden .opening-card{border-radius:50% 50% 18px 18px}.rose-garden .opening-art{border-radius:50% 50% 0 0}.rose-garden .theme-flower{position:absolute;width:210px;height:210px;background:url('/weddings/art/florals.webp') center/cover;z-index:4}.rose-garden .flower-one{left:-55px;bottom:-45px}.rose-garden .flower-two{right:-55px;top:-45px;transform:rotate(180deg)}.rose-garden .gallery-slide img{border-radius:50% 50% 5px 5px}.rose-garden .portrait-stack img{border-radius:48% 48% 0 0}
.olive-estate .opening-card{grid-template:1fr/1fr;background:#293e32}.olive-estate .opening-art{position:absolute;inset:8%;transform:rotate(-3deg);border:12px solid #f2ecd7}.olive-estate .opening-copy{background:#293e32dd;margin:38% 12% 8%;padding:25px;backdrop-filter:blur(5px)}.olive-estate .gallery-slide{padding:18px 18px 70px;background:#f2ecd7}.olive-estate .gallery-slide img{filter:sepia(.2)}.olive-estate .ceremony{background:linear-gradient(#293e32ee,#293e32ee),url('/weddings/art/garden.webp') center/cover;color:#f2ecd7}
.bordeaux-velvet .opening-card{grid-template-columns:44% 56%;grid-template-rows:1fr;background:linear-gradient(90deg,#501c2b,#762a42)}.bordeaux-velvet .opening-art{height:100%}.bordeaux-velvet .opening-copy{padding:30px 18px}.bordeaux-velvet .hero-overlay{background:linear-gradient(90deg,#360d1acb,transparent,#360d1acb)}.bordeaux-velvet .hero-copy h1{font-style:italic}.bordeaux-velvet .gallery-stage{box-shadow:0 0 0 18px #501c2b,0 0 0 20px #d7b681}.bordeaux-velvet .ceremony{background:#501c2b;color:#fbe8cb}
.pearl-minimal .opening-card{grid-template-columns:55% 45%;grid-template-rows:1fr;border:0}.pearl-minimal .opening-copy{align-items:flex-start;text-align:left}.pearl-minimal .opening-monogram{border-radius:0}.pearl-minimal .hero-copy{text-align:left;width:100%;padding-left:9vw}.pearl-minimal .hero-copy h1 span{display:inline}.pearl-minimal .hero-copy h1 i{display:inline;margin:0 .15em}.pearl-minimal .hero-frame{border:0;border-left:1px solid white}.pearl-minimal .portrait-stack img,.pearl-minimal .gallery-slide img{filter:grayscale(1)}.pearl-minimal .ceremony{text-align:left}.pearl-minimal .family-grid{margin-left:0}
.desert-sunset .opening-card,.desert-sunset .opening-art,.desert-sunset .hero-frame{border-radius:50% 50% 0 0}.desert-sunset .opening-art img,.desert-sunset .hero-photo{filter:sepia(.35) saturate(.8)}.desert-sunset .ceremony{background:radial-gradient(circle at top,#ffdca8,#f1d2b3 65%)}.desert-sunset .gallery-slide{clip-path:ellipse(47% 50% at 50% 50%)}
.celestial-blue .opening-card{border-radius:50%;background:radial-gradient(circle at 50% 20%,#35466d,#182447 72%)}.celestial-blue .opening-art{position:absolute;inset:12%;border-radius:50%;opacity:.65}.celestial-blue .opening-copy{z-index:3;text-shadow:0 2px 14px #000}.celestial-blue .opening-monogram{display:none}.celestial-blue .hero-photo{filter:brightness(.55) saturate(.65)}.celestial-blue .hero-frame{border-radius:50%}.celestial-blue .ceremony{background:radial-gradient(circle at top,#34476f,#182447 70%);color:#e6ebff}.celestial-blue .gallery-stage{border-radius:50%;overflow:hidden;box-shadow:0 0 70px #afbfeb55}
@keyframes heroBreath{to{transform:scale(1.08) translateY(-1.5%)}}@keyframes openingArrive{from{opacity:0;transform:translateY(45px) scale(.94)}to{opacity:1;transform:none}}@keyframes floatSpeck{50%{transform:translateY(-35px) scale(1.8);opacity:.35}}
@media(max-width:760px){.opening-card{min-height:min(84svh,700px)}.topbar{position:absolute}.hero-frame{inset:65px 16px 22px}.portrait-intro{padding:90px 18px}.portrait-stack{height:118vw}.portrait-stack img{width:62%;height:78%}.portrait-stack img:first-child{left:0}.portrait-stack img:nth-child(2){right:0}.portrait-names{gap:14px}.ceremony,.gallery-scene,.guestbook,.gift{padding:85px 20px}.family-grid{grid-template-columns:1fr;gap:15px}.family-mark{font-size:2.8rem}.ceremony-date,.date-hero{gap:18px}.gallery-stage{height:118vw}.reception-card{padding:60px 18px}.dress-schedule{grid-template-columns:1fr;padding:85px 25px}.wishes{grid-template-columns:1fr}.closing{grid-template-columns:1fr}.closing img{min-height:60svh}.closing>div{padding:80px 25px}.venue{display:block}.bordeaux-velvet .opening-card,.pearl-minimal .opening-card{grid-template-columns:1fr;grid-template-rows:45% 55%}.pearl-minimal .opening-copy{align-items:center;text-align:center}.celestial-blue .opening-card{border-radius:42%}.rsvp-dialog{padding:45px 25px}.countdown{gap:18px}}
