:root{--navy:#19212d;--wine:#55202c;--ivory:#f5f1eb;--ink:#26262a;--muted:#706862;--line:#d9cec4}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:'DM Sans',sans-serif}::selection{background:#d7b8b5;color:var(--navy)}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:2px solid #9c5962;outline-offset:5px}.notice{padding:10px 20px;background:#e8dcd4;color:#55202c;text-align:center;font-size:11px;letter-spacing:.02em}.top{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 6%;gap:30px;background:#f9f6f1}.brand{font:500 27px 'Cormorant Garamond',serif;white-space:nowrap}.brand i{color:var(--wine)}.top nav{display:flex;gap:34px;font-size:11px;color:#514d4b}.nav-link{font-size:11px;border-bottom:1px solid var(--wine);padding:10px 0}.nav-link span{margin-left:20px;color:var(--wine)}.hero{position:relative;min-height:670px;display:flex;align-items:center;justify-content:center;color:white;text-align:center;background:#1c2228}.hero-photo,.hero-photo:after{position:absolute;inset:0}.hero-photo:after{content:'';background:linear-gradient(90deg,rgba(16,21,29,.67),rgba(20,20,22,.32),rgba(16,21,29,.6))}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 58%}.hero-copy{position:relative;padding:90px 25px 115px;max-width:900px}.hero-intro{font:italic 23px 'Cormorant Garamond',serif;margin-bottom:22px}h1,h2,h3,blockquote{font-family:'Cormorant Garamond',serif;font-weight:400}h1{font-size:clamp(72px,9.3vw,140px);line-height:.8;letter-spacing:-.035em;margin:0}h1 i{font-size:.68em;font-weight:400}.hero-divider{display:flex;align-items:center;justify-content:center;gap:14px;color:#e6d7cf;font-size:16px;margin:30px auto 24px}.hero-divider span{width:60px;height:1px;background:#d5c1ba}.hero-sub{font-size:13px;line-height:1.8}.hero-date{font-size:10px;letter-spacing:.16em;text-transform:uppercase;margin:28px 0}.button{display:inline-flex;align-items:center;gap:38px;padding:17px 21px;font-size:11px}.button.light{border:1px solid rgba(255,255,255,.8);color:#fff}.button:hover{background:#fff;color:var(--navy)}.scroll-hint{position:absolute;bottom:24px;font-size:10px;letter-spacing:.08em}.scroll-hint span{margin-left:10px}.wrap{width:min(1160px,88%);margin:auto}.welcome{padding:130px 0;display:grid;grid-template-columns:1fr 3fr 1fr;gap:30px}.welcome-aside,.welcome-side{font-size:9px;line-height:1.9;letter-spacing:.15em;color:#8d7770}.welcome-aside span,.welcome-side span{display:block;color:#8a5260;font-size:19px;margin-top:25px}.welcome-side{text-align:right;align-self:end;letter-spacing:.05em}.welcome-main{text-align:center}.welcome h2,.section-top h2,.faq h2,.rsvp h2{font-size:clamp(48px,5.6vw,78px);line-height:.96;letter-spacing:-.03em;margin:0 0 25px}em{color:var(--wine);font-weight:400}.welcome-main>p{max-width:490px;margin:0 auto;color:var(--muted);font-size:13px;line-height:1.95}.signature{font:italic 28px 'Cormorant Garamond',serif;color:var(--wine);margin-top:30px}.celebration{background:#e9e2d9;padding:105px 0}.section-top{display:flex;align-items:end;justify-content:space-between;gap:50px;margin-bottom:55px}.section-top h2{margin-bottom:0}.section-top>p{max-width:285px;margin:0 0 4px;color:var(--muted);font-size:12px;line-height:1.9}.overline{font-size:10px;letter-spacing:.16em;color:var(--wine);margin:0 0 24px}.event-grid{display:grid;grid-template-columns:1fr 1fr}.event{padding:38px 45px 42px;background:#f8f5f0;min-height:435px}.event-dark{background:var(--navy);color:#f8f3ed}.event-top{display:flex;justify-content:space-between;align-items:start;font-size:10px;letter-spacing:.14em;color:#8a6d68}.event-dark .event-top{color:#c1aaa6}.symbol{font-size:26px}.event h3{font-size:52px;line-height:.9;margin:27px 0 32px}.event-dark h3 em{color:#d7b8b8}.event-info{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:12px;line-height:1.75;color:#706862}.event-info strong{color:var(--ink);font-weight:600}.event-dark .event-info{color:#c3bdba}.event-dark .event-info strong{color:#f6f0ea}.pending-link{display:block;border-top:1px solid #d5cbc2;padding-top:18px;margin-top:14px;font-size:10px;color:#866d68}.event-dark .pending-link{border-color:#505965;color:#c9b8b1}.itinerary{padding:120px 0}.timeline{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #bdaaa2}.timeline>div{position:relative;padding:30px 30px 0 0}.timeline-dot{position:absolute;top:-5px;width:9px;height:9px;border-radius:50%;background:var(--wine)}.time{font-size:9px;letter-spacing:.12em;color:#8d6a68}.timeline h3{font-size:32px;margin:15px 0 8px}.timeline div>p:last-child{font-size:12px;color:var(--muted);line-height:1.7}.photo-band{min-height:420px;background:linear-gradient(#151a20a8,#151a20b5),url('boda.png') center 37%/cover;display:grid;place-items:center;text-align:center;color:#fff;padding:60px 20px}.photo-band p,.closing>p{font-size:9px;letter-spacing:.17em}.photo-band blockquote{font-size:clamp(42px,5vw,72px);line-height:1;margin:27px 0;font-style:italic}.guest{padding:120px 0}.guest-list{border-top:1px solid var(--line)}.guest-list article{display:grid;grid-template-columns:65px 1fr 150px;gap:30px;align-items:start;padding:30px 0;border-bottom:1px solid var(--line)}.guest-index{color:#9d7e79;font:italic 23px 'Cormorant Garamond',serif}.guest h3{font-size:31px;margin:0 0 7px}.guest-list p{font-size:12px;line-height:1.9;color:var(--muted);max-width:570px;margin:0}.guest-list article>span{font-size:9px;letter-spacing:.1em;color:#8d6a68;text-align:right;padding-top:10px}.rsvp{background:var(--wine);color:#fff;text-align:center;padding:110px 24px}.rsvp-inner{max-width:650px;margin:auto}.rsvp .overline{color:#ddc5bf}.rsvp h2 em{color:#e1c8c4}.rsvp-inner>p:not(.overline){font-size:13px;line-height:1.9;color:#eaded9;max-width:410px;margin:0 auto}.rsvp-status{display:inline-block;border:1px solid #c9a9a4;padding:17px 25px;font-size:11px;margin:30px 0 0}.rsvp-note{font-size:11px;line-height:1.8;color:#d7c3be;margin:24px auto 0;max-width:390px}.faq{padding:120px 0;display:grid;grid-template-columns:1fr 1.2fr;gap:90px}.faq-intro{max-width:260px;font-size:12px;line-height:1.8;color:var(--muted)}.faq-list{border-top:1px solid var(--line)}details{border-bottom:1px solid var(--line)}summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:23px 0;font-size:13px}summary::-webkit-details-marker{display:none}summary span{font-size:20px;font-weight:400;color:var(--wine)}details[open] summary span{transform:rotate(45deg)}details p{margin:0 0 23px;color:var(--muted);font-size:12px;line-height:1.8;max-width:510px}.closing{text-align:center;background:#e9e2d9;padding:90px 20px}.closing>p{color:#8d6a68}.closing h2{font-size:clamp(52px,6vw,82px);font-style:italic;margin:24px 0}.closing div{font:500 25px 'Cormorant Garamond',serif}.closing div i{color:var(--wine)}.closing>span{display:block;color:#8a5260;margin-top:25px}footer{border-top:1px solid var(--line);padding:30px 6%;display:flex;justify-content:space-between;align-items:center;color:#736e69;font-size:11px}footer p{margin:0}footer .brand{color:var(--ink)}@media(max-width:760px){.notice{font-size:10px}.top{height:66px;padding:0 6%}.top nav{display:none}.nav-link{font-size:10px}.hero{min-height:650px;min-height:80svh}.hero-photo img{object-position:52% center}.hero-copy{padding:80px 16px 100px}.hero-intro{font-size:20px}h1{font-size:clamp(65px,15vw,100px)}.wrap{width:86%}.welcome{padding:85px 0;grid-template-columns:1fr}.welcome-aside,.welcome-side{display:none}.section-top{display:block;margin-bottom:35px}.section-top>p{margin-top:20px}.celebration,.itinerary,.guest{padding:80px 0}.event-grid{grid-template-columns:1fr}.event{padding:32px 28px;min-height:0}.event h3{font-size:46px}.timeline{grid-template-columns:1fr;border-top:0;border-left:1px solid #bdaaa2;margin-left:5px}.timeline>div{padding:0 0 30px 30px}.timeline-dot{left:-5px;top:4px}.timeline h3{margin:10px 0}.timeline p{margin-top:0}.photo-band{min-height:330px}.guest-list article{grid-template-columns:35px 1fr;gap:15px}.guest-list article>span{grid-column:2;text-align:left;padding:0}.rsvp{padding:85px 24px}.faq{padding:85px 0;grid-template-columns:1fr;gap:35px}footer{gap:20px}footer p{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* A quiet, invitation-inspired place for the church location. */
.location{padding:115px 0;background:#f8f5f0}.location-inner{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:9%}.location-copy h2{font-size:clamp(50px,5vw,76px);line-height:.95;letter-spacing:-.03em;margin:0 0 25px}.location-copy>p:not(.overline){max-width:420px;font-size:13px;line-height:1.9;color:var(--muted)}.location-facts{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin:38px 0}.location-facts div{border-top:1px solid var(--line);padding-top:15px}.location-facts span,.location-facts strong{display:block}.location-facts span{font-size:9px;letter-spacing:.12em;color:#8d6a68;margin-bottom:9px}.location-facts strong{font-size:12px;font-weight:500}.location-pending{display:inline-block;color:var(--wine);font-size:11px;border-bottom:1px solid #bda8a2;padding-bottom:9px}.map-frame{background:#ded6ce;padding:20px;min-height:470px;display:flex}.map-paper{position:relative;display:flex;flex:1;align-items:center;justify-content:center;flex-direction:column;text-align:center;border:1px solid #bdb0a7;background:#f0eae2;padding:35px 20px;color:var(--wine)}.map-paper:before{content:'';position:absolute;inset:8px;border:1px solid #d7cbc0;pointer-events:none}.map-crest{position:absolute;top:30px;font:500 20px 'Cormorant Garamond',serif}.map-cross{font-size:28px;color:#8b6c6b;margin:27px 0 12px}.map-paper h3{font-size:43px;line-height:.95;font-style:italic;margin:0}.map-rule{height:1px;width:46px;background:#a78a83;margin:25px}.map-paper p{font-size:11px;line-height:1.8;color:#6f625e}.map-paper>span{font-size:9px;letter-spacing:.15em;margin-top:16px;color:#8b6c6b}@media(max-width:760px){.location{padding:80px 0}.location-inner{grid-template-columns:1fr;gap:40px}.map-frame{min-height:390px;padding:14px}.location-facts{gap:20px}}

/* Motion follows the rhythm of opening an invitation, then yields to reading. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1)}
.hero-photo{overflow:hidden;background:#323035}.hero-photo img{opacity:1}.hero-photo img.is-ready{animation:photo-arrive 2.2s var(--motion-ease) both}@keyframes photo-arrive{from{opacity:.3;transform:scale(1.045)}to{opacity:1;transform:scale(1)}}
.hero-copy>*{animation:invitation-enter .85s var(--motion-ease) both}.hero-copy>:nth-child(2){animation-delay:.12s}.hero-copy>:nth-child(3){animation-delay:.22s}.hero-copy>:nth-child(4){animation-delay:.3s}.hero-copy>:nth-child(5){animation-delay:.38s}.hero-copy>:nth-child(6){animation-delay:.46s}
@keyframes invitation-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.motion-reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--motion-ease),transform .9s var(--motion-ease)}.motion-reveal.is-visible{opacity:1;transform:translateY(0)}.event:nth-child(2),.timeline>div:nth-child(2),.guest-list article:nth-child(2){transition-delay:.08s}.timeline>div:nth-child(3),.guest-list article:nth-child(3){transition-delay:.15s}.guest-list article:nth-child(4){transition-delay:.2s}
.button,.nav-link,summary,.top nav a,footer a{transition:color .2s ease,background-color .2s ease,border-color .2s ease,transform .25s var(--motion-ease)}.button span,.nav-link span,.scroll-hint span{display:inline-block;transition:transform .35s var(--motion-ease)}.button:hover span,.nav-link:hover span{transform:translate(3px,3px)}.button:active{transform:scale(.98)}.top nav a:hover,footer a:hover{color:var(--wine)}.scroll-hint span{animation:gentle-down 2.2s ease-in-out infinite}@keyframes gentle-down{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
.map-paper:before{transform:scale(.96);transition:transform 1.2s var(--motion-ease)}.map-paper.is-visible:before{transform:scale(1)}summary span{transition:transform .3s var(--motion-ease)}details[open]>p{animation:answer-enter .3s var(--motion-ease) both}@keyframes answer-enter{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy>*,.scroll-hint span,details[open]>p{animation:none}.hero-photo img,.hero-photo img.is-ready{opacity:1;transform:none;animation:none;transition:none}.motion-reveal{opacity:1;transform:none;transition:none}.button,.nav-link,summary,.top nav a,footer a,.button span,.nav-link span,.scroll-hint span,.map-paper:before,summary span{transition:none}.button:active{transform:none}}
.countdown{background:#f8f5f0;padding:75px 0}.count-inner{display:flex;align-items:center;justify-content:space-between;gap:45px}.count-inner h2,.reception-location h2,.story h2{font-size:clamp(42px,4vw,60px);line-height:1;letter-spacing:-.03em;margin:0 0 15px}.count-inner>div:first-child>p:last-child,.reception-location>div:first-child>p:last-child,.story-intro>p:not(.overline){font-size:12px;line-height:1.9;color:var(--muted);max-width:420px}.count-values{display:flex;gap:34px;text-align:center;color:var(--wine)}.count-values strong,.count-values span{display:block}.count-values strong{font:400 48px 'Cormorant Garamond',serif}.count-values span{font-size:9px;letter-spacing:.12em}.reception-location{display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center;padding-top:70px;padding-bottom:60px}.reception-map{background:#e7e0d8;padding:35px 40px;border:1px solid #d4c7bd}.reception-map>span:first-child{font-size:9px;letter-spacing:.15em;color:#8d6a68}.reception-map h3{font-size:36px;line-height:1;margin:25px 0 15px}.reception-map p{font-size:12px;color:var(--muted)}.iso-scene{margin:15px 0 65px;background:#eee8df}.iso-scene img{width:100%;height:auto;display:block}.iso-scene p{font-size:10px;color:var(--muted);padding:0 20px 18px;margin:0;text-align:right}.story{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center;padding-top:110px;padding-bottom:110px}.story-image{height:500px;position:relative;overflow:hidden;background:#ded6ce}.story-image img{width:100%;height:100%;object-fit:cover;object-position:center 55%}.story-image span{position:absolute;bottom:18px;left:18px;background:#19212dd9;color:white;padding:9px;font-size:8px;letter-spacing:.08em}.code-note{margin-top:35px;padding:18px 20px;border-left:1px solid #a58982;color:#55202c;font:14px/1.9 monospace}.code-note span{color:#8c7970}.gallery{padding-bottom:110px}.gallery-grid{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:18px;align-items:center}.gallery-slot{min-height:270px;background:#e8e0d8;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#806d68}.gallery-center{min-height:340px;background:#d8cfca}.gallery-slot span{font-size:9px;letter-spacing:.12em}.gallery-slot strong{font:italic 30px 'Cormorant Garamond',serif;margin:20px 0 6px}.gallery-slot small{font-size:10px}.rsvp-form{max-width:520px;margin:32px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:18px;text-align:left}.rsvp-form label{font-size:11px;color:#f0e6e0}.rsvp-form label:nth-child(4){grid-column:1/-1}.rsvp-form label span{font-size:10px;color:#d9c4bd}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{display:block;width:100%;margin-top:8px;padding:13px;border:1px solid #bc9b98;background:#fff9f30c;color:#f2e9e4;font:12px 'DM Sans',sans-serif;opacity:1}.rsvp-form input::placeholder,.rsvp-form textarea::placeholder{color:#ddc7c1;opacity:1}.rsvp-form button{grid-column:1/-1;padding:16px;background:#e4d2ca;border:0;color:#745c5b;font:12px 'DM Sans',sans-serif;cursor:not-allowed}.rsvp-form .form-help{grid-column:1/-1;margin:0;font-size:10px;color:#eaded9;line-height:1.6}@media(max-width:760px){.count-inner{display:block}.count-values{justify-content:space-between;gap:10px;margin-top:30px}.count-values strong{font-size:40px}.reception-location,.story{grid-template-columns:1fr;gap:35px}.reception-location{padding-top:50px;padding-bottom:15px}.story{padding-top:80px;padding-bottom:80px}.story-image{height:390px}.gallery{padding-bottom:80px}.gallery-grid{gap:8px}.gallery-slot,.gallery-center{min-height:190px;text-align:center}.gallery-slot strong{font-size:21px}.gallery-slot small{font-size:9px}.rsvp-form{grid-template-columns:1fr}.rsvp-form label:nth-child(4),.rsvp-form button,.rsvp-form .form-help{grid-column:1}}
.attire-visual{display:grid;grid-template-columns:2fr 1fr;align-items:end;gap:30px;margin-bottom:45px}.attire-visual img{width:100%;display:block}.attire-visual p{font-size:11px;line-height:1.8;color:var(--muted);margin:0 0 5px}@media(max-width:760px){.attire-visual{grid-template-columns:1fr;gap:12px}.attire-visual p{max-width:360px}}
/* Exploded-view illustrations are visual explanations, not the event's actual venues. */
.blueprint-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.blueprint-piece{background:#efe9e1;overflow:hidden}.blueprint-window{position:relative;overflow:hidden;aspect-ratio:584/897;background:#eee8e0}.blueprint-window img{display:block;width:300%;height:100%;max-width:none;object-fit:fill}.blueprint-piece:nth-child(2) img{transform:translateX(-33.333%)}.blueprint-piece:nth-child(3) img{transform:translateX(-66.666%)}.blueprint-caption{padding:24px 24px 28px}.blueprint-caption span,.blueprint-caption small,.attire-plan figcaption span{font-size:9px;letter-spacing:.12em;color:#8d6a68}.blueprint-caption h3,.attire-plan h3{font-size:30px;line-height:1.05;margin:12px 0}.blueprint-caption p,.attire-plan figcaption p{font-size:12px;line-height:1.8;color:var(--muted)}.blueprint-note{font-size:10px;color:var(--muted);margin:15px 0 0}.attire-plan{margin:0 0 55px;background:#eee8df}.attire-plan img{width:100%;display:block}.attire-plan figcaption{display:flex;justify-content:space-between;gap:30px;padding:28px 34px 32px}.attire-plan figcaption p{max-width:360px;margin:0}.attire-plan h3{margin-bottom:0}@media(max-width:760px){.blueprint-grid{grid-template-columns:1fr;gap:18px}.blueprint-piece{display:grid;grid-template-columns:45% 55%;align-items:center}.blueprint-window{aspect-ratio:584/897}.blueprint-caption{padding:18px}.blueprint-caption h3{font-size:26px}.attire-plan figcaption{display:block;padding:24px}.attire-plan figcaption p{margin-top:15px}}
