/* ===== Hero: carousel de fondo vertical "slide_down" (background_slideshow de
   Elementor: background_slideshow_slide_transition:"slide_down", swiper-vertical).
   Ocupa toda la primer pantalla bajo el header; cada slide entra desde arriba
   (translateY -100% -> 0%) y cubre al anterior — NO es fade ni Ken Burns. ===== */
.hero-slideshow {
  position: relative;
  /* Las fotos del hero son 1920x780 (relación 2.4615:1 = 780/1920 = 0.40625).
     Igualamos el alto al ancho real del viewport en esa proporción para que
     "cover" casi no tenga que recortar ni arriba ni a los costados; el techo
     de 780px es la altura nativa de la foto (no upscalear más allá de eso) y
     el piso de 500px evita un hero demasiado bajo en ventanas angostas. */
  height: clamp(500px, calc(100vw * 0.40625), 780px);
  overflow: hidden;
}

.hero-slideshow .hero-slide {
  position: absolute;
  inset: 0;
  background-color: var(--color-primary);
  background-size: cover;
  background-repeat: no-repeat;
  /* Ancla el recorte abajo: si el aspecto de la ventana no calza con la foto,
     se recorta arriba (cielo/flores) y no abajo, donde va el logo. */
  background-position: center bottom;
  transform: translateY(0);
  z-index: 1;
}

/* Slide activo: visible por encima del resto, quieto en su lugar */
.hero-slideshow .hero-slide.is-current {
  z-index: 2;
}

/* Paso 1: el próximo slide se ubica arriba del frame, sin transición, por
   encima de todo (listo para deslizarse hacia abajo) */
.hero-slideshow .hero-slide.is-incoming {
  z-index: 3;
  transform: translateY(-100%);
}

/* Paso 2: se anima desde -100% hasta 0% (transform vuelve a la base), tapando
   al slide anterior que queda quieto debajo */
.hero-slideshow .hero-slide.is-animating {
  z-index: 3;
  transition: transform 0.6s ease;
}

@media (max-width: 1199px) {
  .hero-slideshow {
    height: clamp(380px, calc(100vh - var(--header-height-mobile)), 450px);
  }
}

/* ===== Banner carousel (slides promocionales) =====
   El original envuelve el carousel en el teal CLARO (#5AC3C8), no el oscuro */
.banner-section {
  background-color: var(--color-secondary);
  padding: 10px 0;
}

.banner-carousel {
  padding: 10px 10px 0;
}

.banner-carousel .banner-slide img {
  width: 100%;
  height: auto;
  border-radius: 15px;
  display: block;
}

.banner-carousel .slick-prev,
.banner-carousel .slick-next {
  z-index: 5;
  width: 33px;
  height: 33px;
}

.banner-carousel .slick-prev { left: 10px; }
.banner-carousel .slick-next { right: 10px; }

.banner-carousel .slick-prev:before,
.banner-carousel .slick-next:before {
  font-family: 'bootstrap-icons';
  font-size: 33px;
  color: #fff;
  opacity: 1;
}

.banner-carousel .slick-prev:before { content: "\f284"; }
.banner-carousel .slick-next:before { content: "\f285"; }

/* Dots dentro del banner, abajo al centro: inactivo blanco, activo naranja */
.banner-carousel .slick-dots {
  bottom: 15px;
}

.banner-carousel .slick-dots li {
  width: 11px;
  height: 11px;
  margin: 0 6px;
}

.banner-carousel .slick-dots li button {
  width: 11px;
  height: 11px;
  padding: 0;
}

.banner-carousel .slick-dots li button:before {
  content: '';
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #fff;
  opacity: 1;
}

.banner-carousel .slick-dots li.slick-active button:before {
  background: var(--color-accent);
}

@media (max-width: 1199px) {
  .banner-section {
    padding: 8px 5px;
  }
  .banner-carousel {
    padding: 0;
  }
  .banner-carousel .banner-slide img {
    border-radius: 4px;
  }
  .banner-carousel .slick-prev,
  .banner-carousel .slick-next {
    width: 20px;
    height: 20px;
  }
  .banner-carousel .slick-prev:before,
  .banner-carousel .slick-next:before {
    font-size: 20px;
  }
  .banner-carousel .slick-prev { left: 6px; }
  .banner-carousel .slick-next { right: 6px; }
  .banner-carousel .slick-dots { display: none !important; }
}

/* ===== Sección Novedades (fondo liso, sin textura) ===== */
.home-listings {
  padding: 40px 0 20px;
}

.home-listings .listing-grid {
  margin: 20px 0 0;
  display: flex;
  flex-wrap: wrap;
}

.home-listings .listing-col {
  padding: 0 15px;
  flex: 0 0 100%;
  max-width: 100%;
}

@media (min-width: 768px) {
  .home-listings .listing-col {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

@media (min-width: 992px) {
  .home-listings .listing-col {
    flex: 0 0 25%;
    max-width: 25%;
  }
}

@media (max-width: 767px) {
  .home-listings .package-card {
    margin-bottom: 15px;
  }
}
