/* Shared styles for every page. Palette + type taken from the printed invitation. */
:root{--taupe:#584640;--taupe3:#4a3a35;--cream:#f6efe6;--cream2:rgba(246,239,230,.74);--cline:rgba(246,239,230,.42);
      --ivory:#f6f0e9;--paper:#fffcf8;--ink:#46372f;--muted:#8b7a70;--line:#e3d6c8;--shadow:0 12px 28px rgba(70,55,47,.12);
      --script:"Pinyon Script",cursive;--caps:"Cormorant Garamond",Georgia,serif;--body:"EB Garamond",Georgia,serif}
*{box-sizing:border-box} html{scroll-behavior:smooth;scroll-padding-top:60px}
body{margin:0;background:var(--ivory);color:var(--ink);font:17px/1.65 var(--body)}
img{max-width:100%;display:block} a{color:inherit}
[hidden]{display:none!important}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}
.caps{font-family:var(--caps);text-transform:uppercase;letter-spacing:.3em;font-weight:500}
.dark{background:var(--taupe);color:var(--cream)}
.paper{background:var(--paper)}
.btn{display:inline-block;font:600 12px/1 var(--caps);text-transform:uppercase;letter-spacing:.24em;padding:15px 24px;border-radius:2px;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background .2s,color .2s,transform .2s;background:none}
.btn:hover{transform:translateY(-1px)}
.btn.cream{background:var(--cream);color:var(--taupe)}
.btn.ghost{border-color:var(--cline);color:var(--cream)}
.btn.ghost:hover{background:rgba(246,239,230,.08)}
.btn.taupe{background:var(--taupe);color:var(--cream)}
.btn.line{border-color:var(--taupe);color:var(--taupe)}
.btn.small{padding:11px 16px;font-size:11px}
.ph{display:inline-block;font:600 9.5px/1 system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;border:1px dashed currentColor;opacity:.75;padding:4px 7px;border-radius:99px;vertical-align:middle;margin-left:6px;font-style:normal}
.phtext{font-style:italic;opacity:.72}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}*{animation:none!important}}

/* banner + nav */
.preview{background:var(--taupe3);color:var(--cream2);font:12.5px/1.4 system-ui,sans-serif;text-align:center;padding:8px 40px 8px 16px;position:relative}
.preview button{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--cream);font-size:18px;cursor:pointer}
nav{position:sticky;top:0;z-index:1000;background:rgba(88,70,64,.96);backdrop-filter:blur(6px);border-bottom:1px solid rgba(246,239,230,.14)}
nav .wrap{display:flex;align-items:center;gap:16px;height:56px}
nav .brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--cream)}
nav .brand img{height:36px;width:auto}
nav .brand span{font:400 25px/1 var(--script);white-space:nowrap}
.links{display:flex;gap:2px;flex:1;justify-content:center;overflow-x:auto;scrollbar-width:none}
.links::-webkit-scrollbar{display:none}
.links a{font:500 11px/1 var(--caps);text-transform:uppercase;letter-spacing:.22em;color:var(--cream2);text-decoration:none;padding:10px 10px;white-space:nowrap;border-bottom:1px solid transparent}
.links a.active,.links a:hover{color:var(--cream);border-bottom-color:var(--cream2)}
.menu{display:none}
@media(max-width:1000px){nav .brand span{display:none}}
/* phone: crest + names on the left, menu button opens the tabs as a drop-down */
@media(max-width:760px){
  nav .wrap{justify-content:space-between}
  nav .brand span{display:inline}
  nav .btn{display:none}
  .menu{display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:10px;background:none;border:0;cursor:pointer}
  .menu span{display:block;height:1px;background:var(--cream);transition:transform .25s,opacity .25s}
  nav.open .menu span:nth-child(1){transform:translateY(6px) rotate(45deg)}
  nav.open .menu span:nth-child(2){opacity:0}
  nav.open .menu span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
  .links{display:none;position:absolute;top:56px;left:0;right:0;flex-direction:column;align-items:center;background:var(--taupe);padding:6px 0 18px;border-bottom:1px solid rgba(246,239,230,.14)}
  nav.open .links{display:flex}
  .links a{font-size:12.5px;padding:14px 10px}
}

