/* =============================
   CATALOGO - VISTA PREVIA
   ============================= */

.producto-catalogo-section{
  background: var(--gray-light-color);
  min-height: calc(100vh - var(--header-total-h) - var(--content-gap-top));
  padding-bottom: 40px;
}

/* Header filtros */
.catalogo-header{
  background: #fff;
  border-radius: 16px;
  padding: 16px;
  box-shadow: 0 6px 18px rgba(0,0,0,0.06);
  margin: 10px 16px 0;
}

/* Contenedor resultados */
.catalogo-resultados{
  padding: 0 16px;
}

/* =============================
   RESUMEN (barra superior)
   ============================= */
.catalogo-resumen{
  background:#fff;
  border-radius:16px;
  padding:14px 16px;
  box-shadow:0 10px 24px rgba(0,0,0,.06);
  margin: 14px 0 10px;            /* ya tiene padding lateral el contenedor */
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.resumen-titulo{
  font-weight:800;
  font-size:16px;
  letter-spacing:.2px;
}

.resumen-sub{
  font-size:13px;
  color:#667085;
  margin-top:2px;
}

.resumen-right{
  display:flex;
  align-items:center;
  gap:10px;
}

.badge-total{
  background: linear-gradient(135deg, #111827, #374151);
  color:#fff;
  padding:8px 12px;
  border-radius:999px;
  font-weight:700;
  font-size:13px;
  white-space:nowrap;
}

.resumen-busqueda{
  width: 240px;
}

@media (max-width: 768px){
  .catalogo-resumen{ flex-direction:column; align-items:stretch; }
  .resumen-right{ justify-content:space-between; }
  .resumen-busqueda{ width:100%; }
}

/* =============================
   MENSAJES
   ============================= */
.catalogo-msg{
  margin: 0 0 12px;
}

.catalogo-msg .msg-box{
  background:#fff;
  border-radius:14px;
  padding:12px 14px;
  box-shadow:0 6px 18px rgba(0,0,0,.06);
  border-left: 6px solid #0d6efd;
}
.catalogo-msg .msg-box.warn{ border-left-color:#f59e0b; }
.catalogo-msg .msg-box.err{ border-left-color:#ef4444; }

/* =============================
   GRID PREVIEW
   ============================= */
.catalogo-preview{
  margin: 0 0 16px;
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap:12px;
}

@media (max-width: 1200px){ .catalogo-preview{ grid-template-columns: repeat(3, 1fr);} }
@media (max-width: 768px){ .catalogo-preview{ grid-template-columns: repeat(2, 1fr);} }
@media (max-width: 420px){ .catalogo-preview{ grid-template-columns: 1fr;} }

.cat-card{
  background:#fff;
  border-radius:16px;
  overflow:hidden;
  border: 1px solid rgba(17,24,39,.06);
  box-shadow:0 10px 22px rgba(0,0,0,.06);
  transition: transform .15s ease, box-shadow .15s ease;
}

.cat-card:hover{
  transform: translateY(-2px);
  box-shadow:0 14px 30px rgba(0,0,0,.10);
}

/* área imagen */
.cat-media{
  height: 170px;
  background:#f3f4f6;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

.cat-img{
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 12px;
  display:block;
}

/* pill marca */
.cat-media .marca-pill{
  position:absolute;
  top:10px;
  left:10px;
  background: rgba(17,24,39,.86);
  color:#fff;
  font-size:11px;
  padding:6px 10px;
  border-radius:999px;
  max-width: 80%;
  overflow:hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* cuerpo */
.cat-body{
  padding:12px 12px 10px;
}

.cat-title{
  font-weight:800;
  font-size:13px;
  line-height:1.25;
  height: 34px;
  overflow:hidden;
}

.cat-code{
  margin-top:6px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  font-size:12px;
  color:#6b7280;
}

.cat-chip{
  background:#111827;
  color:#fff;
  font-size:11px;
  padding:5px 8px;
  border-radius:999px;
  white-space:nowrap;
}

/* atributos scroll */
.cat-attr{
  margin-top:8px;
  font-size:12px;
  color:#374151;
  max-height: 54px;
  overflow:auto;
  padding-right: 6px;
}

.cat-attr::-webkit-scrollbar{ width: 6px; }
.cat-attr::-webkit-scrollbar-thumb{
  background: rgba(17,24,39,.25);
  border-radius: 999px;
}

/* =============================
   FOOTER (cargar más / contador)
   ============================= */
.catalogo-footer{
  margin: 0 0 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.catalogo-counter{
  color:#6b7280;
  font-size:12px;
}

/* =============================
   SKELETON
   ============================= */
.skeleton{
  border-radius:16px;
  overflow:hidden;
  background:#fff;
  border: 1px solid rgba(17,24,39,.06);
  box-shadow:0 10px 22px rgba(0,0,0,.06);
}

.skeleton .sk-media{
  height:170px; /* igual que cat-media */
  background: linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);
  background-size: 200% 100%;
  animation: sk 1.2s infinite;
}

.skeleton .sk-body{ padding:12px; }

.skeleton .sk-line{
  height:12px;
  border-radius:999px;
  margin:10px 0;
  background: linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);
  background-size: 200% 100%;
  animation: sk 1.2s infinite;
}
.skeleton .sk-line.short{ width:60%; }

@keyframes sk{
  0%{ background-position: 200% 0; }
  100%{ background-position: -200% 0; }
}

@media (min-width: 992px){
  .catalogo-resumen{
    position: sticky;
    top: calc(var(--header-total-h) + 10px);
    z-index: 20;
  }
}