:root{
  --olive:#74794e;
  --olive-dark:#596039;
  --cream:#f4f0e8;
  --paper:#fffdf9;
  --ink:#3d3a35;
  --line:rgba(61,58,53,.24);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:"Montserrat",Arial,sans-serif;
  font-weight:300;
}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{
  font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:500;
}
h2{
  margin:0 0 24px;
  font-size:clamp(44px,7vw,76px);
  line-height:.9;
  text-transform:uppercase;
}
p{line-height:1.7}
.shell{width:min(1080px,calc(100% - 40px));margin:auto}
.shell--narrow{width:min(720px,calc(100% - 40px));text-align:center}
.section{padding:95px 0}
.eyebrow{
  margin:0 0 9px;
  font-size:11px;
  letter-spacing:.25em;
  text-transform:uppercase;
}
.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:190px;
  padding:15px 26px;
  border:1px solid var(--olive-dark);
  background:var(--olive-dark);
  color:#fff;
  text-decoration:none;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:11px;
  white-space:nowrap;
}
.button--outline{background:transparent;color:var(--olive-dark)}
.button--light{background:#fff;color:var(--olive-dark);border-color:#fff}
.welcome-screen{
  position:fixed;
  inset:0;
  z-index:100000;
  display:grid;
  place-items:center;
  background:var(--olive-dark);
  color:#fff;
  transition:opacity .7s ease,visibility .7s ease;
}
.welcome-screen.hidden{opacity:0;visibility:hidden}
.welcome-screen__card{text-align:center}
.welcome-screen__card p{margin:0;font:400 58px "Parisienne",cursive}
.welcome-screen__card span{display:block;margin:10px 0 24px;font-size:11px;letter-spacing:.22em}
.welcome-screen__card button{
  padding:13px 25px;
  border:1px solid #fff;
  background:transparent;
  color:#fff;
  text-transform:uppercase;
  letter-spacing:.15em;
  cursor:pointer;
}
.hero{
  min-height:760px;
  position:relative;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:var(--olive-dark);
}
.hero__image{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(.75);
}
.hero__overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(to bottom,rgba(58,61,37,.15),rgba(58,61,37,.63));
}
.hero__content{position:relative;z-index:2;text-align:center;color:#fff}
.script-title{margin:0;font:400 clamp(70px,10vw,120px) "Parisienne",cursive;line-height:.8}
.ampersand{margin:0;font:500 44px "Cormorant Garamond",serif}
.hero__date{margin-top:26px;font-size:12px;letter-spacing:.22em}
.intro{background:var(--paper)}
.intro__grid{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:70px}
.intro__photo{width:100%;height:620px;object-fit:cover}
.intro__copy{font-family:"Cormorant Garamond",serif;font-size:22px;text-align:center}
.signature{font-size:17px;font-style:italic}
.countdown-section{background:var(--olive);color:#fff;text-align:center}
.date-block{display:flex;justify-content:center;align-items:center;gap:25px;margin:30px 0}
.date-block strong{font:500 72px "Cormorant Garamond",serif}
.date-block span{text-transform:uppercase;letter-spacing:.15em;font-size:11px}
.countdown{
  width:min(760px,100%);
  margin:38px auto 0;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  border-top:1px solid rgba(255,255,255,.45);
  border-bottom:1px solid rgba(255,255,255,.45);
}
.countdown div{padding:20px 8px;border-right:1px solid rgba(255,255,255,.25)}
.countdown div:last-child{border-right:0}
.countdown strong{display:block;font:500 40px "Cormorant Garamond",serif}
.countdown span{display:block;font-size:9px;letter-spacing:.16em;text-transform:uppercase}
.calendar-section{background:var(--olive);color:#fff}
.calendar-card{
  margin-top:24px;
  padding:24px;
  border:1px solid rgba(255,255,255,.35);
}
.calendar-card__weekdays,.calendar-card__days{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:10px;
}
.calendar-card__weekdays{margin-bottom:12px;font-size:10px;letter-spacing:.12em}
.calendar-card__days span{
  display:grid;
  place-items:center;
  aspect-ratio:1;
  border-radius:50%;
  font:400 18px "Cormorant Garamond",serif;
}
.special{border:1px solid #fff;position:relative}
.special::after{content:"♡";position:absolute;font-size:34px;color:rgba(255,255,255,.8)}
.locations{background:var(--paper)}
.locations__grid{display:grid;grid-template-columns:1fr 1fr;gap:50px}
.location-card{text-align:center;padding:35px;border:1px solid var(--line)}
.location-card__icon{font-size:36px;color:var(--olive)}
.location-card h3{margin:12px 0;font-size:35px}
.timeline{background:var(--paper)}
.timeline__list{position:relative;margin:42px auto;width:min(560px,100%)}
.timeline__list::before{
  content:"";
  position:absolute;
  left:50%;
  top:0;
  bottom:0;
  width:1px;
  background:var(--line);
}
.timeline__item{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:35px;
  padding:18px 0;
}
.timeline__item span{text-align:right;font-family:"Cormorant Garamond",serif;font-size:20px}
.timeline__item strong{text-align:left;font-weight:400}
.timeline__photo{width:min(560px,100%);margin:55px auto 0;height:330px;object-fit:cover}
.dress{background:var(--paper)}
.dress__lead{font:500 28px "Cormorant Garamond",serif}
.dress__note{font-style:italic}
.gift{background:var(--olive);color:#fff}
.gift__icon{font-size:40px}
.rsvp{background:var(--olive-dark);color:#fff}
.rsvp__grid{display:flex;justify-content:space-between;align-items:center;gap:40px}
.notes{background:var(--paper)}
.notes__grid{display:grid;grid-template-columns:1fr 1fr;gap:35px}
.note-card{text-align:center;padding:30px;border:1px solid var(--line)}
.note-card h3{font-size:30px}
.notes__photo{grid-column:1/-1;width:min(520px,100%);margin:auto;height:430px;object-fit:cover}
.music-button{
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:99999;
  width:72px;
  height:72px;
  border:0;
  border-radius:50%;
  background:var(--olive-dark);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:30px;
  cursor:pointer;
  box-shadow:0 12px 30px rgba(0,0,0,.28);
}
.music-button.is-playing{animation:pulse 1.7s infinite}
@keyframes pulse{50%{transform:scale(1.08)}}
.reveal{opacity:0;transform:translateY(22px);transition:.7s ease}
.reveal.visible{opacity:1;transform:none}
@media(max-width:850px){
  .intro__grid,.locations__grid,.notes__grid{grid-template-columns:1fr}
  .rsvp__grid{flex-direction:column;align-items:flex-start}
}
@media(max-width:560px){
  .section{padding:70px 0}
  .hero{min-height:700px}
  .script-title{font-size:68px}
  .intro__photo{height:500px}
  .date-block{gap:12px}
  .date-block strong{font-size:58px}
  .countdown strong{font-size:29px}
  .countdown span{font-size:8px}
  .timeline__item{gap:18px}
  .music-button{width:64px;height:64px;font-size:27px}
}
