@font-face{font-family:WeddingSerif;src:url('fonts/font-1.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:WeddingSerif;src:url('fonts/font-0.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:WeddingSans;src:url('fonts/font-3.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:WeddingSans;src:url('fonts/font-4.ttf') format('truetype');font-weight:500 600;font-style:normal;font-display:swap}
:root{--green:#354b50;--deep:#263e43;--gold:#e6c67e;--pink:#e783cb;--blush:#fadddf;--ink:#2d454a;--body:WeddingSans,Arial,sans-serif;--serif:WeddingSerif,Georgia,serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--blush);font-family:var(--body);color:var(--ink);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible{outline:3px solid currentColor;outline-offset:6px}[hidden]{display:none!important}.skip-link{position:fixed;left:1rem;top:-100px;padding:1rem;background:var(--blush);z-index:100}.skip-link:focus{top:1rem}.checker-edge{height:24px;background:repeating-conic-gradient(var(--pink) 0% 25%,var(--blush) 0% 50%) 0 0/48px 48px}.hero{background:var(--green);color:var(--gold);position:relative;overflow:hidden;padding:0 5.5vw}.masthead{height:105px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e6c67e40;position:relative;z-index:2}.monogram{font-family:var(--serif);font-size:2.5rem;text-decoration:none;letter-spacing:-.08em}.monogram span{font-size:1.6rem;font-style:italic;margin:0 .12em}.eyebrow{font-size:.75rem;letter-spacing:.19em;font-weight:500;line-height:1.6}.edition{font-size:.75rem;letter-spacing:.15em}.hero-inner{min-height:650px;height:calc(100svh - 205px);max-height:940px;position:relative;display:flex;align-items:center}.opening,.announcement{position:relative;z-index:1;width:65%;padding:40px 0 56px}.section-label{display:flex;align-items:center;gap:14px;margin:0 0 32px}.little-star{font-size:1.25rem}.opening h1{font-family:var(--serif);font-size:clamp(7rem,14vw,14rem);line-height:.85;font-weight:400;letter-spacing:-.05em;margin:0}.punctuation{color:var(--pink)}.opening-copy{font-family:var(--serif);font-size:clamp(2.1rem,4.5vw,4.5rem);font-weight:400;line-height:1.06;margin:28px 0 36px;letter-spacing:-.025em}.opening-copy em{font-weight:400;color:var(--blush)}.button{display:inline-flex;justify-content:space-between;align-items:center;gap:48px;text-decoration:none;min-height:58px;padding:18px 25px;border:1px solid transparent;border-radius:3px;font-weight:500;font-size:1rem;cursor:pointer;transition:transform .2s,background .2s}.button span{font-size:1.5rem;line-height:1}.button:hover{transform:translateY(-3px)}.pink{background:var(--pink);color:var(--deep);min-width:195px}.pink:hover{background:var(--blush)}.whisper{font-size:.8rem;color:var(--blush);opacity:.7;margin:18px 0 0}.art{position:absolute;right:-8%;top:-5%;height:105%;width:61%;pointer-events:none;display:flex;align-items:center;justify-content:center}.art img{width:100%;height:auto;object-fit:contain;mix-blend-mode:lighten;mask-image:radial-gradient(ellipse at 50% 46%,#000 30%,transparent 69%);transform-origin:50% 0;animation:sway 8s ease-in-out infinite}.art-caption{position:absolute;bottom:9%;right:12%;font-family:var(--serif);font-style:italic;font-size:clamp(1.4rem,2.5vw,2.25rem);color:var(--blush);transform:rotate(-9deg)}.announcement h1{font-family:var(--serif);font-size:clamp(6rem,11.8vw,12rem);font-weight:400;line-height:.84;letter-spacing:-.065em;margin:12px 0 24px}.announcement h1:focus{outline:0}.name-bottom{display:block;white-space:nowrap;margin-top:10px}.name-bottom i{font-size:.6em;letter-spacing:-.1em;color:var(--pink);font-weight:400;margin-right:.08em}.save-script{font-family:var(--serif);font-size:clamp(2rem,4vw,3.75rem);font-style:italic;color:var(--blush);margin:30px 0 35px}.hero-date{display:inline-flex;align-items:center;gap:50px;border-top:1px solid #e6c67e66;padding-top:22px;font-size:.85rem;letter-spacing:.2em;text-decoration:none}.hero-date span:last-child{font-size:1.5rem}.hero-foot{height:76px;border-top:1px solid #e6c67e40;display:flex;align-items:center;justify-content:space-between;font-size:.7rem;letter-spacing:.15em}.foot-center{font-family:var(--serif);font-size:1.1rem;font-style:italic;letter-spacing:0}.hero-foot>span:last-child{font-size:1.4rem}.date-ribbon{display:flex;justify-content:center;align-items:center;gap:40px;padding:24px 0;background:var(--pink);white-space:nowrap;overflow:hidden;font-family:var(--serif);font-size:1.8rem}.date-ribbon i{font-size:1.2rem;font-style:normal}.invitation{max-width:1240px;margin:auto;display:grid;grid-template-columns:1fr .85fr;gap:12%;padding:115px 6vw 100px;align-items:center}.invitation h2{font-family:var(--serif);font-weight:400;letter-spacing:-.055em;font-size:clamp(4rem,6.5vw,6rem);line-height:.9;margin:30px 0 36px}.invitation h2 em{font-weight:400}.invitation-copy>p:not(.eyebrow):not(.sign-off){font-size:1.05rem;line-height:1.8;max-width:360px;margin:0 0 17px}.sign-off{font-family:var(--serif);font-size:1.8rem;font-style:italic;margin-top:32px}.date-card{background:var(--pink);padding:30px 32px 27px;position:relative;transform:rotate(3deg);border-radius:150px 150px 5px 5px;min-width:0;box-shadow:13px 15px 0 #354b5010;text-align:center}.ticket-top{display:flex;flex-direction:column;align-items:center;gap:13px;margin:20px 0 3px}.ticket-top>span:last-child{font-size:1.6rem}.day{font-family:var(--serif);font-size:clamp(7rem,12vw,11rem);line-height:1;margin:0;letter-spacing:-.09em;transform:translateX(-.03em)}.month{font-family:var(--serif);font-size:2.75rem;letter-spacing:-.04em;margin:0 0 30px}.month i{font-weight:400}.ticket-rule{border-top:1px dashed #354b5070;margin:0 -32px 26px}.dark{background:var(--green);color:var(--blush);width:100%;gap:10px;font-size:.95rem;padding:17px}.dark:hover{background:var(--deep)}.google-link{display:inline-block;text-underline-offset:4px;font-size:.8rem;line-height:1.6;margin-top:17px}.countdown-section{border-top:1px solid #354b5030;max-width:1090px;margin:auto;text-align:center;padding:55px 24px 72px}.countdown{display:flex;align-items:center;justify-content:center;gap:35px;margin-top:28px}.countdown>div{min-width:100px}.countdown div>span{font-family:var(--serif);font-size:4.5rem;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.045em}.countdown small{display:block;font-size:.75rem;letter-spacing:.12em;margin-top:13px}.countdown b{font-family:var(--serif);font-size:2rem;font-weight:400;margin-top:-22px;color:#354b5070}.footer{background:var(--green);color:var(--gold);text-align:center;padding:60px 6vw 26px;position:relative}.closing{font-family:var(--serif);font-style:italic;font-size:clamp(5rem,11vw,10rem);line-height:1;margin:0 0 50px;letter-spacing:-.06em}.closing span{color:var(--pink)}.footer>div{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e6c67e40;padding-top:24px;font-size:.75rem;letter-spacing:.14em}.bottom-edge{height:48px}#confetti{position:fixed;inset:0;pointer-events:none;z-index:10;width:100%;height:100%;display:none}.revealed .announcement{animation:arrive .85s cubic-bezier(.2,.8,.2,1) both}.revealed #details{animation:arrive 1s .15s both}.leaving{animation:leave .25s ease both}@keyframes sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes arrive{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes leave{to{opacity:0;transform:translateY(-15px)}}
@media(min-width:1600px){.hero{padding:0 max(6vw,calc((100vw - 1500px)/2))}.hero-inner{min-height:780px}}
@media(max-width:800px){.hero{padding:0 6vw}.masthead{height:80px}.masthead>.eyebrow{font-size:.63rem;letter-spacing:.13em}.edition{display:none}.hero-inner{height:auto;min-height:720px;align-items:flex-start}.opening,.announcement{width:100%;padding:270px 0 50px}.art{width:430px;max-width:95vw;height:410px;right:-12%;top:-40px;align-items:flex-start}.art-caption{display:none}.art img{width:100%;mask-image:radial-gradient(ellipse at 50% 43%,#000 23%,transparent 66%)}.section-label{margin-bottom:20px;font-size:.69rem;letter-spacing:.13em}.opening h1{font-size:7.5rem}.opening-copy{font-size:3rem;margin:20px 0 28px}.announcement h1{font-size:clamp(5.5rem,15vw,8rem);max-width:100%}.save-script{font-size:2.75rem;margin:25px 0 30px}.hero-foot{height:65px}.hero-foot>span:first-child{font-size:.6rem}.foot-center{font-size:.9rem}.hero-foot>span:last-child{display:none}.date-ribbon{padding:18px 0;font-size:1.5rem;gap:25px}.invitation{grid-template-columns:1fr;gap:45px;padding:70px 8vw}.invitation h2{font-size:4.5rem}.invitation-copy>p:not(.eyebrow):not(.sign-off){max-width:420px}.date-card{max-width:370px;width:100%;justify-self:center;padding:30px}.day{font-size:10rem}.ticket-rule{margin-left:-30px;margin-right:-30px}.countdown{gap:14px}.countdown>div{min-width:50px}.countdown div>span{font-size:3.2rem}.countdown small{font-size:.65rem}.countdown b{font-size:1.5rem}.countdown-section{padding:45px 16px 55px;margin:0 6vw}.countdown-section>.eyebrow{font-size:.65rem}.footer{padding-top:45px}.closing{font-size:6rem;margin-bottom:35px}.footer>div{font-size:.63rem}}
@media(max-width:370px){.announcement h1{font-size:4.8rem}.opening h1{font-size:6.5rem}.hero-inner{min-height:680px}.opening,.announcement{padding-top:235px}.art{top:-50px;right:-17%}.countdown{gap:9px}.countdown>div{min-width:43px}.countdown div>span{font-size:2.8rem}.button{gap:20px}.date-card{padding:25px}.ticket-rule{margin-left:-25px;margin-right:-25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.button:hover{transform:none}}
.art img{animation-duration:5s;animation-iteration-count:1}.revealed .art img{animation-name:reveal-sway}@keyframes reveal-sway{0%,100%{transform:rotate(0)}50%{transform:rotate(3deg)}}.hero-foot,.hero-foot>span:first-child,.masthead>.eyebrow,.section-label,.countdown small,.countdown-section>.eyebrow,.footer>div{font-size:max(.75rem,12px)}
@media(max-width:420px){.masthead>.eyebrow{max-width:150px;text-align:right}.hero-foot{gap:20px;letter-spacing:.09em}.hero-foot .foot-center{max-width:150px;text-align:right}.date-card{transform:rotate(2deg)}.footer>div{letter-spacing:.06em}}
/* The invitation is closed in the HTML itself, before any script runs. */
body:not(.revealed) .masthead,body:not(.revealed) .hero-foot,body:not(.revealed) .art{visibility:hidden}
body:not(.revealed) .hero-inner{min-height:calc(100svh - 229px);height:auto;justify-content:center}
body:not(.revealed) .opening{width:100%;text-align:center;padding:30px 0 55px}
body:not(.revealed) .section-label{justify-content:center}
body:not(.revealed) .opening h1{font-size:clamp(6rem,17vw,15rem)}
body:not(.revealed) .opening-copy{font-size:clamp(2.3rem,4.5vw,4.5rem)}
body:not(.revealed) .opening .button{min-width:220px;justify-content:space-between;border-radius:100px}
body.animating{overflow:hidden}.animating #opening{animation:intro-out .6s ease both;pointer-events:none}
.reveal-screen{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:var(--deep);color:var(--gold);overflow:hidden;isolation:isolate}
.reveal-screen:focus{outline:none}.reveal-disco{position:absolute;inset:-20%;width:140%;height:140%;object-fit:cover;opacity:.3;filter:blur(3px);animation:disco-approach 4s ease both;z-index:-1}
.reveal-screen::after{content:'';position:absolute;inset:15px;border:1px solid #e6c67e60;pointer-events:none}
.reveal-words{text-align:center;position:relative;width:100%}.reveal-yes{font:italic clamp(6rem,18vw,15rem)/1 var(--serif);margin:0;animation:yes-moment 1.8s both}
.reveal-news{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);font:400 clamp(4rem,10vw,10rem)/.85 var(--serif);letter-spacing:-.05em;margin:0;opacity:0;animation:news-moment 1s 1.5s both}
.reveal-news em{color:var(--pink);font-weight:400}.skip-animation{position:absolute;bottom:max(40px,env(safe-area-inset-bottom));background:transparent;border:0;border-bottom:1px solid #e6c67e80;padding:12px 0;color:var(--blush);font-size:.9rem;cursor:pointer}.skip-animation span{margin-left:20px}
.reveal-screen.finishing{animation:open-out .8s cubic-bezier(.76,0,.24,1) both;pointer-events:none}
#confetti{z-index:30}
@keyframes intro-out{to{opacity:0;transform:translateY(-40px) scale(.94)}}
@keyframes disco-approach{from{transform:scale(1.25) rotate(-8deg);opacity:.08}to{transform:scale(1) rotate(0);opacity:.32}}
@keyframes yes-moment{0%{opacity:0;transform:scale(.8)}30%,65%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.15)}}
@keyframes news-moment{from{opacity:0;filter:blur(10px);transform:translateY(calc(-50% + 35px)) scale(.94)}to{opacity:1;filter:blur(0);transform:translateY(-50%) scale(1)}}
@keyframes open-out{to{clip-path:inset(50% 0 50% 0);opacity:0}}
@media(max-width:800px){body:not(.revealed) .hero-inner{min-height:calc(100svh - 217px);align-items:center}.reveal-disco{inset:0;width:100%;height:100%;object-fit:cover}.reveal-news{font-size:clamp(3.8rem,14vw,7rem)}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.couple-art{width:32%;height:auto;top:9%;right:3%;margin:0;display:block;padding:12px 12px 48px;background:var(--blush);box-shadow:0 15px 50px #132c3340;transform:rotate(5deg);pointer-events:auto}
.couple-art img{display:block;width:100%;height:auto;mask-image:none;mix-blend-mode:normal;animation:none;transform:none}
.couple-art .art-caption{color:var(--ink);font-size:1.4rem;bottom:12px;right:0;left:0;text-align:center;transform:none;display:block}
.revealed .couple-art{animation:photo-settle 1.1s cubic-bezier(.2,.8,.2,1) both}.revealed .couple-art img{animation:none}
.download-invitation{display:grid;grid-template-columns:.7fr 1fr;align-items:center;gap:10%;padding:65px 8vw 100px;max-width:1240px;margin:auto;border-top:1px solid #354b5025}
.card-preview{display:block;width:min(100%,280px);justify-self:center;transform:rotate(-3deg);transition:transform .25s;box-shadow:12px 14px 0 #354b5012}.card-preview:hover{transform:rotate(0)}.card-preview img{width:100%;height:auto;display:block}
.download-copy h2{font:400 clamp(3.5rem,5.8vw,5.6rem)/.92 var(--serif);letter-spacing:-.05em;margin:25px 0}.download-copy h2 em{font-weight:400}.download-copy>p:not(.eyebrow):not(.download-note){font-size:1.05rem;line-height:1.7;max-width:330px}.download-button{width:auto;gap:35px;margin-top:16px;padding:18px 22px}.download-note{font-size:.8rem;margin-top:14px;opacity:.7}.download-copy .google-link{margin-top:0}
.reveal-screen{background:var(--green)}.reveal-photo{position:absolute;right:12%;top:50%;margin:0;width:min(31vw,350px);background:var(--blush);padding:10px 10px 35px;color:var(--ink);transform:translateY(-50%) rotate(5deg);box-shadow:0 25px 80px #10252c60;animation:photo-enter 1.2s cubic-bezier(.16,1,.3,1) both;transition:opacity .65s,filter .65s}
.reveal-photo img{display:block;width:100%;height:auto}.reveal-photo figcaption{font:italic 1.15rem var(--serif);text-align:center;margin-top:8px;position:absolute;bottom:8px;left:0;right:0}
.reveal-words{position:absolute;left:9%;width:42%}.reveal-yes{font-size:clamp(4rem,8vw,8rem);line-height:.95;animation:arrive 1s .3s both}.reveal-yes em{font-weight:400;color:var(--pink)}.reveal-news{animation:none;transition:opacity .55s,transform .7s,filter .7s;opacity:0;filter:blur(7px);transform:translateY(calc(-50% + 35px));font-size:clamp(4rem,8vw,8rem)}
.news-visible .reveal-yes{visibility:hidden}.news-visible .reveal-news{opacity:1;filter:blur(0);transform:translateY(-50%)}
@keyframes photo-enter{from{opacity:0;transform:translateY(-43%) rotate(-8deg) scale(.7)}to{opacity:1;transform:translateY(-50%) rotate(5deg) scale(1)}}
@keyframes photo-settle{from{opacity:0;transform:rotate(-4deg) translateY(20px)}to{opacity:1;transform:rotate(5deg) translateY(0)}}
@media(max-width:800px){.couple-art{width:190px;max-width:42vw;right:1%;top:18px;padding:7px 7px 29px;z-index:0}.couple-art .art-caption{font-size:.95rem;bottom:6px}.announcement{padding-top:330px}.download-invitation{grid-template-columns:1fr;gap:45px;padding:50px 8vw 65px}.card-preview{width:215px}.download-copy{text-align:center}.download-copy>p:not(.eyebrow):not(.download-note){margin-left:auto;margin-right:auto}.download-copy h2{font-size:3.8rem}.reveal-photo{right:50%;top:37%;width:min(45vw,220px);margin-right:max(-110px,-22.5vw)}.reveal-words{left:5%;width:90%;top:72%}.reveal-yes{font-size:clamp(3rem,9vw,4rem)}.reveal-yes br{display:none}.reveal-news{font-size:clamp(3.5rem,11vw,5rem)}.skip-animation{bottom:24px;font-size:.8rem}}
@media(max-height:600px) and (min-width:601px){.reveal-photo{width:180px;right:15%}.reveal-words{left:7%;width:47%}.reveal-yes,.reveal-news{font-size:4rem}.skip-animation{bottom:20px}}
@media(max-width:600px) and (max-height:650px){.reveal-photo{width:150px;margin-right:-75px;top:33%}.reveal-words{top:72%}.reveal-news{font-size:3.4rem}.reveal-yes{font-size:2.8rem}}
@media(prefers-reduced-motion:reduce){.reveal-screen,.reveal-photo,.couple-art,.reveal-news{animation:none!important;transition:none!important}}
/* Photo-led, twelve-second reveal: the original picture is the entire scene. */
.cinema{background:#142326;display:block;opacity:1;animation:cinema-arrival 1s ease both}
.cinema::after{display:none}.cinema-background{position:absolute;inset:-50px;background:url('aanzoek.png') center 72%/cover;filter:blur(35px) brightness(.42);transform:scale(1.1)}
.cinema-photo-window{position:absolute;inset:0;overflow:hidden;display:flex;justify-content:center}
.cinema-photo{display:block;height:100%;width:auto;max-width:none;object-fit:contain;transform-origin:50% 87%;animation:proposal-camera 12.5s cubic-bezier(.25,.1,.25,1) both;will-change:transform;filter:brightness(.93)}
.cinema-shade{position:absolute;inset:0;background:linear-gradient(180deg,#102326a6 0%,#10232605 45%,#10232600 72%,#102326a6 100%);transition:background 1.5s}
.cinema-caption{position:absolute;inset:6% 5% auto;text-align:center;pointer-events:none;color:#fff2d6;text-shadow:0 2px 25px #0008}
.cinema-line{font:400 clamp(3.2rem,6.8vw,6.8rem)/.92 var(--serif);letter-spacing:-.045em;margin:0;position:absolute;inset:0;opacity:0;transform:translateY(24px);filter:blur(6px);transition:opacity 1s,transform 1.2s,filter 1.2s}
.cinema-line span,.cinema-line em{display:block}.cinema-line em{font-weight:400;color:#ffb5e4}.cinema-line small{display:block;font:400 .95rem var(--body);letter-spacing:.22em;text-transform:uppercase;margin-top:24px;color:var(--blush)}
.cinema[data-scene="one"] .scene-one,.cinema[data-scene="two"] .scene-two,.cinema[data-scene="three"] .scene-three,.cinema[data-scene="four"] .scene-four{opacity:1;transform:translateY(0);filter:blur(0)}
.cinema[data-scene="one"] .scene-one{transition-delay:.7s}
.cinema[data-scene="three"] .scene-three{font-size:clamp(5rem,12vw,12rem)}
.cinema[data-scene="four"] .cinema-shade{background:linear-gradient(180deg,#102326d6 0%,#10232628 50%,#10232605 72%,#102326a6 100%)}
.cinema-progress{position:absolute;bottom:0;left:0;right:0;height:3px;background:#fff2}
.cinema-progress span{display:block;width:100%;height:100%;background:var(--gold);transform-origin:left;animation:story-progress 12.5s linear both}
.cinema .skip-animation{bottom:max(23px,env(safe-area-inset-bottom));right:30px;font-size:.75rem;letter-spacing:.03em;color:#fff;z-index:3;text-shadow:0 1px 8px #000;background:#152f3660;border:1px solid #fff4;border-radius:50px;padding:13px 18px}
.cinema.finishing{animation:cinema-departure 1.3s ease both;clip-path:none!important}
@keyframes cinema-arrival{from{opacity:0}to{opacity:1}}
@keyframes proposal-camera{0%{transform:scale(1);filter:brightness(.7)}32%{transform:scale(1.08);filter:brightness(1)}65%{transform:scale(1.58);filter:brightness(1)}82%{transform:scale(1.65);filter:brightness(.95)}100%{transform:scale(1.45);filter:brightness(.9)}}
@keyframes story-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes cinema-departure{from{opacity:1}to{opacity:0}}
@media(max-aspect-ratio:2/3){.cinema-photo{width:100%;height:100%;object-fit:cover;object-position:50% 90%}}
@media(min-aspect-ratio:3/2){.cinema-caption{inset:17% 3% auto auto;width:31%;text-align:left}.cinema-line{font-size:clamp(3rem,5vw,5.5rem)}.cinema-photo-window{right:18%}.cinema[data-scene="three"] .scene-three{font-size:8vw}}
@media(max-width:600px){.cinema-caption{top:8%}.cinema-line{font-size:clamp(3rem,12vw,4.5rem)}.cinema-line small{font-size:.75rem;margin-top:18px}.cinema .skip-animation{right:16px;bottom:20px}.cinema[data-scene="three"] .scene-three{font-size:24vw}}
.cinema.gentle .cinema-photo{animation:none!important;transform:none!important;filter:none!important}.cinema.gentle .cinema-progress span{animation:none!important}.cinema.gentle .cinema-line{filter:none!important;transform:none!important;transition:opacity 1.2s!important}
@media(prefers-reduced-motion:reduce){.cinema .cinema-photo{animation:none!important;transform:none!important}.cinema .cinema-line{filter:none!important;transform:none!important;transition:opacity 1.2s!important}.cinema.finishing{animation:cinema-departure 1.3s ease both!important}}
.cinema-shot{position:absolute;inset:0;opacity:0;transition:opacity 1.5s ease;pointer-events:none}
.cinema[data-scene="one"] .shot-one,.cinema[data-scene="two"] .shot-two,.cinema[data-scene="three"] .shot-three,.cinema[data-scene="four"] .shot-three{opacity:1}
.cinema-shot .cinema-photo{animation:montage-camera 14s linear both;transform-origin:50% 77%}
.cinema-progress span{animation-duration:14s}
.cinema-line small{text-transform:none;letter-spacing:.03em;font-size:1.15rem}
.cinema.gentle .cinema-shot{transition:opacity 1.5s!important}
@keyframes montage-camera{from{transform:scale(1);filter:brightness(.95)}to{transform:scale(1.16);filter:brightness(1)}}
@media(prefers-reduced-motion:reduce){.cinema-shot{transition:opacity 1.5s!important}.cinema-shot .cinema-photo{animation:none!important;transform:none!important}}
.cinema[data-scene="one"] .scene-one{transition-delay:.15s}
.cinema-progress span{animation-duration:28.2s}
.cinema-shot .cinema-photo{animation-duration:29.5s}
.cinema[data-scene="three"] .scene-three{font-size:clamp(3.2rem,6.8vw,6.8rem)}
@media(min-aspect-ratio:3/2){.cinema[data-scene="three"] .scene-three{font-size:clamp(3rem,5vw,5.5rem)}}
@media(max-width:600px){.cinema[data-scene="three"] .scene-three{font-size:clamp(3rem,12vw,4.5rem)}}
.cinema[data-scene="three"] .scene-three{font-size:clamp(2.2rem,4.4vw,4.5rem);line-height:1.04}
.invitation h2{font-size:clamp(3rem,5vw,4.8rem)}
@media(max-width:600px){.cinema[data-scene="three"] .scene-three{font-size:clamp(2.1rem,9vw,3.5rem)}}
.cinema[data-scene="three"] .scene-three{font-size:clamp(1.9rem,3.25vw,3.4rem);line-height:1.12}
.cinema .scene-two .scene-intro{margin:0 0 18px;font:400 clamp(1.8rem,3.4vw,3rem)/1.05 var(--serif);letter-spacing:-.045em;color:inherit}
@media(max-width:600px){.cinema[data-scene="three"] .scene-three{font-size:clamp(1.65rem,7.3vw,2.7rem)}}

.cinema[data-scene=three] .scene-three{font-size:clamp(2.2rem,4.4vw,4.5rem);line-height:1.04}
@media(max-width:600px){.cinema[data-scene=three] .scene-three{font-size:clamp(2.1rem,9vw,3.5rem)}}

/* A quieter invitation: one date, then the countdown. */
.revealed .hero-inner{min-height:620px;height:auto;padding:25px 0 60px}
.announcement{padding:45px 0;width:62%}.couple-names{font:400 clamp(1.8rem,3.3vw,3rem)/1.2 var(--serif);margin:0 0 32px}.couple-names i{color:var(--pink)}
.announcement .big-date{font-size:clamp(6rem,13vw,13rem);line-height:.78;letter-spacing:-.065em;margin:0}.big-date span,.big-date em{display:block}.big-date em{color:var(--pink);font-weight:400;margin-top:12px}.date-message{font:italic clamp(1.4rem,2.2vw,2rem)/1.3 var(--serif);color:var(--blush);margin:35px 0 0}.couple-art{padding-bottom:12px;top:8%}
.countdown-section{border:0;padding:58px 6vw 0;max-width:1240px;margin:0 auto}.countdown-section>.eyebrow{font-size:.875rem;letter-spacing:.16em}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:26px 0 0}.countdown>div{min-width:0;background:var(--pink);border-radius:80px 80px 10px 10px;padding:35px 10px 26px}.countdown>div:nth-child(even){background:#fff0d5}.countdown div>span{font-size:clamp(3.5rem,7.2vw,7rem);line-height:1.1}.countdown small{font-size:.875rem;letter-spacing:.08em;margin-top:8px}
.invitation{grid-template-columns:1fr 1fr;gap:7%;padding:65px 6vw 70px}.invitation h2{font-size:clamp(2.6rem,4.3vw,4rem);line-height:1.02;margin:0 0 20px}.invitation-copy>p:not(.eyebrow):not(.sign-off){margin:0;max-width:390px}.calendar-action .button{border-radius:100px;justify-content:center;padding:23px 26px;min-height:72px;font-size:1.05rem}.family-signoff{font:italic clamp(1.45rem,3vw,2.3rem)/1.4 var(--serif);color:var(--blush);margin:0 0 25px}.footer .closing{margin-bottom:30px}
#calendar-dialog{border:1px solid #354b5025;border-radius:24px;width:min(440px,calc(100% - 32px));max-height:calc(100svh - 40px);padding:0;background:var(--blush);color:var(--green)}#calendar-dialog::backdrop{background:#132c33b8;backdrop-filter:blur(7px)}.calendar-modal{padding:42px 28px 30px;position:relative}.calendar-modal h2{font:400 3.2rem/1 var(--serif);letter-spacing:-.04em;margin:18px 0 28px}.calendar-modal .eyebrow{font-size:.8rem}.calendar-close{position:absolute;right:14px;top:10px;width:44px;height:44px;border:0;background:none;color:var(--green);font-size:2rem;cursor:pointer}.calendar-options{display:grid;gap:12px}.calendar-options .button{width:100%;border-radius:100px;padding:18px 24px}.calendar-file{background:var(--pink);color:var(--green)}
@media(max-width:800px){.revealed .hero-inner{min-height:0;padding:30px 0 55px}.announcement{padding:20px 0 0;width:100%}.couple-art{width:110px;max-width:28vw;top:35px;right:0;padding:5px}.couple-names{font-size:1.9rem;margin:0 0 90px;max-width:65%}.announcement .big-date{font-size:clamp(6.5rem,22vw,11rem);line-height:.8}.date-message{font-size:1.5rem;margin-top:28px}.countdown-section{padding:38px 6vw 0;margin:0}.countdown{gap:8px;margin-top:22px}.countdown>div{border-radius:45px 45px 8px 8px;padding:23px 4px 20px}.countdown div>span{font-size:clamp(2.3rem,9vw,4.5rem)}.countdown small{font-size:.8rem;letter-spacing:0}.countdown-section>.eyebrow{font-size:.75rem}.invitation{grid-template-columns:1fr;gap:28px;padding:45px 8vw 50px}.invitation h2{font-size:3rem}.calendar-action .button{font-size:1rem;padding:20px}.family-signoff{font-size:1.55rem}}
