/* Herramientas Page - HEEMSA Brand Styles */

/* Variables de colores HEEMSA */
:root {
    --heemsa-primary: #ff3a17;
    --heemsa-secondary: #e03e00;
    --heemsa-dark: #cc3700;
    --heemsa-light: rgba(255, 58, 23, 0.1);
    --heemsa-border: rgba(255, 58, 23, 0.25);
    --header-height: 80px;
    --white: #ffffff;
    --light-bg: #f8f9fa;
    --dark-text: #2c3e50;
    --muted-text: #6c757d;
    --border-color: #e9ecef;
    --shadow-sm: 0 4px 20px rgba(255, 58, 23, 0.1);
    --shadow-md: 0 8px 30px rgba(0, 0, 0, 0.1);
    --transition: all 0.3s ease;
}

/* Reset para página de herramientas - evitar conflictos con layout principal */
.catalog-page {
    margin-top: 0 !important;
}

.catalog-page .content-wrap {
    padding: 0 !important;
    margin-top: 0 !important;
    max-width: 100% !important;
}

/* Hero Section para Herramientas */
.tools-hero {
    background: linear-gradient(135deg, rgba(255, 58, 23, 0.95) 0%, rgba(224, 62, 0, 0.95) 100%), 
                url('/assets/images/Power-Tools.jpg') center/cover no-repeat;
    color: white;
    padding: 4rem 0 3rem;
    text-align: center;
    position: relative;
    margin-bottom: 0;
}

.tools-hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.3);
    z-index: 1;
}

.tools-hero .container {
    position: relative;
    z-index: 2;
}

.tools-hero h1 {
    font-size: 3.5rem;
    font-weight: 800;
    margin-bottom: 1rem;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
    letter-spacing: -1px;
}

.tools-hero p {
    font-size: 1.2rem;
    opacity: 0.95;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
    margin-bottom: 2rem;
}

.tools-hero .stats {
    display: flex;
    justify-content: center;
    gap: 3rem;
    margin-top: 2rem;
}

.stat-item {
    text-align: center;
}

.stat-number {
    font-size: 2.5rem;
    font-weight: 900;
    display: block;
    color: #ffffff;
}

