:root{--cream:#f6f1e7;--cream2:#ece3d3;--stone:#d6cbb6;--rust:#a8482a;--terra:#b06d35;--peach:#e2b38f;--gold:#b8955a;--gilt:#c9ad7f;--vine:#3f4f33;--sage:#868b76;--rhine:#5d7b94;--walnut:#5d341a;--ink:#3b2a1e;--muted:#7d6d5c;
--serif:'Cormorant Garamond',Georgia,serif;--sans:'Jost',system-ui,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}
body{margin:0;background:var(--cream);color:var(--ink);font:300 1.02rem/1.7 var(--sans)}
a{color:var(--rust)}img{max-width:100%}
h1,h2,h3{font-family:var(--serif);font-weight:500;color:var(--rust);line-height:1.15;margin:0 0 .4em}
h2{font-size:clamp(2.1rem,6vw,3rem);text-align:center}
h3{font-size:1.45rem}
.rule{width:140px;height:1px;margin:.6rem auto 1.8rem;background:linear-gradient(90deg,transparent,var(--gold),transparent);position:relative}
.rule::after{content:"❦";position:absolute;left:50%;top:-.8em;transform:translateX(-50%);background:inherit;color:var(--gold);font-size:.9rem;background:var(--cream);padding:0 .4em}
.alt .rule::after{background:var(--cream2)}
.nav{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:.6rem 1.1rem;background:rgba(246,241,231,.92);backdrop-filter:blur(6px);border-bottom:1px solid rgba(184,149,90,.3)}
.brand{font:500 1.5rem var(--serif);color:var(--rust);text-decoration:none}.brand span{color:var(--gold);font-style:italic}
.menu{background:none;border:1px solid var(--gold);color:var(--rust);font:400 .85rem var(--sans);letter-spacing:.15em;text-transform:uppercase;padding:.35rem .8rem;border-radius:2px}
nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--cream);flex-direction:column;padding:.5rem 1.2rem 1rem;border-bottom:1px solid rgba(184,149,90,.3)}
nav.open{display:flex}
nav a{text-decoration:none;color:var(--ink);font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;padding:.55rem 0}
nav a:hover{color:var(--rust)}
.pill{color:var(--rust)!important;font-weight:500}
@media(min-width:900px){.menu{display:none}nav{display:flex;position:static;flex-direction:row;gap:1.4rem;padding:0;background:none;border:0}nav a{padding:0}.pill{border:1px solid var(--gold);padding:.3rem .9rem!important}}
.hero{position:relative;min-height:calc(100svh - 56px);display:grid;place-items:center;text-align:center;overflow:hidden;padding:5rem 1.2rem}
.fl{position:absolute;pointer-events:none;mix-blend-mode:multiply}
.fl-tl{top:0;left:0;width:min(62vw,420px)}
.fl-br{bottom:0;right:0;width:min(70vw,480px)}
.fl-bl{bottom:0;left:0;width:min(42vw,260px);opacity:.85}
.hero-inner{position:relative;max-width:640px;background:radial-gradient(closest-side,rgba(246,241,231,.95),rgba(246,241,231,.7) 70%,transparent);padding:2rem 1rem}
.eyebrow{font:italic 400 1.2rem var(--serif);color:var(--muted);margin:0}
h1{font-size:clamp(3.6rem,15vw,7.5rem);font-weight:400;margin:.1em 0 0}
h1 em{font-weight:400;color:var(--gold);font-size:.7em}
.date{font:500 1rem var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--rust);margin:.2rem 0}
.place{font:400 1.25rem var(--serif);margin:.2rem 0 1.6rem}
.countdown{display:flex;justify-content:center;gap:.6rem;margin-bottom:1.8rem}
.countdown div{min-width:68px;padding:.5rem .3rem;border:1px solid rgba(184,149,90,.5);background:rgba(255,255,255,.35)}
.countdown b{display:block;font:500 1.9rem/1 var(--serif);color:var(--rust)}
.countdown span{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.btn{display:inline-block;background:var(--rust);color:#fff;text-decoration:none;font:400 .8rem var(--sans);letter-spacing:.18em;text-transform:uppercase;padding:.8rem 1.6rem;border-radius:2px;transition:background .2s}
.btn:hover{background:var(--terra)}.btn.small{padding:.6rem 1rem;margin:.2rem .3rem .2rem 0}.btn.ghost{background:none;color:var(--rust);border:1px solid var(--gold)}
section.wrap{padding:4.5rem 1.2rem;max-width:1080px;margin:0 auto;position:relative}
section.alt{max-width:none;background:var(--cream2)}
section.alt>*{max-width:1040px;margin-left:auto;margin-right:auto}
#story p{max-width:680px;margin:0 auto 1rem;text-align:center}
.lead{font:400 1.45rem/1.45 var(--serif);text-align:center;max-width:680px;margin:0 auto 1.2rem}
.tbc{text-align:center;font:italic 500 1.15rem var(--serif);color:var(--terra)}
.soon{display:inline-block;font:italic 500 .95rem var(--serif);color:var(--terra);background:rgba(233,180,143,.25);padding:0 .45em;border-radius:2px}
.note{text-align:center;color:var(--muted);font-size:.92rem}
.timeline{list-style:none;padding:0;max-width:640px;margin:2rem auto;position:relative}
.timeline::before{content:"";position:absolute;left:74px;top:.5rem;bottom:.5rem;width:1px;background:var(--gold);opacity:.6}
.timeline li{display:grid;grid-template-columns:60px 1fr;gap:30px;padding:.4rem 0 1.4rem;position:relative}
.timeline li::before{content:"";position:absolute;left:70px;top:.85rem;width:9px;height:9px;border-radius:50%;background:var(--peach);border:1px solid var(--rust)}
.timeline time{font:500 1.3rem var(--serif);color:var(--rust);text-align:right}
.timeline p{margin:0}
.grid2{display:grid;gap:1.5rem}
@media(min-width:760px){.grid2{grid-template-columns:1fr 1.3fr;align-items:center}}
.map iframe{width:100%;height:300px;border:1px solid rgba(184,149,90,.5);filter:sepia(.25)}
.cards{display:grid;gap:1rem;margin-top:2rem}
@media(min-width:640px){.cards{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){#travel .cards{grid-template-columns:repeat(3,1fr)}}
.cards article{background:rgba(255,255,255,.45);border:1px solid rgba(184,149,90,.35);padding:1.3rem 1.4rem}
.cards p,.cards ul{margin:0}.cards ul{padding-left:1.1rem}
details{max-width:760px;margin:0 auto;border-bottom:1px solid rgba(184,149,90,.4);padding:1rem .2rem}
summary{cursor:pointer;font:500 1.3rem var(--serif);color:var(--rust);list-style:none;display:flex;justify-content:space-between;gap:1rem}
summary::after{content:"+";color:var(--gold)}details[open] summary::after{content:"–"}
details p{margin:.6rem 0 0}
.updates{list-style:none;padding:0;max-width:720px;margin:0 auto}
.updates li{border-left:2px solid var(--peach);padding:.2rem 0 1.2rem 1.2rem;margin-bottom:.6rem}
.updates time{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.updates p{margin:.2rem 0 0}.muted{color:var(--muted)}
.rsvp{text-align:center;overflow:hidden;padding-bottom:7rem!important}
footer{text-align:center;padding:2rem 1rem;font:italic 400 1.1rem var(--serif);color:var(--muted);border-top:1px solid rgba(184,149,90,.3)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.film{position:relative;height:min(70vh,560px);overflow:hidden;background:#3a2a20}
.film video{width:100%;height:100%;object-fit:cover;display:block}
.film::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(246,241,231,.9) 0,rgba(246,241,231,0) 22%,rgba(60,35,20,0) 60%,rgba(60,35,20,.55))}
.film-cap{position:absolute;z-index:1;left:0;right:0;bottom:2.2rem;text-align:center;color:#fff}
.film-cap .eyebrow{color:#f3dcc6}.film-title{font:400 clamp(1.8rem,5vw,2.8rem) var(--serif);margin:0;text-shadow:0 1px 12px rgba(0,0,0,.35)}
.credit{position:absolute;z-index:1;right:.8rem;bottom:.5rem;color:rgba(255,255,255,.8);font-size:.7rem;letter-spacing:.05em}
.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-top:2rem}
@media(min-width:760px){.gallery{grid-template-columns:repeat(4,1fr)}.gallery a:first-child{grid-column:span 2;grid-row:span 2}}
.gallery a{display:block;overflow:hidden;aspect-ratio:3/2;border:1px solid rgba(184,149,90,.35)}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.gallery a:hover img{transform:scale(1.04)}
.credit-line{text-align:right;font-size:.75rem;color:var(--muted);margin:.4rem 0 0}
@media(prefers-reduced-motion:reduce){.film video{display:none}.film{background:url(media/hero-poster.webp) center/cover}}
/* ===== v2: VILLArue-derived theme ===== */
body{background:var(--cream) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cpath d='M0 60h120M60 0v120' stroke='%23b8955a' stroke-opacity='.05'/%3E%3C/svg%3E")}
h2{color:var(--vine)}h3{color:var(--rust)}
a{color:var(--rhine)}
.nav{border-bottom:1px solid var(--gilt)}
.brand{color:var(--vine)}
/* vine-leaf divider */
.rule{width:220px;height:22px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 22'%3E%3Cpath d='M0 11h86M134 11h86' stroke='%23b8955a' stroke-width='.8'/%3E%3Cpath d='M86 11c8-7 16-7 24 0c8 7 16 7 24 0' fill='none' stroke='%233f4f33' stroke-width='1'/%3E%3Cpath d='M98 6c-3-4 0-6 3-5c1 3-1 5-3 5zM122 16c3 4 0 6-3 5c-1-3 1-5 3-5z' fill='%23868b76'/%3E%3Ccircle cx='110' cy='11' r='2.2' fill='%23a8482a'/%3E%3C/svg%3E") center/contain no-repeat}
.rule::after{content:none}
/* arch motif (villa windows) */
.arch{border:1px solid var(--gilt);border-radius:999px 999px 6px 6px;padding:3.5rem 2rem 2.2rem!important;background:rgba(246,241,231,.82)!important;box-shadow:0 0 0 6px rgba(246,241,231,.6),0 0 0 7px rgba(184,149,90,.35)}
@media(max-width:600px){.arch{padding:3rem 1rem 2rem!important;border-radius:220px 220px 6px 6px}}
h1{color:var(--rust)}
.date{color:var(--vine)}
.countdown div{border-color:var(--gilt);background:rgba(255,255,255,.5)}
.countdown b{color:var(--vine)}
.btn{background:var(--vine)}.btn:hover{background:var(--rust)}
.btn.ghost{color:var(--vine)}
section.alt{background:var(--cream2);border-top:1px solid rgba(184,149,90,.35);border-bottom:1px solid rgba(184,149,90,.35)}
.cards article{background:rgba(255,255,255,.55);border:1px solid rgba(184,149,90,.45);border-radius:120px 120px 4px 4px / 40px 40px 4px 4px;padding-top:2rem;position:relative}
.cards article::before{content:"";position:absolute;inset:6px;border:1px solid rgba(184,149,90,.18);border-radius:inherit;pointer-events:none}
.timeline::before{background:var(--vine)}
.timeline li::before{background:var(--peach);border-color:var(--rust)}
.timeline time{color:var(--vine)}
.soon{color:var(--rust);background:rgba(226,179,143,.28)}
.tbc{color:var(--rust)}
summary{color:var(--vine)}
.updates li{border-left-color:var(--gilt)}
.arch-photo{margin:0;border-radius:999px 999px 4px 4px;overflow:hidden;border:1px solid var(--gilt);box-shadow:0 0 0 6px var(--cream),0 0 0 7px rgba(184,149,90,.4);aspect-ratio:4/4.4;max-width:440px;justify-self:center;position:relative}
.arch-photo img{width:100%;height:100%;object-fit:cover}
.arch-photo figcaption{position:absolute;bottom:0;left:0;right:0;text-align:center;padding:.6rem;background:linear-gradient(transparent,rgba(59,42,30,.6))}
.arch-photo a{color:#fff;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;text-decoration:none}
.gallery a{border-color:var(--gilt)}
.gallery a:first-child{border-radius:300px 300px 2px 2px / 120px 120px 2px 2px}
/* terrace balustrade band */
.balustrade{height:46px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='46'%3E%3Crect y='0' width='36' height='5' fill='%23d6cbb6'/%3E%3Crect y='41' width='36' height='5' fill='%23d6cbb6'/%3E%3Cpath d='M18 7c-5 0-6 5-3 8c-4 3-4 12 0 15c-3 3-2 9 3 9c5 0 6-6 3-9c4-3 4-12 0-15c3-3 2-8-3-8z' fill='%23e6dccb' stroke='%23b8955a' stroke-width='.8'/%3E%3C/svg%3E") repeat-x;opacity:.9}
.film::after{background:linear-gradient(180deg,rgba(246,241,231,.95) 0,rgba(246,241,231,0) 20%,rgba(30,40,25,0) 60%,rgba(30,40,25,.55))}
footer{background:var(--vine);color:var(--gilt);border:0}
/* map */
.lead.small{font-size:1.2rem}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin:0 0 1rem}
.chip{display:inline-flex;align-items:center;gap:.45rem;font:400 .78rem var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:.45rem .9rem;border:1px solid var(--gilt);background:transparent;color:var(--muted);border-radius:999px;cursor:pointer;transition:.2s}
.chip i{width:10px;height:10px;border-radius:50%;display:inline-block;opacity:.4}
.chip.on{background:#fff;color:var(--ink)}.chip.on i{opacity:1}
.map-frame{padding:8px;border:1px solid var(--gilt);border-radius:220px 220px 6px 6px / 60px 60px 6px 6px;background:var(--cream2)}
#leaflet{height:min(65vh,520px);border-radius:212px 212px 4px 4px / 54px 54px 4px 4px;overflow:hidden;background:#efe9dd}
.muted-tiles{filter:grayscale(.9) sepia(.28) brightness(1.06) contrast(.88)}
.pin{background:none;border:0}
.leaflet-popup-content-wrapper{background:var(--cream);border:1px solid var(--gilt);border-radius:4px;box-shadow:0 6px 24px rgba(59,42,30,.18)}
.leaflet-popup-tip{background:var(--cream)}
.pp h4{font:500 1.35rem var(--serif);color:var(--vine);margin:.1rem 0 .3rem}.pp p{margin:0 0 .4rem;font:300 .9rem/1.5 var(--sans);color:var(--ink)}
.pp-cat{font:500 .68rem var(--sans);letter-spacing:.16em;text-transform:uppercase}.pp-rating{color:var(--gold);font-size:.85rem}
.pp a{font-size:.8rem;letter-spacing:.08em;color:var(--rhine)}
.center{text-align:center;margin-top:1.5rem}
.hotels{list-style:none;padding:0;max-width:820px;margin:1rem auto;display:grid;gap:.6rem}
.hotels li{display:grid;gap:.15rem;padding:.8rem 1rem;border-bottom:1px solid rgba(184,149,90,.35)}
.hotels a{font:500 1.25rem var(--serif);color:var(--vine);text-decoration:none}
.hotels span{font-size:.92rem}.hotels em{font-style:normal;font-size:.78rem;letter-spacing:.06em;color:var(--gold)}

.monogram{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border:1px solid var(--gold);border-radius:50%;font:400 1.3rem/1 var(--serif,serif);color:var(--rust);letter-spacing:.05em;margin-bottom:.8rem}.monogram em{color:var(--gold);font-size:.85em;margin:0 .1em}
.hero .btn+.btn{margin-left:.5rem}
