:root{
  --bg:#F5EFE6;
  --bg-card:#EDE4D3;
  --text:#3D2B1F;
  --body:#5A4632;
  --olive:#4A5D3A;
  --sage:#7A8B5C;
  --cream:#FAF7F2;
  --error:#8B3A2E;
  --shadow:rgba(61,43,31,0.08);
  --display:'Cormorant Garamond', Georgia, serif;
  --bodyfont:'Manrope', system-ui, sans-serif;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  background:var(--bg);
  color:var(--body);
  font-family:var(--bodyfont);
  font-weight:300;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; }

/* ---------- shared type ---------- */
.label{
  font-family:var(--display);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:0.3em;
  font-size:clamp(0.7rem,1.6vw,0.82rem);
  color:var(--olive);
}
.display-italic{
  font-family:var(--display);
  font-style:italic;
  font-weight:300;
  color:var(--text);
  line-height:1.05;
  text-wrap:balance;
}
.section{
  padding:clamp(4.5rem,11vw,9rem) clamp(1.5rem,5vw,4rem);
}
.wrap{ max-width:1180px; margin:0 auto; width:100%; }

.section-head{ margin-bottom:clamp(3rem,7vw,5rem); }
.section-head .label{ display:block; margin-bottom:1.1rem; }
.section-head h2{
  font-family:var(--display);
  font-style:italic;
  font-weight:300;
  color:var(--text);
  font-size:clamp(2.4rem,6vw,4.2rem);
  line-height:1.04;
  text-wrap:balance;
}

/* ---------- reveal animation ---------- */
.reveal{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1);
  will-change:opacity, transform;
}
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
}

/* ---------- 1. HERO ---------- */
.hero{
  position:relative;
  min-height:100vh;
  min-height:100svh;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  overflow:hidden;
}
.hero__bg{
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  transform:scale(1.06);
  animation:kenburns 24s ease-in-out infinite alternate;
}
@keyframes kenburns{
  from{ transform:scale(1.06) translate(0,0); }
  to{ transform:scale(1.14) translate(-1.5%, -1.5%); }
}
.hero__bg::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(to bottom, rgba(61,43,31,0.42) 0%, rgba(61,43,31,0.20) 32%, rgba(61,43,31,0.30) 64%, rgba(61,43,31,0.58) 100%);
}
.hero__frame{
  position:absolute; z-index:2;
  inset:clamp(14px,2.4vw,30px);
  border:1px solid rgba(250,247,242,0.55);
  pointer-events:none;
}
.hero__inner{
  position:relative; z-index:3;
  padding:clamp(3.5rem,8vh,6rem) 1.5rem;
  color:var(--cream);
  display:flex; flex-direction:column; align-items:center;
  width:100%;
}
.hero__label{
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.5em;
  font-weight:500;
  font-size:clamp(0.7rem,2vw,0.92rem);
  color:var(--cream);
  margin-bottom:clamp(1.4rem,3.5vw,2.2rem);
  opacity:.94;
  padding-left:0.5em;
}
.hero__names{
  font-family:var(--display);
  font-style:italic;
  font-weight:300;
  color:var(--cream);
  font-size:clamp(3rem,13vw,9.5rem);
  line-height:0.98;
  word-break:break-word;
  text-shadow:0 2px 40px rgba(61,43,31,0.35);
}
.hero__names .amp{
  font-style:italic;
  color:var(--sage);
  font-size:1.18em;
  font-weight:400;
  display:inline-block;
  margin:0 .08em;
}
.hero__rule{
  width:clamp(54px,9vw,90px); height:1px;
  background:rgba(250,247,242,0.7);
  margin:clamp(1.8rem,4vw,2.8rem) auto clamp(1.3rem,3vw,1.8rem);
  position:relative;
}
.hero__rule::after{
  content:""; position:absolute; left:50%; top:50%;
  width:6px; height:6px; transform:translate(-50%,-50%) rotate(45deg);
  background:var(--sage);
}
.hero__date{
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.4em;
  font-weight:500;
  font-size:clamp(0.82rem,2.4vw,1.12rem);
  color:var(--cream);
  padding-left:0.4em;
}

