/* ============================================================
   CAJEVA — Tienda
   ============================================================ */
/* Montserrat se carga con <link> en el <head> de cada página (antes era un
   @import bloqueante aquí): mejora el primer render y el splash. */

*, *::before, *::after { box-sizing: border-box; }
body {
  margin: 0;
  font-family: var(--font);
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 24px; }

/* ---------- Utilidades tipográficas de marca ---------- */
.kicker {
  font-size: 12px; font-weight: 600;
  letter-spacing: var(--track-wide); text-transform: uppercase;
  color: var(--sage-500);
}
.h-display {
  font-weight: 300; letter-spacing: .01em; line-height: 1.12;
  font-size: clamp(30px, 4.6vw, 56px); margin: 0;
}
.h-display strong { font-weight: 600; }
.h-section {
  font-weight: 500; letter-spacing: var(--track-mid); text-transform: uppercase;
  font-size: clamp(20px, 2.4vw, 28px); margin: 0;
}

/* ============================================================
   Header
   ============================================================ */
.topbar {
  background: var(--olive-900); color: var(--bone-200);
  font-size: 11.5px; letter-spacing: var(--track-mid); text-transform: uppercase;
  padding: 7px 18px;
  display: flex; align-items: center; justify-content: center; gap: 26px; flex-wrap: wrap;
}
.branch-pick { display: inline-flex; align-items: center; gap: 7px; }
.branch-pick select {
  background: transparent; color: var(--bone-200); border: 1px solid rgba(219,215,206,.35);
  border-radius: var(--r-pill); font-family: inherit; font-size: 11px;
  letter-spacing: .08em; text-transform: uppercase; padding: 4px 10px; cursor: pointer;
}
.branch-pick select option { color: #222; }
@media (max-width: 640px) { .topbar-msg { display: none; } }
/* ---------- Banner de promoción (3 diseños, se elige en el admin) ---------- */
.promo-bar { font-size: 12.5px; letter-spacing: .04em; }
.promo-bar.elegante {
  background: var(--olive-700); color: #fff;
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 11px 18px; font-size: 11.5px; font-weight: 600;
  letter-spacing: var(--track-mid); text-transform: uppercase; text-align: center;
}
.promo-bar.elegante .pct {
  background: #fff; color: var(--olive-900); border-radius: var(--r-pill);
  padding: 3px 12px; font-weight: 700; letter-spacing: .04em; flex: none;
}
.promo-bar.buenfin { background: #16170f; color: #f4f1ea; overflow: hidden; padding: 10px 0; }
.promo-bar.buenfin .marquee {
  display: flex; align-items: center; gap: 26px; width: max-content; white-space: nowrap;
  font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  animation: promo-scroll 22s linear infinite;
}
.promo-bar.buenfin b { color: #e9c46a; font-size: 14px; margin-right: 6px; }
.promo-bar.buenfin i { color: #e9c46a; font-style: normal; font-size: 9px; }
@keyframes promo-scroll { to { transform: translateX(-50%); } }
.promo-bar.minimal {
  background: var(--paper); border-bottom: 1px solid var(--line);
  text-align: center; padding: 9px 18px; color: var(--text);
}
.promo-bar.minimal b { color: var(--olive-700); font-weight: 700; }

/* Pill de descuento (junto al precio) */
.off-pill {
  display: inline-block; background: rgba(158,64,27,.13); color: var(--terra-600);
  font-size: 11px; font-weight: 700; letter-spacing: .05em;
  border-radius: var(--r-pill); padding: 3px 10px; vertical-align: middle;
}
.off-pill.is-promo { background: var(--terra-600); color: #fff; }

/* display:contents saca al div contenedor del flujo para que el sticky
   del header se calcule contra el viewport y no contra su caja. */
#chrome-top { display: contents; }

.header {
  position: sticky; top: 0; z-index: 60;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
  transition: transform .32s ease, box-shadow .25s ease;
}
/* Sin `will-change: transform`: mantenía viva una capa de composición para
   siempre y, junto al backdrop-filter, es la receta conocida del parpadeo
   negro a pantalla completa al hacer scroll rápido en móvil. La transición
   ya promueve la capa sola mientras dura. */
.header.is-stuck { box-shadow: 0 6px 24px rgba(36,38,26,.07); }
/* En pantallas chicas el desenfoque sale caro y es donde aparece el parpadeo:
   fondo sólido, que además se lee mejor sobre fotos. */
@media (max-width: 880px) {
  .header { background: var(--paper); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
/* Se esconde al bajar y vuelve al subir (lo maneja stickyHeader() en tienda.js) */
body.nav-hidden .header { transform: translateY(-100%); }
/* Desfase de los elementos pegados debajo del header: sigue al header
   cuando este se oculta. Se usa `top` y no `transform` a propósito — si el
   elemento todavía no llegó a su posición pegada, cambiar `top` no lo mueve. */
:root { --sticky-off: var(--header-h); }
body.nav-hidden { --sticky-off: 0px; }
@media (prefers-reduced-motion: reduce) {
  .header { transition: box-shadow .25s ease; }
}
.header .wrap {
  height: var(--header-h);
  display: flex; align-items: center; gap: 28px;
}
.brand { display: flex; align-items: center; gap: 12px; }
.brand svg { width: 40px; height: 40px; color: var(--olive-700); }
.brand .word {
  font-size: 21px; font-weight: 600; letter-spacing: var(--track-wide);
  color: var(--olive-900);
}
.brand .sub {
  display: block; font-size: 8.5px; font-weight: 500;
  letter-spacing: .38em; color: var(--sage-500); text-transform: uppercase;
}
.nav { display: flex; gap: 26px; margin-left: auto; }
.nav a {
  font-size: 12.5px; font-weight: 500; letter-spacing: var(--track-mid);
  text-transform: uppercase; color: var(--text);
  padding: 6px 0; border-bottom: 2px solid transparent;
  transition: border-color .2s, color .2s;
}
.nav a:hover, .nav a.active { color: var(--olive-700); border-color: var(--olive-700); }
.header-actions { display: flex; align-items: center; gap: 14px; }
.icon-btn {
  position: relative; background: none; border: none; padding: 8px;
  color: var(--olive-900); border-radius: 50%; display: grid; place-items: center;
  transition: background .2s;
}
.icon-btn:hover { background: var(--card); }
.cart-btn .count {
  position: absolute; top: 0; right: 0;
  background: var(--terra-600); color: #fff;
  font-size: 10px; font-weight: 700; min-width: 17px; height: 17px;
  border-radius: 999px; display: grid; place-items: center; padding: 0 4px;
}
.burger { display: none; background: none; border: none; padding: 8px; color: var(--olive-900); }

@media (max-width: 880px) {
  .nav {
    display: none; position: absolute; top: var(--header-h); left: 0; right: 0;
    background: var(--paper); border-bottom: 1px solid var(--line);
    flex-direction: column; gap: 0; padding: 8px 24px 16px;
  }
  .nav.open { display: flex; }
  .nav a { padding: 12px 0; border-bottom: 1px solid var(--line); }
  .burger { display: block; margin-left: auto; }
  .header-actions { gap: 4px; }
  .nav { margin-left: 0; }
}

/* ============================================================
   Hero — carrusel auto-rotativo
   ============================================================ */
.hero { padding: 26px 0 10px; }
.hero-stage {
  position: relative; border-radius: var(--r-card); overflow: hidden;
  height: clamp(480px, 56vw, 540px); box-shadow: var(--shadow-soft);
}
.slide {
  position: absolute; inset: 0; opacity: 0; transition: opacity .9s ease;
  display: grid; grid-template-columns: 1.05fr 1fr; align-items: center;
  padding: clamp(28px, 5vw, 64px);
  pointer-events: none;
}
.slide.on { opacity: 1; pointer-events: auto; z-index: 2; }
.slide .copy { max-width: 520px; }
.slide .copy .kicker { margin-bottom: 14px; display: block; }
.slide .copy p { color: var(--text-soft); font-size: 15.5px; max-width: 400px; }
.slide .visual { position: relative; align-self: stretch; display: grid; place-items: center; }
.slide .visual img {
  max-height: 420px; object-fit: contain; mix-blend-mode: multiply;
  transform: translateY(0); transition: transform 8s ease;
}
.slide.on .visual img { transform: translateY(-8px); }
/* Slide "a sangre": banner (foto o video) al fondo y texto encima.
   El velo en degradado mantiene el texto legible sobre cualquier imagen. */
.slide-full { display: block; padding: 0; background: var(--bone-200); }
.slide-full .bg { position: absolute; inset: 0; }
.slide-full .bg img, .slide-full .bg video {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
/* Un <video> que todavía no decodifica su primer cuadro se pinta negro:
   el fondo de marca evita ese rectángulo oscuro a sangre. */
.slide-full .bg video { background: var(--bone-200); }
.slide-full::after {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(90deg, rgba(20,21,14,.82) 0%, rgba(20,21,14,.62) 38%, rgba(20,21,14,.12) 72%, rgba(20,21,14,.28) 100%);
}
.slide-full .copy {
  position: absolute; z-index: 2; left: 0; bottom: 0;
  padding: clamp(28px, 5vw, 64px); max-width: min(560px, 88%);
}
.slide-full .copy .kicker { color: var(--sand-300); }
.slide-full .copy .h-display { color: #fff; }
.slide-full .copy .h-display strong { color: var(--sand-300); }
.slide-full .copy p { color: rgba(255,255,255,.86); }
.slide-full .copy .btn { background: #fff; color: var(--olive-900); border-color: #fff; }
.slide-full .copy .btn:hover { background: var(--sand-300); border-color: var(--sand-300); }
@media (max-width: 880px) {
  /* El velo pasa a vertical: en vertical el texto queda abajo, no a un lado. */
  .slide-full::after {
    background: linear-gradient(180deg, rgba(20,21,14,.10) 0%, rgba(20,21,14,.45) 52%, rgba(20,21,14,.86) 100%);
  }
  .slide-full .copy { max-width: 100%; }
}

.slide-1 { background: linear-gradient(115deg, #E7E3DA 0%, var(--bone-200) 60%, #CFC9BD 100%); }
.slide-2 { background: linear-gradient(115deg, #E3E4DB 0%, #D6D8C9 55%, #BFC4AC 100%); }
.slide-3 { background: linear-gradient(115deg, #EBE0D2 0%, var(--sand-300) 60%, #C4A57F 100%); }

.hero-dots {
  position: absolute; left: 50%; transform: translateX(-50%); bottom: 20px;
  display: flex; gap: 8px; z-index: 5;
}
.hero-dots button {
  width: 8px; height: 8px; border-radius: 50%; border: none; padding: 0;
  background: rgba(61,63,34,.28); transition: all .3s;
}
.hero-dots button.on { width: 26px; border-radius: 999px; background: var(--olive-700); }

.btn {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--olive-700); color: #fff; border: 1.5px solid var(--olive-700);
  font-size: 12.5px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase;
  padding: 14px 28px; border-radius: var(--r-pill);
  transition: background .25s, color .25s, transform .15s;
}
.btn:hover { background: var(--olive-900); border-color: var(--olive-900); transform: translateY(-1px); }
.btn.ghost { background: transparent; color: var(--olive-900); border-color: var(--olive-900); }
.btn.ghost:hover { background: var(--olive-900); color: #fff; }
.btn.terra { background: var(--terra-600); border-color: var(--terra-600); }
.btn.terra:hover { background: #843414; border-color: #843414; }

@media (max-width: 880px) {
  .slide { grid-template-columns: 1fr; text-align: center; gap: 8px; padding-bottom: 64px; }
  .slide .copy { max-width: none; }
  .slide .copy p { margin-inline: auto; }
  .slide .visual img { max-height: 220px; }
  .hero-stage { height: 640px; }
}

/* ============================================================
   Categorías (fila estilo referencia)
   ============================================================ */
.cats { padding: 44px 0 8px; }
/* La fila de categorías es un carrusel de una línea (.hs-row le pone el
   scroll y las flechas); aquí solo se fija el ancho de cada casilla. */
.cats-wrap { margin-top: 0; }
.cats-row > * { flex: 0 0 clamp(132px, 15.5vw, 188px); }
.cat-tile { text-align: center; }
.cat-tile .frame {
  border-radius: var(--r-card); background: var(--card); overflow: hidden;
  aspect-ratio: 1; display: grid; place-items: center; padding: 14%;
  transition: transform .3s, box-shadow .3s, background .3s;
}
.cat-tile img { mix-blend-mode: multiply; object-fit: contain; width: 100%; height: 100%; }
.cat-tile:hover .frame { transform: translateY(-5px); box-shadow: var(--shadow-lift); background: var(--bone-200); }
.cat-tile span {
  display: block; margin-top: 12px;
  font-size: 12px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase;
}
@media (max-width: 640px) {
  .cats-row > * { flex-basis: 132px; }
}

/* ============================================================
   Secciones / grid de productos
   ============================================================ */
.section { padding: 60px 0 20px; }
/* Cuando dos secciones van pegadas y la de abajo no debe repetir el aire */
.section-tight { padding-top: 0; }
.section-head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 20px; margin-bottom: 30px;
}
.section-head .kicker { display: block; margin-bottom: 8px; }
.link-more {
  font-size: 12px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase;
  color: var(--olive-700); border-bottom: 1.5px solid currentColor; padding-bottom: 3px;
  white-space: nowrap;
}

.grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
@media (max-width: 1024px) { .grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px)  { .grid { grid-template-columns: repeat(2, 1fr); gap: 14px; } }

/* Card producto — "marco" redondeado */
.card { position: relative; }
.card .frame {
  position: relative; border-radius: var(--r-card); background: var(--card);
  aspect-ratio: 1; overflow: hidden; display: block;
  transition: transform .35s, box-shadow .35s, background .35s;
}
.card .frame .fill { position: absolute; inset: 0; display: grid; place-items: center; padding: 10%; }
.card img { mix-blend-mode: multiply; object-fit: contain; width: 100%; height: 100%; transition: transform .5s, opacity .18s; }
.card .frame .fill img.g-fade, .project .ph.frame .fill img.g-fade { opacity: 0; }

/* Flechas y puntos de la galería en la card */
.g-nav {
  position: absolute; top: 50%; transform: translateY(-50%) scale(.9); z-index: 3;
  width: 32px; height: 32px; border-radius: 50%; border: none; cursor: pointer;
  display: grid; place-items: center; color: var(--olive-900);
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: blur(6px); box-shadow: var(--shadow-soft);
  opacity: 0; transition: opacity .25s, transform .25s, background .2s;
}
.g-nav.prev { left: 10px; }
.g-nav.next { right: 10px; }
.card:hover .g-nav, .project:hover .g-nav, .g-nav:focus-visible { opacity: 1; transform: translateY(-50%) scale(1); }
.g-nav:hover { background: var(--paper); }
.g-dots {
  position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%);
  z-index: 3; display: flex; gap: 5px; opacity: 0; transition: opacity .25s;
}
.card:hover .g-dots, .project:hover .g-dots { opacity: 1; }
.g-dots i {
  width: 5px; height: 5px; border-radius: 50%;
  background: color-mix(in srgb, var(--text) 25%, transparent); transition: background .2s;
}
.g-dots i.on { background: var(--olive-900); }
.card:hover .frame { transform: translateY(-6px); box-shadow: var(--shadow-lift); background: var(--bone-200); }
.card:hover img { transform: scale(1.04); }
.badge {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
  padding: 6px 12px; border-radius: var(--r-pill);
  background: var(--olive-700); color: #fff;
}
.badge.oferta { background: var(--terra-600); }
.badge.nuevo { background: var(--tan-400); }
/* Ancla en el marco de la foto, no en la card entera: contra la card el
   «bottom» caía sobre la línea del precio y se encimaba con el −%. */
.card .add {
  position: absolute; right: 14px; bottom: 14px; z-index: 4;
  width: 42px; height: 42px; border-radius: 50%; border: none;
  background: var(--olive-900); color: #fff; display: grid; place-items: center;
  opacity: 0; transform: translateY(6px); transition: all .3s;
  box-shadow: var(--shadow-soft);
}
.card:hover .add, .card .add:focus-visible { opacity: 1; transform: translateY(0); }
.card .add:hover { background: var(--terra-600); }
.card-info { padding: 14px 6px 0; }
.card-info .name { font-size: 14.5px; font-weight: 600; margin: 0 0 4px; letter-spacing: .02em; }
/* Centavos + moneda pegados al precio, en chico. Tamaño relativo para que
   escale igual en la card (15px) y en la ficha (27px); color y peso heredan
   de la cifra para que se vean iguales en todos los contextos. */
.cur {
  font-size: .58em; font-weight: inherit; color: inherit;
  letter-spacing: .04em; margin-left: 2px;
}
/* En el precio tachado la raya cruza solo la cifra: el sufijo se saca del flujo
   con inline-block, que es lo único que corta la herencia de text-decoration. */
.was .cur { display: inline-block; }

.card-info .price { font-size: 15px; font-weight: 600; color: var(--olive-900); }
.card-info .was { font-size: 12.5px; color: var(--text-soft); text-decoration: line-through; margin-left: 8px; font-weight: 400; }
.card-info .cat-label { font-size: 11px; letter-spacing: var(--track-mid); text-transform: uppercase; color: var(--sage-500); display: block; margin-bottom: 4px; }
.color-dots { display: flex; gap: 7px; margin-top: 9px; flex-wrap: wrap; }
/* Los puntos son botones: eligen el acabado sin salir de la página */
.cdot {
  position: relative; width: 15px; height: 15px; padding: 0; border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.9); box-shadow: 0 0 0 1px var(--line);
  cursor: pointer; transition: transform .18s, box-shadow .18s;
}
.cdot:hover { transform: scale(1.18); }
.cdot.on { box-shadow: 0 0 0 2px var(--olive-700); transform: scale(1.1); }
.cdot:focus-visible { outline: 2px solid var(--terra-600); outline-offset: 2px; }
/* Al intentar agregar sin acabado, los puntos piden atención */
.card.needs-color .color-dots { animation: cp-shake .4s ease; }
.card.needs-color .cdot { box-shadow: 0 0 0 2px var(--terra-600); }
@media (prefers-reduced-motion: reduce) { .card.needs-color .color-dots { animation: none; } }
/* Pantallas chicas o sin hover: flechas y puntos siempre visibles */
@media (max-width: 760px), (hover: none) {
  .card .add { opacity: 1; transform: none; width: 38px; height: 38px; }
  .g-nav { opacity: 1; transform: translateY(-50%); width: 30px; height: 30px; }
  .g-nav.prev { left: 6px; }
  .g-nav.next { right: 6px; }
  .g-dots { opacity: 1; bottom: 8px; }
}

/* Reveal al hacer scroll */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in { opacity: 1; transform: none; }

/* ============================================================
   Pilares — muebles a la medida
   ============================================================ */
.pillars { margin: 70px 0 0; background: var(--olive-900); color: var(--bone-200); }
.pillars .inner { padding: 76px 0; }
.pillars .kicker { color: var(--sand-300); }
.pillars h2 { color: #fff; }
.ns-gtitle { max-width: 640px; }
.pillars-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin-top: 46px; }
.pillar .num {
  font-size: 13px; font-weight: 600; letter-spacing: var(--track-wide);
  color: var(--sand-300); display: block; margin-bottom: 12px;
}
.pillar h3 { font-size: 19px; font-weight: 500; letter-spacing: .06em; margin: 0 0 10px; color: #fff; }
.pillar p { color: rgba(219,215,206,.75); font-size: 14.5px; margin: 0; }
.pillars .cta-row { margin-top: 48px; display: flex; gap: 16px; flex-wrap: wrap; }
.pillars .btn { background: var(--bone-200); border-color: var(--bone-200); color: var(--olive-900); }
.pillars .btn:hover { background: #fff; border-color: #fff; transform: translateY(-1px); }
.pillars .btn.ghost { background: transparent; color: var(--bone-200); border-color: rgba(219,215,206,.5); }
.pillars .btn.ghost:hover { border-color: var(--bone-200); background: rgba(219,215,206,.08); color: var(--bone-200); }
@media (max-width: 880px) { .pillars-grid { grid-template-columns: 1fr; gap: 28px; } }

/* ============================================================
   Proyectos especiales — galería editorial
   ============================================================ */
.projects-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.project { border-radius: var(--r-card); overflow: hidden; background: var(--card); position: relative; }
/* El .ph es también .frame para reusar la galería de la card (flechas/puntos/swipe) */
.project .ph { position: relative; aspect-ratio: 4/4.6; background: linear-gradient(160deg, #E9E6DE, #D8D3C7); }
.project .ph .fill { position: absolute; inset: 0; display: grid; place-items: center; padding: 12%; }
.project .ph img { mix-blend-mode: multiply; object-fit: contain; width: 100%; height: 100%; transition: transform .5s, opacity .18s; }
.project:hover .ph img { transform: scale(1.05); }
.project .meta { display: block; padding: 20px 22px 26px; }
.project .tag {
  font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
  color: var(--terra-600);
}
.project h3 { font-size: 16.5px; font-weight: 600; margin: 6px 0 8px; letter-spacing: .02em; }
.project p { font-size: 13.5px; color: var(--text-soft); margin: 0; }
@media (max-width: 880px) { .projects-grid { grid-template-columns: 1fr; } }

/* ============================================================
   Showroom
   ============================================================ */
.showroom { margin-top: 70px; }
.showroom-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 26px; margin-top: 30px;
}
.showroom-card {
  border-radius: var(--r-card); background: var(--white); border: 1px solid var(--line);
  overflow: hidden; box-shadow: var(--shadow-soft); display: flex; flex-direction: column;
  transition: transform .35s ease, box-shadow .35s ease;
}
.showroom-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.sr-media { display: block; aspect-ratio: 16/8.5; overflow: hidden; background: var(--card); }
.sr-media img, .sr-media video { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.showroom-card:hover .sr-media img { transform: scale(1.045); }
.sr-body { padding: 26px 30px 28px; }
.sr-body h3 {
  font-size: 15px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase;
  margin: 0 0 12px; color: var(--olive-700);
}
.showroom-card p { margin: 0 0 6px; font-size: 14.5px; color: var(--text-soft); }
.showroom-card .hours { font-weight: 600; color: var(--text); font-size: 13.5px; letter-spacing: .04em; }
.showroom-card .sr-maps { margin-top: 14px; }
@media (max-width: 760px) { .showroom-grid { grid-template-columns: 1fr; } }

/* ============================================================
   Footer
   ============================================================ */
.footer { margin-top: 80px; background: var(--olive-900); color: var(--greige-300); }
.footer .inner { padding: 60px 0 30px; }
.footer-grid { display: grid; grid-template-columns: 1.7fr 1fr 1fr 1.1fr; gap: 40px; }
@media (max-width: 980px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; } }
.footer .brand svg { color: var(--bone-200); }
.footer .brand .word { color: var(--bone-200); }
.footer .brand .sub { color: var(--sage-500); }
.footer p { font-size: 13.5px; color: rgba(193,187,176,.7); max-width: 320px; }
.footer h4 {
  font-size: 11.5px; font-weight: 700; letter-spacing: var(--track-wide); text-transform: uppercase;
  color: var(--bone-200); margin: 0 0 16px;
}
.footer ul { list-style: none; margin: 0; padding: 0; }
.footer li { margin-bottom: 10px; }
.footer li a { font-size: 13.5px; color: rgba(193,187,176,.8); transition: color .2s; }
.footer li a:hover { color: #fff; }
.footer .legal {
  margin-top: 50px; padding-top: 22px; border-top: 1px solid rgba(219,215,206,.14);
  display: flex; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap;
  font-size: 11.5px; letter-spacing: .06em; color: rgba(193,187,176,.55);
}
.footer .legal a { color: inherit; border-bottom: 1px solid transparent; transition: color .2s, border-color .2s; }
.footer .legal a:hover { color: var(--bone-200); border-color: rgba(219,215,206,.5); }

/* Redes sociales */
.f-social { display: flex; gap: 12px; margin-top: 20px; }
.f-social a {
  width: 38px; height: 38px; border-radius: 50%;
  display: grid; place-items: center;
  color: rgba(219,215,206,.85); border: 1px solid rgba(219,215,206,.22);
  transition: color .22s, background .22s, border-color .22s;
}
.f-social a:hover { color: var(--olive-900); background: var(--bone-200); border-color: var(--bone-200); }

/* Columna de contacto: etiqueta arriba y el dato abajo, para que el teléfono
   y el correo se lean como datos y no como una liga más del menú. */
.f-contact li { margin-bottom: 14px; }
.f-contact li > span {
  display: block; font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase;
  color: rgba(193,187,176,.5); margin-bottom: 2px;
}
.f-contact li a { display: inline-block; }
/* Solo la maquetación del icono: el color y el peso los hereda de `.footer li a`
   para que se lea igual que los demás enlaces del pie. El SVG usa currentColor,
   así que el icono sigue al texto sin reglas propias. */
/* Va con `.f-contact` delante a propósito: `.f-contact li a` (arriba) le ganaba
   en especificidad y dejaba el enlace en `inline-block`, así que ni el `gap` ni
   el `align-items` se aplicaban nunca. */
.f-contact .f-wa { display: inline-flex; align-items: center; gap: 10px; }
.f-wa svg { width: 17px; height: 17px; flex: none; }
/* `line-height:1` para que la caja del texto no sea más alta que sus letras:
   con el 1.6 que hereda, `align-items:center` centraba la caja y las letras
   quedaban unos píxeles por debajo del icono. */
.f-wa span { line-height: 1; }

@media (max-width: 760px) {
  .footer-grid { grid-template-columns: 1fr; gap: 28px; }
  /* Apilada, «space-between» empujaba la mitad de las líneas a la derecha */
  .footer .legal { justify-content: flex-start; gap: 10px 18px; }
}

/* ============================================================
   WhatsApp flotante (discreto)
   ============================================================ */
.wa-float {
  position: fixed; right: 22px; bottom: 22px; z-index: 70;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--wa); color: #fff;
  display: grid; place-items: center; box-shadow: var(--shadow-lift);
  transition: transform .2s, background .2s;
  cursor: grab;            /* se puede arrastrar a donde no estorbe */
  touch-action: none;      /* el arrastre no debe desplazar la página */
  -webkit-user-select: none; user-select: none;
  -webkit-user-drag: none; /* que el navegador no arrastre el enlace */
}
.wa-float svg { width: 26px; height: 26px; pointer-events: none; }
.wa-float:hover { transform: scale(1.08); background: var(--wa-dark); }
/* En celular no se muestra: estorba sobre la barra de compra y su lugar lo
   toma «Hablar por WhatsApp» del pie de página. */
@media (max-width: 880px) { .wa-float { display: none; } }
/* Mientras se arrastra manda la posición, no la animación de hover */
.wa-float.dragging { cursor: grabbing; transform: none; transition: none; }
@media (prefers-reduced-motion: reduce) { .wa-float { transition: none; } }

/* ============================================================
   Drawer del carrito
   ============================================================ */
.drawer-veil {
  position: fixed; inset: 0; background: rgba(36,38,26,.45); z-index: 80;
  opacity: 0; pointer-events: none; transition: opacity .3s;
}
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(420px, 92vw); z-index: 81;
  background: var(--paper); box-shadow: -20px 0 50px rgba(36,38,26,.2);
  transform: translateX(105%); transition: transform .35s cubic-bezier(.22,.8,.3,1);
  display: flex; flex-direction: column;
}
body.drawer-open .drawer { transform: none; }
body.drawer-open .drawer-veil { opacity: 1; pointer-events: auto; }
.drawer header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 22px 24px; border-bottom: 1px solid var(--line);
}
.drawer header h3 { margin: 0; font-size: 14px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase; }
.drawer .close { background: none; border: none; font-size: 22px; line-height: 1; color: var(--text); padding: 4px 8px; }
.drawer .items { flex: 1; overflow-y: auto; padding: 10px 24px; }
.d-item { display: grid; grid-template-columns: 74px 1fr auto; gap: 14px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line); }
.d-item .thumb { width: 74px; height: 74px; border-radius: 14px; background: var(--card); display: grid; place-items: center; padding: 8px; }
.d-item img { mix-blend-mode: multiply; max-height: 100%; object-fit: contain; }
.d-item .n { font-size: 13.5px; font-weight: 600; margin: 0 0 4px; }
.d-item .p { font-size: 13px; color: var(--text-soft); }
.qty { display: inline-flex; align-items: center; gap: 2px; border: 1px solid var(--line); border-radius: var(--r-pill); }
.qty button { background: none; border: none; width: 28px; height: 28px; font-size: 15px; color: var(--olive-900); }
.qty span { min-width: 22px; text-align: center; font-size: 13px; font-weight: 600; }
.drawer footer { padding: 20px 24px 26px; border-top: 1px solid var(--line); }
.drawer .total-row { display: flex; justify-content: space-between; font-weight: 600; margin-bottom: 16px; letter-spacing: .04em; }
.drawer .btn { width: 100%; justify-content: center; }
.empty-note { text-align: center; color: var(--text-soft); padding: 60px 20px; font-size: 14px; }

/* ============================================================
   Toast
   ============================================================ */
.toast {
  position: fixed; left: 50%; bottom: 90px; transform: translate(-50%, 20px); z-index: 90;
  background: var(--olive-900); color: var(--bone-200);
  font-size: 13px; letter-spacing: .04em; padding: 12px 22px; border-radius: var(--r-pill);
  opacity: 0; pointer-events: none; transition: all .35s; box-shadow: var(--shadow-lift);
}
.toast.on { opacity: 1; transform: translate(-50%, 0); }

/* ============================================================
   Catálogo
   ============================================================ */
.page-head { padding: 46px 0 8px; }
.filter-bar {
  /* +1px = el borde inferior del header, para que no lo tape */
  position: sticky; top: calc(var(--sticky-off) + 1px); z-index: 50;
  transition: top .32s ease;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  padding: 14px 0; margin-top: 20px;
  /* (el fondo sólido en móvil va más abajo, junto al del header) */
  border-bottom: 1px solid var(--line);
  box-shadow: 0 6px 18px rgba(36,38,26,.05);
}
@media (max-width: 880px) {
  .filter-bar { background: var(--paper); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
.pill.chip-q { border-style: dashed; text-transform: none; letter-spacing: .02em; }
.pill.chip-q span[aria-hidden] { margin-left: 6px; font-size: 14px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.filter-bar .row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.pill {
  border: 1.5px solid var(--line); background: transparent; color: var(--text);
  font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  padding: 9px 18px; border-radius: var(--r-pill); transition: all .2s;
}
.pill:hover { border-color: var(--olive-700); color: var(--olive-700); }
.pill.on { background: var(--olive-700); border-color: var(--olive-700); color: #fff; }
.filter-bar select {
  margin-left: auto; font-family: inherit; font-size: 12.5px; letter-spacing: .04em;
  padding: 9px 14px; border-radius: var(--r-pill); border: 1.5px solid var(--line);
  background: transparent; color: var(--text);
}
.catalog-grid { padding: 34px 0 20px; }
.results-note { font-size: 12.5px; color: var(--text-soft); letter-spacing: .04em; margin: 18px 0 0; }

/* ============================================================
   Producto
   ============================================================ */
.pdp { padding: 40px 0 20px; }
.breadcrumb { font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-soft); margin-bottom: 26px; }
.breadcrumb a:hover { color: var(--olive-700); }
.pdp-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 54px; align-items: start; }
.pdp-grid > * { min-width: 0; }   /* si no, la fila de miniaturas ensancha la columna y desborda en móvil */
.gallery .main {
  border-radius: var(--r-card); background: var(--card); aspect-ratio: 1;
  display: grid; place-items: center; padding: 8%; overflow: hidden;
}
.gallery .main img { mix-blend-mode: multiply; object-fit: contain; width: 100%; height: 100%; transition: opacity .2s; }
.gallery .thumbs { display: flex; gap: 12px; margin-top: 14px; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
.gallery .thumbs::-webkit-scrollbar { display: none; }
.gallery .thumbs button {
  flex: 0 0 auto;
  width: 82px; height: 82px; border-radius: 16px; background: var(--card);
  border: 2px solid transparent; padding: 8px; transition: border-color .2s;
}
.gallery .thumbs button.on { border-color: var(--olive-700); }
.gallery .thumbs img { mix-blend-mode: multiply; object-fit: contain; width: 100%; height: 100%; }
.pdp-info .cat-label { font-size: 11.5px; letter-spacing: var(--track-wide); text-transform: uppercase; color: var(--sage-500); }
.pdp-info h1 { font-size: clamp(26px, 3.4vw, 38px); font-weight: 500; letter-spacing: .02em; margin: 10px 0 14px; line-height: 1.15; }
.pdp-info .price-row { display: flex; align-items: baseline; gap: 14px; margin-bottom: 6px; }
.pdp-info .price { font-size: 27px; font-weight: 600; color: var(--olive-900); }
.pdp-info .was { font-size: 17px; color: var(--text-soft); text-decoration: line-through; }
.pdp-info .msi { font-size: 12.5px; color: var(--terra-600); font-weight: 600; letter-spacing: .05em; }
.pdp-info .desc { color: var(--text-soft); font-size: 15px; margin: 20px 0; }
/* Selector de color del producto */
.color-picker { margin: 4px 0 22px; }
.cp-label { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-soft); }
.cp-label strong { color: var(--text); }
.swatches { display: flex; gap: 10px; margin: 10px 0 6px; flex-wrap: wrap; }
.swatch {
  width: 34px; height: 34px; border-radius: 50%; border: 2px solid transparent;
  box-shadow: 0 0 0 1px var(--line); padding: 0; transition: transform .15s;
  position: relative;
}
.swatch:hover { transform: scale(1.1); }
.swatch.on { border-color: var(--paper); box-shadow: 0 0 0 2.5px var(--olive-700); }
.swatch.original { background: var(--card); }
/* El original lleva un aro interior: es la foto sin retoque, no una vista previa */
.swatch.original::after, .cdot.original::after { content: ''; position: absolute; inset: 5px; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.85); box-shadow: 0 0 0 1px rgba(0,0,0,.18); pointer-events: none; }
.cdot.original::after { inset: 3px; }
.cp-fine { font-size: 11px; color: var(--text-soft); display: block; }
/* Aviso cuando falta elegir acabado antes de agregar al carrito */
.cp-error { margin: 2px 0 6px; font-size: 12.5px; font-weight: 600; color: var(--terra-600); }
.cp-shake { animation: cp-shake .4s ease; }
@keyframes cp-shake {
  0%, 100% { transform: none; }
  20%, 60% { transform: translateX(-5px); }
  40%, 80% { transform: translateX(5px); }
}
@media (prefers-reduced-motion: reduce) { .cp-shake { animation: none; } }

/* Acabados dentro del modal de asesor */
.sm-clabel { display: block; margin-top: 16px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-soft); }
.sm-clabel strong { color: var(--text); }
.sm-swatches { display: flex; gap: 10px; margin: 10px 0 4px; flex-wrap: wrap; }

.spec-list { list-style: none; padding: 0; margin: 0 0 28px; }
.spec-list li {
  font-size: 13.5px; padding: 9px 0; border-bottom: 1px solid var(--line);
  display: flex; gap: 10px; align-items: center;
}
.spec-list li::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--sage-500); flex: none; }
.buy-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.buy-row .qty { padding: 4px 6px; }
.buy-row .qty button { width: 34px; height: 34px; }
.pdp-note { margin-top: 22px; font-size: 12.5px; color: var(--text-soft); display: flex; gap: 8px; align-items: center; }
@media (max-width: 880px) { .pdp-grid { grid-template-columns: 1fr; gap: 30px; } }

/* ============================================================
   Carrito (página)
   ============================================================ */
.cart-page { padding: 46px 0 30px; }
.cart-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 40px; align-items: start; margin-top: 30px; }
.cart-list { border-top: 1px solid var(--line); }
.c-item {
  display: grid; grid-template-columns: 110px 1fr auto auto; gap: 20px; align-items: center;
  padding: 20px 0; border-bottom: 1px solid var(--line);
}
.c-item .thumb { width: 110px; height: 110px; border-radius: 18px; background: var(--card); display: grid; place-items: center; padding: 10px; }
.c-item img { mix-blend-mode: multiply; object-fit: contain; max-height: 100%; }
.c-item .n { font-weight: 600; font-size: 15px; margin: 0 0 4px; }
.c-item .unit { font-size: 13px; color: var(--text-soft); }
.c-item .line-total { font-weight: 600; }
.c-item .rm { background: none; border: none; color: var(--text-soft); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; padding: 4px; }
.c-item .rm:hover { color: var(--terra-600); }
.summary {
  border-radius: var(--r-card); background: var(--card); padding: 30px 32px;
  position: sticky; top: calc(var(--sticky-off) + 20px);
  transition: top .32s ease;
}
.summary h3 { margin: 0 0 18px; font-size: 14px; font-weight: 600; letter-spacing: var(--track-mid); text-transform: uppercase; }
.summary .row { display: flex; justify-content: space-between; font-size: 14px; padding: 8px 0; color: var(--text-soft); }
.summary .row.total { color: var(--text); font-weight: 600; font-size: 17px; border-top: 1px solid var(--line); margin-top: 10px; padding-top: 16px; }
.cur-note { font-size: 11.5px; color: var(--text-soft); margin: 10px 0 0; }
.summary .btn { width: 100%; justify-content: center; margin-top: 18px; }
.summary .fine { font-size: 11.5px; color: var(--text-soft); margin-top: 14px; text-align: center; }
.summary input, .summary textarea {
  width: 100%; font-family: inherit; font-size: 13.5px; padding: 11px 14px;
  border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--paper);
  margin-bottom: 10px; color: var(--text);
}
.summary label { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--text-soft); display: block; margin-bottom: 6px; }
.order-ok { text-align: center; padding: 70px 20px; }
.order-ok .mark { width: 74px; height: 74px; border-radius: 50%; background: var(--olive-700); color: #fff; display: grid; place-items: center; margin: 0 auto 24px; font-size: 30px; }
/* "¿Prefieres que te llamemos?" — se muestra solo si el pedido no trae teléfono */
.phone-follow { max-width: 420px; margin: 26px auto 0; background: var(--card); border-radius: 18px; padding: 20px 24px; }
.phone-follow p { font-size: 13.5px; color: var(--text); margin: 0 0 12px; }
.phone-follow form { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.phone-follow input { flex: 1; min-width: 150px; padding: 11px 14px; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--white); font: inherit; letter-spacing: .04em; }
.phone-follow input:focus { outline: none; border-color: var(--olive-700); }
.pf-ok { font-size: 14px; color: var(--olive-700); margin: 0; }
@media (max-width: 880px) {
  .cart-grid { grid-template-columns: 1fr; }
  .c-item { grid-template-columns: 84px 1fr; }
  .c-item .line-total, .c-item .rm { grid-column: 2; justify-self: start; }
}

/* ============================================================
   FASE 1.5 — componentes nuevos
   ============================================================ */

/* ---------- Stock y tipo de venta ---------- */
.stock-pill,.sale-pill{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:var(--r-pill);padding:4px 10px;white-space:nowrap}
.stock-pill.low{background:#f6e3c5;color:#8a5a17}
.stock-pill.out{background:#e7e4de;color:#6f6c64}
.sale-pill{background:var(--bone-200);color:var(--olive-700)}
.card.sold-out .frame img{filter:grayscale(.55);opacity:.75}
.card.sold-out .add{opacity:.35;pointer-events:none}
.card .add.wa{display:grid;place-items:center;text-decoration:none}
.card .add.wa svg{width:18px;height:18px}

/* ---------- Estimador de envío por C.P. (vive en el panel lateral) ---------- */
.ship-row{display:flex;gap:10px;flex-wrap:wrap}
.ship-row input{width:170px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--white);font:inherit;letter-spacing:.12em}
.ship-note{font-size:13px;margin:12px 0 0;line-height:1.6}
.ship-note span{display:block;font-size:11.5px;color:var(--text-soft)}
.ship-note.ok{color:var(--olive-700)}
.ship-note.warn{color:var(--text)}
.ship-note.bad{color:#a13a2f}
.ship-lead{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.ship-lead input{padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--white);font:inherit}
.ship-lead .btn{align-self:flex-start}

/* ---------- Swatches con textura + panel de tela ---------- */
.swatch.has-tex{padding:0;overflow:hidden}
.swatch.has-tex img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.cp-group{display:block;margin:12px 0 6px;font-size:11px;font-weight:700;letter-spacing:var(--track-mid);text-transform:uppercase;color:var(--text-soft)}
.gallery .main{position:relative}
#g-video{width:100%;border-radius:inherit;display:block;background:#000;aspect-ratio:4/3}
#g-video[hidden]{display:none}   /* el id ganaba sobre [hidden] y dejaba una caja negra en la galería */
.thumbs .thumb-video{display:grid;place-items:center;color:var(--primary);background:var(--card)}
.thumbs .thumb-video.on{outline:2px solid var(--primary)}

/* Flechas y contador sobre la imagen principal del producto */
.gallery .main .g-nav{width:44px;height:44px;z-index:6}
.gallery .main .g-nav svg{width:20px;height:20px}
.gallery .main .g-nav.prev{left:16px}
.gallery .main .g-nav.next{right:16px}
.gallery .main:hover .g-nav,.gallery .main .g-nav:focus-visible{opacity:1;transform:translateY(-50%) scale(1)}
.g-count{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:6;
  font-size:11px;font-weight:600;letter-spacing:var(--track-mid);color:var(--text-soft);
  background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(6px);
  padding:5px 12px;border-radius:var(--r-pill);opacity:0;transition:opacity .25s;pointer-events:none;
}
.gallery .main:hover .g-count{opacity:1}
@media (max-width:760px),(hover:none){
  .gallery .main .g-nav{opacity:1;transform:translateY(-50%);width:38px;height:38px}
  .gallery .main .g-nav.prev{left:8px}
  .gallery .main .g-nav.next{right:8px}
  .g-count{opacity:1}
}

/* ---------- Medidas: ficha técnica ---------- */
.dims-card{margin:24px 0 4px;border:1px solid var(--line);border-radius:18px;background:var(--white);padding:16px 22px 6px}
.dims-t{display:block;font-size:11px;font-weight:700;letter-spacing:var(--track-mid);text-transform:uppercase;color:var(--text-soft);padding-bottom:4px}
.dc-row{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.dc-row:last-child{border-bottom:0}
.dc-row i{font-style:normal;color:var(--primary);font-weight:700;text-align:center}
.dc-row .k{color:var(--text-soft)}
.dc-row .v{font-weight:600}
.dc-row .v em{font-style:normal;font-weight:400;font-size:12px;color:var(--text-soft)}

/* ============================================================
   PDP estilo IKEA: columna de compra sticky, tabla "Cómo
   conseguirlo", bloque bajo la galería y panel lateral (sheet)
   ============================================================ */

/* Columna derecha sticky hasta que termina .pdp-grid (antes de reseñas).
   top usa --sticky-off para convivir con el header auto-oculto. */
.pdp-buy{position:sticky;top:calc(var(--sticky-off) + 24px);transition:top .32s ease}
.pdp-buy .desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:14px 0 18px}
.pdp-buy .msi{display:block;margin-bottom:8px}
.pdp-buy .pdp-stars{display:flex;width:max-content}
@media (max-width:880px){.pdp-buy{position:static}}

/* Tabla "Cómo conseguirlo" */
.how-get{margin:22px 0 4px;border:1px solid var(--line);border-radius:18px;background:var(--white);overflow:hidden}
.hg-title{display:block;font-size:11px;font-weight:700;letter-spacing:var(--track-mid);text-transform:uppercase;color:var(--text-soft);padding:14px 20px 10px}
.hg-row{display:flex;align-items:center;gap:14px;width:100%;padding:15px 20px;border:0;border-top:1px solid var(--line);background:none;font:inherit;text-align:left;text-decoration:none;color:var(--text);cursor:pointer;transition:background .2s}
.hg-row:hover{background:var(--card)}
.hg-ico{flex:none;width:40px;height:40px;border-radius:12px;background:var(--card);display:grid;place-items:center;color:var(--olive-700);font-style:normal}
.hg-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.hg-txt strong{font-size:13.5px;font-weight:600;letter-spacing:.02em}
.hg-txt span{font-size:12px;color:var(--text-soft)}
.hg-chev{flex:none;color:var(--text-soft);font-style:normal;display:grid;place-items:center}
.hg-chev svg{width:15px;height:15px}

/* Bloque de compra: stepper + CTA grande */
.buy-block{margin-top:22px;display:flex;flex-direction:column;gap:12px}
.buy-block .buy-row{flex-wrap:nowrap}
.buy-block .qty{padding:6px 8px}
.buy-block .qty button{width:40px;height:40px}
.btn.big{flex:1;justify-content:center;padding:17px 24px;font-size:13px}
.btn.ghost.wide{width:100%;justify-content:center}
/* WhatsApp en la ficha de producto: una sola línea enlazada al chat, con el
   mensaje ya escrito. El peso visual se queda en «Agregar al carrito».   */
.wa-cap{
  align-self:center;text-align:center;font-size:11.5px;color:var(--text-soft);
  border-bottom:1px solid transparent;padding-bottom:1px;
  transition:color .25s,border-color .25s;
}
.wa-cap:hover{color:var(--olive-700);border-bottom-color:var(--olive-700)}

.buy-block .pdp-note{margin-top:6px}

/* Debajo de la galería: descripción + filas Detalles/Medidas */
.pdp-below{margin-top:34px}
.pb-desc h3{font-size:14px;font-weight:600;letter-spacing:var(--track-mid);text-transform:uppercase;margin:0 0 10px}
.pb-desc p{font-size:14.5px;line-height:1.75;color:var(--text-soft);margin:0 0 22px}
.info-rows{border-top:1px solid var(--line)}
.info-row{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:18px 4px;border:0;border-bottom:1px solid var(--line);background:none;font:inherit;font-size:14px;font-weight:600;letter-spacing:.03em;color:var(--text);cursor:pointer;transition:color .2s}
.info-row svg{width:15px;height:15px;color:var(--text-soft);transition:transform .2s}
.info-row:hover{color:var(--olive-700)}
.info-row:hover svg{transform:translateX(3px)}

/* Panel lateral (sheet) — mismo patrón que el drawer del carrito */
.sheet-veil{position:fixed;inset:0;background:rgba(36,38,26,.45);z-index:100;opacity:0;pointer-events:none;transition:opacity .3s}
.sheet{position:fixed;top:0;right:0;bottom:0;width:min(480px,94vw);z-index:101;background:var(--paper);box-shadow:-20px 0 50px rgba(36,38,26,.2);transform:translateX(105%);transition:transform .35s cubic-bezier(.22,.8,.3,1);display:flex;flex-direction:column}
body.sheet-open{overflow:hidden}
body.sheet-open .sheet{transform:none}
body.sheet-open .sheet-veil{opacity:1;pointer-events:auto}
.sheet header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px 18px;border-bottom:1px solid var(--line)}
.sheet header h3{margin:0;font-size:15px;font-weight:600;letter-spacing:var(--track-mid);text-transform:uppercase}
.sheet-x{width:40px;height:40px;flex:none;border-radius:50%;border:1px solid var(--line);background:none;color:var(--text);font-size:22px;line-height:1;cursor:pointer;transition:background .2s}
.sheet-x:hover{background:var(--card)}
.sheet-body{flex:1;overflow-y:auto;padding:24px}
.sh-lead{font-size:14px;line-height:1.75;color:var(--text-soft);margin:0 0 18px}
.sh-specs{list-style:none;padding:0;margin:0}
.sh-specs li{font-size:13.5px;padding:12px 0;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}
.sh-specs li::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--sage-500);flex:none}
.dims-card.in-sheet{margin:0 0 20px}
.sh-dims{margin:0;border:1px solid var(--line);border-radius:18px;background:var(--white);padding:14px}
.sh-dims img{width:100%;display:block}
.sh-quote{margin-top:18px;border:1px solid var(--line);border-radius:18px;background:var(--white);padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.shq-state{font-size:13.5px;color:var(--olive-700)}
.shq-cost{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:12px}
.shq-cost span{font-size:12.5px;color:var(--text-soft)}
.shq-cost strong{font-size:22px;color:var(--olive-900)}
.shq-fine{font-size:11.5px;color:var(--text-soft)}
/* Comprar sin salir del panel de envío, una vez que el C.P. dio ruta */
.shq-buy{margin-top:4px;border-top:1px solid var(--line);padding-top:14px}
.shq-buy .btn{flex:1;min-width:150px}
@media (max-width:640px){.sheet{width:100vw}}

/* Barra inferior fija del PDP (solo móvil, estilo IKEA) */
.buy-bar{display:none}
@media (max-width:880px){
  .buy-bar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;align-items:center;gap:16px;background:var(--white);border-top:1px solid var(--line);box-shadow:0 -10px 30px rgba(36,38,26,.12);padding:12px 18px calc(12px + env(safe-area-inset-bottom))}
  .bb-info{display:flex;flex-direction:column;min-width:0}
  .bb-info strong{font-size:18px;font-weight:600;color:var(--olive-900);white-space:nowrap}
  .bb-info s{font-size:12px;color:var(--text-soft)}
  .buy-bar .btn{flex:1;justify-content:center;padding:15px 18px}
  body.has-buybar main{padding-bottom:76px}
}

/* ---------- Reseñas ---------- */
/* Estrellas con relleno proporcional: capa dorada recortada sobre la gris */
/* width:max-content evita que el flex las estire y desfase el relleno */
.stars{position:relative;display:inline-block;width:max-content;font-size:15px;line-height:1;letter-spacing:3px;color:#ded8cb;white-space:nowrap;flex:none}
.stars .s-fg{position:absolute;inset:0;width:var(--fill);overflow:hidden;color:#c9962c}
.stars.sm{font-size:12.5px;letter-spacing:2px}
.stars.lg{font-size:22px;letter-spacing:4px}

.card-rating{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-soft);margin-bottom:2px}
.card-rating em{font-style:normal;font-weight:600;color:var(--text)}
.pdp-stars{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;color:var(--text-soft);margin:4px 0 10px;text-decoration:none;transition:color .2s}
.pdp-stars strong{color:var(--text);font-weight:600}
.pdp-stars:hover{color:var(--primary)}

.rv-layout{display:grid;grid-template-columns:290px 1fr;gap:40px;align-items:start}
@media(max-width:860px){.rv-layout{grid-template-columns:1fr;gap:28px}}

.rv-summary{background:var(--white);border-radius:var(--r-card);padding:30px 28px;box-shadow:var(--shadow-soft);position:sticky;top:96px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
@media(max-width:860px){.rv-summary{position:static}}
.rv-score{display:flex;align-items:baseline;gap:9px}
.rv-score strong{font-size:52px;font-weight:300;line-height:1;color:var(--primary);letter-spacing:-.02em}
.rv-score span{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft)}
.rv-count{font-size:12px;letter-spacing:.06em;color:var(--text-soft)}
.rv-bars{width:100%;display:flex;flex-direction:column;gap:6px;margin-top:14px;padding-top:18px;border-top:1px solid var(--line)}
.rv-bar{display:grid;grid-template-columns:14px 1fr 18px;align-items:center;gap:9px;font-size:11.5px;color:var(--text-soft)}
.rv-bar i{height:6px;border-radius:99px;background:var(--card);overflow:hidden}
.rv-bar b{display:block;height:100%;border-radius:99px;background:#c9962c;transition:width .8s ease}
.rv-bar em{font-style:normal;text-align:right}
.rv-rec{font-size:12.5px;line-height:1.55;color:var(--text-soft);margin:16px 0 0;padding-top:16px;border-top:1px solid var(--line)}

.rv-list{display:flex;flex-direction:column;gap:16px}
.review{background:var(--white);border-radius:var(--r-card);padding:24px 26px;box-shadow:var(--shadow-soft);display:flex;flex-direction:column;gap:12px;transition:box-shadow .3s ease}
.review:hover{box-shadow:var(--shadow-lift)}
.rv-list:not(.all) .review.extra{display:none}
.review header{display:flex;align-items:center;gap:12px}
.rv-ava{width:42px;height:42px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--card);color:var(--primary);font-size:14px;font-weight:600;letter-spacing:.04em}
.rv-who{display:flex;flex-direction:column;gap:2px;min-width:0}
.rv-who strong{font-size:14px;font-weight:600;letter-spacing:.02em}
.rv-ver{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#4c7a4c}
.rv-ver::before{content:'✓';font-size:11px}
.review time{margin-left:auto;font-size:11.5px;color:var(--text-soft);white-space:nowrap}
.review .rv-text{font-size:14.5px;line-height:1.7;color:var(--text);margin:0}
.rv-photos{display:flex;gap:8px;flex-wrap:wrap}
.rv-photos img{width:74px;height:74px;object-fit:cover;border-radius:10px;cursor:zoom-in;transition:transform .25s ease}
.rv-photos img:hover{transform:scale(1.04)}
.rv-more{align-self:center;margin-top:6px}
/* En móvil la fecha baja a su propia línea para no estrangular el nombre */
@media(max-width:620px){
  .review{padding:20px 18px}
  .review header{flex-wrap:wrap}
  .review time{order:3;width:100%;margin:2px 0 0 54px}
  .rv-summary{padding:26px 22px}
}

/* Visor de foto de reseña */
.photo-lb{position:fixed;inset:0;z-index:120;background:rgba(28,28,24,.86);display:none;place-items:center;padding:5vh 5vw;cursor:zoom-out}
.photo-lb.on{display:grid}
/* OJO: el reset global `img{display:block}` (regla de autor) le gana por
   origen al [hidden]{display:none} del navegador — sin esta regla, la foto
   "oculta" se quedaba pintada tapando al video (bug foto→video). */
.photo-lb [hidden]{display:none}
.photo-lb img{max-width:100%;max-height:90vh;border-radius:12px;cursor:default}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(28,28,24,.45);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .2s}
.lb-nav:hover{background:rgba(28,28,24,.75)}
.lb-nav.prev{left:20px}
.lb-nav.next{right:20px}
.lb-count{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);color:#fff;font-size:12px;letter-spacing:.1em;background:rgba(28,28,24,.55);padding:7px 16px;border-radius:var(--r-pill)}
/* Tira de miniaturas del visor: la activa resaltada, clic para brincar */
.lb-thumbs{position:absolute;bottom:58px;left:50%;transform:translateX(-50%);display:flex;gap:8px;max-width:min(92vw,560px);overflow-x:auto;overflow-y:hidden;padding:4px;scrollbar-width:none;cursor:default}
.lb-thumbs::-webkit-scrollbar{display:none}
.lb-thumbs button{flex:none;width:52px;height:52px;border-radius:10px;overflow:hidden;border:2px solid transparent;padding:0;background:#1c1c18;opacity:.55;cursor:pointer;transition:opacity .2s,border-color .2s}
.lb-thumbs button:hover{opacity:.85}
.lb-thumbs button.on{border-color:#fff;opacity:1}
.lb-thumbs button img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:640px){.lb-nav{width:40px;height:40px}.lb-nav.prev{left:10px}.lb-nav.next{right:10px}.lb-thumbs{bottom:54px}.lb-thumbs button{width:40px;height:40px}}
.photo-lb .lb-x{position:absolute;top:20px;right:24px;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:none;color:#fff;font-size:24px;line-height:1}

/* ---------- Consejos Cajeva ---------- */
.tips-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
@media(max-width:900px){.tips-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.tips-grid{grid-template-columns:1fr}}
.tip-card{background:var(--white);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--shadow-soft);transition:transform .35s ease,box-shadow .35s ease}
.tip-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift)}
.tip-card .ph{aspect-ratio:16/10;overflow:hidden;background:var(--card)}
.tip-card .ph img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply}
.tip-card h3{font-size:16px;letter-spacing:.04em;margin:18px 22px 8px}
.tip-card p{font-size:13.5px;line-height:1.7;color:var(--text-soft);margin:0 22px 22px}

/* ---------- Bloque de contacto premium ("¿Tienes un proyecto en mente?") ---------- */
.contact-block{
  position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center;
  background:
    radial-gradient(560px 300px at 12% -10%, rgba(214,189,162,.13), transparent 65%),
    radial-gradient(640px 420px at 108% 118%, rgba(158,64,27,.2), transparent 60%),
    var(--olive-900);
  color:var(--bone-200);border-radius:var(--r-card);padding:60px 64px;
  overflow:hidden;box-shadow:var(--shadow-lift)
}
@media(max-width:860px){.contact-block{grid-template-columns:1fr;padding:38px 26px;gap:34px}}
.cb-copy .kicker{color:var(--sand-300)}
.cb-title{color:#fff;font-size:clamp(27px,3.4vw,42px);margin:12px 0 16px}
.cb-title strong{color:var(--sand-300);font-weight:600}
.cb-copy>p{font-size:14.5px;line-height:1.8;opacity:.92;max-width:520px;margin:0}
.cb-auds{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:26px}
@media(max-width:560px){.cb-auds{grid-template-columns:1fr}}
.cb-aud{border:1px solid rgba(219,215,206,.16);border-radius:18px;padding:18px 20px;background:rgba(219,215,206,.04);transition:border-color .25s,background .25s,transform .25s}
.cb-aud:hover{border-color:rgba(214,189,162,.45);background:rgba(219,215,206,.07);transform:translateY(-2px)}
.cb-ico{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:rgba(214,189,162,.14);color:var(--sand-300);margin-bottom:12px}
.cb-aud h3{font-size:13px;font-weight:600;letter-spacing:var(--track-mid);text-transform:uppercase;margin:0 0 6px;color:#fff}
.cb-aud p{font-size:12.5px;line-height:1.65;color:rgba(219,215,206,.75);margin:0}
.cb-form{background:var(--paper);color:var(--text);border-radius:20px;padding:28px 30px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-lift)}
.cb-form-t{font-size:13px;font-weight:600;letter-spacing:var(--track-mid);text-transform:uppercase;color:var(--olive-900);margin-bottom:4px}
.cb-form label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin-top:10px}
.cb-form input,.cb-form select{padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit;color:var(--text)}
.cb-form input:focus,.cb-form select:focus{outline:none;border-color:var(--olive-700)}
/* Selector de canal: WhatsApp o correo, un solo campo de contacto */
.cb-chan{display:flex;gap:6px;padding:4px;margin-top:4px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.cb-chan button{
  flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font:inherit;font-size:12px;font-weight:600;letter-spacing:.06em;cursor:pointer;
  padding:11px 10px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text-soft);
  transition:background .3s,color .3s,box-shadow .3s;
}
.cb-chan button svg{width:16px;height:16px;flex:none}
.cb-chan button.on{background:var(--white);color:var(--olive-900);box-shadow:0 2px 8px rgba(61,63,34,.10)}
.cb-chan button:focus-visible{outline:2px solid var(--olive-700);outline-offset:2px}
.cb-form .btn{margin-top:18px;width:100%;justify-content:center}
/* El terracota es el estado normal; al pasar el cursor va al olivo profundo */
.cb-form .btn.terra:hover{background:var(--olive-900);border-color:var(--olive-900)}
.cb-fine{font-size:11.5px;color:var(--text-soft);text-align:center;margin-top:10px}
.cb-ok{text-align:center;padding:26px 10px;display:flex;flex-direction:column;gap:8px;align-items:center}
.cb-ok .mark{width:54px;height:54px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:24px}
.cb-ok h3{font-size:18px;letter-spacing:.04em}
.cb-ok p{font-size:13.5px;color:var(--text-soft);max-width:300px}


/* ---------- Página Proyectos ---------- */
.pj-hero{padding:72px 0 30px}
.pj-hero p{max-width:560px;margin-top:18px;font-size:15px;line-height:1.8;color:var(--text-soft)}
.pj{display:grid;grid-template-columns:1.25fr .75fr;gap:44px;align-items:center;padding:56px 0;border-bottom:1px solid var(--line)}
.pj:last-of-type{border-bottom:none}
.pj.flip{grid-template-columns:.75fr 1.25fr}
.pj.flip .pj-media{order:2}
@media(max-width:860px){.pj,.pj.flip{grid-template-columns:1fr}.pj.flip .pj-media{order:0}}
.pj-media{display:flex;flex-direction:column;gap:14px}
.pj-big{border-radius:var(--r-card);overflow:hidden;background:var(--card);margin:0}
.pj-big img{width:100%;aspect-ratio:16/10;object-fit:cover;mix-blend-mode:multiply;display:block}
.pj-mosaic{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.pj-mosaic figure{margin:0;border-radius:var(--r-sm);overflow:hidden;background:var(--card)}
.pj-mosaic img{width:100%;aspect-ratio:1;object-fit:cover;mix-blend-mode:multiply;display:block}
.pj-video{width:100%;border-radius:var(--r-sm);background:#000}
.pj-meta .tag{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:var(--track-mid);text-transform:uppercase;background:var(--primary);color:#fff;border-radius:var(--r-pill);padding:5px 14px;margin-bottom:14px}
.pj-meta p{font-size:14.5px;line-height:1.85;color:var(--text-soft);margin:14px 0 22px}

/* ---------- Página Nosotros ---------- */
.ns-hero{padding:72px 0 0}
.ns-hero p{max-width:520px;margin-top:18px;font-size:15px;line-height:1.8;color:var(--text-soft)}
.ns-hero-img{margin-top:44px}
.ns-hero-img img{width:100%;max-height:480px;object-fit:cover;border-radius:var(--r-card);display:block}
.ns-pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
@media(max-width:860px){.ns-pillars{grid-template-columns:1fr}}
.ns-pillar{text-align:center;padding:34px 26px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-soft);transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}
.ns-pillar:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);border-color:var(--olive-700)}
.ns-ico{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 16px;border-radius:50%;background:var(--card);color:var(--primary);font-size:22px}
.ns-pillar h3{font-size:16px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px}
.ns-pillar p{font-size:13.5px;line-height:1.75;color:var(--text-soft)}
.ns-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:720px){.ns-gallery{grid-template-columns:repeat(2,1fr)}}
.ns-gallery figure{margin:0;border-radius:var(--r-sm);overflow:hidden;background:var(--card)}
.ns-gallery img{width:100%;aspect-ratio:3/4;object-fit:cover;mix-blend-mode:multiply;display:block}
.ns-contact{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-soft);padding:44px 48px}
@media(max-width:760px){.ns-contact{grid-template-columns:1fr;padding:32px 26px}}
.ns-contact p{font-size:14px;line-height:1.8;color:var(--text-soft);margin-top:8px}
.ns-contact-data{display:flex;flex-direction:column;gap:12px}
.ns-contact-data p{display:flex;flex-direction:column;font-size:14px;margin:0}
.ns-contact-data strong{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft)}
.ns-contact-data a{color:var(--primary);font-weight:600;text-decoration:none}

/* ============================================================
   FASE 1.7 — promo destacada, zoom PDP, cómo llegar
   ============================================================ */

/* Promoción destacada del home (imagen configurable en el admin) */
#promo-home:not(:empty){padding:34px 0 4px}
.promo-feature{display:grid;grid-template-columns:1.15fr 1fr;border-radius:var(--r-card);overflow:hidden;background:var(--ink);color:var(--bone-200);text-decoration:none;min-height:320px}
.pf-media img{width:100%;height:100%;object-fit:cover;display:block}
.pf-copy{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:14px;padding:40px 46px}
.pf-copy h2{color:#fff}
.pf-copy p{opacity:.75;font-size:14.5px;margin:0}
.pf-pct{font-size:13px;font-weight:800;letter-spacing:.1em;background:var(--terra-600);color:#fff;border-radius:var(--r-pill);padding:6px 14px}
.promo-feature:hover .btn.terra{transform:translateY(-2px)}
@media(max-width:760px){.promo-feature{grid-template-columns:1fr}.pf-media{aspect-ratio:16/9}.pf-copy{padding:28px 24px 34px}}

/* Zoom con el cursor en la imagen del producto */
.gallery .main.can-zoom{cursor:zoom-in}
.gallery .main.can-zoom #g-main{transition:transform .35s cubic-bezier(.2,.65,.25,1)}
.gallery .main.zooming #g-main{transform:scale(2.1)}
.zoom-hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.88);border-radius:var(--r-pill);padding:7px 16px;color:var(--text-soft);pointer-events:none;z-index:4;white-space:nowrap}

/* Cómo llegar (showrooms del home y de Nosotros) */
.showroom-card .sr-maps{margin-top:16px}
/* La dirección ES el enlace a cómo llegar: se lee como texto normal y solo
   se subraya al pasar encima. Antes era un botón aparte que se colaba a media
   frase y a veces caía solo en el renglón siguiente. */
.ns-maps{color:var(--primary);font-weight:600;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .2s}
.ns-maps:hover,.ns-maps:focus-visible{text-decoration-color:currentColor}

/* ============================================================
   FASE 2.0 — desplegable de Productos, buscador y modal
   ============================================================ */

/* ---------- Desplegable de categorías ---------- */
.nav-drop{position:relative;display:flex;align-items:center;gap:4px}
.drop-toggle{display:none;background:none;border:0;color:inherit;padding:6px}
/* Panel angosto colgado del propio «Productos» (antes: tarjeta de 880px
   centrada en la pantalla, con una foto por categoría). */
.drop-panel{
  position:absolute;top:calc(100% + 16px);left:-18px;transform:translateY(-8px);
  width:258px;background:var(--white);border-radius:18px;
  box-shadow:var(--shadow-lift);padding:10px;
  opacity:0;visibility:hidden;transition:opacity .22s ease,transform .22s ease,visibility .22s;
}
.nav-drop:hover .drop-panel,.nav-drop:focus-within .drop-panel{opacity:1;visibility:visible;transform:none}
/* franja invisible que evita que el panel se cierre al bajar el mouse:
   cubre todo el ancho del panel, no solo el del enlace */
.nav-drop::after{content:'';position:absolute;top:100%;left:-20px;width:280px;height:20px}
/* los enlaces del panel no heredan el estilo de los del nav */
.drop-panel a{padding:0;border-bottom:0;text-transform:none;letter-spacing:normal;font-size:inherit}
.drop-list{display:flex;flex-direction:column;gap:1px}
/* dos clases para ganarle al reset de arriba, que también son dos */
.drop-panel .drop-row{
  position:relative;display:block;padding:11px 16px 11px 18px;border-radius:8px;
  font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  transition:background .2s,color .2s;
}
.drop-panel .drop-row::before{
  content:'';position:absolute;left:6px;top:50%;width:3px;height:0;border-radius:3px;
  background:var(--olive-700);transform:translateY(-50%);transition:height .22s ease;
}
.drop-panel .drop-row:hover{background:var(--card);color:var(--olive-700)}
.drop-panel .drop-row:hover::before{height:16px}
.drop-panel .drop-all{
  display:block;margin-top:8px;padding:13px 18px 6px;border-top:1px solid var(--line);
  font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);
  transition:color .2s;
}
.drop-panel .drop-all:hover{color:var(--olive-900)}
@media (prefers-reduced-motion: reduce){
  .drop-panel,.drop-panel .drop-row,.drop-panel .drop-row::before{transition:none}
}

/* ---------- Buscador ---------- */
body.no-scroll{overflow:hidden}
.search-veil{position:fixed;inset:0;z-index:100;background:rgba(28,28,24,.42);display:flex;justify-content:center;align-items:flex-start}
.search-veil[hidden]{display:none}
.search-panel{
  width:100%;background:var(--paper);max-height:88vh;display:flex;flex-direction:column;
  box-shadow:0 20px 60px rgba(28,28,24,.22);animation:sr-in .28s cubic-bezier(.2,.7,.3,1);
}
@keyframes sr-in{from{transform:translateY(-24px);opacity:.4}to{transform:none;opacity:1}}
.search-field{display:flex;align-items:center;gap:14px;padding:20px clamp(20px,6vw,64px);border-bottom:1px solid var(--line);flex:none}
.search-field svg{color:var(--text-soft);flex:none}
.search-field input{
  flex:1;min-width:0;border:0;background:none;font:inherit;font-size:clamp(18px,3vw,26px);
  font-weight:300;letter-spacing:.01em;color:var(--text);padding:6px 0;
}
.search-field input:focus{outline:none}
.search-field input::-webkit-search-cancel-button{display:none}
.search-close{background:none;border:0;font-size:30px;line-height:1;color:var(--text-soft);padding:0 4px;flex:none}
.search-close:hover{color:var(--text)}
.search-body{overflow-y:auto;padding:26px clamp(20px,6vw,64px) 40px}

.sr-block+.sr-block{margin-top:34px}
.sr-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.sr-head h3{font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-soft);margin:0}
.sr-head span{font-size:11.5px;color:var(--text-soft)}
.sr-head button{margin-left:auto;background:none;border:0;font:inherit;font-size:11.5px;letter-spacing:.06em;color:var(--primary);text-decoration:underline}
.sr-chips{display:flex;flex-wrap:wrap;gap:9px}
.sr-chip{
  display:inline-block;border:1.5px solid var(--line);background:none;border-radius:var(--r-pill);
  font:inherit;font-size:13px;color:var(--text);padding:8px 16px;transition:all .2s;
}
.sr-chip:hover{border-color:var(--primary);color:var(--primary)}
.sr-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
@media(max-width:1000px){.sr-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:620px){.sr-grid{grid-template-columns:repeat(2,1fr)}}
.sr-card{display:flex;flex-direction:column;gap:8px}
.sr-card .ph{border-radius:var(--r-sm);overflow:hidden;background:var(--card);aspect-ratio:1;display:grid;place-items:center;padding:8%}
.sr-card .ph img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;transition:transform .4s ease}
.sr-card:hover .ph img{transform:scale(1.06)}
.sr-card .n{font-size:13px;line-height:1.35}
.sr-card:hover .n{color:var(--primary)}
.sr-card .pr{font-size:13px;font-weight:600}
.sr-all{display:inline-block;margin-top:20px;font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);border-bottom:1px solid currentColor}
.sr-empty{font-size:16px;color:var(--text);margin:30px 0}
.sr-empty span{display:block;margin-top:6px;font-size:13.5px;color:var(--text-soft)}

/* ---------- Modal de la tienda ---------- */
.store-modal{position:fixed;inset:0;z-index:110;background:rgba(28,28,24,.5);display:grid;place-items:center;padding:20px;overflow-y:auto}
.store-modal[hidden]{display:none}
.sm-box{background:var(--paper);border-radius:var(--r-card);width:min(430px,100%);box-shadow:var(--shadow-lift);margin:auto;overflow:hidden}
.sm-head{display:flex;align-items:center;gap:14px;padding:20px 22px;border-bottom:1px solid var(--line)}
.sm-thumb{width:52px;height:52px;flex:none;border-radius:12px;overflow:hidden;background:var(--card);display:grid;place-items:center;padding:4px}
.sm-thumb img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}
.sm-head h3{font-size:15px;font-weight:600;letter-spacing:.02em;margin:2px 0 0}
.sm-x{margin-left:auto;background:none;border:1px solid var(--line);border-radius:50%;width:32px;height:32px;font-size:18px;line-height:1;color:var(--text-soft);flex:none}
.sm-x:hover{border-color:var(--terra-600);color:var(--terra-600)}
.sm-form{display:flex;flex-direction:column;gap:6px;padding:22px}
.sm-lead{font-size:13.5px;line-height:1.6;color:var(--text-soft);margin:0 0 8px}
.sm-form label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin-top:10px}
.sm-form input{padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:var(--white);font:inherit}
.sm-form input:focus{outline:none;border-color:var(--primary)}
.sm-form .btn{margin-top:18px;justify-content:center}
.sm-error{font-size:12.5px;color:var(--terra-600);margin:10px 0 0}
.sm-form .cb-fine{margin-top:10px;text-align:center}