/* home hero: invitation typography + photo */
.hero{display:grid;grid-template-columns:1fr 1fr;min-height:min(86vh,800px)}
.hero-text{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:52px 36px}
.crest{width:82px;margin:0 0 16px}
.hero .eyebrow{font-size:11.5px;letter-spacing:.36em;color:var(--cream2);margin:0}
.names{font:400 clamp(46px,5.3vw,78px)/1.1 var(--script);margin:12px 0 8px}
.names span{display:block}
.names .and{font:500 12px/1 var(--caps);letter-spacing:.5em;text-transform:uppercase;margin:4px 0 8px}
.hero .sub{font-size:11.5px;letter-spacing:.32em;color:var(--cream2);margin:6px 0 22px}
.when .d{display:block;font:400 clamp(30px,3vw,40px)/1.1 var(--script)}
.when .p{display:block;font-size:12px;letter-spacing:.3em;color:var(--cream2);margin-top:10px}
.countdown{display:flex;gap:10px;margin:28px 0}
.countdown div{width:82px;padding:12px 0 10px;border:1px solid var(--cline)}
.countdown b{display:block;font:500 30px/1 var(--caps)}
.countdown span{display:block;font:600 9.5px/1 var(--caps);letter-spacing:.24em;text-transform:uppercase;color:var(--cream2);margin-top:7px}
.cta{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.hero-photo{position:relative;overflow:hidden;min-height:420px}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 38%}
.hero-photo::after,.framed::after{content:"";position:absolute;inset:16px;border:1px solid rgba(246,239,230,.75);pointer-events:none}
@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-photo{order:-1;height:54vh;min-height:320px}.hero-text{padding:36px 18px 46px}}

/* sub-page header with photo */
.pagehead{position:relative;color:var(--cream);background:var(--taupe) center/cover no-repeat;text-align:center;padding:92px 20px 70px}
.pagehead::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(74,58,53,.8),rgba(74,58,53,.66))}
.pagehead>*{position:relative}
.pagehead .crest{width:56px;margin:0 auto 12px}
.pagehead .eyebrow{font-size:12px;letter-spacing:.34em;color:var(--cream2);margin:0}
.pagehead h1{font:400 clamp(52px,7vw,84px)/1.1 var(--script);margin:6px 0 0}
.pagehead .lead{max-width:640px;margin:12px auto 0;color:var(--cream2)}
@media(max-width:700px){.pagehead{padding:60px 18px 46px}}

/* sections */
section{padding:84px 0}
.sh{text-align:center;margin:0 auto 38px;max-width:720px}
.sh .eyebrow{font-size:12px;margin:0 0 2px;color:var(--muted)}
.dark .sh .eyebrow{color:var(--cream2)}
.sh h2{font:400 clamp(44px,5.2vw,62px)/1.15 var(--script);margin:0;color:var(--taupe)}
.dark .sh h2{color:var(--cream)}
.sh .lead{margin:10px 0 0}
.rule{width:140px;height:1px;background:currentColor;opacity:.35;margin:16px auto 0;position:relative}
.rule::after{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;border:1px solid currentColor;background:inherit;transform:translate(-50%,-50%) rotate(45deg)}
@media(max-width:700px){section{padding:58px 0}}

/* story */
.story{display:grid;grid-template-columns:.85fr 1.15fr;gap:60px;align-items:center}
.arch{border-radius:600px 600px 6px 6px;overflow:hidden;border:7px solid var(--paper);box-shadow:0 16px 44px rgba(70,55,47,.2);aspect-ratio:4/5;max-width:380px;justify-self:center;width:100%}
.arch img{width:100%;height:100%;object-fit:cover;object-position:62% 50%}
.story h2{font:400 clamp(44px,5vw,60px)/1.1 var(--script);color:var(--taupe);margin:0 0 10px}
.story h3{font:600 12px/1.4 var(--caps);letter-spacing:.26em;text-transform:uppercase;color:var(--taupe);margin:22px 0 4px}
.story h3+p{margin-top:4px}
@media(max-width:820px){.story{grid-template-columns:1fr;gap:28px}.arch{max-width:300px}}

