:root{
  --bg:#fff9f0;
  --panel:#fffdf8;
  --ink:#35312d;
  --muted:#796f66;
  --line:#decbb8;
  --line-soft:#ead9c8;
  --gold:#b77f4d;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:radial-gradient(circle at top,#fffdf8 0,#fff9f0 48%,#f5e9dd 100%);
  color:var(--ink);
  font-family:Georgia,"Times New Roman",serif;
}
.nav{
  position:sticky;
  top:0;
  z-index:20;
  height:54px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:46px;
  background:rgba(255,249,240,.84);
  backdrop-filter:blur(10px);
}
.nav a{
  color:#463f39;
  text-decoration:none;
  font-size:15px;
}
.nav .active{
  border-bottom:1px solid var(--gold);
  padding-bottom:5px;
}
[id]{
  scroll-margin-top:84px;
}
.nav a{
  padding-bottom:5px;
}
.page{
  width:min(1280px,calc(100% - 42px));
  margin:18px auto 24px;
}
.card{
  background:rgba(255,253,248,.88);
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  box-shadow:none;
}
.hero{
  min-height:430px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:54px 28px;
}
.hero-frame,
.hero::before,
.hero::after{
  content:none;
}
.hero-content{
  text-align:center;
  position:relative;
  z-index:2;
}
.overline{
  margin:0 0 18px;
  color:var(--gold);
  text-transform:uppercase;
  letter-spacing:.17em;
  font-size:15px;
}
.overline::before,
.overline::after{
  content:"";
  display:inline-block;
  width:46px;
  height:1px;
  background:var(--line-soft);
  vertical-align:middle;
  margin:0 14px;
}
h1{
  margin:0;
  font-weight:400;
  font-style:italic;
  font-size:clamp(58px,7vw,90px);
  line-height:1;
}
h1 span{
  display:block;
  color:var(--gold);
  font-size:.42em;
}
.date{
  margin:25px 0 0;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-size:22px;
}
.heart,.small-heart,.footer-heart{
  color:var(--gold);
}
.heart{
  margin:14px 0 10px;
}
.countdown-inline p{
  margin:0 0 14px;
  text-transform:uppercase;
  letter-spacing:.11em;
  font-size:14px;
}
.timer{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  width:min(410px,90vw);
  margin:0 auto;
}
.timer div{
  border-right:1px solid var(--line);
}
.timer div:last-child{
  border-right:0;
}
.timer b{
  display:block;
  font-size:34px;
  font-weight:700;
}
.timer span{
  font-size:13px;
}
.button{
  border:1px solid var(--gold);
  border-radius:999px;
  background:transparent;
  color:#9d6e42;
  cursor:pointer;
  font-family:Georgia,"Times New Roman",serif;
  text-decoration:none;
}
.primary{
  display:inline-flex;
  padding:14px 42px;
  margin-top:24px;
  text-transform:uppercase;
  letter-spacing:.08em;
  border:0;
  box-shadow:none;
}
.grid{
  display:grid;
  gap:14px;
  margin-top:14px;
}
.intro-grid{
  grid-template-columns:1fr 1fr;
}
.event-grid{
  grid-template-columns:.82fr 1.18fr;
}
.invite,.dress,.program,.locations,.rsvp{
  padding:34px;
}
.card h2{
  margin:0 0 24px;
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:400;
  font-size:22px;
}
.invite p{
  margin:0 auto 17px;
  max-width:560px;
  line-height:1.64;
  font-size:16px;
}
.small-heart{
  text-align:center;
}
.dress{
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.dress-text-only{
  max-width:430px;
  margin:0 auto;
  text-align:center;
}
.dress-text-only::before{
  content:none;
}
.dress-text-only p{
  line-height:1.72;
  font-size:16px;
}
.program{
  position:relative;
}
.program::before{
  content:none;
}
.timeline{
  position:relative;
  z-index:2;
  max-width:520px;
  margin:0 auto;
  padding-left:26px;
  border-left:0;
}
.timeline div{
  position:relative;
  display:grid;
  grid-template-columns:72px 1fr;
  gap:16px;
  padding:10px 0;
}
.timeline div:before{
  content:"";
  position:absolute;
  left:-20px;
  top:18px;
  width:11px;
  height:11px;
  border:1px solid var(--gold);
  border-radius:50%;
  background:var(--panel);
}
.timeline time{
  font-weight:700;
}
.timeline span{
  font-size:16px;
  line-height:1.35;
}
.timeline small{
  color:var(--muted);
}
.location-list{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.location{
  border:0;
  border-radius:14px;
  padding:18px 14px;
  text-align:center;
  background:rgba(255,255,255,.18);
}
.location h3{
  margin:0 0 6px;
  text-transform:uppercase;
  letter-spacing:.05em;
  font-size:14px;
  white-space:nowrap;
}
.location p{
  margin:0 0 14px;
  color:var(--muted);
}
.map{
  height:145px;
  position:relative;
  border-radius:8px;
  overflow:hidden;
}
.map iframe{
  width:100%;
  height:100%;
  border:0;
  filter:saturate(.25) brightness(1.08);
}
.map i{
  position:absolute;
  left:50%;
  top:50%;
  width:28px;
  height:28px;
  background:#6d594b;
  border:3px solid #fff;
  border-radius:50% 50% 50% 0;
  transform:translate(-50%,-100%) rotate(-45deg);
}
.map i:after{
  content:"";
  position:absolute;
  width:8px;
  height:8px;
  left:7px;
  top:7px;
  background:white;
  border-radius:50%;
}
.location a{
  display:inline-flex;
  margin-top:14px;
  padding:10px 28px;
  border:1px solid var(--gold);
  border-radius:999px;
  color:#9d6e42;
  text-transform:uppercase;
  font-size:13px;
  text-decoration:none;
}
.rsvp{
  margin-top:14px;
  margin-bottom:72px;
}
.rsvp-head{
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}
.rsvp-head h2{
  flex:1;
}
.add-guest{
  position:absolute;
  right:0;
  top:0;
  padding:10px 16px;
}
.guest{
  border-top:1px solid var(--line);
  margin-top:8px;
  padding-top:18px;
}
.guest-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-bottom:16px;
}
.guest-head h3{
  margin:0;
  font-weight:400;
}
.guest-actions{
  display:flex;
  align-items:center;
  gap:10px;
}
.guest:first-child .remove-guest{
  display:none;
}
.field{
  display:block;
  margin-bottom:18px;
}
label{
  font-size:14px;
  color:var(--muted);
}
input[type=text]{
  width:100%;
  margin-top:6px;
  border:1px solid var(--line);
  border-radius:5px;
  background:rgba(255,255,255,.7);
  padding:11px 12px;
  font:14px Georgia,"Times New Roman",serif;
}
input[type=radio],input[type=checkbox]{
  accent-color:var(--gold);
}
.attendance{
  margin:0 0 20px;
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:10px;
  display:flex;
  align-items:center;
  gap:20px;
  flex-wrap:wrap;
  background:rgba(255,255,255,.38);
}
.attendance h4{
  margin:0;
  text-transform:uppercase;
  letter-spacing:.05em;
  font-size:14px;
  color:var(--ink);
  width:100%;
}
.attendance label{
  display:flex;
  gap:8px;
  align-items:center;
  color:#4b4540;
}
.guest.is-declined .guest-details{
  display:none;
}
.form-grid{
  display:grid;
  grid-template-columns:.75fr 1.15fr 1fr 1.25fr;
  gap:24px;
}
.group h4{
  margin:0 0 12px;
  text-transform:uppercase;
  letter-spacing:.05em;
  font-size:14px;
}
.group label{
  display:flex;
  gap:8px;
  align-items:center;
  margin-bottom:8px;
  color:#4b4540;
}
.nested{
  display:none;
  margin-top:12px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:8px;
}
.nested p{
  margin:0 0 8px;
  color:var(--muted);
}
.song-list{
  display:grid;
  gap:8px;
}
.song-row{
  display:grid;
  grid-template-columns:1fr 34px;
  gap:8px;
}
.song-row:first-child{
  grid-template-columns:1fr;
}
.song-row:first-child .remove-song{
  display:none;
}
.remove-song,.remove-guest{
  width:34px;
  height:34px;
  border:1px solid var(--gold);
  border-radius:7px;
  background:transparent;
  color:#9d6e42;
  cursor:pointer;
  font-size:20px;
}
.add-song{
  margin-top:10px;
  padding:9px 16px;
}
.submit{
  display:flex;
  justify-content:center;
  min-width:300px;
  margin:30px auto 0;
  padding:14px 36px;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.footer{
  margin-top:24px;
  padding-top:12px;
  padding-bottom:24px;
  background:transparent;
  border-top:0;
  text-align:center;
}
.footer-line{
  display:none;
}
.footer-question{
  color:#5f5146;
  font-size:15px;
  line-height:1.7;
  margin:0 auto 10px;
  max-width:620px;
}
.footer-heart{
  font-size:24px;
}
@media(max-width:980px){
  .intro-grid,.event-grid,.location-list{
    grid-template-columns:1fr;
  }
  .form-grid{
    grid-template-columns:1fr 1fr;
  }
  .location h3{
    white-space:normal;
  }
}
@media(max-width:560px){
  .nav{
    height:52px;
    justify-content:flex-start;
    overflow:auto;
    gap:20px;
    padding:0 12px;
  }
  .nav a{
    white-space:nowrap;
    font-size:12px;
  }
  .page{
    width:calc(100% - 14px);
  }
  .hero{
    min-height:520px;
    border-radius:20px;
  }
  .overline::before,
  .overline::after{
    display:none;
  }
  h1{
    font-size:56px;
  }
  .date{
    font-size:16px;
  }
  .timer b{
    font-size:30px;
  }
  .timer span{
    font-size:11px;
  }
  .invite,.dress,.program,.locations,.rsvp{
    padding:24px 18px;
  }
  .form-grid{
    grid-template-columns:1fr;
  }
  .rsvp-head{
    display:block;
  }
  .add-guest{
    position:static;
    display:flex;
    margin:0 auto 18px;
  }
  .guest-head{
    align-items:flex-start;
    flex-direction:column;
  }
  .guest-actions{
    width:100%;
    justify-content:space-between;
  }
  .attendance{
    display:block;
  }
  .attendance label{
    margin-top:10px;
  }
  .submit{
    min-width:0;
    width:100%;
  }
}


/* Finishing touches */
.button,
.location a,
input,
textarea{
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease, opacity .2s ease;
}
.button:hover,
.location a:hover{
  background:rgba(183,127,77,.08);
}
.button:focus-visible,
.location a:focus-visible,
input:focus-visible,
textarea:focus-visible{
  outline:none;
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(183,127,77,.16);
}
button:disabled{
  cursor:not-allowed;
  opacity:.55;
}
.required{
  color:var(--gold);
}
.form-note{
  max-width:620px;
  margin:0 auto 20px;
  text-align:center;
  color:var(--muted);
  line-height:1.55;
}
textarea{
  width:100%;
  min-height:94px;
  resize:vertical;
  margin-top:6px;
  border:1px solid var(--line);
  border-radius:5px;
  background:rgba(255,255,255,.7);
  padding:11px 12px;
  font:14px Georgia,"Times New Roman",serif;
}
.field-error{
  display:block;
  min-height:18px;
  margin-top:5px;
  color:#9f3e2f;
  font-size:12px;
}
.has-error input[type=text],
.has-error textarea,
.attendance.has-error{
  border-color:#b95a4f;
  box-shadow:0 0 0 3px rgba(185,90,79,.12);
}
.attendance .field-error{
  width:100%;
}
.group-full{
  grid-column:1 / -1;
  margin-bottom:0;
}
.is-hidden{
  display:none !important;
}
.nested.is-visible{
  display:block;
}
.form-status{
  display:none;
  max-width:760px;
  margin:24px auto 0;
  padding:13px 16px;
  border-radius:10px;
  text-align:center;
  line-height:1.45;
}
.form-status:not(:empty){
  display:block;
}
.form-status.is-info{
  border:1px solid var(--line);
  color:var(--muted);
  background:rgba(255,255,255,.42);
}
.form-status.is-success{
  border:1px solid rgba(95,132,88,.38);
  color:#405d3b;
  background:rgba(239,248,236,.78);
}
.form-status.is-warning{
  border:1px solid rgba(183,127,77,.36);
  color:#83592f;
  background:rgba(255,247,232,.9);
}
.form-status.is-error{
  border:1px solid rgba(185,90,79,.38);
  color:#8a362e;
  background:rgba(255,239,236,.92);
}
.footer-question a{
  color:#9d6e42;
  text-decoration:none;
  border-bottom:0;
}
@media(max-width:560px){
  .hero-frame{inset:18px;}
  .hero::before{inset:32px;}
  .timeline{
    padding-left:18px;
  }
  .timeline div{
    grid-template-columns:58px 1fr;
    gap:10px;
  }
  .timeline div:before{
    left:-14px;
  }
  .song-row{
    grid-template-columns:1fr 34px;
  }
}

.primary:hover,
.primary:focus-visible{
  background:transparent;
  box-shadow:none;
  outline:none;
}


/* Refinements requested */
.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:12px 28px;
  border:1px solid var(--gold);
  border-radius:999px;
  background:rgba(255,255,255,.45);
  box-shadow:0 8px 24px rgba(183,127,77,.07);
}
.primary{
  margin-top:28px;
  padding:16px 44px;
  border:1px solid var(--gold);
  background:rgba(255,255,255,.42);
}
.submit{
  min-width:320px;
  width:auto;
  padding:16px 44px;
  border:1px solid var(--gold);
  background:rgba(255,255,255,.42);
}
.button:hover,
.location a:hover{
  background:rgba(183,127,77,.12);
}
.primary:hover,
.primary:focus-visible{
  background:rgba(183,127,77,.08);
  box-shadow:0 10px 30px rgba(183,127,77,.08);
}
.guest{
  margin-top:16px;
  padding:22px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.34);
}
.guest-top-row{
  display:grid;
  grid-template-columns:1.15fr .95fr;
  gap:18px;
  align-items:stretch;
  margin-bottom:18px;
}
.field{
  display:block;
  margin-bottom:18px;
}
.field-card{
  margin-bottom:0;
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.3);
}
.field-card input[type=text]{
  margin-top:10px;
}
.attendance{
  margin:0;
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:16px;
  display:flex;
  align-items:center;
  align-content:flex-start;
  gap:18px;
  flex-wrap:wrap;
  background:rgba(255,255,255,.3);
}
.attendance h4{
  width:100%;
  margin:0 0 4px;
}
.form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px;
}
.group{
  padding:16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.28);
}
.group-full{
  grid-column:1 / -1;
  margin-bottom:0;
  padding:16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.28);
}
.guest-head{
  margin-bottom:18px;
}
.program{
  padding-bottom:28px;
}
.timeline{
  max-width:620px;
  padding-left:0;
}
.timeline div{
  position:relative;
  display:grid;
  grid-template-columns:92px 1fr;
  align-items:start;
  gap:18px;
  padding:16px 18px;
  margin-bottom:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.34);
}
.timeline div:before{
  left:14px;
  top:50%;
  transform:translateY(-50%);
  width:10px;
  height:10px;
  background:#fffdf8;
}
.timeline time{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:58px;
  padding:7px 12px 7px 20px;
  border-radius:999px;
  background:rgba(183,127,77,.09);
  color:#5f4330;
  font-size:21px;
  line-height:1;
}
.timeline span{
  display:block;
  padding-top:4px;
  font-size:18px;
  line-height:1.4;
}
.timeline small{
  display:block;
  margin-top:4px;
  font-size:15px;
}
.song-row:first-child{
  grid-template-columns:1fr 34px;
}
.song-row:first-child .remove-song{
  display:inline-flex;
}
@media(max-width:980px){
  .guest-top-row,
  .form-grid{
    grid-template-columns:1fr;
  }
}
@media(max-width:560px){
  .primary,
  .submit{
    width:100%;
    min-width:0;
  }
  .guest{
    padding:18px 16px;
  }
  .timeline div{
    grid-template-columns:1fr;
    gap:10px;
    padding:14px 16px;
  }
  .timeline div:before{
    left:auto;
    right:16px;
    top:18px;
    transform:none;
  }
  .timeline time{
    width:max-content;
    padding:7px 12px;
  }
}