@media (max-width: 880px) {
  /* El desplegable pasa a acordeón dentro del menú hamburguesa */
  .nav-drop{flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid var(--line)}
  .nav-drop>a{border-bottom:0}
  .drop-toggle{display:block;position:absolute;top:6px;right:0;padding:12px 4px}
  .nav-drop.open .drop-toggle svg{transform:rotate(180deg)}
  .nav-drop::after{display:none}
  .drop-panel{
    position:static;transform:none;width:auto;box-shadow:none;background:none;padding:0 0 12px;
    max-height:0;overflow:hidden;transition:max-height .3s ease,opacity .2s ease;
  }
  .nav-drop.open .drop-panel{opacity:1;visibility:visible;max-height:520px}
  .drop-panel .drop-row{padding:10px 0 10px 14px;font-size:11px}
  .drop-panel .drop-row::before{left:0}
  .drop-panel .drop-all{margin-top:6px;padding:12px 0 0 14px}

  .search-panel{max-height:100dvh;height:100dvh}
  .search-field{padding:16px 18px}
  .search-body{padding:20px 18px 40px}
}

/* ============================================================
   Carga progresiva — skeletons y shimmer de imágenes
   ============================================================ */
.sk{background:linear-gradient(100deg,#e9e6de 40%,#f3f1ea 50%,#e9e6de 60%);background-size:200% 100%;animation:sk-shimmer 1.4s infinite;border-radius:14px}
@keyframes sk-shimmer{to{background-position:-200% 0}}
.sk-card .sk-ph{border-radius:var(--r-card);margin-bottom:14px}
.sk-line{height:12px;margin:8px 6px 0;border-radius:6px}
.sk-line.w70{width:70%}
.sk-line.w40{width:40%}
.sk-block{border-radius:var(--r-card)}
@media(prefers-reduced-motion:reduce){.sk{animation:none}}

/* Mientras una foto no termina de cargar, su marco brilla como skeleton
   y la imagen entra con fundido (bindImgReveal). */
.img-loading{position:relative}
.img-loading::after{content:'';position:absolute;inset:0;z-index:1;border-radius:inherit;background:linear-gradient(100deg,rgba(233,230,222,.92) 40%,rgba(246,244,239,.96) 50%,rgba(233,230,222,.92) 60%);background-size:200% 100%;animation:sk-shimmer 1.4s infinite}
.img-loading img{opacity:0}

/* ============================================================
   BLOG CAJEVA — listado, entrada (3 plantillas) y cumpleaños
   ============================================================ */
.blog-page{min-height:60vh;padding-bottom:30px}
.blog-page .page-head{padding:52px 0 34px}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
@media(max-width:900px){.blog-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.blog-grid{grid-template-columns:1fr}}
.blog-card{display:flex;flex-direction:column;background:var(--white);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--shadow-soft);transition:transform .35s ease,box-shadow .35s ease}
.blog-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift)}
.blog-card .ph{aspect-ratio:4/3;overflow:hidden;background:var(--card);position:relative}
.blog-card .ph img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;transition:transform .5s}
.blog-card:hover .ph img{transform:scale(1.05)}
.blog-card time{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);margin:18px 22px 0}
.blog-card h3{font-size:16.5px;font-weight:600;letter-spacing:.02em;line-height:1.4;margin:8px 22px 6px}
.blog-card p{font-size:13.5px;line-height:1.65;color:var(--text-soft);margin:0 22px 14px;flex:1}
.bc-more{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);margin:0 22px 22px}

