:root{--cream:#fcf5ed;--peach:#f4d7c5;--pink:#edcfc6;--coral:#ae6252;--dark:#59342e;--text:#493c36;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#eadbd2;color:var(--text);font:400 16px/1.7 var(--sans)}body.modal-open{overflow:hidden}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #632b25;outline-offset:5px}button:disabled{cursor:wait;opacity:.6}[hidden]{display:none!important}main{max-width:1100px;margin:auto;background:var(--cream);overflow:hidden;box-shadow:0 0 80px #5a322014}h1,h2,h3,p{margin:0}h2,h3{font-family:var(--serif);font-weight:400;line-height:1.04;letter-spacing:-.045em}h2{font-size:clamp(2.8rem,5.8vw,4.6rem);color:var(--dark)}h3{font-size:2.5rem}em{font-weight:400}p+p{margin-top:22px}.eyebrow{font:500 .75rem/1.8 var(--sans);letter-spacing:.24em;text-wrap:balance}.section{position:relative;text-align:center;padding:100px 32px}.section>.reveal{max-width:650px;margin:auto}.section h2{margin:20px 0 28px}.section p:not(.eyebrow){text-wrap:pretty}.skip-link{position:fixed;top:-80px;left:20px;z-index:90;background:var(--cream);padding:12px}.skip-link:focus{top:12px}.progress{position:fixed;top:0;left:0;width:100%;height:3px;background:#b05a48;transform:scaleX(0);transform-origin:left;z-index:70}.hero{height:100svh;min-height:760px;max-height:1150px;position:relative;color:#fff8f0;background:#7d6051}.hero-photo,.hero-shade,.closing>img,.closing-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-photo{object-position:center 38%;animation:hero-drift 20s ease-in-out infinite alternate}.hero-shade{background:linear-gradient(180deg,#513a303b 0%,#9c4b3a10 22%,#85463745 48%,#8c493ed4 88%,#ae6252d9 100%)}.hero-top{position:absolute;z-index:2;top:30px;left:42px;right:42px;display:flex;align-items:center;justify-content:space-between}.hero-top>span:first-child{font:italic 1.9rem var(--serif)}.hero-top>span:last-child{font-size:.75rem;letter-spacing:.23em}.hero-copy{position:absolute;z-index:2;inset:auto 24px 24%;text-align:center}.hero-copy>.eyebrow{color:#fff6e8}h1{font-family:var(--serif);font-weight:400;line-height:.84;letter-spacing:-.06em;font-size:clamp(5.8rem,12vw,9.5rem);margin:26px 0 30px;display:flex;align-items:center;justify-content:center;gap:22px}.amp{font-size:.51em;font-style:italic;opacity:.88}.name-one,.name-two,.amp{animation:appear 1.5s both}.amp{animation-delay:.2s}.name-two{animation-delay:.35s}.hero-date{font-size:1rem;letter-spacing:.025em}.hero-date>span{display:block;font-size:.875rem;margin-top:3px}.entrance{animation:appear 1.4s .5s both}.music-intro{display:inline-flex;align-items:center;gap:12px;border:0;background:none;color:inherit;padding:12px 18px;margin-top:18px;font-size:.875rem}.round-play{border:1px solid #fff9;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;font-size:1.1rem}.scroll-cue{position:absolute;bottom:105px;left:50%;transform:translateX(-50%);z-index:3;display:flex;align-items:center;flex-direction:column;gap:14px;text-decoration:none;font-size:.7rem;letter-spacing:.23em;white-space:nowrap}.chevron{width:13px;height:13px;border-right:1px solid;border-bottom:1px solid;transform:rotate(45deg);animation:scroll-hint 2s infinite}.wave,.top-wave{position:absolute;left:0;width:100%;height:80px;pointer-events:none;z-index:3;display:block}.wave{bottom:-1px}.top-wave{top:-1px}.hero .wave{height:100px}.countdown{background:var(--peach);padding-top:50px;padding-bottom:85px}.date-line{margin-top:16px;letter-spacing:.15em;font-size:.875rem}.countdown h2{font-size:3rem;margin-top:36px}.timer{display:flex;justify-content:center;align-items:center;gap:26px;margin-top:32px}.timer>div{min-width:75px;display:flex;flex-direction:column}.timer strong{font-family:var(--serif);font-size:4.2rem;line-height:1;font-weight:400;color:#85483f;font-variant-numeric:tabular-nums}.timer span{font-size:.72rem;letter-spacing:.2em;margin-top:12px}.timer i{height:38px;width:1px;background:#a96a4f55}.small-note{font-size:.9rem;margin-top:30px}.memories{position:relative;background:var(--peach);padding:0 50px 58px}.memory-head{text-align:center;padding:0 0 32px}.memory-head h2{font-size:3rem;margin-top:12px}.film{position:relative;background:#000;height:690px;overflow:hidden;border-radius:200px 200px 10px 10px;isolation:isolate}.film>img{width:100%;height:100%;object-fit:cover;object-position:50% 45%;opacity:1;transform:scale(1.035);will-change:opacity,transform}.film-vignette{position:absolute;inset:0;background:linear-gradient(transparent 65%,#0008);pointer-events:none}.film-word{position:absolute;bottom:68px;left:34px;color:#fff6ed;font:italic 3.8rem var(--serif)}.film-controls{position:absolute;bottom:24px;left:34px;right:24px;display:flex;justify-content:space-between;align-items:center;color:white}.film-controls>span{font-size:.75rem;letter-spacing:.18em}.film-controls button{width:44px;height:44px;border:1px solid #fff8;background:#0003;color:white;border-radius:50%;font-size:1.25rem}.story{padding-top:76px;padding-bottom:100px}.fine-line{display:block;width:40px;height:1px;background:currentColor;opacity:.6;margin:30px auto}.story-text{font-family:var(--serif);font-size:1.65rem;line-height:1.5;max-width:550px;margin-left:auto;margin-right:auto}.handwritten{font:italic 2rem var(--serif);color:#a45645;padding-top:20px}.bridge{background:linear-gradient(145deg,#edcfc6,#f0cdbb);padding-top:110px;padding-bottom:130px}.bridge h2{font-size:clamp(2.9rem,5vw,4.1rem);line-height:1.14}.tiny-spark{font-size:2.5rem;display:inline-block;color:#a96a55;animation:float 5s ease-in-out infinite}.celebration{background:#fff9f2;padding-top:70px;padding-bottom:75px}.subheading{font:1.7rem var(--serif)}.venue{font:2.7rem var(--serif);color:var(--dark);margin-top:12px}.celebration .button{margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;border-radius:40px;text-decoration:none;padding:15px 30px;min-height:52px;border:1px solid transparent;font-size:.95rem;font-weight:500;transition:transform .25s,box-shadow .25s,background .25s}.button:hover{transform:translateY(-3px);box-shadow:0 5px 14px #673a281a}.button:active{transform:scale(.98)}.button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5}.primary{background:#a95446;color:#fff9f0;border-color:#a95446}.primary:hover{background:#964639}.outline{background:transparent;border-color:#9b6557;color:#744539}.light{background:#fff5e9;color:#834136}.dress{background:var(--pink);padding-top:110px;padding-bottom:95px}.dress-content{display:flex;align-items:center;justify-content:center;gap:60px}.dress-content>div{max-width:410px}.dress h2{margin:15px 0}.dress .subheading{margin-top:0}.dress p:not(.eyebrow):not(.subheading){font-size:.95rem;margin-top:18px}.line-icon{height:90px;width:90px;fill:none;stroke:#6a413a;stroke-width:1.25;flex-shrink:0}.gifts{background:#f6dfca;padding-top:120px;padding-bottom:100px}.gifts .button{margin-top:28px;min-width:180px}.rsvp{background:#ae6252;color:#fff5e9;padding-top:135px;padding-bottom:90px}.rsvp h2{color:inherit;font-size:clamp(3.4rem,6vw,5.2rem)}.rsvp .button{margin-top:28px;min-width:275px}.deadline{font-size:.72rem;letter-spacing:.17em;margin-top:28px}.response-status{font-size:.875rem;margin-top:20px;max-width:350px;margin-inline:auto}.response-status:empty{display:none}.closing{height:650px;position:relative;color:#fff8ef;background:#543a30}.closing>img{object-position:50% 48%}.closing-shade{background:linear-gradient(#54372933,#55392b99 55%,#9b5d4caa)}.closing-copy{position:absolute;inset:130px 24px auto;text-align:center;z-index:4}.closing h2{font-size:clamp(2.6rem,5vw,3.6rem);color:inherit;line-height:1.16}.closing-copy>p{font:italic 2.8rem var(--serif)}.heart{display:block;font-size:2rem;margin-top:16px;animation:heart-breathe 4s infinite}footer{background:var(--peach);text-align:center;padding:28px 20px 55px}.brand{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap;text-decoration:none;font:1rem var(--serif);color:#784638}.brand strong{font-weight:500}.brand-icon{font:italic 1.3rem var(--serif);border:1px solid #b0776666;border-radius:50%;width:27px;height:27px;display:inline-grid;place-items:center;margin-right:5px}.demo-note{font-size:.75rem;color:#80594b;margin-top:16px}.text-button{border:0;background:none;text-decoration:underline;text-underline-offset:5px;color:#774d42;font-size:.8rem;padding:12px}footer .text-button{margin-top:4px}.floating-music{position:fixed;right:24px;bottom:24px;z-index:20;background:#fcf5edf5;border:1px solid #b7847166;border-radius:40px;box-shadow:0 4px 25px #5033271a;color:#80483e;display:flex;align-items:center;gap:12px;min-height:50px;padding:14px 19px}.music-float-label{font-size:.8rem}.equalizer{display:flex;gap:3px;align-items:center;height:20px}.equalizer i{display:block;width:2px;height:8px;background:currentColor}.equalizer i:nth-child(2){height:16px}.equalizer i:nth-child(3){height:12px}.is-playing .equalizer i{animation:equalize .8s infinite alternate}.is-playing .equalizer i:nth-child(2){animation-delay:.3s}.is-playing .equalizer i:nth-child(3){animation-delay:.6s}.music-panel{position:fixed;right:24px;bottom:86px;width:320px;max-width:calc(100vw - 32px);background:var(--cream);padding:18px;border:1px solid #d3b7a4;border-radius:18px;box-shadow:0 12px 50px #44282038;z-index:21}.music-panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.music-panel-heading .eyebrow{font-size:.65rem}.music-panel-heading p{font:1.5rem var(--serif)}.music-panel .close{position:static;flex-shrink:0}.music-panel iframe,#youtube-player{width:100%;height:200px;border:0;border-radius:8px;background:#ecd9ce}.music-status{font-size:.8rem;margin-top:10px;line-height:1.5}.compact{padding:8px 15px;min-height:40px;font-size:.8rem;margin-top:12px}.music-fallback{display:block;font-size:.75rem;margin-top:10px}.close{position:absolute;right:16px;top:14px;background:transparent;border:0;border-radius:50%;width:40px;height:40px;color:#6b453d;font-size:1.8rem;line-height:1;display:grid;place-items:center}.close:hover{background:#eacabb66}dialog{border:1px solid #e4cfbe;border-radius:24px;background:var(--cream);color:var(--text);padding:0;width:calc(100% - 32px);max-width:520px;max-height:90svh;overflow:auto;box-shadow:0 24px 100px #2c160b44}dialog::backdrop{background:#3c261a80;backdrop-filter:blur(7px)}dialog[open]{animation:modal-in .3s both}.dialog-body{padding:44px 34px 32px}dialog h2{font-size:3rem;margin:16px 0 20px}.form-demo{font-size:.8rem;color:#78594d;line-height:1.65;background:#edd9cc66;border-radius:10px;padding:12px 14px;margin:18px 0}.dialog-body>.button{margin-top:24px}.dialog-body>p:not(.eyebrow){font-size:.95rem}form{margin-top:24px}form>label,#attendance-fields>label{display:block;font-size:.875rem;margin-top:20px;margin-bottom:7px}label>span{font-size:.8rem;color:#846f64}input:not([type=radio]),textarea{width:100%;padding:12px 14px;border:1px solid #cdb6a4;border-radius:10px;background:#fffbf6;color:var(--text);font-size:1rem}textarea{resize:vertical;min-height:80px}input::placeholder,textarea::placeholder{color:#8a7d71;font-size:.875rem}fieldset{border:0;padding:0;margin:22px 0 0}legend{font-size:.875rem;padding:0;margin-bottom:10px}.radio-row{display:flex;gap:10px}.radio-row label{flex:1;border:1px solid #d5b5a5;border-radius:12px;padding:12px 8px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:.85rem;cursor:pointer}.radio-row label:has(:checked){background:#f1d1bf;border-color:#a95446}input[type=radio]{accent-color:#a95446;width:18px;height:18px}.field-help{font-size:.75rem;line-height:1.5;color:#7b5b4e;margin:7px 0 0}.form-submit{width:100%;margin-top:26px}#rsvp-success{text-align:center;padding:20px 0}.success-heart{font-size:3rem;color:#ae6252}#rsvp-success h3{margin:15px 0}#rsvp-success>.button{margin-top:15px}#rsvp-success>.text-button{display:block;margin:12px auto 0}.reveal{opacity:1;transform:none}.motion-ready .reveal{opacity:0;transform:translateY(26px);transition:opacity 1s,transform 1s}.motion-ready .reveal.visible{opacity:1;transform:translateY(0)}.motion-paused *{animation-play-state:paused!important}.motion-paused .reveal{opacity:1!important;transform:none!important;transition:none!important}.noscript{padding:20px;text-align:center;background:#fff8ec}@keyframes appear{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-drift{from{transform:scale(1.01)}to{transform:scale(1.065)}}@keyframes scroll-hint{0%,100%{translate:0 -3px;opacity:.55}50%{translate:0 5px;opacity:1}}@keyframes float{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-7px) rotate(8deg)}}@keyframes heart-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes equalize{to{height:4px}}@keyframes modal-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1200px){body{padding:24px 0}main{border-radius:12px}.hero{height:calc(100svh - 48px)}.floating-music{right:max(24px,calc((100vw - 1100px)/2 + 20px))}.music-panel{right:max(24px,calc((100vw - 1100px)/2 + 20px))}}
@media(max-width:600px){.section{padding-left:25px;padding-right:25px}.hero{min-height:690px;max-height:960px}.hero-top{left:25px;right:25px;top:22px}.hero-top>span:last-child{font-size:.65rem}.hero-copy{bottom:25%;left:18px;right:18px}h1{font-size:5.8rem;display:grid;grid-template-columns:auto auto;gap:0 12px;width:max-content;margin:22px auto 24px}.name-one{grid-column:1/3;text-align:left}.amp{grid-column:1;font-size:.46em;align-self:center;padding-left:10px}.name-two{grid-column:2;margin-top:8px}.hero-copy>.eyebrow{font-size:.7rem}.hero-date{font-size:.95rem}.hero-date span{font-size:.8rem}.music-intro{margin-top:12px}.scroll-cue{bottom:94px;font-size:.65rem}.hero .wave{height:75px}.countdown{padding-top:34px;padding-bottom:70px}.countdown h2{font-size:2.6rem;margin-top:25px}.timer{gap:18px}.timer strong{font-size:3.5rem}.timer>div{min-width:65px}.timer span{font-size:.65rem}.eyebrow{font-size:.68rem;letter-spacing:.19em}.memories{padding:0 0 48px}.memory-head{padding-inline:24px}.memory-head h2{font-size:2.6rem}.film{height:520px;border-radius:100px 100px 0 0;margin:0 18px}.film-word{font-size:3rem;left:24px}.film-controls{left:24px}.memories .wave{height:60px}.story{padding-top:52px;padding-bottom:65px}.story h2{font-size:3.1rem}.story-text{font-size:1.45rem;line-height:1.5}.handwritten{font-size:1.8rem}.bridge{padding-top:95px;padding-bottom:115px}.bridge h2{font-size:2.8rem}.celebration{padding-top:55px;padding-bottom:60px}.celebration h2{font-size:3rem}.venue{font-size:2.5rem}.dress{padding-top:100px;padding-bottom:66px}.dress-content{gap:16px;text-align:left}.dress-content .eyebrow{max-width:230px}.dress h2{font-size:2.8rem}.line-icon{width:64px;height:64px}.gifts{padding-top:95px;padding-bottom:70px}.gifts h2{font-size:3.2rem}.gifts p:not(.eyebrow){font-size:.95rem}.rsvp{padding-top:105px;padding-bottom:75px}.rsvp h2{font-size:3.35rem}.rsvp .button{min-width:0;width:100%;max-width:320px}.deadline{font-size:.65rem;letter-spacing:.14em}.closing{height:560px}.closing-copy{top:130px}.closing h2{font-size:2.7rem}.closing-copy>p{font-size:2.5rem}.floating-music{right:16px;bottom:16px;min-height:48px;padding:14px}.music-float-label{display:none}.music-panel{right:16px;bottom:76px}.dialog-body{padding:42px 23px 28px}dialog h2{font-size:2.65rem}.radio-row label{font-size:.8rem}.wave,.top-wave{height:65px}footer{padding-bottom:60px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}body:not(.motion-enabled) *,body:not(.motion-enabled) *::before,body:not(.motion-enabled) *::after{animation:none!important;transition:none!important}body:not(.motion-enabled) .reveal{opacity:1!important;transform:none!important}}

.music-feedback{position:fixed;right:24px;bottom:86px;z-index:22;max-width:min(320px,calc(100vw - 32px));padding:12px 18px;border:1px solid #cba491;border-radius:14px;background:#fcf5ed;color:#59342e;font-size:.875rem;box-shadow:0 6px 24px #44282022}#credits-dialog p{font-size:.85rem;line-height:1.65}#photo-credits{margin-top:20px}#photo-credits a{font-size:.85rem}#credits-dialog h3{font-size:1.8rem;margin:18px 0 12px}

/* Visible, ongoing motion; controls also allow an explicit opt-in on reduced-motion devices. */
.hero{overflow:hidden}.hero-photo{object-position:50% 30%;animation:hero-living 11s ease-in-out infinite alternate}.hero-light{position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(ellipse at 20% 55%,#f9d9b22b,transparent 55%);mix-blend-mode:screen;animation:light-drift 8s ease-in-out infinite alternate;z-index:1}.hero-copy{bottom:19%}.hero-copy h1{animation:names-living 7s ease-in-out 1.5s infinite}.hero-motion{position:absolute;right:30px;top:82px;z-index:5;display:flex;gap:8px;align-items:center;border:1px solid #fff7;border-radius:30px;background:#573c3c42;backdrop-filter:blur(6px);color:#fff8ee;padding:9px 13px;min-height:42px;font-size:.75rem}.hero-motion>span:first-child{font-size:1rem}.hero .wave{width:108%;left:-4%;animation:wave-living 7s ease-in-out infinite alternate}.film{max-width:680px;margin-inline:auto;height:760px}.film>img{object-position:50% 35%}.motion-ready .reveal{transition-duration:1.2s;transform:translateY(38px)}.motion-ready .reveal.visible{transform:none}.reveal.visible h2{animation:heading-enter 1.3s ease-out both}.reveal.visible .fine-line{animation:line-enter 1.5s ease-out both}.reveal.visible .button{animation:button-enter 1.2s .15s both}.tiny-spark{animation:float 4s ease-in-out infinite}.closing>img{object-position:50% 30%;animation:closing-living 12s ease-in-out infinite alternate}.closing-copy{top:160px}.motion-paused .reveal h2,.motion-paused .reveal .button{opacity:1!important;transform:none!important}
@keyframes hero-living{from{transform:scale(1.015) translateY(0)}to{transform:scale(1.12) translateY(-1%)}}@keyframes names-living{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes light-drift{from{transform:translate(-4%,-2%);opacity:.4}to{transform:translate(5%,2%);opacity:1}}@keyframes wave-living{from{transform:translateX(-1%) scaleY(.92)}to{transform:translateX(1%) scaleY(1.08)}}@keyframes heading-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes line-enter{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes button-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes closing-living{from{transform:scale(1.01)}to{transform:scale(1.08)}}
@media(max-width:600px){.hero-copy{bottom:19%}.hero-copy h1{font-size:clamp(4.3rem,20vw,5.15rem)}.hero-motion{top:67px;right:22px;font-size:.68rem;min-height:38px;padding:7px 10px}.hero-date{font-size:.88rem}.hero-photo{object-position:50% 30%}.film{height:520px;margin-inline:18px}.closing-copy{top:160px}.scroll-cue{bottom:85px}}

.hero-photo{object-position:50% 0%;transform-origin:50% 15%}
/* Clip the animated closing photograph before it can overlap the footer. */
.closing{overflow:hidden;isolation:isolate}

.motion-paused .name-one,.motion-paused .name-two,.motion-paused .amp,.motion-paused .entrance{opacity:1!important;transform:none!important}

.film>img{transform-origin:50% 20%}.closing{height:760px}.closing>img{object-position:50% 0%;transform-origin:50% 15%}.closing-copy{top:auto;bottom:95px}.closing-shade{background:linear-gradient(180deg,#51392b10 15%,#55392b44 40%,#593326c9 85%)}@media(max-width:600px){.closing{height:650px}.closing-copy{top:auto;bottom:90px}.closing h2{font-size:2.45rem}}
