/* ==========================================================================
   PicaPau — hoja de estilos principal (sitio público)
   Paleta muestreada de la referencia visual del PDF.
   Títulos en Chikki Devanagari Black (Adobe Fonts), texto en Libre Franklin (autoalojada).
   ========================================================================== */

/* ---- Tipografías ----
   Títulos: Chikki Devanagari Black (900) desde Adobe Fonts (kit en .env -> ADOBE_FONTS_CSS_URL).
   Texto:   Libre Franklin, autoalojada (OFL, es la fuente real del diseño; NO está en el kit de Adobe). */
@font-face{font-family:'Libre Franklin';src:url('../fonts/libre-franklin/libre-franklin-latin-100-normal.woff2') format('woff2');font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('../fonts/libre-franklin/libre-franklin-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('../fonts/libre-franklin/libre-franklin-latin-400-italic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('../fonts/libre-franklin/libre-franklin-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('../fonts/libre-franklin/libre-franklin-latin-700-normal.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

:root{
  /* Paleta de marca (muestreada del PDF) */
  --peach:#f9e2d2;
  --peach-deep:#f6d7c4;
  --navy:#001820;
  --navy-80:rgba(0,24,32,.80);
  --kraft:#eecdae;
  --kraft-deep:#e7bfa0;
  --terra:#d87e36;
  --terra-deep:#cc661e;
  --olive:#7c7f49;
  --bone:#fbf7f2;
  --white:#ffffff;
  --ink:#2b211b;
  --muted:#6f6257;
  --line:rgba(0,24,32,.12);

  /* Tipografía — familias centralizadas. Chikki Devanagari (Adobe) para títulos, Libre Franklin para texto. */
  --font-display:'chikki-devanagari','Libre Franklin',system-ui,sans-serif;
  --font-body:'Libre Franklin',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --weight-display:900; /* Chikki Devanagari Black */

  --maxw:1280px;
  --gutter:clamp(16px,5vw,64px);

  /* V3.4 — Geometría artesanal: radios contenidos, controles casi rectos. */
  --radius-control:3px;   /* botones, campos, cantidades, chips, íconos de acción */
  --radius:8px;           /* cajas y avisos */
  --radius-lg:12px;       /* fotos y bloques grandes */
  --shadow:0 14px 34px -24px rgba(0,24,32,.28);

  /* Movimiento: duraciones y curva consistentes, sin rebotes. */
  --ease-out:cubic-bezier(.22,.61,.36,1);
  --dur-fast:180ms;
  --dur-base:240ms;
  --dur-reveal:520ms;
  --control-h:48px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bone)}
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--bone);
  font-size:17px;
  line-height:1.6;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
h1,h2,h3{font-family:var(--font-display);color:var(--navy);line-height:1.05;font-weight:var(--weight-display);margin:0}
p{margin:0 0 1em}

.container{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(48px,7vw,104px)}
.section--bone{background:var(--bone)}
.section--peach{background:var(--bone)}
.eyebrow{font-family:var(--font-body);font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;color:var(--terra-deep)}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:absolute;left:-999px;top:0;background:var(--navy);color:var(--peach);padding:10px 16px;z-index:1000;border-radius:0 0 10px 0}
.skip-link:focus{left:0}

/* ---------- Botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;border:0;cursor:pointer;
  min-height:var(--control-h);font-family:var(--font-body);font-weight:700;font-size:1rem;line-height:1;
  letter-spacing:.01em;padding:.95em 1.6em;border-radius:var(--radius-control);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.btn--dark{background:var(--navy);color:var(--peach)}
.btn--dark:hover{background:#0b3540}
.btn--light{background:var(--white);color:var(--navy);box-shadow:inset 0 0 0 1.5px var(--navy)}
.btn--light:hover{background:var(--navy);color:var(--peach)}
.btn--terra{background:var(--terra-deep);color:#fff}
.btn--terra:hover{background:#b5540f}
.btn--wa{background:#1f8f4e;color:#fff}
.btn--wa:hover{background:#18763e}
.btn--block{width:100%}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.btn svg{width:1.1em;height:1.1em;flex:none}
/* La flecha final se desliza apenas al pasar el mouse; no cambia el ancho del botón. */
.btn svg:last-child:not(:first-child){transition:transform var(--dur-base) var(--ease-out)}
@media (hover:hover){.btn:hover svg:last-child:not(:first-child){transform:translateX(3px)}}
.btn:active{filter:brightness(.94)}
.btn.is-done{background:var(--olive);color:#fff}

:focus-visible{outline:2px solid var(--navy);outline-offset:3px;border-radius:2px}
/* Sobre fondos oscuros el foco va en claro, para que siempre se vea. */
.farewell :focus-visible,.review :focus-visible,.skip-link:focus-visible{outline-color:var(--white)}

/* ====================== HEADER ====================== */
.site-header{position:sticky;top:0;z-index:100;background:var(--peach);
  border-bottom:1px solid rgba(0,24,32,.06)}
.site-header__inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:16px;min-height:76px;padding-block:10px}
.brand{display:inline-flex;align-items:center;justify-self:start}
/* El logo respeta la transparencia del PNG (sin fondo ni recuadro). width:auto mantiene la proporción. */
.brand img{height:48px;width:auto;display:block}
.main-nav{justify-self:center}
.main-nav ul{display:flex;gap:clamp(18px,3vw,40px);list-style:none;margin:0;padding:0}
.main-nav a{font-weight:500;font-size:1.05rem;color:var(--navy);padding:6px 2px;position:relative}
.main-nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;
  background:var(--terra-deep);transform:scaleX(0);transform-origin:left;transition:transform .2s}