/* Entrada del blog */
.article{max-width:860px;margin:0 auto;padding:34px 0 20px}
.art-back{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);margin-bottom:24px;border-bottom:1px solid currentColor;padding-bottom:3px}
.art-cover{margin:0 0 30px;border-radius:var(--r-card);overflow:hidden;background:var(--card)}
.art-cover img{width:100%;aspect-ratio:16/9;object-fit:cover;mix-blend-mode:multiply;display:block}
.art-head h1{font-size:clamp(26px,4vw,40px);font-weight:500;line-height:1.2;letter-spacing:.01em;margin:0 0 10px}
.art-sub{font-size:16px;color:var(--text-soft);margin:0 0 8px;line-height:1.6}
.art-meta{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin:8px 0}
.art-body{max-width:65ch;margin-top:22px}
.art-body p{font-size:15.5px;line-height:1.9;color:var(--text);margin:0 0 20px}
.art-fig{margin:30px 0;border-radius:var(--r-card);overflow:hidden;background:var(--card)}
.art-fig img{width:100%;aspect-ratio:16/10;object-fit:cover;mix-blend-mode:multiply;display:block}
.art-mosaic{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
@media(max-width:720px){.art-mosaic{grid-template-columns:repeat(2,1fr)}}
.art-mosaic figure{margin:0;border-radius:var(--r-sm);overflow:hidden;background:var(--card)}
.art-mosaic img{width:100%;aspect-ratio:1;object-fit:cover;mix-blend-mode:multiply;display:block}

/* Plantilla "portada": hero full-bleed con overlay */
.article--portada .art-hero{position:relative;border-radius:var(--r-card);overflow:hidden;margin:0 0 20px;min-height:380px;display:grid;align-items:end}
.article--portada .art-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.article--portada .art-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(36,38,26,.06) 30%,rgba(36,38,26,.78))}
.art-hero-copy{position:relative;z-index:2;padding:40px 44px;color:#fff}
.art-hero-copy h1{font-size:clamp(26px,4vw,42px);font-weight:500;line-height:1.15;margin:0 0 8px;color:#fff}
.art-hero-copy p{margin:0;font-size:15px;opacity:.85}
@media(max-width:620px){.art-hero-copy{padding:24px 22px}}

/* Cumpleaños del mes (solo nombre, foto y día) */
/* Cumpleaños en el blog: el mismo bloque del inicio, con encabezado propio y
   párrafos de contexto que ahí no caben. (Antes era una rejilla aparte,
   .bday-strip, con su propio diseño y un choque de nombres con el inicio.) */
.bday-blog{margin:64px 0 20px}
.bday-blog .section-head{margin-bottom:24px}
.bf-extra{font-size:14px;line-height:1.75;color:var(--text-soft);margin:14px 0 0;max-width:62ch}
/* .ava trae su propio color; sin esto el selector de arriba le ganaba y
   las iniciales salían en terracota sobre olivo (ilegibles). */
.ava{width:64px;height:64px;border-radius:50%;overflow:hidden;display:grid;place-items:center;color:#fff;font-weight:700;font-size:20px;letter-spacing:.04em;flex:none}
.ava img{width:100%;height:100%;object-fit:cover;display:block}

/* ============================================================
   Paginación del catálogo
   ============================================================ */
/* Barra de tres partes que ocupa todo el ancho de la rejilla: conteo ·
   números · piezas por página. Las columnas laterales son 1fr iguales, así
   los números quedan centrados aunque los lados midan distinto.          */
.pager-bar{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;
  margin:38px 0 6px;padding-top:22px;border-top:1px solid var(--line);
}
.pager-bar .results-note{margin:0}
.pg-nums{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.pg-size{justify-self:end}
.pg-btn{min-width:38px;height:38px;padding:0 8px;border:1.5px solid var(--line);background:transparent;color:var(--text);border-radius:12px;font:inherit;font-size:13px;font-weight:600;transition:all .2s}
.pg-btn:hover:not([disabled]){border-color:var(--olive-700);color:var(--olive-700)}
.pg-btn.on{background:var(--olive-700);border-color:var(--olive-700);color:#fff}
.pg-btn[disabled]{opacity:.35;cursor:default}
.pg-size select{font:inherit;font-size:12.5px;letter-spacing:.03em;padding:9px 14px;border-radius:var(--r-pill);border:1.5px solid var(--line);background:transparent;color:var(--text);cursor:pointer}
/* Apilada: primero los números, que es a lo que se viene */
@media (max-width:760px){
  .pager-bar{grid-template-columns:1fr;justify-items:center;gap:14px;text-align:center}
  .pg-nums{order:-1}
  .pg-size{justify-self:center}
}

/* ---------- Video en reseñas ---------- */
.rv-vthumb{position:relative;width:74px;height:74px;border:0;padding:0;border-radius:10px;overflow:hidden;cursor:pointer;background:#000;transition:transform .25s ease}
.rv-vthumb video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.rv-vthumb i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-size:20px;color:#fff;background:rgba(28,28,24,.28);text-shadow:0 1px 6px rgba(0,0,0,.5)}
.rv-vthumb:hover{transform:scale(1.04)}
.photo-lb video{max-width:100%;max-height:90vh;border-radius:12px;cursor:default;background:#000}

/* ---------- Toggle de idioma (topbar) ---------- */
.lang-toggle{display:inline-flex;align-items:center;gap:6px}
.lang-toggle i{font-style:normal;opacity:.4}
.lang-toggle button{background:none;border:0;padding:2px 2px;font:inherit;font-size:11px;font-weight:500;letter-spacing:.1em;color:rgba(219,215,206,.62);cursor:pointer;transition:color .2s}
.lang-toggle button:hover{color:#fff}
.lang-toggle button.on{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:3px}

/* ---------- Popup multimedia del PDP (estilo IKEA) ---------- */
.mm-open{position:absolute;right:14px;bottom:14px;z-index:6;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--r-pill);border:1px solid var(--line);background:rgba(255,255,255,.92);backdrop-filter:blur(4px);color:var(--text);font:inherit;font-size:11.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;cursor:pointer;box-shadow:var(--shadow-soft);transition:all .2s}
.mm-open:hover{background:var(--olive-700);border-color:var(--olive-700);color:#fff}
.mm-veil{position:fixed;inset:0;z-index:112;background:rgba(28,28,24,.5);display:grid;place-items:center;padding:24px}
.mm-veil[hidden]{display:none}
.mm-modal{width:90vw;height:min(90vh,960px);background:var(--white);border-radius:22px;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lift)}
/* Pestañas centradas; la × sale del flujo para no descentrarlas */
.mm-head{position:relative;display:flex;align-items:center;justify-content:center;padding:14px 66px;border-bottom:1px solid var(--line);flex:none}
.mm-tabs{display:flex;gap:6px;max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.mm-tabs::-webkit-scrollbar{display:none}
.mm-tab{padding:10px 20px;border-radius:var(--r-pill);border:1.5px solid var(--line);background:transparent;color:var(--text);font:inherit;font-size:12px;font-weight:600;letter-spacing:.05em;cursor:pointer;white-space:nowrap;transition:all .2s}
.mm-tab:hover{border-color:var(--olive-700);color:var(--olive-700)}
.mm-tab.on{background:var(--olive-700);border-color:var(--olive-700);color:#fff}
.mm-x{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:40px;height:40px;flex:none;border-radius:50%;border:1px solid var(--line);background:none;color:var(--text);font-size:22px;line-height:1;cursor:pointer;transition:all .2s}
.mm-x:hover{background:var(--paper)}
.mm-body{flex:1;overflow-y:auto;padding:20px 24px 24px}
/* Dos imágenes por renglón, grandes (pedido de Alan, estilo IKEA) */
.mm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
/* Las fotos aquí ya se ven en grande: no son clicables (sin zoom).
   Solo el tile de video reacciona al puntero. */
.mm-tile{position:relative;aspect-ratio:4/3;border:1px solid var(--line);border-radius:14px;overflow:hidden;padding:0;background:var(--paper);transition:transform .2s ease,box-shadow .2s ease}
.mm-tile-video:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}
.mm-tile img,.mm-tile video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.mm-tile-dims img{object-fit:contain;background:#fff;padding:8px}
.mm-tile-video{cursor:pointer;background:#000}
.mm-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.mm-play svg{width:46px;height:46px;padding:12px;box-sizing:content-box;border-radius:50%;background:rgba(28,28,24,.42);backdrop-filter:blur(2px)}
.mm-tag{position:absolute;left:10px;bottom:10px;padding:5px 12px;border-radius:var(--r-pill);background:rgba(255,255,255,.92);color:var(--text);font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase}
.mm-grid-video{grid-template-columns:repeat(2,1fr)}
.mm-grid-video .mm-tile{aspect-ratio:16/10}
.mm-dims{margin:0;display:flex;flex-direction:column;align-items:center;gap:12px;padding:6px 0}
.mm-dims img{width:min(900px,100%);border:1px solid var(--line);border-radius:16px;background:#fff}
.mm-dims figcaption{font-size:12px;color:var(--text-soft)}
.mm-title{font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text)}
/* Táctil: las fotos del popup y la principal se tocan y pellizcan (el visor las abre);
   el navegador no hace zoom de página sobre ellas. */
@media (hover:none){
  .mm-tile img{pointer-events:auto;touch-action:pan-x pan-y;-webkit-touch-callout:none;cursor:zoom-in}
  .mm-dims img,.gallery .main img{touch-action:pan-x pan-y;-webkit-touch-callout:none}
}
@media (max-width:640px){
  .mm-veil{padding:0}
  .mm-modal{width:100vw;height:100dvh;border-radius:0}
  .mm-grid{grid-template-columns:repeat(2,1fr)}
  .mm-open{padding:9px 13px;font-size:10.5px}
}

/* ---------- "N personas están viendo este producto" ---------- */
.viewing{display:flex;align-items:center;gap:11px;margin:16px 0 2px;font-size:13px;color:var(--text-soft)}
.viewing[hidden]{display:none}
.v-dot{flex:none;width:8px;height:8px;border-radius:50%;background:#5c8a4e;animation:v-pulse 2.2s infinite}
@keyframes v-pulse{0%{box-shadow:0 0 0 0 rgba(92,138,78,.45)}70%{box-shadow:0 0 0 9px rgba(92,138,78,0)}100%{box-shadow:0 0 0 0 rgba(92,138,78,0)}}

/* ---------- Carrusel horizontal de una línea (favoritos, reseñas) ---------- */
.hs-wrap{position:relative;margin-top:26px}
/* snap "proximity" (no mandatory): el mandatory secuestra los gestos
   diagonales del trackpad y hace brincar el scroll vertical de la página.
   overscroll-behavior evita que llegar al borde dispare el "atrás" del navegador. */
/* overflow-y:hidden explícito: con solo overflow-x:auto el eje Y computa
   "auto", y el translateY(26px) inicial de .reveal crea ~26px de scroll
   vertical invisible que secuestra el gesto del trackpad. */
.hs-row{display:flex;gap:22px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:none;padding:6px 2px 14px;scroll-padding-left:2px}
.hs-row::-webkit-scrollbar{display:none}
/* dentro del carrusel el reveal solo hace fade: el translateY se
   recortaría contra el overflow-y:hidden mientras anima */
.hs-row .reveal{transform:none}
.hs-row>*{flex:0 0 min(272px,76vw);scroll-snap-align:start;min-width:0}
.hs-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.94);backdrop-filter:blur(4px);color:var(--text);display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-soft);transition:all .2s}
.hs-btn:hover{background:var(--olive-700);border-color:var(--olive-700);color:#fff}
.hs-btn.prev{left:-14px}
.hs-btn.next{right:-14px}
.hs-btn.off{opacity:0;pointer-events:none}
@media (max-width:760px){.hs-btn{width:38px;height:38px}.hs-btn.prev{left:-6px}.hs-btn.next{right:-6px}}

/* ---------- Descubre dónde comprar ---------- */
.donde-head{max-width:620px;margin-bottom:34px}
.donde-head .h-section{margin-top:8px}
.donde-head p{margin:14px 0 0;font-size:15px;line-height:1.75;color:var(--text-soft)}
.donde-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
/* Tarjeta blanca y aireada (referencia elegida por Alan). Al pasar el cursor
   se "pinta" de verde Cajeva de abajo hacia arriba (capa ::before). */
.donde-card{
  position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;gap:16px;
  padding:44px 36px 36px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);
  text-decoration:none;color:var(--text);overflow:hidden;
  transition:transform .45s cubic-bezier(.22,.8,.3,1),box-shadow .45s ease,border-color .45s ease;
}
.donde-card::before{
  content:'';position:absolute;inset:0;z-index:-1;background:var(--olive-700);
  transform:scaleY(0);transform-origin:bottom;
  transition:transform .6s cubic-bezier(.22,.8,.3,1);
}
.donde-card:hover{transform:translateY(-4px);border-color:var(--olive-700);box-shadow:var(--shadow-lift)}
.donde-card:hover::before{transform:scaleY(1)}
/* Icono y título en la misma línea */
.dc-top{display:flex;align-items:center;gap:14px;width:100%}
.dc-ico{color:var(--sage-500);display:block;flex:none;transition:color .45s ease}
.dc-ico svg{width:30px;height:30px;display:block}
.donde-card h3{margin:0;font-size:21px;font-weight:600;letter-spacing:.01em;line-height:1.3;transition:color .45s ease}
.donde-card p{margin:0;font-size:14px;line-height:1.75;color:var(--text-soft);flex:1;transition:color .45s ease}
/* Acción centrada al pie, separada por un filete */
.dc-go{
  display:flex;justify-content:center;width:100%;
  margin-top:14px;padding-top:20px;border-top:1px solid var(--line);
  font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  text-align:center;color:var(--olive-900);
  transition:color .45s ease,border-top-color .45s ease;
}
/* Sobre el verde, todo el contenido pasa a claro */
.donde-card:hover h3{color:#fff}
.donde-card:hover p{color:rgba(255,255,255,.78)}
.donde-card:hover .dc-ico{color:var(--sand-300)}
.donde-card:hover .dc-go{color:var(--sand-300);border-top-color:rgba(255,255,255,.24)}
@media (prefers-reduced-motion:reduce){
  .donde-card,.donde-card::before,.dc-ico,.donde-card h3,.donde-card p,.dc-go{transition:none}
}
@media (max-width:860px){
  .donde-head{margin-bottom:22px}
  /* Compactas en móvil: mismo contenido, mucho menos alto */
  .donde-grid{grid-template-columns:1fr;gap:10px}
  .donde-card{padding:22px 22px 20px;gap:10px;border-radius:20px}
  .dc-top{gap:11px}
  .dc-ico svg{width:24px;height:24px}
  .donde-card h3{font-size:17px}
  .donde-card p{font-size:13px;line-height:1.6}
  .dc-go{margin-top:8px;padding-top:14px;font-size:11px}
}

/* ---------- Reseñas recientes (carrusel del index) ---------- */
.rvh .hs-row>*{flex-basis:min(340px,82vw)}
.rvh-card{display:flex;flex-direction:column;gap:12px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);padding:26px 26px 22px;box-shadow:var(--shadow-soft)}
.rvh-stars{color:var(--terra-600);font-size:15px;letter-spacing:2px}
.rvh-text{margin:0;font-size:14px;line-height:1.7;color:var(--text);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;flex:1}
/* Reseña con foto/video: el medio es el protagonista (grande arriba,
   clic → lightbox) */
.rvh-card.has-media{padding:0;gap:0;overflow:hidden}
.rvh-hero{position:relative;display:block;width:100%;aspect-ratio:4/3;border:0;padding:0;background:var(--card);cursor:pointer;overflow:hidden}
.rvh-hero img,.rvh-hero video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease;pointer-events:none}
.rvh-card.has-media:hover .rvh-hero img{transform:scale(1.045)}
.rvh-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;pointer-events:none}
.rvh-play svg{width:22px;height:22px;padding:13px;box-sizing:content-box;border-radius:50%;background:rgba(28,28,24,.45);backdrop-filter:blur(2px)}
.rvh-play.sm{inset:auto 10px 10px auto;pointer-events:auto;cursor:pointer}
.rvh-play.sm svg{width:14px;height:14px;padding:9px}
/* Miniaturas de las fotos que no se ven en grande, sobre el hero */
.rvh-thumbs{position:absolute;left:10px;bottom:10px;display:flex;gap:6px}
.rvh-th{position:relative;display:block;width:38px;height:38px;border-radius:9px;overflow:hidden;border:2px solid rgba(255,255,255,.95);box-shadow:0 2px 10px rgba(28,28,24,.35);background:var(--card);cursor:pointer;transition:transform .2s}
.rvh-th:hover{transform:translateY(-2px)}
.rvh-th img{width:100%;height:100%;object-fit:cover}
.rvh-th i{position:absolute;inset:0;display:grid;place-items:center;background:rgba(28,28,24,.55);color:#fff;font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.03em}
/* el hover del hero no debe escalar las miniaturas */
.rvh-card.has-media:hover .rvh-th img{transform:none}
.rvh-body{padding:18px 22px 20px;display:flex;flex-direction:column;gap:11px;flex:1}
.rvh-card.has-media .rvh-text{-webkit-line-clamp:3}
.rvh-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:14px}
.rvh-who{display:flex;flex-direction:column;gap:2px;min-width:0}
.rvh-who strong{font-size:13px;letter-spacing:.03em}
.rvh-who span{font-size:11.5px;color:var(--text-soft)}
.rvh-prod{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text-soft);min-width:0}
.rvh-prod img{width:38px;height:38px;border-radius:9px;object-fit:cover;background:var(--card);mix-blend-mode:multiply;flex:none}
.rvh-prod span{font-size:11.5px;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.rvh-prod:hover span{color:var(--olive-700);text-decoration:underline;text-underline-offset:3px}

/* ---------- Cumpleaños próximos (bloque destacado del index) ----------
   Antes esto redefinía .bday-strip, que también usa el blog: las dos reglas
   chocaban y descuadraban la del blog. Ahora tiene clases propias. */
#bday-home{padding:52px 0 46px}
.bday-feature{display:grid;grid-template-columns:7fr 3fr;gap:20px;align-items:stretch}

.bf-main{
  position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:44px 46px;
}
.bf-kick{display:inline-flex;align-items:center;gap:10px;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--olive-700)}
.bf-kick svg{width:21px;height:21px;color:var(--terra-600);flex:none}
.bf-rule{display:block;width:64px;height:2px;border-radius:2px;background:var(--olive-700);margin:16px 0 24px}
.bf-when{font-size:13px;font-weight:600;letter-spacing:.05em;color:var(--text-soft)}
.bf-who{display:flex;align-items:center;gap:18px;margin-top:12px}
.bf-who .ava{width:66px;height:66px;font-size:20px}
.bf-who h3{margin:0;font-size:clamp(25px,3.2vw,37px);font-weight:600;line-height:1.14;letter-spacing:.01em;color:var(--olive-900)}
.bf-main>p{margin:20px 0 0;font-size:14.5px;line-height:1.8;color:var(--text-soft);max-width:48ch}
.bf-main .btn{margin-top:28px}

.bf-side{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);padding:24px 26px}
.bf-side h4{margin:0;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--olive-900)}
.bf-list{list-style:none;margin:14px 0 0;padding:0;flex:1;display:flex;flex-direction:column}
.bf-item{flex:1;display:flex;align-items:center;gap:13px;padding:11px 0;border-top:1px solid var(--line)}
.bf-item .ava{width:40px;height:40px;font-size:12.5px}
.bf-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.bf-txt strong{font-size:14px;font-weight:600;color:var(--olive-900)}
.bf-txt>span{font-size:12.5px;color:var(--text-soft)}
@media (max-width:900px){
  .bday-feature{grid-template-columns:1fr}
  .bf-main{padding:30px 26px}
  .bf-who{gap:14px}
  .bf-who .ava{width:54px;height:54px;font-size:17px}
  .bf-side{padding:20px 20px}
}

/* ---------- "Somos fabricantes" (bloque de contacto) ---------- */
/* Mismo tratamiento que «Estamos de fiesta»: icono + texto y un filete
   debajo, sin pill ni borde. */
.cb-fab{display:inline-flex;align-items:center;gap:10px;align-self:flex-start;color:#fff;font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.cb-fab svg{width:21px;height:21px;flex:none;color:#fff}
.cb-rule{display:block;width:64px;height:2px;border-radius:2px;background:var(--sand-300);margin:16px 0 6px}

/* ---------- Página de sucursales ---------- */
.suc-head{max-width:620px;margin-bottom:44px}
.suc-head .h-display{margin:10px 0 14px}
.suc-intro{margin:0;font-size:15.5px;line-height:1.75;color:var(--text-soft)}
.suc-list{display:flex;flex-direction:column;gap:34px}
.suc-card{display:grid;grid-template-columns:1.15fr 1fr;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--shadow-soft)}
.suc-card.flip .suc-media{order:2}
.suc-media{min-height:320px;background:var(--card);position:relative}
.suc-media img,.suc-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.suc-noimg{position:absolute;inset:0;display:grid;place-items:center;color:var(--line)}
.suc-noimg svg{width:80px;height:80px;opacity:.5}
.suc-info{padding:44px 46px;display:flex;flex-direction:column;gap:12px;justify-content:center}
.suc-info .h-section{margin:2px 0 6px}
.suc-line{display:flex;gap:11px;margin:0;font-size:14.5px;line-height:1.65;color:var(--text-soft)}
.suc-line svg{flex:none;margin-top:3px;color:var(--olive-700)}
.suc-ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px}
@media (max-width:860px){
  .suc-card{grid-template-columns:1fr}
  .suc-card.flip .suc-media{order:0}
  .suc-media{min-height:0;aspect-ratio:16/9;position:relative}
  .suc-info{padding:28px 26px 30px}
}

/* ---------- Consejos en la pantalla de gracias ---------- */
.ok-tips{max-width:1080px;margin:70px auto 0;text-align:left}
.ok-tips .tips-grid{margin-top:26px}

/* ---------- Página de contacto ---------- */
.ct-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.ct-card{display:flex;flex-direction:column;gap:10px;padding:26px 24px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-soft);text-decoration:none;color:var(--text);transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease}
.ct-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);border-color:var(--olive-700)}
.ct-card h3{margin:2px 0 0;font-size:12px;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:var(--text-soft)}
.ct-card p{margin:0;font-size:15px;font-weight:600}
.ct-sucs{margin-top:52px}
@media (max-width:900px){.ct-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.ct-grid{grid-template-columns:1fr}}