.stat-label {
    font-size: 0.9rem;
    opacity: 0.9;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Controles de Catálogo - Estilo HEEMSA */
.catalog-controls {
    background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
   /*  border-bottom: 3px solid #ff3a17; */
    padding: 1rem 0;
    box-shadow: 0 4px 20px rgba(255, 58, 23, 0.1);
}

.catalog-controls .form-label {
    color: #2c3e50;
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 0.5rem;
}

.catalog-controls .form-control,
.catalog-controls .form-select {
    border: 2px solid #e9ecef;
    border-radius: 8px;
    transition: all 0.3s ease;
    font-size: 0.9rem;
}

.catalog-controls .form-control:focus,
.catalog-controls .form-select:focus {
    border-color: var(--heemsa-primary);
    box-shadow: 0 0 0 0.2rem var(--heemsa-border);
}

.catalog-controls .input-group-text {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    color: white;
    border: 2px solid var(--heemsa-primary);
    border-right: none;
}

.catalog-controls .btn-outline-secondary {
    border: 2px solid var(--heemsa-primary);
    color: var(--heemsa-primary);
    /* border-left: none; */
}

.catalog-controls .btn-outline-secondary:hover {
    background: var(--heemsa-primary);
    color: white;
}

.results-info {
   /*  background: var(--heemsa-light); */
    /* padding: 1rem; */
    border-radius: 8px;
    margin-top: 1rem;
}

.results-info .btn-outline-secondary {
    border-color: var(--heemsa-primary);
    color: var(--heemsa-primary);
    font-weight: 600;
}

.results-info .btn-outline-secondary:hover {
    background: var(--heemsa-primary);
    color: white;
}

/* Contenedor principal del catálogo */
.catalog-page {
    background: var(--light-bg);
    min-height: calc(100vh - var(--header-height));
    padding: 0;
}

.catalog-page .container-fluid {
    padding: 1rem;
}

/* Sidebar de Filtros - Estilo HEEMSA */
.filters-sidebar {
    background: white;
    border-radius: 12px;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: sticky;
    top: 1rem;
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
}

.filters-sidebar .sidebar-header {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    color: white;
    padding: 1.5rem;
    border-bottom: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.filters-sidebar .sidebar-title {
    font-size: 1.2rem;
    font-weight: 700;
    margin: 0;
}

.filters-sidebar .btn-link {
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.85rem;
    text-decoration: none;
}

.filters-sidebar .btn-link:hover {
    color: white;
    text-decoration: underline;
}

.filter-title {
    background: #f8f9fa;
    color: #2c3e50;
    font-weight: 600;
    border-bottom: 1px solid #e9ecef;
    padding: 1rem 1.5rem;
    transition: all 0.3s ease;
}

.filter-title:hover {
    background: var(--heemsa-light);
    color: var(--heemsa-primary);
}

.filter-title i.fa-chevron-down {
    color: var(--heemsa-primary);
    transition: transform 0.3s ease;
}

.filter-title[aria-expanded="false"] i.fa-chevron-down {
    transform: rotate(-90deg);
}

.filter-content {
    padding: 1rem 1.5rem;
}

.form-check-input:checked {
    background-color: var(--heemsa-primary);
    border-color: var(--heemsa-primary);
}

.form-check-input:focus {
    border-color: var(--heemsa-primary);
    box-shadow: 0 0 0 0.25rem var(--heemsa-border);
}

.form-check-label {
    color: #495057;
    font-weight: 500;
}

.form-check-label:hover {
    color: var(--heemsa-primary);
}

/* Contenedor de Productos */
.products-container {
    background: white;
    border-radius: 12px;
    box-shadow: var(--shadow-md);
    padding: 2rem;
    border: 1px solid var(--border-color);
}

/* Tarjetas de Productos - Estilo HEEMSA */
.product-card {
    border: 2px solid #e9ecef;
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    background: white;
    height: 100%;
}

.product-card:hover {
    transform: translateY(-8px);
    border-color: #ff3a17;
    box-shadow: 0 15px 40px rgba(255, 58, 23, 0.15);
}

.product-card .card-img-top {
    height: 200px;
    object-fit: cover;
    transition: transform 0.3s ease;
    background: #f8f9fa;
    padding: 1rem;
}

.product-card:hover .card-img-top {
    transform: scale(1.05);
}

.product-card .card-body {
    padding: 1.5rem;
}

.product-card .card-title {
    color: #ff3a17;
    font-weight: 700;
    font-size: 1.1rem;
    margin-bottom: 1rem;
}

.product-card .card-text {
    color: #6c757d;
    line-height: 1.5;
    margin-bottom: 1rem;
}

.product-card .text-secondary {
    color: #2c3e50 !important;
    font-weight: 600;
    background: rgba(255, 58, 23, 0.1);
    padding: 0.25rem 0.75rem;
    border-radius: 20px;
    font-size: 0.8rem;
    display: inline-block;
}

.product-card .card-footer {
    background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
    border-top: 1px solid #e9ecef;
    padding: 1rem 1.5rem;
}

.product-card .text-success {
    color: #ff3a17 !important;
    font-weight: 700;
    font-size: 1.1rem;
}

.view-details-btn {
    background: linear-gradient(135deg, #ff3a17 0%, #e03e00 100%);
    border: none;
    color: white;
    font-weight: 600;
    border-radius: 8px;
    padding: 0.5rem 1rem;
    transition: all 0.3s ease;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-size: 0.8rem;
}

.view-details-btn:hover {
    background: linear-gradient(135deg, #e03e00 0%, #cc3700 100%);
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(255, 58, 23, 0.4);
    color: white;
}

/* Modal - Estilo HEEMSA */
.modal-content {
    border: none;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
}

.modal-header {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    color: white;
    border-bottom: none;
    padding: 1.5rem 2rem;
}

.modal-title {
    font-weight: 700;
    font-size: 1.3rem;
}

.btn-close {
    filter: invert(1);
    opacity: 0.8;
}

.btn-close:hover {
    opacity: 1;
}

.modal-body {
    padding: 2rem;
    min-height: 400px;
}

/* Estados de Carga */
.loading-state {
    padding: 4rem 2rem;
}

.loading-state .spinner-border {
    color: #ff3a17;
    width: 3rem;
    height: 3rem;
}

.empty-state {
    padding: 4rem 2rem;
}

.empty-state .fa-search {
    color: #ff3a17;
    opacity: 0.3;
}

/* Paginación - Estilo HEEMSA */
.pagination {
    justify-content: center;
    margin-top: 3rem;
}

.page-link {
    color: var(--heemsa-primary);
    border: 2px solid var(--border-color);
    border-radius: 8px;
   /*  margin: 0 0.25rem; */
    font-weight: 600;
    transition: var(--transition);
}

.page-link:hover {
    color: white;
    background: var(--heemsa-primary);
    border-color: var(--heemsa-primary);
    transform: translateY(-2px);
}

.page-item.active .page-link {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    border-color: var(--heemsa-primary);
    color: white;
}

.page-item.disabled .page-link {
    color: var(--muted-text);
    background: var(--light-bg);
    border-color: var(--border-color);
}

/* Responsive Design */
@media (max-width: 992px) {
    .tools-hero h1 {
        font-size: 2.5rem;
    }
    
    .tools-hero .stats {
        gap: 2rem;
    }
    
    .stat-number {
        font-size: 2rem;
    }
    
    .filters-sidebar {
        margin-bottom: 2rem;
    }
}

@media (max-width: 768px) {
    .tools-hero {
        padding: 3rem 0 2rem;
    }
    
    .tools-hero h1 {
        font-size: 2rem;
    }
    
    .tools-hero p {
        font-size: 1rem;
    }
    
    .tools-hero .stats {
        flex-direction: column;
        gap: 1rem;
    }
    
    .catalog-controls {
        padding: 1rem 0;
    }
    
    .products-container {
        padding: 1rem;
    }
    
    .modal-body {
        padding: 1.5rem;
    }
}

/* Animaciones */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.product-card {
    animation: fadeInUp 0.6s ease-out;
}

.product-card:nth-child(1) { animation-delay: 0.1s; }
.product-card:nth-child(2) { animation-delay: 0.2s; }
.product-card:nth-child(3) { animation-delay: 0.3s; }
.product-card:nth-child(4) { animation-delay: 0.4s; }
.product-card:nth-child(5) { animation-delay: 0.5s; }
.product-card:nth-child(6) { animation-delay: 0.6s; }

/* Brand Elements */
.heemsa-badge {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    color: white;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    font-weight: 700;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: inline-block;
    margin-bottom: 1rem;
}

.brand-accent {
    color: var(--heemsa-primary);
    font-weight: 700;
}

.heemsa-divider {
    height: 3px;
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    border: none;
    margin: 2rem 0;
    border-radius: 2px;
}

/* =================================================================== */
/* = ESTILOS DEFINITIVOS PARA TARJETAS DE PRODUCTO Y CARRUSEL HEEMSA = */
/* =================================================================== */

/* Contenedor principal de la tarjeta (Grid Item) */
#productsGrid > .col {
    display: flex;
    align-items: stretch;
}

/* Tarjeta de Producto (Contenedor Flex Vertical) */
.product-card {
    border: 2px solid #e9ecef;
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    background: white;
    display: flex; /* <-- CLAVE: Activa Flexbox */
    flex-direction: column; /* <-- CLAVE: Alinea los hijos verticalmente */
    height: 100%; /* <-- CLAVE: Ocupa todo el alto de la columna */
}

.product-card:hover {
    transform: translateY(-8px);
    border-color: var(--heemsa-primary);
    box-shadow: 0 15px 40px rgba(255, 58, 23, 0.15);
}

/* Carrusel de Imágenes (Altura Consistente) */
.product-card .carousel {
    background-color: #f8f9fa;
    aspect-ratio: 1 / 1; /* <-- CLAVE: Mantiene proporción cuadrada, unifica la altura */
    width: 100%;
}

.product-card .carousel-inner,
.product-card .carousel-item {
    height: 100%;
}

.product-card .product-image {
    width: 100%;
    height: 100%;
    object-fit: contain; /* <-- CLAVE: La imagen se ajusta sin deformarse */
    padding: 0.5rem;
}

/* Cuerpo de la Tarjeta (Contenido Flexible) */
.product-card .card-body {
    padding: 1rem;
    display: flex;
    flex-direction: column;
    flex-grow: 1; /* <-- CLAVE: Hace que esta sección crezca y empuje el pie hacia abajo */
}

.product-card .card-title {
    color: var(--heemsa-primary);
    font-weight: 700;
    font-size: 1rem;
    line-height: 1.3;
    /* Limita el título a 2 líneas para mantener la consistencia */
    height: 2.6rem; 
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    margin-bottom: 0.5rem;
}

.product-card .card-text {
    color: #6c757d;
    font-size: 0.85rem;
    margin-bottom: 0;
    flex-grow: 1; /* Ocupa el espacio restante en el card-body */
}

/* Pie de la Tarjeta (Siempre Abajo) */
.product-card .card-footer {
    background: #f8f9fa;
    border-top: 2px solid #e9ecef;
    padding: 0.75rem 1rem;
    margin-top: auto; /* <-- CLAVE: Se alinea al final del contenedor flex */
}

.product-card .text-success {
    color: var(--heemsa-primary) !important;
    font-weight: 700;
    font-size: 1.2rem;
}

.product-card .view-details-btn {
    background: linear-gradient(135deg, var(--heemsa-primary) 0%, var(--heemsa-secondary) 100%);
    border: none;
    color: white;
    font-weight: 600;
    border-radius: 8px;
    padding: 0.5rem 1rem;
    transition: all 0.3s ease;
    font-size: 0.8rem;
}

.product-card .view-details-btn:hover {
    transform: scale(1.05);
    box-shadow: 0 5px 15px rgba(255, 58, 23, 0.4);
}

/* --- Estilos para Precios Promocionales --- */
.price-container {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
}

.original-price {
  font-size: 0.9rem;
  line-height: 1;
  font-weight: 400;
}

.promo-price {
  line-height: 1.2;
}

/* Estilos específicos para el modal */
.modal-body .original-price {
    font-size: 1.1rem;
}

.modal-body .promo-price {
    font-size: 1.5rem !important; /* Asegurar que el tamaño se aplique */
}

/* =================================================================== */
/* = SOLUCIÓN RESPONSIVE DEFINITIVA PARA MÓVIL (TARJETAS Y PAGINACIÓN) = */
/* =================================================================== */
@media (max-width: 767.98px) {

  /* --- SOLUCIÓN PARA LA ALTURA DE LAS TARJETAS --- */
  
  /* Hacemos que la columna del grid contenga una tarjeta de altura completa. */
  #productsGrid > .col {
    display: flex;
  }

  /* Forzamos a la tarjeta a usar todo el alto disponible y ser un contenedor flex. */
  .product-card {
    display: flex !important;
    flex-direction: column !important;
    width: 100%; /* Asegura que ocupe todo el ancho de la columna */
    height: 100%; /* Ocupa toda la altura que le da la columna */
  }

  /* Hacemos que el cuerpo de la tarjeta crezca y ocupe el espacio sobrante. */
  .product-card .card-body {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
  }

  /* ¡CAMBIO CLAVE!
     Asignamos una altura fija al título y cortamos el texto sobrante.
     Esto garantiza que esta sección siempre ocupe el mismo espacio.
  */
  .product-card .card-title {
    min-height: 2.8em; /* Espacio reservado para 2 líneas de texto */
    max-height: 2.8em;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    margin-bottom: 0.5rem;
  }

  /* El párrafo del SKU se expandirá para empujar el footer hacia abajo. */
  .product-card .card-text {
    flex-grow: 1;
  }

  /* El footer se alineará automáticamente en la parte inferior. */
  .product-card .card-footer {
    margin-top: auto;
  }


  /* --- SOLUCIÓN PARA LA PAGINACIÓN --- */

  /* Asegura que el contenedor ocupe el ancho correcto. */
  #paginationContainer {
    padding: 0 1rem;
    box-sizing: border-box;
  }
  
  /* ¡CAMBIO CLAVE! 
     Forzamos a que la lista de paginación no se divida en varias líneas.
     Esto mantendrá los 3 botones y las flechas en una sola fila.
  */
  #paginationContainer .pagination {
    flex-wrap: nowrap !important; /* Evita que los botones salten de línea */
    justify-content: center;
  }
}

