/* ============================================================
   GREENERY 420 · CHROME (header + footer) — implementación fiel de
   "Header y Footer.dc.html" (Claude Design). Global en todo el site.
   Depende de tokens.css (--gy-*) y primitives.css (.gy-btn…).
   ============================================================ */

/* ---------------- LAYOUT GLOBAL ----------------
   Neutraliza el layout de GeneratePress: el body lleva 'separate-containers
   right-sidebar' y el padre mete márgenes al main ('.site-main{margin:20px}',
   'margin:0 40px', 'margin-left:0') → gap flotante y asimetría izda/dcha.
   Todas las plantillas del hijo son custom y gestionan su ancho con .gy-wrap. */
main.site-main{margin:0 !important;max-width:none;width:auto;}
/* GP también mete margin-bottom:20px a los hijos directos del main. */
.separate-containers .site-main>*,.one-container .site-main>*{margin-bottom:0;}

/* ---------------- HEADER ---------------- */
.gy-hd{position:sticky;top:0;z-index:60;background:#fff;border-bottom:1px solid var(--gy-linea);transition:background-color .3s var(--gy-ease),box-shadow .3s var(--gy-ease);}
.gy-hd__in{max-width:var(--gy-wide,1320px);margin:0 auto;}

/* Topbar (verde oscuro de marca — según el render aprobado; el .dc.html la traía en morado
   pero eso rompe la regla "verde de base, morado solo acento"). */
.gy-topbar{background:var(--gy-verde-oscuro,#40685F);color:#fff;}
.gy-topbar__in{max-width:var(--gy-wide,1320px);margin:0 auto;padding:0 clamp(16px,3vw,32px);min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:12px;}
.gy-topbar__msg{font-family:var(--gy-font-ui);font-size:12.5px;font-weight:500;min-width:0;}
/* Desktop: una sola línea estática. La 2ª copia (track aria-hidden) se oculta;
   el marquee solo se activa en móvil (<=900px, más abajo). */
.gy-topbar__track{white-space:nowrap;}
.gy-topbar__track+.gy-topbar__track{display:none;}
.gy-topbar__right{display:flex;align-items:center;gap:18px;}
.gy-topbar__link{color:inherit;text-decoration:underline;text-decoration-color:rgba(255,255,255,.45);text-underline-offset:2px;}
.gy-topbar__link:hover{color:#fff;text-decoration-color:#fff;}
.gy-topbar__help{font-family:var(--gy-font-ui);font-size:12.5px;color:#fff;opacity:.9;cursor:pointer;display:flex;align-items:center;gap:6px;text-decoration:none;background:none;border:none;padding:0;}
/* Hover solo por subrayado (sin cambios de fondo/opacidad) */
.gy-topbar__help:hover{text-decoration:underline;text-underline-offset:2px;}

/* Popover de ayuda ("Laura te responde hoy") */
.gy-help{position:relative;display:flex;}
.gy-help-pop{position:absolute;top:100%;right:0;margin-top:9px;background:#fff;border:1px solid var(--gy-linea);border-radius:14px;box-shadow:var(--gy-shadow-lg);padding:14px;min-width:220px;z-index:70;display:none;}
.gy-help.is-open .gy-help-pop{display:block;}
.gy-help-pop__row{display:flex;align-items:center;gap:9px;font-family:var(--gy-font-ui);font-size:13.5px;font-weight:600;color:var(--gy-tinta);margin-bottom:6px;white-space:nowrap;}
.gy-help-pop__row svg{flex:none;color:var(--gy-verde-oscuro,#40685F);}
.gy-help-pop__mail{display:block;font-family:var(--gy-font-ui);font-size:13px;color:var(--gy-morado-oscuro);text-decoration:none;margin-bottom:12px;word-break:break-all;}
.gy-help-pop__mail:hover{text-decoration:underline;}

/* Selector de idioma */
.gy-lang{position:relative;}
.gy-lang__btn{display:flex;align-items:center;gap:7px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:5px 11px;cursor:pointer;color:#fff;font-family:var(--gy-font-ui);font-size:12.5px;font-weight:600;}
.gy-lang__btn svg:last-child{transition:transform var(--gy-dur-fast) var(--gy-ease);}
.gy-lang.is-open .gy-lang__btn svg:last-child{transform:rotate(180deg);}
.gy-lang__menu{position:absolute;top:100%;right:0;margin-top:9px;background:#fff;border:1px solid var(--gy-linea);border-radius:14px;box-shadow:var(--gy-shadow-lg);padding:6px;min-width:196px;z-index:70;display:none;}
.gy-lang.is-open .gy-lang__menu{display:block;}
.gy-lang__head{font-family:var(--gy-font-ui);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gy-tinta-50);padding:8px 12px 6px;}
.gy-lang__row{display:flex;align-items:center;justify-content:space-between;width:100%;gap:10px;background:transparent;border:none;border-radius:9px;padding:8px 10px;cursor:pointer;text-decoration:none;}
.gy-lang__row.is-active{background:var(--gy-crema);}
.gy-lang__row-l{display:flex;align-items:center;gap:10px;}
.gy-lang__short{font-family:var(--gy-font-ui);font-size:11px;font-weight:700;color:var(--gy-morado-oscuro);background:var(--gy-crema);border-radius:6px;padding:3px 7px;min-width:34px;text-align:center;}
.gy-lang__label{font-family:var(--gy-font-body);font-size:14px;color:var(--gy-tinta);}
.gy-lang__check{display:flex;color:var(--gy-morado);opacity:0;}
.gy-lang__row.is-active .gy-lang__check{opacity:1;}

/* Barra principal */
.gy-hd__top{max-width:var(--gy-wide,1320px);margin:0 auto;padding:16px clamp(16px,3vw,32px);display:flex;align-items:center;gap:clamp(14px,2.5vw,32px);}
.gy-hd__logo{font-family:var(--gy-font-display);font-weight:500;color:var(--gy-tinta);letter-spacing:-.02em;white-space:nowrap;cursor:pointer;font-size:25px;text-decoration:none;}
.gy-hd__logo b{color:var(--gy-verde);font-size:.72em;font-weight:700;}
/* Logo desdoblado: 'Greenery420' en desktop, 'G420' en móvil (solo el logo del header) */
.gy-logo__short{display:none;}
.gy-hd__search{flex:1;max-width:560px;}
.gy-hd__actions{display:flex;align-items:center;gap:clamp(14px,2vw,22px);margin-left:auto;}
.gy-storepick-wrap{position:relative;}
.gy-storepick{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--gy-tinta);text-decoration:none;}

/* Popover de geolocalización del selector de tienda */
/* Anclado a la IZQUIERDA del botón (left:0): el popover (250px) es más ancho que el
   trigger, y con right:0 se abría desplegándose hacia la izquierda, lejos del botón
   (parecía "desplazado a un lado"). Con left:0 cae justo bajo "Elige tienda". */
.gy-store-pop{position:absolute;top:100%;left:0;margin-top:14px;background:#fff;border:1px solid var(--gy-linea);border-radius:14px;box-shadow:var(--gy-shadow-lg);padding:14px;width:250px;z-index:70;display:none;}
.gy-storepick-wrap.is-open .gy-store-pop{display:block;}
.gy-store-pop__txt{font-family:var(--gy-font-body);font-size:13px;color:var(--gy-tinta-70);line-height:1.5;margin:0 0 10px;}
.gy-storepick__txt{display:flex;flex-direction:column;line-height:1.2;}
.gy-storepick__txt small{font-family:var(--gy-font-ui);font-size:10.5px;color:var(--gy-tinta-50);}
.gy-storepick__txt b{font-family:var(--gy-font-ui);font-size:13px;font-weight:600;}
.gy-acct{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--gy-crema);border:1px solid var(--gy-linea);cursor:pointer;color:var(--gy-tinta);}
.gy-acct:hover{background:var(--gy-lavanda);}
/* Carrito en outline (morado sobre transparente) */
.gy-cartbtn{position:relative;display:flex;align-items:center;gap:9px;background:transparent;border:1.5px solid var(--gy-morado);border-radius:999px;padding:9px 15px;cursor:pointer;color:var(--gy-morado);text-decoration:none;font-family:var(--gy-font-ui);font-size:13px;font-weight:600;transition:background var(--gy-dur-fast) var(--gy-ease),color var(--gy-dur-fast) var(--gy-ease),border-color var(--gy-dur-fast) var(--gy-ease);}
.gy-cartbtn:hover{background:rgba(186,181,246,.22);color:var(--gy-morado-oscuro);border-color:var(--gy-morado-oscuro);}

/* Barra de búsqueda (form Woo) — más baja; submit en verde oscuro AA */
.gy-searchform{display:flex;align-items:center;gap:8px;width:100%;background:#fff;border:1.5px solid var(--gy-linea);border-radius:var(--gy-radius-pill);padding:3px 3px 3px 16px;}
/* height:34px + padding:0 imprescindibles: GeneratePress mete padding:10px a los <input>,
   que estiraba el input a 41px y el form a 50px; con align-items:center el botón (34px)
   quedaba con más hueco arriba/abajo (8px) que a la derecha (3px). Igualando el input al
   botón, el form recupera padding simétrico (3px arriba/abajo/derecha). */
.gy-searchform input{flex:1;min-width:0;height:34px;padding:0;border:none;outline:none;background:transparent;font-family:var(--gy-font-body);font-size:14px;color:var(--gy-tinta);}
.gy-searchform .gy-search-ico{width:18px;height:18px;flex:none;color:var(--gy-tinta);opacity:.6;}
/* padding:0 imprescindible: GeneratePress mete padding:10px 20px a los <button>, y con
   box-sizing:border-box el área de contenido caía a 0 → la flecha (svg, flex-item) se
   encogía a 0 de ancho y el botón salía ovalado y vacío. */
.gy-searchform button{flex:none;width:34px;height:34px;padding:0;min-width:0;border-radius:50%;background:var(--gy-verde-oscuro,#40685F);border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#fff;transition:background var(--gy-dur-fast) var(--gy-ease);}
.gy-searchform button:hover{background:#35564E;}
/* Flecha del submit siempre visible: stroke blanco explícito + flex:none para que no se
   encoja dentro del botón flex. Cubre también el buscador del hero (.gy-searchbar). */
.gy-searchform button svg,.gy-searchbar button svg{width:18px;height:18px;flex:none;display:block;stroke:#fff;fill:none;}

/* Nav de categorías */
.gy-catnav{max-width:var(--gy-wide,1320px);margin:0 auto;display:flex;align-items:center;justify-content:center;gap:clamp(16px,2.4vw,34px);height:46px;border-top:1px solid var(--gy-linea-suave);position:relative;}
.gy-catnav__it{font-family:var(--gy-font-ui);font-size:13.5px;font-weight:500;cursor:pointer;white-space:nowrap;color:var(--gy-tinta);border-bottom:2px solid transparent;padding:12px 0;text-decoration:none;transition:color var(--gy-dur-fast) var(--gy-ease),border-color var(--gy-dur-fast) var(--gy-ease);}
.gy-catnav__it:hover,.gy-catnav__it.is-open{color:var(--gy-morado-oscuro);border-bottom-color:var(--gy-morado);}
.gy-catnav__it--offer{color:var(--gy-error);font-weight:600;}
.gy-catnav__it--offer:hover{color:var(--gy-error);border-bottom-color:var(--gy-error);}

/* Megamenú */
.gy-mega{position:absolute;top:100%;left:0;right:0;background:#fff;border-top:1px solid var(--gy-linea-suave);box-shadow:var(--gy-shadow-lg);z-index:55;display:none;}
.gy-mega.is-open{display:block;}
.gy-mega__in{max-width:var(--gy-wide,1320px);margin:0 auto;padding:28px clamp(16px,3vw,32px);display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:36px;}
.gy-mega__h{font-family:var(--gy-font-ui);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gy-verde-oscuro,#40685F);margin-bottom:14px;}
.gy-mega a.gy-mega__link{display:block;font-family:var(--gy-font-body);font-size:14px;color:var(--gy-tinta-70);margin-bottom:9px;cursor:pointer;text-decoration:none;transition:color var(--gy-dur-fast) var(--gy-ease),padding-left var(--gy-dur-fast) var(--gy-ease);}
.gy-mega a.gy-mega__link:hover{color:var(--gy-morado);padding-left:5px;}
/* Filas híbridas (prototipo storefront/chrome.jsx): miniatura + label + flecha + hairline */
.gy-mega__row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--gy-linea-suave);font-family:var(--gy-font-body);font-size:14.5px;color:var(--gy-tinta);text-decoration:none;transition:color var(--gy-dur-fast) var(--gy-ease),padding-left var(--gy-dur-fast) var(--gy-ease);}
.gy-mega__row:last-child{border-bottom:none;}
.gy-mega__row:hover{color:var(--gy-morado);padding-left:5px;}
.gy-mega__row-l{display:flex;align-items:center;gap:12px;min-width:0;}
.gy-mega__thumb{width:34px;height:34px;border-radius:8px;object-fit:cover;flex:none;background:var(--gy-crema);display:inline-block;}
.gy-mega__arrow{opacity:.4;flex:none;}
.gy-mega__feat{position:relative;border-radius:16px;overflow:hidden;background:var(--gy-lavanda);min-height:230px;display:flex;flex-direction:column;justify-content:flex-end;padding:18px;cursor:pointer;text-decoration:none;}
/* Ale 2026-09-04 (2ª ronda): CON multiply (gusta el fundido con el lavanda), imagen
   GRANDE y anclada a la esquina inferior derecha del tile. El texto va encima
   (position:relative en tag/cap/price). */
.gy-mega__feat img{position:absolute;right:0;bottom:0;width:72%;max-height:88%;object-fit:contain;object-position:bottom right;mix-blend-mode:multiply;pointer-events:none;}
.gy-mega__feat-tag{position:relative;align-self:flex-start;font-family:var(--gy-font-ui);font-size:10.5px;font-weight:700;letter-spacing:.08em;background:var(--gy-morado);color:#fff;padding:4px 9px;border-radius:6px;margin-bottom:auto;}
.gy-mega__feat-cap{position:relative;font-family:var(--gy-font-display);font-weight:500;font-size:18px;color:var(--gy-tinta);}
.gy-mega__feat-price{position:relative;font-family:var(--gy-font-ui);font-size:13px;font-weight:600;color:var(--gy-morado-oscuro);margin-top:2px;}

/* Header colapsado (scroll, desktop) — replica el estado 'collapsed' del prototipo
   "Header y Footer.dc.html": solo buscador + carrito, centrados. */
@media (min-width:901px){
  /* overflow:hidden solo colapsado: si no, recortaría los popovers del topbar */
  .gy-hd .gy-topbar,.gy-hd .gy-catnav{max-height:60px;transition:max-height .28s var(--gy-ease),opacity .22s var(--gy-ease);}
  .gy-hd.is-collapsed .gy-topbar,.gy-hd.is-collapsed .gy-catnav{max-height:0;opacity:0;border:none;overflow:hidden;}
  .gy-hd.is-collapsed .gy-mega{display:none !important;}
  .gy-hd.is-collapsed .gy-hd__logo,.gy-hd.is-collapsed .gy-acct,.gy-hd.is-collapsed .gy-storepick-wrap{display:none;}
  .gy-hd.is-collapsed .gy-hd__top{justify-content:center;padding-top:11px;padding-bottom:11px;}
  .gy-hd.is-collapsed .gy-hd__search{flex:0 1 640px;max-width:640px;}
  .gy-hd.is-collapsed .gy-hd__actions{margin-left:0;}
}

/* Móvil: la top bar (promo + ayuda + idioma) se oculta al hacer scroll y reaparece al volver
   arriba. Reutiliza la clase .is-collapsed que greenery-chrome.js ya togglea por scroll (con
   histéresis: colapsa >160px, expande <40px) en todos los viewports — no hace falta tocar el
   JS. Colapso por max-height (mismo patrón que en desktop) para arrastrar el contenido hacia
   arriba sin saltos; el overflow:hidden solo colapsado, para no recortar el popover de ayuda.
   El selector de idioma del topbar se oculta en móvil: ahí el idioma vive en el menú (drawer),
   que no desaparece con el scroll. */
@media (max-width:900px){
  .gy-topbar{max-height:60px;transition:max-height .3s var(--gy-ease),opacity .22s var(--gy-ease);}
  .gy-hd.is-collapsed .gy-topbar{max-height:0;opacity:0;overflow:hidden;}
  .gy-lang{display:none;}
}
@media (max-width:900px) and (prefers-reduced-motion:reduce){
  .gy-topbar{transition:none;}
}

/* Móvil */
.gy-burger{display:none;}
.gy-mdrawer,.gy-mdrawer__backdrop{display:none;}
/* En carrito y checkout el FAB sobra (tapa campos y duplica lo que ya ves): fuera.
   Especificidad 0,2,0 > la regla del media query móvil (0,1,0), gane quien gane en orden. */

/* Marquee del topbar en móvil: el mensaje se desborda en pantallas estrechas, así que
   convierte las dos copias del track en un carrusel horizontal continuo (translateX -50%,
   loop sin hueco). Coexiste con help+lang (.gy-topbar__right no se oculta): el msg toma
   flex:1 y recorta lo que sobresale. Pausa en hover. */
@media (max-width:900px){
  .gy-topbar__msg{flex:1;min-width:0;overflow:hidden;display:flex;flex-wrap:nowrap;}
  .gy-topbar__track+.gy-topbar__track{display:inline-block;}
  .gy-topbar__track{flex:none;padding-right:24px;animation:gy-marquee 22s linear infinite;}
  .gy-topbar__msg:hover .gy-topbar__track{animation-play-state:paused;}
}
@keyframes gy-marquee{from{transform:translateX(0);}to{transform:translateX(-100%);}}
/* prefers-reduced-motion: sin carrusel; una sola copia estática con ellipsis. */
@media (max-width:900px) and (prefers-reduced-motion:reduce){
  .gy-topbar__track{animation:none;padding-right:0;}
  .gy-topbar__track+.gy-topbar__track{display:none;}
  .gy-topbar__msg{display:block;white-space:nowrap;text-overflow:ellipsis;}
  .gy-topbar__msg .gy-topbar__track{overflow:hidden;text-overflow:ellipsis;max-width:100%;}
}

@media (max-width:900px){
  /* Una sola línea: logo compacto (G420) + buscador (flex:1) + burger; el carrito baja al FAB */
  .gy-catnav,.gy-mega,.gy-storepick-wrap,.gy-hd .gy-acct{display:none;}
  .gy-hd__top{padding:10px 12px;gap:10px;}
  .gy-hd__search{flex:1;max-width:none;}
  .gy-searchform{padding:3px 3px 3px 12px;}
  /* Auditoría UX 2026-08-15, puntos 1-2: FAB fuera; el carrito vive en el sticky superior
     también en móvil (pill compacto: icono + contador, sin total) y el buscador cede ancho. */
  .gy-hd .gy-cartbtn{padding:8px 11px;gap:6px;}
  .gy-hd .gy-cartbtn .gy-cartbtn__tot{display:none;}
  .gy-hd__search{min-width:0;}
  .gy-hd__actions{gap:10px;margin-left:0;}
  .gy-burger{display:inline-flex;background:none;border:none;cursor:pointer;color:var(--gy-tinta);padding:0;order:5;}
  .gy-hd__logo{font-size:19px;}
  .gy-hd__top .gy-logo__full{display:none;}
  .gy-hd__top .gy-logo__short{display:inline;}
  /* FAB de carrito ("acompaña abajo a la izquierda"): fijo, morado sólido, contador en badge
     + subtotal corto; z-index por debajo del drawer (98/99) para que el menú lo tape. */
  /* Drawer móvil */
  .gy-mdrawer__backdrop{display:block;position:fixed;inset:0;z-index:98;background:rgba(40,38,34,.4);opacity:0;visibility:hidden;transition:opacity var(--gy-dur-base) var(--gy-ease),visibility var(--gy-dur-base);}
  .gy-mdrawer{display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:min(340px,88vw);z-index:99;background:var(--gy-crema);transform:translateX(-102%);transition:transform .32s var(--gy-ease);}
  body.gy-drawer-open .gy-mdrawer{transform:translateX(0);}
  body.gy-drawer-open .gy-mdrawer__backdrop{opacity:1;visibility:visible;}
  .gy-mdrawer__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;position:relative;z-index:2;padding:18px 20px 16px;border-bottom:1px solid var(--gy-linea);background:var(--gy-crema);}
  /* Cerrar: blanco sobre el crema del drawer (antes reusaba .gy-acct → crema sobre crema, sin
     borde perceptible = "no se ve la X"). Color e icono explícitos: no dependemos de heredar. */
  .gy-mdrawer__close{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:#fff;border:1px solid var(--gy-linea);color:var(--gy-tinta);cursor:pointer;padding:0;transition:background-color var(--gy-dur-fast) var(--gy-ease),color var(--gy-dur-fast) var(--gy-ease);}
  .gy-mdrawer__close svg{color:var(--gy-tinta);}
  /* background explícito: el theme mete un button:hover{background:#3F4047} global. */
  .gy-mdrawer__close:hover{background:var(--gy-lavanda);border-color:var(--gy-morado);color:var(--gy-morado-oscuro);}
  .gy-mdrawer__close:hover svg{color:var(--gy-morado-oscuro);}
  .gy-mdrawer__close:focus-visible{background:var(--gy-lavanda);outline:2px solid var(--gy-morado);outline-offset:2px;}
  .gy-mdrawer__body{flex:1;overflow-y:auto;padding:12px 20px 20px;}
  /* Destacado "Nuestras tiendas": píldora lavanda con pin. Diferencial de marca → abre la lista. */
  /* Texto en tinta, no en morado-oscuro: morado-oscuro sobre lavanda solo da 3,5:1 (falla AA
     en el subtítulo de 12px). Tinta sobre lavanda = 6,7:1 y tinta-70 = 4,75:1. */
  .gy-mdrawer__tiendas{display:flex;align-items:center;gap:11px;margin-top:16px;padding:12px 14px;min-height:56px;border-radius:var(--gy-radius-lg,16px);background:var(--gy-lavanda);border:1px solid var(--gy-morado);text-decoration:none;color:var(--gy-tinta);transition:background-color var(--gy-dur-fast) var(--gy-ease),color var(--gy-dur-fast) var(--gy-ease);}
  .gy-mdrawer__tiendas-ico{flex:none;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#fff;color:var(--gy-morado-oscuro);}
  .gy-mdrawer__tiendas-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
  .gy-mdrawer__tiendas-txt b{font-family:var(--gy-font-display);font-weight:500;font-size:17px;color:var(--gy-tinta);line-height:1.2;}
  .gy-mdrawer__tiendas-txt small{font-family:var(--gy-font-ui);font-size:12px;font-weight:500;color:var(--gy-tinta-70);}
  .gy-mdrawer__tiendas-arr{flex:none;opacity:.6;}
  /* Hover en morado-oscuro (no morado): blanco sobre morado se queda en 4,26:1. */
  .gy-mdrawer__tiendas:hover,.gy-mdrawer__tiendas:focus-visible{background:var(--gy-morado-oscuro);border-color:var(--gy-morado-oscuro);color:#fff;}
  .gy-mdrawer__tiendas:hover .gy-mdrawer__tiendas-txt b,.gy-mdrawer__tiendas:hover .gy-mdrawer__tiendas-txt small,
  .gy-mdrawer__tiendas:focus-visible .gy-mdrawer__tiendas-txt b,.gy-mdrawer__tiendas:focus-visible .gy-mdrawer__tiendas-txt small{color:#fff;}
  .gy-mdrawer__tiendas:focus-visible{outline:2px solid var(--gy-morado-oscuro);outline-offset:2px;}
  .gy-mdrawer__cat>button{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;border-bottom:1px solid var(--gy-linea);padding:15px 4px;cursor:pointer;font-family:var(--gy-font-display);font-weight:500;font-size:18px;color:var(--gy-tinta);}
  .gy-mdrawer__cat>button svg{transition:transform var(--gy-dur-base) var(--gy-ease);opacity:.5;}
  .gy-mdrawer__cat.is-open>button svg{transform:rotate(180deg);}
  .gy-mdrawer__cat>button.is-offer{color:var(--gy-error);}
  .gy-mdrawer__sub{overflow:hidden;max-height:0;transition:max-height var(--gy-dur-base) var(--gy-ease);}
  .gy-mdrawer__cat.is-open .gy-mdrawer__sub{max-height:480px;}
  .gy-mdrawer__sub a{display:flex;align-items:center;gap:10px;font-family:var(--gy-font-body);font-size:15px;color:var(--gy-tinta-70);padding:8px;text-decoration:none;}
  .gy-mdrawer__thumb{width:28px;height:28px;border-radius:7px;object-fit:cover;flex:none;background:#fff;display:inline-block;}
  .gy-mdrawer__extra a{display:block;font-family:var(--gy-font-display);font-weight:500;font-size:18px;color:var(--gy-tinta);padding:15px 4px;border-bottom:1px solid var(--gy-linea);text-decoration:none;}
  .gy-mdrawer__extra a.is-offer{color:var(--gy-error);}
  /* Pie: en columna (Mi cuenta + idioma). En fila no cabían con 3+ idiomas. */
  .gy-mdrawer__foot{flex:none;border-top:1px solid var(--gy-linea);padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;align-items:stretch;gap:12px;background:#fff;}
  .gy-mdrawer__acct{display:flex;align-items:center;gap:9px;min-height:44px;padding:6px 4px;font-family:var(--gy-font-ui);font-size:14px;font-weight:600;color:var(--gy-tinta);text-decoration:none;}
  .gy-mdrawer__acct svg{flex:none;color:var(--gy-tinta);}
  .gy-mdrawer__acct:hover{color:var(--gy-morado-oscuro);}
  .gy-mdrawer__acct:hover svg{color:var(--gy-morado-oscuro);}
  /* Selector de idioma (WPML): píldoras compactas, la activa en morado sólido. */
  .gy-mdrawer__lang{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--gy-linea);padding-top:12px;}
  .gy-mdrawer__lang-lbl{font-family:var(--gy-font-ui);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gy-tinta-50);}
  .gy-mdrawer__langs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .gy-mdrawer__langs a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:40px;font-family:var(--gy-font-ui);font-size:13px;font-weight:600;color:var(--gy-tinta-70);background:var(--gy-crema);border:1px solid var(--gy-linea);border-radius:999px;padding:0 13px;text-decoration:none;transition:background-color var(--gy-dur-fast) var(--gy-ease),color var(--gy-dur-fast) var(--gy-ease);}
  .gy-mdrawer__langs a:hover{background:var(--gy-lavanda);border-color:var(--gy-morado);color:var(--gy-morado-oscuro);}
  /* Activo en morado-oscuro (no morado): blanco sobre morado se queda en 4,26:1 y el label
     es texto normal de 13px. Sobre morado-oscuro sube a 6,6:1. Mismo criterio que el destacado. */
  .gy-mdrawer__langs a.is-active,.gy-mdrawer__langs a.is-active:hover{color:#fff;background:var(--gy-morado-oscuro);border-color:var(--gy-morado-oscuro);}
  .gy-mdrawer__langs a:focus-visible{outline:2px solid var(--gy-morado);outline-offset:2px;}
}

/* ---------------- FOOTER ---------------- */
.gy-ft{background:var(--gy-tinta);color:#e9e7df;}
.gy-ft__stores{background:var(--gy-verde-oscuro,#40685F);}
.gy-ft__stores-in{max-width:var(--gy-wide,1320px);margin:0 auto;padding:clamp(26px,3vw,34px) clamp(20px,4vw,40px);display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.gy-ft__stores-l{display:flex;align-items:center;gap:16px;}
.gy-ft__stores-ic{flex:none;width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;color:#fff;}
.gy-ft__stores b{font-family:var(--gy-font-display);font-weight:500;font-size:20px;color:#fff;display:block;}
.gy-ft__stores span{font-family:var(--gy-font-body);font-size:13.5px;color:rgba(255,255,255,.75);}
.gy-ft__store-form{display:flex;gap:8px;flex:1;max-width:26rem;min-width:16rem;}
.gy-ft__store-form input{flex:1;min-width:0;border:none;border-radius:999px;padding:12px 18px;font-family:var(--gy-font-body);font-size:14px;color:var(--gy-tinta);background:#fff;}
.gy-ft__in{max-width:var(--gy-wide,1320px);margin:0 auto;padding:clamp(40px,4vw,52px) clamp(20px,4vw,40px) 28px;}
.gy-ft__grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:clamp(24px,3vw,40px);border-bottom:1px solid rgba(255,255,255,.14);padding-bottom:34px;}
.gy-ft__brand-name{font-family:var(--gy-font-display);font-weight:500;font-size:24px;color:#fff;}
.gy-ft__brand-name b{color:var(--gy-salvia);font-size:.72em;font-weight:700;}
.gy-ft__tagline{font-family:var(--gy-font-body);font-size:13.5px;color:#b8b5ac;max-width:24rem;margin:14px 0 18px;line-height:1.6;}
.gy-ft__promo{font-family:var(--gy-font-ui);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#8f8c83;margin-bottom:9px;}
.gy-ft__news{display:flex;gap:8px;max-width:22rem;}
.gy-ft__news input{flex:1;min-width:0;border:none;border-radius:999px;padding:11px 16px;font-family:var(--gy-font-body);font-size:14px;color:var(--gy-tinta);background:#fff;}
.gy-ft__col h4{font-family:var(--gy-font-ui);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:#fff;margin:0 0 15px;}
.gy-ft__col a{display:block;font-family:var(--gy-font-body);font-size:14px;color:#c7c4bb;margin-bottom:10px;text-decoration:none;transition:color var(--gy-dur-fast) var(--gy-ease);}
.gy-ft__col a:hover{color:#fff;}
.gy-ft__bottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:22px;align-items:center;}
.gy-ft__social{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.gy-ft__social a{font-family:var(--gy-font-ui);font-size:13px;color:#c7c4bb;text-decoration:none;}
.gy-ft__social a:hover{color:#fff;}
.gy-ft__region{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:6px 12px;font-family:var(--gy-font-ui);font-size:12.5px;color:#e9e7df;}
/* Selector de idioma del footer: <details> que despliega hacia ARRIBA (estamos al pie). */
.gy-ft__lang{position:relative;display:inline-block;}
.gy-ft__lang summary{cursor:pointer;list-style:none;user-select:none;}
.gy-ft__lang summary::-webkit-details-marker{display:none;}
.gy-ft__lang summary:hover{background:rgba(255,255,255,.14);}
.gy-ft__lang-caret{opacity:.7;transition:transform .18s ease;}
.gy-ft__lang[open] .gy-ft__lang-caret{transform:rotate(180deg);}
.gy-ft__lang-menu{position:absolute;bottom:calc(100% + 8px);left:0;z-index:60;min-width:170px;margin:0;padding:6px;list-style:none;background:#26272C;border:1px solid rgba(255,255,255,.16);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.35);}
.gy-ft__lang-menu li{margin:0;}
.gy-ft__lang-menu a{display:block;padding:8px 12px;border-radius:8px;font-family:var(--gy-font-ui);font-size:13px;color:#e9e7df;text-decoration:none;}
.gy-ft__lang-menu a:hover{background:rgba(255,255,255,.1);color:#fff;}
.gy-ft__lang-menu a[aria-current="true"]{color:#fff;font-weight:600;background:rgba(255,255,255,.07);}
.gy-ft__pay{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.gy-ft__pay-chips{display:flex;gap:6px;flex-wrap:wrap;}
.gy-ft__pay-chips span{font-family:var(--gy-font-ui);font-size:11px;font-weight:600;color:#c7c4bb;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:6px;padding:5px 9px;}
.gy-ft__copy{font-family:var(--gy-font-body);font-size:13px;color:#8f8c83;}
.gy-ft__legal{font-family:var(--gy-font-body);font-size:11.5px;color:#8f8c83;max-width:64rem;margin-top:16px;line-height:1.6;}
.gy-ft__legal p{margin:0 0 8px;}
.gy-ft__legal p:last-child{margin-bottom:0;}

@media (max-width:900px){
  .gy-ft__grid{grid-template-columns:1fr 1fr;gap:28px;}
}
@media (max-width:600px){
  /* Estilo Seed: marca+newsletter a todo el ancho y las columnas de enlaces a 2 col,
     para que el footer no se haga kilométrico en móvil. */
  .gy-ft__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 18px;}
  .gy-ft__brand{grid-column:1 / -1;}
  .gy-ft__col a{margin-bottom:12px;}
  .gy-ft__bottom{flex-direction:column;align-items:flex-start;}
  .gy-ft__stores-in{flex-direction:column;align-items:flex-start;}
}

/* ---- Micro-interacción del logo: el "420" hace un pop sutil al hover del logo. ---- */
.gy-hd__logo b{display:inline-block;transition:transform var(--gy-dur-base) var(--gy-ease);}
.gy-hd__logo:hover b,.gy-hd__logo:focus-visible b{transform:translateY(-2px) scale(1.08);}
@media (prefers-reduced-motion:reduce){.gy-hd__logo b{transition:none;}.gy-hd__logo:hover b{transform:none;}}

/* ---- Footer · piso «Nuestras tiendas» (SEO local, plan CD 2026-08-10) ----
   Denso y discreto a propósito: una línea por comunidad, tipografía pequeña
   y atenuada, filete arriba. Cada nombre enlaza a SU ficha. */
.gy-ft__locs{border-top:1px solid rgba(255,255,255,.14);margin-top:34px;padding-top:22px;}
.gy-ft__locs-lab{display:block;font-family:var(--gy-font-ui);font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.45);margin-bottom:10px;}
.gy-ft__locs-row{font-family:var(--gy-font-ui);font-size:.78rem;line-height:1.9;color:rgba(255,255,255,.55);margin:0 0 2px;}
.gy-ft__locs-row b{font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:.68rem;color:rgba(255,255,255,.45);margin-right:8px;}
.gy-ft__locs-row a{color:rgba(255,255,255,.62);text-decoration:none;}
.gy-ft__locs-row a:hover{color:#fff;text-decoration:underline;}

/* ==== 404 (Ale 2026-08-12): viñeta + calma + dos salidas ==== */
.gy-404{background:var(--gy-crema);}
.gy-404__in{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:56px;padding-bottom:88px;}
.gy-404__img{width:min(420px,80vw);height:auto;border-radius:20px;margin-bottom:28px;}
.gy-404__title{font-family:var(--gy-font-display);font-weight:500;font-size:clamp(1.6rem,1.2rem + 2vw,2.4rem);line-height:1.2;color:var(--gy-tinta);max-width:34rem;margin:0 0 26px;}
.gy-404__actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;}

/* ---- [gy_separador]: ondas scallop + línea doodle (2026-08-14) ---- */
.gy-sep{background:var(--gy-sep-a,var(--gy-verde-claro));line-height:0;}
.gy-sep svg{width:100%;height:clamp(48px,8vw,110px);display:block;}
.gy-sep__fill{fill:var(--gy-sep-b,var(--gy-verde-bosque));}
.gy-sep__doodle{fill:none;stroke:var(--gy-morado);stroke-width:4;stroke-linecap:round;opacity:.85;}

/* ---- Motor de recomendaciones (gy-recomendaciones.php, 2026-08-15) ---- */
.gy-reco-zona{display:flex;flex-direction:column;gap:10px;margin:18px 0;}
.gy-reco{display:flex;align-items:center;gap:12px;background:var(--gy-crema);border:1px solid var(--gy-linea);border-radius:14px;padding:10px 12px;}
.gy-reco__img img{width:56px;height:56px;object-fit:cover;border-radius:10px;display:block;}
.gy-reco--xs .gy-reco__img img{width:44px;height:44px;}
.gy-reco__body{flex:1 1 auto;min-width:0;}
.gy-reco__eyebrow{display:block;font-family:var(--gy-font-ui);font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gy-morado-oscuro);margin-bottom:3px;}
.gy-reco__name{display:block;font-family:var(--gy-font-ui);font-size:13.5px;font-weight:600;line-height:1.3;color:var(--gy-tinta);}
.gy-reco__price{font-family:var(--gy-font-body);font-size:13px;color:var(--gy-text-muted);}
.gy-reco__price ins{text-decoration:none;color:var(--gy-morado-oscuro);font-weight:700;}
.gy-reco__btn{flex:none;background:var(--gy-morado);color:#fff;border-radius:999px;padding:9px 16px;font-family:var(--gy-font-ui);font-size:13px;font-weight:600;text-decoration:none;transition:background .15s ease;}
.gy-reco__btn:hover{background:var(--gy-morado-oscuro);color:#fff;}
.gy-reco__btn--ver{background:transparent;border:1.5px solid var(--gy-tinta);color:var(--gy-tinta);}
.gy-reco__btn--ver:hover{background:var(--gy-tinta);color:#fff;}
.gy-reco-grupo{display:flex;flex-direction:column;gap:8px;margin:14px 0;}
.gy-reco-grupo__tit{font-family:var(--gy-font-ui);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gy-text-subtle);}
.gy-reco-tag{font-family:var(--gy-font-ui);font-size:11px;font-weight:600;background:var(--gy-lavanda);color:var(--gy-morado-oscuro);border-radius:999px;padding:2px 8px;margin-left:6px;}
.gy-reco-zona--thankyou{max-width:560px;margin:26px auto;}
.gy-reco-zona__tit{font-family:var(--gy-font-display);font-weight:500;font-size:1.3rem;margin:0 0 4px;}

/* ---- [gy_separador] v2 (2026-08-15): línea doodle a mano, doble pasada rough ---- */
.gy-sep--linea{background:var(--gy-sep-bg,transparent);line-height:0;padding:18px 0;}
.gy-sep--linea svg{width:100%;height:clamp(22px,3.2vw,40px);display:block;}
.gy-sep__trazo{fill:none;stroke:var(--gy-sep-linea,var(--gy-morado));stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round;opacity:.92;}
.gy-sep__trazo--eco{stroke-width:2.6;opacity:.45;}

/* Separador compacto: para colarlo dentro de páginas (categorías, etc.) */
.gy-sep--compacta{padding:4px 0 10px;}
.gy-sep--compacta svg{height:clamp(16px,2vw,26px);}

/* Separador de categorías/shop: la línea CABALGA el borde crema→blanco, pegada
   bajo el bloque del titular (Ale 2026-08-15). z-index para pisar ambos fondos. */
.gy-sep-pull { position: relative; z-index: 2; margin-top: calc(-1 * clamp(22px, 3.4vw, 37px)); }
.gy-sep-pull .gy-sep--compacta { padding: 0; background: transparent; }

/* ==================================================================
   HOME · Botones de producto en tarjeta (Ale 2026-08-15, v3 — SIN letras):
   reposo = como «Ver tiendas» (sin fondo, borde y texto en tinta);
   hover = se RELLENA de morado con barrido 840ms. CSS puro.
   ================================================================== */
.home .gy-pcard .gy-btn {
  background: transparent; border: 1.5px solid var(--gy-tinta); color: var(--gy-tinta);
  position: relative; overflow: hidden; isolation: isolate;
  transition: color 840ms cubic-bezier(0.22, 1, 0.36, 1), border-color 840ms cubic-bezier(0.22, 1, 0.36, 1);
}
.home .gy-pcard .gy-btn::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: var(--gy-morado);
  scale: 0 1; transform-origin: left; border-radius: inherit;
  transition: scale 840ms cubic-bezier(0.22, 1, 0.36, 1);
}
.home .gy-pcard .gy-btn:hover,
.home .gy-pcard .gy-btn:focus-visible { background: transparent; color: #fff; border-color: var(--gy-morado); }
.home .gy-pcard .gy-btn:hover::before,
.home .gy-pcard .gy-btn:focus-visible::before { scale: 1 1; }
@media (prefers-reduced-motion: reduce) { .home .gy-pcard .gy-btn::before { transition: none; } }

/* Separador de una sola pasada (unificado gris, 2026-08-15) */
.gy-sep--simple .gy-sep__trazo--eco{display:none;}
.gy-sep--simple .gy-sep__trazo{stroke-width:2.2;opacity:.85;}

/* ===== Auditoría UX 2026-08-15 ===== */
/* 4 · Prueba social en el topbar (sustituye a «Devoluciones fáciles») */
.gy-topbar__stars{color:#EFB54B;}
/* 5 · Ticker móvil: arranca SIEMPRE por el inicio del primer mensaje y espera 2 s.
   El flex-start evita el arranque «a mitad» (antes el contenido desbordaba y se veía ") €"). */
.gy-topbar__msg{display:flex;justify-content:flex-start;overflow:hidden;}
@media (max-width:900px){
  .gy-topbar__track{animation-delay:2s;}
}

/* ==================== Form de Klaviyo del footer (RWQsJy), domesticado ====================
   (Ale 2026-09-03, noche de lanzamiento: «lo que ha hecho ese id es muy feo».)
   Klaviyo inyecta el form con estilos INLINE (fondo morado sucio rgb(137,128,183),
   radio 0, paddings enormes) → se pisa TODO con !important, que en hoja de autor
   gana a los estilos inline. Scoped al footer: si el mismo form se incrusta en otra
   página ([gy_klaviyo_form] del Club), allí conserva el estilo del editor de Klaviyo.
   Receta afinada EN VIVO sobre producción (input 46px pill, botón morado, 168px total). */
.gy-ft .klaviyo-form-RWQsJy form{background:transparent!important;padding:12px 0 0!important;max-width:none!important;gap:8px!important;align-items:stretch!important;}
.gy-ft .klaviyo-form-RWQsJy form>div{background:transparent!important;padding:0!important;}
.gy-ft .klaviyo-form-RWQsJy [role=presentation]{background:transparent!important;padding:0!important;border:0!important;}
.gy-ft .klaviyo-form-RWQsJy form div[class*=go]{padding-top:3px!important;padding-bottom:3px!important;}
.gy-ft .klaviyo-form-RWQsJy label{display:none!important;}
.gy-ft .klaviyo-form-RWQsJy input[type=email],
.gy-ft .klaviyo-form-RWQsJy input[type=text]{background:rgba(255,255,255,.07)!important;border:1px solid rgba(255,255,255,.25)!important;border-radius:999px!important;color:#fff!important;height:46px!important;padding:0 18px!important;font-family:var(--gy-font-ui)!important;font-size:14px!important;box-shadow:none!important;}
.gy-ft .klaviyo-form-RWQsJy input::placeholder{color:rgba(255,255,255,.55)!important;}
.gy-ft .klaviyo-form-RWQsJy button.klaviyo-form-button{background:var(--gy-morado,#7C6FE0)!important;border:0!important;border-radius:999px!important;height:46px!important;width:100%!important;padding:0 20px!important;font-family:var(--gy-font-ui)!important;font-weight:600!important;font-size:14px!important;color:#fff!important;white-space:nowrap!important;box-shadow:none!important;transition:background .2s ease;}
.gy-ft .klaviyo-form-RWQsJy button.klaviyo-form-button:hover{background:#6a5cd6!important;} /* fondo fijado: trampa #1 */
.gy-ft .klaviyo-form-RWQsJy form p,
.gy-ft .klaviyo-form-RWQsJy form span{color:rgba(255,255,255,.45)!important;font-size:11px!important;line-height:1.45!important;}

/* Puntito de NOVEDADES en el menú (Ale 2026-09-07): morado firma, discreto, pulso
   suave. El position:relative del enlace ancla también el screen-reader-text
   (lección del overflow fantasma de los precios rebajados). */
.gy-catnav__it{position:relative;}
.gy-nov-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gy-morado);margin-left:6px;transform:translateY(-5px);animation:gyNovPulse 2.4s ease-in-out infinite;}
.gy-mdrawer__cat button[data-gy-acc]{position:relative;}
.gy-mdrawer__cat .gy-nov-dot{margin-right:auto;}
@keyframes gyNovPulse{0%,100%{box-shadow:0 0 0 0 rgba(124,107,214,.45);}50%{box-shadow:0 0 0 4px rgba(124,107,214,0);}}
@media (prefers-reduced-motion:reduce){.gy-nov-dot{animation:none;}}

/* Con barra de admin, el header sticky baja 32px para no pisarla (auditoría §6). */
body.admin-bar .gy-hd{top:32px;}
@media (max-width:782px){body.admin-bar .gy-hd{top:46px;}}