/* V4 corrections */
.nav{
  gap:14px;
  padding:0 14px;
}
.nav a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:8px 16px;
  border:1px solid var(--line-soft);
  border-radius:999px;
  background:rgba(255,253,248,.45);
  white-space:nowrap;
  line-height:1;
}
.nav .active{
  padding:8px 16px;
  border:1px solid var(--gold);
  background:rgba(183,127,77,.08);
}
.program{
  padding-bottom:34px;
}
.timeline{
  max-width:560px;
  margin:0 auto;
  padding-left:44px;
  border-left:0;
  position:relative;
}
.timeline::before{
  content:"";
  position:absolute;
  left:17px;
  top:20px;
  bottom:20px;
  width:1px;
  background:linear-gradient(180deg, transparent, var(--gold) 12%, var(--gold) 88%, transparent);
}
.timeline div{
  display:grid;
  grid-template-columns:76px 1fr;
  gap:16px;
  align-items:start;
  margin:0;
  padding:10px 0 14px;
  border:0;
  border-radius:0;
  background:transparent;
}
.timeline div:before{
  content:"";
  position:absolute;
  left:-32px;
  top:18px;
  transform:none;
  width:11px;
  height:11px;
  border:1px solid var(--gold);
  border-radius:50%;
  background:var(--panel);
  z-index:2;
}
.timeline time{
  display:block;
  min-width:0;
  width:auto;
  padding:0;
  border-radius:0;
  background:transparent;
  color:var(--ink);
  font-size:18px;
  line-height:1.3;
  text-align:left;
}
.timeline span{
  display:block;
  padding-top:0;
  font-size:17px;
  line-height:1.42;
}
.timeline small{
  display:block;
  margin-top:3px;
  font-size:15px;
  color:var(--muted);
}
.guest{
  margin-top:16px;
  padding:20px 0 0;
  border:0;
  border-top:1px solid var(--line-soft);
  border-radius:0;
  background:transparent;
}
.field-card,
.attendance,
.group,
.group-full{
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
}
.field-card input[type=text]{
  margin-top:8px;
}
.attendance{
  display:flex;
  align-items:flex-start;
  align-content:flex-start;
  gap:14px 18px;
  flex-wrap:wrap;
}
.attendance h4{
  width:100%;
  margin:0 0 3px;
}
.group h4{
  margin-bottom:10px;
}
.nested{
  border:1px solid var(--line-soft);
  background:rgba(255,255,255,.25);
}
.song-row:first-child{
  grid-template-columns:1fr;
}
.song-row:first-child .remove-song{
  display:none !important;
}
@media(max-width:560px){
  .nav{
    gap:8px;
    padding:0 10px;
  }
  .nav a{
    min-height:32px;
    padding:7px 12px;
    font-size:12px;
  }
  .nav .active{
    padding:7px 12px;
  }
  .timeline{
    padding-left:34px;
  }
  .timeline::before{
    left:14px;
  }
  .timeline div{
    grid-template-columns:64px 1fr;
    gap:12px;
    padding:9px 0 13px;
  }
  .timeline div:before{
    left:-25px;
    right:auto;
    top:16px;
  }
  .timeline time{
    padding:0;
    font-size:17px;
  }
}