/* =================================================================== */
/* = ESTILOS PARA TARJETAS MINIMALISTAS Y MODAL INMERSIVO (v6)       = */
/* =================================================================== */

/* --- Estilos para Indicadores en Tarjetas de Producto --- */
.product-card .carousel-indicators {
    position: absolute;
    bottom: 0;
    margin-bottom: 0.5rem;
}

.product-card .carousel-indicators button {
    width: 8px;
    height: 8px;
    border-radius: 100%;
    background-color: rgba(255, 58, 23, 0.5); /* Color HEEMSA semi-transparente */
    border: none;
}

.product-card .carousel-indicators .active {
    background-color: var(--heemsa-primary); /* Color HEEMSA sólido */
}

/* --- Estilos para el Nuevo Modal Inmersivo --- */

/* Imagen principal del modal */
.modal-main-image {
    max-height: 400px;
    object-fit: contain;
}

/* Miniaturas (Thumbnails) */
.modal-thumbnails .modal-thumbnail {
    opacity: 0.6;
    transition: all 0.2s ease;
    border: 2px solid transparent;
}

.modal-thumbnails .modal-thumbnail:hover {
    opacity: 1;
    border-color: var(--heemsa-light);
}

.modal-thumbnails .modal-thumbnail.active {
    opacity: 1;
    border-color: var(--heemsa-primary);
}

