* { box-sizing: border-box; }
html { font-feature-settings: "tnum" 1; }
body { margin: 0; }
img { max-width: 100%; display: block; }
a { text-decoration: none; }

:focus-visible { outline: 3px solid var(--cw-hoja); outline-offset: 2px; }

.cw-skip {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--cw-coco-oscuro); color: var(--cw-crema); padding: 0.8rem 1.2rem;
  border-radius: 0 0 var(--cw-radius-sm) 0; font-family: var(--cw-font-body); font-weight: 700;
}
.cw-skip:focus { left: 0; }

.cw-header {
  background: var(--cw-blanco);
  border-bottom: 1px solid var(--cw-linea);
  position: sticky;
  top: 0;
  z-index: 10;
}
.cw-header-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0.9rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
}
.cw-brand {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--cw-font-display);
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--cw-coco-oscuro);
}
.cw-brand img { height: 2.1rem; width: auto; }
.cw-header-search-btn { margin-left: auto; }

/* fila de categorías, siempre debajo de marca+iconos — así el buscador y
   la hamburguesa nunca se desplazan aunque la lista de categorías crezca
   y haga wrap (4-ago, encontrado en QA visual real a 1440px). */
.cw-nav-row {
  max-width: 1100px; margin: 0 auto; padding: 0 1.5rem 0.7rem;
  border-top: 1px solid var(--cw-linea);
}
.cw-nav { display: flex; align-items: center; gap: 0.1rem; flex-wrap: wrap; padding-top: 0.5rem; }
.cw-nav-link {
  font-family: var(--cw-font-display);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--cw-tinta);
  padding: 0.5rem 0.8rem;
  border-radius: var(--cw-radius-pill);
  transition: background 0.15s ease, color 0.15s ease;
  background: none;
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
.cw-nav-link:hover { background: var(--cw-hoja-10); color: var(--cw-hoja); }
.cw-nav-link.activo { background: var(--cw-hoja); color: var(--cw-blanco); }
.cw-megamenu-caret { font-size: 0.75rem; }

/* ---- Topbar ---- */
.cw-topbar { background: var(--cw-coco-oscuro); color: var(--cw-crema); }
.cw-topbar-inner {
  max-width: 1100px; margin: 0 auto; padding: 0.45rem 1.5rem;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1rem;
}
.cw-topbar-mini { display: flex; gap: 1.1rem; justify-self: end; }
.cw-topbar-mini a { color: var(--cw-arena); font-size: 0.82rem; opacity: 0.9; }
.cw-topbar-mini a:hover { opacity: 1; color: var(--cw-crema); }
.cw-topbar-mensaje { margin: 0; font-size: 0.85rem; text-align: center; color: var(--cw-crema); font-weight: 600; }

/* ---- Icon buttons (buscador, menú móvil) ---- */
.cw-icon-btn {
  background: none; border: none; cursor: pointer; font-size: 1.15rem;
  padding: 0.4rem 0.5rem; border-radius: var(--cw-radius-sm); line-height: 1;
}
.cw-icon-btn:hover { background: var(--cw-hoja-10); }
.cw-menu-toggle { display: none; }

/* ---- Buscador ---- */
.cw-search-panel {
  display: flex; gap: 0.5rem; max-width: 1100px; margin: 0 auto; padding: 0 1.5rem 0.9rem;
}
.cw-search-panel[hidden] { display: none; }
.cw-search-panel input {
  flex: 1; font-family: var(--cw-font-body); font-size: 0.95rem; padding: 0.55rem 0.9rem;
  border: 1px solid var(--cw-linea); border-radius: var(--cw-radius-sm);
}

/* ---- Megamenú ---- */
.cw-megamenu-trigger { position: relative; }
.cw-megamenu {
  position: absolute; top: calc(100% + 0.6rem); left: 50%; transform: translateX(-50%);
  background: var(--cw-blanco); border: 1px solid var(--cw-linea); border-radius: var(--cw-radius-sm);
  box-shadow: 0 12px 32px rgba(75,46,27,0.14); padding: 1.5rem; z-index: 20; width: min(520px, 90vw);
}
.cw-megamenu-inner { display: grid; grid-template-columns: 1fr 1.4fr; gap: 1.8rem; }
.cw-megamenu-col h3, .cw-megamenu-destacados h3 {
  font-family: var(--cw-font-display); font-size: 0.82rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--cw-cascara); margin: 0 0 0.7rem;
}
.cw-megamenu-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.cw-megamenu-col a {
  display: block; color: var(--cw-tinta); font-size: 0.92rem; padding: 0.3rem 0.4rem; border-radius: var(--cw-radius-sm);
}
.cw-megamenu-col a:hover { background: var(--cw-hoja-10); color: var(--cw-hoja); }
.cw-megamenu-cards { display: flex; flex-direction: column; gap: 0.7rem; }
.cw-megamenu-cards .cw-producto { display: flex; flex-direction: row; gap: 0.7rem; }
.cw-megamenu-cards .cw-producto-foto { width: 64px; aspect-ratio: 1/1; flex-shrink: 0; }
.cw-megamenu-cards .cw-producto-titulo { font-size: 0.85rem; -webkit-line-clamp: 2; }

