@font-face{font-family:WeddingScript;src:url('assets/theme/great-vibes.ttf') format('truetype');font-display:swap;font-weight:400}
:root{--ivory:#f7f6ef;--sage:#526c61;--line:#d6d9cb;--card:#f1f1e9;color-scheme:only light}
html{scroll-behavior:smooth}body{display:block;background:#e9eef1}.stage{margin-inline:auto}.continuation{width:min(100%,calc(100svh * .5625));margin:auto;background:var(--ivory);color:var(--sage);text-align:center;font-family:Invitation,Georgia,serif;font-size:19px;line-height:1.65;overflow:hidden;container-type:inline-size;padding-bottom:0}.continuation *{box-sizing:border-box}.continuation p,.continuation h2,.continuation h3{margin:0;font-weight:400}.continuation a{color:inherit}.script{font-family:WeddingScript,Invitation,serif;font-weight:400;font-size:clamp(36px,9.6cqw,53px);line-height:1.4}.small-caps{font:10px/1.9 Georgia,serif;letter-spacing:2.6px;text-transform:uppercase}.fine-divider{height:1px;width:46px;background:var(--line);margin:0 auto}.section-divider{margin:70px auto}.countdown-section{position:relative;min-height:430px;padding:95px 15% 65px}.countdown-column{position:absolute;top:-2px;height:100%;max-height:440px;width:20%;object-fit:fill;pointer-events:none}.countdown-column.left{left:-3%}.countdown-column.right{right:-3%}.countdown-inner{position:relative;z-index:1}.countdown-inner .small-caps{margin-top:12px;letter-spacing:1.8px;font-size:9px}.countdown-values{display:flex;justify-content:center;margin:44px auto 24px}.countdown-values>div{width:33.33%;position:relative}.countdown-values>div+div:before{content:'';position:absolute;left:0;top:9px;height:28px;border-left:1px solid var(--line)}.countdown-values span{display:block;font:italic 37px/1.2 Invitation,Georgia,serif;font-variant-numeric:tabular-nums}.countdown-values small{display:block;font:8px/1.8 Georgia,serif;letter-spacing:2px;text-transform:uppercase;margin-top:12px}.countdown-note{font-size:15px;font-style:italic;opacity:.75}.wedding-section{padding:47px 7% 0}.wedding-section>.script{margin-bottom:125px}.event-card{position:relative;border:1px solid var(--line);border-radius:15px;padding:53px 20px 36px;background:var(--card)}.venue-illustration{position:absolute;left:18%;bottom:calc(100% - 12px);width:64%;height:130px;object-fit:contain;mix-blend-mode:multiply}.event-card .small-caps{font-size:9px;letter-spacing:2px}.event-venue{font-family:WeddingScript,Invitation,serif;font-size:clamp(31px,9cqw,45px);line-height:1.35;padding:18px 0 12px;overflow-wrap:anywhere}.event-intro{font-size:16px;opacity:.85}.event-card .fine-divider{margin:24px auto}.event-date,.event-time{font-size:19px;font-style:italic}.event-time{margin-top:5px!important}.text-link{display:inline-block;font:10px/2 Georgia,serif;text-transform:uppercase;letter-spacing:1.5px;text-decoration:none;border-bottom:1px solid #9eada0;padding:3px 0;min-height:30px}.text-link span{margin-left:4px}.event-card .text-link{margin-top:23px}.message-section{padding:0 7%}.message-section>.script{font-size:clamp(32px,8.7cqw,47px);margin-bottom:40px}.message-card{position:relative;border:1px solid var(--line);border-radius:15px;background:var(--card);padding:64px 10% 52px}.message-card>p:first-of-type{font-size:19px;line-height:1.75;white-space:pre-line;overflow-wrap:anywhere}.message-flower{position:absolute;width:29%;height:auto;pointer-events:none}.flower-start{left:-18px;top:-24px}.flower-end{right:-16px;bottom:-21px}.signature.script{font-size:37px;margin-top:29px}.couple-signature{font-size:21px}.journey-section{padding:0 8%}.journey-section .script{font-size:clamp(34px,9cqw,48px)}.instagram-icon{display:block;width:34px;height:34px;stroke:currentColor;stroke-width:1.7;margin:28px auto 18px}.hashtag{font-size:clamp(22px,6cqw,32px);overflow-wrap:anywhere}.journey-note{font-size:18px;max-width:250px;margin:16px auto 22px!important}.rsvp-section{padding:0 8%}.reply-intro{margin:22px 0!important;letter-spacing:2.5px;font-size:10px}.reply-note{font-size:18px;margin-bottom:25px!important}.whatsapp-button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:54px;padding:12px 22px;border-radius:8px;background:#688071;color:white!important;text-decoration:none;font-size:18px;line-height:1.25;max-width:100%;box-shadow:0 3px 12px #3f5d4b09}.whatsapp-button svg{width:25px;height:25px;stroke:currentColor;stroke-width:1.5;flex-shrink:0}.whatsapp-button:hover{background:#536b5d}.contact-note{font-size:16px;margin-top:34px!important}.contact-note .text-link{text-transform:none;letter-spacing:.5px;font-family:Invitation,Georgia,serif;font-size:17px}.closing-section{position:relative;padding:0 14% 80px;min-height:340px}.monogram{font-family:WeddingScript,serif;font-size:88px;line-height:1.3!important;white-space:nowrap}.monogram i{font-family:Invitation,serif;font-size:30px;vertical-align:20%;margin:0 -8px}.closing-names{font-size:25px}.closing-note{font-size:17px;max-width:250px;margin:20px auto 55px!important}.closing-flower{position:absolute;width:24%;bottom:40px;pointer-events:none}.closing-left{left:-5%}.closing-right{right:-5%}.brand-mark{font:9px Georgia,serif!important;letter-spacing:4px;text-transform:uppercase;opacity:.65}.continue-cue{position:absolute;z-index:26;bottom:64px;left:50%;transform:translateX(-50%);white-space:nowrap;text-decoration:none;background:#f7f6efde;padding:7px 14px;border-radius:20px;color:#4c665b;font:12px Invitation,serif}.continue-cue span{margin-left:6px}.details textarea{display:block;width:100%;border:1px solid #cfdbe2;border-radius:7px;padding:10px;margin-top:5px;background:white;color:var(--ink);font:15px/1.4 Invitation,Georgia,serif;resize:vertical}.details .panel-note{font-size:12px}.edit-toggle{font-size:11px;padding:10px 14px;opacity:.85}dialog{border:1px solid var(--line);border-radius:15px;background:var(--ivory);color:var(--sage);padding:30px;max-width:min(90vw,380px);text-align:center;font-family:Invitation,Georgia,serif}dialog::backdrop{background:#31423966}dialog h2{font-weight:400}dialog p{font-size:18px;line-height:1.5}dialog button{padding:10px 25px;background:#688071;color:white;border:0;border-radius:6px}.reveal{transition:opacity .7s ease,transform .7s ease}.reveal.waiting{opacity:0;transform:translateY(14px)}
@media(min-width:700px){.continuation{font-size:21px}.countdown-section{min-height:490px;padding-top:110px}.countdown-column{max-height:490px}.countdown-values span{font-size:43px}.small-caps{font-size:11px}.message-card>p:first-of-type{font-size:22px}.wedding-section>.script{margin-bottom:155px}.venue-illustration{height:155px}.event-card{padding-top:65px;padding-bottom:45px}.event-intro{font-size:19px}.event-date,.event-time{font-size:22px}.section-divider{margin:85px auto}.closing-section{padding-bottom:100px}}
@media(max-width:360px){.countdown-section{padding-inline:16%;min-height:390px}.countdown-values span{font-size:30px}.countdown-values small{letter-spacing:1px}.event-card{padding-inline:15px}.event-venue{font-size:32px}.message-card{padding-inline:10%}.message-card>p:first-of-type{font-size:18px}.reply-intro{letter-spacing:1.6px}.monogram{font-size:75px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{transition:none}.reveal.waiting{opacity:1;transform:none}}

/* Theme 24: restrained layered artwork and a one-or-two photograph gallery. */
.yacht{animation-duration:24s}
.wedding-section>.script{margin-bottom:160px}
.venue-illustration{left:9%;width:82%;height:165px;bottom:calc(100% - 16px)}
.message-section{padding-inline:8%;padding-bottom:38px}
.message-scene{position:relative;padding:5px 3% 10px}
.message-card{padding:64px 12% 65px}
.message-card .flower-end{display:none}
.message-curtain{position:absolute;z-index:2;pointer-events:none;right:-9%;top:46px;width:22%;height:calc(100% - 2px);object-fit:fill}
.message-cypress{position:absolute;z-index:3;pointer-events:none;left:-12%;bottom:-30px;width:29%;height:auto}
.message-card .flower-start{width:32%;left:-22px;top:-26px;z-index:3}
.message-scene .couple-signature{position:relative;z-index:4}
.gallery-section{position:relative;padding:0 8%}
.gallery-bouquet{display:block;width:32%;max-height:95px;object-fit:contain;margin:0 auto 17px}
.gallery-subtitle{font-size:17px;font-style:italic;margin:9px 0 30px!important;opacity:.85}
.gallery-frames{display:grid;gap:28px;max-width:380px;margin:auto}
.couple-frame{margin:0;padding:10px 10px 18px;border:1px solid #cdd2c3;border-radius:100px 100px 8px 8px;background:#eeeee5;box-shadow:0 7px 22px #526c6109}
.photo-mat{aspect-ratio:4/5;overflow:hidden;border-radius:90px 90px 2px 2px;border:1px solid #d4d9cb;background:#f9f8f0;position:relative;display:grid;place-items:center}
.photo-mat>img{display:block;width:100%;height:100%;object-fit:contain;position:absolute;inset:0}
.photo-mat>img[hidden],.couple-frame[hidden]{display:none}
.photo-placeholder{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px;width:100%}
.photo-placeholder[hidden]{display:none}
.placeholder-monogram{font:72px/1.4 WeddingScript,serif;color:#688071}.placeholder-monogram i{font:italic 26px Invitation,serif}
.photo-placeholder .small-caps{font-size:8px;letter-spacing:1.7px}.photo-placeholder small{font:italic 15px/1.5 Invitation,serif;opacity:.75}
.couple-frame figcaption{font:italic 21px/1.5 Invitation,serif;padding-top:15px}
.gallery-settings{border:1px solid #d6d9cb;border-radius:10px;padding:12px;margin:8px 0}.gallery-settings legend{font-size:17px}.gallery-settings input[type=file]{font-size:12px;max-width:100%;padding:8px 0;border:0;background:transparent}.gallery-settings .panel-note{font-size:12px;line-height:1.5}
@media(min-width:700px){.wedding-section>.script{margin-bottom:185px}.venue-illustration{height:190px}}
@media(max-width:360px){.message-card{padding-inline:11%}.message-curtain{right:-9%;width:20%}.gallery-section{padding-inline:8%}.placeholder-monogram{font-size:61px}}
@media(prefers-reduced-motion:reduce){.yacht{animation:none}}

.curtain-flower{position:absolute;z-index:4;pointer-events:none;right:-9%;top:16px;width:27%;height:auto}

/* Original three-piece curtain canopy, above the wedding card. */
.wedding-section{padding-top:0}
.wedding-canopy{position:relative;width:116.28%;margin-left:-8.14%;height:78cqw;margin-bottom:145px;isolation:isolate}
.canopy-art{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.canopy-center{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.canopy-side{position:absolute;top:0;width:29%;height:auto}.canopy-left{left:-1%;clip-path:polygon(0 0,100% 0,100% 10%,85% 16%,50% 22%,0 27%)}.canopy-right{right:-1%;clip-path:polygon(0 0,100% 0,100% 27%,50% 22%,15% 16%,0 10%)}
.canopy-title{position:absolute;top:55%;left:12%;right:12%;padding:9px 0;background:radial-gradient(ellipse,#f7f6eff5 22%,#f7f6efb0 50%,#f7f6ef00 73%)}
.canopy-title .script{font-size:clamp(36px,9.5cqw,52px);margin:0}.canopy-title .small-caps{font-size:9px;letter-spacing:3px;margin-top:9px}
@media(min-width:700px){.wedding-canopy{margin-bottom:170px}}
.canopy-side{clip-path:none;mask-image:linear-gradient(to bottom,#000 0 15%,transparent 23%);-webkit-mask-image:linear-gradient(to bottom,#000 0 15%,transparent 23%)}

/* Gentle, independent artwork motion. Typography and portrait remain steady. */
.canopy-center{clip-path:inset(0 0 74% 0)}
.canopy-pendants{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;clip-path:inset(25.5% 0 0 0);transform-origin:50% 25.5%;animation:pendantSway 9s ease-in-out infinite}
.canopy-left{transform-origin:0 0;animation:curtainDrift 12s ease-in-out infinite}
.canopy-right{transform-origin:100% 0;animation:curtainDrift 14s ease-in-out -5s infinite reverse}
.message-curtain{transform-origin:85% 3%;animation:curtainDrift 11s ease-in-out -3s infinite}
.message-cypress{transform-origin:50% 96%;animation:greenerySway 8s ease-in-out -2s infinite}
.curtain-flower,.message-flower,.closing-flower{transform-origin:50% 70%;animation:flowerSway 10s ease-in-out -4s infinite}
.flower-start,.closing-left{animation-delay:-1s;animation-duration:12s}.gallery-bouquet{transform-origin:50% 75%;animation:flowerSway 11s ease-in-out -6s infinite}
.canopy-pendants,.canopy-side,.message-curtain,.message-cypress,.curtain-flower,.message-flower,.closing-flower,.gallery-bouquet{animation-play-state:paused}
.motion-visible .canopy-pendants,.motion-visible .canopy-side,.motion-visible .message-curtain,.motion-visible .message-cypress,.motion-visible .curtain-flower,.motion-visible .message-flower,.motion-visible .closing-flower,.motion-visible .gallery-bouquet{animation-play-state:running}
.artwork-paused .continuation img,.artwork-paused .yacht,.artwork-paused .water-glimmer{animation-play-state:paused!important}
@keyframes pendantSway{0%,100%{transform:rotate(-.35deg)}50%{transform:rotate(.35deg)}}
@keyframes curtainDrift{0%,100%{transform:rotate(-.45deg) skewX(-.12deg)}50%{transform:rotate(.45deg) skewX(.12deg)}}
@keyframes greenerySway{0%,100%{transform:rotate(-.7deg) skewX(-.25deg)}50%{transform:rotate(.7deg) skewX(.25deg)}}
@keyframes flowerSway{0%,100%{transform:rotate(-.65deg) translateY(0)}50%{transform:rotate(.65deg) translateY(-1px)}}
.motion-toggle{display:block;margin:22px auto 0;min-height:44px;border:0;background:transparent;color:var(--sage);font:12px/1.4 Invitation,Georgia,serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.motion-toggle:focus-visible{outline:2px solid var(--sage);outline-offset:4px}.motion-toggle[hidden]{display:none}
@media(prefers-reduced-motion:reduce){body:not(.motion-allowed) .continuation img{animation:none!important;transform:none!important}}

/* Theme 27: immediate, one-way yacht travel and perceptible ambient movement. */
.yacht{animation:yachtForward 30s linear -12.6s infinite;animation-play-state:paused;transform:translateX(0)}
.stage:not(.revealing) .yacht{animation-name:none}
.stage.revealing .yacht{animation-play-state:running}
.stage.hero-offscreen .yacht,.stage.hero-offscreen .water-glimmer{animation-play-state:paused}
@keyframes yachtForward{from{transform:translateX(-105%)}to{transform:translateX(145%)}}
.canopy-pendants{animation-duration:6.4s;animation-delay:-1.6s}
.canopy-left{animation-duration:7.2s;animation-delay:-1.8s}.canopy-right{animation-duration:8.4s;animation-delay:-2.1s}
.message-curtain{animation-duration:7.8s;animation-delay:-1.95s}
.message-cypress{animation-duration:6.8s;animation-delay:-1.7s}
.curtain-flower,.message-flower,.closing-flower,.gallery-bouquet{animation-duration:7s;animation-delay:-1.75s}
@keyframes pendantSway{0%,100%{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}
@keyframes curtainDrift{0%,100%{transform:rotate(-1.2deg) skewX(-.3deg) translateX(-1px)}50%{transform:rotate(1.2deg) skewX(.3deg) translateX(1px)}}
@keyframes greenerySway{0%,100%{transform:rotate(-2deg) skewX(-.65deg)}50%{transform:rotate(2deg) skewX(.65deg)}}
@keyframes flowerSway{0%,100%{transform:rotate(-1.8deg) translateY(0)}50%{transform:rotate(1.8deg) translateY(-2px)}}
@media(prefers-reduced-motion:reduce){body:not(.motion-allowed) .yacht,body:not(.motion-allowed) .continuation img{animation:none!important;transform:none!important}}

/* Theme 28: layered scroll entrances, full drapes and a decorated closing sequence. */
.scroll-entry{--entry-x:0px;--entry-y:32px;--entry-scale:1}
.scroll-entry[data-entry=title]{--entry-y:40px}
.scroll-entry[data-entry=art]{--entry-y:62px;--entry-scale:.9}
.scroll-entry[data-entry=left]{--entry-x:-42px;--entry-y:0px}
.scroll-entry[data-entry=right]{--entry-x:42px;--entry-y:0px}
.entry-ready{opacity:0;translate:var(--entry-x) var(--entry-y);scale:var(--entry-scale);transition:opacity .85s ease var(--entry-delay,0ms),translate 1.15s cubic-bezier(.16,1,.3,1) var(--entry-delay,0ms),scale 1.15s cubic-bezier(.16,1,.3,1) var(--entry-delay,0ms)}
.entry-ready.entered{opacity:1;translate:0 0;scale:1}
.wedding-section{position:relative;padding:0 13% 76px;isolation:isolate}
.wedding-drapes{position:absolute;inset:0;pointer-events:none;z-index:2}
.full-drape{position:absolute;top:0;height:100%;width:19%;object-fit:fill;animation:fullCurtainBreath 7s ease-in-out -1.75s infinite;animation-play-state:paused;transform-origin:top left}
.drape-left{left:-1.5%}.drape-right{right:-1.5%;transform-origin:top right;animation-direction:reverse;animation-duration:8.2s;animation-delay:-2.05s}
.wedding-canopy{width:135.14%;margin-left:-17.57%;height:72cqw;margin-bottom:145px}
.canopy-art{overflow:visible}
.canopy-title{top:55%;left:18%;right:18%}
.wedding-section .event-card{padding-inline:14px;background:#f1f1e9c9}
.wedding-section .event-venue{font-size:clamp(29px,8.3cqw,43px)}
.wedding-section .venue-illustration{left:-3%;width:106%;height:170px}
.journey-section{position:relative;padding:0 10% 35px;background:radial-gradient(ellipse at 50% 50%,#ebece0a6,transparent 72%)}
.candle-scene{position:relative;width:54%;max-width:260px;margin:0 auto 28px;isolation:isolate}
.candle-art{display:block;width:100%;height:auto}
.candle-glow{position:absolute;inset:5% 10% 12%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#e9cb8359,transparent 70%);animation:candleLight 3.2s ease-in-out infinite;animation-play-state:paused}
.journey-section .instagram-icon{margin-top:20px}.journey-section .journey-note{max-width:260px}
.rsvp-section{position:relative;padding:12px 10% 55px;isolation:isolate}
.rsvp-pedestals{position:absolute;left:0;right:0;bottom:0;height:67%;pointer-events:none;z-index:-1}
.pedestal{position:absolute;bottom:0;width:25%;height:auto;object-fit:contain}
.pedestal-left{left:-7%}.pedestal-right{right:-7%}
.rsvp-section .reply-note{max-width:240px;margin-inline:auto}
.rsvp-section .whatsapp-button{font-size:17px;gap:8px;padding-inline:17px;background:#526c61;border-radius:3px;box-shadow:0 6px 20px #526c6115}
.rsvp-section .contact-note{font-size:16px;max-width:230px;margin-inline:auto}
.rsvp-section+.section-divider{margin-block:52px}
.closing-section{padding-top:8px;background:radial-gradient(ellipse at 50% 100%,#e5e9dc80,transparent 75%)}
.motion-visible .full-drape,.motion-visible .candle-glow{animation-play-state:running}
.artwork-paused .candle-glow{animation-play-state:paused!important}
@keyframes fullCurtainBreath{0%,100%{transform:skewX(-.65deg) scaleX(.97)}50%{transform:skewX(.65deg) scaleX(1.035)}}
@keyframes candleLight{0%,100%{opacity:.35;transform:scale(.94)}35%{opacity:.8;transform:scale(1.06)}67%{opacity:.48;transform:scale(.99)}}
@media(min-width:700px){.wedding-canopy{margin-bottom:170px}.wedding-section .venue-illustration{height:195px}}
@media(max-width:360px){.rsvp-section .whatsapp-button{font-size:15px;padding-inline:13px;gap:7px}.wedding-section{padding-inline:12%}.wedding-canopy{width:131.58%;margin-left:-15.79%}}
@media(prefers-reduced-motion:reduce){.entry-ready{opacity:1;translate:none;scale:none;transition:none}body:not(.motion-allowed) .candle-glow{animation:none}}

/* Timeless Classic purchase controls, outside the invitation content. */
#orderDialog{width:min(92vw,460px);max-width:460px;max-height:90svh;overflow:auto;padding:28px 24px}#orderDialog h2{font:42px WeddingScript,serif;margin:8px 0}#orderDialog>p{font-size:15px}.order-close{position:absolute;right:10px;top:8px;background:transparent;color:#526c61;font-size:24px;padding:5px 12px}#orderForm{text-align:left}#orderForm label{display:block;font:14px/1.5 Georgia,serif;margin:13px 0}#orderForm input,#orderForm textarea{box-sizing:border-box;display:block;width:100%;padding:11px;border:1px solid #cdd2c3;background:#fffef9;color:#354a40;border-radius:5px;font:16px Georgia,serif;margin-top:5px}.order-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}#orderForm .order-note{font-size:13px;line-height:1.5}#orderForm button{width:100%;margin-top:10px}
/* Floating demo CTA. No page bar or reserved footer space. */
body{padding-bottom:0}.purchase-cta{position:fixed;z-index:50;right:max(12px,calc((100vw - 100svh * .5625)/2 + 12px));bottom:max(14px,env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:10px;white-space:nowrap;border:1px solid #ffffff90;border-radius:24px;padding:12px 18px;min-height:44px;background:#f7f6efed;color:#40564a;box-shadow:0 3px 14px #243a4a15;font:14px/1.25 Invitation,Georgia,serif;cursor:pointer}.purchase-cta span{opacity:.5}.purchase-cta:focus-visible{outline:2px solid #526c61;outline-offset:3px}.stage-controls{bottom:70px}.stage-controls #musicToggle{width:auto;height:auto;min-width:100px;min-height:36px;padding:8px 12px;font-size:13px;white-space:nowrap}.continue-cue{bottom:120px}.edit-toggle{bottom:118px}.countdown-section+.fine-divider{margin:36px auto 52px}.section-divider{margin-block:80px}@media(max-width:360px){.purchase-cta{font-size:13px;padding:11px 14px;gap:8px}}

.demo-watermark{position:fixed;z-index:28;left:50%;top:47%;transform:translate(-50%,-50%) rotate(-18deg);font:clamp(35px,8vw,62px) WeddingScript,serif;color:#526c61;opacity:.075;pointer-events:none;user-select:none;white-space:nowrap}.closing-section{padding-bottom:65px}

.purchase-cta{text-decoration:none}.edit-toggle[hidden]{display:none!important}