/* events */
.events{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;max-width:880px;margin:0 auto}
@media(max-width:920px){.events{grid-template-columns:1fr;max-width:560px;margin:0 auto}}
.event{border:1px solid var(--cline);padding:30px 22px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px}
.event .day{font-size:12px;color:var(--cream2);margin:0}
.event .d{font:400 36px/1.15 var(--script);margin:0 0 6px}
.event h3{font:500 16px/1.4 var(--caps);text-transform:uppercase;letter-spacing:.22em;margin:0 0 4px}
.event .t{margin:0}
.event .v{font:700 19px/1.2 var(--caps);letter-spacing:.08em;margin:6px 0 0}
.event .a{font:500 12.5px/1.8 var(--caps);text-transform:uppercase;letter-spacing:.08em;color:var(--cream2);margin:0}
.event .body{margin:10px 0 4px;font-size:16px;color:var(--cream2)}
.event .dress{font:600 11px/1.4 var(--caps);text-transform:uppercase;letter-spacing:.22em;border-top:1px solid var(--cline);padding-top:12px;margin-top:auto}
.event.main{background:rgba(246,239,230,.05);border-color:rgba(246,239,230,.62)}

/* home: plan-your-trip photo cards + RSVP band */
.trips{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:860px){.trips{grid-template-columns:1fr}}
.trip{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;color:var(--cream);text-decoration:none;background:var(--taupe)}
.trip img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease}
.trip:hover img{transform:scale(1.05)}
.trip::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(58,45,40,.88),rgba(58,45,40,.08) 62%);z-index:1}
.trip::after{content:"";position:absolute;inset:12px;border:1px solid rgba(246,239,230,.6);z-index:1}
.trip .t{position:absolute;left:0;right:0;bottom:26px;text-align:center;z-index:2}
.trip .t b{display:block;font:400 44px/1.1 var(--script)}
.trip .t span{font:600 11px/1 var(--caps);letter-spacing:.26em;text-transform:uppercase;color:var(--cream2)}
@media(max-width:860px){.trip{aspect-ratio:16/10}}
.band{text-align:center}
.deadline{margin:10px 0 0;font-size:12.5px;color:var(--cream2)} .deadline b{display:block;margin-top:8px;color:var(--cream);font-weight:700;letter-spacing:.3em;font-size:14.5px}
.band .cta{margin-top:26px}

/* travel tips */
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:860px){.tiles{grid-template-columns:1fr 1fr}}@media(max-width:560px){.tiles{grid-template-columns:1fr}}
.tile,.fund,.way{transition:transform .25s ease,box-shadow .25s ease}
.tile:hover,.fund:hover,.way:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.tile{background:var(--paper);border:1px solid var(--line);padding:22px 20px}
.tile h3{font:600 12.5px/1.4 var(--caps);text-transform:uppercase;letter-spacing:.24em;color:var(--taupe);margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.tile p{margin:0;font-size:16px}

/* filters */
.chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.chip{font:600 11px/1 var(--caps);letter-spacing:.2em;text-transform:uppercase;border:1px solid var(--line);background:var(--paper);color:var(--taupe);padding:11px 15px;cursor:pointer;border-radius:2px}
.chip.on{background:var(--taupe);border-color:var(--taupe);color:var(--cream)}
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:0 0 18px;padding:14px 16px;background:var(--paper);border:1px solid var(--line)}
.filters .chips{justify-content:flex-start}
.selects{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
select{font:15px var(--body);padding:9px 12px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:2px}
.toggle{font:600 11px/1 var(--caps);letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);display:flex;gap:6px;align-items:center;cursor:pointer}
.count{font:italic 15px var(--body);color:var(--muted)}