/* Desplegable por categoría (11-sept): mismo patrón que el megamenú de
   Marcas pero de una sola columna de subcategorías, sin el ancho fijo a
   520px pensado para dos columnas + destacados. */
.cw-megamenu--categoria { left: 0; transform: none; width: max-content; min-width: 220px; padding: 0.7rem; }
.cw-megamenu--categoria .cw-megamenu-col ul { gap: 0.1rem; }
.cw-megamenu-vertodo { font-weight: 700; border-bottom: 1px solid var(--cw-linea); margin-bottom: 0.3rem; padding-bottom: 0.5rem !important; }

/* el acordeón de categorías/marcas solo aparece dentro del drawer móvil */
.cw-nav-mobile-catalogo { display: none; }

.cw-main { max-width: 1100px; margin: 0 auto; padding: 1.5rem; min-height: 60vh; }

.cw-footer { background: var(--cw-coco-oscuro); color: var(--cw-arena); margin-top: 3rem; }
.cw-newsletter {
  background: var(--cw-cascara);
  /* el header es sticky (position:sticky;top:0) — sin esto, saltar aquí
     desde el enlace "Newsletter" del topbar deja el título tapado debajo
     del header (4-ago). Valor generoso: cubre tanto el header de 2 filas
     de escritorio como el de 1 fila en móvil sin recortar el título. */
  scroll-margin-top: 130px;
}
.cw-newsletter-inner {
  max-width: 1100px; margin: 0 auto; padding: 1.8rem 1.5rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap;
}
.cw-newsletter-texto h3 { font-family: var(--cw-font-display); color: var(--cw-crema); margin: 0 0 0.2rem; font-size: 1.1rem; }
.cw-newsletter-texto p { margin: 0; color: var(--cw-arena); font-size: 0.92rem; }
.cw-newsletter-form { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.cw-newsletter-form input[type="email"] {
  padding: 0.65rem 0.9rem; border-radius: 999px; border: none; font-family: var(--cw-font-body);
  font-size: 0.92rem; min-width: 220px;
}
.cw-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.cw-newsletter-legal { margin: 0.4rem 0 0; font-size: 0.78rem; color: var(--cw-arena); }
.cw-newsletter-legal a { color: var(--cw-arena); text-decoration: underline; }
.cw-newsletter-msg { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem 1rem; font-size: 0.88rem; }
.cw-newsletter-msg--ok { color: var(--cw-lima); }
.cw-newsletter-msg--error { color: #ffb4a8; }
.cw-footer-inner { max-width: 1100px; margin: 0 auto; padding: 2.5rem 1.5rem 1.5rem; }
.cw-footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 2rem; }
.cw-footer-grid p { margin: 0.4rem 0 0; line-height: 1.55; font-size: 0.92rem; color: var(--cw-arena); }
.cw-footer-grid h3 {
  font-family: var(--cw-font-display); font-size: 0.85rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--cw-lima); margin: 0 0 0.6rem; font-weight: 700;
}
.cw-footer-grid a {
  display: block; color: var(--cw-arena); font-size: 0.92rem; padding: 0.2rem 0; opacity: 0.9;
}
.cw-footer-grid a:hover { opacity: 1; text-decoration: underline; }
.cw-footer-brand { color: var(--cw-crema); margin: 0 0 0.6rem; }
.cw-footer-bottom {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem;
  margin-top: 2.2rem; padding-top: 1.2rem; border-top: 1px solid rgba(255,255,255,0.15);
  font-size: 0.8rem; color: var(--cw-arena); opacity: 0.8;
  /* la burbuja flotante de WhatsApp es fixed en la esquina inferior derecha:
     sin este hueco, el texto del final del footer queda justo debajo de
     ella al hacer scroll hasta el final (5-ago). */
  padding-bottom: 90px;
}

.cw-whatsapp-flotante {
  position: fixed; right: 20px; bottom: 20px; z-index: 60;
  width: 56px; height: 56px; border-radius: 50%; background: #25D366; color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 14px rgba(0,0,0,0.25); transition: transform 0.15s ease;
}
.cw-whatsapp-flotante:hover { transform: scale(1.08); }