/* Pestañas de Información */
.nav-tabs .nav-link {
    color: var(--muted-text);
    font-weight: 600;
}

.nav-tabs .nav-link.active {
    color: var(--heemsa-primary);
    border-color: var(--border-color) var(--border-color) var(--white);
    border-bottom-width: 3px;
    border-bottom-color: var(--heemsa-primary);
}

/* Tabla de Especificaciones */
.spec-table {
    font-size: 0.9rem;
}
.spec-table td {
    vertical-align: middle;
}
.spec-table td:first-child {
    width: 40%;
}

/* =================================================================== */
/* = ESTILOS PARA ESTABILIZAR EL TAMAÑO DEL MODAL (v7)             = */
/* =================================================================== */

/* Contenedor que envuelve al carrusel dentro del modal */
.modal-image-container {
    width: 100%;
    /* Define una relación de aspecto cuadrada para el contenedor. 
       Esto crea un marco consistente. */
    aspect-ratio: 1 / 1; 
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #f8f9fa; /* Un fondo suave por si la imagen es pequeña */
    border-radius: 0.5rem;
    overflow: hidden;
}

/* El carrusel y sus elementos internos deben llenar el contenedor */
.modal-image-container .carousel,
.modal-image-container .carousel-inner,
.modal-image-container .carousel-item {
    height: 100%;
    width: 100%;
}

