/* ================================================================
   LUXE — editorial redesign
   ================================================================ */

:root{
  --ivory:#faf6ec;
  --ivory-soft:#f3ebd8;
  --paper:#ffffff;
  --champagne:#e8dcc4;
  --gold:#b0925e;
  --gold-soft:#d4bd94;
  --charcoal:#181818;
  --ink:#2a2a2a;
  --ink-soft:#4c4c4c;
  --muted:#8a7f6d;
  --sage:#8a9a80;
  --line:#e2d7bf;
  --line-soft:#efe8d5;

  --display:'Playfair Display', 'Cormorant Garamond', Georgia, serif;
  --serif:'Cormorant Garamond', Georgia, serif;
  --script:'Parisienne', 'Cormorant Garamond', cursive;
  --sans:'Inter', -apple-system, BlinkMacSystemFont, sans-serif;

  --accent-soft:#eef0e9;
}

*{margin:0;padding:0;box-sizing:border-box;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
ul{list-style:none;}

html{scroll-behavior:smooth;}
html.locked,body.locked{overflow:hidden;}
body.luxe-body{
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* ================= Sidebar nav ================= */
.side-nav{
  position:fixed;top:0;left:0;bottom:0;width:230px;
  padding:2.8rem 2rem;
  background:var(--ivory);
  border-right:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:2.4rem;
  z-index:200;
}
.side-brand{
  display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;
  color:var(--charcoal);text-decoration:none;
}
.side-mono{
  font-family:var(--display);font-weight:400;
  font-size:1.7rem;letter-spacing:.02em;color:var(--charcoal);
}
.side-mono-img{
  display:block;
  height:64px;width:68px;
  background:linear-gradient(180deg,#c9a875 0%,#b0925e 60%,#97794c 100%);
  -webkit-mask:url(monogram.png) center/contain no-repeat;
          mask:url(monogram.png) center/contain no-repeat;
}
.side-date{
  font-family:var(--sans);font-size:.66rem;font-weight:400;
  letter-spacing:.28em;text-transform:uppercase;color:var(--muted);
}
.side-links{display:flex;flex-direction:column;gap:1.05rem;}
.side-links a{
  font-family:var(--sans);font-size:.78rem;font-weight:400;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-soft);
  transition:color .35s ease;
  position:relative;padding-left:0;
}
.side-links a::before{
  content:"";position:absolute;left:-2rem;top:50%;
  width:0;height:1px;background:var(--gold);
  transition:width .35s ease;transform:translateY(-50%);
}
.side-links a:hover,.side-links a.current{color:var(--gold);}
.side-links a:hover::before,.side-links a.current::before{width:1.4rem;}
.side-hash{
  margin-top:auto;
  font-family:var(--serif);font-style:italic;
  color:var(--muted);font-size:.95rem;
}
.nav-toggle{display:none;}

/* ================= Layout ================= */
.stage,.page{margin-left:230px;}
.container{max-width:960px;margin:0 auto;padding:0 3rem;}

.section-label{
  font-family:var(--sans);font-size:.68rem;font-weight:500;
  letter-spacing:.36em;text-transform:uppercase;
  color:var(--gold);
  text-align:center;margin-bottom:1.4rem;
}
.section-title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2.2rem,4vw,3rem);line-height:1.1;
  text-align:center;color:var(--charcoal);
  margin-bottom:1.2rem;letter-spacing:.005em;
}
.section-lede{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--ink-soft);font-size:1.15rem;line-height:1.55;
  max-width:44ch;margin:0 auto;text-align:center;
}

/* ================= Cinematic hero (stage 1) ================= */
.cinema{
  position:fixed;inset:0 0 0 230px;
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  z-index:150;
  transition:opacity 1s ease, transform 1.1s ease;
}
.cinema.leaving{opacity:0;transform:scale(1.04);pointer-events:none;}
.cinema-bg{position:absolute;inset:0;}
.cinema-bg img{
  width:100%;height:100%;object-fit:cover;object-position:center 40%;
  animation:kb 26s ease-in-out infinite alternate;will-change:transform;
}
@keyframes kb{
  from{transform:scale(1.03) translateY(0);}
  to  {transform:scale(1.11) translateY(-1.5%);}
}
.cinema-scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.20) 0%,rgba(0,0,0,.55) 65%,rgba(0,0,0,.8) 100%);
}
.cinema-inner{
  position:relative;z-index:2;color:#fff;text-align:center;
  padding:3rem 1.4rem;max-width:640px;
  animation:cinIn 1.6s ease .3s both;
}
@keyframes cinIn{
  from{opacity:0;transform:translateY(18px);}
  to  {opacity:1;transform:none;}
}
.cn-eyebrow{
  font-family:var(--sans);font-size:.72rem;font-weight:400;
  letter-spacing:.36em;text-transform:uppercase;
  color:rgba(255,255,255,.85);margin-bottom:.9rem;
}
.cn-lede{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.05rem,1.8vw,1.3rem);
  color:rgba(255,255,255,.9);margin-bottom:2rem;
}
.cn-kicker{
  font-family:var(--sans);font-size:.7rem;font-weight:400;
  letter-spacing:.42em;text-transform:uppercase;
  color:rgba(255,255,255,.75);margin-bottom:1.4rem;
}
.cn-monogram{
  width:auto;max-width:280px;
  height:auto;max-height:220px;
  margin:0 auto 2rem;
  filter:brightness(0) invert(1);
  opacity:.95;
}
.cn-names{
  font-family:var(--script);
  font-weight:400;
  font-size:clamp(3.8rem,10vw,6.6rem);
  line-height:1;letter-spacing:.005em;
  margin:0 0 2rem;color:#fff;
  display:flex;flex-direction:column;gap:0;align-items:center;
}
.cn-names .cn-line{display:block;line-height:1;}
.cn-names .cn-amp{
  display:block;line-height:1;
  font-family:var(--script);font-weight:400;
  font-size:.7em;opacity:.9;margin:.05em 0;
}
.cn-dates{
  font-family:var(--sans);font-size:clamp(.78rem,1.4vw,.92rem);font-weight:400;
  letter-spacing:.32em;text-transform:uppercase;
  color:rgba(255,255,255,.88);margin-bottom:2.6rem;
}
.cn-btn{
  display:inline-flex;align-items:center;gap:.85rem;
  padding:1.1rem 2.4rem;
  border:1px solid rgba(255,255,255,.55);
  color:#fff;font-family:var(--sans);
  font-size:.72rem;font-weight:400;
  letter-spacing:.32em;text-transform:uppercase;
  transition:background .4s ease, color .4s ease, letter-spacing .4s ease, border-color .4s ease;
}
.cn-btn:hover{
  background:#fff;color:var(--charcoal);
  letter-spacing:.36em;border-color:#fff;
}
.cn-btn-arrow{transition:transform .35s ease;}
.cn-btn:hover .cn-btn-arrow{transform:translateX(4px);}