.main-nav a:hover::after,.main-nav a[aria-current="page"]::after{transform:scaleX(1)}
.header-actions{justify-self:end;display:flex;align-items:center;gap:6px}
/* Las tres redes forman un grupo con separación regular y discreta. */
.header-social{display:flex;align-items:center;gap:2px}
/* El carrito queda un poco más separado del grupo de redes. */
.icon-btn--cart{margin-left:0}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
  border-radius:var(--radius-control);color:var(--navy);position:relative;transition:background-color var(--dur-fast) var(--ease-out)}
.icon-btn:hover{background:rgba(0,24,32,.07)}
.icon-btn svg{width:22px;height:22px}
.header-social .icon-btn,
.header-actions .icon-btn--cart{width:30px}
.cart-count{position:absolute;top:2px;right:0;min-width:19px;height:19px;padding:0 5px;
  background:var(--terra-deep);color:#fff;border-radius:999px;font-size:.68rem;font-weight:700;
  display:flex;align-items:center;justify-content:center;font-family:var(--font-body)}
.cart-count:empty,.cart-count[hidden]{display:none}
.cart-count.is-bump{animation:count-bump 360ms var(--ease-out)}
@keyframes count-bump{0%{transform:scale(1)}40%{transform:scale(1.28)}100%{transform:scale(1)}}
.nav-toggle{display:none;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;
  color:var(--navy);width:44px;height:44px;border-radius:var(--radius-control)}
.nav-toggle svg{width:28px;height:28px}
/* Redes dentro del menú (solo mobile; en desktop están en el header). */
.main-nav__social{display:none}

/* ====================== HERO (imagen de fondo a todo el ancho) ====================== */
/* La imagen ocupa de borde a borde. Su onda inferior transparente deja ver el blanco de la sección siguiente. */
/* Altura acotada: recorta el espacio vacío de arriba y conserva la onda de abajo (anclaje inferior). */
.hero{position:relative;background:var(--bone);overflow:hidden;height:clamp(500px,44vw,820px);isolation:isolate}
.hero__media{display:block;width:100%;height:100%}
/* El blanco integrado en la imagen del Hero toma el blanco hueso del fondo.
   darken conserva intactos los colores más oscuros de las figuras y fotos. */
.hero__bg{display:block;width:100%;height:100%;object-fit:cover;object-position:center bottom;mix-blend-mode:darken}
.hero__inner{position:absolute;inset:0;max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter);
  display:flex;align-items:center;
  /* Reserva el alto de la onda inferior: el texto y el botón se centran en la zona libre, sin pisarla. */
  padding-bottom:clamp(48px,8vw,140px)}
.hero__copy{position:relative;z-index:2;max-width:min(48%,560px)}
.hero__title{font-size:clamp(2.8rem,5.5vw,5.6rem);letter-spacing:-.01em}
.hero__title span{display:block}
.hero__text{font-size:clamp(1.05rem,1.5vw,1.3rem);max-width:30ch;color:var(--ink);margin:1.1em 0 1.8em}
@keyframes rise-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero__title span,.hero__text,.hero__copy .btn{animation:rise-in 520ms var(--ease-out) both}
.hero__title span:nth-child(1){animation-delay:60ms}
.hero__title span:nth-child(2){animation-delay:140ms}
.hero__title span:nth-child(3){animation-delay:220ms}
.hero__text{animation-delay:320ms}
.hero__copy .btn{animation-delay:400ms}

/* ====================== INSIGNIAS ====================== */
/* V3.5 — se acerca la fila de valores a la onda del hero y a «Destacados» (menos aire vertical). */
.badges{background:var(--bone);padding-block:clamp(26px,3.4vw,46px) clamp(30px,4vw,56px)}
.badges__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,4vw,56px);
  text-align:center;align-items:start;max-width:1200px;margin:0 auto}
.badge{display:flex;justify-content:center}
/* Imagen y leyenda comparten un mismo lienzo proporcional (240 × 196): escalan juntas y la curva
   queda siempre concéntrica a la imagen, en cualquier ancho. */