/* La imagen principal dentro del carrusel del modal */
.modal-main-image {
    width: 100%;
    height: 100%;
    /* La imagen se ajustará dentro del espacio sin ser recortada ni deformada. */
    object-fit: contain; 
}

/* =================================================================== */
/* = ESTILOS PARA MODAL CON MINIATURAS VERTICALES (v8)             = */
/* =================================================================== */

/* Contenedor principal de la galería en el modal */
.modal-gallery-container {
    display: flex;
    gap: 1rem;
    height: 100%;
}

/* Columna de miniaturas verticales (Escritorio) */
.modal-thumbnails-vertical {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex-shrink: 0; /* Evita que la columna se encoja */
    width: 80px; /* Ancho fijo para las miniaturas */
    max-height: 450px; /* Altura máxima antes de activar scroll */
    overflow-y: auto; /* Scroll si hay muchas imágenes */
    padding-right: 0.5rem; /* Espacio para el scrollbar */
}

/* Estilo del scrollbar para que sea discreto */
.modal-thumbnails-vertical::-webkit-scrollbar {
    width: 5px;
}
.modal-thumbnails-vertical::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 10px;
}
.modal-thumbnails-vertical::-webkit-scrollbar-thumb {
    background: #ccc;
    border-radius: 10px;
}
.modal-thumbnails-vertical::-webkit-scrollbar-thumb:hover {
    background: #aaa;
}