/* ================= Main content ================= */
.stage-main{
  padding:5rem 0 0;
  animation:mainIn 1s ease .1s both;
}
@keyframes mainIn{
  from{opacity:0;transform:translateY(20px);}
  to  {opacity:1;transform:none;}
}

/* Sub-section spacing */
section.block{padding:5rem 0;}
section.block + section.block{border-top:1px solid var(--line-soft);}

/* ================= Opening (post-Open reveal) ================= */
.invite-opening{
  padding:5rem 0 2rem;text-align:center;
}
.pj-greeting,
.pj-blessing,
.invite-lede{
  font-size:clamp(1.05rem,1.6vw,1.2rem);
  line-height:1.7;
  max-width:48ch;margin:0 auto 1.6rem;
}
.pj-greeting{
  font-family:var(--serif);font-weight:300;
  color:var(--ink);letter-spacing:.02em;
}
.pj-blessing{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--muted);
  margin-bottom:2.4rem;
}
.invite-lede{
  font-family:var(--sans);font-weight:300;
  color:var(--ink);
  font-size:clamp(.92rem,1.35vw,1.05rem);
}
.scroll-arrow{
  color:var(--gold);font-size:1.4rem;margin:0;
  animation:bob 2.4s ease-in-out infinite;
}
@keyframes bob{
  0%,100%{transform:translateY(0);opacity:.6;}
  50%    {transform:translateY(6px);opacity:1;}
}

/* ================= Letter greeting ================= */
.guest-greeting{text-align:center;padding:4rem 1.4rem 3rem;}
.greeting--letter .gg-address{
  font-family:var(--serif);font-style:italic;
  color:var(--muted);
  font-size:1rem;letter-spacing:.02em;margin:0 0 .4rem;
}
.greeting-name{
  font-family:var(--script);
  font-size:clamp(2.6rem,6vw,4rem);
  color:var(--charcoal);margin:0 0 .55rem;line-height:1;font-weight:400;
}
.greeting-name.long-name{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:clamp(1.6rem,3.4vw,2.2rem);
  line-height:1.25;letter-spacing:.005em;
  max-width:22ch;margin-left:auto;margin-right:auto;
}
.gg-flourish{
  display:flex;align-items:center;justify-content:center;
  gap:.75rem;margin:.4rem auto 1.1rem;max-width:200px;
}
.gg-line{flex:1;height:1px;background:var(--line);}
.gg-mark{color:var(--gold);font-size:.9rem;line-height:1;opacity:.7;}
.greeting-body{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--muted);
  max-width:36ch;margin:0 auto;line-height:1.65;font-size:1.1rem;
}
.gg-sig{
  font-family:var(--script);color:var(--muted);
  font-size:1.55rem;line-height:1.2;margin:1.4rem 0 0;font-weight:400;
}
@media (max-width:520px){ .gg-sig{font-size:1.4rem;} }

