:root{
  --paper: #FAF8F3;
  --paper-deep: #F2EFE7;
  --ink: #253440;
  --ink-soft: #46545C;
  --ink-faint: #5C6B72;
  --powder: #AFC9D6;
  --powder-deep: #5C8399;
  --line: #DDE3DD;
  --gold: #B7A06C;
  --max: 1180px;
}

/* --ink-soft and --ink-faint were lightened past comfortable reading
   contrast in the original palette (~5.6:1 and ~2.7:1 against --paper).
   Darkened above to ~7.4:1 and ~5.2:1 respectively — same hue, easier
   to read at body-copy sizes. Body copy weight bumped 300->400 below
   for the same reason (300 reads as too thin/faint at 15-16px). */

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Jost', sans-serif;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,.serif{
  font-family:'Cormorant Garamond', serif;
  font-weight:500;
  margin:0;
  color:var(--ink);
}
p{ line-height:1.7; color:var(--ink-soft); font-weight:400; }
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
.wrap{ max-width:var(--max); margin:0 auto; padding:0 32px; }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important; }
}

/* ---------- NAV ---------- */
nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:22px 40px;
  background:linear-gradient(to bottom, rgba(8,11,13,0.78) 0%, rgba(8,11,13,0.4) 60%, rgba(8,11,13,0) 100%);
  transition: background 0.4s ease, padding 0.4s ease, box-shadow 0.4s ease;
}
nav.solid, nav.scrolled{
  background:rgba(250,248,243,0.94);
  backdrop-filter: blur(6px);
  padding:14px 40px;
  box-shadow:0 1px 0 var(--line);
}
.nav-mark{
  display:flex; align-items:baseline; gap:14px;
  font-family:'Cormorant Garamond', serif;
  font-style:italic;
  font-size:25px;
  color:var(--paper);
  text-shadow:0 1px 8px rgba(0,0,0,0.55);
  transition:color 0.4s ease, text-shadow 0.4s ease;
  letter-spacing:0.5px;
}
nav.solid .nav-mark, nav.scrolled .nav-mark{ color:var(--ink); text-shadow:none; }
.nav-date{
  font-family:'Jost', sans-serif;
  font-style:normal;
  font-size:11px;
  letter-spacing:1.8px;
  opacity:0.72;
}
@media (max-width:480px){ .nav-date{ display:none; } }
.nav-links{ display:flex; align-items:center; gap:30px; list-style:none; margin:0; padding:0; }
.nav-links a{
  font-size:16.5px; color:var(--paper); opacity:0.95;
  text-shadow:0 1px 8px rgba(0,0,0,0.55);
  padding-bottom:4px; border-bottom:1px solid transparent;
  transition:color 0.4s ease, border-color 0.25s ease, text-shadow 0.4s ease, background 0.3s ease;
}
nav.solid .nav-links a, nav.scrolled .nav-links a{ color:var(--ink-soft); text-shadow:none; }
.nav-links a:hover, .nav-links a.current{ border-color:currentColor; }
nav.solid .nav-links a.current, nav.scrolled .nav-links a.current{ color:var(--ink); }
.nav-toggle{ display:none; background:none; border:none; cursor:pointer; padding:8px; }
.nav-toggle span{ display:block; width:25px; height:2px; background:var(--paper); margin:6px 0; box-shadow:0 1px 4px rgba(0,0,0,0.5); transition:background 0.4s ease; }
nav.solid .nav-toggle span, nav.scrolled .nav-toggle span{ background:var(--ink); box-shadow:none; }

/* RSVP nav call-to-action — the link most guests come for, made to stand
   apart through color + weight rather than a boxed button, to stay in
   keeping with the site's plain-text nav */
.nav-links a.nav-rsvp{
  color:var(--powder);
  font-weight:500; letter-spacing:0.9px;
  border-bottom:1px solid var(--powder);
}
nav.solid .nav-links a.nav-rsvp, nav.scrolled .nav-links a.nav-rsvp,
nav.solid .nav-links a.nav-rsvp.current, nav.scrolled .nav-links a.nav-rsvp.current{
  color:var(--powder-deep); border-bottom-color:var(--powder-deep);
}

