:root{--ink:#120a13;--wine:#3b142a;--rose:#a64d6f;--blush:#ead2d7;--cream:#f7f1ea;--gold:#d7b07a;--white:#fffaf6;--serif:'Cormorant Garamond',serif;--sans:'Inter',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);overflow-x:hidden}a{color:inherit;text-decoration:none}img{display:block;width:100%;height:100%;object-fit:cover}.grain{position:fixed;inset:0;pointer-events:none;z-index:90;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}.section-pad{padding:120px 7vw}.kicker,.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.26em;font-weight:600}.kicker{color:var(--rose)}.light{color:var(--blush)}h1,h2,h3,p{margin-top:0}h2{font-family:var(--serif);font-size:clamp(2.7rem,6vw,6.2rem);font-weight:400;line-height:.92;letter-spacing:-.03em}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 24px;border:1px solid;border-radius:999px;font-size:.73rem;text-transform:uppercase;letter-spacing:.16em;transition:.35s}.btn:hover{transform:translateY(-3px)}.btn-light{color:#fff;border-color:#ffffff80;background:#ffffff12;backdrop-filter:blur(8px)}.btn-gold{background:var(--gold);border-color:var(--gold);color:var(--ink);cursor:pointer}.hero{height:100svh;min-height:720px;position:relative;display:grid;place-items:center;color:white;overflow:hidden;background:#180c14}.hero-bg,.count-bg,.finale-bg{position:absolute;inset:-9%;background-size:cover;background-position:center;will-change:transform}.hero-bg{background-image:url('https://images.pexels.com/photos/18004391/pexels-photo-18004391.jpeg?cs=srgb&dl=pexels-juliano-astc-1623739-18004391.jpg&fm=jpg');filter:saturate(.75) contrast(1.04)}.hero-vignette{position:absolute;inset:0;background:linear-gradient(90deg,#110813cc 0%,#160a1538 48%,#1108139c 100%),linear-gradient(0deg,#100812bd 0%,transparent 46%,#10081287 100%)}.nav{position:absolute;z-index:10;top:0;left:0;right:0;padding:28px 5vw;display:flex;justify-content:space-between;align-items:center}.monogram{width:44px;height:44px;border:1px solid #ffffff80;border-radius:50%;display:grid;place-items:center;font:italic 28px var(--serif)}.nav-links{display:flex;gap:30px;font-size:.7rem;text-transform:uppercase;letter-spacing:.16em}.hero-content{position:relative;z-index:4;text-align:center;width:min(960px,88vw)}.hero-content h1{font-family:var(--serif);font-weight:400;line-height:.72;margin:25px 0 34px;text-shadow:0 20px 60px #000}.hero-content h1 span{display:block;font-size:clamp(5rem,15vw,12rem);font-style:italic}.hero-content h1 em{font-size:clamp(2rem,6vw,4.8rem);letter-spacing:.45em;font-style:normal;margin-left:.45em}.hero-copy{max-width:590px;margin:0 auto 30px;line-height:1.8;color:#f8edf1}.hero-date{position:absolute;z-index:4;left:5vw;bottom:7vh;display:flex;align-items:center;gap:10px;writing-mode:vertical-rl}.hero-date strong{font:300 2rem var(--serif)}.hero-date span{font-size:.65rem;letter-spacing:.17em}.scroll-cue{position:absolute;z-index:4;right:5vw;bottom:7vh;font-size:.62rem;letter-spacing:.17em;text-transform:uppercase;display:flex;align-items:center;gap:10px}.scroll-cue span{width:52px;height:1px;background:#fff8;position:relative;overflow:hidden}.scroll-cue span:after{content:'';position:absolute;width:22px;height:1px;background:#fff;animation:lineMove 2s infinite}@keyframes lineMove{from{left:-22px}to{left:52px}}.intro{position:relative;overflow:hidden}.split{display:grid;grid-template-columns:1fr 1fr;gap:9vw;align-items:center;max-width:1300px;margin:auto}.portrait-wrap{height:720px;position:relative;transform-style:preserve-3d}.portrait-wrap img{border-radius:44% 44% 5% 5% / 20% 20% 5% 5%;filter:saturate(.7)}.frame-line{position:absolute;inset:20px -20px -20px 20px;border:1px solid #a64d6f66;border-radius:44% 44% 5% 5% / 20% 20% 5% 5%;z-index:-1}.photo-tag{position:absolute;right:-30px;bottom:70px;background:var(--cream);padding:12px 16px;text-transform:uppercase;font-size:.58rem;letter-spacing:.2em}.intro-copy p{line-height:1.9;color:#4d3a44;max-width:620px}.script{font:italic 1.7rem/1.35 var(--serif)!important;color:var(--wine)!important;margin-top:32px!important}.floating-orb{position:absolute;border-radius:50%;filter:blur(1px);opacity:.65;animation:float 8s ease-in-out infinite}.orb-one{width:170px;height:170px;background:#d9a8b5;right:-60px;top:20%}.orb-two{width:80px;height:80px;background:#e4c18f;left:4vw;bottom:8%;animation-delay:-3s}@keyframes float{50%{transform:translateY(-24px) translateX(12px)}}.countdown-section{height:82vh;min-height:630px;position:relative;display:grid;place-items:center;color:white;overflow:hidden}.count-bg{background-image:url('https://images.pexels.com/photos/35688310/pexels-photo-35688310.jpeg?cs=srgb&dl=pexels-teodorapopa-35688310.jpg&fm=jpg');background-position:center 42%}.count-overlay{position:absolute;inset:0;background:#170913bd}.count-inner{position:relative;z-index:3;text-align:center;width:min(1000px,90vw)}.count-inner h2{margin:12px 0 60px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.countdown div{padding:26px 10px;border-top:1px solid #fff4;border-bottom:1px solid #fff4}.countdown strong{display:block;font:300 clamp(2.3rem,7vw,5.4rem) var(--serif)}.countdown span{font-size:.62rem;text-transform:uppercase;letter-spacing:.18em;color:#f2dfe5}.section-heading{max-width:1000px;margin-bottom:70px}.centered{text-align:center;margin-left:auto;margin-right:auto}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.detail-card{background:#fff8;padding:38px;min-height:290px;border:1px solid #4b1a3216;transition:.45s;position:relative;overflow:hidden}.detail-card:before{content:'';position:absolute;inset:auto -40% -60% auto;width:220px;height:220px;border-radius:50%;background:#d7b07a22;transition:.6s}.detail-card:hover{transform:translateY(-9px) rotateX(2deg);box-shadow:0 30px 70px #3d16321d}.detail-card:hover:before{transform:scale(1.5)}.detail-card .num{font:italic 2rem var(--serif);color:var(--gold)}.detail-card h3{font:500 2rem var(--serif);margin:45px 0 16px}.detail-card p{font-size:.82rem;line-height:1.7;color:#65525c}.detail-card a{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;color:var(--rose)}.dresscode{background:var(--wine);color:white;display:grid;grid-template-columns:.9fr 1.1fr;gap:8vw;align-items:center}.dress-copy p{color:#dac7cf;line-height:1.9;max-width:580px}.dress-image{height:700px;overflow:hidden;border-radius:2px}.dress-image img{filter:saturate(.78) brightness(.8)}.swatches{display:flex;gap:12px;margin-top:34px}.swatches i{width:36px;height:36px;border-radius:50%;border:1px solid #ffffff50}.swatches i:nth-child(1){background:#ead2d7}.swatches i:nth-child(2){background:#d7b07a}.swatches i:nth-child(3){background:#f3e6d7}.swatches i:nth-child(4){background:#522039}.swatches i:nth-child(5){background:#111}.traditions{background:#f5ece9}.tradition-track{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.tradition-card{background:#fff9;padding:34px;min-height:330px;border-bottom:3px solid var(--gold)}.tradition-card span{font:italic 5rem var(--serif);color:#b8819a55}.tradition-card h3{font:500 2.3rem var(--serif)}.tradition-card p{font-size:.82rem;line-height:1.75;color:#65505a}.timeline{background:var(--ink);color:white}.timeline-list{max-width:950px;margin-left:auto}.timeline-item{display:grid;grid-template-columns:110px 1fr;gap:30px;padding:28px 0;border-top:1px solid #ffffff20}.timeline-item time{font:italic 2rem var(--serif);color:var(--gold)}.timeline-item h3{font:500 1.9rem var(--serif);margin-bottom:8px}.timeline-item p{color:#cbbfc6;line-height:1.7}.gallery{overflow:hidden}.gallery-grid{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:16px;height:690px}.gallery-grid figure{margin:0;overflow:hidden}.gallery-grid img{transition:transform 1s ease;filter:saturate(.74)}.gallery-grid figure:hover img{transform:scale(1.05)}.g1{margin-top:80px!important;height:520px}.g2{height:680px}.g3{margin-top:150px!important;height:450px}.photo-note{text-align:center;margin-top:50px;font-size:.72rem;color:#7f6973}.gifts{background:#d8b6bf;display:grid;place-items:center}.gift-card{background:#fffaf1;padding:70px;max-width:850px;text-align:center;box-shadow:0 40px 90px #3d143129}.gift-card p:last-child{line-height:1.9;color:#644f59;max-width:650px;margin:auto}.rsvp{display:grid;grid-template-columns:.9fr 1.1fr;gap:9vw;background:var(--wine);color:white}.rsvp-copy p{color:#d9c8cf;line-height:1.9}.rsvp-form{display:grid;gap:20px}.rsvp-form label{font-size:.64rem;text-transform:uppercase;letter-spacing:.13em;color:#e4d5dc}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{width:100%;margin-top:9px;background:transparent;border:0;border-bottom:1px solid #ffffff4d;color:white;padding:12px 0;font:400 .9rem var(--sans);outline:none;border-radius:0}.rsvp-form select option{color:#111}.rsvp-form textarea{resize:vertical}.hidden{display:none}.finale{height:88vh;min-height:650px;position:relative;display:grid;place-items:center;overflow:hidden;color:white}.finale-bg{background-image:url('https://images.pexels.com/photos/8467357/pexels-photo-8467357.jpeg?cs=srgb&dl=pexels-davis-vidal-24041114-8467357.jpg&fm=jpg');background-position:center 45%;filter:saturate(.55)}.finale-overlay{position:absolute;inset:0;background:#140a13b8}.finale-copy{position:relative;z-index:2;text-align:center}.finale-copy h2{font-size:clamp(4rem,9vw,9rem);margin:15px 0 20px}.finale-copy p{font:italic 2rem var(--serif);letter-spacing:.2em}.finale-copy span{font-size:.62rem;letter-spacing:.25em;text-transform:uppercase}footer{background:#090508;color:#aaa;padding:25px 5vw;display:flex;justify-content:space-between;font-size:.58rem;letter-spacing:.16em;text-transform:uppercase}.music-toggle{position:fixed;right:22px;top:22px;z-index:100;border:1px solid #ffffff4d;background:#180c14b7;color:white;backdrop-filter:blur(12px);border-radius:999px;padding:10px 15px;display:flex;gap:8px;align-items:center;cursor:pointer;font-size:.65rem;letter-spacing:.08em}.music-icon.playing{animation:pulse 1.2s infinite}@keyframes pulse{50%{transform:scale(1.35)}}#sparkles{position:fixed;inset:0;pointer-events:none;z-index:80}.reveal,.reveal-left,.reveal-right{opacity:0;transition:1s cubic-bezier(.18,.78,.21,.99)}.reveal{transform:translateY(45px)}.reveal-left{transform:translateX(-55px)}.reveal-right{transform:translateX(55px)}.is-visible{opacity:1!important;transform:none!important}.delay-1{transition-delay:.1s}.delay-2{transition-delay:.22s}.delay-3{transition-delay:.34s}
@media(max-width:900px){.section-pad{padding:90px 6vw}.nav-links{display:none}.hero-date{display:none}.split,.dresscode,.rsvp{grid-template-columns:1fr}.portrait-wrap,.dress-image{height:560px}.detail-grid{grid-template-columns:1fr}.tradition-track{grid-template-columns:1fr 1fr}.gallery-grid{height:auto;grid-template-columns:1fr 1fr}.gallery-grid figure,.g1,.g2,.g3{height:430px!important;margin:0!important}.g2{grid-row:span 2;height:876px!important}.countdown strong{font-size:3rem}.gift-card{padding:46px 28px}}
@media(max-width:560px){.hero{min-height:680px}.hero-content h1 span{font-size:4.7rem}.hero-content h1 em{font-size:1.65rem}.scroll-cue{right:auto;left:6vw}.countdown{grid-template-columns:1fr 1fr}.tradition-track,.gallery-grid{grid-template-columns:1fr}.gallery-grid figure,.g1,.g2,.g3{height:420px!important}.timeline-item{grid-template-columns:70px 1fr;gap:15px}.section-pad{padding:78px 6vw}.portrait-wrap,.dress-image{height:500px}.music-toggle{top:auto;bottom:18px}.finale{min-height:600px}footer{gap:20px;flex-direction:column}}

/* Cinematic invitation opening and embedded soundtrack */
body.invitation-locked{overflow:hidden}
.invitation-opening{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;color:#fff;text-align:center;background:radial-gradient(circle at 50% 42%,#5b2848 0%,#24101e 42%,#0b050a 100%);transition:opacity .9s ease,visibility .9s ease}
.invitation-opening.is-opening{opacity:0;visibility:hidden;pointer-events:none}
.opening-glow{position:absolute;width:min(620px,85vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#e7c89624 0%,#d996b514 38%,transparent 72%);animation:openingBreath 4s ease-in-out infinite}
.opening-content{position:relative;z-index:2;width:min(580px,92vw)}
.opening-eyebrow{font-size:.66rem;text-transform:uppercase;letter-spacing:.28em;color:#ead5df;margin-bottom:28px}
.opening-monogram{width:86px;height:86px;margin:0 auto 26px;border:1px solid #eed9bc88;border-radius:50%;display:grid;place-items:center;font:italic 54px var(--serif);box-shadow:0 0 60px #e4b87c22;animation:openingFloat 4s ease-in-out infinite}
.opening-content h2{font-size:clamp(3.3rem,10vw,7rem);margin:0 0 18px;font-style:italic;text-shadow:0 20px 50px #0008}
.opening-content>p:not(.opening-eyebrow){max-width:470px;margin:0 auto 30px;color:#eadde3;line-height:1.8;font-size:.92rem}
.opening-button{min-width:210px;min-height:54px;border:1px solid #f3dfbf;background:#f1d8ae;color:#211019;border-radius:999px;padding:0 24px;font:.65rem var(--sans);font-weight:600;text-transform:uppercase;letter-spacing:.18em;cursor:pointer;transition:transform .3s,box-shadow .3s}
.opening-button:hover{transform:translateY(-3px);box-shadow:0 16px 45px #0005}
.opening-note{display:block;margin-top:18px;font-size:.58rem;text-transform:uppercase;letter-spacing:.12em;color:#cbb4bf}
@keyframes openingBreath{50%{transform:scale(1.08);opacity:.72}}
@keyframes openingFloat{50%{transform:translateY(-8px)}}
@media(max-width:560px){.opening-content h2{font-size:3.7rem}.opening-note{line-height:1.6}.opening-monogram{width:74px;height:74px;font-size:46px}}
@media(prefers-reduced-motion:reduce){.opening-glow,.opening-monogram{animation:none}.invitation-opening{transition:none}}