.cw-cookie-banner {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
  background: var(--cw-coco-oscuro); color: var(--cw-crema);
  padding: 1rem 1.5rem; display: flex; align-items: center; justify-content: space-between;
  gap: 1.2rem; flex-wrap: wrap; box-shadow: 0 -4px 16px rgba(0,0,0,0.15);
}
/* el atributo [hidden] del navegador (display:none) y esta regla tienen la
   MISMA especificidad (0-1-0) — sin esto, display:flex gana por cargar
   después y el banner "rechazado/aceptado" seguía visible en pantalla
   aunque hidden=true en el DOM. Encontrado en QA visual real. */
.cw-cookie-banner[hidden] { display: none; }
.cw-cookie-banner p { margin: 0; font-size: 0.9rem; max-width: 640px; }
.cw-cookie-banner a { color: var(--cw-lima); text-decoration: underline; }
.cw-cookie-botones { display: flex; gap: 0.6rem; flex-shrink: 0; }
.cw-cookie-botones .cw-btn { padding: 0.5em 1.3em; font-size: 0.9rem; }

/* ---- Catálogo ---- */
.cw-catalogo { display: flex; gap: 2rem; align-items: flex-start; }
.cw-filtros { width: 220px; flex-shrink: 0; min-width: 0; }
.cw-buscador { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1.5rem; }
.cw-buscador input {
  width: 100%; min-width: 0; box-sizing: border-box; font-family: var(--cw-font-body); font-size: 0.9rem;
  padding: 0.5rem 0.7rem; border: 1px solid var(--cw-linea); border-radius: var(--cw-radius-sm);
}
.cw-buscador button { width: 100%; }
.cw-filtros h2 {
  font-family: var(--cw-font-display); font-size: 0.85rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--cw-cascara); margin: 1.2rem 0 0.5rem;
}
.cw-filtro-lista { list-style: none; margin: 0; padding: 0; }
.cw-filtro-lista li { margin: 0.15rem 0; }
.cw-filtro-lista a {
  display: flex; justify-content: space-between; gap: 0.5rem;
  color: var(--cw-tinta); padding: 0.35rem 0.5rem; border-radius: var(--cw-radius-sm); font-size: 0.92rem;
}
.cw-filtro-lista a:hover { background: var(--cw-hoja-10); }
.cw-filtro-lista a.activo { background: var(--cw-hoja); color: var(--cw-blanco); font-weight: 700; }
.cw-filtro-lista a.activo .cw-filtro-n { color: var(--cw-blanco); }
.cw-filtro-n { color: var(--cw-cascara); font-size: 0.82rem; }

.cw-grid-wrap { flex: 1; min-width: 0; }
.cw-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem; }
.cw-chip {
  display: inline-flex; align-items: center; gap: 0.3rem; background: var(--cw-arena-50);
  color: var(--cw-tinta); font-size: 0.85rem; padding: 0.3rem 0.7rem; border-radius: var(--cw-radius-pill);
}
.cw-chip:hover { background: var(--cw-hoja-10); color: var(--cw-hoja); }

/* Chips de subcategoría (11-sept): hijas en categoría padre, hermanas en
   hoja — encima de la rejilla, mismo look de píldora que .cw-chip pero con
   borde (distingue "quitar filtro" de "ir a subcategoría"). */
.cw-chips-categoria { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1.2rem; }
.cw-chip-categoria {
  display: inline-flex; align-items: center; gap: 0.3rem; background: var(--cw-blanco);
  border: 1px solid var(--cw-linea); color: var(--cw-tinta); font-size: 0.85rem;
  padding: 0.35rem 0.8rem; border-radius: var(--cw-radius-pill); font-family: var(--cw-font-display); font-weight: 600;
}
.cw-chip-categoria:hover { background: var(--cw-hoja-10); border-color: var(--cw-hoja); color: var(--cw-hoja); }
.cw-chip-categoria.activo { background: var(--cw-hoja); border-color: var(--cw-hoja); color: var(--cw-blanco); }
.cw-chip-categoria.activo .cw-filtro-n { color: var(--cw-blanco); }

.cw-resultados-orden { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.cw-resultados { color: var(--cw-cascara); margin: 0; font-size: 0.9rem; }
.cw-orden { display: flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; color: var(--cw-cascara); margin-bottom: 1rem; }
.cw-orden select {
  font-family: var(--cw-font-body); font-size: 0.88rem; padding: 0.35rem 0.6rem;
  border: 1px solid var(--cw-linea); border-radius: var(--cw-radius-sm); color: var(--cw-tinta); background: var(--cw-blanco);
}
.cw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1.1rem; }

