/* Estructuras de Glam adaptadas al pasillo: contenido ligero, sin velos ni desenfoque. */
.icon-library { position: absolute; width: 0; height: 0; overflow: hidden; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.section:not(.hero) { min-height: 0; padding: clamp(4.75rem, 9vw, 6.75rem) 1.5rem; overflow: visible; background: transparent; }
.section__inner { width: min(100%, 32rem); margin: auto; }
main .section:not(.hero) { transform: none; will-change: auto; }
main .section:not(.hero) .section__inner { transform: perspective(1400px) translateZ(var(--approach-z, 0px)) scale(var(--approach-scale, .985)); transform-origin: 50% 58%; transition: transform .12s linear; will-change: transform; }
.section__inner > .eyebrow { margin: 0 0 .7rem; font-size: .7rem; letter-spacing: .22em; color: #c6cdc2; }
.section__inner > .display { margin: 0 auto 1.1rem; max-width: 19ch; font: 600 clamp(2.35rem, 7.4vw, 3.5rem)/1.05 var(--condensed); letter-spacing: .025em; color: #e0e5dc; text-shadow:none; }
.section__copy, .section__inner > .message__copy, .section__inner > .dress__note, .section__inner > .prize__copy, .section__inner > .rsvp__note { max-width: 29rem; margin: 0 auto 1.65rem; color: #d2d9ce; font-size: .88rem; line-height: 1.85; }
.section__status { margin: 1rem auto 0; color: #bcc5b8; font-size: .75rem; line-height: 1.7; }
.section__mark { display: block; margin-top: 2rem; color: #aebdab; font-size: 1.1rem; }
.section__icon { display: block; width: 46px; height: 46px; margin: 0 auto 1.1rem; fill: none; stroke: #c6d4c1; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; filter: none; }
.section__icon--large { width: 68px; height: 68px; margin: 1.6rem auto; }
.horror-card { width: 100%; padding: 1.5rem; border: 1px solid #c1d1b840; border-radius: 12px; background: transparent; box-shadow: none; backdrop-filter: none; }
.horror-card h3 { margin: .3rem 0 .8rem; font: 600 1.55rem/1.1 var(--condensed); letter-spacing: .02em; }
.horror-card p { font-size: .83rem; line-height: 1.75; color: #d0d8cc; }
.section__actions { display: flex; justify-content: center; flex-wrap: wrap; gap: .6rem; margin-top: 1.4rem; }
.section__actions--stack { display: grid; width: min(100%, 20rem); margin: 1.75rem auto 0; }
.section__inner .button { min-height: 44px; padding: .8rem 1.1rem; border-radius: 6px; gap: .65rem; font-size: .76rem; letter-spacing: .09em; text-shadow:none; }
.section__inner .button--outline { background: transparent; border-color: #c8d4c080; }
.section__inner .button--solid { background: #d5ded0; color: #10180f; border-color: #d5ded0; }
.section__inner .button:hover { background: #edf2e9; color: #10180f; }
.section__inner .button[aria-disabled="true"] { opacity: .55; cursor: default; }
.button__icon { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; }
.section__inner .text-link { display: inline-block; margin: 1.2rem auto 0; color: #d1dccb; font-size: .7rem; }
:is(.section, .gallery-dialog) :is(button, a, input):focus-visible { outline: 2px solid #d1dec9; outline-offset: 4px; }

/* Mensaje y firma, como una nota personal dentro de la invitación. */
.message .section__inner { max-width: 27rem; }
.message__copy { white-space: pre-line; }
.message__signature { margin: 1.6rem 0 0; font: 500 1.4rem var(--condensed); letter-spacing: .08em; color: #c9d4c3; }
.message__signature:empty { display: none; }

/* Reproductor compacto con controles accesibles. */
.music__identity { margin: 1.6rem 0 1rem; }
.music__song { margin: 0; font: 600 1.65rem/1.1 var(--condensed); color: #e4eadf; }
.music__artist { margin: .35rem 0; font-size: .65rem; letter-spacing: .14em; text-transform: uppercase; color: #b9c7b3; }
.music__song:empty, .music__artist:empty { display: none; }
.horror-player { display: flex; align-items: center; gap: 1rem; max-width: 24rem; margin: auto; padding: 1rem 1.25rem; border: 1px solid #b5c8aa65; border-radius: 12px; }
.music__play { display: grid; flex: 0 0 46px; place-items: center; width: 46px; height: 46px; border: 1px solid #c9d9c080; border-radius: 50%; background: #c8d9bd; color: #111b0e; cursor: pointer; font-size: 1rem; text-shadow:none; }
.music__play:disabled { opacity: .45; cursor: default; }
.music__pause-icon { display: none; }
.music__play.is-playing .music__play-icon { display: none; }
.music__play.is-playing .music__pause-icon { display: inline; }
.music__track { min-width: 0; flex: 1; }
.music__track input { display: block; width: 100%; margin: .1rem 0 .45rem; accent-color: #c7d6bf; cursor: pointer; }
.music__times { display: flex; justify-content: space-between; font-size: .65rem; color: #bdc8b8; font-variant-numeric: tabular-nums; }

/* Mes real del evento, con la fecha señalada. */
.month { width: min(100%, 21rem); margin: 1.7rem auto 0; padding: 1.3rem; }
.month .month__heading { margin: 0 0 1.15rem; font: 600 1.1rem var(--condensed); letter-spacing: .15em; text-transform: uppercase; }
.month__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .3rem .15rem; align-items: center; }
.month__grid > span { display: grid; place-items: center; min-height: 33px; font-size: .78rem; font-variant-numeric: tabular-nums; color: #dce4d5; }
.month__grid > .month__weekday { min-height: 27px; color: #a8b6a1; font-size: .63rem; }
.month__grid > .is-event { width: 33px; border-radius: 50%; justify-self: center; background: #d3e0c9; color: #152010; font-weight: 700; text-shadow:none; box-shadow: none; }
.month .month__caption { margin: 1.05rem 0 0; padding-top: 1rem; border-top: 1px solid #b9c9b130; font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; }
.section__inner .details__time { margin: 1rem auto 0; font: 500 .9rem var(--condensed); letter-spacing: .08em; color: #c5d0be; }

/* Cuenta regresiva y ubicación. */
.section__inner .countdown { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .6rem; margin: 1.8rem 0; }
.countdown div { padding: .85rem .15rem; border: 1px solid #b6c7ac45; border-radius: 8px; }
.countdown b { font: 600 clamp(2rem, 8vw, 3rem)/1 var(--condensed); text-shadow:none; font-variant-numeric: tabular-nums; }
.countdown span { margin-top: .5rem; font-size: .61rem; letter-spacing: .09em; color: #bccbb3; }
.venue__card { margin: 1.5rem auto 0; }
.venue__card .venue__name { max-width: none; margin: .7rem auto; font: 600 1.8rem/1.15 var(--condensed); }
.venue__card .venue__address { margin: 0 auto 1rem; font-size: .84rem; }
.venue__time { margin: 0; font: 500 .75rem var(--condensed); letter-spacing: .1em; }
.venue__map:empty { display: none; }
.venue__map iframe { display: block; width: 100%; height: 220px; margin-top: 1.3rem; border: 0; border-radius: 6px; filter: grayscale(1) saturate(.2); }

/* Clima editable: ninguna temperatura de muestra se presenta como pronóstico real. */
.weather__outlook { margin-top: 1.4rem; }
.weather__days { display: flex; gap: .6rem; overflow: auto; scroll-snap-type: x mandatory; }
.weather__days:empty { display: none; }
.weather__day { flex: 1 0 110px; padding: 1rem .5rem; border: 1px solid #b6c7ac40; border-radius: 8px; scroll-snap-align: center; }
.weather__day time, .weather__condition, .weather__rain { display: block; font-size: .68rem; }
.weather__condition { margin: .4rem 0; }
.weather__temperature { display: block; margin: .5rem 0; font: 600 1.6rem var(--condensed); }
.weather__outlook .weather__copy { margin: 1.1rem auto 0; font-size: .8rem; }

/* Horarios sobre un eje fino, en lugar de una lista de texto genérica. */
.section__inner .itinerary__list { width: min(100%, 26rem); margin: 2.2rem auto 0; padding: 0; }
.itinerary__list li { position: relative; display: grid; grid-template-columns: 5.6rem minmax(0, 1fr); gap: 1.35rem; padding: 0 0 1.8rem; border: 0; }
.itinerary__list li::before { content: ''; position: absolute; left: 6.08rem; top: .5rem; bottom: -.5rem; width: 1px; background: #b7c6ae70; }
.itinerary__list li::after { content: ''; position: absolute; left: 5.86rem; top: .4rem; width: 8px; height: 8px; border-radius: 50%; background: #cddcc2; box-shadow: none; }
.itinerary__list li:last-child::before { display: none; }
.itinerary__list time { min-width: 0; padding-top: .12rem; font: 600 .97rem/1.3 var(--condensed); color: #c6d4bc; }
.itinerary__list h3 { margin: 0; font: 500 1.35rem/1.2 var(--condensed); color: #e1e8da; }
.itinerary__list p { margin: .4rem 0 0; font-size: .76rem; line-height: 1.65; color: #b9c7b1; }

/* Galería y video conservan sus encuadres dentro de la sección. */
.section__inner .gallery__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; width: 100%; margin-top: 1.7rem; }
.gallery__item, .gallery__placeholder { display: grid; place-items: center; width: 100%; aspect-ratio: 1; padding: 0; border: 1px solid #bdcbb450; border-radius: 8px; overflow: hidden; background: transparent; color: #bdcbb5; }
.gallery__item { cursor: zoom-in; transition: border-color .2s; }
.gallery__item:hover { border-color: #e0e9d9; }
.gallery__item img { display: block; height: 100%; width: 100%; aspect-ratio: auto; object-fit: cover; border: 0; }
.gallery__placeholder { font: 500 .8rem var(--condensed); letter-spacing: .05em; }
.gallery-dialog { position: fixed; width: min(92vw, 54rem); max-height: 90svh; padding: 1rem; border: 1px solid #aebea5; border-radius: 8px; background: #091008; color: #e5ebdf; }
.gallery-dialog::backdrop { background: #020502ed; }
.gallery-dialog img { display: block; width: 100%; max-height: 75svh; object-fit: contain; }
.gallery-dialog > button { position: absolute; top: .5rem; right: .5rem; width: 40px; height: 40px; border: 1px solid #c9d7c0; border-radius: 50%; background: #091008; color: #e5ebdf; font-size: 1.5rem; cursor: pointer; }
.gallery-dialog p { margin: .6rem 0 0; font-size: .8rem; }
.video-section__frame { margin-top: 1.5rem; width: 100%; aspect-ratio: 16/9; border: 1px solid #bac9b040; border-radius: 8px; overflow: hidden; }
.video-section__empty { display: flex; height: 100%; flex-direction: column; align-items: center; justify-content: center; color: #c8d2c2; font-size: .78rem; }
.video-section__frame iframe, .video-section__frame video { display: block; width: 100%; height: 100%; border: 0; }

/* Figuras de disfraz y sugerencia de colores. */
.dress__figures { display: flex; align-items: center; justify-content: center; gap: 2rem; margin: 1.8rem 0 1.5rem; color: #d3dfca; }
.dress__figures svg { width: 64px; height: 98px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.dress__type { max-width: 25ch; margin: 0 auto 1rem; font: 600 1.65rem/1.15 var(--condensed); color: #d9e4d1; }
.dress__palette { display: flex; justify-content: center; gap: .65rem; margin: 1.3rem auto; }
.dress__palette span { width: 23px; height: 23px; border: 1px solid #c4d1bc70; border-radius: 50%; }
.dress__palette:empty { display: none; }

/* Hospedaje en tarjetas que se deslizan, con puntos de navegación. */
.lodging__list { display: flex; gap: 1rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: #9bab90 transparent; padding: .25rem 0 .65rem; }
.lodging__list:empty { display: none; }
.lodging__card { flex: 0 0 88%; scroll-snap-align: center; padding: 1.6rem; border: 1px solid #bbcbb240; border-radius: 12px; background: transparent; }
.lodging__card h3 { margin: .6rem 0; font: 600 1.65rem/1.2 var(--condensed); }
.lodging__stars { color: #bdceb3; letter-spacing: .14em; }
.lodging__distance { font-size: .67rem; letter-spacing: .06em; text-transform: uppercase; color: #c3d1bb; }
.lodging__address, .lodging__note { font-size: .8rem; line-height: 1.7; color: #c7d2c0; }
.lodging__card .button { margin-top: .7rem; }
.carousel__dots { display: flex; justify-content: center; gap: .5rem; margin: .7rem auto 0; }
.carousel__dots button { width: 8px; height: 8px; padding: 0; border: 1px solid #b5c6a9; border-radius: 50%; background: transparent; cursor: pointer; }
.carousel__dots .is-active { background: #cad9c1; }
.lodging__empty, .gifts__empty { margin: 1.5rem auto 0; }
.lodging__empty p, .gifts__empty p { margin-bottom: 0; }

/* Opciones de regalo en pestañas. */
.gifts__tabs { display: flex; justify-content: center; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0 1rem; }
.gifts__tabs:empty { display: none; }
.gifts__tab { padding: .65rem 1rem; border: 1px solid #b8cbae70; border-radius: 6px; background: transparent; color: #d8e3d0; font-size: .75rem; cursor: pointer; }
.gifts__tab[aria-selected="true"] { background: #cbdac0; color: #152010; text-shadow:none; }
.gifts__panel { padding: 1.5rem; border: 1px solid #c1d1b840; border-radius: 12px; }
.gifts__panel h3 { margin: 0 0 1rem; font: 600 1.7rem var(--condensed); }
.gifts__panel p { font-size: .83rem; color: #c9d5c1; }
.gifts__panel .button { margin-top: 1rem; }
.gifts__account { margin: 0; font-size: .8rem; overflow-wrap: anywhere; }
.gifts__account div { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: .65rem 0; border-bottom: 1px solid #b9c9b130; text-align: left; }
.gifts__account dt { color: #a9bca0; }
.gifts__account dd { margin: 0; text-align: right; }
.gifts__event-number { display: block; margin: .7rem 0; font: 600 1.5rem var(--condensed); }
.prize__criteria { display: flex; justify-content: center; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0; }
.prize__criteria span { padding: .45rem .7rem; border: 1px solid #b8cbae45; border-radius: 4px; font-size: .7rem; letter-spacing: .02em; }

/* Confirmación: respuesta explícita y mensajes en el propio formulario. */
.section__inner .rsvp__form { max-width: 28rem; margin: 1.75rem auto 1rem; gap: .8rem; padding: 1.4rem; }
.rsvp__form > label, .rsvp__choices legend { color: #cbd8c2; font-size: .8rem; }
.rsvp__form #guestName { border: 1px solid #bccdb06b; border-radius: 6px; background: #07100533; font-size: .83rem; }
.rsvp__form #guestName::placeholder { color: #9aaa92; }
.rsvp__choices { display: grid; gap: .6rem; margin: .5rem 0 0; padding: 0; border: 0; min-width: 0; }
.rsvp__choices legend { margin-bottom: .7rem; }
.rsvp__choices label { display: flex; align-items: center; gap: .65rem; padding: .65rem .75rem; margin: 0; border: 1px solid #b8c9ad50; border-radius: 6px; cursor: pointer; font-size: .8rem; }
.rsvp__choices label:has(input:checked) { border-color: #d6e4cc; background: #a8bea015; }
.rsvp__choices input { flex: 0 0 16px; width: 16px; height: 16px; min-height: 0; margin: 0; padding: 0; accent-color: #c7d9bd; }
.rsvp__form .button { width: 100%; margin-top: .3rem; }
.rsvp__error { margin: 0; color: #edc1b5; font-size: .75rem; line-height: 1.6; }
.rsvp__error:empty { display: none; }
.section__inner .rsvp__deadline { font-size: .72rem; color: #b6c6ab; }

@media (max-width: 380px) {
  .section:not(.hero) { padding-inline: 1.2rem; }
  .horror-card { padding: 1.15rem; }
  .section__inner .countdown { gap: .4rem; }
  .countdown span { font-size: .54rem; }
  .itinerary__list li { grid-template-columns: 5rem minmax(0, 1fr); gap: 1.15rem; }
  .itinerary__list li::before { left: 5.36rem; }
  .itinerary__list li::after { left: 5.14rem; }
}
@media (prefers-reduced-motion: reduce) {
  main .section:not(.hero) .section__inner { transform: none; transition: none; will-change: auto; }
}
