/* 星河鎏金 / STARDUST — no external dependencies */
:root{--ink:#170b11;--ink-deep:#0e080c;--wine:#5a142a;--gold:#e2c18e;--gold-light:#f7e5c6;--paper:#f7f0e5;--muted:#b5a39e;--line:rgba(226,193,142,.23);--serif:"Bodoni MT","Didot","Times New Roman","Songti SC","STSong","Noto Serif CJK SC",serif;--sans:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",Arial,sans-serif;--ease:cubic-bezier(.19,1,.22,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:16px;line-height:1.8;-webkit-font-smoothing:antialiased}body.is-sealed,body.dialog-open{overflow:hidden}::selection{background:#ac754b;color:white}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{border:0;background:none}button:focus-visible,a:focus-visible{outline:2px solid var(--gold-light);outline-offset:6px}button:disabled{cursor:default}svg{width:22px;height:22px;flex-shrink:0}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}h1,h2{font-family:var(--serif)}[hidden]{display:none!important}.skip-link{position:fixed;left:20px;top:-100px;background:var(--gold);color:var(--ink);z-index:200;padding:10px 20px}.skip-link:focus{top:10px}#stardust{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:45}.scroll-progress{position:fixed;top:0;left:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--gold);z-index:100}.eyebrow{font-size:.75rem;letter-spacing:.23em;font-weight:400;color:var(--gold);line-height:1.7}.tiny-star{font-size:1rem;margin-right:12px}.text-button{padding:6px 0;color:var(--gold);font-size:.875rem;letter-spacing:.07em;display:inline-flex;align-items:center;gap:25px;border-bottom:1px solid rgba(226,193,142,.35);transition:color .3s,border-color .3s}.text-button:hover{color:var(--gold-light);border-color:var(--gold-light)}.button{min-height:54px;display:inline-flex;align-items:center;justify-content:center;gap:20px;padding:14px 27px;font-size:.875rem;letter-spacing:.1em;position:relative;overflow:hidden;isolation:isolate;transition:transform .3s,background .3s,box-shadow .3s}.button:hover{transform:translateY(-3px);box-shadow:0 8px 35px #c49b5120}.button-gold{background:linear-gradient(105deg,#e9d2ae,#cd9e64);color:#301821;border:1px solid #f8deb3}.button-gold:after{content:"";position:absolute;inset:-100%;background:linear-gradient(110deg,transparent 43%,#fff6 50%,transparent 57%);transform:translateX(-50%);animation:button-sheen 6s ease-in-out infinite;z-index:-1}.button-outline{border:1px solid #ba945e80;color:var(--gold);background:#1a0c1220}.button-outline:hover{background:#e4bd8510}.section-shell{padding:98px max(7.5vw,24px)}.section-kicker{display:flex;justify-content:space-between;gap:25px;align-items:center;padding-bottom:25px;border-bottom:1px solid var(--line);font-size:.75rem;letter-spacing:.18em;color:var(--gold)}.section-kicker>span:last-child{letter-spacing:.12em;color:var(--muted)}.section-shell h2{font-size:clamp(2.5rem,4.1vw,4.3rem);line-height:1.55;letter-spacing:.04em}.section-shell h2 span{color:var(--gold)}.reveal{transition:opacity 1.2s var(--ease),transform 1.2s var(--ease)}.js .reveal{opacity:0;transform:translateY(32px)}.js .reveal.is-visible{opacity:1;transform:none}
/* A cinematic invitation cover */
.opening{position:fixed;inset:0;z-index:80;min-height:100svh;background:var(--ink-deep);display:flex;flex-direction:column;justify-content:space-between;overflow:auto;transition:opacity 1.1s ease,visibility 1.1s}.opening-art{position:absolute;inset:0;background:url('assets/celestial-rings.webp') center center/cover no-repeat;opacity:.5;transform:scale(1.1);animation:opening-drift 15s ease-in-out infinite alternate}.opening-vignette{position:absolute;inset:0;background:linear-gradient(90deg,#170b1170,#21081240,#170b1150),radial-gradient(ellipse at center,transparent,#13070f9c);transition:opacity 1s}.opening-top,.opening-bottom{position:relative;display:flex;justify-content:space-between;align-items:center;margin:35px 5%;font-size:.75rem;color:#e3cfae;letter-spacing:.18em}.opening-bottom{margin-top:18px}.opening-bottom .text-button{font-size:.875rem}.opening-center{position:relative;text-align:center;padding:25px 20px}.opening h2{font-family:var(--serif);font-size:clamp(2.2rem,4.2vw,4rem);letter-spacing:.16em;line-height:1.65;color:#faecd5;margin:20px 0 12px}.opening-names{display:flex;justify-content:center;gap:22px;align-items:center;color:var(--gold-light);font-family:var(--serif);font-size:1.25rem;letter-spacing:.1em}.opening-names i{font-size:1.9rem;font-style:italic;color:var(--gold);line-height:1}.seal{width:114px;height:114px;position:relative;margin-top:35px;border-radius:50%;background:radial-gradient(ellipse at 30% 20%,#a95c42,#5e2429 48%,#270e17);border:1px solid #e7b875;box-shadow:0 0 45px #d29b4a40,0 0 100px #95234d40,inset 0 0 15px #f1c79022;transition:transform .8s var(--ease),box-shadow .6s}.seal:hover{transform:scale(1.1);box-shadow:0 0 75px #e7b87570}.seal-core{position:absolute;inset:10px;border:1px solid #d7aa6f88;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-size:2.1rem;color:#f6dab0;padding-left:3px}.seal-orbit{position:absolute;inset:-13px;border-radius:50%;border:1px dashed #e7ba7d50;animation:orbit 32s linear infinite}.seal-orbit:after{content:"";position:absolute;width:5px;height:5px;border-radius:50%;top:17px;right:15px;background:#ffe8bf;box-shadow:0 0 14px 3px #ecc992}.opening-hint{color:var(--gold);font-size:.75rem;margin-top:22px;letter-spacing:.2em}.opening.is-leaving{opacity:0;visibility:hidden;pointer-events:none}.opening.is-leaving .opening-art{transform:scale(1.28);transition:transform 1.5s ease;animation:none}.opening.is-leaving .opening-center{transform:scale(1.04);opacity:0;transition:transform 1.2s,opacity .5s}.opening.is-leaving .seal{transform:scale(2.5)}
/* First chapter */
.header{position:absolute;top:0;left:0;width:100%;padding:25px 5%;display:flex;align-items:center;justify-content:space-between;gap:30px;z-index:20;border-bottom:1px solid #e0b9891a}.brand{display:flex;align-items:center;gap:18px}.monogram{font:italic 1.9rem var(--serif);white-space:nowrap;color:var(--gold-light)}.brand-caption{border-left:1px solid var(--line);padding-left:18px;letter-spacing:.2em;font-size:.65rem;color:var(--gold)}.nav{display:flex;gap:30px;font-size:.875rem;color:#e7d9cf}.nav a{position:relative}.nav a:after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--gold);transform:scaleX(0);transition:transform .3s}.nav a:hover:after{transform:scaleX(1)}.header-controls{display:flex;align-items:center;gap:14px}.music-button{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:30px;padding:9px 15px;font-size:.75rem;color:var(--gold-light);background:#230f1b50;backdrop-filter:blur(10px);white-space:nowrap}.equalizer{width:17px;height:16px;display:flex;gap:2px;align-items:center}.equalizer i{height:5px;width:2px;background:var(--gold);transform-origin:center}.equalizer i:nth-child(2){height:13px}.equalizer i:nth-child(3){height:9px}.equalizer i:nth-child(4){height:15px}.music-button[aria-pressed=true] .equalizer i{animation:equalize .8s ease-in-out infinite alternate}.music-button[aria-pressed=true] .equalizer i:nth-child(2){animation-delay:-.5s}.music-button[aria-pressed=true] .equalizer i:nth-child(3){animation-delay:-.3s}.music-button[aria-pressed=true] .equalizer i:nth-child(4){animation-delay:-.7s}.motion-button{height:38px;width:38px;display:grid;place-items:center;color:var(--gold);border:1px solid var(--line);border-radius:50%;background:#230f1b50}.motion-button svg{width:18px}.hero{position:relative;min-height:850px;min-height:max(850px,100svh);overflow:hidden;background:#1b0b13}.hero-art{position:absolute;inset:-3%;background:url('assets/celestial-rings.webp') 65% 50%/cover no-repeat;transform:translate3d(calc(var(--mx,0) * -10px),calc(var(--my,0) * -7px),0) scale(1.03);transition:transform 1.5s ease-out;animation:hero-breathe 22s ease-in-out infinite alternate}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#170b11dd 0%,#190b1199 28%,#1b0c1320 60%),linear-gradient(0deg,#170b11 0%,transparent 30%,transparent 72%,#12091177 100%)}.hero-topline{position:relative;display:flex;justify-content:space-between;margin:135px 5% 0;letter-spacing:.18em;color:#e9cda9;font-size:.65rem}.hero-topline span:last-child{color:#d6c0b5}.hero-content{position:relative;width:min(710px,64%);margin:7vh 0 135px 10%}.hero-eyebrow{font-size:.7rem;letter-spacing:.26em}.hero h1{font-size:clamp(3.35rem,5.4vw,6rem);line-height:1.38;letter-spacing:.045em;margin:22px 0 30px;color:#fff1df;position:relative;text-shadow:0 3px 40px #17091044}.hero h1>span{background:linear-gradient(110deg,#fbecd7 5%,#d7b37d 55%,#fce7c6 85%);color:transparent;background-clip:text;-webkit-background-clip:text}.hero h1 em{font-family:var(--serif);font-size:clamp(1.8rem,3.2vw,3.3rem);font-weight:400;display:block;color:#dec398;letter-spacing:0;margin-top:9px;font-style:italic}.couple-names{display:flex;gap:25px;align-items:center;font-family:var(--serif);font-size:1.8rem;letter-spacing:.16em}.couple-names i{font-size:2.3rem;font-style:italic;line-height:1;color:var(--gold)}.hero-date{display:flex;align-items:center;flex-wrap:wrap;gap:18px;color:#d2bcae;letter-spacing:.11em;font-size:.875rem;margin:14px 0 31px}.hero-date .divider{color:#b38a63}.hero-cta{min-width:210px}.hero-right-note{position:absolute;right:6%;bottom:24%;display:flex;flex-direction:column;align-items:center;color:#eddbc3}.hero-right-note>span{font-size:.65rem;letter-spacing:.25em}.hero-right-note i{font:italic 1.7rem var(--serif);margin:8px 0 14px}.hero-bottom{position:absolute;bottom:36px;left:5%;right:5%;display:flex;justify-content:space-between;align-items:center;font-size:.75rem;letter-spacing:.12em;color:#c5afa4;gap:20px}.scroll-cue{display:flex;gap:15px;align-items:center;font-size:.75rem}.scroll-line{width:1px;height:34px;background:#e7c79550;position:relative;overflow:hidden}.scroll-line:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent,var(--gold),transparent);animation:scroll-tick 2s ease-in-out infinite}.hero-coordinate{font-size:.6rem;color:#b69a86;letter-spacing:.13em}
/* Invitation and time */
.invitation{background:radial-gradient(ellipse at 0 70%,#63203825,transparent 55%)}.invitation-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:12%;padding:75px 0 85px}.invitation-heading .eyebrow{margin-bottom:20px}.handwritten{font:italic clamp(1.8rem,3vw,3rem) var(--serif);color:#966953;margin-top:25px;transform:rotate(-5deg);transform-origin:left}.invitation-copy{padding-top:10px;max-width:480px}.small-spark{display:block;color:var(--gold);font-size:1.7rem;line-height:1;margin-bottom:25px}.invitation-copy>p{line-height:2.2;color:#c6b7af;margin-bottom:19px;font-size:1rem}.letter-trigger{margin-top:8px}.signature{font-family:var(--serif);display:flex;gap:18px;align-items:center;font-size:1.4rem;letter-spacing:.1em;margin-top:34px;color:var(--gold-light)}.signature i{color:var(--gold);font-size:1.9rem}.signature small{font-size:.75rem;margin-left:7px;color:#ac9180}.countdown-wrap{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:37px 0;display:flex;justify-content:space-between;align-items:center;gap:40px}.countdown-caption .eyebrow{font-size:.6rem;letter-spacing:.16em}.countdown-caption h3{font-family:var(--serif);font-size:1.25rem;letter-spacing:.1em;margin-top:5px}.countdown{display:flex;align-items:center;gap:28px;text-align:center}.countdown>div{min-width:75px}.countdown strong{font-family:var(--serif);font-weight:400;font-size:3.5rem;line-height:1.15;color:var(--gold-light);font-variant-numeric:tabular-nums}.countdown span{font-size:.6rem;display:block;color:#a98d7b;letter-spacing:.12em;margin-top:9px}.countdown>i{font:2rem var(--serif);color:#715343;margin-top:-24px;font-style:normal}
/* Our constellation */
.story{padding-top:30px;padding-bottom:65px;overflow:hidden}.story-header{padding:65px 0 65px;display:flex;gap:45px;align-items:flex-end;justify-content:space-between}.story-header>p{color:#baa59c;font-size:.95rem;line-height:2.1;max-width:365px;margin-bottom:15px}.story-line{height:1px;background:linear-gradient(90deg,#cca57788,#cca57738 80%,transparent);transform:translateY(1px)}.story-moments{display:grid;grid-template-columns:repeat(3,1fr);gap:6%}.moment{position:relative;padding-top:34px}.moment-dot{position:absolute;top:-4px;left:0;width:9px;height:9px;background:var(--gold);border-radius:50%;box-shadow:0 0 0 7px #d6b68110,0 0 20px #dbb58377}.moment-date{font:italic 2rem var(--serif);color:#c69e77;margin-bottom:23px}.moment h3{font-family:var(--serif);font-size:1.35rem;letter-spacing:.07em;color:#efdfc9;margin-bottom:15px}.moment>p:not(.moment-date){color:#ab9690;font-size:.95rem;line-height:2}.moment-en{display:block;font-size:.6rem;letter-spacing:.15em;color:#936d58;margin-top:26px}.forever-word{text-align:center;font:italic clamp(3.4rem,10.5vw,10rem)/1.3 var(--serif);white-space:nowrap;color:transparent;-webkit-text-stroke:1px #b98d6036;letter-spacing:-.025em;margin-top:60px}
/* A full bleed promise */
.vow-section{position:relative;min-height:650px;display:grid;place-items:center;text-align:center;overflow:hidden;padding:75px 24px}.vow-image{position:absolute;inset:-10% 0;background:url('assets/celestial-rings.webp') 75% 64%/cover no-repeat;filter:saturate(.75);opacity:.55}.vow-overlay{position:absolute;inset:0;background:linear-gradient(0deg,#170b11,transparent 25%,#170b1166 65%,#170b11),linear-gradient(90deg,#170b1170,#170b1140,#170b1170)}.vow-content{position:relative;max-width:780px}.vow-spark{display:block;color:var(--gold);font-size:2rem;margin:28px 0 22px}.vow-content h2{font-size:clamp(2rem,4vw,3.9rem);line-height:1.65;letter-spacing:.09em;text-shadow:0 3px 30px #1c0610}.vow-content h2 span{color:var(--gold)}.vow-content p{max-width:510px;font-size:.95rem;color:#d8c5b8;line-height:2.1;margin:28px auto}.vow-sign{font:italic 1.8rem var(--serif);color:var(--gold)}
/* The schedule */
.celebration{padding-top:65px}.celebration-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:14%;padding-top:70px}.celebration-heading>.eyebrow{margin-bottom:15px}.date-stamp{width:205px;display:flex;flex-direction:column;align-items:center;margin:30px 0 25px;padding:25px 25px 23px;border:1px solid var(--line);position:relative}.date-stamp:before,.date-stamp:after{content:"";position:absolute;top:-3px;bottom:-3px;width:5px;background:var(--ink);border-top:1px solid var(--gold);border-bottom:1px solid var(--gold)}.date-stamp:before{left:18px}.date-stamp:after{right:18px}.date-stamp>span:first-child{font-size:.7rem;letter-spacing:.35em;color:var(--gold)}.date-stamp strong{font:5.5rem/1.1 var(--serif);color:#f4dfbe;margin:4px 0 5px}.date-stamp>span:last-child{font-size:.75rem;color:#a88f81;letter-spacing:.06em}.schedule{padding-top:4px}.schedule-item{display:grid;grid-template-columns:80px 1fr;gap:25px;position:relative;padding-bottom:39px}.schedule-item:not(:last-child):before{content:"";position:absolute;top:22px;left:94px;bottom:0;width:1px;background:var(--line)}.schedule-item:after{content:"";position:absolute;top:15px;left:91px;width:7px;height:7px;background:var(--gold);border-radius:50%;box-shadow:0 0 13px #d6b88050}.schedule-item time{font:italic 1.45rem/1.5 var(--serif);color:var(--gold);padding-top:3px}.schedule-item>div{padding-left:15px}.schedule-item>div>span{font-size:.6rem;color:#ab8567;letter-spacing:.17em}.schedule-item h3{font-family:var(--serif);font-size:1.45rem;letter-spacing:.07em;margin:7px 0 10px}.schedule-item p{color:#b29e94;font-size:.95rem;line-height:1.95}
/* Meet us here */
.details{background:linear-gradient(160deg,#2b0f1b50,transparent 70%);padding-top:35px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:13%;padding-top:75px;align-items:center}.venue-card{position:relative;padding:16px;border:1px solid #b58c543d;border-radius:220px 220px 4px 4px;background:radial-gradient(ellipse at 50% 0%,#85333a20,transparent 80%)}.venue-card-inner{border:1px solid #b58c542d;border-radius:210px 210px 2px 2px;text-align:center;padding:80px 28px 50px;min-height:470px;display:flex;align-items:center;flex-direction:column}.venue-symbol{font-size:2.2rem;line-height:1;margin:23px 0 20px;color:var(--gold)}.venue-card h2{font-size:clamp(2rem,3vw,3.25rem);color:#ecd8b8;overflow-wrap:anywhere}.venue-card p{font-size:.95rem;color:#b9a393;margin-top:8px}.venue-rule{width:40px;height:1px;background:#bd925760;margin:27px auto 16px}.venue-card .venue-address{font-size:.875rem;color:#b9a99e;line-height:1.8}.venue-card .text-button{margin-top:18px}.venue-card .button{margin-top:20px}.guest-notes>h2{margin-top:17px;margin-bottom:33px;font-size:clamp(2rem,3.25vw,3.4rem)}.guest-note{display:flex;gap:22px;margin-bottom:26px}.guest-note>span{font:italic 1.1rem var(--serif);color:#987357;padding-top:6px}.guest-note h3{font-family:var(--serif);font-size:1.15rem;color:#ebd6ba;letter-spacing:.06em;margin-bottom:7px}.guest-note p{color:#ae9890;font-size:.95rem;line-height:2}.dress-swatches{display:flex;gap:8px;margin-top:13px}.dress-swatches i{width:17px;height:17px;border-radius:50%;background:#d2b485;border:1px solid #dfcda62b}.dress-swatches i:nth-child(2){background:#742436}.dress-swatches i:nth-child(3){background:#110c10}.guest-notes>.button{margin-top:6px}.guest-notes>.text-button{display:flex;width:max-content;margin-top:20px}
/* Light up the universe */
.finale{position:relative;isolation:isolate;overflow:hidden;text-align:center;min-height:680px;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 85%,#5b1b2f40,transparent 55%);padding-top:110px;padding-bottom:100px}.finale-halo{position:absolute;width:650px;height:650px;border-radius:50%;border:1px solid #d2a87529;top:55%;left:50%;transform:translate(-50%,-50%);z-index:-1;box-shadow:0 0 100px #b47d5020,inset 0 0 80px #b47d500b}.finale-halo:before,.finale-halo:after{content:"";position:absolute;inset:-22px;border:1px solid #d2a8750c;border-radius:50%}.finale-halo:after{inset:30px;border-style:dashed;border-color:#d2a87512;animation:orbit 100s linear infinite}.finale-content h2{font-size:clamp(2.8rem,5.5vw,5.8rem);line-height:1.45;margin:22px 0}.finale-content>p{color:#bfaa9c;font-size:.95rem;margin-bottom:30px}.wish-button{position:relative;display:flex;align-items:center;gap:15px;margin:0 auto;border:1px solid #c39963a0;border-radius:50px;background:#39202a70;color:#ead0aa;font-size:.875rem;letter-spacing:.08em;padding:16px 30px;transition:background .3s,box-shadow .3s}.wish-button:hover{background:#75422a40;box-shadow:0 0 35px #e1b37330}.wish-button>span:first-child{color:var(--gold);font-size:1.2rem}.wish-ring{position:absolute;inset:-8px;border:1px solid #cfa97825;border-radius:50px;pointer-events:none}.finale-date{display:block;font:italic 1.2rem var(--serif);letter-spacing:.14em;color:#9d7b64;margin-top:40px}.footer{border-top:1px solid var(--line);padding:35px 5%;display:flex;gap:25px;align-items:center;justify-content:space-between;color:#a88b7b;font-size:.75rem}.footer-monogram{font:italic 1.8rem var(--serif);color:var(--gold)}.footer p{font-size:.75rem;letter-spacing:.06em}.footer>span{font-size:.6rem;letter-spacing:.2em}.footer .text-button{font-size:.75rem;letter-spacing:0}
/* Letter and feedback */
.letter-dialog{border:1px solid #b48a5460;color:#41302c;background:#f3e9d8;width:min(600px,calc(100% - 32px));max-height:85svh;padding:55px 55px 45px;box-shadow:0 30px 100px #0008}.letter-dialog::backdrop{background:#14080fcc;backdrop-filter:blur(10px)}.letter-dialog .eyebrow{color:#947041}.letter-dialog h2{font-size:1.65rem;margin:27px 0 22px;letter-spacing:.1em}.letter-body p{font-family:var(--serif);font-size:1.05rem;line-height:2.1;margin-bottom:18px;color:#665044}.letter-dialog .signature{color:#6a342f;justify-content:flex-end}.letter-dialog .signature i{color:#997948}.letter-date{text-align:right;font-size:.75rem;color:#98816b;margin-top:7px}.dialog-close{position:absolute;right:15px;top:10px;font-size:2rem;width:38px;height:38px;line-height:1;color:#77594a}.letter-dialog:focus-visible{outline:2px solid var(--gold)}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,18px);z-index:110;padding:14px 23px;border:1px solid #bd986d70;border-radius:2px;background:#231019f0;backdrop-filter:blur(16px);color:#ead5b7;font-size:.875rem;opacity:0;visibility:hidden;transition:opacity .3s,transform .3s;max-width:calc(100vw - 35px);width:max-content;box-shadow:0 12px 40px #0005}.toast.is-shown{opacity:1;visibility:visible;transform:translate(-50%,0)}.noscript-note{background:var(--gold);color:var(--ink);padding:15px;text-align:center}
@keyframes orbit{to{transform:rotate(360deg)}}@keyframes opening-drift{to{transform:scale(1.18) translateY(-1%)}}@keyframes hero-breathe{from{scale:1}to{scale:1.04}}@keyframes scroll-tick{from{transform:translateY(-100%)}to{transform:translateY(100%)}}@keyframes equalize{to{transform:scaleY(.3)}}@keyframes button-sheen{0%,65%{transform:translateX(-50%)}95%,100%{transform:translateX(50%)}}
@media(min-aspect-ratio:17/10){.hero-art{animation:none}.hero-content{margin-top:80px}}
@media(min-width:1600px){.section-shell{padding-left:max(10vw,calc((100vw - 1320px)/2));padding-right:max(10vw,calc((100vw - 1320px)/2))}.hero-content{margin-left:12%}}
@media(max-width:1050px){.nav{gap:20px}.brand-caption{display:none}.hero-content{margin-left:7%;width:74%}.hero h1{font-size:4.4rem}.hero-right-note{right:5%;bottom:20%}.hero-coordinate{display:none}.section-shell{padding-left:6%;padding-right:6%}.invitation-grid{gap:8%}.countdown{gap:18px}.countdown>div{min-width:64px}.countdown strong{font-size:3rem}.countdown-caption .eyebrow{max-width:180px}.celebration-grid{gap:8%}.details-grid{gap:8%}.venue-card-inner{padding:70px 22px 40px}.story-header>p{max-width:300px;font-size:.875rem}.moment h3{font-size:1.2rem}}
@media(max-width:760px){html{scroll-padding-top:30px}.header{padding:22px 6%;gap:14px}.nav{display:none}.header-controls{gap:8px}.music-button{font-size:.75rem;padding:8px 12px}.monogram{font-size:1.65rem}.motion-button{width:34px;height:34px}.hero{min-height:800px;min-height:max(790px,100svh)}.hero-art{inset:0 -40% 0 -25%;background-position:62% 50%;animation:none;opacity:.83}.hero-shade{background:linear-gradient(90deg,#170b1175,transparent),linear-gradient(0deg,#170b11 0%,#170b1130 55%,#170b1150 100%)}.hero-topline{margin:112px 6% 0;font-size:.6rem;letter-spacing:.13em}.hero-topline>span:last-child{display:none}.hero-content{width:88%;margin:72px 6% 135px}.hero h1{font-size:clamp(2.7rem,8.6vw,4rem);line-height:1.5;letter-spacing:.06em;margin:24px 0 25px}.hero h1 em{font-size:clamp(1.8rem,6vw,2.4rem);margin-top:7px}.hero-eyebrow{font-size:.6rem;letter-spacing:.19em}.couple-names{font-size:1.6rem;gap:19px}.hero-date{font-size:.75rem;gap:12px;letter-spacing:.06em;margin-top:15px}.hero-cta{min-height:52px;font-size:.875rem;min-width:205px;margin-top:4px}.hero-right-note{display:none}.hero-bottom{left:6%;right:6%;bottom:28px;font-size:.65rem;letter-spacing:.03em;gap:15px}.scroll-cue{font-size:.7rem;gap:12px}.section-shell{padding:68px 7%}.section-kicker{font-size:.6rem;letter-spacing:.12em;gap:12px;padding-bottom:20px}.section-kicker>span:last-child{font-size:.65rem;letter-spacing:.03em}.section-shell h2{font-size:2.45rem;line-height:1.5}.invitation-grid{grid-template-columns:1fr;gap:48px;padding:48px 0}.invitation-heading .eyebrow{font-size:.6rem}.handwritten{font-size:2rem;margin-top:15px}.invitation-copy{max-width:none;padding-top:0}.small-spark{font-size:1.35rem;margin-bottom:23px}.invitation-copy>p{font-size:1rem}.signature{margin-top:23px}.countdown-wrap{flex-direction:column;gap:25px;align-items:flex-start;padding:30px 0}.countdown-caption .eyebrow{max-width:none;font-size:.6rem}.countdown-caption h3{font-size:1.1rem;margin-top:8px}.countdown{width:100%;gap:8px;justify-content:space-between}.countdown>div{min-width:50px}.countdown strong{font-size:2.8rem}.countdown span{font-size:.55rem;letter-spacing:.06em}.countdown>i{font-size:1.2rem;margin-top:-23px}.story{padding-top:18px;padding-bottom:30px}.story-header{display:block;padding:45px 0}.story-header>p{margin:23px 0 0;max-width:none;font-size:.95rem}.story-line{display:none}.story-moments{display:block;padding-left:20px;border-left:1px solid var(--line);margin-left:5px}.moment{padding:0 0 35px 11px}.moment:last-child{padding-bottom:0}.moment-dot{left:-25px;top:9px;width:8px;height:8px}.moment-date{font-size:1.7rem;margin-bottom:14px}.moment h3{font-size:1.3rem;margin-bottom:8px}.moment-en{margin-top:14px;font-size:.6rem}.forever-word{font-size:12vw;margin-top:40px}.vow-section{min-height:580px;padding:65px 7%}.vow-image{inset:0 -60%;background-position:70% 50%}.vow-content .eyebrow{font-size:.6rem}.vow-content h2{font-size:clamp(1.75rem,6.2vw,2.8rem);letter-spacing:.02em;line-height:1.8}.vow-content p{font-size:.95rem;line-height:2;margin:26px auto;max-width:310px}.vow-sign{font-size:1.7rem}.celebration{padding-top:45px}.celebration-grid{grid-template-columns:1fr;gap:45px;padding-top:45px}.celebration-heading{position:relative}.celebration-heading>.eyebrow{font-size:.65rem}.celebration-heading h2{max-width:65%}.date-stamp{position:absolute;right:0;top:30px;width:115px;padding:18px 9px;margin:0}.date-stamp strong{font-size:3.5rem}.date-stamp>span:first-child{font-size:.6rem}.date-stamp>span:last-child{font-size:.6rem}.celebration-heading .button{margin-top:25px;font-size:.8rem;padding:11px 18px;min-height:48px}.schedule-item{grid-template-columns:62px 1fr;gap:20px;padding-bottom:32px}.schedule-item time{font-size:1.3rem}.schedule-item:not(:last-child):before{left:71px}.schedule-item:after{left:68px;top:13px}.schedule-item>div{padding-left:11px}.schedule-item h3{font-size:1.3rem;margin-top:5px}.schedule-item>div>span{font-size:.6rem}.schedule-item p{font-size:.95rem}.details{padding-top:10px}.details-grid{grid-template-columns:1fr;padding-top:45px;gap:50px}.venue-card{max-width:440px;width:100%;margin:auto}.venue-card-inner{min-height:420px;padding:65px 20px 40px}.venue-card h2{font-size:2.4rem}.guest-notes>h2{font-size:2.25rem}.guest-note{gap:18px;margin-bottom:25px}.guest-notes .eyebrow{font-size:.65rem}.finale{min-height:560px;padding-top:75px;padding-bottom:75px}.finale-halo{width:440px;height:440px;top:52%}.finale-content>.eyebrow{font-size:.6rem}.finale-content h2{font-size:3rem;line-height:1.5}.finale-content>p{max-width:260px;margin:18px auto 28px;font-size:.95rem}.wish-button{font-size:.8rem;padding:14px 25px}.finale-date{margin-top:35px}.footer{padding:30px 7%;display:grid;grid-template-columns:1fr auto;gap:10px 20px}.footer-monogram{font-size:1.5rem}.footer p{font-size:.7rem;grid-column:1/-1;grid-row:2}.footer>span{grid-column:1;grid-row:3;font-size:.55rem}.footer>.text-button{grid-column:2;grid-row:1;font-size:.75rem}.opening-top,.opening-bottom{margin:26px 6%;font-size:.6rem;letter-spacing:.12em}.opening-center{padding:20px}.opening .eyebrow{font-size:.6rem}.opening h2{font-size:2.5rem;letter-spacing:.1em;line-height:1.6}.opening-art{background-position:63% 50%}.opening-names{font-size:1.15rem;gap:20px;margin-top:20px}.seal{height:102px;width:102px;margin-top:33px}.opening-hint{margin-top:23px}.opening-bottom{font-size:.7rem;margin-top:15px}.letter-dialog{padding:50px 27px 32px}.letter-body p{font-size:1rem}.toast{bottom:20px;font-size:.8rem;text-align:center;width:max-content}}
@media(max-width:360px){.hero h1{font-size:2.6rem}.hero-content{margin-top:65px}.section-kicker>span:last-child{font-size:.55rem}.hero-bottom>span{font-size:.6rem}.section-shell h2{font-size:2.15rem}.celebration-heading h2{font-size:2.1rem}.date-stamp{width:100px}.countdown strong{font-size:2.35rem}.countdown span{font-size:.5rem}.opening h2{font-size:2.15rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}.hero-art{transform:none}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .reveal{opacity:1;transform:none;transition:none}.motion-paused{scroll-behavior:auto}.motion-paused .hero-art{transform:none}
/* Readable captions, including compact mobile layouts. */
.brand-caption,.hero-coordinate,.hero-topline,.hero-eyebrow,.eyebrow,.section-kicker,.section-kicker>span:last-child,.countdown-caption .eyebrow,.countdown span,.moment-en,.schedule-item>div>span,.date-stamp>span:first-child,.date-stamp>span:last-child,.footer>span,.footer p,.hero-right-note>span,.opening-top,.opening-hint{font-size:.75rem}
.music-button,.hero-date,.hero-bottom,.scroll-cue,.opening-bottom,.opening-bottom .text-button{font-size:.875rem}
.story-header>p,.moment>p:not(.moment-date),.schedule-item p,.guest-note p,.vow-content p,.venue-card p,.finale-content>p{font-size:1rem}
.brand{min-width:0}.monogram{max-width:145px;overflow:hidden;text-overflow:ellipsis}.couple-names{flex-wrap:wrap}.couple-names>span{max-width:100%;overflow-wrap:anywhere}.venue-card .venue-address{overflow-wrap:anywhere}
@media(max-width:760px){.hero-bottom{align-items:flex-end}.hero-bottom>span{max-width:44%;text-align:right}.section-kicker{align-items:flex-start}.section-kicker>span:last-child{max-width:44%;text-align:right}.countdown{gap:5px}.countdown span{letter-spacing:0}.countdown>div{min-width:48px}.hero-topline{font-size:.75rem}.opening-top{gap:20px}.opening-top>span:first-child{max-width:70%}.date-stamp{width:120px}.date-stamp>span:last-child{font-size:.75rem;letter-spacing:0}.footer p{font-size:.75rem}.footer>span{font-size:.75rem}}
@media(max-width:360px){.hero-date{letter-spacing:0;gap:9px}.countdown span{font-size:.75rem}.countdown strong{font-size:2.2rem}.countdown>div{min-width:46px}.date-stamp{width:100px}.date-stamp>span:last-child{max-width:80px}.section-kicker{letter-spacing:.03em}.hero-bottom{gap:8px}.scroll-cue{font-size:.75rem}.hero-bottom>span{font-size:.75rem}}
@media print{body{background:white;color:#222}#stardust,.opening,.header,.hero-art,.hero-shade,.hero-topline,.hero-right-note,.hero-bottom,.button,.text-button,.scroll-progress,.vow-image,.vow-overlay,.finale,.footer,.story,.toast{display:none!important}.hero{min-height:0;background:white;padding:25px}.hero-content{margin:0;width:100%}.hero h1,.hero h1>span,.hero h1 em,.couple-names,.hero-date{color:#222;background:none}.hero h1{font-size:2.5rem}.section-shell{padding:25px}.reveal{opacity:1!important;transform:none!important}.invitation-grid{padding:20px 0;gap:30px}.countdown-wrap{display:none}.vow-section{min-height:0;background:white;color:#222;padding:20px}.vow-content h2,.vow-content h2 span{color:#222;font-size:1.75rem}.celebration-grid,.details-grid{padding-top:20px;gap:25px}.schedule-item{padding-bottom:15px}.section-shell h2{font-size:2rem}.invitation-copy>p,.vow-content p,.schedule-item p,.guest-note p,.venue-card p{color:#444}.venue-card-inner{min-height:0;padding:30px}.section-kicker{color:#555}.details,.invitation{background:white}.date-stamp strong,.schedule-item h3,.guest-note h3,.venue-card h2{color:#222}}