/* hero countdown */
.hero__cd{ margin-top:clamp(2.6rem,6vh,4.4rem); width:100%; max-width:680px; }
.hero__cd-label{
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.34em;
  font-weight:500;
  font-size:clamp(0.6rem,1.5vw,0.72rem);
  color:var(--cream);
  opacity:.82;
  margin-bottom:clamp(1rem,2.5vw,1.6rem);
  padding-left:0.34em;
}
.cd-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
}
.cd-cell{ position:relative; padding:0 .3rem; }
.cd-cell + .cd-cell::before{
  content:""; position:absolute; left:0; top:14%;
  width:1px; height:62%; background:rgba(250,247,242,0.30);
}
.cd-num{
  font-family:var(--display);
  font-weight:300;
  color:var(--cream);
  font-size:clamp(2.4rem,8vw,4.4rem);
  line-height:1;
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum";
}
.cd-lab{
  margin-top:.5rem;
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.22em;
  font-weight:500;
  font-size:clamp(0.55rem,1.5vw,0.72rem);
  color:var(--cream);
  opacity:.8;
}
.scroll-ind{
  position:absolute;
  bottom:clamp(1.4rem,2.4vw,1.8rem); left:50%; transform:translateX(-50%);
  width:1px; height:34px;
  background:var(--cream);
  z-index:3;
  opacity:.8;
  animation:scrollpulse 2.4s ease-in-out infinite;
}
@keyframes scrollpulse{
  0%,100%{ opacity:.2; transform:translateX(-50%) scaleY(.55); }
  50%{ opacity:.8; transform:translateX(-50%) scaleY(1); }
}
@media (prefers-reduced-motion:reduce){
  .hero__bg{ animation:none; transform:scale(1.04); }
}