/* Contenedor de cada miniatura */
.modal-thumbnail-wrapper {
    border: 2px solid var(--border-color);
    border-radius: 8px;
    padding: 2px;
    cursor: pointer;
    transition: var(--transition);
}

.modal-thumbnail {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: contain;
    border-radius: 6px;
    opacity: 0.7;
}

.modal-thumbnail-wrapper:hover {
    border-color: var(--heemsa-secondary);
}

.modal-thumbnail.active {
    opacity: 1;
}

/* La miniatura activa tiene un borde destacado */
.modal-thumbnail.active + .modal-thumbnail-wrapper, /* No funciona así, hay que aplicarlo al wrapper */
.modal-thumbnail.active {
    opacity: 1;
}
.modal-thumbnail-wrapper:has(.modal-thumbnail.active) {
    border-color: var(--heemsa-primary);
}


/* Contenedor de la imagen principal, debe crecer para ocupar el espacio */
.modal-image-container {
    flex-grow: 1;
    width: 100%;
    aspect-ratio: 1 / 1; 
    display: flex;
}

/* Ajustes responsivos para Tabletas y Móviles */
@media (max-width: 991.98px) {
    .modal-gallery-container {
        /* Cambiamos a dirección de columna: imagen arriba, miniaturas abajo */
        flex-direction: column; 
    }

    .modal-thumbnails-vertical {
        /* Convertimos la columna en una fila horizontal */
        flex-direction: row;
        overflow-x: auto; /* Activamos scroll horizontal */
        overflow-y: hidden;
        max-height: 100px; /* Altura máxima para la fila de miniaturas */
        width: 100%;
        padding-right: 0;
        padding-bottom: 0.5rem;
    }

    .modal-thumbnail-wrapper {
        flex: 0 0 80px; /* Cada miniatura tiene un ancho fijo de 80px */
        height: 80px;
    }
}

/* =================================================================== */
/* = CÓDIGO CSS DEFINITIVO PARA MODAL ESTABLE Y CON SCROLL (v15)     = */
/* =================================================================== */

/* --- Estructura y Tamaño del Modal --- */
#productModal .modal-dialog {
  max-width: 900px;
}

#productModal .modal-content {
  /* Define una altura máxima para todo el modal, basada en la altura de la pantalla */
  height: 85vh;
  max-height: 700px; /* Un límite máximo para pantallas muy grandes */
}

