:root{--ink:#625b55;--paper:#faf8f5;--wine:#542432;--rose:#ae858c;--line:#d6c6c6;--olive:#93767c;--blue:#bc9ca0}
body{background:var(--paper);color:var(--ink);font-size:14px;line-height:1.8}
.opening-stage{height:100svh;min-height:600px;background:#f3efe9}
.opening-media{object-fit:cover;object-position:center}
.opening-video{z-index:2}
.closed-frame{z-index:2}
[data-phase='playing'] .closed-frame{visibility:hidden}
[data-phase='open'] .opening-video{opacity:0}
.open-invitation:disabled{pointer-events:none}
.opening-hint{bottom:7%;font:italic 16px/1.4 var(--display);letter-spacing:.025em;text-shadow:0 1px 8px #fff;width:auto;min-width:150px;background:#faf8f5d9;border:1px solid #ffffffa0;border-radius:50px;padding:10px 24px}
.hero-copy{top:17%;width:66%;max-width:500px}
.hero-copy h1{font:400 clamp(66px,13vw,100px)/.95 var(--script);margin:24px 0 28px}
.hero-copy h1>i{font:italic 23px/1 var(--display);margin:15px 0;color:inherit}
.hero-copy .eyebrow{font:18px/1.25 var(--display);letter-spacing:0;max-width:150px;margin:auto}
.date{font:20px/1.4 var(--display);letter-spacing:.04em}
.hero-villa{display:block;object-fit:contain;width:220px;max-width:100%;height:108px;margin:25px auto 6px}
.hero-place{font:15px/1.6 var(--display);letter-spacing:.03em}
.discover{border:0;background:transparent;box-shadow:none;bottom:24px;font-size:9px;letter-spacing:.16em}
.skip-opening{right:auto;left:20px;border-radius:30px;min-height:44px}
.language-switch,.music-toggle{background:#faf8f0e8;border-color:#bca7a766}.music-bars i{background:var(--wine)}
#invitation{background:var(--paper);background-image:none}
.details-nav{max-width:none;padding:22px 20px;border-bottom:1px solid #d4c7c34d;font-size:10px;gap:22px}
.details-nav a:first-child{font:32px var(--script);margin-right:12px}
.details-nav a:hover,.text-link:hover{color:#aa7786}
section{max-width:none;padding:110px 28px;overflow:hidden}
h2{font-size:clamp(46px,5vw,64px);line-height:1.05;margin-bottom:28px}
h2 i,h3 i,.signature,.closing-signature,.closing-monogram,.little-date{color:inherit}
h2 i{font-style:normal}
.eyebrow{font-size:9px;letter-spacing:.18em;color:inherit}
.section-copy{max-width:540px}.section-copy>p:not(.eyebrow):not(.section-note){max-width:480px}
.section-note,.form-note,.demo-note{font-size:11px;line-height:1.7;color:#8a7479}
.button{min-height:48px;padding:13px 30px;background:var(--wine);border:1px solid #987882;border-radius:30px;letter-spacing:.15em;font-size:10px}
.button:hover{background:#70394a}.button.outline{color:var(--wine)}.button.outline:hover{background:#ede3e4}
.text-link{color:inherit;border-color:#bda5ac;font-size:11px}
.chapter-bow{display:block;width:150px;height:75px;margin:0 auto 25px}
.chapter-number{display:none}
.welcome-section{padding:80px 25px 100px}.welcome-scene{aspect-ratio:auto;width:min(100%,600px)}
.welcome-copy{position:relative;top:auto;left:auto;transform:none;width:100%}
.welcome-swans{display:block;width:190px;height:120px;margin:0 auto 25px}
.welcome-copy .eyebrow{font:25px/1.2 var(--display);letter-spacing:0;max-width:240px;margin:0 auto 28px}
.welcome-copy h2{font-size:44px}.welcome-copy>p:not(.eyebrow):not(.signature){font-size:14px;max-width:500px;margin-inline:auto;line-height:1.9}
.signature,.closing-signature{font:44px/1.5 var(--script);margin-top:26px}
.countdown-section{background:var(--wine);color:#faf6ef;padding:190px 30px 200px}
.countdown-section::before,.countdown-section::after,.travel-section::before,.travel-section::after,.rsvp-section::before{content:'';position:absolute;left:0;width:100%;height:200px;background:url('assets/couture-border.webp') center top/600px auto repeat-x;pointer-events:none;z-index:0}
.countdown-section::before,.travel-section::before,.rsvp-section::before{top:-2px}
.countdown-section::after,.travel-section::after{bottom:-2px;transform:rotate(180deg)}
.countdown-section .section-copy{padding:50px 24px;max-width:560px;border:1px solid #f4e7df55;border-radius:40% 40% 35% 35%/15% 15% 15% 15%}
.countdown-section .chapter-bow{width:165px;height:78px;margin-bottom:8px}
.countdown-section .eyebrow{display:none}.countdown-section h2{font-size:48px}
.countdown{gap:0;margin:35px auto 26px;max-width:420px}.countdown>div{border:0;border-radius:0;padding:5px 0}.countdown>div::before{display:none}
.countdown b{font-size:52px}.countdown small{font-size:8px;letter-spacing:.08em}.little-date{font:italic 20px var(--display)}
.venue-section{padding:95px 25px 80px}.venue-section h2{font-size:55px}.location-line{font-size:10px}
.venue-medallion{width:min(100%,390px);height:300px;margin:45px auto 35px;padding:55px 28px;background:url('assets/couture-frame.webp') center/100% 100% no-repeat;display:grid;place-items:center}
.venue-medallion img{width:100%;height:180px;object-fit:contain}.section-actions{gap:15px;margin-top:30px}
.program-section{padding-top:240px;padding-bottom:70px}.pearl-garland{position:absolute;top:0;left:50%;transform:translateX(-50%);width:max(100%,700px);height:220px;object-fit:cover;object-position:top;pointer-events:none}
.program-heading h2{font-size:58px}.program-heading .chapter-bow{display:none}
.event-list{max-width:630px;margin:45px auto 20px}.event-list::before{background:#d6c5cb;left:180px}
.event-list li{grid-template-columns:92px 65px 1fr;gap:15px;padding:24px 0;min-height:140px}
.event-list li::before{background:#bc9da6;left:178px;border-radius:50%;width:5px;height:5px}
.event-list time{font-size:26px}
.event-list h3{font:11px/1.6 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase}.event-list p{font-size:13px;line-height:1.8}
.program-section::after{display:none}
.dress-section{background:#f3eeed;padding:70px 20px 85px}
.dress-sheet{position:relative;max-width:640px;padding:100px 90px 95px;background:transparent;border:0;border-radius:0;box-shadow:none}
.dress-sheet::before{inset:0;border:0;border-radius:0;background:url('assets/couture-frame.webp') center/100% 100% no-repeat;z-index:-1}
.dress-sheet h2{font-size:52px}.dress-sheet .eyebrow{font-size:9px}
.attire-drawing{width:155px;margin:20px auto 30px;color:#855362}
.palette{gap:18px;margin-top:28px}.palette span{width:30px;height:30px;outline-color:#bfa4a855}.palette span:nth-child(1){background:#929783}.palette span:nth-child(2){background:#b4a89f}.palette span:nth-child(3){background:#d8c8ab}.palette span:nth-child(4){background:#b88d97}
.travel-section{background:var(--wine);color:#faf4ef;padding:205px 25px 210px}
.travel-icon{display:block;width:210px;height:155px;fill:none;stroke:currentColor;stroke-width:1;margin:0 auto 25px}
.travel-section .section-copy+.section-copy{margin-top:30px}.travel-section .section-note{color:#d9c4ca}
.travel-section .button{border-color:#dfc7ce;color:#fff5ef}.travel-section .button:hover{background:#724354}
.transfer-times{margin-block:35px}.transfer-times::before{color:#c3a4af}.transfer-times dt{font-size:35px}
.stay-section{padding:95px 25px 100px}.stay-list{max-width:980px;gap:38px;margin-top:65px}
.stay-list article{background:#eee5e7;border:1px solid #bda6ac;padding:65px 36px 40px;clip-path:polygon(20px 0,calc(100% - 20px) 0,100% 20px,100% calc(100% - 20px),calc(100% - 20px) 100%,20px 100%,0 calc(100% - 20px),0 20px)}
.stay-list article::before{border-color:#ceb9c0;inset:7px}
.roman{position:relative;display:grid;place-items:center;left:auto;top:auto;transform:none;background:url('assets/generated/stay-medallion.webp') center/contain no-repeat;width:190px;height:125px;margin:-40px auto 25px;font:italic 29px var(--display);color:#997684}
.stay-list h3{font-size:39px}.stay-caption{font-size:8px;color:#977780}.stay-list article>p:not(.stay-caption){font-size:13px}.stay-list .text-link{font-size:10px}
.gifts-section{background:#f4eeef;padding:85px 28px 105px}.gift-icon{display:block;width:160px;height:115px;fill:none;stroke:currentColor;margin:0 auto 30px}.gift-composition{display:block}.gift-composition h2{font-size:52px}.small-flourish{color:#b3939e}
.rsvp-section{background:var(--wine);color:#faf4ef;padding:200px 25px 85px}.reply-sheet{border:0;background:transparent;padding:0;max-width:600px}.reply-sheet::before,.reply-sheet::after{display:none}
.reply-sheet h2{font-size:62px}.reply-sheet .eyebrow{color:#d6b5c0}.reply-sheet .section-copy>p:not(.eyebrow){font-size:14px}
.rsvp-section form{max-width:500px;margin-top:45px}.rsvp-section label,.rsvp-section legend{font-size:13px}
.rsvp-section input,.rsvp-section select,.rsvp-section textarea{color:#fff6f0;border:1px solid #ad879488;border-radius:5px;font-size:16px;padding:12px;background:#ffffff03}
.rsvp-section input::placeholder,.rsvp-section textarea::placeholder{color:#c7a6b1}
.rsvp-section input[type='checkbox'],.rsvp-section input[type='radio']{accent-color:#b98b9a}
.rsvp-section .button{background:transparent;color:#fff4ee;border-color:#c9aab4;margin-top:18px}.rsvp-section .button:hover{background:#714153}
.rsvp-section .form-note,.rsvp-section .section-note{color:#d6b9c4}.person-reply{border-color:#9f7282}.person-reply select{background:#643444;color:#fff4ec}
.closing-section{position:relative;background:var(--paper);color:var(--ink);padding:150px 25px 80px;text-align:center}
.closing-section::before{content:'';position:absolute;top:-1px;left:0;right:0;height:200px;background:url('assets/couture-border.webp') center top/600px auto repeat-x,linear-gradient(var(--wine) 0 15%,transparent 15%)}
.closing-monogram{font:56px var(--script);margin-bottom:25px}.closing-signature{font-size:48px}.closing-section>p:not(.demo-note){font-size:35px}.closing-section small{font-size:9px;letter-spacing:.1em}.demo-note{font-size:10px;max-width:500px;margin:30px auto 0;color:#9a7d86}
@media(min-aspect-ratio:1/1){
 .opening-media{object-fit:cover}.hero-copy{top:11%;width:50%;max-width:470px}.hero-copy h1{font-size:clamp(60px,11vh,100px);margin:20px 0}.hero-copy .eyebrow{font-size:18px}.hero-villa{height:95px;margin-top:18px}.hero-place{font-size:16px}
}
@media(max-width:600px){
 body{font-size:13px}.opening-stage{min-height:600px}.hero-copy{top:18%;width:64%}.hero-copy h1{font-size:74px}.hero-copy .eyebrow{font-size:17px}.hero-villa{width:190px;height:95px;margin-top:25px}.hero-place{font-size:14px}.date{font-size:20px}
 section{padding:80px 24px}h2{font-size:45px}.details-nav{gap:15px;padding:20px 12px;font-size:9px}.details-nav a:first-child{width:100%;margin:0}
 .welcome-section{padding:65px 30px 85px}.welcome-copy h2{font-size:40px}.welcome-copy .eyebrow{font-size:25px}.welcome-copy>p:not(.eyebrow):not(.signature){font-size:13px}.welcome-swans{width:165px;height:110px}.signature{font-size:40px}
 .countdown-section{padding:165px 20px 170px}.countdown-section .section-copy{padding:30px 0;border-radius:35% 35% 30% 30%/10% 10% 10% 10%}.countdown-section h2{font-size:40px}.countdown b{font-size:43px}.countdown small{font-size:7px}.countdown-section .chapter-bow{width:140px;height:65px}
 .countdown-section::before,.countdown-section::after,.travel-section::before,.travel-section::after,.rsvp-section::before{height:160px;background-size:480px auto}
 .venue-section h2{font-size:45px}.venue-medallion{width:290px;height:260px;padding:45px 25px;margin-block:35px}.venue-medallion img{height:160px}
 .program-section{padding:170px 22px 65px}.pearl-garland{width:600px;height:160px}.program-heading h2{font-size:46px}.event-list{margin-top:35px}.event-list li{grid-template-columns:60px 54px 1fr;gap:9px;padding:22px 0;min-height:155px}.event-list::before{left:130px}.event-list li::before{left:128px;top:34px}.event-list time{font-size:23px}.event-list li>div{padding-left:12px}.event-list h3{font-size:9px;letter-spacing:.09em}.event-list p{font-size:12px}
 .dress-section{padding:45px 10px 60px}.dress-sheet{padding:75px 48px 85px}.dress-sheet h2{font-size:40px}.dress-sheet .section-copy>p:not(.eyebrow):not(.section-note){font-size:12px}.dress-sheet .section-note{font-size:10px;padding-inline:10px}.attire-drawing{width:125px;margin:15px auto 25px}.palette{gap:15px}.palette span{width:25px;height:25px}
 .travel-section{padding:175px 25px 180px}.travel-icon{width:185px;height:140px}.travel-section h2{font-size:44px}.transfer-times dt{font-size:32px}
 .stay-section{padding:75px 25px}.stay-list{grid-template-columns:1fr;gap:45px;max-width:420px;margin-top:55px}.stay-list article{padding:60px 30px 35px}.stay-list h3{font-size:37px}
 .gifts-section{padding:70px 28px 85px}.gift-composition h2{font-size:42px}.rsvp-section{padding:175px 25px 75px}.reply-sheet h2{font-size:50px}.reply-sheet .section-copy>p:not(.eyebrow){font-size:13px}
 .closing-section{padding:145px 28px 70px}.closing-section::before{background-size:480px auto;height:160px}.closing-signature{font-size:42px}.closing-section>p:not(.demo-note){font-size:31px}.music-toggle{width:42px;min-height:42px;padding:10px}
}
@media(max-height:720px){.opening-stage{min-height:520px}.hero-copy{top:12%}.hero-copy h1{font-size:60px;margin-block:15px}.hero-villa{height:70px;margin-top:15px}.hero-copy .eyebrow{font-size:15px}.hero-place{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.discover{animation:none}.reveal{transition:none!important}}

/* All artistic motifs are original generated images; SVG is reserved for UI arrows. */
.generated-art{object-fit:contain;display:block;max-width:100%;height:auto}
.welcome-swans{width:210px;height:145px;margin:0 auto 24px}
.countdown-section .section-copy{border:0;border-radius:0;background:url('assets/generated/timer-ribbon.webp') center/100% 100% no-repeat;padding:85px 45px 80px;max-width:600px;min-height:440px;display:flex;flex-direction:column;justify-content:center}
.countdown-section .section-copy>p:last-child{margin-bottom:0}
.pearl-garland{width:min(1150px,115%);height:230px;object-fit:contain}
.event-list li{grid-template-columns:120px 65px 1fr;gap:18px;min-height:165px}
.event-list::before{left:213px}.event-list li::before{left:211px}
.event-art{grid-column:1;grid-row:1;width:120px;height:120px}
.banquet-scene{width:min(100%,680px);height:300px;margin:40px auto 0}
.attire-drawing{width:180px;margin:20px auto 30px}.attire-drawing img{width:100%;height:240px}
.travel-icon{width:285px;height:200px;margin:0 auto 30px}
.gift-icon{width:190px;height:150px;margin:0 auto 30px}
.rsvp-pendant{width:160px;height:200px;margin:0 auto 35px}
.closing-rings{width:150px;height:115px;margin:0 auto 25px}
.roman{font-size:24px}
@media(max-width:600px){
 .welcome-swans{width:190px;height:130px}
 .countdown-section .section-copy{min-height:350px;padding:55px 22px 60px}
 .countdown-section h2{font-size:37px}.countdown{margin-block:27px 20px}.countdown b{font-size:37px}
 .countdown small{font-size:6px}.little-date{font-size:18px}
 .program-section{padding-top:155px}.pearl-garland{width:115%;height:140px}
 .event-list li{grid-template-columns:78px 48px 1fr;gap:10px;padding:22px 0;min-height:165px}
 .event-list::before{left:141px}.event-list li::before{left:139px}
 .event-art{width:78px;height:105px}.event-list time{font-size:21px}.event-list li>div{padding-left:10px}
 .event-list p{font-size:11px}.event-list h3{font-size:9px;letter-spacing:.08em}
 .banquet-scene{height:200px;margin-top:25px}
 .attire-drawing{width:160px}.attire-drawing img{height:220px}
 .travel-icon{width:265px;height:185px}.gift-icon{width:170px;height:130px}
 .rsvp-pendant{width:135px;height:180px}.roman{width:175px;height:115px;font-size:22px}
}

.details-nav{text-align:center}.welcome-copy .eyebrow{text-transform:lowercase}.welcome-copy .eyebrow::first-letter{text-transform:uppercase}
.stay-list h3 i{color:inherit}.dress-sheet .section-note{max-width:220px}
@media(max-width:600px){.dress-sheet{padding-bottom:110px}.dress-sheet .section-note{max-width:195px;padding-inline:0}}

/* Hold the actual last movie frame, so the lace surface never changes. */
.opening-video{transition:none}
.garden-frame{object-fit:cover}
.opening-stage[data-phase='open'][data-completed='true'] .opening-video{opacity:1}
.hero-copy{animation:reveal-names .8s ease both}
@media(prefers-reduced-motion:reduce){.hero-copy{animation:none}}


/* Gentle type entrance and a quiet invitation to scroll. */
@media(prefers-reduced-motion:no-preference){
 [data-phase='open'] .hero-copy>*{animation:lace-copy-in 1.1s cubic-bezier(.22,.61,.36,1) both}
 [data-phase='open'] .hero-copy .eyebrow{animation-delay:.08s}
 [data-phase='open'] .hero-copy h1{animation-delay:.22s}
 [data-phase='open'] .hero-copy .date{animation-delay:.38s}
 [data-phase='open'] .hero-copy .hero-villa{animation-delay:.5s}
 [data-phase='open'] .hero-copy .hero-place{animation-delay:.62s}
 [data-phase='open'] .discover-arrow{animation:lace-scroll 2.8s ease-in-out 1.8s 3}
 .reveal-ready .reveal{translate:0 18px;transition:opacity 1s ease,translate 1.2s cubic-bezier(.22,.61,.36,1)}
 .reveal-ready .reveal.is-visible{translate:0 0}
 .reveal-ready .is-visible .generated-art{animation:lace-copy-in 1.3s ease both}
 .stay-list article:nth-child(2){transition-delay:.12s}
 .button{transition:background .25s,color .25s,translate .25s}
 .button:hover{translate:0 -2px}
}
@keyframes lace-copy-in{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes lace-scroll{0%,100%{translate:0 0}50%{translate:0 5px}}

/* Keep every raster decoration proportional; let copy determine its own space. */
img:not(.opening-media){object-fit:contain}
.hero-copy{top:20%;bottom:20%;width:58%;max-width:440px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.hero-copy .eyebrow{font:10px/1.6 Inter,sans-serif;letter-spacing:.14em;max-width:none;white-space:nowrap;margin:0}
.hero-copy h1{font-size:clamp(48px,12vw,80px);line-height:1;margin:18px 0}
.hero-copy h1>i{font:italic 17px/1.2 var(--display);margin:6px 0}
.hero-copy .date{font-size:16px;letter-spacing:.08em}
.hero-villa{width:145px;height:80px;margin:20px auto 8px;filter:grayscale(1);opacity:.72}
.hero-place{font:12px/1.5 var(--display);letter-spacing:.035em;margin:0;max-width:100%}
.discover{bottom:15%;font-size:8px;gap:10px;min-height:36px;padding:5px 12px}
.countdown-section .section-copy{background:none;padding:20px 0;min-height:0}
.venue-medallion{background:none;padding:0;width:min(100%,390px);height:auto;aspect-ratio:3/2}
.venue-medallion img{height:100%;width:100%;object-fit:contain}
.dress-sheet{padding:25px 28px;max-width:600px}
.dress-sheet::before{display:none}
.dress-sheet .section-note{max-width:340px}
.dress-section{padding:100px 24px;background:var(--paper)}
.roman{background:none;width:64px;height:64px;border:1px solid #bca9a8;border-radius:50%;margin:-30px auto 28px;color:var(--ink)}
.stay-list article{padding-top:65px}
.countdown-section::before,.countdown-section::after,.travel-section::before,.travel-section::after,.rsvp-section::before{background-image:url('assets/generated/floral-lace-edge.webp');background-size:600px auto;height:200px}
.closing-section::before{background-image:url('assets/generated/floral-lace-edge.webp'),linear-gradient(var(--wine) 0 15%,transparent 15%);background-size:600px auto;height:200px}
.dress-section::before,.dress-section::after{content:'';position:absolute;left:0;width:100%;height:110px;background:url('assets/generated/floral-lace-edge.webp') center top/440px auto repeat-x;pointer-events:none}
.dress-section::before{top:0}.dress-section::after{bottom:0;rotate:180deg}
@media(max-width:600px){
 .hero-copy{top:22%;bottom:21%;width:59%}
 .hero-copy h1{font-size:clamp(43px,14vw,62px);margin:15px 0}
 .hero-copy .eyebrow{font-size:8px;letter-spacing:.11em}
 .hero-copy h1>i{font-size:16px;margin:5px 0}
 .hero-copy .date{font-size:15px}
 .hero-villa{width:125px;height:68px;margin-top:18px}
 .hero-place{font-size:11px}
 .countdown-section{padding:155px 24px 165px}
 .countdown-section h2{font-size:36px}.countdown{max-width:340px}.countdown small{font-size:7px}
 .dress-sheet{padding:30px 4px}.dress-sheet .section-note{max-width:260px}
 .countdown-section::before,.countdown-section::after,.travel-section::before,.travel-section::after,.rsvp-section::before,.closing-section::before{background-size:440px auto;height:147px}
}
@media(min-aspect-ratio:1/1){.hero-copy{top:15%;bottom:16%;width:42%}.hero-copy h1{font-size:clamp(50px,10vh,82px)}.discover{bottom:7%}}
@media(max-height:650px){.hero-copy{top:18%;bottom:18%}.hero-copy h1{font-size:46px;margin:10px 0}.hero-villa{height:50px;margin-top:10px}.discover{bottom:10%}}
@media(prefers-reduced-motion:no-preference){
 .reveal-ready .reveal.is-visible .event-art{animation:lace-art-unfold 1.3s cubic-bezier(.2,.7,.3,1) both}
 .dress-sheet .attire-drawing,.banquet-scene,.travel-icon,.gift-icon,.rsvp-pendant,.closing-rings{transition:opacity 1s,translate 1.2s}
 .reveal-ready .art-reveal{opacity:0;translate:0 20px}
 .reveal-ready .art-reveal.is-visible{opacity:1;translate:0 0}
 .palette span{transition:scale .3s}.palette span:hover{scale:1.12}
}
@keyframes lace-art-unfold{from{opacity:0;scale:.95;translate:0 10px}to{opacity:1;scale:1;translate:0 0}}
.closing-section>p>i{color:inherit}

.venue-name{font:italic 32px/1.3 var(--display);margin:28px auto 12px}
#result:not(:empty){margin:24px 0 8px;padding:18px 22px;border:1px solid #d9c8c477;border-radius:12px;font-size:14px;line-height:1.6}
#reset-demo{color:inherit;display:block;margin:12px auto;cursor:pointer}
#result:focus{outline:2px solid #d9c8c4;outline-offset:4px}
