/* partial: products_showcase */
/* Partial: vitrina de productos (destacados / nuevos / ofertas) — grilla y carrusel. */
.products-showcase .swiper {
    padding-bottom: 2.5rem;
}

.products-showcase .swiper-wrapper {
    align-items: stretch;
}

/* Contenedor de cada card (grilla .col y carrusel .swiper-slide) como flex
   columna: así la card se estira de forma fiable a la altura de la fila sin
   depender de un % de altura (que falla en la cadena flex). */
.products-showcase .col,
.products-showcase .swiper-slide {
    display: flex;
    flex-direction: column;
    height: auto;
}

/* Cards a igual altura, con la acción siempre al pie. */
.products-showcase .card {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* Título a altura fija (2 líneas) para alinear precio y botón entre cards. */
.products-showcase .card-title {
    min-height: 2.6rem;
}

.products-showcase .card-body {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.products-showcase .card-body > div:last-child {
    margin-top: auto !important; /* gana a la utility .mt-2 (!important) del wrapper del botón */
}