.cw-producto { color: inherit; transition: transform 0.15s ease, box-shadow 0.15s ease; }
.cw-producto:hover { transform: translateY(-3px); }
.cw-producto-foto { aspect-ratio: 3/4; background: var(--cw-arena-50); overflow: hidden; position: relative; }
.cw-producto-foto picture { display: block; width: 100%; height: 100%; }
.cw-producto-foto img { width: 100%; height: 100%; object-fit: cover; }

.cw-qv-btn {
  position: absolute; left: 0.5rem; right: 0.5rem; bottom: 0.5rem;
  background: rgba(255, 255, 255, 0.94); border: none; border-radius: var(--cw-radius-sm);
  padding: 0.5rem 0.6rem; font-size: 0.78rem; font-weight: 700; color: var(--cw-coco-oscuro);
  cursor: pointer; opacity: 0; transform: translateY(4px);
  transition: opacity 0.15s ease, transform 0.15s ease;
}
.cw-producto:hover .cw-qv-btn, .cw-qv-btn:focus { opacity: 1; transform: translateY(0); }
@media (hover: none) { .cw-qv-btn { opacity: 1; transform: none; } }
.cw-producto-sin-foto {
  width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
  font-size: 2.4rem; background: var(--cw-arena-50);
}
.cw-producto-info { padding: 0.8rem 0.9rem 1rem; }
.cw-producto-titulo {
  font-family: var(--cw-font-display); font-weight: 700; font-size: 0.95rem;
  color: var(--cw-coco-oscuro); margin: 0 0 0.2rem; overflow: hidden; text-overflow: ellipsis;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.cw-producto-meta { color: var(--cw-cascara); font-size: 0.82rem; margin: 0 0 0.4rem; }
.cw-producto-precio { font-family: var(--cw-font-display); font-weight: 700; color: var(--cw-hoja); font-size: 1.1rem; margin: 0; }

.cw-vacio, .cw-vacio-pagina { text-align: center; color: var(--cw-cascara); padding: 3rem 1rem; }
.cw-vacio-emoji { font-size: 3rem; margin: 0; }
.cw-vacio-pagina h1 { font-family: var(--cw-font-display); color: var(--cw-coco-oscuro); }

.cw-paginacion { display: flex; justify-content: center; align-items: center; gap: 1.2rem; margin: 2rem 0 1rem; font-size: 0.9rem; }
.cw-paginacion a { color: var(--cw-hoja); font-weight: 700; }

/* ---- Migas de pan ---- */
.cw-breadcrumbs { font-size: 0.85rem; color: var(--cw-cascara); margin-bottom: 1.2rem; }
.cw-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.3rem; }
.cw-breadcrumbs li { display: flex; align-items: center; gap: 0.3rem; }
.cw-breadcrumbs li + li::before { content: "›"; color: var(--cw-cascara); }
.cw-breadcrumbs a { color: var(--cw-cascara); text-decoration: underline; text-underline-offset: 2px; }
.cw-breadcrumbs a:hover { color: var(--cw-hoja); }
.cw-breadcrumbs [aria-current="page"] { color: var(--cw-tinta); }

/* ---- Ficha de producto ---- */
.cw-ficha { display: flex; gap: 2.5rem; flex-wrap: wrap; }
.cw-ficha-fotos { flex: 1 1 380px; min-width: 280px; }
.cw-ficha-foto-boton {
  display: block; width: 100%; padding: 0; border: none; background: none; cursor: zoom-in; position: relative;
}
.cw-ficha-foto-principal {
  width: 100%; border-radius: var(--cw-radius-lg); box-shadow: var(--cw-shadow);
  aspect-ratio: 3/4; object-fit: contain; background: var(--cw-arena-50);
}
.cw-ficha-foto-zoom-hint {
  position: absolute; right: 0.7rem; bottom: 0.7rem; background: rgba(75,46,27,0.75); color: var(--cw-crema);
  font-size: 0.78rem; padding: 0.3rem 0.6rem; border-radius: var(--cw-radius-pill);
}
.cw-ficha-sin-foto { border-radius: var(--cw-radius-lg); aspect-ratio: 3/4; font-size: 4rem; }
.cw-ficha-miniaturas { display: flex; gap: 0.5rem; margin-top: 0.6rem; flex-wrap: wrap; }
.cw-miniatura {
  width: 64px; height: 64px; padding: 0; border-radius: var(--cw-radius-sm);
  cursor: pointer; border: 2px solid transparent; opacity: 0.75; background: none;
  overflow: hidden; display: block;
}
.cw-miniatura img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cw-miniatura:hover { opacity: 1; }
.cw-miniatura.activa { border-color: var(--cw-hoja); opacity: 1; }
.cw-ficha-badges { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-bottom: 0.6rem; }
.cw-ficha-badge {
  display: inline-block; background: var(--cw-lima); color: var(--cw-coco-oscuro);
  font-family: var(--cw-font-display); font-weight: 700; font-size: 0.78rem;
  text-transform: uppercase; letter-spacing: 0.03em; padding: 0.3rem 0.7rem;
  border-radius: var(--cw-radius-pill);
}
/* US-20260813: pieza vendida — distinta del verde "pieza única" a
   propósito, para que no parezca disponible de un vistazo rápido. */