/* v6 tweaks */
.submit{
  display:flex;
  justify-content:center;
  align-items:center;
  margin-left:auto;
  margin-right:auto;
}
.add-guest{
  text-align:center;
}


/* v7 tweaks */
.invite{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:520px;
  padding:46px 40px;
}
.invite h2,
.invite p,
.small-heart{
  text-align:center;
}
.invite p{
  max-width:600px;
}
.footer{
  min-height:180px;
  padding-top:32px;
  padding-bottom:32px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
}
.footer-question{
  text-align:center;
  max-width:760px;
  margin:0 auto 14px;
}
@media(max-width:560px){
  .invite{
    min-height:auto;
    padding:32px 22px;
  }
  .footer{
    min-height:150px;
    padding-top:24px;
    padding-bottom:24px;
  }
}


/* latest footer spacing tweak */
.rsvp{
  margin-bottom:24px;
}
.footer{
  margin-top:8px;
  min-height:92px;
  padding-top:8px;
  padding-bottom:8px;
}
.footer-question{
  margin:0 auto 6px;
  line-height:1.45;
}
.footer-heart{
  font-size:20px;
  line-height:1;
}
@media(max-width:560px){
  .rsvp{
    margin-bottom:14px;
  }
  .footer{
    min-height:74px;
    margin-top:4px;
    padding-top:6px;
    padding-bottom:6px;
  }
  .footer-question{
    margin-bottom:4px;
  }
}


