:root{
  --paper:#f3eadf;
  --gold:#a77c3e;
  --max:430px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--paper)}
body{margin:0;background:#e8dfd4;color:var(--gold);font-family:Georgia,"Times New Roman",serif}
img{display:block;max-width:100%}
.site{width:min(100%,var(--max));margin:0 auto;background:var(--paper);overflow:hidden;box-shadow:0 0 34px rgba(70,52,33,.14)}
.paper-section,.layered-section{background:var(--paper)}
.section-no-gap{margin:0;padding:0}
.cover{position:relative;height:760px;overflow:hidden;background:var(--paper)}
.cover-photo{width:100%;height:100%;object-fit:cover;object-position:64% center}
.cover-copy{position:absolute;z-index:2;top:6.6%;left:3.5%;width:93%}
.journey{position:relative;overflow:hidden}
.journey-bg{width:100%;height:auto}
.journey-layer{position:absolute;inset:0}
.journey-copy{position:absolute;top:1.6%;left:7%;width:86%}
.countdown{position:absolute;top:11.8%;left:10%;right:10%;display:grid;grid-template-columns:repeat(4,1fr);text-align:center;color:var(--gold)}
.countdown div{display:flex;flex-direction:column;align-items:center}
.countdown strong{font-size:30px;font-weight:400;line-height:1}
.countdown span{font-size:7px;letter-spacing:.9px;margin-top:6px}
.music-button{position:absolute;top:30.2%;left:50%;width:0;height:0;padding:0;border:0;border-top:12px solid transparent;border-bottom:12px solid transparent;border-left:21px solid var(--gold);background:transparent;transform:translate(-50%,-50%);cursor:pointer;filter:drop-shadow(0 2px 2px rgba(70,45,20,.16))}
.music-button.playing{width:24px;height:26px;border:0;background:linear-gradient(90deg,var(--gold) 0 36%,transparent 36% 64%,var(--gold) 64% 100%)}
.layered-section{position:relative;overflow:hidden}
.layer-bg{width:100%;height:auto}
.layer-content{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.video-section{padding:24px 0 34px}
.video-frame{width:100%;background:#000;overflow:hidden}
.video-frame video{display:block;width:100%;height:auto;background:#000}
.parents-copy{position:absolute;top:12.5%;left:8%;width:84%}
.bird{position:absolute;width:16%;height:auto}
.bird-one{right:6%;top:47%}
.bird-two{left:7%;bottom:11%}
.panorama{height:760px;overflow:hidden;background:var(--paper)}
.panorama-photo{width:100%;height:100%;object-fit:cover;object-position:50% center}
.padrinos-copy{position:absolute;top:21%;left:9%;width:82%}
.locations{padding:28px 0 12px}
.locations-title{width:72%;margin:0 auto 24px}
.location-card{position:relative;width:82%;margin:0 auto 44px;min-height:1px}
.location-base{width:100%;height:auto}
.location-copy{position:absolute;left:6%;right:6%;top:49%;width:88%;height:auto}
.location-button{position:absolute;left:24%;right:24%;bottom:6.4%;display:block}
.location-button img{width:100%;height:auto}
.location-card:hover{transform:translateY(-4px)}
.location-card{transition:transform .25s ease,filter .25s ease}
.location-card:hover{filter:drop-shadow(0 8px 12px rgba(76,56,34,.12))}
.location-button:hover{filter:brightness(1.08)}
.end-marker{text-align:center;padding:28px 20px 54px;font-size:13px;letter-spacing:.8px}
.reveal{opacity:0;will-change:opacity,transform;transition:opacity .9s ease,transform .9s cubic-bezier(.22,.61,.36,1)}
.reveal.visible{opacity:1;transform:none}
.fade{transform:translateY(10px)}
.rise{transform:translateY(24px)}
.slide-left{transform:translateX(-34px)}
.slide-right{transform:translateX(34px)}
.drift-left{transform:translateX(18px) translateY(6px)}
.drift-right{transform:translateX(-18px) translateY(6px)}
.pop{transform:scale(.95)}
.delay-1{transition-delay:.15s}
.delay-2{transition-delay:.35s}
@media(max-width:390px){
  .cover,.panorama{height:700px}
  .countdown strong{font-size:26px}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important;transition:none!important}
}

/* Ajustes Prueba 3 */
.music-button{
  top:38.2%;
  left:50%;
  transform:translate(-50%,-50%);
}
.music-button.visible,
.music-button.playing.visible{
  transform:translate(-50%,-50%);
}
.parents{
  aspect-ratio:1236 / 2048;
  height:auto;
}
.parents > .layer-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
}
.parents-copy{
  top:18%;
  left:8%;
  width:84%;
}
.bird-one{
  left:5%;
  right:auto;
  top:7%;
  width:15%;
}
.bird-two{
  right:5%;
  left:auto;
  bottom:7%;
  width:15%;
}

/* Ajustes Prueba 4 */
/* Play colocado entre el contador y la frase "Dale play" */
.music-button{
  top:22.8%;
  left:50%;
  transform:translate(-50%,-50%);
}
.music-button.visible,
.music-button.playing.visible{
  transform:translate(-50%,-50%);
}

/* Padres: proporción y composición exactas de la referencia */
.parents{
  aspect-ratio:1236 / 2048;
  height:auto;
  position:relative;
}
.parents > .layer-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
}
.parents-copy{
  position:absolute;
  top:26.5%;
  left:1.5%;
  width:97%;
  height:auto;
}
.bird-one{
  left:17%;
  right:auto;
  top:21.5%;
  bottom:auto;
  width:18%;
}
.bird-two{
  right:10%;
  left:auto;
  top:64.5%;
  bottom:auto;
  width:20%;
}

/* Padrinos: texto contenido dentro de la tarjeta */
.padrinos-copy{
  top:23.5%;
  left:16%;
  width:68%;
  height:auto;
}


/* Ajustes Prueba 5 */
/* Play centrado en el espacio libre entre la cuenta regresiva y “Dale play…” */
.music-button{
  top:27.8%;
  left:50%;
  transform:translate(-50%,-50%);
}
.music-button.visible,
.music-button.playing.visible{
  transform:translate(-50%,-50%);
}

/* Colibríes corregidos: especies intercambiadas y fuera del área del texto */
.bird-one{
  left:10%;
  right:auto;
  top:18.2%;
  bottom:auto;
  width:15%;
}
.bird-two{
  right:7%;
  left:auto;
  top:66.5%;
  bottom:auto;
  width:16%;
}

/* Ajustes finales Fase 1 · Prueba 6 */
/* La capa de contenido mide 1376 px y el fondo 1270 px de ancho.
   Se conserva su proporción original y se centra para que los textos
   coincidan con los espacios libres entre las líneas del relieve. */
.nosotros .layer-content{
  inset:0 auto 0 50%;
  width:108.3465%;
  height:100%;
  max-width:none;
  object-fit:fill;
  transform:translateX(-50%) translateY(24px);
}
.nosotros .layer-content.visible{
  transform:translateX(-50%);
}

/* El video queda unido visualmente con la sección anterior y posterior. */
.video-section{
  padding:0;
  margin:0;
  line-height:0;
}
.video-frame{
  margin:0;
  width:100%;
}
.video-frame video{
  margin:0;
  vertical-align:top;
}


/* Fase 2 · Prueba 1 */
.itinerary{
  position:relative;
  width:100%;
  aspect-ratio:629 / 2048;
  overflow:hidden;
}
.itinerary-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:fill;
}
.it-item{
  position:absolute;
  height:auto;
  max-width:none;
}
.itin-ceremony-art{left:5%;top:13.2%;width:47%}
.itin-ceremony-copy{left:4%;top:25.2%;width:39%}
.itin-cocktail-art{right:4%;top:26.2%;width:43%}
.itin-cocktail-copy{right:3%;top:36.5%;width:37%}
.itin-civil-art{left:7%;top:39.5%;width:40%}
.itin-civil-copy{left:5%;top:48.6%;width:37%}
.itin-dinner-art{right:5%;top:50.5%;width:42%}
.itin-dinner-copy{right:5%;top:60.7%;width:31%}
.itin-vals-art{left:4%;top:62.5%;width:47%}
.itin-vals-copy{left:4%;top:75.2%;width:31%}
.itin-end-art{right:4%;top:75.4%;width:44%}
.itin-end-copy{right:2%;top:85.3%;width:39%}