/* V3.5 — conjunto ~32 % más grande (250 → 330 px). La imagen y el texto curvo escalan juntos. */
.badge__art{position:relative;width:100%;max-width:330px;aspect-ratio:240/196}
.badge__curve{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.badge__img{position:absolute;left:21.667%;top:3.061%;width:56.667%;height:69.388%;object-fit:contain}
/* Leyenda: tipografía limpia, tracking amplio, azul petróleo. */
.badge__curve text{font-family:var(--font-body);font-weight:500;font-size:12px;letter-spacing:.32em;fill:var(--navy)}
.badge--long .badge__curve text{letter-spacing:.16em}
/* V3.5 — en el Home, «Destacados» (fondo bone) arranca más cerca de la fila de valores. */
.badges + .section--bone{padding-top:clamp(30px,4vw,52px)}

/* ====================== PRODUCT CARDS ====================== */
.section-head{display:flex;flex-direction:column;gap:8px;margin-bottom:clamp(28px,4vw,48px)}
.section-head h2{font-size:clamp(2.1rem,4.4vw,3.4rem)}
.product-grid{display:grid;gap:clamp(22px,3vw,40px)}
.product-grid--3{grid-template-columns:repeat(3,1fr)}
.product-grid--shop,.product-grid--4{grid-template-columns:repeat(4,1fr)}
.product-card{display:flex;flex-direction:column;gap:14px;text-align:left}
.product-card__media{aspect-ratio:3/4;border-radius:var(--radius-lg);overflow:hidden;background:var(--bone)}
.product-card__media img{width:100%;height:100%;object-fit:cover;object-position:center;
  transition:transform 320ms var(--ease-out)}
.product-card__name{font-family:var(--font-body);font-weight:700;font-size:1.08rem;color:var(--navy);line-height:1.25;
  transition:color var(--dur-fast) var(--ease-out)}
/* V3.5 — subtítulo opcional: más chico y suave que el nombre, pero legible. Sin reservar espacio si no está. */
.product-card__subtitle{font-family:var(--font-body);font-weight:400;font-size:.92rem;color:var(--muted);line-height:1.3;margin:1px 0 2px}
@media (hover:hover){
  .product-card:hover .product-card__media img{transform:scale(1.035)}
  .product-card:hover .product-card__name{color:var(--terra-deep)}
}
.product-card:focus-visible{outline-offset:6px}
.product-card__price{font-weight:500;color:var(--ink);font-size:1.05rem}
.product-card__more{font-weight:700;color:var(--terra-deep);font-size:.95rem}
.featured-cta{display:flex;justify-content:center;margin-top:clamp(32px,4vw,52px)}

/* ====================== BANNER OFERTAS ====================== */
.promo{padding-block:clamp(10px,2vw,28px);background:var(--bone)}
.promo a,.promo .promo__img{display:block}
.promo__img{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}
.promo__img img{width:100%;height:auto}

/* ====================== TALLER / VIDEO ====================== */
.workshop{background:var(--bone)}
.workshop__inner{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,5vw,64px);align-items:center}
.workshop__video{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow);background:var(--navy);
  aspect-ratio:16/10;position:relative}
.workshop__video iframe,.workshop__video video{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover}
.workshop__ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  width:100%;height:100%;color:var(--peach);text-align:center;padding:24px}
.workshop__ph svg{width:62px;height:62px;opacity:.85}
.workshop__title{font-size:clamp(2.6rem,6vw,4.6rem);margin-bottom:.2em}
.workshop__text{max-width:42ch;margin-bottom:1.6em}

/* ====================== RESEÑAS ====================== */
.reviews{background:var(--bone)}
.reviews__demo-flag{display:inline-block;background:var(--terra-deep);color:#fff;font-weight:700;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;padding:5px 12px;border-radius:var(--radius-control);margin-bottom:20px}
.reviews__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,2.5vw,32px)}
.review{margin:0;background:var(--navy);color:var(--peach);border-radius:var(--radius-lg);padding:clamp(24px,3vw,38px);position:relative;
  display:flex;flex-direction:column}
.review__quote{font-size:2.6rem;line-height:1;color:var(--terra);font-family:var(--font-display);margin-bottom:8px}
.review p{font-style:italic;margin:0;color:#f4e7db;font-size:1.05rem}
.review__author{margin-top:auto;padding-top:16px;font-style:normal;font-weight:700;font-size:.9rem;color:var(--kraft)}

/* V3.4.3 · Carrusel en todos los anchos (lo activa app.js; sin JS queda la grilla de arriba).
   Tarjetas visibles: 3 desde 1024 px, 2 de 821 a 1023, 1 hasta 820. Las que no se ven no ocupan lugar
   ni reciben foco. Todas las tarjetas tienen el alto de la más larga a ese ancho (--review-h, lo mide app.js),
   así el bloque no salta al rotar. */
.reviews__carousel{position:relative}
.reviews__carousel.is-carousel .reviews__grid{touch-action:pan-y;
  transition:opacity 180ms var(--ease-out),transform 180ms var(--ease-out)}
.reviews__carousel.is-carousel[data-per-view="1"] .reviews__grid{grid-template-columns:1fr}
.reviews__carousel.is-carousel[data-per-view="2"] .reviews__grid{grid-template-columns:repeat(2,1fr)}
.reviews__carousel.is-carousel[data-per-view="3"] .reviews__grid{grid-template-columns:repeat(3,1fr)}
.reviews__carousel.is-carousel .review{min-height:var(--review-h,0)}
.reviews__carousel.is-carousel .review.is-off{display:none}
.reviews__carousel.is-carousel .reviews__grid.is-fading{opacity:0}
/* Medición: por un instante (sin pintar) se muestran todas en la grilla para leer la más alta. */
.reviews__carousel.is-measuring .review.is-off{display:flex}
.reviews__carousel.is-measuring .review{min-height:0}
.reviews__carousel.is-measuring .reviews__grid{align-items:start}

/* Flechas finas: área táctil de 44 × 44 px, dibujo de 18 px.
   Con una tarjeta (celular) van sobre sus costados; con 2 o 3, afuera de las tarjetas, en el margen. */
.carousel-arrow{position:absolute;top:calc(50% - 10px);transform:translateY(-50%);z-index:2;
  display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;
  background:transparent;color:var(--kraft);opacity:.72;cursor:pointer;border-radius:var(--radius-control);
  transition:opacity var(--dur-fast) var(--ease-out)}
.carousel-arrow[hidden]{display:none}
.carousel-arrow--prev{left:0}
.carousel-arrow--next{right:0}
.carousel-arrow svg{width:18px;height:18px}
.carousel-arrow:focus-visible{opacity:1;outline-color:var(--white);outline-offset:-4px}
@media (hover:hover){.carousel-arrow:hover{opacity:1}}
.reviews__carousel.is-carousel[data-per-view="1"] .review{padding-inline:44px}
.reviews__carousel.is-carousel:not([data-per-view="1"]){padding-inline:48px}
.reviews__carousel.is-carousel:not([data-per-view="1"]) .carousel-arrow{color:var(--navy);opacity:.6}
.reviews__carousel.is-carousel:not([data-per-view="1"]) .carousel-arrow:focus-visible{outline-color:var(--navy);outline-offset:0}
/* Indicadores discretos (decorativos): la posición se ve, no se anuncia. */
.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:14px}
.carousel-dots[hidden]{display:none}
.carousel-dot{width:6px;height:6px;border-radius:50%;background:rgba(0,24,32,.25);transition:background-color var(--dur-fast) var(--ease-out)}
.carousel-dot.is-active{background:var(--navy)}
/* «Detener el pase automático»: oculto a la vista hasta que recibe foco con el teclado (WCAG 2.2.2). */
.carousel-stop{position:absolute;left:0;top:-48px;z-index:3;padding:0;border:0;
  border-radius:var(--radius-control);background:var(--navy);color:var(--white);font:inherit;font-size:.85rem;font-weight:700;cursor:pointer;
  clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}
