/*
 * Promociones del canal, en carrusel: una promoción por diapositiva, con la foto a
 * un lado y el texto al otro.
 */

.av-offers {
  position: relative;
}

/* --- Flechas ------------------------------------------------------------- */

.av-offers__nav {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-bottom: 16px;
}

/*
 * Flechas y puntos son <button>, y ese selector lo peinan tanto el reset del tema
 * como el kit de Elementor.
 */
.av-offers .av-offers__arrow,
.av-offers .av-offers__dot {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
  padding: 0;
  border: 0;
  box-shadow: none;
  /* El kit también pinta el color de texto de todo button, y ahí dentro va el
     icono de la flecha: sin esto se queda del color del botón del tema */
  color: inherit;
  font: inherit;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  cursor: pointer;
}

.av-offers .av-offers__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 50%;
  background-color: #fff;
  font-size: 15px;
  transition: opacity 200ms ease, border-color 200ms ease;
}

/*
 * Forma de la flecha. Empatan en especificidad con la regla de arriba, así que
 * mandan por ir después: cualquiera de las dos que ponga el panel gana.
 */
.av-arrows--circle .av-offers__arrow {
  width: 40px;
  border-radius: 50%;
}

.av-arrows--rect .av-offers__arrow {
  width: 52px;
  border-radius: 6px;
}

/* --- Pista --------------------------------------------------------------- */

.av-offers__track {
  display: flex;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  /* La barra sobra: se navega con las flechas, los puntos o el dedo */
  scrollbar-width: none;
}

.av-offers__track::-webkit-scrollbar {
  display: none;
}

.av-offers__slide {
  flex: 0 0 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  scroll-snap-align: start;
}

/* --- Una promoción ------------------------------------------------------- */

.av-offer {
  display: grid;
  grid-template-columns: var(--av-offer-media, 50%) 1fr;
  align-items: stretch;
  min-height: 450px;
}

/* Con el texto delante la foto pasa a la segunda columna, que es la que lleva
   la proporción; el panel se queda con el 1fr */
.av-offers--txt-first .av-offer {
  grid-template-columns: 1fr var(--av-offer-media, 50%);
}

.av-offers--txt-first .av-offer__media {
  order: 2;
}

/* Una promoción sin foto ocupa el ancho entero con el panel */
.av-offer--sin-foto,
.av-offers--txt-first .av-offer--sin-foto {
  grid-template-columns: 1fr;
}

.av-offer__media {
  position: relative;
  overflow: hidden;
}

/*
 * Dos cosas hacían que la foto no llenara su caja, y por eso las esquinas de arriba
 * salían rectas: la foto se quedaba con su alto natural, tapaba el recorte por
 * arriba y dejaba un hueco por abajo.
 */
.av-offers .av-offer__img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

.av-offer__panel {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding: 48px 40px;
  background-color: #fff;
}

/*
 * Los tamaños de aquí abajo son solo el punto de partida: los controles de
 * tipografía de Elementor no traen valor por defecto, así que si esto no estuviera
 * la tarjeta saldría con los tamaños del tema hasta que alguien tocara el panel.
 */

.av-offer__title {
  margin: 0 0 16px;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.3;
}

.av-offer__text {
  margin: 0 0 20px;
  font-size: 16px;
  line-height: 1.6;
}

.av-offer__dates {
  display: inline-flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 28px;
  font-size: 15px;
  line-height: 1.5;
}

/* El icono se alinea con la primera línea, no con el centro del bloque */
.av-offer__dates i {
  flex: 0 0 auto;
  margin-top: 0.2em;
}

.av-offer__btn {
  align-self: flex-start;
  display: inline-block;
  padding: 14px 28px;
  border-radius: 24px;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: filter 200ms ease;
}

.av-offer__btn:hover,
.av-offer__btn:focus {
  filter: brightness(1.08);
  text-decoration: none;
}

/* --- Puntos -------------------------------------------------------------- */

.av-offers__dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 24px;
}

.av-offers .av-offers__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  transition: background-color 200ms ease;
}

/* El :not() por el mismo motivo que en el control del panel: así el gris de
   partida no puede taparle el color al punto activo */
.av-offers .av-offers__dot:not(.is-active) {
  background-color: #d1d5db;
}

/* --- Móvil: se apila, y la foto deja de depender del alto del panel ------- */

@media (max-width: 767px) {

  .av-offer,
  .av-offers--txt-first .av-offer {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .av-offers--txt-first .av-offer__media {
    order: 0;
  }

  .av-offer__media {
    aspect-ratio: 16 / 10;
  }

  .av-offer__panel {
    padding: 28px 24px;
  }
}