.dress-code{
  position:relative;
  min-height:760px;
  padding:46px 18px 40px;
  overflow:hidden;
}
.dress-title{width:94%;margin:0 auto 18px}
.dress-elements{width:94%;margin:0 auto}
.dress-note{width:94%;margin:20px auto 0}

.gift{
  position:relative;
  aspect-ratio:1034 / 1346;
  width:100%;
  overflow:hidden;
}
.gift-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
}
.gift-copy{
  position:absolute;
  left:6.5%;
  top:6%;
  width:87%;
  height:auto;
}
.gift-link{
  position:absolute;
  left:34%;
  top:33%;
  width:32%;
  height:8%;
  border-radius:999px;
  z-index:4;
}
.gift-link:hover{background:rgba(167,124,62,.06)}

.lodging-intro{padding:42px 0 58px}
.lodging-title{width:91%;margin:0 auto}

@media(max-width:390px){
  .dress-code{min-height:690px;padding-top:38px}
}


/* Fase 2 · Prueba 2 — Hospedaje y galería */
.lodging{padding:44px 0 54px;overflow:hidden}
.lodging-title{width:91%;margin:0 auto 30px}
.hotel-card{position:relative;width:88%;max-width:460px;margin:0 auto 54px;aspect-ratio:602 / 1305;filter:drop-shadow(0 10px 18px rgba(71,52,32,.08));transition:transform .25s ease,filter .25s ease}
.hotel-card:hover{transform:translateY(-4px);filter:drop-shadow(0 14px 22px rgba(71,52,32,.13))}
.hotel-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.hotel-title{position:absolute;left:12%;width:76%;height:auto;z-index:2}
.hotel-title-city{top:49.5%}
.hotel-title-holiday{top:50.8%;left:18%;width:64%}
.hotel-title-armida{top:50.8%;left:25%;width:50%}
.hotel-button{position:absolute;left:24%;width:52%;z-index:3;display:block}
.hotel-button img{display:block;width:100%;height:auto}
.hotel-map{top:61.5%}
.hotel-book{top:69.3%}
.hotel-button:hover{filter:brightness(1.08)}

