/* ==========================================================================
   SLIDER ITEM LIST (#sliderItemList)
   Carrusel de tarjeta-imagen usado en dos sitios:
     - Home  -> listado de hoteles (slider-hotels.xsl)
     - Hotel -> menú de secciones del hotel (hotel-home.xsl)
   Fondo de mármol claro. Movimiento continuo (marquee de Owl) con botón de
   pausa; la entrada del bloque la dispara JS con la clase .slider-in-view.
   ========================================================================== */

#sliderItemList {
  overflow: hidden;
  padding-inline: unset;
  /* Banda inferior para las flechas, que van en flujo debajo del carrusel. Se
     declara en la variable de .marble-background y no en padding-bottom para
     que la regla de mármol continuo pueda sumarle la separación entre
     secciones en vez de perderla (ver neobookings.css). */
  --marble-space-bottom: 40px;
}

/* --------------------------------------------------------------------------
   Animación de entrada (la clase .slider-in-view la añade hotels-listing.js
   con un IntersectionObserver). Solo opacity + transform: no fuerza layout.
   Sustituye a wow/animate.css, que esperaba a window.load para revelar.
   -------------------------------------------------------------------------- */

#sliderItemList .content,
#sliderItemList .hotels-listing {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

/* El carrusel entra un pelín después que el título */
#sliderItemList .hotels-listing {
  transition-delay: 0.12s;
}

#sliderItemList.slider-in-view .content,
#sliderItemList.slider-in-view .hotels-listing {
  opacity: 1;
  transform: none;
}@media (prefers-reduced-motion: reduce) {
  #sliderItemList .content,
  #sliderItemList .hotels-listing {
    transform: none;
    transition: opacity 0.7s ease;
  }}

/* --------------------------------------------------------------------------
   Carrusel y tarjeta
   -------------------------------------------------------------------------- */

#sliderItemList .hotels-listing {
  width: 100vw;
}

/* Fix Firefox: extender .item 1px a cada lado para cubrir el gap subpíxel entre
   owl-items. owl-item tiene overflow:visible, así que la extensión tapa el gap. */
#sliderItemList .hotels-listing .item {
  position: relative;
  margin: 0 -1px;
  z-index: 1;
}

/* La tarjeta entera es el enlace */
#sliderItemList .hotels-listing .item .image {
  display: block;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

/* Fix: picture inline genera gaps en Firefox durante la animación */
#sliderItemList .hotels-listing .item .image picture {
  display: block;
  width: 100%;
}

#sliderItemList .hotels-listing .item .image img {
  display: block;
  width: 100%;
  transition: transform 0.8s ease;
}

/* Zoom contenido al pasar por la tarjeta (el 1.1 anterior recortaba demasiado) */
#sliderItemList .hotels-listing .item:hover .image img {
  transform: scale(1.06);
}

/* Capa 1 — Scrim PERMANENTE bajo el texto. Es lo que garantiza el contraste del
   texto blanco sobre cualquier foto (WCAG 1.4.3): sin él, los nombres se perdían
   sobre cielos azules y fachadas encaladas. Va dentro de a.image, por encima de
   la foto y por debajo del velo de hover y del texto.

   La banda es alta y arranca oscura a propósito. El caso límite NO es la home
   (allí el título va bajo la población, ya dentro de la zona opaca) sino el menú
   de hotel-home, que no tiene .zone: el título sube y cae donde el degradado es
   más transparente, justo encima de fotos casi blancas (almohada, piscina, pared
   encalada). Con el degradado anterior (0.68→0.45 sobre el 60% inferior) esas
   tarjetas se quedaban en 1,9-2,2:1, por debajo incluso del 3:1 de texto grande. */
#sliderItemList .hotels-listing .item .image::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 72%;
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 0.78) 0%,
    rgba(0, 0, 0, 0.62) 30%,
    rgba(0, 0, 0, 0.32) 62%,
    transparent 100%
  );
  z-index: 2;
  pointer-events: none;
}

/* Capa 2 — Velo de color SOLO en hover: feedback de "esto es clicable".
   Antes estaba fijo al 0.2 haciendo de parche de legibilidad y apagaba la foto. */
#sliderItemList .hotels-listing .item::after {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--primary-color);
  opacity: 0;
  z-index: 3;
  transition: opacity 0.35s ease-out;
  pointer-events: none;
}

#sliderItemList .hotels-listing .item:hover::after {
  opacity: 0.35;
}

/* Foco visible del enlace: anillo de dos tonos dibujado POR ENCIMA de la foto y
   hacia dentro. Un outline normal queda tapado por la imagen a sangre y por el
   overflow:hidden de .owl-stage-outer. */
#sliderItemList .hotels-listing .item .image:focus-visible {
  outline: none;
}

#sliderItemList .hotels-listing .item .image:focus-visible::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 9px var(--primary-color);
}

