:root{--ivory:#F8F5EF;--champagne:#D8C2A8;--mocha:#806451;--olive:#788064;--brown:#44372F;--serif:"Iowan Old Style","Baskerville Old Face",Baskerville,Georgia,serif;--sans:"Avenir Next",Avenir,Montserrat,"Segoe UI",sans-serif;--gutter:clamp(1.25rem,6vw,6.5rem)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{margin:0;background:var(--ivory);color:var(--brown);font-family:var(--sans);font-size:16px;line-height:1.65}img{display:block;width:100%;height:100%;object-fit:cover}a{color:inherit}button{font:inherit}.skip-link{position:absolute;left:-9999px;top:1rem;background:var(--ivory);padding:.8rem;z-index:100}.skip-link:focus{left:1rem}.site-header{position:absolute;z-index:5;top:0;left:0;width:100%;height:5.2rem;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;color:white}.brand{font:1.35rem var(--serif);letter-spacing:.1em;text-decoration:none}.brand span{font-style:italic;color:var(--champagne)}.main-nav{display:flex;gap:2.2rem}.main-nav a{text-decoration:none;text-transform:uppercase;font-size:.67rem;letter-spacing:.16em}.main-nav a:hover,.text-link:hover{color:var(--champagne)}.menu-toggle{display:none;background:none;border:0;color:inherit}.hero{height:min(900px,100svh);min-height:650px;position:relative;color:white;display:grid;place-items:center;text-align:center;overflow:hidden;background:var(--brown)}.hero-image-wrap,.hero-shade{position:absolute;inset:0}.hero-image{object-position:center 38%}.hero-shade{background:linear-gradient(90deg,rgba(31,24,20,.48),rgba(31,24,20,.1) 52%,rgba(31,24,20,.4)),linear-gradient(0deg,rgba(30,24,20,.43),transparent 65%)}.hero-copy{position:relative;padding:6rem 1.5rem 4rem;max-width:740px}.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.65rem;color:var(--mocha);font-weight:600;margin:0 0 1.1rem}.eyebrow.light{color:#f0dfcc}.hero h1{font:clamp(4.5rem,11vw,8.5rem)/.88 var(--serif);font-weight:400;letter-spacing:-.055em;margin:.3rem 0 1.5rem;text-shadow:0 2px 25px #0002}.hero h1 i{font-size:.56em;color:var(--champagne);font-weight:400}.hero-date{letter-spacing:.24em;font-size:.78rem}.hero-date span{color:var(--champagne);padding:0 .45rem}.hero-invite{max-width:370px;margin:1.5rem auto 2rem;color:#fffdf9;font:1.08rem/1.6 var(--serif)}.button{display:inline-flex;align-items:center;gap:1.3rem;text-decoration:none;text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;font-weight:600;padding:1rem 1.4rem;transition:background .2s,color .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button-light{background:var(--ivory);color:var(--brown)}.button-light:hover{background:var(--champagne)}.hero-tag{font-size:.66rem;letter-spacing:.18em;margin-top:2rem}.scroll-cue{position:absolute;bottom:1.8rem;width:1px;height:45px;background:#ffffff80}.scroll-cue span{display:block;width:1px;height:18px;background:white;animation:drop 1.8s ease-in-out infinite}@keyframes drop{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(27px);opacity:0}}.section-pad{padding:clamp(4.5rem,9vw,8rem) var(--gutter)}.paper{background:#fffdfa}.countdown{text-align:center;padding-top:4.4rem;padding-bottom:4.5rem}.countdown-grid{display:flex;justify-content:center;gap:clamp(1.7rem,7vw,6rem);margin:1.8rem auto 0}.countdown-grid div{display:grid;gap:.3rem}.countdown-grid strong{font:clamp(2rem,5vw,3.1rem) var(--serif);font-weight:400}.countdown-grid span{font-size:.59rem;text-transform:uppercase;letter-spacing:.18em;color:var(--mocha)}.countdown-complete{font:1.3rem var(--serif)}h2{font:clamp(2.8rem,6vw,5.1rem)/1.03 var(--serif);font-weight:400;letter-spacing:-.035em;margin:.15rem 0 1.5rem}h2 em{color:var(--mocha);font-weight:400}.invitation{text-align:center;max-width:none}.invitation .body-copy{max-width:530px;margin:0 auto}.body-copy{max-width:490px;color:#65594f;font-size:.92rem;line-height:1.9}.ornament{display:flex;align-items:center;justify-content:center;gap:1rem;color:var(--champagne);margin:2.3rem 0 1.1rem}.ornament span{height:1px;width:60px;background:var(--champagne)}.script-note{font:italic 1.3rem var(--serif);color:var(--mocha);margin:0}.story{display:grid;grid-template-columns:.8fr 1fr;gap:clamp(3rem,9vw,9rem);align-items:center;max-width:1400px;margin:auto}.story-photo{height:clamp(350px,48vw,620px);overflow:hidden}.story-photo img{object-position:center 35%}.pending-note{font-size:.72rem;color:#8d8176;font-style:italic;margin-top:1.6rem}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:2.5rem}.section-heading h2{margin-bottom:0}.gallery-hashtag,.details-date{font:italic 1rem var(--serif);color:var(--mocha)}.gallery-grid{display:grid;grid-template-columns:1.1fr .9fr 1fr;grid-template-rows:250px 250px;gap:12px}.gallery-item{padding:0;border:0;background:#e7dfd5;overflow:hidden;cursor:zoom-in}.gallery-item img{transition:transform .6s cubic-bezier(.2,.7,.2,1)}.gallery-item:hover img{transform:scale(1.04)}.gallery-tall{grid-row:span 2}.gallery-wide{grid-column:2 / 4}.lightbox{padding:0;border:0;background:#171310;max-width:min(92vw,1100px);max-height:90vh}.lightbox::backdrop{background:#171310e8}.lightbox img{width:auto;height:auto;max-width:90vw;max-height:84vh;object-fit:contain}.lightbox-close{position:absolute;right:.5rem;top:.2rem;border:0;background:#171310cc;color:white;font-size:2rem;line-height:1;cursor:pointer}.details-date{text-align:right;line-height:1.6;margin:0 0 .5rem}.details-date strong{font:1rem var(--sans);color:var(--brown);letter-spacing:.04em}.venue-grid{display:grid;grid-template-columns:1.2fr .8fr 1fr;align-items:stretch;min-height:300px}.venue-grid>img{min-height:270px}.venue-card{background:#ede7df;padding:2.5rem;display:flex;flex-direction:column;justify-content:center}.venue-card h3{font:2rem var(--serif);font-weight:400;margin:.2rem 0 .7rem}.venue-card p:not(.eyebrow){color:#65594f;font-size:.87rem;line-height:1.8}.text-link{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;margin-top:.8rem}.directions-row{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(2rem,6vw,6rem);align-items:center;margin-top:2rem}.directions-row>img{max-height:390px;object-fit:contain;background:#f0ece5;cursor:zoom-in}.directions-row .button{margin-top:1rem}.button-outline{border:1px solid var(--mocha);color:var(--brown)}.button-outline:hover{background:var(--brown);color:white}.dress-code{text-align:center}.dress-code .body-copy{margin:0 auto}.swatches{display:flex;justify-content:center;gap:clamp(2rem,8vw,7rem);margin-top:2.8rem}.swatches>div{display:grid;gap:.7rem;justify-items:center;font-size:.66rem;letter-spacing:.13em;text-transform:uppercase}.swatch{width:clamp(64px,10vw,100px);height:clamp(64px,10vw,100px);border-radius:50%;border:1px solid #44372f14}.champagne{background:#D8C2A8}.mocha{background:#806451}.olive{background:#788064}.programme{text-align:center}.placeholder-card{max-width:490px;margin:2.5rem auto 0;padding:2.5rem 1.5rem;border-top:1px solid var(--champagne);border-bottom:1px solid var(--champagne)}.placeholder-mark{color:var(--champagne);font-size:1.4rem}.placeholder-card p{font:1.3rem var(--serif);margin:.7rem 0}.placeholder-card small{color:#81766c}.rsvp{background:var(--olive);color:white;text-align:center}.rsvp h2{font-size:clamp(3rem,7vw,5.7rem)}.rsvp h2 em{color:#e8d9c8}.rsvp-deadline{font:1.1rem var(--serif);margin:1.8rem 0}.rsvp .button{margin:0 auto}.form-status{max-width:440px;margin:1.4rem auto 0;padding:1rem;background:#fff2;color:white;border:1px solid #ffffff55;font-size:.87rem}.guest-note{font-size:.7rem;color:#f5f0e8;margin-top:1.8rem}.contact{text-align:center}.contact-grid{display:grid;grid-template-columns:1fr 1fr;max-width:760px;margin:3rem auto 0;gap:2rem}.contact-grid>div{display:flex;flex-direction:column;align-items:center}.contact-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.18em;color:var(--mocha)}.contact-grid h3{font:1.5rem var(--serif);font-weight:400;margin:.55rem 0}.contact-grid a{font-size:.8rem;text-decoration:none;margin:.15rem 0}.contact-grid a:hover{text-decoration:underline}.contact-grid small{color:#988b7f;font-size:.68rem;font-style:italic}.site-footer{background:var(--brown);color:#eee4d8;text-align:center;padding:2.7rem var(--gutter);font-size:.72rem}.site-footer .brand{display:inline-block}.site-footer>p{margin:.5rem}.site-footer>p:nth-of-type(2){letter-spacing:.17em;color:var(--champagne)}.back-top{display:inline-block;margin-top:1rem;text-decoration:none;text-transform:uppercase;letter-spacing:.15em;font-size:.6rem;color:#d9c9b8}
@media(max-width:700px){.site-header{height:4.5rem}.menu-toggle{display:grid;gap:6px;padding:.8rem;z-index:2}.menu-toggle span{width:23px;height:1px;background:white}.main-nav{display:none;position:absolute;top:0;right:0;left:0;padding:5rem 1.5rem 1.8rem;background:#44372ff5;flex-direction:column;gap:1.4rem;text-align:center}.main-nav.open{display:flex}.main-nav a{padding:.3rem}.hero{min-height:680px}.hero-image{object-position:56% center}.hero-copy{padding-top:6rem}.hero h1{font-size:clamp(3.1rem,14vw,5rem)}.hero h1 i{display:block;font-size:.36em;line-height:1.2;margin:.1em 0}.hero h1 i + br{display:none}.story{grid-template-columns:1fr;gap:2rem}.story-photo{height:105vw;max-height:520px;order:-1}.section-heading{align-items:start;gap:1rem}.gallery-hashtag{font-size:.78rem;text-align:right}.gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:200px 170px 200px;gap:8px}.gallery-tall{grid-row:span 2}.gallery-wide{grid-column:1 / 3}.venue-grid{grid-template-columns:1fr 1fr}.venue-grid>img:first-child{grid-column:1 / 3;height:260px}.venue-card{padding:1.6rem}.venue-grid .venue-second{min-height:230px}.directions-row{grid-template-columns:1fr;gap:1.5rem}.directions-row>img{max-height:300px;width:100%}.contact-grid{gap:2rem 1rem}.contact-grid a{font-size:.72rem;overflow-wrap:anywhere}.countdown-grid{gap:1.3rem}.countdown-grid strong{font-size:2rem}.countdown-grid span{font-size:.52rem}.details-date{font-size:.8rem}.details-date strong{font-size:.82rem}}
@media(max-width:390px){.hero h1{font-size:3.1rem}.countdown-grid{gap:.9rem}.countdown-grid strong{font-size:1.75rem}.contact-grid{grid-template-columns:1fr}.contact-grid>div+div{border-top:1px solid #ded4ca;padding-top:1.8rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Requested wedding details and accessible slideshow */
:focus-visible{outline:2px solid var(--mocha);outline-offset:4px}.hero :focus-visible,.rsvp :focus-visible,.site-footer :focus-visible{outline-color:#fff}
.story{grid-template-columns:1fr 1.02fr;gap:clamp(2.5rem,7vw,7rem)}.story-copy .body-copy{max-width:540px}.story-closing{font:italic 1.16rem/1.5 var(--serif);color:var(--mocha);margin-top:1.5rem}
.story-slideshow{min-width:0}.story-slides{position:relative;aspect-ratio:4/5;max-width:440px;margin-inline:auto;background:#e7e1db;overflow:hidden}.story-slide{position:absolute;inset:0;margin:0;opacity:0;visibility:hidden;transition:opacity .65s ease}.story-slide.is-active{opacity:1;visibility:visible}.story-slide img{width:100%;height:100%;object-fit:contain}.slideshow-controls{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1rem}.slide-control{min-width:44px;min-height:44px;border:1px solid #c8b8a7;background:transparent;color:var(--brown);cursor:pointer;transition:background .2s,color .2s}.slide-control:hover{background:var(--brown);color:white}.slide-play{min-width:82px;font-size:.64rem;letter-spacing:.13em;text-transform:uppercase}.slide-indicators{display:flex;justify-content:center;align-items:center;gap:.55rem;margin:.75rem auto}.slide-indicator{width:12px;height:12px;border:0;border-radius:50%;padding:0;background:#cfc7be;cursor:pointer}.slide-indicator.is-active{background:var(--mocha);box-shadow:0 0 0 3px var(--ivory),0 0 0 4px var(--mocha)}.slide-caption{text-align:center;color:#81766c;font-size:.68rem;margin:.4rem 0 0}
.dress-code-image{max-width:min(100%,720px);margin:2rem auto 1.5rem;background:#f2efeb}.dress-code-image img{width:100%;height:auto;max-height:760px;object-fit:contain}.dress-rules{max-width:680px;margin:1.5rem auto 0;text-align:left;border-top:1px solid #dfd5ca}.dress-rules p{display:flex;gap:1rem;padding:.8rem .25rem;margin:0;border-bottom:1px solid #dfd5ca;color:#65594f;font-size:.88rem}.dress-rules strong{min-width:105px;color:var(--brown);font-weight:600}


.schedule-list{list-style:none;max-width:690px;margin:2.3rem auto 0;padding:0;border-top:1px solid var(--champagne);text-align:left}.schedule-list li{display:flex;gap:2rem;align-items:baseline;padding:1.15rem .25rem;border-bottom:1px solid var(--champagne)}.schedule-list time{min-width:95px;font:1.2rem var(--serif);color:var(--mocha)}.schedule-list span{font-size:.9rem}.gifts{text-align:center;background:#ede7df}.gifts .body-copy{max-width:650px;margin:0 auto}.gifts h2 em{color:var(--mocha)}.guest-policy{margin:.1rem auto 1.3rem;letter-spacing:.04em}
/* Quiet section reveals; reduced-motion visitors see content immediately. */
@media(prefers-reduced-motion:no-preference){.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}.reveal.is-visible{opacity:1;transform:none}}
@media(max-width:700px){
  .site-header{padding-inline:1.1rem}.main-nav{gap:.85rem}.main-nav a{font-size:.64rem}.story{grid-template-columns:1fr;gap:2rem}.story-copy{order:0}.story-slideshow{order:1}.story-slides{aspect-ratio:4/5;max-width:100%}.story-slide img{object-fit:contain}.dress-rules p{gap:.6rem;font-size:.83rem}.dress-rules strong{min-width:95px}.schedule-list li{gap:1rem;padding:.95rem .2rem}.schedule-list time{min-width:82px;font-size:1.05rem}.schedule-list span{font-size:.84rem}.gifts .body-copy{font-size:.88rem}
}
@media(max-width:390px){
  .main-nav{padding-inline:1rem}.main-nav a{font-size:.58rem;letter-spacing:.12em}.story h2{font-size:clamp(2.45rem,12vw,3.1rem)}.dress-rules p{display:block}.dress-rules strong{display:block;margin-bottom:.2rem}.schedule-list time{min-width:75px}.schedule-list li{gap:.75rem}
}
.story-slide{transition:opacity .65s ease,visibility .65s step-end}.story-slide.is-active{transition-delay:0s}

.slide-indicators{gap:.25rem}.slide-indicator{position:relative;width:32px;height:32px;background:transparent}.slide-indicator::after{content:"";position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:#cfc7be;transform:translate(-50%,-50%)}.slide-indicator.is-active{background:transparent;box-shadow:none}.slide-indicator.is-active::after{background:var(--mocha);box-shadow:0 0 0 3px var(--ivory),0 0 0 4px var(--mocha)}