#productModal .modal-body {
  /* Hacemos que el cuerpo del modal sea un contenedor flex para que sus hijos (las columnas) puedan usar el 100% de la altura */
  display: flex;
  height: 100%;
  overflow: hidden; /* Evita que el propio cuerpo del modal tenga scroll */
}

/* --- Columna Derecha (Información) --- */
/* La columna de información debe ser un contenedor flex vertical */
#productModal .col-lg-6.d-flex.flex-column {
  /* Le decimos a la columna que no se encoja y que ocupe todo el alto disponible */
  flex-shrink: 0;
  height: 100%;
}

/* --- Contenedor de Pestañas (Área de Scroll Controlado) --- */
/* ¡ESTA ES LA SOLUCIÓN CLAVE! */
#productModal .tab-content {
  /* flex: 1 1 auto; es una forma robusta de decirle que crezca y se encoja según sea necesario */
  flex: 1 1 auto;
  overflow-y: auto; /* CREA EL SCROLL INTERNO si el contenido se desborda */
  
  /* Esta regla es crucial en contextos de flexbox para que el overflow funcione correctamente */
  min-height: 0; 
  
  border: 1px solid var(--border-color);
  border-top: none;
  padding: 1rem;
  border-radius: 0 0 var(--border-radius-sm) var(--border-radius-sm);
}

/* El pie de página del modal (Precio y Botón) */
#productModal .mt-auto {
  flex-shrink: 0; /* Evita que este elemento se encoja */
}

/* Reglas de Bootstrap para mostrar/ocultar los paneles de pestañas */
#productModal .tab-pane.fade { display: none; opacity: 0; transition: opacity .15s linear; }
#productModal .tab-pane.fade.show.active { display: block; opacity: 1; }

/* --- Estilos de la Galería de Imágenes --- */
#productModal .modal-gallery-container { display: flex; gap: 1rem; height: 100%; }
#productModal .modal-thumbnails-vertical { display: flex; flex-direction: column; gap: 0.5rem; flex-shrink: 0; width: 80px; overflow-y: auto; padding-right: 0.5rem; }
#productModal .modal-thumbnails-vertical::-webkit-scrollbar { width: 5px; }
#productModal .modal-thumbnails-vertical::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; }
#productModal .modal-thumbnails-vertical::-webkit-scrollbar-thumb { background: #ccc; border-radius: 10px; }
#productModal .modal-thumbnail-wrapper { border: 2px solid var(--border-color); border-radius: 8px; padding: 2px; cursor: pointer; transition: var(--transition); }
#productModal .modal-thumbnail { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; border-radius: 6px; opacity: 0.7; }
#productModal .modal-thumbnail-wrapper:hover { border-color: var(--heemsa-secondary); }
#productModal .modal-thumbnail-wrapper:has(.modal-thumbnail.active) { border-color: var(--heemsa-primary); }
#productModal .modal-image-container { flex-grow: 1; min-width: 0; } /* min-width: 0 es otro truco de flexbox */
#productModal .modal-main-image { width: 100%; height: 100%; object-fit: contain; }

/* --- Responsividad del Modal --- */
@media (max-width: 991.98px) {
  #productModal .modal-content { height: auto; max-height: 85vh; } /* En móvil, la altura es automática con un máximo */
  #productModal .modal-body { flex-direction: column; overflow-y: auto; } /* El scroll pasa a ser del modal completo */
  #productModal .modal-gallery-container { flex-direction: column; }
  #productModal .modal-thumbnails-vertical { flex-direction: row; overflow-x: auto; max-height: 100px; width: 100%; padding-bottom: 0.5rem; }
  #productModal .modal-thumbnail-wrapper { flex: 0 0 80px; height: 80px; }
  #productModal .tab-content { overflow-y: visible; min-height: auto; }
}