:root{--ivory:#FAF8F5;--paper:#F4EFE8;--champagne:#C5A880;--olive:#4A5844;--charcoal:#1F2421;--muted:#6F736E;--line:rgba(31,36,33,.15);--serif:'Cormorant Garamond',serif;--sans:'Montserrat',sans-serif}
*{box-sizing:border-box}html{background:var(--ivory)}body{margin:0;overflow-x:hidden}.skip-link{position:fixed;left:1rem;top:-5rem;z-index:100;padding:.75rem 1rem;background:var(--charcoal);color:white}.skip-link:focus{top:1rem}.hidden{display:none!important}
.site-header{position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:1rem clamp(1.25rem,4vw,4rem);color:#fff;transition:.4s ease}.site-header.scrolled{background:rgba(250,248,245,.92);box-shadow:0 1px 0 rgba(31,36,33,.08);color:var(--charcoal);backdrop-filter:blur(16px)}.monogram{font:500 1.6rem/1 var(--serif);letter-spacing:.08em}.monogram span{color:var(--champagne);font-style:italic;margin:0 .1em}.nav-links{display:flex;align-items:center;gap:clamp(1rem,3vw,2.5rem);font-size:.69rem;text-transform:uppercase;letter-spacing:.14em}.nav-links a{transition:opacity .2s}.nav-links a:hover{opacity:.65}.nav-rsvp{padding:.68rem 1rem;border:1px solid currentColor}.music-toggle{position:fixed;right:1.15rem;bottom:1.15rem;z-index:60;display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;border:1px solid rgba(255,255,255,.3);border-radius:99px;background:rgba(31,36,33,.9);color:white;box-shadow:0 10px 35px rgba(0,0,0,.18);backdrop-filter:blur(12px);font:500 .65rem var(--sans);letter-spacing:.12em;text-transform:uppercase}.music-bars{display:flex;align-items:center;gap:2px;height:14px}.music-bars i{display:block;width:2px;height:7px;background:var(--champagne);transform-origin:bottom}.music-toggle.is-playing .music-bars i{animation:music 1s ease-in-out infinite}.music-toggle.is-playing .music-bars i:nth-child(2){animation-delay:.2s}.music-toggle.is-playing .music-bars i:nth-child(3){animation-delay:.4s}@keyframes music{50%{height:14px}}
.hero{position:relative;min-height:100svh;display:grid;grid-template-columns:1fr;background:var(--charcoal);color:white}.hero-photo{min-height:54svh;position:relative;overflow:hidden;background:linear-gradient(145deg,#293029,#596453)}.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,rgba(31,36,33,.82) 100%)}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.75) contrast(.95)}.photo-fallback:before{content:"F  ·  A";position:absolute;inset:0;display:grid;place-items:center;font:italic 14vw var(--serif);color:rgba(250,248,245,.22);background:radial-gradient(circle at 50% 40%,rgba(197,168,128,.2),transparent 38%),linear-gradient(135deg,#5b6756,#242a25)}.hero-photo-caption{position:absolute;left:1.5rem;bottom:1.6rem;z-index:2;font:italic 1rem var(--serif);letter-spacing:.08em}.hero-content{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 1.4rem 5.5rem;background:radial-gradient(circle at 50% 15%,rgba(197,168,128,.12),transparent 35%)}.eyebrow,.section-kicker{margin:0 0 1rem;font-size:.68rem;line-height:1.6;text-transform:uppercase;letter-spacing:.24em}.hero h1{margin:0;font:400 clamp(3.5rem,15vw,7.8rem)/.82 var(--serif)}.hero h1 em,.closing-content h2 em{display:block;color:var(--champagne);font-weight:400}.ornament{display:flex;align-items:center;gap:.75rem;width:9rem;margin:1.7rem 0 1rem;color:var(--champagne)}.ornament span{height:1px;flex:1;background:currentColor}.ornament b{font-weight:400;font-size:.65rem}.hero-date{font:500 1.25rem var(--serif);letter-spacing:.08em}.hero-copy{max-width:28rem;margin:.8rem 0 1.8rem;color:rgba(255,255,255,.72);font:400 1.05rem/1.65 var(--serif)}.button{display:inline-flex;min-height:3.1rem;align-items:center;justify-content:center;padding:.85rem 1.5rem;border:1px solid transparent;font-size:.68rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;transition:transform .2s,background .2s,color .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--champagne);color:var(--charcoal)}.button-primary:hover{background:#d3ba98}.scroll-cue{position:absolute;bottom:1.1rem;left:50%;z-index:3;display:flex;flex-direction:column;align-items:center;gap:.4rem;transform:translateX(-50%);font-size:.57rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.65)}.scroll-cue span{display:block;width:1px;height:1.8rem;background:rgba(255,255,255,.5);animation:scroll 1.8s ease-in-out infinite}@keyframes scroll{50%{transform:scaleY(.45);transform-origin:bottom}}
.section-pad{padding:5.5rem clamp(1.3rem,5vw,5rem)}.section-heading{text-align:center;max-width:42rem;margin:0 auto 3.2rem}.section-heading>span,.section-kicker{color:var(--olive);font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.23em}.section-heading h2,.countdown-section h2,.dress-copy h2,.rsvp-intro h2{margin:.45rem 0 .7rem;font:400 clamp(2.8rem,9vw,5rem)/.95 var(--serif)}.section-heading p,.dress-copy>p,.rsvp-intro>p{color:var(--muted);font:400 1.1rem/1.7 var(--serif)}.countdown-section{background:var(--paper);text-align:center}.countdown-section h2{margin-bottom:2.5rem}.countdown{display:grid;grid-template-columns:repeat(4,1fr);max-width:48rem;margin:auto}.countdown div{padding:.4rem;border-right:1px solid var(--line)}.countdown div:last-child{border:0}.countdown strong{display:block;font:400 clamp(2rem,9vw,4.8rem)/1 var(--serif);font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:.55rem;color:var(--muted);font-size:.55rem;text-transform:uppercase;letter-spacing:.18em}
.timeline-section{background:var(--ivory)}.timeline{position:relative;max-width:44rem;margin:auto;padding:0;list-style:none}.timeline:before{content:"";position:absolute;left:5.1rem;top:1.8rem;bottom:1.8rem;width:1px;background:var(--champagne)}.timeline li{display:grid;grid-template-columns:4rem 2.2rem 1fr;gap:1rem;align-items:center;margin:0 0 2.6rem}.timeline time{text-align:right;font:500 .7rem var(--sans);letter-spacing:.08em}.timeline-icon{z-index:1;display:grid;width:2.2rem;height:2.2rem;place-items:center;border:1px solid var(--champagne);border-radius:50%;background:var(--ivory);color:var(--olive)}.timeline h3{margin:0;font:500 1.8rem var(--serif)}.timeline p{margin:.15rem 0;color:var(--muted);font:1rem var(--serif)}
.locations-section{position:relative;background:var(--olive);color:white}.locations-section:before{content:"";position:absolute;inset:0;opacity:.06;background-image:radial-gradient(#fff 1px,transparent 1px);background-size:22px 22px}.locations-section>*{position:relative}.section-heading.light>span{color:var(--champagne)}.section-heading.light p{color:rgba(255,255,255,.65)}.location-grid{display:grid;gap:1rem;max-width:65rem;margin:auto}.location-card{position:relative;padding:2.4rem 1.6rem;background:var(--ivory);color:var(--charcoal);overflow:hidden}.location-number{position:absolute;right:1rem;top:.3rem;color:rgba(197,168,128,.25);font:400 5rem/1 var(--serif)}.location-card h3{max-width:85%;margin:.5rem 0;font:500 2rem/1.05 var(--serif)}.location-card address{min-height:3.2rem;color:var(--muted);font:normal .84rem/1.6 var(--sans)}.card-actions{display:flex;gap:1.25rem;margin-top:1.5rem}.text-link{padding-bottom:.3rem;border-bottom:1px solid var(--champagne);font-size:.65rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.is-disabled{cursor:not-allowed;opacity:.48;pointer-events:none}.calendar-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2rem}.button-light{background:var(--ivory);color:var(--charcoal)}.button-outline-light{border-color:rgba(255,255,255,.5);color:white}
.dress-section{background:var(--paper)}.dress-layout{display:grid;gap:3rem;max-width:62rem;margin:auto;align-items:center}.dress-mark{width:min(75vw,20rem);aspect-ratio:1;margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--champagne);border-radius:50%;box-shadow:inset 0 0 0 8px var(--paper),inset 0 0 0 9px var(--champagne)}.dress-mark span{font:italic 5rem/.8 var(--serif);color:var(--olive)}.dress-mark small{margin-top:1rem;font-size:.6rem;text-transform:uppercase;letter-spacing:.25em}.dress-copy{max-width:31rem}.palette{display:flex;gap:.65rem;margin:1.6rem 0}.palette span{width:2rem;height:2rem;border-radius:50%;background:var(--swatch);box-shadow:0 0 0 3px var(--paper),0 0 0 4px rgba(31,36,33,.18)}.reserved-colors,.adults-only{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-top:1px solid var(--line)}.reserved-colors>span{width:2.6rem;height:2.6rem;flex:none;border:1px solid #d7d1c9;border-radius:50%;background:linear-gradient(90deg,#fff 50%,#eee8dc 50%)}.reserved-colors p,.adults-only p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.6}.reserved-colors strong{display:block;color:var(--charcoal);font-size:.68rem;text-transform:uppercase;letter-spacing:.09em}.adults-only span{display:grid;width:2.7rem;height:2.7rem;flex:none;place-items:center;border:1px solid var(--olive);border-radius:50%;font:600 .75rem var(--sans);color:var(--olive)}
.gallery-section{overflow:hidden;background:var(--charcoal);color:white}.gallery-heading>span{color:var(--champagne)}.gallery-heading p{color:rgba(255,255,255,.58)}.gallery-shell{margin-inline:calc(clamp(1.25rem,5vw,5rem)*-1)}.gallery-viewport{overflow:hidden;cursor:grab;touch-action:pan-y;outline:none}.gallery-viewport:active{cursor:grabbing}.gallery-viewport:focus-visible{box-shadow:inset 0 0 0 2px var(--champagne)}.gallery-track{display:flex;gap:clamp(.75rem,2vw,1.4rem);width:max-content;will-change:transform;user-select:none}.gallery-slide{position:relative;width:clamp(15.5rem,67vw,30rem);aspect-ratio:4/5;margin:0;flex:none;overflow:hidden;background:#2a302b}.gallery-slide:nth-child(3n){aspect-ratio:5/4}.gallery-slide img{width:100%;height:100%;object-fit:cover;filter:saturate(.82) contrast(.96);pointer-events:none;transition:filter .45s,transform .8s}.gallery-slide:hover img{filter:saturate(1) contrast(1);transform:scale(1.018)}.gallery-slide:after{content:"";position:absolute;inset:auto 0 0;height:35%;background:linear-gradient(transparent,rgba(31,36,33,.55));pointer-events:none}.gallery-slide figcaption{position:absolute;right:1rem;bottom:.8rem;z-index:1;font:400 .72rem var(--serif);letter-spacing:.14em;color:rgba(255,255,255,.82)}.gallery-controls{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin-top:1.8rem}.gallery-controls button{display:grid;width:3rem;height:3rem;place-items:center;border:1px solid rgba(255,255,255,.28);border-radius:50%;color:white;transition:border-color .2s,background .2s}.gallery-controls button:hover,.gallery-controls button:focus-visible{border-color:var(--champagne);background:rgba(197,168,128,.1);outline:none}.gallery-controls p{min-width:4.5rem;margin:0;text-align:center;color:rgba(255,255,255,.45);font:.62rem var(--sans);letter-spacing:.16em}.gallery-controls p span{color:white}
.gifts-section{background:var(--ivory)}.gift-grid{display:grid;gap:1rem;max-width:65rem;margin:auto}.gift-card{min-height:13rem;padding:2rem;border:1px solid var(--line);background:white;transition:transform .25s,box-shadow .25s}.gift-card:not(.is-disabled):hover{transform:translateY(-4px);box-shadow:0 18px 45px rgba(31,36,33,.08)}.gift-card small{font-size:.59rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.store-card{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.store-card strong{margin:.8rem 0;font:500 2rem var(--serif)}.store-card span{font-size:.66rem;color:var(--muted)}.bank-card{grid-column:1/-1;background:var(--charcoal);color:white}.bank-card h3{margin:.55rem 0 1.2rem;font:400 2rem var(--serif)}.bank-card dl{display:grid;gap:.8rem;margin:0}.bank-card dl div{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.6rem;border-bottom:1px solid rgba(255,255,255,.13)}.bank-card dt{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:rgba(255,255,255,.55)}.bank-card dd{margin:0;text-align:right;font-size:.75rem}.copy-button{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:1.2rem;padding:.85rem 1rem;border:1px solid var(--champagne);color:var(--champagne);font:600 .64rem var(--sans);letter-spacing:.12em;text-transform:uppercase}.copy-button:disabled{opacity:.45;cursor:not-allowed}
.rsvp-section{display:grid;gap:3rem;background:var(--paper)}.rsvp-intro{max-width:29rem}.rsvp-date{padding-top:1.2rem;border-top:1px solid var(--champagne);color:var(--olive)!important;font-size:1.4rem!important;letter-spacing:.2em}.rsvp-form{display:grid;grid-template-columns:1fr;gap:1.2rem;padding:1.5rem;background:var(--ivory);box-shadow:0 25px 65px rgba(31,36,33,.08)}.field{display:flex;flex-direction:column;gap:.5rem}.field label,.field legend{font-size:.68rem;font-weight:600;line-height:1.5;letter-spacing:.05em;text-transform:uppercase}.field input[type=text],.field input[type=tel],.field select{width:100%;height:3rem;padding:.65rem .75rem;border:0;border-bottom:1px solid var(--line);border-radius:0;outline:0;background:transparent;font:400 .85rem var(--sans);transition:border .2s}.field input:focus,.field select:focus{border-color:var(--olive);box-shadow:0 1px 0 var(--olive)}fieldset.field{margin:0;padding:0;border:0}.choice-field{gap:.75rem}.radio-card{display:flex!important;align-items:center;gap:.9rem;padding:1rem;border:1px solid var(--line);background:white;cursor:pointer;text-transform:none!important}.radio-card:has(input:checked){border-color:var(--olive);box-shadow:inset 3px 0 var(--olive)}.radio-card input{accent-color:var(--olive)}.radio-card span{display:flex;flex-direction:column;gap:.2rem}.radio-card b{font-size:.76rem}.radio-card small{color:var(--muted);font:400 .72rem var(--sans)}.form-conditional{display:grid;grid-template-columns:1fr;gap:1.2rem;transition:opacity .2s}.form-conditional.is-hidden{display:none}.checkbox-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.55rem}.checkbox-grid label{display:flex;align-items:center;gap:.45rem;padding:.65rem;background:white;font-size:.64rem;text-transform:none}.checkbox-grid input{accent-color:var(--olive)}.field-error{min-height:.8rem;color:#963f3f;font-size:.65rem}.field.has-error input,.field.has-error select{border-color:#963f3f}.honeypot{position:absolute;left:-9999px}.submit-button{width:100%;border:0;cursor:pointer}.submit-button:disabled{cursor:wait;opacity:.7}.spinner{display:none;width:1rem;height:1rem;margin-left:.7rem;border:2px solid rgba(31,36,33,.25);border-top-color:var(--charcoal);border-radius:50%;animation:spin .8s linear infinite}.is-loading .spinner{display:block}@keyframes spin{to{transform:rotate(360deg)}}.form-status{min-height:1.2rem;text-align:center;font-size:.75rem}.form-status.success{padding:1rem;background:#edf2ea;color:#33422f}.form-status.error{padding:1rem;background:#f7e9e7;color:#7c302c}
.closing-section{min-height:55svh;display:grid;place-items:center;padding:5rem 1.5rem;background:linear-gradient(rgba(31,36,33,.7),rgba(31,36,33,.86)),linear-gradient(135deg,#707a69,#252b26);color:white;text-align:center}.closing-content h2{margin:0;font:400 clamp(3.4rem,14vw,7rem)/.8 var(--serif)}.closing-content p:last-child{margin-top:2rem;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.7)}footer{display:flex;align-items:center;justify-content:space-between;padding:1.4rem;background:var(--charcoal);color:rgba(255,255,255,.45);font-size:.6rem;letter-spacing:.08em}footer a{color:var(--champagne)}.toast{position:fixed;left:50%;bottom:5rem;z-index:100;min-width:12rem;padding:.8rem 1.2rem;border-radius:2px;background:var(--charcoal);color:white;text-align:center;font-size:.72rem;box-shadow:0 12px 35px rgba(0,0,0,.2);transform:translate(-50%,2rem);opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:translate(-50%,0);opacity:1}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
@media (min-width:720px){.hero{grid-template-columns:56% 44%}.hero-photo{min-height:100svh}.hero-content{padding:7rem 3rem}.hero h1 em{display:inline}.hero-photo-caption{left:2rem;bottom:2rem}.scroll-cue{left:78%}.location-grid{grid-template-columns:1fr 1fr}.gift-grid{grid-template-columns:1fr 1fr}.bank-card dl{grid-template-columns:repeat(3,1fr)}.bank-card dl div{display:block}.bank-card dd{text-align:left;margin-top:.35rem}.rsvp-form{grid-template-columns:1fr 1fr;padding:2.3rem}.full{grid-column:1/-1}.form-conditional{grid-template-columns:1fr 1fr}.dress-layout{grid-template-columns:.85fr 1.15fr}.gallery-slide{width:clamp(20rem,35vw,31rem)}.rsvp-section{grid-template-columns:.78fr 1.22fr;align-items:start}.section-pad{padding-top:7rem;padding-bottom:7rem}.timeline li{grid-template-columns:7rem 2.2rem 1fr}.timeline:before{left:8.1rem}}
@media (min-width:1050px){.music-toggle{right:2rem;bottom:2rem}.location-card{padding:3.2rem}.gift-grid{grid-template-columns:1fr 1fr 1.25fr}.bank-card{grid-column:auto}.bank-card dl{display:block}.bank-card dl div{display:flex}.bank-card dd{text-align:right;margin:0}.rsvp-section{padding-left:max(7vw,5rem);padding-right:max(7vw,5rem)}}
@media (max-width:600px){.nav-links a:not(.nav-rsvp){display:none}.music-label{display:none}.music-toggle{width:2.8rem;height:2.8rem;justify-content:center;padding:0}.hero-content{margin-top:-1px}.countdown{margin-inline:-.75rem}.countdown strong{font-size:2.35rem}.location-card{min-height:16rem}.rsvp-form{padding:1.25rem}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