/* Va al final a propósito: debe ganar a las reglas móviles anteriores del popup. */
/* Celular: cada foto al ancho completo, sin recortar, y cabecera sin apreturas */
@media (max-width:640px){
  .mm-head{justify-content:flex-start;padding:12px 64px 12px 16px}
  .mm-tab{padding:9px 14px;font-size:11.5px}
  .mm-body{padding:14px 14px 28px}
  .mm-grid,.mm-grid-video{grid-template-columns:1fr;gap:14px}
  .mm-tile{aspect-ratio:1}
  .mm-tile img{object-fit:contain;background:var(--paper);mix-blend-mode:multiply}
  .mm-tile-dims img{background:#fff;mix-blend-mode:normal}
  .mm-grid-video .mm-tile{aspect-ratio:16/10}
}

/* Acabado estándar del PDP: informativo, sin selector (el cliente no lo elige) */
.pdp-acab{margin:16px 0 4px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.pa-title{display:block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);margin-bottom:9px}
.pa-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pa-list li{display:flex;align-items:baseline;gap:10px;font-size:13.5px}
.pa-list li span{flex:none;min-width:78px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-soft)}
.pa-list li strong{font-weight:600}
.pa-note{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--text-soft)}

/* Cada acabado es un paquete completo: se elige por su foto, no por un punto
   de color, porque lo que cambia es cómo se ve el mueble entero. */
