: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}
}

/* Movimiento ambiental: hojas reales de bosque */
.falling-leaves{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:20;
  overflow:hidden;
}
.falling-leaf{
  position:absolute;
  top:-18vh;
  height:auto;
  object-fit:contain;
  filter:drop-shadow(0 5px 5px rgba(35,45,25,.14));
  animation:leafFall linear infinite;
  will-change:transform;
  transform-origin:50% 50%;
}
@keyframes leafFall{
  0%{transform:translate3d(0,-18vh,0) rotate(var(--tilt)) rotateZ(0deg)}
  25%{transform:translate3d(calc(var(--drift) * .38),22vh,0) rotate(calc(var(--tilt) + 18deg)) rotateZ(calc(var(--spin) * .28))}
  50%{transform:translate3d(calc(var(--drift) * -.18),52vh,0) rotate(calc(var(--tilt) - 12deg)) rotateZ(calc(var(--spin) * .53))}
  75%{transform:translate3d(calc(var(--drift) * .72),82vh,0) rotate(calc(var(--tilt) + 24deg)) rotateZ(calc(var(--spin) * .78))}
  100%{transform:translate3d(var(--drift),118vh,0) rotate(var(--tilt)) rotateZ(var(--spin))}
}
.hero__image{animation:heroBreath 14s ease-in-out infinite alternate}
@keyframes heroBreath{from{transform:scale(1.01)}to{transform:scale(1.07)}}
.intro__photo,.timeline__photo,.notes__photo{transition:transform .9s cubic-bezier(.2,.7,.2,1),box-shadow .9s ease}
.intro__photo.visible,.timeline__photo.visible,.notes__photo.visible{animation:photoFloat 7s ease-in-out infinite alternate}
@keyframes photoFloat{from{transform:translateY(0) scale(1)}to{transform:translateY(-7px) scale(1.012)}}
.location-card,.note-card,.calendar-card{transition:transform .45s ease,box-shadow .45s ease}
.location-card:hover,.note-card:hover,.calendar-card:hover{transform:translateY(-6px);box-shadow:0 18px 38px rgba(49,58,37,.10)}
.reveal{transform:translateY(34px) scale(.985);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.75,.25,1)}
.reveal.visible{opacity:1;transform:none}
@media(max-width:560px){.falling-leaf{filter:drop-shadow(0 3px 3px rgba(35,45,25,.12))}}
@media(prefers-reduced-motion:reduce){.falling-leaves{display:none}.hero__image,.intro__photo.visible,.timeline__photo.visible,.notes__photo.visible{animation:none}}


/* Galería de fotografías */
.gallery{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 8% 18%,rgba(119,128,86,.10),transparent 32%),
    radial-gradient(circle at 92% 76%,rgba(115,82,52,.08),transparent 30%),
    var(--paper);
}
.gallery__heading{text-align:center;max-width:620px;margin:0 auto 48px}
.gallery__heading h2{margin-bottom:10px}
.gallery__heading p:last-child{margin:0 auto;color:var(--text-soft)}
.gallery__grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  align-items:center;
  gap:22px;
  width:min(900px,100%);
  margin:0 auto;
  padding:15px 0 30px;
}
.gallery__item{
  position:relative;
  appearance:none;
  border:0;
  padding:9px 9px 32px;
  background:#f8f4ea;
  box-shadow:0 18px 44px rgba(48,48,34,.16);
  cursor:pointer;
  overflow:hidden;
  transition:transform .55s cubic-bezier(.2,.75,.25,1),box-shadow .55s ease;
}
.gallery__item::after{
  content:"♡";
  position:absolute;
  left:50%;
  bottom:5px;
  transform:translateX(-50%);
  color:var(--olive);
  font:400 20px "Cormorant Garamond",serif;
}
.gallery__item img{
  display:block;
  width:100%;
  height:100%;
  min-height:330px;
  object-fit:cover;
  transition:transform .8s ease,filter .8s ease;
}
.gallery__item--one{grid-column:1/6;transform:rotate(-3deg) translateY(22px)}
.gallery__item--two{grid-column:5/9;z-index:2;transform:rotate(1.5deg) translateY(-12px)}
.gallery__item--three{grid-column:8/13;transform:rotate(3deg) translateY(28px)}
.gallery__item:hover{z-index:4;box-shadow:0 26px 54px rgba(48,48,34,.22)}
.gallery__item--one:hover{transform:rotate(-1deg) translateY(5px) scale(1.025)}
.gallery__item--two:hover{transform:rotate(0deg) translateY(-24px) scale(1.025)}
.gallery__item--three:hover{transform:rotate(1deg) translateY(8px) scale(1.025)}
.gallery__item:hover img{transform:scale(1.035)}
.gallery__item.visible{animation:galleryFloat 7s ease-in-out infinite alternate}
.gallery__item--two.visible{animation-delay:-2s}
.gallery__item--three.visible{animation-delay:-4s}
@keyframes galleryFloat{
  from{margin-top:0}
  to{margin-top:-8px}
}
.gallery-lightbox{
  position:fixed;
  inset:0;
  z-index:100000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:28px;
  background:rgba(20,24,17,.88);
  opacity:0;
  visibility:hidden;
  transition:opacity .3s ease,visibility .3s ease;
  backdrop-filter:blur(7px);
}
.gallery-lightbox.open{opacity:1;visibility:visible}
.gallery-lightbox img{
  max-width:min(920px,92vw);
  max-height:86vh;
  object-fit:contain;
  box-shadow:0 22px 70px rgba(0,0,0,.38);
  transform:scale(.94);
  transition:transform .35s ease;
}
.gallery-lightbox.open img{transform:scale(1)}
.gallery-lightbox__close{
  position:absolute;
  top:20px;
  right:24px;
  width:48px;
  height:48px;
  border:1px solid rgba(255,255,255,.5);
  border-radius:50%;
  background:rgba(255,255,255,.08);
  color:#fff;
  font-size:34px;
  line-height:1;
  cursor:pointer;
}
@media(max-width:700px){
  .gallery__heading{margin-bottom:30px}
  .gallery__grid{display:flex;flex-direction:column;gap:26px;padding-inline:18px}
  .gallery__item{width:min(370px,92%);padding:8px 8px 28px}
  .gallery__item img{min-height:0;height:430px}
  .gallery__item--one{align-self:flex-start;transform:rotate(-2.5deg)}
  .gallery__item--two{align-self:flex-end;transform:rotate(2deg)}
  .gallery__item--three{align-self:flex-start;transform:rotate(-1.5deg)}
  .gallery__item--one:hover,.gallery__item--two:hover,.gallery__item--three:hover{transform:scale(1.015)}
}
@media(prefers-reduced-motion:reduce){.gallery__item.visible{animation:none}}