/* stay: map + hotel photo cards */
.stay-intro{max-width:740px;margin:0 auto 26px;text-align:center}
.block{border:1px dashed #bfa996;padding:15px 18px;margin:0 auto 24px;font-size:15.5px;background:var(--paper);max-width:740px;text-align:center}
.staygrid{display:grid;grid-template-columns:5fr 7fr;gap:24px;align-items:start}
.mapcol{align-self:stretch}.mapstick{position:sticky;top:74px}
#map{height:min(600px,calc(100vh - 140px));border:1px solid var(--line);background:#efe8df}
.legend{font:13.5px/1.5 var(--body);color:var(--muted);margin:10px 2px 0}
.hgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1000px){.staygrid{grid-template-columns:1fr}.mapstick{position:relative;top:0}#map{height:360px}}
@media(max-width:600px){.hgrid{grid-template-columns:1fr}}
.hcard{background:var(--paper);border:1px solid var(--line);display:flex;flex-direction:column;cursor:pointer;transition:border-color .2s,box-shadow .25s,transform .25s}
.hcard:hover,.hcard.sel{border-color:var(--taupe);box-shadow:var(--shadow);transform:translateY(-2px)}
.himg{position:relative;aspect-ratio:16/10;background:var(--taupe);overflow:hidden}
.himg>img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.hcard:hover .himg>img{transform:scale(1.04)}
.himg .crestph{position:absolute;inset:0;display:grid;place-items:center}
.himg .crestph img{width:62px;opacity:.85}
.himg .num{position:absolute;top:10px;left:10px;width:28px;height:28px;border-radius:50%;background:var(--taupe);color:var(--cream);font:600 12px/26px var(--caps);text-align:center;border:1px solid var(--cream)}
.himg .area{position:absolute;bottom:10px;left:10px;font:600 10px/1 var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--cream);background:rgba(74,58,53,.85);padding:6px 9px}
.hcard .body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:3px;flex:1}
.hcard h3{margin:0;font:500 21px/1.15 var(--caps);color:var(--taupe)}
.hcard .m{font:600 10.5px/1.6 var(--caps);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.hcard p{margin:2px 0 10px;font-size:15.5px}
.hcard .acts{margin-top:auto;display:flex;gap:8px}
.closing{text-align:center;max-width:700px;margin:32px auto 0;font:italic 400 20px/1.5 var(--body);color:var(--taupe)}
.empty{grid-column:1/-1;text-align:center;color:var(--muted);font-style:italic;padding:30px}
.mk{width:26px;height:26px;border-radius:50%;background:var(--taupe);border:2px solid var(--cream);color:var(--cream);font:600 11px/22px var(--caps);text-align:center;box-shadow:0 1px 5px rgba(0,0,0,.3)}
.mk.sel{background:#2f2420;transform:scale(1.25)}
.mk.venue{width:40px;height:40px;background:var(--cream);border:2px solid var(--taupe);font-size:19px;line-height:35px}
.leaflet-popup-content{font:15px/1.5 var(--body)} .leaflet-popup-content b{font:600 18px var(--caps);color:var(--taupe)}

/* things to do: photo cards */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:24px}
@media(max-width:960px){.pgrid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.pgrid{grid-template-columns:1fr}}
.pcard{background:var(--paper);border:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}
.pcard:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.pimg{aspect-ratio:4/3;overflow:hidden;position:relative;background:var(--taupe)}
.pimg img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.pcard:hover .pimg img{transform:scale(1.05)}
.pimg .k{position:absolute;top:12px;left:12px;font:600 10px/1 var(--caps);letter-spacing:.22em;text-transform:uppercase;background:rgba(246,239,230,.94);color:var(--taupe);padding:7px 10px}
.pcard .body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.pcard h3{margin:0;font:500 23px/1.15 var(--caps);color:var(--taupe)}
.pcard p{margin:0;font-size:15.5px}
.pcard .tip,.eitem .tip{display:flex;justify-content:space-between;gap:10px;align-items:baseline;font-style:italic;font-size:14.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;margin-top:auto}
.pcard .tip a,.eitem .tip a{font:600 10.5px/1 var(--caps);font-style:normal;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);text-decoration:none;white-space:nowrap}

/* eat & drink */
.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 0 26px}
.strip img{width:100%;aspect-ratio:1/1;object-fit:cover;border:6px solid var(--paper);box-shadow:0 10px 30px rgba(70,55,47,.14)}
.strip img:nth-child(1){transform:rotate(-1.5deg)}.strip img:nth-child(3){transform:rotate(1.5deg)}
@media(max-width:560px){.strip{gap:8px}.strip img{border-width:3px}}
.elist{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}
@media(max-width:900px){.elist{grid-template-columns:1fr 1fr}}@media(max-width:600px){.elist{grid-template-columns:1fr}}
.eitem{background:var(--paper);border:1px solid var(--line);padding:16px 18px;display:flex;flex-direction:column}
.eitem.top{border-color:var(--taupe);box-shadow:inset 0 0 0 1px var(--taupe)}
.eitem .badge{display:inline-block;margin-left:8px;font:600 9px/1 var(--caps);letter-spacing:.2em;background:var(--taupe);color:var(--cream);padding:4px 7px;vertical-align:1px}
.eitem .tip .maps{display:flex;gap:14px;flex-shrink:0}
.eitem .k{font:600 10px/1 var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.eitem h4{margin:7px 0 4px;font:500 21px/1.2 var(--caps);color:var(--taupe)}
.eitem h4 a{text-decoration:none;border-bottom:1px solid var(--line)}
.eitem p{margin:0 0 12px;font-size:15.5px}
.musts-h{text-align:center;font-size:12px;color:var(--muted);margin:4px 0 14px}
.musts{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:860px;margin:0 auto 22px}
@media(max-width:640px){.musts{grid-template-columns:1fr}}
.must{position:relative;background:var(--taupe);color:var(--cream);text-align:center;padding:30px 22px 28px;display:flex;flex-direction:column;align-items:center;gap:6px}
.must::after{content:"";position:absolute;inset:10px;border:1px solid var(--cline);pointer-events:none}
.must .k{font:600 10.5px/1 var(--caps);letter-spacing:.28em;text-transform:uppercase;color:var(--cream2)}
.must h3{font:400 46px/1.1 var(--script);margin:2px 0 0}
.must p{margin:0;font:italic 18px/1.4 var(--body)}
.must a{font:600 10.5px/1 var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--cream2);text-decoration:none;margin-top:8px;padding-bottom:3px;border-bottom:1px solid var(--cline)}
.eat-tip{max-width:660px;margin:0 auto 20px;text-align:center;font-style:italic;color:var(--muted)}
.credits{margin:30px auto 0;max-width:900px;text-align:center;font-size:13px;color:var(--muted)}
.credits a{color:var(--muted)}