.gallery-section{position:relative;padding:52px 0 66px;overflow:hidden;background-image:url('assets/gallery-paper-bg.png');background-size:cover;background-position:center}
.gallery-heading{text-align:center;color:#a9854b;margin:0 auto 30px;line-height:1}
.gallery-heading span{display:block;font-family:Georgia,serif;font-size:15px;letter-spacing:2.4px;text-transform:uppercase;margin-bottom:10px}
.gallery-heading strong{display:block;font-family:Georgia,serif;font-style:italic;font-weight:400;font-size:46px}
.gallery-viewport{width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 7vw 10px;touch-action:pan-x}
.gallery-viewport::-webkit-scrollbar{display:none}
.gallery-track{display:flex;gap:14px;width:max-content;align-items:center}
.gallery-item{appearance:none;border:0;padding:0;background:transparent;flex:0 0 76vw;max-width:360px;height:500px;scroll-snap-align:center;border-radius:26px;overflow:hidden;box-shadow:0 12px 28px rgba(65,48,31,.14);cursor:pointer;transition:transform .3s ease,box-shadow .3s ease}
.gallery-item:nth-child(3n+1){height:470px}
.gallery-item:nth-child(3n+2){height:520px}
.gallery-item:hover{transform:translateY(-5px);box-shadow:0 17px 34px rgba(65,48,31,.19)}
.gallery-item img{width:100%;height:100%;object-fit:cover;display:block}
.gallery-dots{display:flex;justify-content:center;gap:7px;margin-top:22px}
.gallery-dots span{width:6px;height:6px;border-radius:50%;background:rgba(169,133,75,.28);transition:transform .25s ease,background .25s ease}
.gallery-dots span.active{background:#a9854b;transform:scale(1.5)}

.lightbox{position:fixed;inset:0;z-index:9999;background:rgba(25,21,17,.94);display:none;align-items:center;justify-content:center;padding:64px 18px 28px}
.lightbox.open{display:flex}
.lightbox img{max-width:min(94vw,1050px);max-height:86vh;object-fit:contain;border-radius:10px;box-shadow:0 18px 65px rgba(0,0,0,.45)}
.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;border:0;background:rgba(255,255,255,.12);color:white;cursor:pointer;display:grid;place-items:center;border-radius:999px;backdrop-filter:blur(8px)}
.lightbox-close{right:18px;top:18px;width:44px;height:44px;font-size:32px}
.lightbox-prev,.lightbox-next{top:50%;transform:translateY(-50%);width:48px;height:48px;font-size:38px}
.lightbox-prev{left:14px}.lightbox-next{right:14px}
body.lightbox-open{overflow:hidden}

@media(max-width:390px){
 .hotel-card{width:91%;margin-bottom:46px}
 .gallery-item{flex-basis:80vw;height:450px}
 .gallery-item:nth-child(3n+1){height:425px}
 .gallery-item:nth-child(3n+2){height:475px}
 .gallery-heading strong{font-size:41px}
}


/* Fase 2 · Prueba 4 — correcciones puntuales */
/* Itinerario: ilustraciones más pequeñas y separadas de los textos */
.itin-ceremony-art{left:9%;top:13.8%;width:36%}
.itin-ceremony-copy{left:6%;top:24.0%;width:35%}
.itin-cocktail-art{right:8%;top:27.4%;width:34%}
.itin-cocktail-copy{right:5%;top:36.8%;width:34%}
.itin-civil-art{left:10%;top:40.4%;width:31%}
.itin-civil-copy{left:6%;top:48.7%;width:34%}
.itin-dinner-art{right:9%;top:51.2%;width:33%}
.itin-dinner-copy{right:7%;top:60.7%;width:29%}
.itin-vals-art{left:8%;top:63.3%;width:36%}
.itin-vals-copy{left:6%;top:74.8%;width:29%}
.itin-end-art{right:8%;top:76.4%;width:35%}
.itin-end-copy{right:4%;top:85.0%;width:35%}

/* Regalo: contenido completo dentro del marco, sin salirse */
.gift-copy{
  left:10%;
  top:7.5%;
  width:80%;
  max-height:85%;
  object-fit:contain;
}
.gift-link{left:35%;top:32.5%;width:30%;height:7.5%}

/* Hospedajes: títulos centrados en el eje de cada tarjeta */
.hotel-title{
  left:50% !important;
  transform:translateX(-50%);
  object-fit:contain;
}
.hotel-title-city{top:49.5%;width:76%}
.hotel-title-holiday{top:50.8%;width:64%}
.hotel-title-armida{top:50.8%;width:50%}

/* Prueba 6 reparada: recuperar contenido completo y usar composición exacta */
.exact-section{padding:0;margin:0;overflow:hidden}
.exact-image{display:block;width:100%;height:auto;margin:0 auto}
.itinerary-exact .exact-image{width:100%}
.dress-exact .exact-image{width:100%}
.gift-exact .exact-image{width:100%}
.exact-linked-image{position:relative;width:100%}
.gift-exact-link{position:absolute;left:37%;top:43%;width:27%;height:7%;border-radius:999px;z-index:5}

/* Colibríes con flotación continua, conservando su posición aprobada */
.bird-one.visible{animation:birdFloatOne 4.8s ease-in-out infinite}
.bird-two.visible{animation:birdFloatTwo 5.4s ease-in-out .65s infinite}
@keyframes birdFloatOne{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-10px) rotate(1.5deg)}}
@keyframes birdFloatTwo{0%,100%{transform:translateY(0) rotate(1deg)}50%{transform:translateY(9px) rotate(-1.5deg)}}