.cw-ficha-badge--vendida { background: var(--cw-coco-oscuro); color: var(--cw-crema); }
.cw-ficha-compartir-fila { display: flex; align-items: center; gap: 0.6rem; margin: 0 0 1.1rem; }
.cw-ficha-compartir-fila span {
  font-family: var(--cw-font-display); font-size: 0.8rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.03em; color: var(--cw-cascara);
}
.cw-compartir-icono {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--cw-linea);
  background: var(--cw-blanco); color: var(--cw-cascara); cursor: pointer;
  transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.cw-compartir-icono:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(75,46,27,0.15); }
.cw-compartir-icono--whatsapp:hover { background: #25D366; border-color: #25D366; color: #fff; }
.cw-compartir-icono--facebook:hover { background: #1877F2; border-color: #1877F2; color: #fff; }
.cw-compartir-icono--x:hover { background: #000; border-color: #000; color: #fff; }
.cw-compartir-icono--copiar:hover,
.cw-compartir-icono--copiar.cw-copiado { background: var(--cw-hoja); border-color: var(--cw-hoja); color: #fff; }
.cw-ficha-info { flex: 1 1 320px; min-width: 260px; }
.cw-ficha-marca { color: var(--cw-cascara); font-weight: 600; margin-top: -0.3rem; }
.cw-ficha-precio { font-family: var(--cw-font-display); font-size: 2rem; font-weight: 800; color: var(--cw-hoja); margin: 0.6rem 0; }
.cw-ficha-datos { list-style: none; margin: 1rem 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; }
.cw-ficha-datos li { font-size: 0.92rem; }
.cw-ficha-datos strong { display: inline-block; min-width: 90px; color: var(--cw-cascara); font-weight: 700; }
.cw-ficha-defectos {
  background: var(--cw-arena-50); border-left: 3px solid var(--cw-cascara); padding: 0.6rem 0.9rem;
  border-radius: var(--cw-radius-sm); font-size: 0.9rem; margin: 0.8rem 0;
}
.cw-guia-tallas { margin: 0.6rem 0 1rem; font-size: 0.88rem; }
.cw-guia-tallas summary {
  cursor: pointer; color: var(--cw-hoja); font-weight: 600; list-style: none;
}
.cw-guia-tallas summary::-webkit-details-marker { display: none; }
.cw-guia-tallas summary:before { content: '▸ '; }
.cw-guia-tallas[open] summary:before { content: '▾ '; }
.cw-guia-tallas-panel {
  margin-top: 0.7rem; padding: 0.9rem 1rem; background: var(--cw-arena-50);
  border-radius: var(--cw-radius-sm);
}
.cw-guia-tallas-aviso { font-size: 0.82rem; color: var(--cw-cascara); margin: 0 0 0.8rem; }
.cw-guia-tallas-panel h3 {
  font-family: var(--cw-font-display); font-size: 0.8rem; text-transform: uppercase;
  letter-spacing: 0.03em; color: var(--cw-tinta); margin: 0.9rem 0 0.4rem;
}
.cw-guia-tallas-panel h3:first-of-type { margin-top: 0; }
.cw-guia-tallas-panel table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.cw-guia-tallas-panel th, .cw-guia-tallas-panel td {
  padding: 0.3rem 0.5rem; border-bottom: 1px solid var(--cw-linea); text-align: left;
}
.cw-guia-tallas-panel tr:last-child th, .cw-guia-tallas-panel tr:last-child td { border-bottom: none; }
.cw-ficha-descripcion { line-height: 1.65; margin: 1rem 0 1.4rem; }
.cw-ficha-descripcion p { margin: 0 0 0.9rem; }
.cw-ficha-descripcion p:last-child { margin-bottom: 0; }
.cw-ficha-confianza { font-size: 0.9rem; color: var(--cw-hoja); font-weight: 600; margin: 0 0 1rem; }
.cw-ficha-cta { display: block; text-align: center; font-size: 1.1rem; }
.cw-ficha-nota { font-size: 0.8rem; color: var(--cw-cascara); text-align: center; margin-top: 0.6rem; }
.cw-ficha-pregunta {
  display: block; text-align: center; margin-top: 0.8rem; font-size: 0.9rem;
  color: var(--cw-cascara); text-decoration: underline; text-underline-offset: 3px;
}
.cw-ficha-pregunta:hover { color: var(--cw-hoja); }

/* ---- Lightbox de fotos (zoom/pantalla completa) ---- */
.cw-lightbox {
  position: fixed; inset: 0; z-index: 200; background: rgba(20,12,7,0.92);
  display: flex; align-items: center; justify-content: center; padding: 2rem;
}
/* [hidden] del navegador y este display:flex empatan en especificidad —
   sin esto el lightbox se queda visible siempre (mismo bug ya visto con
   el banner de cookies y el panel de búsqueda, 3-4 ago). */
.cw-lightbox[hidden] { display: none; }
.cw-lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: var(--cw-radius-sm); }
.cw-lightbox-cerrar {
  position: absolute; top: 1rem; right: 1rem; background: none; border: none; color: var(--cw-crema);
  font-size: 1.8rem; cursor: pointer; line-height: 1; padding: 0.4rem;
}
.cw-lightbox-nav {
  position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,0.15); border: none;
  color: var(--cw-crema); font-size: 2.2rem; cursor: pointer; padding: 0.4rem 0.9rem; border-radius: var(--cw-radius-sm);
}
.cw-lightbox-prev { left: 1rem; }
.cw-lightbox-next { right: 1rem; }

/* ---- Vista rápida (quick view) desde el catálogo/home ---- */
.cw-qv-modal { position: fixed; inset: 0; z-index: 200; }
.cw-qv-modal[hidden] { display: none; }
.cw-qv-backdrop { position: absolute; inset: 0; background: rgba(20,12,7,0.6); }
.cw-qv-panel {
  position: relative; margin: 5vh auto; background: var(--cw-blanco); border-radius: var(--cw-radius-sm);
  box-shadow: 0 12px 32px rgba(75,46,27,0.2); width: min(640px, 92vw); max-height: 90vh; overflow: auto;
  display: grid; grid-template-columns: 1fr; gap: 0;
}
@media (min-width: 560px) { .cw-qv-panel { grid-template-columns: 1fr 1fr; } }
.cw-qv-foto { aspect-ratio: 3/4; background: var(--cw-arena-50); overflow: hidden; }
.cw-qv-foto img { width: 100%; height: 100%; object-fit: cover; }
.cw-qv-info { padding: 1.4rem; display: flex; flex-direction: column; gap: 0.5rem; }
.cw-qv-info h3 { font-family: var(--cw-font-display); margin: 0; color: var(--cw-coco-oscuro); }
.cw-qv-info .cw-btn { margin-top: auto; text-align: center; }
.cw-qv-cerrar {
  position: absolute; top: 0.6rem; right: 0.6rem; background: var(--cw-blanco); border: none;
  border-radius: 50%; width: 2rem; height: 2rem; cursor: pointer; font-size: 1rem; z-index: 1;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}

.cw-ficha-relacionadas { margin-top: 3.5rem; }

/* CTA fijo abajo en móvil (4-ago): solo hay UNA acción posible en toda la
   ficha (Vinted) y en pantallas pequeñas quedaba enterrada tras foto +
   miniaturas + datos + descripción larga. Oculto por defecto, se muestra
   solo bajo el breakpoint móvil (ver @media más abajo). */
.cw-ficha-cta-fija {
  display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 55;
  background: var(--cw-crema); border-top: 1px solid var(--cw-linea);
  padding: 0.7rem 1rem; box-shadow: 0 -4px 16px rgba(0,0,0,0.1);
  align-items: center; justify-content: space-between; gap: 0.8rem;
}
.cw-ficha-cta-fija-precio { font-family: var(--cw-font-display); font-weight: 800; font-size: 1.2rem; color: var(--cw-hoja); white-space: nowrap; }
.cw-ficha-cta-fija .cw-btn { white-space: nowrap; padding: 0.65rem 1.1rem; }

@media (max-width: 720px) {
  .cw-catalogo { flex-direction: column; }
  /* con decenas de marcas, los filtros primero obligaban a un scroll larguísimo
     antes de ver una sola prenda en el móvil — el grid va primero, filtros debajo. */
  .cw-grid-wrap { order: 1; }
  .cw-filtros { order: 2; width: 100%; margin-top: 2rem; }
  .cw-ficha { gap: 1.2rem; }
  .cw-ficha-cta-fija { display: flex; }
  /* con la barra fija + burbuja de WhatsApp a la vez, el texto del final
     de la ficha quedaba tapado por ambas — hueco abajo + burbuja más
     arriba, solo en páginas con esta barra (4-ago). */
  body.cw-tiene-cta-fija { padding-bottom: 76px; }
  body.cw-tiene-cta-fija .cw-whatsapp-flotante { bottom: 86px; }
  .cw-header-inner { justify-content: space-between; text-align: left; flex-wrap: nowrap; }
  .cw-menu-toggle { display: flex; }
  .cw-nav-row { border-top: none; padding: 0; max-width: none; }
  .cw-nav {
    display: none; position: absolute; top: 100%; left: 0; right: 0; width: 100%;
    flex-direction: column; align-items: stretch; gap: 0; background: var(--cw-blanco);
    border-bottom: 1px solid var(--cw-linea); box-shadow: 0 12px 24px rgba(75,46,27,0.1); padding: 0.5rem 1rem 1rem;
  }
  .cw-nav.cw-nav--abierto { display: flex; }
  .cw-nav-link { width: 100%; }
  .cw-megamenu-trigger { display: none; }
  .cw-nav-mobile-catalogo { display: block; order: 2; }
  .cw-nav-mobile-catalogo summary {
    font-family: var(--cw-font-display); font-weight: 600; font-size: 0.95rem; color: var(--cw-tinta);
    padding: 0.5rem 0.8rem; cursor: pointer; list-style: none;
  }
  .cw-nav-mobile-catalogo-panel { display: flex; flex-direction: column; gap: 0.15rem; padding: 0 0.8rem 0.5rem 1.4rem; }
  .cw-nav-mobile-catalogo-panel h4 {
    font-family: var(--cw-font-display); font-size: 0.78rem; text-transform: uppercase; color: var(--cw-cascara);
    margin: 0.6rem 0 0.2rem;
  }
  .cw-nav-mobile-catalogo-panel a { color: var(--cw-tinta); font-size: 0.9rem; padding: 0.25rem 0; }
  .cw-topbar-inner { grid-template-columns: 1fr; gap: 0.3rem; text-align: center; padding: 0.5rem 1rem; }
  .cw-topbar-mini { justify-content: center; gap: 0.8rem; flex-wrap: wrap; }
  .cw-topbar-inner > span { display: none; }
  .cw-search-panel { padding: 0 1rem 0.8rem; }
  .cw-footer-grid { grid-template-columns: 1fr; gap: 1.6rem; }
  .cw-footer-bottom { flex-direction: column; text-align: center; }
  .cw-cookie-banner { flex-direction: column; align-items: stretch; text-align: center; }
  .cw-cookie-botones { justify-content: center; }
  .cw-hero { padding: 2.5rem 1rem; }
  .cw-hero-logo { max-width: 140px; }
  .cw-hero-slide { min-height: 320px; }
}

/* ---- Home ---- */
.cw-hero { text-align: center; padding: 3.5rem 1rem 3rem; }
.cw-hero-logo { max-width: 180px; margin: 0 auto 1.2rem; }
.cw-hero h1 {
  font-size: clamp(2rem, 5vw, 3rem); text-wrap: balance; margin: 0 auto 0.7rem; max-width: 720px;
}
.cw-hero-sub {
  font-size: 1.15rem; color: var(--cw-cascara); max-width: 520px; margin: 0 auto 1.8rem; line-height: 1.5;
}
.cw-hero-cta { font-size: 1.05rem; }

.cw-social-proof {
  text-align: center; font-size: 0.95rem; color: var(--cw-cascara);
  margin: 1.8rem 0 0.6rem;
}

.cw-seccion-titulo { font-family: var(--cw-font-display); font-size: 1.5rem; margin-bottom: 1.2rem; }
.cw-ver-todo { text-align: center; margin-top: 2rem; }
.cw-seccion-producto { margin: 3rem 0; }
.cw-grid--4 { grid-template-columns: repeat(4, 1fr); }

/* ---- Hero con banners (carrusel) ---- */
.cw-hero--banners { padding: 0; position: relative; overflow: hidden; }
.cw-hero-slide {
  display: none; position: relative; min-height: 420px;
  align-items: center; justify-content: center; text-align: center;
}
.cw-hero-slide.activo { display: flex; }
.cw-hero-slide-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0;
}
.cw-hero-slide-texto {
  position: relative; z-index: 1; max-width: 640px; padding: 2.5rem 1.5rem;
  background: linear-gradient(180deg, rgba(75,46,27,0.15), rgba(75,46,27,0.55));
  border-radius: var(--cw-radius-sm); color: var(--cw-crema);
}
.cw-hero-slide-texto h1 { color: var(--cw-crema); font-size: clamp(1.8rem, 4.5vw, 2.7rem); text-wrap: balance; margin: 0 0 0.6rem; }
.cw-hero-slide-texto .cw-hero-sub { color: var(--cw-crema); opacity: 0.95; margin: 0 0 1.4rem; }
.cw-hero-dots {
  position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%);
  display: flex; gap: 0.5rem; z-index: 2;
}
.cw-hero-dots button {
  width: 24px; height: 24px; border-radius: 50%; border: none; background: none; cursor: pointer;
  padding: 0; display: flex; align-items: center; justify-content: center;
}
.cw-hero-dots button::after {
  content: ""; width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,0.5);
}
.cw-hero-dots button.activo::after { background: var(--cw-crema); }

