:root{
--cream:#fbf5ef;--paper:#fffaf6;--rose:#d5aaa0;--rose2:#b78379;--wine:#785a52;
--ink:#65504a;--line:#d9c6bb;--serif:"Cormorant Garamond",Georgia,serif;
--script:"Parisienne",cursive;--sans:Montserrat,Arial,sans-serif
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#eee4de;color:var(--ink);font-family:var(--sans);font-weight:300}
button,a,input,select{font:inherit}.loader{position:fixed;inset:0;background:var(--cream);display:grid;place-items:center;z-index:2000;transition:.7s}.loader span{width:32px;height:32px;border:1px solid var(--rose2);border-right-color:transparent;border-radius:50%;animation:spin 1s linear infinite}.loader.done{opacity:0;pointer-events:none}@keyframes spin{to{transform:rotate(360deg)}}

.opening{position:fixed;inset:0;z-index:1500;display:grid;place-items:center;overflow:hidden;background:#d7c1b5;transition:opacity 1.2s,visibility 1.2s}.opening.closed{opacity:0;visibility:hidden;pointer-events:none}.opening-backdrop{position:absolute;inset:0;background:radial-gradient(circle at 50% 35%,#fffaf6 0,#d8c0b5 70%,#b89488 100%)}
.envelope-wrap{position:relative;width:min(560px,84vw);z-index:2}.envelope{position:relative;width:100%;aspect-ratio:1.52;perspective:1200px;filter:drop-shadow(0 35px 35px #5e40352c);transform-style:preserve-3d}
.envelope-body{position:absolute;inset:0;background:linear-gradient(145deg,#ead8cf,#c9a79c);border-radius:3px}.flap{position:absolute;inset:0;background:linear-gradient(155deg,#e9d6cd,#c39f94);clip-path:polygon(0 0,100% 0,50% 62%);transform-origin:top;transition:1.35s cubic-bezier(.2,.8,.2,1);z-index:6}.pocket{position:absolute;inset:0;background:linear-gradient(155deg,#efded6,#d1b0a4);clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);z-index:7}
.letter{position:absolute;z-index:5;left:8%;right:8%;top:6%;height:80%;background:var(--paper);display:grid;grid-template-columns:36% 64%;align-items:center;gap:10px;padding:20px;box-shadow:0 12px 25px #62463a25;transition:1.35s cubic-bezier(.2,.8,.2,1)}.letter img{width:100%;height:100%;object-fit:cover}.letter>div{text-align:center}.letter small{letter-spacing:4px;font-size:8px}.letter h2{font:44px var(--script);font-weight:400;color:var(--wine);margin:8px 0}.letter h2 i{font-size:.65em}.letter p{font-size:8px;letter-spacing:3px}.seal{position:absolute;z-index:9;left:50%;top:57%;transform:translate(-50%,-50%);width:64px;height:64px;border:1px solid #fff;border-radius:50%;background:var(--wine);color:#fff;font-size:26px;box-shadow:0 8px 18px #4e332c44;cursor:pointer;transition:.5s}.envelope.open .flap{transform:rotateX(-180deg)}.envelope.open .letter{transform:translateY(-68%);z-index:10}.envelope.open .seal{opacity:0;transform:translate(-50%,-50%) scale(1.5)}.open-hint{text-align:center;font-size:9px;letter-spacing:3px;text-transform:uppercase;margin:20px 0 0}

.topbar{position:fixed;z-index:1000;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;opacity:0;transition:1s;pointer-events:none}.topbar.show{opacity:1}.topbar button,.topbar a{pointer-events:auto;color:white;text-shadow:0 2px 10px #0008;background:transparent;border:0;text-decoration:none;font-size:10px;letter-spacing:2px;cursor:pointer}

.site-locked{visibility:hidden}.site-locked.live{visibility:visible}.hero{position:relative;height:100svh;min-height:650px;overflow:hidden;color:#fff}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,#2c1c168f 0%,#2c1c1638 58%,transparent),linear-gradient(0deg,#24151055,transparent 50%)}.hero-content{position:absolute;z-index:2;left:9%;top:31%;width:min(520px,52vw);text-align:center}.kicker{font-size:10px;letter-spacing:5px}.hero h1{font:clamp(70px,8vw,116px) var(--script);font-weight:400;margin:18px 0 10px;white-space:nowrap}.hero-content>p{font-size:10px;letter-spacing:6px}.ornament{font:22px var(--serif);margin:20px 0}.hero-content>small{font-size:9px;letter-spacing:4px}.discover{margin-top:55px;font-size:8px;letter-spacing:3px}.discover b{display:block;font-size:18px;margin-top:8px}

.section-light{background:var(--cream)}.intro{display:grid;grid-template-columns:24% 38% 18% 20%;min-height:350px;align-items:center;position:relative;overflow:hidden}.intro-photo{height:100%;min-height:350px}.intro-photo img{width:100%;height:100%;object-fit:cover}.intro-copy{text-align:center;padding:30px}.intro-copy p,blockquote{font:15px/1.65 var(--serif)}.signature{font:38px var(--script);margin-top:22px}.intro-date{border-left:1px solid var(--line);border-right:1px solid var(--line);height:190px;display:grid;place-content:center;text-align:center;gap:4px;font-family:var(--serif)}.intro-date span,.intro-date small,.intro-date em{font-family:var(--sans);font-size:9px;letter-spacing:4px;font-style:normal}.intro-date strong{font-size:54px;font-weight:500}.intro-date em{margin-top:12px}.intro blockquote{text-align:center;margin:0;padding:25px}

.countdown{height:210px;position:relative;display:grid;place-items:center;overflow:hidden;color:white}.countdown>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:left center;filter:saturate(.85)}.countdown-shade{position:absolute;inset:0;background:#56413896}.countdown-content{position:relative;text-align:center}.clock{display:flex;gap:28px;margin-top:18px}.clock div{width:102px;height:102px;border:1px solid #fff9;border-radius:50%;display:grid;place-content:center}.clock b{font:38px var(--serif);font-weight:400}.clock small{font-size:7px;letter-spacing:2px}

.agenda{text-align:center;padding:35px 6%}.agenda-grid{display:grid;grid-template-columns:repeat(5,1fr);margin-top:25px}.agenda article{padding:10px 18px;border-right:1px solid var(--line)}.agenda article:last-child{border:0}.agenda i{display:block;font:26px var(--serif);color:var(--rose2)}.agenda b,.agenda span{display:block;font-size:9px;margin-top:9px}.agenda span{color:#826d66}

.gallery{position:relative;display:grid;grid-template-columns:1fr 2.8fr 1fr;min-height:230px;background:var(--cream);overflow:hidden}.gallery-intro{display:grid;place-content:center;text-align:center;padding:25px;z-index:2}.gallery-intro p{font:16px/1.4 var(--serif)}.gallery-intro button{border:1px solid var(--rose2);background:transparent;border-radius:22px;padding:10px 16px;font-size:7px;letter-spacing:2px;color:var(--wine);cursor:pointer}.gallery-track{display:grid;grid-template-columns:repeat(4,1fr);min-width:0}.gallery-track figure{margin:0;position:relative;min-width:0;overflow:hidden}.gallery-track img{width:100%;height:100%;min-height:230px;object-fit:cover;transition:transform 1s}.gallery-track figure:hover img{transform:scale(1.06)}.gallery-track figcaption{position:absolute;bottom:10px;left:12px;color:white;font-size:8px}.gallery-arrow{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:50%;background:#fff;color:var(--wine);font-size:28px;cursor:pointer}.gallery-arrow.prev{left:10px}.gallery-arrow.next{right:10px}

.details{display:grid;grid-template-columns:1fr 1fr 1fr;min-height:240px}.dress,.place{display:grid;place-content:center;text-align:center;padding:35px;border-right:1px solid var(--line)}.swatches{display:flex;justify-content:center;gap:8px;margin:15px}.swatches i{width:21px;height:21px;border-radius:50%;background:#e7c8c0}.swatches i:nth-child(2){background:#bd9086}.swatches i:nth-child(3){background:#9e736b}.swatches i:nth-child(4){background:#aaa48f}.swatches i:nth-child(5){background:#787766}.dress h3,.place h3{font:20px var(--serif);font-weight:500;margin:4px}.dress p,.place p{font-size:10px;line-height:1.6}.place-icon{font:30px var(--serif);margin-bottom:4px}.place a{display:inline-block;margin:10px auto 0;padding:9px 17px;border:1px solid var(--rose2);border-radius:20px;text-decoration:none;color:var(--wine);font-size:7px;letter-spacing:2px}.location-photo{margin:0;min-height:240px}.location-photo img{width:100%;height:100%;object-fit:cover}

.rsvp{position:relative;display:grid;grid-template-columns:38% 62%;align-items:center;min-height:230px;padding:40px 10%;background:#f9f0ea;overflow:hidden}.rsvp-deco{position:absolute;right:0;top:0;bottom:0;width:17%;opacity:.28}.rsvp-deco img{width:100%;height:100%;object-fit:cover}.rsvp-title{z-index:1;text-align:center}.rsvp-title p{font:15px/1.5 var(--serif)}#rsvpForm{z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:10px}.rsvp input,.rsvp select{width:100%;border:1px solid #cdb5aa;border-radius:22px;background:#fff8f4;padding:12px 15px;color:var(--ink);outline:0;font-size:9px}.rsvp button{grid-column:2;border:0;border-radius:22px;background:var(--rose2);color:white;padding:13px;font-size:8px;letter-spacing:2px;cursor:pointer}.rsvp output{grid-column:1/-1;text-align:center;font-size:9px}

.ticket{padding:55px 20px;background:#eee4de}.ticket-card{max-width:680px;margin:auto;background:#fffaf6;border:1px solid var(--line);box-shadow:0 20px 45px #6a4b4120}.ticket-head,.ticket-foot{display:flex;justify-content:space-between;padding:12px 18px;border-bottom:1px dashed var(--line);font-size:8px;letter-spacing:3px}.ticket-foot{border:0;border-top:1px dashed var(--line);letter-spacing:1px}.ticket-main{display:flex;justify-content:space-between;align-items:center;padding:28px}.ticket-main small,.ticket-main span{display:block;font-size:7px;letter-spacing:2px}.ticket-main strong{display:block;font:34px var(--script);font-weight:400;color:var(--wine);margin:6px 0}.ticket-code{border:1px solid var(--wine);padding:18px 14px;letter-spacing:3px;font-size:9px}.ticket-card b{font-size:16px;color:var(--rose2)}

footer{text-align:center;background:var(--cream);padding:28px;font-size:8px;letter-spacing:3px;border-top:1px solid var(--line)}

.modal{position:fixed;inset:0;background:#211815ee;z-index:1800;display:none;padding:60px 30px;overflow:auto}.modal.show{display:block}.modal>button{position:fixed;right:20px;top:15px;border:0;background:none;color:white;font-size:36px;cursor:pointer}.modal-grid{max-width:1050px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-grid img{width:100%;display:block}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}

@media(max-width:900px){
.hero-content{left:6%;width:88%;top:31%}.hero h1{font-size:70px}
.intro{grid-template-columns:1fr;min-height:auto}.intro-photo{height:240px;min-height:240px}.intro-copy{padding:45px 25px}.intro-date{border:0;border-block:1px solid var(--line);height:150px}.intro blockquote{padding:35px}
.countdown{height:220px}.clock{gap:7px}.clock div{width:76px;height:76px}.clock b{font-size:29px}
.agenda-grid{grid-template-columns:1fr 1fr}.agenda article{border-bottom:1px solid var(--line)}.agenda article:nth-child(2n){border-right:0}
.gallery{grid-template-columns:1fr}.gallery-intro{padding:35px}.gallery-track{grid-template-columns:1fr 1fr}.gallery-track figure{min-height:180px}.gallery-arrow.prev{left:8px}.gallery-arrow.next{right:8px}
.details{grid-template-columns:1fr}.dress,.place{border-right:0;border-bottom:1px solid var(--line)}.location-photo{height:230px}
.rsvp{grid-template-columns:1fr;padding:60px 7%}.rsvp-title{margin-bottom:25px}#rsvpForm{grid-template-columns:1fr}.rsvp button{grid-column:1}
.ticket-main{gap:18px}.letter{grid-template-columns:32% 68%}.letter h2{font-size:35px}
}
@media(max-width:520px){
.topbar{left:15px;right:15px}.topbar button span{display:none}
.envelope-wrap{width:90vw}.letter{padding:12px;grid-template-columns:30% 70%}.letter h2{font-size:31px}.letter small{font-size:6px}.letter p{font-size:6px}
.hero{min-height:620px}.hero-photo{object-position:58% center}.hero-content{top:33%}.hero h1{font-size:61px}.hero-content>p{letter-spacing:4px;font-size:8px}
.clock{gap:4px}.clock div{width:69px;height:69px}.clock b{font-size:25px}.clock small{font-size:6px}
.gallery-track{grid-template-columns:1fr 1fr}.gallery-track img{min-height:150px}.gallery-intro p{font-size:15px}
.ticket-main{padding:22px;display:block}.ticket-code{display:inline-block;margin-top:20px}
.modal{padding:55px 14px}.modal-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