/* Hospedajes exactamente compuestos como en el diseño */
.lodging{padding:44px 0 54px;overflow:hidden}
.lodging-title{display:block;width:91%;margin:0 auto 28px}
.hotel-exact-card{position:relative;width:88%;max-width:460px;margin:0 auto 48px}
.hotel-exact-card img{display:block;width:100%;height:auto}
.hotel-exact-map,.hotel-exact-book{position:absolute;left:26%;width:48%;height:7%;z-index:4;border-radius:999px}
.hotel-exact-map{top:65%}
.hotel-exact-book{top:75%}
@media(max-width:390px){.hotel-exact-card{width:91%;margin-bottom:42px}}

/* Fase 2 · Prueba 7 REAL — bloques nuevos desde Itinerario */
.itinerary{aspect-ratio:310 / 761;background:#f3ede4}
.itinerary-bg{object-fit:contain}
.itin-ceremony-art{left:7%;top:14.1%;width:37%}
.itin-ceremony-copy{left:7%;top:24.6%;width:34%}
.itin-cocktail-art{right:7%;top:28.1%;width:34%}
.itin-cocktail-copy{right:5%;top:37.0%;width:35%}
.itin-civil-art{left:8%;top:41.6%;width:34%}
.itin-civil-copy{left:6%;top:49.2%;width:35%}
.itin-dinner-art{right:8%;top:53.0%;width:33%}
.itin-dinner-copy{right:7%;top:61.5%;width:29%}
.itin-vals-art{left:7%;top:64.2%;width:36%}
.itin-vals-copy{left:7%;top:75.4%;width:28%}
.itin-end-art{right:7%;top:78.0%;width:35%}
.itin-end-copy{right:5%;top:86.0%;width:35%}

.dress-exact{background:#f3ede4;padding:0}
.dress-exact .exact-image{width:100%;height:auto}

.gift{aspect-ratio:1034 / 1346;background:#f3ede4}
.gift-bg{object-fit:contain}
.gift-copy{left:10%;top:7.5%;width:80%;max-height:85%;object-fit:contain}
.gift-link{left:35%;top:32.5%;width:30%;height:7.5%}

.lodging{background:#f3ede4;padding-top:42px}
.lodging-title{width:88%;max-width:460px;margin:0 auto 24px;object-fit:contain}
.hotel-card{width:88%;max-width:460px;margin:0 auto 44px}
.hotel-title{left:50%!important;transform:translateX(-50%)!important}
.hotel-title-city{top:50.0%;width:76%}
.hotel-title-holiday{top:50.6%;width:68%}
.hotel-title-armida{top:50.6%;width:53%}
.hotel-map{top:62.5%}
.hotel-book{top:70.5%}
@media(max-width:390px){.hotel-card{width:91%;margin-bottom:40px}.lodging-title{width:91%}}


/* Prueba 7 — Itinerario agrupado según PDF aprobado */
.itinerary-grouped{position:relative;width:100%;aspect-ratio:629/2048;overflow:hidden;background:var(--paper);}
.itinerary-grouped .itinerary-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;}
.itinerary-grouped .it-group{position:absolute;height:auto;max-width:none;z-index:2;object-fit:contain;}
/* izquierda: termina con holgura antes de la línea central */
.itinerary-grouped .it-ceremony{left:5.0%;top:12.8%;width:43.0%;}
.itinerary-grouped .it-civil{left:7.5%;top:39.8%;width:34.0%;}
.itinerary-grouped .it-vals{left:5.0%;top:62.5%;width:40.0%;}
/* derecha: inicia después de la línea, sin invadirla */
.itinerary-grouped .it-cocktail{left:58.0%;top:26.1%;width:37.0%;}
.itinerary-grouped .it-dinner{left:59.0%;top:49.7%;width:34.0%;}
.itinerary-grouped .it-end{left:57.5%;top:75.3%;width:38.0%;}
/* evita que reglas antiguas de piezas separadas afecten a los grupos */
.itinerary-grouped .it-group.reveal{will-change:opacity,transform;}

/* Fase 2 · Prueba 9 — ajuste fino del Itinerario según PDF final aprobado */
.itinerary-grouped .it-ceremony{left:5.0%;top:14.0%;width:43.0%;}
.itinerary-grouped .it-cocktail{left:58.0%;top:27.5%;width:37.0%;}
.itinerary-grouped .it-civil{left:7.5%;top:41.1%;width:34.0%;}
.itinerary-grouped .it-dinner{left:59.0%;top:51.2%;width:34.0%;}
.itinerary-grouped .it-vals{left:5.0%;top:64.0%;width:40.0%;}
.itinerary-grouped .it-end{left:57.5%;top:76.8%;width:38.0%;}

/* Fase 2 · Prueba 10 — itinerario sustituido por PNG completo suministrado */
.itinerary-png-final{margin:0;padding:0;background:var(--paper);overflow:hidden}
.itinerary-png-final .exact-image{display:block;width:100%;height:auto;margin:0 auto}

/* Fase 2 · Prueba 11 — itinerario con título + entrada elegante y sutil */
.itinerary-png-final .exact-image.reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity 1.15s ease, transform 1.15s cubic-bezier(.22,.61,.36,1);
}
.itinerary-png-final .exact-image.reveal.visible{
  opacity:1;
  transform:translateY(0);
}
@media (prefers-reduced-motion: reduce){
  .itinerary-png-final .exact-image.reveal{
    opacity:1;
    transform:none;
    transition:none;
  }
}

/* Fase 2 · Prueba 13 — reducir beige entre Recepción e Itinerario según PDF de referencia */
.locations .location-card:last-child{margin-bottom:8px}
.locations{padding-bottom:0}
.itinerary-png-final{margin-top:0}
\n\n/* Fase 2 · Prueba 14 — Sugerencia de regalo según PDF de referencia */\n.gift{\n  position:relative;\n  width:100%;\n  aspect-ratio:1325 / 1747;\n  overflow:hidden;\n  background:#f3ede4;\n}\n.gift-bg{\n  position:absolute;\n  inset:0;\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  z-index:1;\n}\n.gift-copy{\n  position:absolute;\n  left:50%;\n  top:11.7%;\n  width:60%;\n  height:auto;\n  max-height:none;\n  object-fit:contain;\n  transform:translate(-50%,22px);\n  z-index:2;\n}\n.gift-copy.reveal.visible{\n  transform:translate(-50%,0);\n}\n.gift-copy.gift-rise{\n  transition:opacity 1.05s ease, transform 1.15s cubic-bezier(.22,.61,.36,1);\n}\n.gift-link{\n  position:absolute;\n  left:38%;\n  top:33.2%;\n  width:24%;\n  height:5.3%;\n  border-radius:999px;\n  z-index:5;\n}\n@media(max-width:390px){\n  .gift-copy{width:61%;top:11.5%;}\n  .gift-link{left:37.5%;width:25%;}\n}\n
/* Fase 2 · Prueba 15 — Sugerencia de regalo como imagen completa + enlace exacto del PDF */
.gift-prueba15{
  position:relative;
  width:100%;
  aspect-ratio:1325 / 1747;
  overflow:hidden;
  background:#f3ede4;
  padding:0;
  margin:0;
}
.gift-prueba15 .gift-full{
  display:block;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
}
.gift-prueba15 .gift-link-prueba15{
  position:absolute;
  left:31.8%;
  top:38.8%;
  width:18.3%;
  height:5.0%;
  z-index:6;
  border-radius:999px;
  display:block;
}
.gift-prueba15 .gift-link-prueba15:hover{background:rgba(167,124,62,.05)}

/* Ajuste final: área clicable exactamente sobre el botón VER DETALLES de la imagen */
.gift-prueba15 .gift-link-prueba15{
  left:39.3%;
  top:47.7%;
  width:21.4%;
  height:5.4%;
  background:transparent !important;
  cursor:pointer;
}
.gift-prueba15 .gift-link-prueba15:hover,
.gift-prueba15 .gift-link-prueba15:focus,
.gift-prueba15 .gift-link-prueba15:active{
  background:transparent !important;
  outline:none;
}


/* Fase 2 · Prueba 17 — Recomendación de hospedaje según PDF final */
.lodging{
  padding:34px 0 52px;
  overflow:hidden;
  background:#f3ede4;
}
.lodging-heading-new{
  display:block;
  width:88%;
  max-width:460px;
  height:auto;
  margin:0 auto 24px;
  object-fit:contain;
}
.hotel-card-new{
  position:relative;
  width:88%;
  max-width:460px;
  margin:0 auto 42px;
}
.hotel-card-new-base{
  display:block;
  width:100%;
  height:auto;
}
.hotel-card-new-button{
  position:absolute;
  left:27%;
  width:46%;
  z-index:5;
  display:block;
  border-radius:999px;
}
.hotel-card-new-button img{
  display:block;
  width:100%;
  height:auto;
}
.hotel-card-new-map{top:63.5%;}
.hotel-card-new-book{top:71.8%;}
.hotel-card-new-button:hover{filter:brightness(1.06);transform:translateY(-1px)}
@media(max-width:390px){
  .lodging-heading-new,.hotel-card-new{width:91%;}
  .lodging-heading-new{margin-bottom:20px;}
  .hotel-card-new{margin-bottom:38px;}
}


/* Fase 2 · Prueba 19 — Álbum digital según PDF final */
.album-digital{padding:0;overflow:hidden;background:#f3ede4;}
.album-cover{display:block;width:100%;height:auto;margin:0 auto;}
.album-info-wrap{position:relative;width:100%;margin:0 auto;}
.album-info{display:block;width:100%;height:auto;}
.album-upload-link{position:absolute;left:39%;top:76.5%;width:22%;display:block;z-index:5;border-radius:999px;}
.album-upload-link img{display:block;width:100%;height:auto;}
.album-upload-link:hover{filter:brightness(1.06);transform:translateY(-1px)}
@media(max-width:390px){.album-digital{padding-bottom:0}.album-upload-link{left:37%;width:26%;}}


/* Prueba 22 — continuación después de Álbum Digital según PDF de referencia */
.post-album-block{padding:0;margin:0;background:#f3ede4;overflow:hidden;}
.post-album-block .full-block{display:block;width:100%;height:auto;margin:0 auto;}
.confirmation-new{padding:42px 0 48px;background:#f3ede4;overflow:hidden;}
.confirmation-heading{display:block;width:88%;max-width:520px;height:auto;margin:0 auto 26px;}
.confirmation-form{display:block;width:78%;max-width:430px;height:auto;margin:0 auto;}
.final-photo-section{position:relative;width:100%;overflow:hidden;background:#f3ede4;}
.final-photo-section .final-photo{display:block;width:100%;height:auto;margin:0;}
.final-photo-section .final-logo{position:absolute;left:50%;bottom:5.8%;width:72%;max-width:none;height:auto;transform:translate(-50%,18px);z-index:3;}
.final-photo-section .final-logo.reveal.visible{transform:translate(-50%,0);}
@media(max-width:390px){
  .confirmation-new{padding:34px 0 42px;}
  .confirmation-heading{width:91%;margin-bottom:20px;}
  .confirmation-form{width:84%;}
  .final-photo-section .final-logo{width:76%;bottom:5%;}
}


/* Etapa 1B · Confirmación HTML compacta y dinámica */
.confirmation-form-wrap{
  width:78%;
  max-width:430px;
  margin:0 auto;
}
.rsvp-form{
  width:100%;
  border:2px solid #ad8d58;
  border-radius:14px;
  background:#f7f0e7;
  padding:26px 24px 18px;
  color:#b18b53;
  font-family:Georgia,"Times New Roman",serif;
}
.rsvp-form h2{
  margin:0 0 28px;
  font-size:28px;
  line-height:1.3;
  font-weight:400;
  color:#aa8450;
}
.rsvp-field{margin:0 0 24px;}
.rsvp-field>label,
.rsvp-field>legend,
.field-label{
  display:block;
  margin:0 0 10px;
  font-size:17px;
  line-height:1.25;
  font-weight:400;
}
.rsvp-field>input,
.rsvp-field>select,
.rsvp-field>textarea,
.companion-field>input{
  width:100%;
  border:1px solid #c7a976;
  border-radius:8px;
  background:rgba(255,255,255,.12);
  color:#7d6544;
  font:inherit;
  font-size:16px;
  padding:10px;
  outline:none;
}
.rsvp-field>input,.rsvp-field>select,.companion-field>input{min-height:44px;}
.rsvp-field>textarea{min-height:96px;resize:vertical;}
.rsvp-field>input:focus,
.rsvp-field>select:focus,
.rsvp-field>textarea:focus,
.companion-field>input:focus{box-shadow:0 0 0 2px rgba(167,124,62,.16);}
.rsvp-fieldset,
.attendance-fieldset{
  border:0;
  padding:0;
  min-width:0;
}
.attendance-fieldset{margin:0 0 24px;}
.choice{
  position:relative;
  display:block;
  margin:0 0 9px;
  cursor:pointer;
}
.choice input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.choice span{
  display:block;
  border:1px solid transparent;
  border-radius:8px;
  background:#eee4d7;
  padding:12px;
  font-size:16px;
  line-height:1.34;
  transition:border-color .2s ease,background .2s ease,transform .2s ease;
}
.choice:hover span{transform:translateY(-1px);}
.choice input:checked+span{
  border-color:#ad8d58;
  background:#e5d6c2;
  box-shadow:inset 0 0 0 1px rgba(173,141,88,.18);
}
.choice input:focus-visible+span{outline:2px solid #ad8d58;outline-offset:2px;}
.attending-details[hidden],.companions-section[hidden]{display:none;}
.rsvp-helper{
  margin:-4px 0 9px;
  color:#a99472;
  font-size:12px;
  line-height:1.35;
}
.companion-heading{margin-bottom:12px;}
.companion-fields{display:grid;gap:13px;margin-bottom:24px;}
.companion-field{margin:0;}
.companion-field>label{font-size:14px;margin-bottom:7px;color:#a98a5d;}
.message-field{margin-top:5px;}
.rsvp-submit{
  width:100%;
  min-height:50px;
  margin-top:4px;
  border:0;
  border-radius:999px;
  background:#b08d57;
  color:#fffaf4;
  font:inherit;
  font-size:18px;
  cursor:pointer;
  transition:filter .2s ease,transform .2s ease;
}
.rsvp-submit:hover{filter:brightness(1.04);transform:translateY(-1px);}
.rsvp-privacy{
  margin:11px 12px 0;
  text-align:center;
  color:#bea77f;
  font-size:10px;
  line-height:1.35;
}
.rsvp-error{
  min-height:18px;
  margin:0 0 8px;
  color:#8b573f;
  font-size:12px;
  line-height:1.35;
}
.rsvp-success{
  width:100%;
  border:2px solid #ad8d58;
  border-radius:14px;
  background:#f7f0e7;
  padding:38px 24px;
  color:#aa8450;
  text-align:center;
  font-family:Georgia,"Times New Roman",serif;
}
.rsvp-success strong,.rsvp-success span,.rsvp-success small{display:block;}
.rsvp-success strong{font-size:25px;font-weight:400;margin-bottom:14px;}
.rsvp-success span{font-size:16px;line-height:1.5;margin-bottom:11px;}
.rsvp-success small{font-size:11px;line-height:1.45;color:#a99472;margin-bottom:22px;}
.rsvp-success button{
  border:1px solid #ad8d58;
  border-radius:999px;
  background:transparent;
  color:#aa8450;
  padding:9px 18px;
  font:inherit;
  cursor:pointer;
}
@media(max-width:390px){
  .confirmation-form-wrap{width:84%;}
  .rsvp-form{padding:23px 18px 16px;}
  .rsvp-form h2{font-size:25px;margin-bottom:26px;}
  .rsvp-field>label,.rsvp-field>legend,.field-label{font-size:16px;}
  .choice span{font-size:15px;}
}

/* Prueba 29 · identidad y límite de pases por código */
.invite-identity{margin:-8px 0 25px;padding:15px 14px;border:1px solid rgba(173,141,88,.55);border-radius:10px;text-align:center;background:rgba(238,228,215,.55);}
.invite-identity[hidden]{display:none;}
.invite-identity span,.invite-identity strong,.invite-identity small{display:block;}
.invite-identity span{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#b39a75;margin-bottom:6px;}
.invite-identity strong{font-size:18px;font-weight:400;line-height:1.35;color:#9f7948;margin-bottom:5px;}
.invite-identity small{font-size:12px;line-height:1.4;color:#a99472;}


/* PRUEBA 29B - selector temporal para probar personalizacion local */
.test-mode{
  margin: 0 0 24px;
  padding: 16px;
  border: 1px dashed rgba(134,107,64,.45);
  border-radius: 12px;
  background: rgba(255,255,255,.28);
  text-align: center;
}
.test-mode strong,.test-mode span,.test-mode small{display:block;}
.test-mode strong{letter-spacing:.12em;margin-bottom:6px;}
.test-mode span{margin-bottom:10px;}
.test-mode select{width:100%;padding:11px 12px;border:1px solid rgba(80,65,45,.35);border-radius:8px;background:#fff;margin-bottom:8px;font:inherit;}
.test-mode small{opacity:.7;line-height:1.35;}


/* PRUEBA 35 — personalización limpia sobre la base 29C */
.cover-guest-name{
  position:absolute;
  z-index:5;
  top:28.8%;
  left:8%;
  width:84%;
  text-align:center;
  color:#a97f43;
  font-family:Georgia,"Times New Roman",serif;
  font-size:20px;
  line-height:1.2;
  font-weight:400;
}
.cover-guest-name[hidden],
 .special-pass-png[hidden]{display:none;}

.post-album-block{position:relative;}

/* Cubre únicamente el texto fijo "1 PASE" de la imagen base.
   No modifica ni reemplaza la imagen original. */
@media(max-width:390px){
  .cover-guest-name{font-size:18px;}
  }

.special-pass-png{
  position:absolute;
  z-index:4;
  left:17%;
  width:66%;
  top:78.7%;
  height:auto;
  object-fit:contain;
  pointer-events:none;
}
.special-pass-png[hidden]{display:none;}