.swatch.sw-foto{width:54px;height:54px;padding:0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.swatch.sw-foto img{width:100%;height:100%;object-fit:cover;display:block}
.swatch.sw-foto.on{border-color:var(--olive-700);border-width:2px}

/* Lado del chaise: una pregunta aparte del acabado. El icono dibuja la L de
   la sala vista desde arriba, que se entiende más rápido que la palabra. */
.pdp-chaise{margin:16px 0 4px}
.ch-opts{display:flex;gap:10px;margin-top:9px}
.ch-opt{display:flex;align-items:center;gap:9px;padding:10px 16px;border:1px solid var(--line);
  border-radius:12px;background:var(--card);font:inherit;font-size:13.5px;cursor:pointer}
.ch-opt:hover{border-color:var(--text)}
.ch-opt.on{border-color:var(--text);border-width:2px;padding:9px 15px;font-weight:600}
.ch-ico{width:22px;height:16px;flex:none;position:relative;display:block}
.ch-ico::before,.ch-ico::after{content:'';position:absolute;background:currentColor;opacity:.72;border-radius:2px}
.ch-ico::before{left:0;right:0;bottom:0;height:6px}                 /* cuerpo del sofá */
.ch-izq::after{left:0;top:0;width:8px;bottom:0}                     /* chaise a la izquierda */
.ch-der::after{right:0;top:0;width:8px;bottom:0}                    /* chaise a la derecha */