/* ---- Sobre nosotros (resumen en home) ---- */
.cw-sobre-nosotros-home {
  max-width: 640px; margin: 3.5rem auto; text-align: center; padding: 0 1rem;
}
.cw-sobre-nosotros-home p { color: var(--cw-cascara); line-height: 1.6; margin: 0.8rem 0 1.4rem; }

/* ---- Beneficios ---- */
.cw-beneficios {
  margin: 3.5rem 0; padding: 2.2rem 1rem; background: var(--cw-arena-50);
  border-radius: var(--cw-radius-sm);
}
.cw-beneficios-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
.cw-beneficio { text-align: center; padding: 0 0.6rem; }
.cw-beneficio h3 { font-family: var(--cw-font-display); font-size: 1.05rem; margin: 0 0 0.4rem; color: var(--cw-coco-oscuro); }
.cw-beneficio p { font-size: 0.9rem; color: var(--cw-cascara); line-height: 1.5; margin: 0; }

.cw-explora { text-align: center; }
.cw-explora .cw-grid { text-align: left; margin-bottom: 2rem; }

@media (max-width: 720px) {
  .cw-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .cw-beneficios-grid { grid-template-columns: repeat(2, 1fr); gap: 1.8rem; }
}

/* ---- Páginas de texto (sobre nosotros / contacto / legal) ---- */
.cw-pagina-texto { max-width: 680px; margin: 0 auto; }
.cw-pagina-texto h1 { margin-bottom: 1.2rem; }
.cw-pagina-texto p { line-height: 1.7; margin: 0 0 1.1rem; }
.cw-contacto { text-align: center; }
.cw-contacto-email, .cw-contacto-telefono { display: inline-block; font-size: 1.1rem; margin: 1rem 0.4rem; }
.cw-contacto-nota { font-size: 0.85rem; color: var(--cw-cascara); }
.cw-legal p { font-size: 0.95rem; }