/* faq */
.faq{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
@media(max-width:800px){.faq{grid-template-columns:1fr}}
details{background:var(--paper);border:1px solid var(--line);padding:15px 20px}
summary{cursor:pointer;font:500 20px/1.3 var(--caps);color:var(--taupe);list-style:none;display:flex;justify-content:space-between;gap:10px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font:300 24px/1 var(--caps)}
details[open] summary::after{content:"–"}
details p{margin:10px 0 0;font-size:16px}

/* registry */
.zola{max-width:760px;margin:0 auto 26px;background:var(--taupe);color:var(--cream);text-align:center;padding:40px 28px;position:relative}
.zola::after{content:"";position:absolute;inset:12px;border:1px solid var(--cline);pointer-events:none}
.zola h3{font:400 46px/1.1 var(--script);margin:0}
.zola p{margin:8px auto 22px;max-width:520px;color:var(--cream2)}
.funds{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:0 0 30px}
.ways{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:760px;margin:0 auto}
@media(max-width:800px){.funds,.ways{grid-template-columns:1fr}}
.fund{background:var(--paper);border:1px solid var(--line);padding:22px 20px;text-align:center}
.fund h3{font:400 34px/1.1 var(--script);color:var(--taupe);margin:0 0 4px}
.fund p{margin:0;font-size:15.5px}
.way{border:1px solid var(--line);background:var(--paper);padding:20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.way .k{font:600 10.5px/1 var(--caps);text-transform:uppercase;letter-spacing:.26em;color:var(--muted)}
.way h4{margin:0;font:500 21px/1.2 var(--caps);color:var(--taupe)}
.way p{margin:0 0 6px;font-size:15px;color:var(--muted)}
.note{max-width:720px;margin:20px auto 0;font-size:14px;color:var(--muted);text-align:center}

/* rsvp */
form{max-width:640px;margin:0 auto;background:var(--paper);color:var(--ink);padding:30px;display:grid;gap:16px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
label{font:600 11px/1.4 var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);display:grid;gap:7px}
input[type=text],textarea{font:16.5px var(--body);padding:12px 14px;border:1px solid var(--line);background:#fff;color:var(--ink);text-transform:none;letter-spacing:0;border-radius:2px}
textarea{min-height:84px;resize:vertical}
.hint{margin:0;text-align:center;font-size:15px;color:var(--muted)}
.hint .demo{font:inherit;color:var(--taupe);background:none;border:0;border-bottom:1px dashed var(--taupe);padding:0;cursor:pointer}
.formnote{display:none;text-align:center;background:var(--ivory);color:var(--taupe);padding:12px;font-size:15.5px}
.seats{text-align:center}.seats h3{font:400 40px/1.1 var(--script);color:var(--taupe);margin:0}.seats p{margin:4px 0 0}
.guest{display:grid;grid-template-columns:1fr auto auto;gap:10px 16px;align-items:center;padding:12px 14px;border:1px solid var(--line);background:var(--ivory)}
.guest .who{font:500 20px/1.2 var(--caps);color:var(--taupe)}
.guest .who small{display:block;font:600 10px/1.6 var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.guest .who input{width:100%}
.guest .ev{display:grid;gap:5px}
.guest .ev small{font:600 10px/1 var(--caps);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
@media(max-width:620px){.guest{grid-template-columns:1fr 1fr}.guest .who{grid-column:1/-1}form{padding:22px 16px}}
.seg{display:flex;gap:6px}
.seg label{display:block}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:inline-block;font:600 11px/1 var(--caps);letter-spacing:.16em;text-transform:uppercase;color:var(--ink);border:1px solid var(--line);background:#fff;padding:10px 14px;cursor:pointer}
.seg input:checked+span{background:var(--taupe);border-color:var(--taupe);color:var(--cream)}
.seg input:focus-visible+span{outline:2px solid var(--taupe);outline-offset:2px}
.behind{max-width:640px;margin:18px auto 0;font-size:14px;color:var(--cream2);text-align:center}
.confetti{position:fixed;top:-12px;width:9px;height:14px;z-index:2000;pointer-events:none;animation:fall linear forwards}
@keyframes fall{to{transform:translate3d(var(--dx),110vh,0) rotate(var(--rot));opacity:.9}}

/* footer */
footer{padding:46px 0 56px;text-align:center}
footer img{width:66px;margin:0 auto 8px;opacity:.9}
footer .names2{font:400 40px/1.1 var(--script);margin:0}
footer .caps{font-size:11.5px;color:var(--cream2);margin:10px 0 0}
footer .flinks{margin:16px 0 0;font-size:15px;color:var(--cream2)}
footer .flinks a{color:var(--cream2);text-decoration:none;margin:0 6px}
footer .flinks a:hover{color:var(--cream)}

/* Travel Tips (Nov 8, 2026): heading + text rows; the words live in travel-tips.js */
.tips{max-width:880px;margin:0 auto;border-top:1px solid var(--line)}
.trow{display:grid;grid-template-columns:240px 1fr;gap:32px;align-items:baseline;padding:24px 6px;border-bottom:1px solid var(--line)}
.trow h3{margin:0;font:500 25px/1.2 var(--caps);color:var(--taupe)}
.trow p{margin:0 0 .6em;font-size:18px;line-height:1.6}
.trow p:last-child{margin-bottom:0}
.trow a{color:var(--taupe)}
@media(max-width:760px){.trow{grid-template-columns:1fr;gap:6px;padding:20px 2px}.trow h3{font-size:22px}.trow p{font-size:17px}}

/* ===== Readability pass (Nov 3, 2026) =====
   Small spaced capitals move from thin Cormorant to Jost (a clean sans), body text is one size up,
   grey text is darker and cream text brighter. Script names and big headings are unchanged.
   To undo: delete this block (and Jost from the font link in each page's <head>). */
:root{--label:"Jost","Helvetica Neue",Arial,sans-serif;--muted:#6f5f55;--cream2:rgba(246,239,230,.88)}
body{font-size:18px}
.caps,.btn,.links a,.names .and,.countdown span,.event .a,.event .dress,.trip .t span,.chip,.toggle,label,
.himg .num,.himg .area,.hcard .m,.mk,.pimg .k,.pcard .tip a,.eitem .tip a,.eitem .badge,.eitem .k,
.must .k,.must a,.way .k,.guest .who small,.guest .ev small,.seg span{font-family:var(--label);font-weight:500;letter-spacing:.16em}
.countdown span,.eitem .badge{font-size:10.5px}
.himg .area,.pimg .k,.eitem .k,.guest .who small,.guest .ev small,.hcard .m,.must .k,.must a,.way .k,.pcard .tip a,.eitem .tip a{font-size:11px}
.event .body{font-size:17px}
.hcard p,.pcard p,.eitem p,.fund p,.formnote,.block{font-size:16.5px}
.pcard .tip,.eitem .tip,.way p,.hint,.legend{font-size:15.5px}
.note,.behind{font-size:15px}
.credits{font-size:13.5px}

/* Simplify pass 2 (Nov 3, 2026) */
.links a[data-page="rsvp"]{display:none}            /* desktop: the RSVP button covers it */
@media(max-width:760px){.links a[data-page="rsvp"]{display:block}}
.hero-rsvp{font-size:11.5px;color:var(--cream2);margin:18px 0 0}
.faq-more{text-align:center;font-style:italic;color:var(--muted);margin:26px auto 0}
.eitem .badge.mich{background:none;color:var(--taupe);border:1px solid var(--taupe);padding:3px 6px}
footer{border-top:1px solid rgba(246,239,230,.16)}
.eitem .k{line-height:2.1}                          /* wrapped badges get breathing room */

/* Things to Do: one sticky filter bar for the whole page (Nov 3, 2026) */
.filterbar{position:sticky;top:56px;z-index:400;background:var(--ivory);padding:14px 0;margin:-14px 0 0}
.filterbar .chip{flex:0 0 auto}
@media(max-width:760px){.filterbar .chips{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none;margin:0 -20px;padding:0 20px}
 .filterbar .chips::-webkit-scrollbar{display:none}}
#eat{margin-top:60px;scroll-margin-top:72px}
#doGrid[hidden]+#eat{margin-top:10px}
.eat-h{text-align:center;font-size:12px;color:var(--muted);margin:0 0 18px}
#eat .strip{max-width:760px;margin:0 auto 22px}
#eat .elist{margin-top:14px}

/* Airbnb note under the hotels (Nov 8, 2026) */
.airbnb{max-width:740px;margin:34px auto 0;padding:20px 24px;text-align:center;font-size:17px;line-height:1.6;background:var(--ivory);border:1px solid var(--line)}
.airbnb b{font-weight:600;color:var(--taupe)}
/* Registry: three funds under the Zola card (Nov 8, 2026) */
.funds{max-width:760px;margin:0 auto 34px}
/* "Next" link at the end of each page, so guests can go through the site in order (Nov 8, 2026) */
.next{padding:44px 16px 52px;text-align:center;background:var(--ivory);border-top:1px solid var(--line)}
.next a{display:inline-flex;flex-direction:column;align-items:center;gap:4px;text-decoration:none;color:var(--taupe)}
.next .caps{font-size:11.5px;color:var(--muted)}
.next b{font:400 46px/1.15 var(--script);color:var(--taupe)}
.next b::after{content:"→";margin-left:.3em;font:300 30px/1 var(--caps)}
.next a:hover b{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px}
@media(max-width:560px){.next b{font-size:38px}}
/* Room block note is real copy now, not a placeholder (Nov 8, 2026) */
.block{border-style:solid;border-color:var(--line)}
/* Food grouped by time of day (Nov 8, 2026) */
.meal{margin-top:46px}
.meal:first-child{margin-top:14px}
.meal-h{font:400 44px/1.1 var(--script);color:var(--taupe);margin:0;text-align:center}
.meal-sub{text-align:center;color:var(--muted);font-style:italic;font-size:16.5px;margin:4px auto 18px;max-width:560px}
@media(max-width:560px){.meal-h{font-size:38px}}
/* Password screen (gate.js) */
html.gated body{overflow:hidden}
html.gated body>*:not(#gate){visibility:hidden}
#gate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:24px 16px;background:var(--taupe);color:var(--cream);text-align:center}
.gate-box{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:400px}
.gate-crest{width:84px;opacity:.95;margin-bottom:4px}
.gate-names{font:400 52px/1.1 var(--script);margin:0}
.gate-when{font-size:12px;letter-spacing:.24em;color:var(--cream2);margin:0 0 18px}
#gate label{display:block;font:400 19px/1.45 var(--body);letter-spacing:0;text-transform:none;color:var(--cream)}
#gate input{width:100%;max-width:300px;box-sizing:border-box;font:500 18px/1 var(--label);letter-spacing:.2em;text-align:center;padding:14px 12px;border:1px solid rgba(246,239,230,.55);background:rgba(255,255,255,.08);color:var(--cream);border-radius:2px}
#gate input:focus{outline:2px solid var(--cream);outline-offset:2px}
#gate .btn{min-width:180px;margin-top:4px}
.gate-err{font-size:16px;color:#f3cfc6;margin:6px 0 0;max-width:320px}
#gate form.gate-box{display:flex;max-width:400px;margin:0 auto;padding:0;background:none;box-shadow:none;color:var(--cream)}
#gate .gate-names{color:var(--cream)}
/* Launch (Nov 8, 2026): RSVP opens soon + registry link coming soon */
.rsvp-soon{max-width:560px;margin:0 auto;text-align:center;font-size:19px;line-height:1.6;color:var(--cream)}
.rsvp-soon a{color:var(--cream)}
.zola-soon{font-size:12px;letter-spacing:.22em;color:var(--cream2);margin:18px 0 0}