/* ================= RSVP CTA ================= */
.rsvp-cta{padding:5rem 0 4rem;text-align:center;}
.rsvp-cta .section-lede{margin:0 auto 2.2rem;}
.cta-btn{
  position:relative;
  display:inline-flex;align-items:center;gap:.95rem;
  padding:1.3rem 3.2rem;
  background:linear-gradient(180deg, #c9a875 0%, #b0925e 60%, #97794c 100%);
  color:#fff;
  border-radius:999px;
  font-family:var(--sans);font-size:.78rem;font-weight:500;
  letter-spacing:.34em;text-transform:uppercase;
  text-decoration:none;
  box-shadow:
    0 14px 32px rgba(176,146,94,.35),
    0 3px 8px rgba(176,146,94,.22),
    inset 0 1px 0 rgba(255,255,255,.28),
    inset 0 -1px 0 rgba(0,0,0,.08);
  transition:transform .45s cubic-bezier(.2,.9,.3,1), box-shadow .45s ease, letter-spacing .35s ease, filter .35s ease;
}
.cta-btn::after{
  content:"";position:absolute;inset:-6px;
  border-radius:999px;
  border:1px solid rgba(176,146,94,.35);
  opacity:0;transform:scale(.96);
  transition:opacity .45s ease, transform .45s cubic-bezier(.2,.9,.3,1);
  pointer-events:none;
}
.cta-btn:hover{
  transform:translateY(-3px);
  letter-spacing:.38em;
  filter:brightness(1.05);
  box-shadow:
    0 22px 44px rgba(176,146,94,.45),
    0 6px 14px rgba(176,146,94,.28),
    inset 0 1px 0 rgba(255,255,255,.32),
    inset 0 -1px 0 rgba(0,0,0,.1);
}
.cta-btn:hover::after{opacity:1;transform:scale(1);}
.cta-btn:active{transform:translateY(-1px);}
.cta-btn-arrow{display:inline-block;transition:transform .3s ease;}
.cta-btn:hover .cta-btn-arrow{transform:translateX(6px);}

/* ================= A Personal Note ================= */
.personal-note{padding:4rem 0;}
.pn-card{
  background:var(--accent-soft);
  border-radius:20px;
  padding:3rem 2.4rem;
  text-align:center;
  max-width:720px;margin:2rem auto 0;
}
.pn-card p{
  font-family:var(--serif);font-weight:300;
  color:var(--ink);font-size:1.1rem;line-height:1.8;
  margin:0 0 1.1rem;
}
.pn-card p:last-child{margin-bottom:0;}
.pn-heart{font-size:1.4rem;margin:1.4rem 0 !important;}
.pn-sig{
  font-family:var(--serif);
  color:var(--ink);font-size:1.35rem;
  margin-top:.6rem !important;
}

/* Invitation summary */
.invitation-summary{padding:5rem 0;text-align:center;}
.summary-card{
  max-width:720px;margin:2rem auto 0;
  padding:3rem 2.6rem;
  background:var(--paper);
  border:1px solid var(--line);
  display:grid;grid-template-columns:1fr 1fr;gap:2.6rem;
  text-align:left;
}
.summary-block .sb-lbl{
  font-family:var(--sans);font-size:.66rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--muted);margin-bottom:1rem;
}
.summary-events{display:flex;flex-direction:column;gap:.65rem;}
.summary-events li{
  font-family:var(--display);font-weight:400;
  font-size:1.15rem;color:var(--ink);
  display:flex;align-items:center;gap:.75rem;
}
.summary-events li::before{
  content:"";width:5px;height:5px;background:var(--gold);border-radius:50%;flex:none;
}
.summary-guests{
  font-family:var(--display);font-weight:400;font-style:italic;
  font-size:1.35rem;color:var(--ink);
}

/* Countdown */
.countdown-section{
  padding:5rem 0;text-align:center;
  border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
}
.countdown{
  display:flex;justify-content:center;gap:3rem;
  margin-top:2rem;
}
.cd-unit{display:flex;flex-direction:column;align-items:center;gap:.5rem;}
.cd-num{
  font-family:var(--display);font-weight:300;
  font-size:clamp(2.6rem,5vw,3.8rem);line-height:1;color:var(--charcoal);
}
.cd-lbl{
  font-family:var(--sans);font-size:.65rem;font-weight:500;
  letter-spacing:.32em;text-transform:uppercase;color:var(--muted);
}

/* Wedding Celebrations — event cards */
.celebrations{padding:6rem 0;}
.events-grid{
  display:grid;gap:2rem;max-width:760px;margin:2.4rem auto 0;
}
.event-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:18px;
  padding:2.6rem 2.8rem;
  display:flex;flex-direction:column;gap:.55rem;
  transition:transform .45s ease, box-shadow .45s ease;
}
.event-card:hover{
  transform:translateY(-3px);
  box-shadow:0 26px 50px rgba(24,24,24,.06);
}
.ec-emoji{
  font-size:1.55rem;line-height:1;
  margin-bottom:.5rem;
}
.ec-name{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.75rem,2.8vw,2.05rem);line-height:1.15;
  color:var(--charcoal);letter-spacing:.005em;
  margin-bottom:.3rem;
}
.ec-day{
  font-family:var(--sans);font-size:.7rem;font-weight:500;
  letter-spacing:.3em;text-transform:uppercase;color:var(--muted);
  margin-top:.15rem;
}
.ec-date{
  font-family:var(--serif);font-weight:400;font-style:italic;
  font-size:1.15rem;color:var(--muted);
  margin-bottom:.35rem;
}
.ec-meta{
  display:flex;flex-direction:column;gap:.4rem;
  margin-top:.6rem;
}
.ec-line{
  font-family:var(--sans);font-weight:300;
  font-size:1rem;color:var(--ink);
  display:flex;align-items:baseline;gap:.15rem;
}
.ec-blurb{
  font-family:var(--sans);font-weight:300;
  font-size:1rem;line-height:1.65;color:var(--ink);
  margin-top:.9rem;
}
.ec-blurb + .ec-blurb{margin-top:.3rem;}
.ec-links{
  display:flex;flex-wrap:wrap;gap:1.6rem;
  margin-top:1.4rem;
}
.ec-link{
  font-family:var(--sans);font-size:.72rem;font-weight:500;
  letter-spacing:.26em;text-transform:uppercase;
  color:var(--sage);
  padding-bottom:.2rem;
  border-bottom:1px solid var(--sage);
  transition:color .3s ease, border-color .3s ease, letter-spacing .3s ease;
}
.ec-link:hover{color:var(--charcoal);border-color:var(--charcoal);letter-spacing:.3em;}
.ec-link span{margin-left:.25rem;display:inline-block;transition:transform .3s ease;}
.ec-link:hover span{transform:translateX(3px);}

/* Blessing band (bottom of landing) */
.blessing-band{
  padding:5rem 2rem;text-align:center;
  background:var(--ivory-soft);
}
.blessing-pj{
  font-family:var(--serif);font-weight:300;
  font-size:1.1rem;color:var(--ink-soft);line-height:1.7;
}