/* ---- Tienda física ---- */
.cw-tienda-datos { margin: 1rem 0 1.5rem; }
.cw-tienda-datos p { margin: 0 0 0.6rem; font-size: 1.05rem; }
.cw-tienda-mapa { margin: 1.5rem 0; border-radius: var(--cw-radio, 12px); overflow: hidden; }
.cw-tienda-mapa iframe { display: block; }

/* ---- Contenido enriquecido (editor Quill del panel) ---- */
.cw-pagina-texto a, .cw-categoria-intro a, .cw-categoria-seo a {
  color: var(--cw-hoja); text-decoration: underline; text-underline-offset: 2px;
}
.cw-pagina-texto ul, .cw-pagina-texto ol, .cw-categoria-seo ul, .cw-categoria-seo ol {
  margin: 0 0 1.1rem; padding-left: 1.4rem; line-height: 1.7;
}
.cw-pagina-texto h2, .cw-categoria-seo h2 { font-family: var(--cw-font-display); font-size: 1.3rem; margin: 1.6rem 0 0.6rem; }
.cw-pagina-texto h3, .cw-categoria-seo h3 { font-family: var(--cw-font-display); font-size: 1.1rem; margin: 1.3rem 0 0.5rem; }

/* ---- Texto SEO de categoría (CMS) ---- */
.cw-categoria-titulo { margin-bottom: 0.3rem; }
.cw-categoria-intro { color: var(--cw-cascara); font-size: 1rem; margin: 0 0 1rem; line-height: 1.55; }
.cw-categoria-seo {
  margin-top: 2.5rem; padding-top: 1.8rem; border-top: 1px solid var(--cw-linea);
  color: var(--cw-tinta); font-size: 0.92rem;
}
.cw-categoria-seo p { line-height: 1.7; margin: 0 0 1rem; }