@media (max-width: 880px){
  .nav-links{
    position:fixed; top:0; right:0; height:100vh; width:min(78vw,320px);
    background:var(--paper); flex-direction:column; justify-content:center;
    align-items:flex-start; gap:26px; padding:0 44px;
    transform:translateX(100%); transition:transform 0.4s ease;
    box-shadow:-8px 0 24px rgba(0,0,0,0.06);
  }
  .nav-links.open{ transform:translateX(0); }
  .nav-links a{ color:var(--ink) !important; font-size:22px; font-family:'Cormorant Garamond',serif; }
  .nav-links a.nav-rsvp{
    color:var(--powder-deep) !important; border-bottom:1px solid var(--powder-deep);
  }
  .nav-toggle{ display:block; z-index:101; }
}

/* ---------- HOME HERO ---------- */
.hero{
  position:relative; height:100vh; min-height:640px;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
}
.hero-img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transform:scale(1.06);
  filter:saturate(0.92) brightness(0.92);
}
.hero::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(20,26,30,0.72) 0%, rgba(20,26,30,0.22) 46%, rgba(20,26,30,0.28) 100%);
}
.hero-content{
  position:relative; z-index:2; text-align:center; color:#fff;
  opacity:0; animation: rise 1.4s 0.3s ease forwards;
}
@keyframes rise{ from{ opacity:0; transform:translateY(18px);} to{ opacity:1; transform:translateY(0);} }
.hero-eyebrow{ font-size:14px; letter-spacing:1.5px; font-weight:400; opacity:0.92; margin-bottom:18px; }
.hero-names{
  font-family:'Cormorant Garamond', serif; font-style:italic; font-weight:500;
  font-size:clamp(48px, 9vw, 108px); line-height:1; letter-spacing:0.5px;
  color:#fff; text-shadow:0 2px 24px rgba(0,0,0,0.3);
}
.hero-rule{ width:64px; height:1px; background:var(--powder); margin:26px auto; opacity:0.9; }
.hero-countdown{
  display:flex; align-items:center; justify-content:center; gap:24px;
  margin-top:14px;
}
.hc-unit{ display:flex; flex-direction:column; align-items:center; min-width:50px; }
.hc-num{
  font-family:'Cormorant Garamond', serif; font-weight:500; font-style:italic;
  font-size:clamp(28px,4vw,42px); line-height:1; color:#fff;
  font-variant-numeric:tabular-nums;
}
.hc-label{
  font-size:10.5px; letter-spacing:1.8px; text-transform:uppercase;
  color:#fff; opacity:0.7; margin-top:9px;
}
.hc-sep{ width:1px; height:32px; background:rgba(255,255,255,0.28); }
@media (max-width:520px){
  .hero-countdown{ gap:13px; }
  .hc-unit{ min-width:40px; }
  .hc-sep{ height:24px; }
}
.scroll-cue{
  position:absolute; bottom:34px; left:50%; transform:translateX(-50%); z-index:2;
  width:1px; height:46px; background:rgba(255,255,255,0.55);
  animation: cue 2.4s ease-in-out infinite;
}
@keyframes cue{ 0%,100%{ transform:translateX(-50%) scaleY(1); opacity:0.6;} 50%{ transform:translateX(-50%) scaleY(0.6); opacity:1;} }

/* ---------- HOME WELCOME (below hero, still part of landing) ---------- */
.welcome{ padding:100px 0 110px; text-align:center; }
.welcome p.lede{
  max-width:600px; margin:0 auto 46px;
  font-family:'Cormorant Garamond', serif; font-size:clamp(22px,2.6vw,28px);
  font-style:italic; color:var(--ink); line-height:1.55; font-weight:400;
}
.welcome-links{ display:flex; justify-content:center; gap:20px; flex-wrap:wrap; }
.welcome-links a{
  font-size:13.5px; letter-spacing:0.5px; padding:14px 26px;
  border:1px solid var(--line); transition:border-color 0.25s ease, color 0.25s ease;
}
.welcome-links a:hover{ border-color:var(--powder-deep); color:var(--powder-deep); }

/* ---------- AT A GLANCE (home, under hero) ---------- */
.glance{ padding:70px 0 10px; }
.glance .divider{ margin-bottom:22px; }
.glance .kicker{ margin-bottom:12px; }
.glance-note{
  text-align:center; max-width:460px; margin:0 auto 36px; font-size:15px;
  color:var(--ink-soft); font-style:italic;
}
.glance-grid{
  display:grid; grid-template-columns:repeat(3,1fr); row-gap:46px; column-gap:28px;
  max-width:980px; margin:0 auto;
}
.glance-card{ text-align:center; padding:0 10px; }
.glance-img{
  height:118px; width:auto; max-width:100%; object-fit:contain;
  margin:0 auto 14px; display:block;
}
.glance-label{
  font-size:13px; letter-spacing:1.4px; text-transform:uppercase;
  font-weight:500; color:var(--ink); margin-bottom:10px;
}
.glance-diamond{ display:block; width:5px; height:5px; background:var(--powder-deep); transform:rotate(45deg); margin:0 auto 12px; }
.glance-detail{ font-size:15.5px; line-height:1.6; margin:0; }
@media (max-width:760px){ .glance-grid{ grid-template-columns:repeat(2,1fr); row-gap:44px; } }
@media (max-width:460px){ .glance-grid{ grid-template-columns:1fr; row-gap:38px; max-width:280px; } }