/* ---------- 3. PROGRAM ---------- */
.program{ background:var(--bg-card); }
.program-grid{ display:grid; gap:clamp(2.4rem,5vw,4.5rem); align-items:start; }
.timeline{ position:relative; max-width:560px; margin:0; padding-left:clamp(2.2rem,6vw,3rem); }
.program-preview{ display:none; }
@media (min-width:900px){
  .program-grid{ grid-template-columns:1.05fr 1fr; }
  .program-preview{
    display:block; position:sticky; top:14vh;
    aspect-ratio:4/5; border-radius:4px; overflow:hidden;
    background:var(--bg);
    box-shadow:0 24px 60px rgba(61,43,31,0.14);
  }
  .pp-img{ position:absolute; inset:0; opacity:0; transition:opacity .8s cubic-bezier(.16,1,.3,1); }
  .pp-img img{ width:100%; height:100%; object-fit:cover; transform:scale(1.05); transition:transform 1.4s cubic-bezier(.16,1,.3,1); }
  .pp-img.active{ opacity:1; }
  .pp-img.active img{ transform:scale(1); }
  .pp-cap{
    position:absolute; left:0; right:0; bottom:0; z-index:2;
    padding:1.4rem 1.6rem;
    background:linear-gradient(to top, rgba(61,43,31,0.62), rgba(61,43,31,0));
    font-family:var(--display); font-style:italic; color:var(--cream);
    font-size:1.4rem; opacity:0; transform:translateY(8px);
    transition:opacity .6s ease, transform .6s ease;
  }
  .pp-cap.active{ opacity:1; transform:none; }
  .timeline.has-hover .tl-item{ opacity:.4; transition:opacity .4s ease; }
  .timeline.has-hover .tl-item.hovered{ opacity:1; }
}
.timeline::before{
  content:""; position:absolute; top:6px; bottom:6px; left:7px;
  width:1px; background:var(--sage);
}
.tl-item{ position:relative; padding-bottom:clamp(2.6rem,5vw,3.4rem); }
@media (min-width:900px){ .tl-item{ cursor:pointer; } }
.tl-item:last-child{ padding-bottom:0; }
.tl-item::before{
  content:""; position:absolute; left:calc(-1 * clamp(2.2rem,6vw,3rem)); top:.55rem;
  width:9px; height:9px; border-radius:50%; background:var(--olive);
  margin-left:3px;
  box-shadow:0 0 0 5px var(--bg-card);
}
.tl-time{
  font-family:var(--display);
  font-weight:400;
  color:var(--olive);
  font-size:clamp(1.5rem,4vw,2rem);
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.tl-stage{
  margin-top:.55rem;
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.26em;
  font-weight:500;
  font-size:clamp(0.78rem,1.9vw,0.92rem);
  color:var(--text);
}
.tl-desc{
  margin-top:.45rem;
  font-family:var(--display);
  font-style:italic;
  font-size:clamp(1rem,2.4vw,1.18rem);
  color:var(--body);
  line-height:1.4;
}

/* ---------- 4. CONCEPT / DRESS ---------- */
.concept{ background:var(--bg); }
.concept-lead{
  max-width:620px;
  font-family:var(--display);
  font-style:italic;
  font-size:clamp(1.15rem,2.8vw,1.5rem);
  color:var(--body);
  line-height:1.5;
  margin-bottom:clamp(3rem,7vw,4.5rem);
  text-wrap:pretty;
}
.swatches{
  display:flex; flex-wrap:wrap; gap:clamp(1.4rem,4vw,2.6rem);
  margin-bottom:clamp(3.5rem,8vw,5.5rem);
}
.sw{ text-align:center; }
.sw__dot{
  width:56px; height:56px; border-radius:50%;
  border:0.5px solid var(--text);
  margin:0 auto .8rem;
}
.sw__name{
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.2em;
  font-weight:500;
  font-size:0.66rem;
  color:var(--body);
}
@media (min-width:768px){ .sw__dot{ width:80px; height:80px; } }

.carousel{
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:78%;
  gap:1.2rem;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  padding-bottom:.6rem;
  scrollbar-width:none;
}
.carousel::-webkit-scrollbar{ display:none; }
.look{ scroll-snap-align:start; }
.look__img{
  aspect-ratio:3/4; width:100%;
  border-radius:4px; overflow:hidden;
  background:var(--bg-card);
}
.look__img img{ width:100%; height:100%; object-fit:cover; transition:transform .7s cubic-bezier(.16,1,.3,1); }
.look__cap{
  margin-top:.7rem;
  font-family:var(--display);
  font-style:italic;
  font-size:1.05rem;
  color:var(--body);
}
@media (min-width:768px){
  .carousel{
    grid-auto-flow:row;
    grid-template-columns:repeat(3,1fr);
    grid-auto-columns:auto;
    overflow:visible;
    gap:1.8rem 1.6rem;
  }
  .look{ cursor:default; transition:transform .5s cubic-bezier(.16,1,.3,1); }
  .look:hover{ transform:scale(1.02); }
  .look:hover .look__img img{ transform:scale(1.05); }
}

/* ---------- 4b. ADULTS ONLY ---------- */
.adults{ background:var(--bg); position:relative; overflow:hidden; }
.adults .wrap{ position:relative; z-index:2; }
.adults-floats{ position:absolute; inset:0; z-index:1; pointer-events:none; display:none; }
.adults-float{
  position:absolute;
  border-radius:3px; overflow:hidden;
  border:5px solid var(--cream);
  box-shadow:0 22px 48px rgba(61,43,31,0.20);
  will-change:transform;
  animation:levitate 7s ease-in-out infinite alternate;
}
.adults-float img{ width:100%; height:100%; object-fit:cover; display:block; }
.adults-float.af1{ top:12%;    left:3%;    width:148px; height:188px; --rot:-5deg; animation-duration:6.8s; }
.adults-float.af2{ bottom:11%; left:7.5%;  width:120px; height:120px; --rot:4deg;  animation-duration:8.2s; animation-delay:.6s; }
.adults-float.af3{ top:13%;    right:3.5%; width:138px; height:174px; --rot:5deg;  animation-duration:7.4s; animation-delay:.3s; }
.adults-float.af4{ bottom:12%; right:7%;   width:116px; height:148px; --rot:-4deg; animation-duration:8.8s; animation-delay:1s; }
@media (min-width:1000px){ .adults-floats{ display:block; } }
@media (prefers-reduced-motion:reduce){
  .adults-float{ animation:none; transform:rotate(var(--rot,0deg)); }
}
.adults-card{
  max-width:720px; margin:0 auto; text-align:center;
  background:radial-gradient(120% 100% at 50% 0%, var(--cream) 0%, #F1E9DB 100%);
  border:1px solid rgba(74,93,58,0.22);
  border-radius:5px;
  padding:clamp(3rem,7vw,4.8rem) clamp(1.6rem,6vw,4.5rem);
  box-shadow:0 24px 60px rgba(61,43,31,0.08);
  position:relative;
  overflow:hidden;
}
/* внутренняя волосяная рамка, как в hero/final */
.adults-frame{
  position:absolute; inset:12px;
  border:1px solid rgba(122,139,92,0.35);
  border-radius:3px; pointer-events:none;
}
/* эмблема — бокалы на тосте */
.adults-emblem{
  width:clamp(66px,12vw,90px);
  margin:0 auto clamp(1.1rem,2.8vw,1.7rem);
  color:var(--olive);
}
.adults-emblem svg{ width:100%; height:auto; display:block; }
.adults-bubble{ opacity:.25; animation:bubbletwinkle 3.4s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
.adults-bubble.b2{ animation-delay:.5s; }
.adults-bubble.b3{ animation-delay:.9s; }
.adults-bubble.b4{ animation-delay:1.4s; }
.adults-bubble.b5{ animation-delay:.2s; }
@keyframes bubbletwinkle{
  0%,100%{ opacity:.18; transform:translateY(2px) scale(.7); }
  50%{ opacity:.85; transform:translateY(-2px) scale(1); }
}
@media (prefers-reduced-motion:reduce){
  .adults-bubble{ animation:none; opacity:.55; }
}
.adults-card .label{ display:block; margin-bottom:1.1rem; }
.adults-card h2{
  font-family:var(--display); font-style:italic; font-weight:300; color:var(--text);
  font-size:clamp(1.9rem,4.8vw,3rem); line-height:1.08; text-wrap:balance;
  margin-bottom:clamp(1.3rem,3.2vw,1.9rem);
}
.adults-text{
  font-family:var(--display); font-style:italic;
  font-size:clamp(1.12rem,2.6vw,1.42rem); color:var(--body);
  line-height:1.55; text-wrap:pretty;
  max-width:46ch; margin:0 auto;
}
.adults-rule{ width:40px; height:1px; background:var(--sage); margin:clamp(1.6rem,3.5vw,2.4rem) auto 0; }
.adults-note{
  margin-top:clamp(1.3rem,3vw,1.9rem);
  font-family:var(--display); text-transform:uppercase;
  letter-spacing:0.28em; font-weight:500;
  font-size:clamp(0.62rem,1.5vw,0.74rem); color:var(--olive);
}

/* ---------- 5. VENUE ---------- */
.venue{ background:var(--bg-card); }
.venue-grid{ display:grid; gap:clamp(2.2rem,5vw,4rem); align-items:center; }
.venue-media{ display:flex; flex-direction:column; gap:1rem; }
/* carousel */
.venue-carousel{ position:relative; }
.vc-track{
  display:grid; grid-auto-flow:column; grid-auto-columns:100%;
  overflow-x:auto; scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;
  border-radius:4px;
  box-shadow:0 24px 60px rgba(61,43,31,0.14);
}
.vc-track::-webkit-scrollbar{ display:none; }
.vc-slide{ scroll-snap-align:center; aspect-ratio:4/5; background:var(--bg); }
.vc-slide img{ width:100%; height:100%; object-fit:cover; display:block; }
.vc-arrow{
  position:absolute; top:50%; transform:translateY(-50%);
  width:46px; height:46px; border-radius:50%;
  background:rgba(250,247,242,0.88); border:none; cursor:pointer;
  color:var(--text); font-family:var(--display); font-size:1.6rem; line-height:1;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 20px rgba(61,43,31,0.18);
  transition:background .25s ease, transform .25s ease;
  z-index:2;
}
.vc-arrow:hover{ background:var(--cream); }
.vc-arrow.prev{ left:12px; } .vc-arrow.next{ right:12px; }
.vc-arrow:focus-visible{ outline:2px solid var(--olive); outline-offset:3px; }
.vc-dots{ display:flex; gap:8px; justify-content:center; margin-top:.4rem; }
.vc-dot{
  width:7px; height:7px; border-radius:50%; padding:0;
  border:1px solid var(--olive); background:transparent; cursor:pointer;
  transition:background .25s ease, transform .25s ease;
}
.vc-dot[aria-current="true"]{ background:var(--olive); transform:scale(1.25); }
/* small map strip under carousel — скрыта по запросу */
.venue-map-sm{
  display:none;
  position:relative; height:clamp(120px,22vw,160px);
  border-radius:4px; overflow:hidden; background:var(--bg);
  box-shadow:0 12px 32px rgba(61,43,31,0.10);
}
.venue-map-sm iframe{ width:100%; height:100%; border:0; display:block; filter:saturate(0.78) sepia(0.06); }
.venue-name{ font-size:clamp(2.2rem,5vw,3.4rem); margin:1rem 0 .4rem; }
.venue-addr{ font-size:clamp(0.95rem,2vw,1.05rem); color:var(--body); margin-bottom:1.5rem; }
.venue-text{
  font-family:var(--display);
  font-style:italic;
  font-size:clamp(1.05rem,2.4vw,1.3rem);
  color:var(--body);
  line-height:1.5;
  margin-bottom:2rem;
  text-wrap:pretty;
}
.btn-outline{
  display:inline-block;
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.22em;
  font-weight:500;
  font-size:0.82rem;
  color:var(--olive);
  border:1px solid var(--olive);
  padding:.95rem 2rem;
  border-radius:3px;
  background:transparent;
  cursor:pointer;
  text-decoration:none;
  transition:all .3s ease;
}
.btn-outline:hover{ background:var(--olive); color:var(--cream); }
.venue-meta{
  margin-top:1.4rem;
  font-size:0.82rem;
  letter-spacing:0.04em;
  color:var(--body);
  opacity:.85;
}
@media (min-width:768px){
  .venue-grid{ grid-template-columns:1fr 1fr; }
}

/* ---------- GIFT ---------- */
.gift{ background:var(--bg); position:relative; overflow:hidden; }
.gift .wrap{ position:relative; z-index:2; }
.gift-floats{ position:absolute; inset:0; z-index:1; pointer-events:none; display:none; }
.gift-float{
  position:absolute;
  border-radius:3px; overflow:hidden;
  border:5px solid var(--cream);
  box-shadow:0 22px 48px rgba(61,43,31,0.20);
  will-change:transform;
  animation:levitate 7s ease-in-out infinite alternate;
}
.gift-float img{ width:100%; height:100%; object-fit:cover; display:block; }
.gift-float.f1{ top:11%;    left:3.5%;  width:150px; height:190px; --rot:-5deg;  animation-duration:6.5s; }
.gift-float.f2{ bottom:12%; left:8%;    width:122px; height:122px; --rot:4deg;   animation-duration:8s;   animation-delay:.5s; }
.gift-float.f3{ top:14%;    right:4%;   width:140px; height:176px; --rot:5deg;   animation-duration:7.2s; animation-delay:.3s; }
.gift-float.f4{ bottom:13%; right:8.5%; width:116px; height:150px; --rot:-4deg;  animation-duration:8.6s; animation-delay:.9s; }
@keyframes levitate{
  from{ transform:translateY(-11px) rotate(var(--rot,0deg)); }
  to{   transform:translateY(15px)  rotate(var(--rot,0deg)); }
}
@media (min-width:1000px){ .gift-floats{ display:block; } }
@media (prefers-reduced-motion:reduce){
  .gift-float{ animation:none; transform:rotate(var(--rot,0deg)); }
  .final__bg{ animation:none; transform:scale(1.04); }
}
.gift-card{
  max-width:720px; margin:0 auto; text-align:center;
  background:var(--cream);
  border:1px solid rgba(61,43,31,0.14);
  border-radius:5px;
  padding:clamp(2.8rem,7vw,5rem) clamp(1.6rem,6vw,4.5rem);
  box-shadow:0 24px 60px rgba(61,43,31,0.08);
}
.gift-card .label{ display:block; margin-bottom:1.1rem; }
.gift-card h2{
  font-family:var(--display); font-style:italic; font-weight:300; color:var(--text);
  font-size:clamp(2rem,5.2vw,3.4rem); line-height:1.06; text-wrap:balance;
  margin-bottom:clamp(1.4rem,3.5vw,2rem);
}
.gift-text{
  font-family:var(--display); font-style:italic;
  font-size:clamp(1.15rem,2.8vw,1.5rem); color:var(--body);
  line-height:1.5; text-wrap:pretty;
  max-width:34ch; margin:0 auto;
}
.gift-rule{ width:40px; height:1px; background:var(--sage); margin:clamp(1.8rem,4vw,2.6rem) auto 0; }
.gift-note{
  margin-top:clamp(1.5rem,3.5vw,2.2rem);
  font-family:var(--display); text-transform:uppercase;
  letter-spacing:0.28em; font-weight:500;
  font-size:clamp(0.62rem,1.5vw,0.74rem); color:var(--olive);
}

/* ---------- 6. RSVP ---------- */
.rsvp{ background:var(--bg); }
.rsvp .section-head{ text-align:center; }
.rsvp .section-head .label{ margin-left:auto; margin-right:auto; }
.rsvp-sub{
  text-align:center;
  font-family:var(--display);
  font-style:italic;
  font-size:clamp(1.05rem,2.4vw,1.3rem);
  color:var(--body);
  margin-top:-2.4rem; margin-bottom:clamp(2.8rem,6vw,4rem);
}
.form{ max-width:560px; margin:0 auto; }
.field{ margin-bottom:clamp(2.4rem,5vw,3.2rem); }
.field > .label{ display:block; margin-bottom:1.1rem; }

.guest-row{ display:flex; align-items:center; gap:.6rem; margin-bottom:1rem; }
.underline-input, textarea.underline-input{
  flex:1; width:100%;
  font-family:var(--bodyfont);
  font-size:16px;
  font-weight:300;
  color:var(--text);
  background:transparent;
  border:none;
  border-bottom:1px solid var(--body);
  padding:.7rem 0;
  transition:border-color .3s ease, border-width .15s ease;
}
.underline-input::placeholder{ color:var(--body); opacity:.5; }
.underline-input:focus{ outline:none; border-bottom:2px solid var(--olive); }
textarea.underline-input{ resize:none; line-height:1.6; }
textarea.underline-input::placeholder{ font-style:italic; }
.remove-guest{
  flex:0 0 auto;
  width:34px; height:34px; min-height:34px;
  border:none; background:transparent; cursor:pointer;
  color:var(--body); font-size:1.3rem; line-height:1;
  border-radius:50%;
  transition:color .25s ease, background .25s ease;
}
.remove-guest:hover{ color:var(--error); background:rgba(139,58,46,0.08); }
.add-guest{
  margin-top:.4rem;
  background:none; border:none; cursor:pointer;
  color:var(--olive);
  font-family:var(--bodyfont); font-weight:500;
  font-size:0.92rem; letter-spacing:.01em;
  padding:.4rem 0;
}
.add-guest:hover{ color:var(--text); }

/* attendance cards */
.attend{ display:grid; grid-template-columns:1fr; gap:1rem; }
@media (min-width:520px){ .attend{ grid-template-columns:1fr 1fr; } }
.attend label{
  display:flex; align-items:center; justify-content:center;
  text-align:center;
  min-height:64px; padding:1rem 1.2rem;
  border:1px solid rgba(90,70,50,0.4);
  border-radius:4px;
  cursor:pointer;
  font-family:var(--display);
  font-style:italic;
  font-size:1.15rem;
  color:var(--text);
  background:var(--cream);
  transition:all .3s ease;
}
.attend input{ position:absolute; opacity:0; pointer-events:none; }
.attend input:checked + label{
  background:var(--olive); color:var(--cream); border-color:var(--olive);
}
.attend input:focus-visible + label{ outline:2px solid var(--olive); outline-offset:4px; }

/* collapsible dependent block */
.dependent{
  overflow:hidden;
  max-height:4000px;
  opacity:1;
  transition:max-height .6s cubic-bezier(.16,1,.3,1), opacity .5s ease, margin .5s ease;
}
.dependent.collapsed{ max-height:0; opacity:0; margin:0; pointer-events:none; }

/* chips */
.chips{ display:flex; flex-wrap:wrap; gap:.7rem; }
.chip input{ position:absolute; opacity:0; pointer-events:none; }
.chip label{
  display:inline-block;
  border:1px solid var(--body);
  border-radius:999px;
  padding:14px 22px;
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.16em;
  font-size:0.74rem;
  font-weight:500;
  color:var(--body);
  cursor:pointer;
  min-height:48px;
  display:flex; align-items:center;
  transition:all .25s ease;
}
@media (min-width:768px){ .chip label{ padding:10px 20px; min-height:auto; } }
.chip input:checked + label{ background:var(--olive); color:var(--cream); border-color:var(--olive); }
.chip input:focus-visible + label{ outline:2px solid var(--olive); outline-offset:4px; }

/* radio rows */
.radio-list{ display:flex; flex-direction:column; gap:.2rem; }
.radio-list .opt{ position:relative; }
.radio-list input{ position:absolute; opacity:0; pointer-events:none; }
.radio-list label{
  display:flex; align-items:center; gap:.9rem;
  min-height:48px; padding:.7rem .2rem;
  cursor:pointer;
  font-family:var(--bodyfont);
  font-weight:300;
  font-size:1.02rem;
  color:var(--text);
  border-bottom:1px solid rgba(90,70,50,0.14);
  transition:color .25s ease;
}
.radio-list .opt:last-child label{ border-bottom:none; }
.radio-list .dot{
  flex:0 0 auto;
  width:18px; height:18px; border-radius:50%;
  border:1px solid var(--body);
  position:relative; transition:border-color .25s ease;
}
.radio-list .dot::after{
  content:""; position:absolute; inset:0; margin:auto;
  width:9px; height:9px; border-radius:50%;
  background:var(--olive); transform:scale(0); transition:transform .25s cubic-bezier(.16,1,.3,1);
}
.radio-list input:checked + label .dot{ border-color:var(--olive); }
.radio-list input:checked + label .dot::after{ transform:scale(1); }
.radio-list input:checked + label{ color:var(--olive); }
.radio-list input:focus-visible + label{ outline:2px solid var(--olive); outline-offset:3px; border-radius:3px; }

.err{ color:var(--error); font-size:0.82rem; margin-top:.6rem; min-height:0; }

.submit{
  width:100%;
  padding:18px;
  background:var(--olive);
  color:var(--cream);
  border:none; border-radius:4px;
  cursor:pointer;
  font-family:var(--display);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:0.26em;
  font-size:0.92rem;
  margin-top:1rem;
  transition:background .3s ease;
}
.submit:hover{ background:var(--text); }
.submit:disabled{ opacity:.6; cursor:default; }
.submit:focus-visible{ outline:2px solid var(--olive); outline-offset:4px; }

.thanks{ text-align:center; padding:clamp(2rem,6vw,4rem) 0; }
.thanks h3{ font-family:var(--display); font-style:italic; font-weight:300; color:var(--text); font-size:clamp(3rem,9vw,5.5rem); line-height:1; }
.thanks p{ font-family:var(--display); font-style:italic; font-size:clamp(1.15rem,3vw,1.5rem); color:var(--body); margin-top:1.4rem; }
.thanks .sig{ margin-top:1.6rem; font-family:var(--display); font-style:italic; font-size:1.3rem; color:var(--olive); }

/* ---------- 7. FINAL ---------- */
.final{
  position:relative; overflow:hidden;
  background:var(--text); color:var(--cream); text-align:center;
  padding:clamp(5rem,12vw,10rem) clamp(1.5rem,5vw,4rem);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.final__bg{
  position:absolute; inset:0; z-index:0;
  background-image:url('../images/final.jpg');
  background-size:cover; background-position:center;
  transform:scale(1.06);
  animation:kenburns 26s ease-in-out infinite alternate;
}
.final__bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(61,43,31,0.78) 0%, rgba(61,43,31,0.66) 50%, rgba(61,43,31,0.84) 100%);
}
.final__frame{
  position:absolute; z-index:1;
  inset:clamp(14px,2.4vw,30px);
  border:1px solid rgba(250,247,242,0.45);
  pointer-events:none;
}
.final > .final__rule,
.final > .final__line,
.final > .final__date,
.final > .final__sig{ position:relative; z-index:2; }
.final__rule{ width:40px; height:1px; background:var(--sage); margin:0 auto clamp(2rem,5vw,3rem); }
.final__line{
  font-family:var(--display);
  font-style:italic;
  font-weight:300;
  font-size:clamp(2.5rem,6vw,4.5rem);
  line-height:1.1;
  color:var(--cream);
  max-width:18ch; margin:0 auto;
  text-wrap:balance;
}
.final__date{
  margin-top:clamp(2rem,5vw,3rem);
  font-family:var(--display);
  text-transform:uppercase;
  letter-spacing:0.36em;
  font-weight:500;
  font-size:clamp(0.78rem,2vw,0.92rem);
  color:var(--cream); opacity:.85;
}
.final__sig{ margin-top:1.2rem; font-family:var(--display); font-style:italic; font-size:clamp(1.4rem,3.5vw,2rem); color:var(--cream); }
.final__sig .amp{ color:var(--sage); font-weight:400; }
