/* 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;
    border-color: rgba(0, 0, 0, 0.08);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.products-showcase .card:hover {
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);
    transform: translateY(-2px);
}

.products--featured {
    background-color: #f5f5f5;
}

.products--offers {
    background-color: rgba(var(--theme-color-rgb), 0.06);
}

.products.products--new .card {
    border: 1px solid rgba(0, 0, 0, 0.05);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}

.products.products--new .card:hover {
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.09);
}

.products-showcase .card-title {
    min-height: 2.5rem;
}

.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 */
}