/* ---------- INNER PAGE BANNER ---------- */
.page-banner{
  padding:130px 0 50px; text-align:center; background:var(--paper-deep);
  border-bottom:1px solid var(--line);
}
.page-banner .kicker{ margin-bottom:10px; }
.page-banner h1{ font-size:clamp(38px,5vw,58px); font-style:italic; margin-bottom:14px; }
.page-banner p{ max-width:520px; margin:0 auto; font-size:16px; }
.page-banner.with-photo{
  position:relative; padding:0; height:46vh; min-height:340px;
  display:flex; align-items:center; justify-content:center; border-bottom:none;
}
.page-banner.with-photo img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:saturate(0.9) brightness(0.9);
}
.page-banner.with-photo::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(20,26,30,0.6), rgba(20,26,30,0.25));
}
.page-banner.with-photo .banner-inner{ position:relative; z-index:2; color:#fff; text-align:center; }
.page-banner.with-photo h1{ color:#fff; }
.page-banner.with-photo .kicker{ color:rgba(255,255,255,0.85); }
.page-banner.with-photo p{ color:rgba(255,255,255,0.9); }

/* ---------- SECTION SCAFFOLDING ---------- */
section{ padding:100px 0; position:relative; }
.divider{ display:flex; align-items:center; justify-content:center; gap:14px; margin-bottom:64px; }
.divider::before, .divider::after{ content:''; height:1px; width:64px; background:var(--line); }
.diamond{ width:6px; height:6px; background:var(--powder-deep); transform:rotate(45deg); }
.kicker{ text-align:center; font-size:15px; color:var(--ink-faint); letter-spacing:0.4px; }
.section-title{ text-align:center; font-size:clamp(34px,4.2vw,52px); font-style:italic; margin-bottom:14px; }
.section-lede{ text-align:center; max-width:520px; margin:0 auto 64px; font-size:17px; }

/* ---------- OUR STORY (home extra, optional use) ---------- */
.story-grid{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:72px; align-items:center; }
.story-img-wrap{ position:relative; }
.story-img-wrap img{ width:100%; height:520px; object-fit:cover; }
.story-img-wrap::before{ content:''; position:absolute; top:-18px; left:-18px; right:18px; bottom:18px; border:1px solid var(--powder); z-index:-1; }
.story-block + .story-block{ margin-top:38px; padding-top:38px; border-top:1px solid var(--line); }
.story-block h3{ font-size:23px; font-style:italic; margin-bottom:10px; color:var(--powder-deep); }
.story-block p{ font-size:16px; max-width:440px; }
@media (max-width:860px){ .story-grid{ grid-template-columns:1fr; gap:44px; } .story-img-wrap img{ height:340px; } }

/* ---------- SCHEDULE ---------- */
.timeline{ max-width:640px; margin:0 auto; position:relative; }
.timeline::before{ content:''; position:absolute; left:118px; top:6px; bottom:6px; width:1px; background:var(--line); }
.t-item{ display:grid; grid-template-columns:100px 36px 1fr; align-items:start; margin-bottom:46px; }
.t-item:last-child{ margin-bottom:0; }
.t-time{ font-size:14px; color:var(--ink-faint); letter-spacing:0.4px; padding-top:5px; text-align:right; padding-right:18px; }
.t-dot-col{ display:flex; justify-content:center; }
.t-dot{ width:9px; height:9px; border-radius:50%; background:var(--paper); border:1px solid var(--powder-deep); margin-top:8px; }
.t-title{ font-family:'Cormorant Garamond', serif; font-size:24px; font-style:italic; margin-bottom:5px; }
.t-desc{ font-size:15px; margin:0; }
@media (max-width:560px){ .timeline::before{ left:70px; } .t-item{ grid-template-columns:56px 30px 1fr; } .t-time{ font-size:12.5px; padding-right:10px; } }

/* ---------- WEDDING PARTY ---------- */
.party-content{ padding:40px 0 40px; }
.party-intro{
  text-align:center; max-width:620px; margin:0 auto 24px; font-size:15px;
  color:var(--ink-soft); font-style:italic; line-height:1.7;
}
.party-content .divider{ margin-bottom:36px; }
.party-section{ max-width:900px; margin:0 auto 44px; }
.party-section:last-child{ margin-bottom:0; }
.party-section-title{
  text-align:center; font-size:13px; letter-spacing:1.6px; text-transform:uppercase;
  font-weight:500; color:var(--ink-faint); margin-bottom:30px;
}
.party-cards{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  row-gap:36px; column-gap:20px;
}
.party-cards-pair{ grid-template-columns:repeat(2,220px); justify-content:center; column-gap:60px; }
.party-card{ text-align:center; }
.party-avatar{
  width:60px; height:60px; border-radius:50%; margin:0 auto 14px;
  display:flex; align-items:center; justify-content:center;
  background:var(--paper-deep); border:1px solid var(--powder);
  font-family:'Cormorant Garamond', serif; font-style:italic; font-weight:600;
  font-size:22px; color:var(--powder-deep);
}
.party-card-lead .party-avatar{
  width:68px; height:68px; font-size:25px;
  border:1.5px solid var(--powder-deep); background:var(--paper);
}
.party-role{ font-size:13px; letter-spacing:0.4px; color:var(--powder-deep); margin-bottom:6px; }
.party-name{ font-family:'Cormorant Garamond', serif; font-style:italic; font-size:21px; }
.party-note{ font-size:14.5px; max-width:320px; margin:8px auto 0; }
@media (max-width:560px){
  .party-cards-pair{ grid-template-columns:repeat(2,1fr); column-gap:20px; }
}
@media (max-width:420px){
  .party-cards{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:420px){
  .party-cards{ grid-template-columns:repeat(2,1fr); }
}

/* ---------- REGISTRY ---------- */
.reg-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); max-width:920px; margin:0 auto; }
.reg-card{ background:var(--paper); padding:52px 34px; text-align:center; }
.reg-card h3{ font-size:24px; font-style:italic; margin-bottom:12px; }
.reg-card p{ font-size:14.5px; margin-bottom:24px; }
.reg-link{ display:inline-block; font-size:13.5px; letter-spacing:0.5px; color:var(--powder-deep); border-bottom:1px solid var(--powder-deep); padding-bottom:2px; }
@media (max-width:760px){ .reg-grid{ grid-template-columns:1fr; } }

/* ---------- COMING SOON (party, registry — placeholder content not ready) ---------- */
.coming-soon{ text-align:center; padding:40px 0 20px; }
.coming-soon .divider{ margin-bottom:28px; }
.coming-soon-text{
  font-family:'Cormorant Garamond', serif; font-style:italic; font-size:24px;
  color:var(--ink-soft); max-width:460px; margin:0 auto; line-height:1.5;
}

/* ---------- TRAVEL ---------- */
.travel-grid{ display:grid; grid-template-columns:1fr 1fr; gap:60px; max-width:920px; margin:0 auto; }
.travel-card h3{ font-size:22px; font-style:italic; margin-bottom:12px; color:var(--powder-deep); }
.travel-card p{ font-size:15px; margin-bottom:6px; }
@media (max-width:700px){ .travel-grid{ grid-template-columns:1fr; gap:38px; } }

/* ---------- FAQ ---------- */
.faq-list{ max-width:680px; margin:0 auto; }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item:first-child{ border-top:1px solid var(--line); }
.faq-q{
  width:100%; text-align:left; background:none; border:none; cursor:pointer;
  padding:24px 4px; display:flex; justify-content:space-between; align-items:center;
  font-family:'Cormorant Garamond', serif; font-size:20px; font-style:italic; color:var(--ink);
}
.faq-q .plus{ font-family:'Jost',sans-serif; font-size:18px; color:var(--powder-deep); transition:transform 0.3s ease; }
.faq-item.open .plus{ transform:rotate(45deg); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height 0.35s ease; }
.faq-a p{ padding:0 4px 24px; font-size:15px; max-width:560px; }

/* ---------- RSVP ---------- */
.rsvp-box{ max-width:480px; margin:0 auto; text-align:center; }
.rsvp-box input{
  width:100%; padding:15px 4px; border:none; border-bottom:1px solid var(--ink-faint);
  background:transparent; font-family:'Cormorant Garamond', serif; font-style:italic;
  font-size:22px; color:var(--ink); text-align:center; outline:none;
}
.rsvp-box input::placeholder{ color:var(--ink-faint); opacity:0.7; }
.rsvp-box input:focus{ border-color:var(--powder-deep); }
.rsvp-hint{ font-size:13px; color:var(--ink-faint); margin-top:14px; }
.rsvp-result{ margin-top:26px; font-size:15px; min-height:24px; }
.rsvp-result .found{ color:var(--powder-deep); }

.rsvp-not-found{ color:var(--ink-faint); font-size:14.5px; line-height:1.6; }
.rsvp-not-found a{ color:var(--powder-deep); border-bottom:1px solid var(--powder-deep); }

.rsvp-picker{ text-align:left; }
.rsvp-picker-note{
  font-size:14px; color:var(--ink-faint); text-align:center; margin-bottom:20px;
}
.rsvp-pick-list{ border-top:1px solid var(--line); }
.rsvp-pick-item{
  display:flex; flex-direction:column; gap:4px; width:100%;
  text-align:left; padding:16px 14px; border:none; border-bottom:1px solid var(--line);
  background:none; cursor:pointer; transition:background 0.2s ease;
}
.rsvp-pick-item:hover{ background:var(--paper-deep); }
.rsvp-pick-label{
  font-family:'Cormorant Garamond', serif; font-style:italic; font-size:18px; color:var(--ink);
}
.rsvp-pick-names{ font-size:13px; color:var(--ink-faint); }

.rsvp-party{ text-align:left; }
.rsvp-party-label{
  font-family:'Cormorant Garamond', serif; font-style:italic; font-size:24px;
  color:var(--powder-deep); text-align:center; margin-bottom:28px;
}
.rsvp-guest-list{ border-top:1px solid var(--line); }
.rsvp-guest-row{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:16px 0; border-bottom:1px solid var(--line);
}
.rsvp-guest-name{ font-size:16px; color:var(--ink); }
.rsvp-attend-toggle{ display:flex; gap:10px; flex-shrink:0; }
.attend-btn{
  font-family:'Jost', sans-serif; font-size:12.5px; letter-spacing:0.4px;
  padding:9px 16px; border:1px solid var(--line); background:none;
  color:var(--ink-faint); cursor:pointer; transition:border-color 0.2s ease, color 0.2s ease;
}
.attend-btn:hover{ border-color:var(--powder-deep); color:var(--powder-deep); }
.attend-btn.yes.active{ border-color:var(--powder-deep); color:var(--powder-deep); background:rgba(175,201,214,0.18); }
.attend-btn.no.active{ border-color:var(--ink-faint); color:var(--ink-soft); background:var(--paper-deep); }

.rsvp-kids-row{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:20px 0 6px; margin-top:4px;
}
.rsvp-kids-row label{ font-size:14.5px; color:var(--ink-soft); }
.rsvp-kids-row input{
  width:64px; padding:8px; border:1px solid var(--line); text-align:center;
  font-size:15px; color:var(--ink); background:var(--paper);
}
.rsvp-kids-row input:focus{ outline:none; border-color:var(--powder-deep); }

.rsvp-submit{
  display:block; width:100%; margin-top:28px; padding:15px 0;
  font-family:'Jost', sans-serif; font-size:13.5px; letter-spacing:0.6px;
  text-transform:uppercase; border:1px solid var(--powder-deep); background:none;
  color:var(--powder-deep); cursor:pointer; transition:background 0.2s ease, color 0.2s ease;
}
.rsvp-submit:hover{ background:var(--powder-deep); color:#fff; }

.rsvp-status{ margin-top:16px; text-align:center; font-size:14px; color:var(--ink-faint); min-height:20px; }
.rsvp-status.ok{ color:var(--powder-deep); }

@media (max-width:480px){
  .rsvp-guest-row{ flex-direction:column; align-items:flex-start; gap:10px; }
  .rsvp-attend-toggle{ width:100%; }
  .attend-btn{ flex:1; }
}

/* ---------- FOOTER ---------- */
footer{ padding:70px 0 50px; text-align:center; border-top:1px solid var(--line); }
.foot-mark{ font-family:'Cormorant Garamond', serif; font-style:italic; font-size:30px; margin-bottom:14px; }
footer p{ font-size:13.5px; margin:0; }
footer .small{ margin-top:10px; color:var(--ink-faint); font-size:12.5px; }