/* Footer */
.luxe-footer{padding:5rem 2rem 4rem;text-align:center;background:var(--ivory);}
.ft-tag{
  font-family:var(--serif);font-style:italic;
  color:var(--muted);font-size:1rem;margin-bottom:.5rem;
}
.ft-names{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2rem,3.5vw,2.6rem);color:var(--charcoal);
  margin-bottom:.7rem;letter-spacing:.005em;
}
.ft-monogram{
  display:block;margin:.4rem auto 1rem;
  height:96px;width:102px;
  background:linear-gradient(180deg,#c9a875 0%,#b0925e 60%,#97794c 100%);
  -webkit-mask:url(monogram.png) center/contain no-repeat;
          mask:url(monogram.png) center/contain no-repeat;
}
@media (max-width:640px){ .ft-monogram{height:72px;width:76px;} }
.ft-sub{
  font-family:var(--serif);font-style:italic;
  color:var(--muted);font-size:.95rem;margin-bottom:1.6rem;
}
.ft-hash{
  font-family:var(--sans);font-size:.7rem;font-weight:500;
  letter-spacing:.36em;text-transform:uppercase;color:var(--gold);
}

/* ================= Sub-pages (wardrobe/story/gallery/faq/rsvp) ================= */
.page-hero{
  padding:6rem 3rem 3rem;text-align:center;
}
.page-eyebrow{
  font-family:var(--sans);font-size:.7rem;font-weight:500;
  letter-spacing:.36em;text-transform:uppercase;
  color:var(--gold);margin-bottom:1rem;
}
.page-title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2.8rem,5vw,4rem);line-height:1.05;
  color:var(--charcoal);margin-bottom:1.1rem;
}
.page-lede{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--ink-soft);font-size:1.2rem;line-height:1.55;
  max-width:48ch;margin:0 auto;
}
.page-body{padding:0 3rem 6rem;}

/* Wardrobe planner — editorial layout */
.wardrobe-block{
  max-width:780px;margin:0 auto;
  padding:0;
  display:flex;flex-direction:column;
}
.wb-ornament{
  display:flex;align-items:center;justify-content:center;
  gap:1.2rem;
  margin:4.5rem auto 4rem;max-width:220px;
}
.wb-ornament span:not(.wb-ornament-mark){
  flex:1;height:1px;background:var(--line);
}
.wb-ornament-mark{
  color:var(--gold);font-size:.95rem;line-height:1;opacity:.7;
}
.wb-figure{
  margin:0 0 2.4rem;
  padding:0;
}
.wb-hero{
  display:block;
  width:100%;height:auto;max-width:720px;
  margin:0 auto;
  border-radius:14px;
  background:var(--ivory-soft);
  box-shadow:0 20px 44px rgba(24,24,24,.08);
  transition:transform .6s ease, box-shadow .5s ease;
}
.wb-hero:hover{
  transform:translateY(-3px);
  box-shadow:0 26px 54px rgba(24,24,24,.11);
}
.wb-hero--missing{
  aspect-ratio:4/5;object-fit:contain;
  border:1px dashed var(--line);opacity:.45;padding:2rem;
  box-shadow:none;
}
.wb-content{
  max-width:600px;margin:0 auto;padding:0 .6rem;
  text-align:left;
}
.wb-title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2rem,3.6vw,2.7rem);line-height:1.15;
  color:var(--charcoal);letter-spacing:.005em;
  text-align:center;
  margin:1.2rem 0 .85rem;
}
.wb-tagline{
  font-family:var(--serif);font-style:italic;font-weight:400;
  color:var(--gold);font-size:clamp(1.1rem,1.7vw,1.28rem);
  line-height:1.5;text-align:center;
  margin:0 auto 1.6rem;max-width:44ch;letter-spacing:.005em;
}
.wb-body{
  font-family:var(--serif);font-weight:300;
  color:var(--ink);font-size:clamp(1.02rem,1.35vw,1.14rem);line-height:1.8;
  margin:0 auto;
}
.wb-body p{margin:0 0 1.1rem;}
.wb-body p:last-child{margin-bottom:0;}
/* Image caption under the hero */
.wb-caption{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--muted);font-size:.95rem;line-height:1.4;
  text-align:center;margin-top:.9rem;
}

/* Details list — Date / Time / Venue */
.wb-details{
  margin:2rem auto 0;
  padding:1.4rem 1.6rem;
  border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:.55rem;
}
.wb-detail-row{
  display:flex;align-items:baseline;gap:1.4rem;
  font-family:var(--serif);color:var(--ink);font-size:1.02rem;
}
.wb-detail-lbl{
  flex:0 0 68px;
  font-family:var(--sans);font-size:.65rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;color:var(--muted);
}
.wb-detail-val{flex:1;font-weight:400;}

/* Theme + Dress Code shared shell */
.wb-section{
  margin-top:2rem;padding:1.4rem 1.6rem;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:14px;
}
.wb-section-title{
  font-family:var(--sans);font-size:.72rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);margin:0 0 .7rem;
}
.wb-section-body{
  font-family:var(--serif);font-weight:300;
  color:var(--ink);font-size:1.02rem;line-height:1.7;margin:0;
}

/* Dress code section — palette swatches beneath the body */
.wb-section--dress .wb-palette{
  display:flex;justify-content:flex-start;gap:.7rem;
  margin:1.1rem 0 0;
}
.wb-swatch{
  width:34px;height:34px;border-radius:50%;
  border:1px solid rgba(0,0,0,.06);
  box-shadow:0 2px 6px rgba(24,24,24,.06);
}

