@font-face{font-family:Bodoni;src:url('assets/bodoni-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
:root{--navy:#13233e;--cream:#f4f0e7;--champagne:#c7b591;color-scheme:light;font-size:16px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--navy);font:400 18px/1.6 Georgia,serif;isolation:isolate}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit;cursor:pointer}button,a,input{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #827254;outline-offset:5px}h1,h2,p{margin-top:0}h1,h2{font-family:Bodoni,Georgia,serif;font-style:italic;font-weight:400;letter-spacing:-.035em;line-height:1.06}h2{font-size:clamp(46px,6vw,82px)}em{font-weight:400}.eyebrow{font-size:12px;line-height:1.8;letter-spacing:.2em;text-transform:uppercase;color:#76684f}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip-link{position:fixed;top:-100px;left:20px;z-index:100;padding:12px;background:var(--cream)}.skip-link:focus{top:10px}
.masthead{position:fixed;z-index:30;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:15px 5%;height:70px;background:#f4f0e7ed;backdrop-filter:blur(12px)}.monogram{font:italic 25px Bodoni,serif;letter-spacing:-1px}.monogram span{margin:0 5px;color:#927e58}.header-label{font-size:12px;letter-spacing:.15em}.languages{display:flex;gap:12px;align-items:center;font-size:12px}.languages button{font-size:12px;border:0;border-bottom:1px solid transparent;background:none;padding:8px 3px;opacity:.5}.languages button[aria-pressed=true]{opacity:1;border-color:var(--navy)}.languages>span{opacity:.3}.story-nav{position:fixed;z-index:20;right:12px;top:50%;display:flex;flex-direction:column;transform:translateY(-50%)}.story-nav a{width:22px;height:26px;display:grid;place-items:center}.story-nav a:after{content:'';width:3px;height:3px;border-radius:5px;background:#827254;opacity:.4;transition:height .5s}.story-nav a[aria-current]:after{height:17px;opacity:1}
.portrait-wings{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.wing{position:absolute;top:8%;height:92%;width:43vw;object-fit:cover;mix-blend-mode:multiply;opacity:.43;mask-image:linear-gradient(180deg,transparent,black 17%,black 80%,transparent);will-change:transform}.wing-margot{left:-3vw;transform:translateY(var(--wing-drift,0px))}.wing-alexandre{right:-3vw;transform:translateY(calc(-1 * var(--wing-drift,0px)))}
.hero-film{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:90px 0 64px;position:relative}.hero-player{height:calc(100svh - 154px);max-height:850px;aspect-ratio:9/16;max-width:94vw;overflow:hidden;box-shadow:0 18px 65px #13233e12}.hero-player video{display:block;width:100%;height:100%;object-fit:contain;background:var(--cream)}.hero-scroll{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:11px;letter-spacing:.19em}
.section{position:relative;padding:110px 21%;min-height:80svh;overflow:hidden}.scroll-scene{position:relative}.scene-sticky{height:100svh;min-height:620px;display:flex;align-items:center;justify-content:center;overflow:hidden}.js-motion .scene-sticky{position:sticky;top:0}.js-motion .opening{height:145svh}.opening-content{width:100%;padding:80px 18%;text-align:center;transform:translateY(var(--opening-y,0px)) scale(var(--opening-scale,1));opacity:var(--opening-opacity,1)}.opening h1{font-size:clamp(90px,12vw,174px);line-height:.94;margin:30px 0}.opening h1 span{display:block}.opening-names{font:italic clamp(30px,3.5vw,49px)/1.3 Bodoni,serif;margin-bottom:25px}.opening-names i{font-weight:400}.opening-location{font-size:12px;letter-spacing:.16em}.continue{position:absolute;bottom:38px;display:flex;align-items:center;gap:22px;font-size:11px;letter-spacing:.15em}.continue span:last-child{font-size:22px}
.destination{padding:0 15%}.js-motion .destination{height:145svh}.destination .scene-sticky{isolation:isolate}.destination video,.film-poster,.film-shade{position:absolute;inset:80px 0 50px;width:100%;height:calc(100% - 130px);object-fit:cover}.destination video{z-index:1}.film-poster{z-index:2;transition:opacity .8s}.film-poster img{width:100%;height:100%;object-fit:cover}.destination.playing .film-poster{opacity:0;pointer-events:none}.film-shade{z-index:3;background:linear-gradient(180deg,#f4f0e7da,transparent 70%,#f4f0e733)}.destination-copy{z-index:4;position:relative;align-self:flex-start;text-align:center;width:100%;padding:120px 4% 0;transform:translateY(var(--destination-y,0px)) scale(var(--destination-scale,1))}.destination h2{font-size:clamp(50px,8.8vw,120px);margin:20px 0 12px}.estate-name{font:italic clamp(26px,3vw,42px) Bodoni,serif}.film-control{position:absolute;bottom:68px;left:18px;z-index:6;border:0;background:#f4f0e7df;padding:10px 14px;display:flex;gap:12px;align-items:center;font-size:12px;min-height:44px}
.date-note{text-align:center;display:grid;place-items:center;min-height:65svh}.date-note h2{margin:20px 0}.date-time{font-size:27px}.date-time span{display:block;font-size:14px;color:#686762;margin-top:5px}.calendar-button{border:0;border-bottom:1px solid #13233e55;background:none;padding:14px 0;font-size:12px;letter-spacing:.12em;margin-top:15px}
.dress{text-align:center;min-height:85svh;padding-top:75px;padding-bottom:110px}.dress-copy{max-width:780px;margin:auto}.dress h2{font-size:clamp(46px,5.5vw,76px);margin:20px 0 0}.dress h2 em{display:block;color:#877354}.dress-art{margin:18px auto 34px;width:100%;max-width:660px}.dress-art img{display:block;width:100%;height:auto;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse at center,black 57%,transparent 77%)}.dress-art figcaption{display:grid;grid-template-columns:1fr 1fr;font-size:12px;letter-spacing:.18em;margin-top:-5%;padding:0 5%}.reserved{font-size:18px;line-height:1.6;max-width:440px;margin:auto}
.rsvp{display:flex;align-items:center;justify-content:center;min-height:90svh}.rsvp-inner{width:100%;max-width:780px}.rsvp h2{margin:20px 0 35px}.attendance{padding:0;border:0;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0}.attendance label{display:flex;gap:14px;align-items:center;border:1px solid #13233e40;background:#f4f0e7bb;padding:20px;cursor:pointer;transition:background .25s,color .25s}.attendance label:has(input:checked){background:var(--navy);color:var(--cream)}input[type=radio]{appearance:none;width:19px;height:19px;flex:none;border:1px solid #a58b60;border-radius:50%;margin:0}input[type=radio]:checked{background:var(--champagne);box-shadow:inset 0 0 0 4px var(--navy)}.reply-heading{font:italic 29px/1.4 Bodoni,serif;margin:30px 0 24px}.input-label{display:flex;flex-direction:column;gap:8px;font-size:16px}.input-label input{width:100%;background:#f4f0e7c9;color:var(--navy);border:1px solid #13233e40;border-radius:0;min-height:52px;padding:12px 14px;font-size:18px}.guest-counts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:23px}.send-button{background:var(--navy);color:var(--cream);border:0;padding:18px 25px;min-height:52px;font-size:12px;letter-spacing:.1em;margin-top:28px}.send-hint{font-size:14px;line-height:1.6;max-width:450px;margin:18px 0 0;color:#586070}.music-control{position:fixed;bottom:15px;right:15px;z-index:40;background:var(--cream);border:1px solid #13233e40;padding:12px 15px;font-size:12px}
.panorama{padding:100px 8% 130px;margin:0;min-height:100svh;display:flex;align-items:flex-start;justify-content:center;text-align:center}.panorama-image,.panorama-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.panorama-image{object-position:50% 65%}.panorama-shade{background:linear-gradient(180deg,#f4f0e7e8,#f4f0e733 50%,transparent 75%,#f4f0e7c9)}.panorama-copy{position:relative;max-width:900px;z-index:2}.panorama h2{font-size:clamp(50px,7vw,90px);margin:20px 0}.panorama footer{position:absolute;z-index:2;bottom:25px;left:5%;right:5%;display:flex;justify-content:space-between;gap:20px;font-size:12px;letter-spacing:.06em}.reveal{opacity:1}.js-motion .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s,transform 1s cubic-bezier(.22,.61,.36,1)}.js-motion .reveal.visible{opacity:1;transform:none}
@media(max-width:700px){.masthead{height:62px;padding:12px 6%}.header-label{display:none}.story-nav{right:0}.story-nav a{width:15px}.hero-film{padding:62px 0 45px;min-height:100svh;background:var(--cream)}.hero-player{height:calc(100svh - 107px);width:auto;max-width:100%;box-shadow:none}.hero-scroll{bottom:12px;font-size:10px}.portrait-wings{opacity:var(--portrait-entry,0)}.wing{width:65vw;height:80%;top:12%;opacity:.36}.wing-margot{left:-3vw;mask-image:linear-gradient(90deg,black 12%,#000a 30%,transparent 57%)}.wing-alexandre{right:-3vw;mask-image:linear-gradient(270deg,black 12%,#000a 30%,transparent 57%)}.opening-content{padding:90px 8%}.opening h1{font-size:clamp(76px,22vw,140px)}.opening-names{font-size:clamp(26px,7.7vw,42px)}.opening-location{max-width:240px;margin:auto;line-height:1.8}.continue{bottom:35px}.scene-sticky{min-height:600px}.js-motion .opening{height:125svh}.section{padding:90px 9%;min-height:70svh}.destination{padding:0 6%}.destination-copy{padding:130px 4% 0}.destination h2{font-size:clamp(43px,12vw,82px)}.estate-name{font-size:29px}.js-motion .destination{height:130svh}.date-note h2{font-size:50px}.dress{padding:75px 8% 100px}.dress h2{font-size:48px}.dress-art{width:115%;margin-left:-7.5%;margin-top:20px}.dress-art figcaption{font-size:11px}.reserved{font-size:17px;max-width:280px}.rsvp h2{font-size:49px}.attendance{grid-template-columns:1fr;gap:12px}.attendance label{font-size:16px;padding:18px}.panorama{min-height:100svh;padding:110px 8% 140px}.panorama h2{font-size:49px}.panorama footer{flex-direction:column;align-items:center;gap:12px}.music-label{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.scroll-scene{height:auto!important}.scene-sticky{position:relative!important}.opening-content,.destination-copy,.wing,.reveal{transform:none!important}.opening-content,.reveal{opacity:1!important}}

/* Controls sit below the film, without the native dark overlay. */
.reserved{color:#827258;font-size:16px}
.hero-player{overflow:visible;box-shadow:none;position:relative;height:calc(100svh - 205px)}
.hero-film{padding-bottom:115px}
.hero-player video{filter:none;opacity:1;box-shadow:0 18px 65px #13233e0c}
.opening-controls{height:53px;padding:7px 0 0;background:var(--cream)}
.opening-buttons{display:flex;justify-content:space-between;gap:12px}
.opening-buttons button{background:none;border:0;padding:5px 0;min-height:30px;font-size:12px;line-height:1.4}
#opening-seek{display:block;width:100%;margin:2px 0 0;height:14px;accent-color:#827258;cursor:pointer}
@media(max-width:700px){.hero-film{padding-bottom:98px}.hero-player{height:calc(100svh - 160px)}.reserved{font-size:15px}}

.opening-screen{position:relative;width:100%;height:100%}
#opening-overlay{position:absolute;inset:0;display:grid;place-items:center;background:transparent;border:0;padding:0;width:100%;height:100%}
#opening-overlay img{width:clamp(82px,8vw,120px);height:auto;filter:drop-shadow(0 2px 10px #0002)}
.opening-buttons{justify-content:flex-start;gap:5px;height:34px}
.opening-buttons button{width:38px;height:34px;padding:6px;display:grid;place-items:center;opacity:.7}
.opening-buttons button:hover,.opening-buttons button:focus-visible{opacity:1}
.opening-buttons img{width:22px;height:22px;object-fit:contain}
#opening-fullscreen{margin-left:auto}
.hero-player:fullscreen{width:100%;height:100%;max-width:none;max-height:none;aspect-ratio:auto;background:var(--cream);display:flex;flex-direction:column;padding:12px}
.hero-player:fullscreen .opening-screen{height:calc(100% - 60px);min-height:0;flex:1}
.hero-player:fullscreen video{object-fit:contain}
.hero-player:fullscreen .opening-controls{width:min(600px,100%);margin:auto;flex:none;height:60px}

/* Japanese keeps the same quiet editorial rhythm with native Mincho letterforms. */
.dress-art figcaption{text-transform:uppercase}
html[lang=ja] body{font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif CJK JP",serif;line-height:1.85;line-break:strict;overflow-wrap:anywhere}
html[lang=ja] h1,html[lang=ja] h2,html[lang=ja] .reply-heading{font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif CJK JP",serif;font-style:normal;letter-spacing:.035em;line-height:1.55}
html[lang=ja] h2{font-size:clamp(30px,4vw,58px)}
html[lang=ja] .opening h1{font-size:clamp(52px,8vw,110px);line-height:1.5}
html[lang=ja] .destination h2{font-size:clamp(28px,5vw,72px)}
html[lang=ja] .dress h2 em{font-style:normal}
html[lang=ja] .panorama h2{font-size:clamp(30px,4.5vw,62px)}
html[lang=ja] .eyebrow,html[lang=ja] .opening-location,html[lang=ja] .hero-scroll{letter-spacing:.08em}
html[lang=es] .opening h1{font-size:clamp(76px,10vw,145px)}
@media(max-width:700px){.languages{gap:10px}.languages button{min-height:36px}html[lang=ja] .opening h1{font-size:clamp(45px,12vw,76px)}html[lang=ja] .date-note h2{font-size:clamp(28px,8vw,45px)}html[lang=ja] .rsvp h2{font-size:30px}html[lang=ja] .reply-heading{font-size:23px}html[lang=es] .opening h1{font-size:clamp(64px,19vw,110px)}html[lang=es] .date-note h2{font-size:42px}}

.stay-tuned{font-size:16px;line-height:1.7;color:#827258;margin:26px 0 0;max-width:450px}