.carousel-stop:focus,.carousel-stop:focus-visible{clip-path:none;width:auto;height:auto;min-height:40px;padding:.5em 1em;overflow:visible}
.carousel-stop[hidden]{display:none}
.carousel-stop[aria-disabled=true]{opacity:.85;cursor:default}

/* ====================== DESPEDIDA ====================== */
.farewell{position:relative}
.farewell__media{position:absolute;inset:0;z-index:0;display:block}
.farewell__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.farewell__inner{position:relative;z-index:2;min-height:min(60vh,520px);display:flex;flex-direction:column;
  justify-content:center;align-items:flex-start;gap:18px;padding-block:clamp(60px,9vw,120px)}
.farewell::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(0,24,32,.58),rgba(0,24,32,.15) 60%,transparent)}
.farewell__title{color:var(--white);font-size:clamp(2rem,4vw,3.2rem);max-width:16ch}
.farewell__text{color:#fbeee3;max-width:40ch;font-size:1.1rem}

/* ====================== FOOTER ====================== */
.site-footer{background:var(--peach);color:var(--navy);padding-block:clamp(44px,6vw,72px) 28px}
.site-footer__grid{display:grid;grid-template-columns:minmax(170px,1fr) 1fr 1.6fr;gap:clamp(28px,5vw,64px);align-items:start}
/* Logo completo del footer: imagen cuadrada grande, transparente, sin fondo ni recorte. */
.footer-brand{display:flex;justify-content:flex-start}
.footer-brand__img{display:block;width:clamp(150px,16vw,210px);height:auto;aspect-ratio:1/1;object-fit:contain}
.site-footer h3{font-family:var(--font-body);font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  font-size:.82rem;color:var(--navy);margin-bottom:16px}
.site-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.site-footer a:hover{color:var(--terra-deep)}
.newsletter__form{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.newsletter__form input[type=email]{flex:1;min-width:200px;min-height:var(--control-h);border:1px solid rgba(0,24,32,.3);
  background:#fff;border-radius:var(--radius-control);padding:.8em 1em;font-size:1rem;font-family:inherit;
  transition:border-color var(--dur-fast) var(--ease-out)}
.newsletter__form input[type=email]:focus{border-color:var(--navy)}
/* Redes del footer, debajo del newsletter (solo las configuradas) */
.site-footer .footer-social{display:flex;flex-direction:row;gap:10px;margin:24px 0 0;list-style:none;padding:0}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
  border-radius:var(--radius-control);box-shadow:inset 0 0 0 1px rgba(0,24,32,.3);color:var(--navy);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.footer-social a:hover{background:var(--navy);color:var(--kraft);box-shadow:inset 0 0 0 1px var(--navy)}
.footer-social svg{width:20px;height:20px}
.newsletter__consent{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:.82rem;color:var(--ink)}
.newsletter__consent input{margin-top:3px}
.footer-bottom{margin-top:40px;padding-top:22px;border-top:1px solid rgba(0,24,32,.15);
  display:flex;justify-content:center;text-align:center;font-size:.85rem;color:var(--ink)}

/* ====================== WHATSAPP FLOTANTE ====================== */
.wa-float{position:fixed;right:18px;bottom:18px;z-index:200;width:56px;height:56px;border-radius:var(--radius-control);
  background:#1f8f4e;color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 26px -10px rgba(0,0,0,.45);transition:background-color var(--dur-fast) var(--ease-out)}
.wa-float:hover{background:#18763e}
.wa-float svg{width:32px;height:32px}

/* ====================== FLASH ====================== */
.flash{max-width:var(--maxw);margin:16px auto;padding-inline:var(--gutter)}
.flash__item{border-radius:var(--radius);padding:14px 18px;margin-bottom:10px;font-weight:500}
.flash__item--success{background:#e6f4ea;color:#1b5e30;border:1px solid #bfe3c9}
.flash__item--error{background:#fbe9e7;color:#9d2b20;border:1px solid #f2c4bd}

/* ====================== DEMO ribbon ====================== */
.demo-ribbon{background:var(--terra-deep);color:#fff;text-align:center;font-weight:700;
  font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;padding:8px}

/* ====================== PÁGINAS INTERNAS ====================== */
/* V3.5 — menos aire debajo del título/intro y menos salto hasta el primer contenido (Tienda, Bitácora, Universo). */
.page-head{background:var(--peach);padding-block:clamp(24px,3.5vw,48px)}
.page-head h1{font-size:clamp(2.6rem,6vw,4.6rem)}
.page-head p{max-width:50ch;margin-top:12px;color:var(--ink)}
.page-head + .section{padding-top:clamp(26px,3.6vw,46px)}

/* Filtro de edad */
.shop-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:28px}
.shop-filters__label{font-weight:700;color:var(--navy);margin-right:6px}
.chip{border:1px solid var(--navy);background:transparent;color:var(--navy);border-radius:var(--radius-control);
  padding:.5em 1.1em;font-size:.92rem;font-weight:500;cursor:pointer}
.chip[aria-pressed="true"],.chip:hover{background:var(--navy);color:var(--peach)}
.shop-empty{text-align:center;padding:60px 0;color:var(--muted)}

/* ====================== FICHA DE PRODUCTO ====================== */
.product{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,5vw,68px);align-items:start}
.gallery__main{aspect-ratio:1/1;border-radius:var(--radius-lg);overflow:hidden;background:var(--bone);cursor:zoom-in}
.gallery__main img{width:100%;height:100%;object-fit:cover}
.gallery__thumbs{display:flex;gap:12px;margin-top:14px;flex-wrap:wrap}
.gallery__thumbs button{width:76px;height:76px;border-radius:var(--radius);overflow:hidden;border:2px solid transparent;
  background:var(--bone);cursor:pointer;padding:0;transition:border-color var(--dur-fast) var(--ease-out)}
.gallery__thumbs button:hover{border-color:rgba(0,24,32,.35)}
.gallery__thumbs button[aria-current="true"]{border-color:var(--navy)}
.gallery__thumbs img{width:100%;height:100%;object-fit:cover}
.product__title{font-size:clamp(2rem,4vw,3rem);margin-bottom:8px}
/* V3.5 — subtítulo de la ficha: tipografía de cuerpo, subordinado al título pero prominente y legible. */
.product__subtitle{font-family:var(--font-body);font-weight:500;font-size:clamp(1.15rem,2.2vw,1.5rem);
  color:var(--muted);line-height:1.25;margin:-2px 0 14px}
.product__price{font-size:1.8rem;font-weight:700;color:var(--navy);font-family:var(--font-body);margin-bottom:18px}
.product__desc{color:var(--ink)}
.product__desc p{margin-bottom:1em}
.spec{border-top:1px solid var(--line);padding:16px 0;display:grid;grid-template-columns:150px 1fr;gap:12px}
.spec dt{font-weight:700;color:var(--navy)}
.spec dd{margin:0;color:var(--ink)}
.buybox{background:var(--bone);border-radius:var(--radius-lg);padding:clamp(20px,3vw,30px);margin-top:26px}
.qty{display:inline-flex;align-items:center;border:1px solid var(--navy);border-radius:var(--radius-control);overflow:hidden}
.qty button{width:46px;height:46px;background:transparent;border:0;font-size:1.4rem;cursor:pointer;color:var(--navy);
  transition:background-color var(--dur-fast) var(--ease-out)}
.qty button:hover{background:rgba(0,24,32,.07)}
.qty input{width:56px;text-align:center;border:0;font-size:1.1rem;font-weight:700;background:transparent;-moz-appearance:textfield}
.qty input::-webkit-outer-spin-button,.qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.buybox__row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.min-note{font-size:.9rem;color:var(--terra-deep);font-weight:700}
.artisan-note{font-size:.92rem;color:var(--muted);margin-top:14px;line-height:1.5}
.ship-note{font-size:.92rem;margin-top:10px}
.ship-note a{color:var(--terra-deep);text-decoration:underline}
.custom-note{background:var(--peach);border-radius:var(--radius);padding:12px 16px;font-size:.92rem;margin-top:14px}
.related{margin-top:clamp(50px,7vw,90px)}

/* ====================== CARRITO ====================== */
.cart{display:grid;grid-template-columns:1.5fr .9fr;gap:clamp(28px,4vw,56px);align-items:start}
.cart-line{display:grid;grid-template-columns:90px 1fr auto;gap:16px;align-items:center;
  grid-template-areas:"media name controls";
  padding:18px 0;border-bottom:1px solid var(--line)}
.cart-line>div:nth-child(2){grid-area:name}
.cart-line>div:nth-child(3){grid-area:controls}
.cart-line__media{width:90px;height:90px;border-radius:var(--radius);overflow:hidden;background:var(--bone)}
.cart-line__media img{width:100%;height:100%;object-fit:cover}
.cart-line__name{font-weight:700;color:var(--navy)}
.cart-line__subtitle{font-size:.86rem;color:var(--muted);margin-top:1px}
.cart-line__unit{font-size:.9rem;color:var(--muted)}
.cart-line__remove{background:none;border:0;color:var(--muted);cursor:pointer;text-decoration:underline;font-size:.85rem;
  min-height:44px;padding:0 4px}
.cart-line__remove:hover{color:var(--navy)}
.cart-summary{background:var(--bone);border-radius:var(--radius-lg);padding:clamp(22px,3vw,32px);position:sticky;top:96px}
.cart-summary__row{display:flex;justify-content:space-between;font-size:1.15rem;margin-bottom:16px}
.cart-summary__row strong{font-size:1.5rem;color:var(--navy)}
.cart-obs{width:100%;border:1px solid rgba(0,24,32,.3);border-radius:var(--radius-control);padding:12px;font-family:inherit;
  font-size:.95rem;min-height:84px;resize:vertical;margin:8px 0 16px}
.cart-note{font-size:.86rem;color:var(--muted);margin-top:14px;line-height:1.5}
.cart-empty{text-align:center;padding:70px 0}
.cart-empty h2{margin-bottom:18px}
.cart-line__media{grid-area:media}
.btn.is-disabled{opacity:.45;pointer-events:none;cursor:not-allowed}

/* ====================== ACORDEONES (Información) ====================== */
.accordion{max-width:860px;margin:0 auto}
.accordion__item{border-bottom:1px solid var(--line)}
.accordion__trigger{width:100%;text-align:left;background:none;border:0;cursor:pointer;
  padding:26px 44px 26px 0;position:relative;font-family:var(--font-display);font-size:clamp(1.3rem,2.4vw,1.8rem);
  color:var(--navy)}
.accordion__trigger::after{content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);
  font-size:1.8rem;color:var(--terra-deep);transition:transform .2s}
.accordion__trigger[aria-expanded="true"]::after{content:"–"}
.accordion__panel{overflow:hidden;max-height:0;transition:max-height .3s ease}
.accordion__panel-inner{padding:0 0 26px}
.accordion__panel h3{font-family:var(--font-body);font-size:1.05rem;color:var(--navy);margin:18px 0 6px}

/* ====================== BITÁCORA ====================== */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,44px)}
.post-card__media{aspect-ratio:3/2;border-radius:var(--radius-lg);overflow:hidden;background:var(--bone);margin-bottom:16px}
.post-card__media img{width:100%;height:100%;object-fit:cover}
.post-card__date{font-size:.82rem;color:var(--terra-deep);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.post-card__title{font-size:1.4rem;margin:6px 0 10px}
.post-card__excerpt{color:var(--muted);font-size:.98rem}
.article{max-width:760px;margin:0 auto}
.article__cover{border-radius:var(--radius-lg);overflow:hidden;margin:24px 0 32px;aspect-ratio:3/2;background:var(--bone)}
.article__cover img{width:100%;height:100%;object-fit:cover}
.article__body{font-size:1.12rem;line-height:1.8}
.article__body h2{font-family:var(--font-display);font-size:1.7rem;margin:1.4em 0 .4em}
.article__body p{margin-bottom:1.2em}
.article__body img{border-radius:var(--radius);margin:1.4em 0}
.article__back{display:inline-block;margin-top:40px;font-weight:700;color:var(--terra-deep)}

/* ====================== UNIVERSO ====================== */
/* V3.4.2 · aire lateral propio de Universo: 20 px en teléfonos angostos, ~24 px a 390–430, hasta 32 px.
   El ancho máximo suma ese aire, así la línea de lectura sigue siendo de 760 px en escritorio. */
.universe-block{--universe-pad:clamp(20px,6vw,32px);max-width:calc(760px + 2 * var(--universe-pad));margin:0 auto;padding-inline:var(--universe-pad)}
.page-head--universe .container{padding-inline:max(var(--gutter),clamp(20px,6vw,32px))}
/* Fotos 3:4 de Universo: dentro de la columna, centradas, sin recorte (alto automático, nunca cover). */
.universe-figure{max-width:440px;margin:.6em auto 1.8em;border-radius:var(--radius-lg);overflow:hidden;background:var(--bone)}
.universe-figure picture,.universe-figure img{display:block;width:100%;height:auto}
/* Los cinco mundos: texto editorial (no chips ni botones). */
.universe-worlds{list-style:none;margin:0 0 1.2em;padding:0;display:grid;gap:.7em}
.universe-worlds li{padding-left:14px;border-left:2px solid var(--kraft);line-height:1.55}
.universe-worlds strong{color:var(--navy)}
.universe-block h2{font-size:clamp(1.8rem,3.4vw,2.8rem);margin:1.2em 0 .5em}
.universe-block h2:first-of-type{margin-top:0}
.page-head--universe + .section{padding-top:clamp(20px,2.5vw,36px)}
.universe-lead{font-size:1.2rem}
.universe-cta{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:30px}

/* ===== V3.5.2 · Universo: lectura continua con fotos flotadas ===== */
/* Es el mismo blanco hueso que el resto del sitio; las fotos no alteran su encuadre. */
.universe-section{padding-block:clamp(30px,4.6vw,60px);background:var(--bone)}
.universe-block--flow{max-width:calc(760px + 2 * var(--universe-pad))}
/* display:flow-root contiene el flotante sin forzar dos columnas separadas. */
.universe-flow{display:flow-root}
.universe-flow .universe-figure--flow{
  display:block;width:100%;max-width:440px;margin:0 auto 22px;
  border-radius:var(--radius-lg);overflow:hidden
}
.universe-flow .universe-figure--flow picture,
.universe-flow .universe-figure--flow img{display:block;width:100%;height:auto}
.universe-flow > p:first-of-type{margin-top:0}
.universe-flow--right .universe-cta{clear:both}
@media (min-width:860px){
  .universe-block--flow{max-width:calc(1000px + 2 * var(--universe-pad))}
  .universe-flow .universe-figure--flow{width:36%;max-width:360px;margin-top:2px;margin-bottom:20px}
  .universe-flow--left .universe-figure--flow{float:left;margin-right:clamp(24px,3vw,40px);margin-left:0}
  .universe-flow--right .universe-figure--flow{float:right;margin-left:clamp(24px,3vw,40px);margin-right:0}
}
/* Movimiento suave: la primera foto entra desde la izquierda, la segunda desde la derecha.
   Se usa el observador .reveal ya existente en app.js; no se modifica el JS. */
@media (prefers-reduced-motion:no-preference){
  .js-reveal .universe-figure--from-left.reveal{
    opacity:0;transform:translateX(-18px);
    transition:opacity 700ms var(--ease-out),transform 1000ms var(--ease-out)
  }
  .js-reveal .universe-figure--from-right.reveal{
    opacity:0;transform:translateX(18px);
    transition:opacity 700ms var(--ease-out),transform 1000ms var(--ease-out)
  }
  .js-reveal .universe-figure--from-left.reveal.is-in,
  .js-reveal .universe-figure--from-right.reveal.is-in{opacity:1;transform:none}
}

/* ====================== LIGHTBOX ====================== */
.lightbox{position:fixed;inset:0;background:rgba(0,24,32,.92);z-index:300;display:none;
  align-items:center;justify-content:center;padding:24px}
.lightbox.open{display:flex}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:var(--radius-control)}
.lightbox__close{position:absolute;top:18px;right:22px;background:none;border:0;color:#fff;font-size:2.4rem;cursor:pointer}

/* ====================== 404 ====================== */
.notfound{text-align:center;padding:clamp(60px,12vw,140px) var(--gutter)}
.notfound h1{font-size:clamp(4rem,14vw,9rem);color:var(--terra-deep)}

/* ====================== RESPONSIVE ====================== */
@media (max-width:1024px){
  .product-grid--shop{grid-template-columns:repeat(3,1fr)}
  .site-footer__grid{grid-template-columns:1fr 1fr}
  .footer-news{grid-column:1/-1}
  .workshop__inner{grid-template-columns:1fr;gap:28px}
  .product{grid-template-columns:1fr;gap:32px}
  .cart{grid-template-columns:1fr}
  .cart-summary{position:static}
}
@media (max-width:820px){
  /* V3.4.2 · Hero en celular y tableta: UNA sola composición. La imagen va de fondo y el título, el texto
     y el botón (HTML) quedan encima, en la zona libre de arriba.
     Sin imagen para celular: la de escritorio se ancla abajo a la derecha (donde están los juguetes) y su
     borde superior se funde con el durazno del fondo, así no se nota un corte. El alto lo da el contenido. */
  /* Fondo durazno arriba y blanco abajo: si la imagen trae la onda inferior transparente, se ve el blanco
     de la sección siguiente, como en escritorio. El corte queda tapado por la parte opaca de la imagen. */
  .hero{display:block;height:auto;
    background:linear-gradient(var(--peach),var(--peach)) top/100% calc(100% - var(--hero-art-h) * .5) no-repeat,var(--bone)}
  .hero__media{position:absolute;left:0;right:0;bottom:0;height:var(--hero-art-h);z-index:0;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 34%);mask-image:linear-gradient(to bottom,transparent 0,#000 34%)}
  .hero__bg{object-position:72% 100%}
  .hero__inner{position:relative;inset:auto;display:block;z-index:1;
    padding:clamp(28px,7vw,44px) var(--gutter) calc(var(--hero-art-h) * .62)}
  .hero__copy{max-width:100%}
  .hero{--hero-art-h:clamp(250px,72vw,520px)}
  .product-grid--3{grid-template-columns:repeat(2,1fr)}
  .reviews__grid{grid-template-columns:1fr}
  .blog-grid{grid-template-columns:1fr 1fr}
  .main-nav,.header-actions .desktop-only{display:none}
  .nav-toggle{display:inline-flex}
  .site-header__inner{grid-template-columns:auto 1fr auto}
  .main-nav{position:fixed;inset:76px 0 auto 0;background:var(--peach);padding:20px var(--gutter) 30px;
    border-bottom:1px solid var(--line);display:none;justify-self:stretch}
  .main-nav.open{display:block}
  .main-nav ul{flex-direction:column;gap:4px}
  .main-nav a{display:block;padding:14px 0;font-size:1.2rem;border-bottom:1px solid var(--line)}
  .main-nav a::after{display:none}
  .main-nav__social{display:flex;gap:12px;padding-top:20px}
  .main-nav__social a{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;
    border-radius:var(--radius-control);background:rgba(0,24,32,.06);color:var(--navy);padding:0;border:0}
  .main-nav__social a:hover{background:rgba(0,24,32,.12)}
  .main-nav__social svg{width:22px;height:22px}
}
@media (max-width:560px){
  body{font-size:16px}
  .product-grid--shop,.product-grid--3{grid-template-columns:repeat(2,1fr);gap:16px}
  .blog-grid{grid-template-columns:1fr}
  .spec{grid-template-columns:1fr;gap:2px}
  .cart-line{grid-template-columns:64px 1fr;grid-template-areas:"media name" "media controls"}
  .cart-line__media{width:64px;height:64px;align-self:start}
  .hero__title{font-size:clamp(3rem,15vw,4.4rem)}
}
/* Con imagen propia para celular (vertical, arriba libre; se usa hasta 600 px): cubre todo el Hero, sin fundido. */
@media (max-width:600px){
  .hero--has-mobile{min-height:133vw;background:var(--bone)}
  .hero--has-mobile .hero__media{top:0;height:auto;-webkit-mask-image:none;mask-image:none}
  .hero--has-mobile .hero__bg{object-position:50% 100%}
  .hero--has-mobile .hero__inner{padding-bottom:clamp(190px,52vw,300px)}
}
/* ====================== V3.4.1 · COMPOSICIÓN MOBILE ====================== */
/* Destacados y relacionados: 4 en fila en escritorio, 2 × 2 en tableta y celular. */
@media (max-width:820px){
  .product-grid--4{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .product-grid--4{gap:22px 14px}
  .product-grid--4 .product-card{gap:10px}
  .product-grid--4 .product-card__name{font-size:.98rem}
  .product-grid--4 .product-card__price{font-size:.98rem}

  .review{padding:22px 22px 24px}
  .review__quote{font-size:2.1rem;margin-bottom:4px}
  /* Pictogramas: los tres en UNA fila. No se achica el dibujo entero: la leyenda se agranda en
     unidades del dibujo (24 en vez de 12) y se cierra el tracking, y la imagen se reduce un poco
     para dejarle lugar. La curva (mismo arco, centro más bajo que las puntas) no cambia. */
  .badges.section{padding-block:22px 18px}
  .badges__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,2.4vw,12px);max-width:none}
  .badge__img{left:25.833%;top:8.163%;width:48.333%;height:59.184%}
  .badge__curve text{font-size:24px;letter-spacing:.06em;font-weight:600}
  .badge--long .badge__curve text{font-size:21px;letter-spacing:.02em}
  .badge--xlong .badge__curve text{font-size:20px;letter-spacing:0}

  /* Despedida: texto abajo, sobre un degradé vertical; la foto (vertical si se cargó la de celular) arriba. */
  .farewell__inner{min-height:clamp(440px,128vw,580px);justify-content:flex-end;gap:14px;padding-block:40px 36px}
  .farewell::after{background:linear-gradient(0deg,rgba(0,24,32,.78) 0%,rgba(0,24,32,.5) 38%,rgba(0,24,32,.08) 72%,transparent)}
  .farewell__title{font-size:clamp(1.9rem,8.6vw,2.4rem)}
  .farewell__text{font-size:1rem}

  /* Footer: logo | Información arriba, newsletter a lo ancho, redes centradas, copyright. */
  .site-footer{padding-bottom:88px} /* aire para que el WhatsApp flotante no tape el copyright */
  .site-footer__grid{grid-template-columns:minmax(80px,32%) 1fr;gap:26px 18px;align-items:start}
  .footer-brand{justify-content:flex-start;padding-top:2px}
  .footer-brand__img{width:clamp(80px,26vw,108px);height:auto;max-height:110px;aspect-ratio:auto;object-fit:contain}
  .footer-info{text-align:right}
  .footer-info h3{margin-bottom:10px}
  .footer-info ul{gap:6px;align-items:flex-end}
  .footer-info a{display:inline-block;padding-block:3px;font-size:.95rem;line-height:1.3}
  .footer-news{grid-column:1/-1;border-top:1px solid rgba(0,24,32,.15);padding-top:22px}
  .newsletter__form input[type=email]{min-width:0;flex-basis:100%}
  .site-footer .footer-social{justify-content:center;margin-top:24px}
  .footer-bottom{margin-top:26px}
}
/* ====================== APARICIÓN AL HACER SCROLL (mejora progresiva) ======================
   Sin JavaScript (o si falla) TODO queda visible: solo se oculta cuando app.js agrega .js-reveal a <html>. */
.js-reveal .reveal{opacity:0;transform:translateY(16px);
  transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out);
  transition-delay:var(--reveal-delay,0ms)}
.js-reveal .reveal.is-in{opacity:1;transform:none}
.reveal-group>.reveal:nth-child(4n+2){--reveal-delay:70ms}
.reveal-group>.reveal:nth-child(4n+3){--reveal-delay:140ms}
.reveal-group>.reveal:nth-child(4n+4){--reveal-delay:210ms}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-delay:0ms!important;
    transition-duration:.001ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}
  .js-reveal .reveal{opacity:1;transform:none}
}
