:root{--olive:#757556;--olive-d:#5f5f45;--cream:#fffcf9;--stone:#edece8;--line:#dfdedb;--char:#585b5a;--ink:#333;--slate:#657174;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Jost',system-ui,sans-serif;
 --bg:var(--cream);--bg-alt:var(--stone);--accent:var(--olive);--text:var(--ink)}
*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:300 17px/1.7 var(--sans)}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1;margin:0}
a{color:var(--accent)}
.wrap{max-width:980px;margin:0 auto;padding:0 24px}.narrow{max-width:600px}.center{text-align:center}.muted{color:var(--slate)}
.preview-flag,.sample-flag{position:relative;z-index:40;background:#3b3b2c;color:#fff;text-align:center;font:500 .75rem var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:6px}.sample-flag{background:#8a6d2b}
.sitenav{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:12px 28px;background:rgba(255,252,249,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.sn-names{font:italic 400 1.5rem var(--serif);color:var(--ink);text-decoration:none}.sn-links{display:flex;gap:22px}.sn-links a{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--char)}.sn-links .nav-rsvp{color:var(--olive-d);font-weight:500}
.sn-toggle{display:none;background:none;border:1px solid var(--line);border-radius:99px;padding:6px 14px;font:400 .8rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--char)}
.btn{display:inline-flex;align-items:center;justify-content:center;background:var(--olive);color:#fff;border:1px solid var(--olive);padding:12px 30px;font:400 .82rem var(--sans);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;cursor:pointer;min-height:48px;border-radius:0}
.btn:hover{background:var(--olive-d)}.btn.ghost{background:transparent;color:var(--olive-d)}.btn.ghost:hover{background:var(--olive);color:#fff}.btn.big{width:100%;min-height:56px;font-size:.9rem}
.rule{width:60px;height:1px;background:var(--accent);margin:18px auto 30px}.rule.light{background:currentColor;opacity:.7;margin:20px auto}
.amp{font-style:italic;color:var(--accent);padding:0 .1em}
/* hero (classic) */
.hero{position:relative;text-align:center}
.hero-photo{height:62vh;min-height:360px;max-height:640px;background:var(--stone) var(--hero) center/cover no-repeat}
.hero-text{position:relative;max-width:760px;margin:-90px auto 0;background:var(--cream);padding:46px 30px 40px;border:1px solid var(--line)}
.hero-mono{display:block;height:90px;width:auto;margin:0 auto 14px}.theme-garden .hero-mono{margin-left:0}
.eyebrow{font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;color:var(--olive);margin:0 0 12px}
.hero h1{font-size:clamp(2.8rem,7vw,5rem);color:var(--ink)}
.hero-date{font:400 1.45rem var(--serif);margin:0;color:var(--char)}.hero-place{margin:4px 0 0;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;color:var(--slate)}
.countdown{display:flex;justify-content:center;align-items:baseline;gap:8px;margin:22px 0 4px}.cd-num{font:400 2.4rem var(--serif);color:var(--olive-d)}.cd-label{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--slate)}
.hero-btn{margin-top:18px}
.hero-credit{position:absolute;right:12px;top:10px;margin:0;font-size:.68rem;letter-spacing:.06em;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.block{padding:80px 0;scroll-margin-top:60px}.block.alt{background:var(--bg-alt)}.block h2{font-size:clamp(2.2rem,5vw,3rem);text-align:center}
.welcome{padding:60px 0 20px}.welcome .prose{font:italic 400 1.5rem/1.5 var(--serif);color:var(--char)}
.prose p{margin:0 0 1em}.prose.center{text-align:center}
.timeline{list-style:none;padding:0;margin:0 auto;max-width:680px}.timeline li{display:grid;grid-template-columns:150px 1fr;gap:24px;padding:22px 0;border-bottom:1px solid var(--line)}.timeline li:last-child{border:0}
.t-time{font:400 1.3rem var(--serif);color:var(--olive-d);text-align:right}.tba{font:italic 400 1.05rem var(--serif);color:var(--slate)}.t-body h3{font-size:1.6rem}.t-place{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--slate);margin-top:2px}.t-body p{margin:.4em 0 0}
.party{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:28px;text-align:center}.p-name{display:block;font:400 1.5rem var(--serif)}.p-role{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--olive)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:24px}.card{background:var(--cream);border:1px solid var(--line);padding:26px;text-align:center}.card h3{font-size:1.5rem;margin-bottom:6px}
.reg-links{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:10px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.gallery figure{margin:0}.gallery img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block}.credit{text-align:center;font-size:.78rem;letter-spacing:.08em;color:var(--slate);margin-top:10px}
.faq{max-width:700px;margin:0 auto}.faq details{border-bottom:1px solid var(--line);padding:16px 0}.faq summary{cursor:pointer;font:400 1.4rem var(--serif);list-style:none;display:flex;justify-content:space-between;gap:12px}.faq summary:after{content:'+';color:var(--olive)}.faq details[open] summary:after{content:'−'}.faq .prose{padding-top:10px}
.venue{text-align:center;background:var(--olive);color:#fff}.venue h2{color:#fff}.venue .rule{background:#fff}.venue-mark{width:120px;height:120px;object-fit:cover;border-radius:50%;margin-bottom:16px}.venue-addr{font-size:1.05rem;letter-spacing:.04em}.venue .btn{background:#fff;color:var(--olive-d);border-color:#fff}.venue .btn.ghost{background:transparent;color:#fff}.venue .btn.ghost:hover{background:#fff;color:var(--olive-d)}
/* demo banner */
.demo-banner{background:#3f3f2c;color:#fffcf9;text-align:center;padding:10px 16px;font-size:.88rem;line-height:1.5}
.demo-banner p{margin:0}.db-title{font:italic 500 1.1rem var(--serif);letter-spacing:.02em}.db-sub{opacity:.9}.db-link{color:#fffcf9;margin-left:6px;white-space:nowrap;text-underline-offset:3px}
.db-themes{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:8px;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.db-themes span{opacity:.75;margin-right:4px}
.db-themes a{color:#fffcf9;text-decoration:none;border:1px solid rgba(255,252,249,.45);border-radius:99px;padding:4px 12px}.db-themes a.on{background:#fffcf9;color:#3f3f2c;border-color:#fffcf9}
/* chapel feature */
.chapel-feature{background:var(--bg-alt)}.split{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center}.split-img{margin:0}.split-img img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.split-img figcaption{font-size:.72rem;letter-spacing:.06em;color:var(--slate);margin-top:8px}
.split-text h2{text-align:left}.split-text .rule{margin-left:0}.split-text p:not(.eyebrow){font:italic 400 1.45rem/1.5 var(--serif);color:var(--char);margin:0}
/* RSVP */
.rsvp{display:grid;gap:4px;margin-top:20px;text-align:left}
.f{display:grid;gap:6px;margin-bottom:16px;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--char);font-weight:400}
.rsvp input:not([type=radio]):not([type=checkbox]),.rsvp select,.rsvp textarea,.gate input{font:300 1.08rem var(--sans);letter-spacing:0;text-transform:none;color:var(--ink);background:#fff;border:1px solid #cfcdc7;padding:14px 16px;width:100%;min-height:54px;border-radius:0}
.rsvp :focus{outline:2px solid var(--olive);outline-offset:1px}
.yesno{border:0;padding:0;margin:0 0 16px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.yesno legend{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--char);margin-bottom:8px;padding:0}
.yesno label{position:relative}.yesno input{position:absolute;opacity:0}.yesno span{display:flex;align-items:center;justify-content:center;min-height:64px;border:1px solid #cfcdc7;background:#fff;font:400 1.25rem var(--serif);cursor:pointer;text-align:center;padding:8px}
.yesno input:checked+span{background:var(--olive);color:#fff;border-color:var(--olive)}.yesno input:focus-visible+span{outline:2px solid var(--olive);outline-offset:2px}
.reveal{display:none}.reveal.open{display:block}
.check{display:flex;align-items:center;gap:12px;margin:0 0 16px;font-size:1rem;cursor:pointer}.check input{width:24px;height:24px;accent-color:var(--olive)}
details.more{margin:4px 0 18px}details.more summary{cursor:pointer;color:var(--olive-d);font-size:.95rem;padding:8px 0}
.hp{position:absolute;left:-9999px;width:1px;height:1px}
.thanks{text-align:center;padding:20px 0}.thanks h3{font-size:2.4rem;margin-bottom:10px}
.error{background:#f6e7e3;color:#7a3527;padding:12px 16px}
.sitefoot{text-align:center;padding:40px 20px;background:var(--bg)}.sitefoot a{display:inline-flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;color:var(--slate);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase}.sitefoot img{width:64px;height:64px}
.gate{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;background:var(--stone)}.gate-box{background:var(--cream);border:1px solid var(--line);padding:40px 30px;text-align:center;max-width:440px;width:100%}.gate-box img{width:130px}.gate-box h1{font-size:2.6rem;margin:10px 0}.gate-box form{display:grid;gap:12px;margin-top:16px}
/* ---- theme: Olive Grove (full-bleed photo with overlay text) ---- */
.theme-grove{--bg:#fffcf9;--bg-alt:#edece8}
.theme-grove .hero{min-height:88vh;display:flex;align-items:center;justify-content:center;color:#fff;overflow:hidden}
.theme-grove .hero-photo{position:absolute;inset:0;height:auto;max-height:none;min-height:0}
.theme-grove .hero.has-img .hero-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(rgba(60,60,40,.35),rgba(60,60,40,.65))}
.theme-grove .hero:not(.has-img){background:var(--olive)}
.theme-grove .hero-text{margin:0;background:none;border:0;color:#fff;padding:120px 24px 80px}
.theme-grove .hero h1,.theme-grove .hero-date,.theme-grove .eyebrow,.theme-grove .hero-place,.theme-grove .cd-num,.theme-grove .cd-label,.theme-grove .hero .amp{color:#fff}
.theme-grove .hero-btn{background:#fff;color:var(--olive-d);border-color:#fff}.theme-grove .hero-credit{top:auto;bottom:12px}
.theme-grove .block h2{color:var(--olive-d)}.theme-grove .rsvp-block{background:var(--olive);color:#fff}.theme-grove .rsvp-block h2{color:#fff}.theme-grove .rsvp-block .rule{background:#fff}.theme-grove .rsvp-block .f,.theme-grove .rsvp-block legend,.theme-grove .rsvp-block .muted,.theme-grove .rsvp-block .check{color:#fff}.theme-grove .rsvp-block details.more summary{color:#fff}
.theme-grove .rsvp-block .yesno span{color:var(--ink)}.theme-grove .rsvp-block .yesno input:checked+span{background:#3f3f2c;color:#fff;border-color:#3f3f2c}.theme-grove .rsvp-block .btn{background:#fff;color:var(--olive-d);border-color:#fff}.theme-grove .rsvp-block .btn.ghost{background:transparent;color:#fff}
.theme-grove .venue{background:#585b5a}
/* ---- theme: Stone Garden (split hero) ---- */
.theme-garden{--bg:#edece8;--bg-alt:#fffcf9;--accent:#585b5a}
.theme-garden .sitenav{background:rgba(237,236,232,.95)}
.theme-garden .hero{display:grid;grid-template-columns:1.1fr 1fr;min-height:80vh;text-align:left}
.theme-garden .hero-photo{height:auto;max-height:none;min-height:420px}
.theme-garden .hero-text{margin:0;border:0;background:var(--stone);display:flex;flex-direction:column;justify-content:center;padding:60px 56px}
.theme-garden .hero .rule{margin-left:0}.theme-garden .countdown{justify-content:flex-start}.theme-garden .hero-btn{align-self:flex-start}.theme-garden .hero-text>div{display:flex}
.theme-garden .hero h1{font-style:italic}.theme-garden .hero-credit{top:auto;bottom:10px;right:auto;left:12px}
.theme-garden .btn{background:#585b5a;border-color:#585b5a}.theme-garden .btn.ghost{background:transparent;color:#585b5a}.theme-garden .venue{background:#585b5a}.theme-garden .venue .btn{background:#fff;color:#585b5a;border-color:#fff}.theme-garden .venue .btn.ghost{background:transparent;color:#fff}
.theme-garden .yesno input:checked+span{background:#585b5a;border-color:#585b5a}.theme-garden .card{background:var(--stone)}
@media (max-width:760px){
 body{font-size:16px}.sitenav{padding:10px 16px}.sn-toggle{display:block}
 .sn-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--cream);border-bottom:1px solid var(--line)}.nav-open .sn-links{display:flex}.sn-links a{padding:14px 20px;border-top:1px solid var(--line)}
 .hero-photo{height:48vh;min-height:300px}.hero-text{margin:-50px 14px 0;padding:34px 18px 30px}
 .hero-mono{height:60px;margin-bottom:10px}.theme-garden .hero-mono{margin-left:auto}
 .block{padding:56px 0}.wrap{padding:0 18px}.welcome .prose{font-size:1.3rem}
 .timeline li{grid-template-columns:1fr;gap:4px;text-align:center}.t-time{text-align:center}
 .yesno{grid-template-columns:1fr}
 .split{grid-template-columns:1fr;gap:24px}.split-text{text-align:center}.split-text h2{text-align:center}.split-text .rule{margin-left:auto}.split-text p:not(.eyebrow){font-size:1.3rem}
 .theme-grove .hero{min-height:82vh}.theme-grove .hero-text{margin:0;padding:90px 18px 60px}
 .theme-garden .hero{grid-template-columns:1fr;min-height:0}.theme-garden .hero-photo{min-height:320px}.theme-garden .hero-text{padding:36px 22px;text-align:center}.theme-garden .hero .rule{margin-left:auto}.theme-garden .countdown{justify-content:center}.theme-garden .hero-btn{align-self:center}.theme-garden .hero-credit{bottom:auto;top:10px}
}
.error[hidden]{display:none}
.rsvp .consent{margin:-8px 0 18px;font-size:.88rem;line-height:1.4}
.rsvp input.invalid{border-color:#b0452f;box-shadow:0 0 0 2px rgba(176,69,47,.18)}
/* curated photos (demo) */
.photo-break{margin:0;position:relative;background:#e9e5dc}.photo-break img{display:block;width:100%;height:auto;max-height:86vh;object-fit:cover}
.photo-break figcaption,.split-img.portrait figcaption{font-size:.72rem;letter-spacing:.06em}
.photo-break figcaption{position:absolute;right:14px;bottom:10px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6);opacity:.9}
.split.split-portrait{grid-template-columns:minmax(0,440px) 1fr;justify-content:center}
.split-img.portrait img{aspect-ratio:auto;height:auto;max-height:80vh;object-fit:cover}
.gallery.curated{display:block;columns:3;column-gap:14px}.gallery.curated figure{break-inside:avoid;margin:0 0 14px;position:relative}
.gallery.curated img{aspect-ratio:auto;height:auto}
.gallery.curated figcaption{position:absolute;left:0;right:0;bottom:0;padding:18px 10px 8px;font-size:.7rem;letter-spacing:.05em;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.45));opacity:0;transition:opacity .2s}
.gallery.curated figure:hover figcaption,.gallery.curated figure:focus-within figcaption{opacity:1}
@media (max-width:700px){.gallery.curated{columns:2;column-gap:10px}.gallery.curated figure{margin-bottom:10px}.split.split-portrait{grid-template-columns:1fr}.photo-break img{max-height:70vh}.photo-break figcaption{right:10px;bottom:6px;font-size:.66rem}}
.gallery.curated.g7{display:grid;--gw:min(100vw - 48px, 932px);--gap:14px;gap:var(--gap);grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:calc((var(--gw) - 2 * var(--gap)) / 3 * .75);grid-template-areas:"a b c" "a d c" "e f g"}
.gallery.curated.g7 figure{margin:0;overflow:hidden;background:#e9e5dc}
.gallery.curated.g7 img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media (max-width:700px){.gallery.curated.g7{--gw:calc(100vw - 36px);--gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:calc((var(--gw) - var(--gap)) / 2 * .8);grid-template-areas:"a b" "a d" "e c" "g c" "g f"}}
/* venue website links */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sn-right{display:flex;align-items:center;gap:22px;min-width:0}
.sn-venue{display:inline-flex;align-items:center;gap:8px;flex:none;padding-left:18px;border-left:1px solid var(--line);text-decoration:none;color:var(--olive-d);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.sn-venue img{width:28px;height:28px;display:block}
.sn-venue:hover span{text-decoration:underline;text-underline-offset:3px}
@media (max-width:1240px){.sn-venue span{display:none}.sn-venue{padding-left:14px}}
@media (max-width:760px){.sn-right{gap:12px}.sn-venue{padding-left:0;border-left:0}.sn-venue img{width:32px;height:32px}}
.sitefoot .sf-mark{display:inline-block}
.sitefoot .sf-line{margin:10px 0 6px;color:var(--slate);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase}
.sitefoot a.sf-visit{display:inline-block;flex-direction:row;color:var(--olive-d);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;text-decoration:underline;text-underline-offset:4px;padding:8px 4px}
.sitefoot a.sf-visit:hover{text-decoration-thickness:2px}
.theme-garden .sn-venue,.theme-garden .sitefoot a.sf-visit{color:#585b5a}
/* collapse the section links into the Menu button before they run out of room (tablets) */
@media (max-width:1060px){.sitenav{padding:10px 20px}.sn-toggle{display:block}.sn-right{gap:12px}.sn-venue{padding-left:0;border-left:0}.sn-venue img{width:32px;height:32px}
 .sn-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--cream);border-bottom:1px solid var(--line)}.nav-open .sn-links{display:flex}.sn-links a{padding:14px 20px;border-top:1px solid var(--line)}}
.rsvp .opt{font-weight:300;text-transform:none;letter-spacing:0;opacity:.75}
.kid-meals{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 14px;padding:12px 14px 2px;margin:-6px 0 16px;border-left:3px solid var(--olive);background:rgba(117,117,86,.06)}
.kid-meals:not(:has(.kid-meal:not([hidden]))){display:none}
.kid-meal[hidden]{display:none}
.theme-grove .rsvp-block .kid-meals{background:rgba(255,255,255,.08);border-left-color:#fff}