/* wishes block + compact dress card */
.intro-grid{
  align-items:start;
}
.invite{
  grid-column:1;
  grid-row:1 / span 2;
}
.dress{
  grid-column:2;
  grid-row:1;
  justify-content:flex-start;
  min-height:0;
  padding:28px 30px;
}
.wishes{
  grid-column:2;
  grid-row:2;
  padding:30px;
}
.dress-text-only,
.wishes-text-only{
  max-width:460px;
  margin:0 auto;
  text-align:center;
}
.wishes-text-only p{
  line-height:1.72;
  font-size:16px;
  margin:0 0 16px;
}
.wishes-text-only p:last-child{
  margin-bottom:0;
}
@media(max-width:980px){
  .invite,
  .dress,
  .wishes{
    grid-column:auto;
    grid-row:auto;
  }
}
@media(max-width:560px){
  .dress,
  .wishes{
    padding:24px 18px;
  }
}


/* gifts title + gap fix */
.grid{
  gap:12px;
  margin-top:12px;
}
.invite{
  min-height:auto;
  padding:40px 36px;
}
.intro-grid{
  align-items:start;
}
.dress,
.wishes{
  padding:26px 28px;
  min-height:0;
}
.dress h2,
.wishes h2{
  margin-bottom:20px;
}
.dress-text-only p,
.wishes-text-only p{
  margin:0 0 14px;
}
.dress-text-only p:last-child,
.wishes-text-only p:last-child{
  margin-bottom:0;
}
.wishes-text-only,
.dress-text-only{
  max-width:440px;
}
@media(max-width:980px){
  .invite,
  .dress,
  .wishes{
    padding:30px 24px;
  }
}
@media(max-width:560px){
  .grid{
    gap:10px;
    margin-top:10px;
  }
  .invite,
  .dress,
  .wishes{
    padding:24px 18px;
  }
}