.wb-protocol{
  margin-top:2rem;padding:1.6rem 1.8rem;
  background:var(--accent-soft);
  border-radius:14px;
  font-family:var(--serif);color:var(--ink);
  line-height:1.65;font-size:1rem;
}
.wb-protocol-title{
  font-family:var(--sans);font-size:.72rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--sage);margin:0 0 .8rem;
}
.wb-protocol p{margin:0 0 .55rem;}
.wb-protocol p:last-child{margin-bottom:0;}
.wb-protocol-label{
  font-family:var(--sans);font-weight:500;font-style:normal;
  color:var(--charcoal);letter-spacing:.005em;margin-right:.35em;
}
.wb-note{display:none;}
.wb-eyebrow{display:none;}
@media (max-width:640px){
  .wb-figure{margin-bottom:1.6rem;}
  .wb-ornament{margin:3rem auto;}
  .wb-content{padding:0;}
  .wb-protocol{padding:1.3rem 1.4rem;}
}
.wb-palette{
  display:none;
}
.wb-swatch{
  width:44px;height:44px;border-radius:50%;
  border:1px solid var(--line);
}

/* Our Story — Society Papers letter */
.story-letter{
  max-width:640px;margin:2rem auto 4rem;
  padding:3rem 2.4rem 3.6rem;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:18px;
  box-shadow:0 24px 50px rgba(24,24,24,.05);
  text-align:left;
  font-family:var(--serif);color:var(--ink);
  font-size:clamp(1.02rem,1.35vw,1.14rem);line-height:1.85;
}
.story-masthead{
  font-family:var(--sans);font-size:.7rem;font-weight:500;
  letter-spacing:.36em;text-transform:uppercase;
  color:var(--muted);text-align:center;margin:0 0 .8rem;
}
.story-rule{
  height:1px;background:var(--line);margin:0 auto 1.8rem;max-width:180px;
}
.story-kicker{
  font-family:var(--sans);font-size:.7rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);text-align:center;margin:0 0 .6rem;
}
.story-headline{
  font-family:var(--display);font-weight:400;
  font-size:clamp(1.8rem,3.3vw,2.4rem);line-height:1.2;
  color:var(--charcoal);text-align:center;
  margin:0 0 2rem;letter-spacing:.005em;
}
.story-salutation{
  font-family:var(--serif);font-style:italic;
  color:var(--ink);font-size:1.1rem;
  margin:0 0 1.4rem;
}
.story-letter p{margin:0 0 1.2rem;}
.story-signoff{
  font-family:var(--serif);font-style:italic;
  color:var(--muted);text-align:right;
  margin:2rem 0 1.4rem !important;
}
.story-flourish{
  color:var(--gold);font-size:1.4rem;line-height:1;text-align:center;opacity:.7;
  margin-top:.8rem;
}
@media (max-width:640px){
  .story-letter{padding:2rem 1.5rem 2.4rem;border-radius:14px;}
}

/* ============================================
   Parchment scroll wrapper for Our Story
   ============================================ */