/* --------------------------------------------------------------------------
   Info: población (eyebrow) + nombre + botón.
   Anclada al borde inferior y en columna: el botón queda SIEMPRE a la misma
   distancia del borde en todas las tarjetas, así que comparten línea base
   aunque el nombre ocupe una o dos líneas.
   -------------------------------------------------------------------------- */

#sliderItemList .hotels-listing .item .info {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 9;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 32px 24px 36px;
  text-align: center;
  pointer-events: none;
}

/* Eyebrow: misma familia y tratamiento que los micro-textos del proyecto
   (.button): cuerpo en mayúsculas y espaciado. */
#sliderItemList .hotels-listing .item .info .zone {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  font-family: var(--font-family-2);
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.92);
}

#sliderItemList .hotels-listing .item .info .zone::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 13px;
  height: 20px;
  background-image: url(../../../images/pin-point-icon.png);
  background-repeat: no-repeat;
  background-position: left center;
  background-size: 13px auto;
  filter: brightness(0) invert(1);
}

#sliderItemList .hotels-listing .item .info .title {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 0;
  font-family: var(--font-family-1);
  font-size: clamp(26px, 2vw, 34px);
  line-height: 1.15;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: #fff;
}

/* El botón ya no es un enlace: es la afordancia visual dentro de la tarjeta-enlace */
#sliderItemList .hotels-listing .item .info .button {
  margin-top: 6px;
}

#sliderItemList .hotels-listing .item:hover .info .button {
  color: #fff;
  background-color: var(--button-color);
  border-color: var(--button-color);
}

/* --------------------------------------------------------------------------
   Controles: flechas + pausa, DEBAJO del carrusel, centrados y en flujo.
   Contraste sobre el mármol claro: borde oscuro e iconos negros.
   -------------------------------------------------------------------------- */

#sliderItemList .hotels-listing.owl-theme .owl-nav {
  position: static;
  margin-top: 28px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 16px;
}

/* Owl marca .owl-nav como .disabled y una regla global oculta todo .disabled con
   `display:none !important`. El carrusel va en loop continuo y los controles
   deben verse siempre, así que aquí el !important es inevitable. */
#sliderItemList .hotels-listing.owl-theme .owl-nav.disabled {
  display: flex !important;
}

#sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"] {
  position: static;
  margin: 0;
  padding: 0;
  width: 60px;
  height: 60px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--primary-color);
  border-radius: 100%;
  cursor: pointer;
  transition: background-color 0.4s ease, border-color 0.4s ease;
}

#sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"]:hover {
  background-color: var(--button-color);
  border-color: var(--button-color);
}

#sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"]:focus-visible {
  outline: 2px solid var(--primary-color);
  outline-offset: 3px;
}

#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-prev img,
#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-next img {
  transition: transform 0.4s cubic-bezier(0.645, 0.045, 0.355, 1),
    filter 0.4s ease;
}

/* En hover el círculo se rellena de verde: los iconos negros pasan a blancos */
#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-prev:hover img,
#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-next:hover img {
  filter: brightness(0) invert(1);
}

#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-prev:hover img {
  transform: translateX(-8px);
}

#sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-next:hover img {
  transform: translateX(8px);
}

/* Las flechas siempre operativas: el carrusel va en loop continuo */
#sliderItemList .hotels-listing .owl-nav .owl-prev.disabled,
#sliderItemList .hotels-listing .owl-nav .owl-next.disabled {
  opacity: 1;
  pointer-events: auto;
  display: inline-flex !important;
}

/* Botón de pausa (WCAG 2.2.2). Va SUPERPUESTO al carrusel, abajo a la derecha y
   en pequeño, para que pase desapercibido: la fila de flechas de debajo queda así
   ópticamente centrada. Lo cuelga hotels-listing.js de .owl-stage-outer, que es
   exactamente la caja de la tira de imágenes (position:relative por el CSS de Owl).
   Disco oscuro translúcido con icono blanco, igual que el toggle del hero
   (modules/hero-video-slider.css): cae dentro del degradado inferior de la tarjeta,
   así que el icono contrasta también sobre las fotos claras. */
#sliderItemList .hotels-listing__pause {
  position: absolute;
  right: 16px;
  bottom: 16px;
  z-index: 20;
  width: 34px;
  height: 34px;
  margin: 0;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(0, 0, 0, 0.55);
  border: none;
  border-radius: 100%;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

#sliderItemList .hotels-listing__pause:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

#sliderItemList .hotels-listing__pause:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* Icono de pausa: dos barras. Mismo patrón que el toggle del hero. */
#sliderItemList .hotels-listing__pause-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
}

#sliderItemList .hotels-listing__pause-icon::before,
#sliderItemList .hotels-listing__pause-icon::after {
  content: "";
  display: block;
  width: 3px;
  height: 11px;
  background-color: #fff;
}