/* equal right-column cards + cleaner intro grid */
@media(min-width:981px){
  .intro-grid{
    grid-template-columns:1fr 1fr;
    align-items:stretch;
  }

  .invite{
    grid-column:1;
    grid-row:1 / span 2;
    display:flex;
    flex-direction:column;
    justify-content:center;
    min-height:100%;
  }

  .dress,
  .wishes{
    grid-column:2;
    min-height:0;
    height:100%;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }

  .dress{
    grid-row:1;
  }

  .wishes{
    grid-row:2;
  }

  .dress-text-only,
  .wishes-text-only{
    display:flex;
    flex-direction:column;
    justify-content:center;
    flex:1;
  }
}


/* center remove buttons */
.remove-song,
.remove-guest{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  line-height:1;
}


/* next tweaks: song row alignment + ZAGS */
.song-row{
  align-items:center;
}
.song-row .song-input{
  width:100%;
}
.remove-song{
  align-self:center;
  margin:0;
}
.add-song{
  width:max-content;
}
.zags-group{
  display:flex;
  align-items:center;
  gap:14px 20px;
  flex-wrap:wrap;
}
.zags-group h4{
  width:100%;
  margin:0 0 2px;
}
.zags-group label{
  display:flex;
  align-items:center;
  gap:8px;
}
.zags-group .field-error{
  width:100%;
}
.zags-group.has-error{
  border-color:#b95a4f;
  box-shadow:0 0 0 3px rgba(185,90,79,.12);
}


/* zags checkbox */
.zags-group{
  display:block;
}
.zags-checkbox{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:16px;
  color:#4b4540;
}


/* separate ceremony and banquet timelines */
.program-groups{
  display:grid;
  gap:24px;
  max-width:560px;
  margin:0 auto;
}
.timeline-block{
  text-align:left;
}
.timeline-date{
  margin:0 0 10px;
  padding-left:44px;
  font-size:13px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
}
.timeline-block .timeline{
  margin:0;
}
.timeline-block + .timeline-block{
  padding-top:4px;
}
.timeline-block .timeline::before{
  top:18px;
  bottom:18px;
}
@media(max-width:560px){
  .program-groups{
    gap:20px;
  }
  .timeline-date{
    padding-left:34px;
    font-size:12px;
    letter-spacing:.14em;
  }
}