.scroll{
  max-width:820px;
  margin:2.5rem auto 4rem;
  padding:44px 0;
  position:relative;
  filter:drop-shadow(0 22px 42px rgba(80,55,15,.20));
}
/* Gold cylindrical caps (top + bottom) */
.scroll::before,
.scroll::after{
  content:"";
  position:absolute;
  left:-32px;right:-32px;
  height:56px;
  background:
    /* left ornate rosette */
    radial-gradient(circle at 24px 50%, #f0d78e 0 6px, #b98428 6px 13px, #6a4a0b 13px 16px, transparent 17px),
    /* right ornate rosette */
    radial-gradient(circle at calc(100% - 24px) 50%, #f0d78e 0 6px, #b98428 6px 13px, #6a4a0b 13px 16px, transparent 17px),
    /* cylinder highlight band */
    linear-gradient(180deg,
      #fbecb8 0%,
      #eecf7a 18%,
      #d1a441 40%,
      #a67917 65%,
      #7a5610 88%,
      #614308 100%);
  border-radius:28px/50%;
  box-shadow:
    inset 0 3px 10px rgba(255,240,200,.65),
    inset 0 -4px 12px rgba(65,45,8,.55),
    0 4px 12px rgba(50,35,10,.28);
  z-index:2;
}
.scroll::before{top:0;}
.scroll::after{bottom:0;}

/* Parchment paper body */
.scroll-paper{
  position:relative;
  background:
    /* subtle aged stains */
    radial-gradient(ellipse 68% 38% at 18% 14%, rgba(150,105,45,.13), transparent 55%),
    radial-gradient(ellipse 58% 40% at 86% 86%, rgba(150,105,45,.12), transparent 55%),
    radial-gradient(ellipse 38% 24% at 55% 48%, rgba(140,95,35,.06), transparent 60%),
    radial-gradient(ellipse 20% 12% at 78% 30%, rgba(180,130,60,.09), transparent 60%),
    radial-gradient(ellipse 22% 14% at 22% 68%, rgba(180,130,60,.09), transparent 60%),
    /* base parchment gradient */
    linear-gradient(180deg, #f9edcc 0%, #f4e2b3 40%, #f1deaa 62%, #f5e6bd 100%);
  padding:4rem 3.5rem;
  box-shadow:
    inset 0 0 80px rgba(120,80,25,.20),
    inset 14px 0 28px rgba(140,95,30,.17),
    inset -14px 0 28px rgba(140,95,30,.17);
  border-top:1px solid rgba(130,95,35,.22);
  border-bottom:1px solid rgba(130,95,35,.22);
}

/* Story letter, when inside scroll: strip its own paper styling,
   inherit the parchment behind */
.scroll .story-letter{
  padding:0;background:transparent;border:none;box-shadow:none;
  max-width:none;margin:0;color:#3d2a10;
}
.scroll .story-masthead{color:#8a6118;}
.scroll .story-kicker{color:#9a6d1a;}
.scroll .story-rule{background:rgba(130,90,30,.35);}
.scroll .story-headline{color:#2a1c08;}
.scroll .story-letter p{color:#3d2a10;}
.scroll .story-salutation{color:#3d2a10;}
.scroll .story-signoff{color:#7a5312;}
.scroll .story-flourish{color:#a67917;opacity:.9;}

@media (max-width:720px){
  .scroll{margin:1.5rem 6px 2.5rem;padding:34px 0;}
  .scroll::before,
  .scroll::after{
    left:-14px;right:-14px;height:38px;
  }
  .scroll-paper{padding:2.5rem 1.4rem;}
}

/* Story timeline (legacy — kept in case referenced) */
.timeline{
  max-width:760px;margin:4rem auto 0;
  position:relative;
}
.timeline::before{
  content:"";position:absolute;left:1rem;top:.5rem;bottom:.5rem;
  width:1px;background:var(--gold-soft);
}
.tl-item{
  position:relative;padding-left:3.4rem;
  padding-bottom:3.5rem;
}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{
  content:"";position:absolute;left:.6rem;top:.35rem;
  width:11px;height:11px;background:var(--gold);border-radius:50%;
  border:3px solid var(--ivory);
}
.tl-num{
  font-family:var(--sans);font-size:.68rem;font-weight:500;
  letter-spacing:.32em;text-transform:uppercase;
  color:var(--gold);margin-bottom:.4rem;
}
.tl-title{
  font-family:var(--display);font-weight:400;
  font-size:1.65rem;color:var(--charcoal);
  margin-bottom:.75rem;letter-spacing:.005em;
}
.tl-body{
  font-family:var(--serif);font-size:1.1rem;
  color:var(--ink-soft);line-height:1.7;
}
.tl-body p + p{margin-top:.7rem;}

/* Gallery */
.gallery-grid{
  max-width:1000px;margin:4rem auto 0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;
}
.gallery-grid img{
  width:100%;aspect-ratio:1/1;object-fit:cover;
  transition:transform .5s ease;cursor:zoom-in;
}
.gallery-grid img:hover{transform:scale(1.03);}

/* FAQ */
.faq-list{max-width:720px;margin:3rem auto 0;}
.faq-item{border-top:1px solid var(--line);}
.faq-item:last-child{border-bottom:1px solid var(--line);}
.faq-q{
  width:100%;padding:1.5rem 0;
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  font-family:var(--display);font-weight:400;font-size:1.15rem;
  color:var(--charcoal);text-align:left;
}
.faq-toggle{
  color:var(--gold);font-size:1.4rem;line-height:1;
  transition:transform .35s ease;
}
.faq-item.open .faq-toggle{transform:rotate(45deg);}
.faq-a{
  max-height:0;overflow:hidden;
  transition:max-height .5s ease, padding .3s ease;
  font-family:var(--serif);color:var(--ink-soft);font-size:1.05rem;line-height:1.65;
}
.faq-item.open .faq-a{max-height:400px;padding:0 0 1.5rem;}

/* ================= RSVP ================= */
.rsvp-hero{padding:5rem 1.5rem 2rem;text-align:center;}
.rsvp-reserve{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--muted);font-size:1.1rem;margin:0 0 1.6rem;
}
.rsvp-hello{
  font-family:var(--script);color:var(--charcoal);font-weight:400;
  font-size:clamp(2.4rem,5vw,3.6rem);line-height:1.1;margin:0 0 1.4rem;
}
.rsvp-hello.long-name{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:clamp(1.6rem,3.2vw,2.1rem);
  max-width:22ch;margin-left:auto;margin-right:auto;line-height:1.25;
}
.rsvp-note{
  font-family:var(--serif);font-style:italic;font-weight:300;
  color:var(--muted);font-size:1.05rem;line-height:1.65;
  max-width:52ch;margin:0 auto;
}
.rsvp-body{padding:1rem 1.5rem 6rem;}
.rsvp-shell{max-width:640px;margin:2rem auto 0;}

/* Card container */
.rsvp-card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:22px;
  padding:2.8rem 3rem;
  box-shadow:0 24px 50px rgba(24,24,24,.05);
  display:flex;flex-direction:column;gap:2rem;
}

/* Basic labelled input */
.rf-group{display:flex;flex-direction:column;gap:.6rem;}
.rf-lbl{
  font-family:var(--serif);font-style:italic;font-weight:400;
  color:var(--ink-soft);font-size:1.05rem;letter-spacing:.005em;
}
.rf-input,.rf-textarea,.rf-select{
  width:100%;padding:1rem 1.15rem;
  background:var(--paper);color:var(--charcoal);
  border:1px solid var(--line);border-radius:12px;
  font-family:var(--serif);font-size:1.1rem;font-weight:400;
  transition:border-color .3s ease, box-shadow .3s ease, background .3s ease;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
}
.rf-input::placeholder,.rf-textarea::placeholder{
  color:var(--muted);opacity:.7;font-style:italic;
}
.rf-input:focus,.rf-textarea:focus,.rf-select:focus{
  outline:none;border-color:var(--gold);
  box-shadow:0 0 0 4px rgba(176,146,94,.12);
  background:var(--paper);
}
.rf-input[readonly]{background:var(--ivory-soft);color:var(--muted);cursor:default;}
.rf-textarea{min-height:110px;resize:vertical;line-height:1.55;}

/* Green invitation note */
.rf-info{
  font-family:var(--sans);font-weight:400;
  font-size:.94rem;line-height:1.55;color:var(--sage);
  background:var(--accent-soft);
  padding:1rem 1.2rem;border-radius:12px;
  text-align:left;margin:0;
}
.rf-helper{
  font-family:var(--sans);font-size:.88rem;font-weight:300;
  color:var(--muted);margin:.15rem 0 0;line-height:1.5;
}

/* Fieldset block — visual grouping */
.rf-block{
  border:1px solid var(--line);
  border-radius:16px;
  padding:1.8rem 1.8rem 1.6rem;
  margin:0;
  display:flex;flex-direction:column;gap:1rem;
  background:var(--paper);
}
.rf-block[hidden]{display:none;}
.rf-block--sacred{
  background:linear-gradient(180deg, rgba(138,154,128,.08) 0%, rgba(176,146,94,.05) 100%);
  border-color:rgba(138,154,128,.35);
}
.rf-block-title{
  font-family:var(--display);font-weight:400;
  font-size:1.35rem;color:var(--charcoal);
  padding:0;margin:0;letter-spacing:.005em;line-height:1.2;
}
.rf-block-hint{
  font-family:var(--serif);font-style:normal;font-weight:400;
  color:var(--charcoal);font-size:1rem;line-height:1.55;margin:0;
}

/* Elegant event meta: label / value grid */
.rf-meta{
  list-style:none;margin:.35rem 0 .1rem;padding:.85rem 1rem;
  display:flex;flex-direction:column;gap:.35rem;
  background:rgba(176,146,94,.05);
  border-left:2px solid var(--gold);
  border-radius:0 6px 6px 0;
}
.rf-meta-line{
  display:grid;grid-template-columns:70px 1fr;gap:.85rem;align-items:baseline;
}
.rf-meta-lbl{
  font-family:var(--sans);font-size:.65rem;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold-2, #9a7d4a);
  padding-top:.15rem;
}
.rf-meta-val{
  font-family:var(--serif);font-size:1.05rem;font-weight:400;
  color:var(--charcoal);line-height:1.4;
}
@media (max-width: 520px){
  .rf-meta-line{grid-template-columns:1fr;gap:.15rem;}
  .rf-meta-lbl{padding-top:.3rem;}
}

/* Plain checkbox list (Sangeet & Reception) */
.rf-check-list{display:flex;flex-direction:column;gap:.15rem;margin:.4rem 0 .2rem;}
.rf-check-plain{
  display:flex;align-items:center;gap:.9rem;
  padding:.7rem 0;cursor:pointer;
  font-family:var(--serif);color:var(--charcoal);font-size:1.1rem;font-weight:400;
  transition:color .25s ease;
}
.rf-check-plain:hover{color:var(--gold);}
.rf-check-plain input[type="checkbox"]{
  accent-color:var(--gold);
  width:20px;height:20px;flex:none;margin:0;cursor:pointer;
}
.rf-check-plain .rc-name{flex:1;}
.rf-check-plain .rc-date{
  font-family:var(--sans);font-size:.78rem;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;color:var(--muted);
}

/* Party dropdown — inline label + select */
.rf-inline-row{
  display:flex;align-items:center;justify-content:space-between;gap:1.2rem;
  padding:1.2rem 0 0;margin-top:.6rem;
  border-top:1px solid var(--line-soft);
}
.rf-inline-lbl{
  font-family:var(--serif);font-style:italic;font-weight:400;
  color:var(--ink-soft);font-size:1.05rem;line-height:1.3;flex:1;
}
.rf-select-wrap{position:relative;flex:none;min-width:96px;}
.rf-select{
  padding:.7rem 2.4rem .7rem 1.1rem;
  font-family:var(--serif);font-size:1.1rem;color:var(--charcoal);
  border:1px solid var(--line);border-radius:10px;
  background:var(--paper);cursor:pointer;
  transition:border-color .3s ease, box-shadow .3s ease;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  width:100%;
}
.rf-select:focus{
  outline:none;border-color:var(--gold);
  box-shadow:0 0 0 4px rgba(176,146,94,.12);
}
.rf-select-chevron{
  position:absolute;right:1rem;top:50%;transform:translateY(-50%);
  color:var(--gold);font-size:.9rem;pointer-events:none;
}

/* Party stepper — minus/plus circular buttons (retained for future use) */
.rf-stepper{
  padding:1.4rem 0 .4rem;margin-top:.6rem;
  border-top:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:.5rem;
}
.rf-stepper-title{
  font-family:var(--sans);font-size:.78rem;font-weight:500;
  letter-spacing:.24em;text-transform:uppercase;color:var(--charcoal);
  margin:0;
}
.rf-stepper-hint{
  font-family:var(--sans);font-size:.98rem;font-weight:300;
  color:var(--ink-soft);line-height:1.5;margin:0 0 .6rem;
}
.rf-stepper-controls{
  display:flex;align-items:center;gap:1.4rem;
  margin:.3rem 0 .2rem;
}
.rf-step-btn{
  width:52px;height:52px;flex:none;
  border:1.5px solid var(--line);
  background:var(--paper);
  color:var(--charcoal);
  border-radius:50%;
  font-family:var(--sans);font-size:1.35rem;font-weight:400;line-height:1;
  cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  transition:border-color .3s ease, background .3s ease, color .3s ease, transform .2s ease, box-shadow .3s ease;
}
.rf-step-btn:hover:not(:disabled){
  border-color:var(--gold);color:var(--gold);
  box-shadow:0 6px 16px rgba(176,146,94,.18);
}
.rf-step-btn:active:not(:disabled){transform:scale(.94);}
.rf-step-btn:disabled{opacity:.35;cursor:default;}
.rf-step-btn:focus-visible{
  outline:none;
  box-shadow:0 0 0 4px rgba(176,146,94,.25);
  border-color:var(--gold);
}
.rf-step-value{
  font-family:var(--display);font-weight:400;
  font-size:2rem;color:var(--charcoal);
  min-width:1.4ch;text-align:center;line-height:1;
}
.rf-step-lbl{
  font-family:var(--sans);font-weight:300;
  color:var(--ink-soft);font-size:1.05rem;letter-spacing:.005em;
}
.rf-step-warning{
  font-family:var(--sans);font-size:.92rem;font-weight:400;
  color:#a4432b;margin:.4rem 0 0;line-height:1.5;
}

/* Anand Karaj radio cards — 2-column yes/no */
.rf-radio-pair{
  display:grid;grid-template-columns:1fr 1fr;gap:.75rem;
  margin-top:.4rem;
}
.rf-radio-card{
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.5rem;padding:1.3rem 1rem;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:14px;
  cursor:pointer;text-align:center;
  font-family:var(--serif);font-size:1rem;color:var(--ink-soft);
  transition:border-color .3s ease, background .3s ease, transform .25s ease, box-shadow .3s ease;
}
.rf-radio-card:hover{
  border-color:var(--gold-soft);transform:translateY(-1px);
}
.rf-radio-card input{
  position:absolute;opacity:0;inset:0;cursor:pointer;
}
.rf-radio-icon{
  font-family:var(--sans);font-size:1.2rem;line-height:1;
  color:var(--muted);
  transition:color .3s ease, transform .3s ease;
}
.rf-radio-card:has(input:checked){
  background:var(--ivory-soft);
  border-color:var(--gold);
  box-shadow:0 6px 18px rgba(176,146,94,.15);
  color:var(--charcoal);
}
.rf-radio-card:has(input:checked) .rf-radio-icon{
  color:var(--gold);transform:scale(1.1);
}

/* Meal preference — segmented pill */
.rf-segmented{
  display:grid;grid-template-columns:1fr 1fr;gap:0;
  background:var(--ivory-soft);
  border-radius:999px;padding:5px;
  margin-top:.4rem;
}
.rf-seg{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  padding:.85rem 1rem;
  cursor:pointer;border-radius:999px;
  font-family:var(--serif);font-size:1.02rem;color:var(--ink-soft);
  transition:color .3s ease, background .3s ease, box-shadow .3s ease;
  text-align:center;
}
.rf-seg input{position:absolute;opacity:0;inset:0;cursor:pointer;}
.rf-seg:has(input:checked){
  background:var(--paper);color:var(--charcoal);
  box-shadow:0 3px 8px rgba(24,24,24,.08), 0 1px 2px rgba(24,24,24,.06);
  font-weight:500;
}

/* Submit — uses .cta-btn gold gradient by default; keep .rf-submit for legacy fallback */
.rf-submit{
  margin-top:.6rem;
  align-self:center;
}
.rf-submit.cta-btn{border:0;}
.rf-error{
  color:#b3261e;font-size:.92rem;font-family:var(--sans);
  text-align:center;margin-top:.4rem;
}

/* Thank-you screen */
.thanks{text-align:center;padding:3rem 1rem;}
.thanks h2{font-family:var(--display);font-weight:400;font-size:2rem;color:var(--charcoal);margin-bottom:1rem;}
.thanks p{font-family:var(--serif);font-style:italic;color:var(--ink-soft);font-size:1.1rem;max-width:44ch;margin:0 auto;}

/* Mobile tweaks */
@media (max-width:640px){
  .rsvp-card{padding:1.8rem 1.4rem;border-radius:18px;gap:1.6rem;}
  .rf-block{padding:1.4rem 1.3rem;border-radius:14px;}
  .rf-radio-pair{grid-template-columns:1fr;}
  .rf-inline-row{flex-direction:column;align-items:flex-start;gap:.7rem;}
  .rf-select-wrap{width:100%;}
  .rf-select{width:100%;}
}

/* Lightbox */
.lb{position:fixed;inset:0;background:rgba(24,24,24,.94);display:none;align-items:center;justify-content:center;z-index:500;padding:2rem;cursor:zoom-out;}
.lb.open{display:flex;}
.lb img{max-width:100%;max-height:100%;object-fit:contain;}

/* ================= Mobile ================= */
@media (max-width:900px){
  .side-nav{
    width:100%;height:auto;bottom:auto;
    flex-direction:row;align-items:center;justify-content:space-between;
    padding:1.1rem 1.5rem;gap:1rem;
    border-right:0;border-bottom:1px solid var(--line-soft);
  }
  .side-brand{flex-direction:row;align-items:center;gap:.75rem;}
  .side-mono-img{height:38px;width:40px;}
  .side-date{display:none;}
  .side-links{
    display:none;
    position:fixed;top:64px;left:0;right:0;
    background:var(--ivory);padding:1.6rem 2rem;
    border-bottom:1px solid var(--line-soft);
    gap:.7rem;
  }
  .side-links.open{display:flex;}
  .side-hash{display:none;}
  .nav-toggle{
    display:flex;align-items:center;justify-content:center;
    width:36px;height:36px;
    font-family:var(--sans);font-size:.7rem;letter-spacing:.24em;
    text-transform:uppercase;color:var(--charcoal);
    border:1px solid var(--line);background:transparent;
  }
  .stage,.page{margin-left:0;}
  .cinema{inset:0;}
  .cinema-inner{padding:2rem 1.2rem;}
  .container,.page-hero,.page-body{padding-left:1.4rem;padding-right:1.4rem;}
  .stage-main{padding-top:3rem;}
  section.block{padding:3.5rem 0;}
  .invitation-summary,.countdown-section,.celebrations{padding:3.5rem 0;}
  .summary-card{grid-template-columns:1fr;padding:2rem 1.6rem;gap:1.8rem;}
  .countdown{gap:1.4rem;}
  .event-card{padding:2rem 1.6rem;}
  .ec-actions{flex-direction:column;}
  .gallery-grid{grid-template-columns:repeat(2,1fr);gap:.8rem;}
  .wardrobe-block{padding:0 1.4rem;margin-top:3rem;padding-top:3rem;}
  .rsvp-shell{padding:0 1.4rem;}
}
@media (max-width:520px){
  .cn-names{font-size:clamp(3rem,14vw,4.6rem);}
  .cn-btn{padding:.95rem 1.8rem;font-size:.68rem;letter-spacing:.24em;}
}