/* Icono de play: triángulo, cuando el carrusel está pausado */
#sliderItemList .hotels-listing__pause.is-paused .hotels-listing__pause-icon::before {
  width: 0;
  height: 0;
  margin-left: 3px;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 9px solid #fff;
  background-color: transparent;
}

#sliderItemList .hotels-listing__pause.is-paused .hotels-listing__pause-icon::after {
  display: none;
}

#sliderItemList .hotels-listing.owl-theme .owl-stage {
  justify-content: center;
}/* --------------------------------------------------------------------------
   Título del bloque y navegación de zonas (listado de hoteles con filtros)
   -------------------------------------------------------------------------- */

#sliderItemList .hotels-list__zones .zones__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  padding-bottom: 40px;
  max-width: 1450px;
  margin-inline: auto;
}

#sliderItemList .zones__nav li {
  position: relative;
}

.hotels-list__zones .zones__nav li {
  max-width: 230px;
}

.hotels-list__zones .zones__nav li a {
  white-space: normal;
  text-align: center;
  display: block;
}

#sliderItemList .zones__nav a {
  position: relative;
  text-decoration: none;
  padding: 5px;
  cursor: pointer;
}

#sliderItemList .zones__nav a::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 0;
  height: 2px;
  background-color: var(--primary-color);
  transition: width 0.4s ease;
}

#sliderItemList .zones__nav a:hover::before,
#sliderItemList .zones__nav .current a::before {
  width: 100%;
}/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
/* Desktop grande (>1920px) */
@media (min-width: 1921px) {
  #sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"] {
    width: 70px;
    height: 70px;
  }

  /* El botón se separa un poco más del borde, pero NO crece: debe seguir
     siendo discreto también en pantallas grandes. */
  #sliderItemList .hotels-listing__pause {
    right: 24px;
    bottom: 24px;
  }}/* Desktop (992px - 1920px): la info respira menos según se estrecha la columna */
@media only screen and (min-width: 1181px) and (max-width: 1700px) {
  #sliderItemList .hotels-listing .item .info {
    padding: 26px 20px 30px;
  }}@media only screen and (min-width: 960px) and (max-width: 1180px) {
  #sliderItemList .hotels-listing .item .info {
    padding: 22px 16px 26px;
    gap: 8px;
  }

  #sliderItemList .hotels-listing .item .info .zone {
    font-size: 13px;
  }}/* Sin hover real: se anulan los estados que dependen del puntero */
@media (max-width: 992px) {
  #sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"]:hover {
    background-color: transparent;
    border-color: var(--primary-color);
  }

  #sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-prev:hover img,
  #sliderItemList .hotels-listing.owl-theme .owl-nav button.owl-next:hover img {
    filter: none;
    transform: none;
  }

  #sliderItemList .hotels-listing__pause:hover {
    background-color: rgba(0, 0, 0, 0.55);
  }}/* Tablet (768px - 959px) */
@media only screen and (min-width: 768px) and (max-width: 959px) {
  #sliderItemList .hotels-listing .item .info {
    padding: 20px 14px 24px;
    gap: 8px;
  }

  #sliderItemList .hotels-listing .item .info .zone {
    font-size: 12px;
    padding-left: 17px;
  }

  #sliderItemList .hotels-listing .item .info .zone::before {
    width: 11px;
    background-size: 11px auto;
  }

  #sliderItemList .hotels-listing.owl-theme .owl-nav {
    margin-top: 22px;
    gap: 12px;
  }

  #sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"] {
    width: 50px;
    height: 50px;
  }}/* Móvil (<768px): 1 tarjeta a pantalla completa, la info tiene sitio de sobra */
@media only screen and (max-width: 767px) {
  #sliderItemList {
    /* Misma variable que arriba: en padding-bottom directo pisaría el cálculo
       de la regla de mármol continuo y se comería la separación de sección. */
    --marble-space-bottom: 30px;
  }

  #sliderItemList .hotels-listing .item .info {
    padding: 28px 20px 32px;
  }

  #sliderItemList .hotels-listing .item .info .title {
    font-size: var(--font-size-title);
    line-height: var(--mobile-line-height-title);
  }

  #sliderItemList .hotels-listing.owl-theme .owl-nav {
    margin-top: 20px;
    gap: 12px;
  }

  #sliderItemList .hotels-listing.owl-theme .owl-nav [class*="owl-"] {
    width: 50px;
    height: 50px;
  }

  #sliderItemList .hotels-listing__pause {
    right: 12px;
    bottom: 12px;
  }

  #sliderItemList .hotels-list__zones .zones__nav {
    flex-direction: column;
    align-items: center;
    gap: 10px;
  }

  .hotels-list__zones .zones__nav li {
    max-width: none;
  }}