/* ══════════════════════════════════════════════════════════════════════
   LA CABECERA EN ESCRITORIO — HerboMax

   TODO este archivo vive dentro de @media (min-width:1025px). Ni una regla
   base. En el telefono la cabecera no cambia en nada: ahi manda el cajon
   de menu de inc/menu.php, que ya esta aprobado.

   QUE HACE
   Reordena la cabecera de Woodmart en los TRES PISOS de la pagina que el
   dueno dio como referencia (flowsupplementscompany.com):

     piso 1 · la barra de anuncio      (la dibuja Woodmart, arriba de todo)
     piso 2 · el logo CENTRADO, con los iconos a la derecha   96 px
     piso 3 · el menu CENTRADO                                56 px

   Hoy es un solo piso de 90 px: logo a la izquierda, menu al centro,
   iconos a la derecha.

   COMO, SIN TOCAR EL HTML
   Woodmart arma ese piso con tres columnas dentro de un flex:
     .whb-row.whb-general-header > .container > .whb-flex-row
        > .whb-col-left    (el logo)
        > .whb-col-center  (el menu)
        > .whb-col-right   (buscar y carro)
   Se le da flex-wrap:wrap al contenedor, las columnas izquierda y centro
   pasan a ocupar el 100% -- con lo que caen una debajo de la otra -- y la
   derecha se saca del flujo con position:absolute para que quede a la
   altura del logo. Cero marcado nuevo.

   MEDIDO EN EL SITIO VIVO, antes y despues de cada regla, en 375, 900,
   1024, 1025 y 1440 px.

   POR QUE 1025 Y NO 900. Woodmart marca sus columnas de escritorio con la
   clase whb-visible-lg y las esconde por debajo de 1025 px: ahi dibuja la
   cabecera de celular. Con el corte en 900, entre 900 y 1024 esta hoja
   estiraba la banda a 152 px y la dejaba VACIA, porque las columnas que
   iban a llenarla estaban en display:none. Comprobado a 1024 (columnas
   escondidas) y a 1025 (columnas visibles, logo de 227 px).
   ══════════════════════════════════════════════════════════════════════ */

@media (min-width:1025px){

  :root{
    --hbx-cab-logo:96px;   /* alto del piso del logo */
    --hbx-cab-menu:56px;   /* alto del piso del menu */

    /* ── ESTA LINEA EVITA UN BRINCO DE 61 px AL CARGAR ───────────────
       Woodmart calcula la altura total de la cabecera en :root, asi:
         --wd-header-h = barra superior + --wd-header-general-h + bordes
       Y su JavaScript, al terminar de cargar, le pone al <header> la
       clase whb-sticky-prepared, cuya unica regla es
       padding-top: var(--wd-header-h), sacando la banda del flujo.

       La altura nueva (152 px) se declaraba SOLO sobre la fila, no sobre
       :root. Asi que Woodmart seguia calculando con los 90 px viejos y
       reservaba 91 px de espacio para una cabecera que mide 152. Efecto
       para el cliente: la pagina termina de cargar, y una fraccion de
       segundo despues TODO EL CONTENIDO BRINCA 61 px hacia arriba; ya
       con el brinco hecho, la franja blanca del menu queda tapando los
       primeros 21 px de la pagina (el filo de la foto del hero, o el
       titulo en la tienda).

       Declarandola tambien aca, el calculo de Woodmart da 153 contra una
       banda de 152: 1 px, igual que en celular, y no se nota.
       Va dentro del @media de min-width, asi que el celular no cambia. */
    --wd-header-general-h:152px;
  }

  /* ── la banda ──────────────────────────────────────────────────────
     El logo de HerboMax es blanco puro, asi que su piso va sobre morado;
     el menu se lee mejor en negro sobre blanco.

     CADA PISO LLEVA SU PROPIO FONDO. NO SE PINTA LA BANDA.
     La primera version pintaba la banda entera con un degradado de dos
     tramos -- morado los primeros 96 px, blanco el resto -- y le clavaba
     152 px de alto a la fila. Eso se rompia al hacer scroll:

       Cuando la cabecera se queda pegada arriba, Woodmart DEVUELVE
       --wd-header-general-h a 90 px. Medido en el sitio vivo: en reposo
       la banda media 152 y pegada volvia a 90. Los dos pisos siguen
       midiendo 96 + 56 = 152, asi que el piso del menu SE DESBORDABA
       62 px por debajo de la banda. Y como el blanco lo pintaba el
       degradado DE LA BANDA, el menu quedaba sin ningun fondo, flotando
       encima de las fotos de los productos. El dueno lo vio y mando la
       captura.

     Ahora el fondo lo lleva cada columna, no la banda, asi que da lo
     mismo que altura decida Woodmart: el piso del menu siempre viaja con
     su blanco pegado. Y la fila pasa a min-height en vez de height, para
     que pueda crecer en vez de desbordar. */
  .whb-row.whb-general-header{
    --wd-header-general-h:152px;
    background:var(--hbx-morado,#581fb6);
  }

  .whb-general-header .whb-flex-row{
    position:relative;
    flex-wrap:wrap;
    align-items:stretch;
    /* min-height y NO height: si Woodmart la achica, la fila se queda en
       152 en vez de recortar a sus hijos. max-height:none deshace el
       tope que trae el tema padre. */
    height:auto;
    min-height:152px;
    max-height:none;
  }

  /* ── piso 2 · el logo ── */
  /* margin-left:0 no es adorno: Woodmart le pone -10px a esta columna
     para pegarla al borde, y con el logo centrado eso lo dejaba 10 px
     corrido respecto del centro real de la pagina. Medido: con el -10px
     el centro del logo caia en 702 y el centro visual es 713. */
  /* Lleva su morado propio, con el mismo truco de las dos sombras planas
     que el piso del menu. La banda ya es morada, asi que hoy no se nota;
     esta por si Woodmart cambia el fondo de la banda en algun estado
     (pegada, con promocion, con otro esquema de color). Con esto los dos
     pisos son independientes de lo que haga la banda, que es justo lo que
     fallo la primera vez. */
  .whb-general-header .whb-col-left{
    flex:0 0 100%;
    max-width:100%;
    margin-left:0;
    height:var(--hbx-cab-logo);
    justify-content:center;
    background:none;
  }

  /* ── los iconos, a la derecha del piso del logo ── */
  /* Fuera del flujo: si se quedaran como tercera columna, el wrap los
     mandaria a un piso propio y la cabecera tendria cuatro. */
  .whb-general-header .whb-col-right{
    position:absolute;
    top:0;
    right:0;
    margin:0;
    height:var(--hbx-cab-logo);
    max-height:var(--hbx-cab-logo);
    justify-content:flex-end;
  }

  /* ── el separador fantasma que descentraba el menu ─────────────────
     Dentro de la columna del menu, el constructor de encabezados de
     Woodmart dejo un separador vacio de 70 px ANTES del menu. Servia en
     el diseno viejo de un solo piso, para despegar el menu del logo que
     iba a la izquierda. Con el menu ya centrado en su propio piso, ese
     hueco se centra JUNTO con el menu: el conjunto [70 px vacios + menu]
     queda centrado, y por lo tanto el menu solo queda 35 px corrido a la
     derecha del centro de la pagina, desalineado con el logo de arriba.

     Se anula por CSS y no borrandolo del constructor a proposito: si
     algun dia el dueno rearma la cabecera desde el panel y el separador
     vuelve a aparecer, esta regla lo sigue tapando sola. */
  .whb-general-header .whb-col-center .whb-space-element{
    display:none;
  }

  /* ── piso 3 · el menu ── */
  /* El blanco a sangre completa con dos sombras planas, una a cada lado.
     Es el truco clasico: box-shadow no ocupa espacio ni afecta al layout,
     asi que pinta el ancho entero de la pantalla sin sacar la columna de
     su sitio ni obligar a un <div> nuevo. Se pinta por encima del fondo
     de la banda y por debajo del texto del menu, que es justo donde tiene
     que ir. Va en la columna y no en la banda a proposito: asi el blanco
     viaja pegado al menu pase lo que pase con la altura de la banda al
     hacer scroll. */
  .whb-general-header .whb-col-center{
    flex:0 0 100%;
    max-width:100%;
    margin:0;
    height:var(--hbx-cab-menu);
    justify-content:center;
    background:none;
  }

  /* ── el color del menu ─────────────────────────────────────────────
     Con los dos pisos morados, el menu va en blanco.

     COMO SE LE CAMBIA EL COLOR AL MENU. Vale dejarlo escrito porque ya
     costo dos vueltas y lo que estaba escrito aca antes era FALSO: decia
     que habia que cambiar la variable --nav-color, y que el color del
     enlace "no se podia cambiar". Las dos cosas son mentira, y por creerlas
     la barra compacta se dejo blanca en su momento.

     Lo que pasaba de verdad es mas simple, y es una regla basica de CSS
     que conviene tener presente para no volver a perder el tiempo:

         UNA REGLA PUESTA SOBRE EL PROPIO ELEMENTO SIEMPRE LE GANA AL COLOR
         HEREDADO DE UN ANTECESOR, POR ESPECIFICO QUE SEA EL ANTECESOR.

     Woodmart pinta el enlace con una regla sobre el propio <a>. Por eso
     nada de lo que se intentaba servia: se estaba pintando siempre un
     contenedor -- la columna, el <ul>, la fila, la variable -- y el color
     heredado que sale de ahi jamas llega al <a>, porque el <a> ya tiene el
     suyo. Comprobado en el sitio, uno por uno:

         color en .whb-row.whb-general-header (la fila) .... NO cambia
         color en .wd-header-nav (el contenedor) .......... NO cambia
         --nav-color en el <ul>, incluso en linea ......... NO cambia
         color sobre el <a> con suficiente peso .......... SI cambia

     Asi que se pinta el <a>. Sin !important: basta con nombrar la cadena
     completa para pesar mas que la regla de Woodmart.

     El desplegable de "Productos" no se ve afectado: su panel sigue siendo
     blanco y sus enlaces tienen su propio color mas abajo en este archivo.

     Contraste: blanco sobre #581fb6 da 9,2:1 y el lavanda del hover 7,3:1.
     La norma pide 4,5. */
  .whb-general-header .whb-col-center .wd-header-nav .wd-nav > li > a{
    color:#fff;
  }
  .whb-general-header .whb-col-center .wd-header-nav .wd-nav > li > a:hover,
  .whb-general-header .whb-col-center .wd-header-nav .wd-nav > li > a:focus-visible{
    color:var(--hbx-lavender,#e5e0f5);
  }

  /* Las variables se dejan igual de todas formas: no pintan estos enlaces,
     pero Woodmart las usa para piezas suyas (la flechita del desplegable,
     algunos estados), y asi no queda una a oscuras sobre el morado. */
  .whb-general-header .whb-col-center .wd-header-nav .wd-nav{
    --nav-color:#fff;
    --nav-color-hover:var(--hbx-lavender,#e5e0f5);
    --nav-color-active:var(--hbx-lavender,#e5e0f5);
  }

  /* La transicion de color de la referencia, medida en su hoja: 0,12 s. */
  .whb-general-header .whb-col-center .wd-nav > li > a{
    transition:color .12s ease;
  }

  /* ── el desplegable de "Productos" ─────────────────────────────────

     HAY DOS CAJAS ANIDADAS, Y HAY QUE PINTAR LA DE AFUERA.
     El desplegable es asi:
       div.wd-dropdown-menu   <- el panel de Woodmart: fondo blanco, radio
                                 8 px, sombra suave, padding 12px 20px
         div.container
           ul.wd-sub-menu     <- la lista, transparente

     Al principio se le dio el aspecto al <ul>. Como el panel de afuera YA
     era un rectangulo blanco, quedaban DOS rectangulos blancos, uno dentro
     del otro, con los dos bordes a la vista. Se pinta el de afuera y el de
     adentro se deja sin caja.

     LA ANIMACION NO SE TOCA, y esto es lo importante.
     Woodmart ya la trae, y es buena: el panel arranca en opacity:0,
     visibility:hidden y translateY(15px), y entra en 0,4 s con la curva
     cubic-bezier(.19,1,.22,1). O sea que ya aparece subiendo y con
     desvanecido, que es justo lo que se buscaba copiar de la referencia.
     El primer intento le ponia encima un transform propio de 0,18 s: eso
     PISABA el translateY(15px) del estado cerrado y le rompia la entrada
     a Woodmart para cambiarla por una peor. Se saco.
     Aca va solo el aspecto: borde, esquinas y sombra de la marca. */
  .whb-general-header .whb-col-center .wd-dropdown-menu{
    padding:10px 0;
    border:1px solid var(--hbx-borde,#e6e2f0);
    border-radius:14px;
    box-shadow:0 14px 34px rgba(20,23,58,.14);
  }

  /* La lista de adentro, sin caja propia. */
  .whb-general-header .whb-col-center .wd-sub-menu{
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }

  /* ── EL UNICO !important DEL TEMA, y esta justificado ──────────────
     Los items del desplegable venian en gris #848484, que sobre el panel
     blanco da 3,74:1 cuando la norma pide 4,5 para texto normal.

     Se intento SIN !important, en este orden, y todo fallo:
       · subir especificidad a (0,3,2) -- .whb-general-header
         .whb-col-center .wd-sub-menu li > a
       · sumarle la clase real del enlace, (0,4,2), con .woodmart-nav-link
       · poner un color literal en vez de la variable
       · cambiar la variable de Woodmart, --sub-menu-color, sobre el <ul>
     En TODOS los intentos el padding y el font-size de esta misma regla si
     se aplicaban y el color no. Eso solo pasa si otra regla gana con
     !important. Al buscarla se encontro la razon de fondo: de las 80 hojas
     de la pagina hay 4 que el navegador no deja leer por origen cruzado, y
     la regla vive en una de esas. No hay forma de ganarle por
     especificidad porque no se puede ni ver.

     Las cabeceras de tienda.css y escritorio-tienda.css dicen que el tema
     no usa ni un !important. Sigue siendo cierto en esas dos hojas. Esta
     es la excepcion, es una sola declaracion, y el motivo es que el texto
     quedaba bajo el minimo legible. Medido despues: 17,31:1 en los 7
     items. */
  .whb-general-header .whb-col-center .wd-sub-menu li > a{
    padding:9px 20px;
    font-size:.9375rem;
    color:var(--hbx-texto,#14173a) !important;
    transition:color .12s ease, background-color .12s ease;
  }
  /* El hover lleva el mismo !important por la misma razon: si el estado
     normal lo lleva y este no, al pasar el raton el texto SALTARIA al gris
     de Woodmart, que es mas claro que el color de reposo. Quedaria peor
     que no tener hover. */
  .whb-general-header .whb-col-center .wd-sub-menu li > a:hover{
    color:var(--hbx-morado,#581fb6) !important;
    background:var(--hbx-hueso,#f7f5fb);
  }

  /* Quien pide reducir movimiento no ve la entrada del desplegable ni el
     cambio de color. La animacion del panel es de Woodmart, asi que se
     apaga la suya: sin esto, apagar solo la nuestra no serviria de nada
     porque la nuestra ya no existe. */
  @media (prefers-reduced-motion: reduce){
    .whb-general-header .whb-col-center .wd-dropdown-menu,
    .whb-general-header .whb-col-center .wd-nav > li > a,
    .whb-general-header .whb-col-center .wd-sub-menu li > a{
      transition:none;
    }
  }

  /* ══ EL MEGA-MENU DE "PRODUCTOS" ═══════════════════════════════════
     El panel ancho con una columna por categoria. Lo dibuja inc/mega.php
     leyendo la tienda, y va colgado DENTRO del <li> de "Productos".

     COMO SE COLOCA A ANCHO COMPLETO
     El <li> se pone en position:static a proposito. Asi el panel, que es
     absolute, no se ancla al <li> (que mide lo que mide su texto) sino al
     primer antepasado posicionado, que es .whb-flex-row -- la fila de la
     cabecera, ya en position:relative mas arriba en este archivo. De ahi
     salen el left:0, el right:0 y el ancho completo de la cabecera.
     top:100% lo deja justo debajo de los 152 px de la banda.

     LA ANIMACION ES LA MISMA DE WOODMART, COPIADA A PROPOSITO
     Se leyo de su hoja: opacity 0, visibility hidden, translateY(15px) y
     transicion de 0,4 s con cubic-bezier(.19,1,.22,1). Se repite tal cual
     para que el desplegable de "Productos" y los de los demas items del
     menu se abran EXACTAMENTE igual. Si se inventara otra curva u otro
     tiempo, el cliente notaria que un menu se comporta distinto que su
     vecino sin saber por que.

     Aca SI se toca la opacidad, al reves que en el desplegable normal de
     Woodmart, y se puede: este panel es nuestro de punta a punta y el que
     lo abre es el :hover del CSS, no un JavaScript ajeno. No hay forma de
     que quede invisible por un guion que no corrio. */
  .whb-general-header .whb-col-center .wd-nav > li.hbx-tiene-mega{
    position:static;
  }

  /* El desplegable angosto de Woodmart sobra en este item: lo reemplaza el
     panel. Solo en este <li>; los demas conservan el suyo. */
  .whb-general-header .whb-col-center .wd-nav > li.hbx-tiene-mega > .wd-dropdown-menu{
    display:none;
  }

  .whb-general-header .hbx-mega{
    position:absolute;
    z-index:400;
    left:0;
    right:0;
    top:100%;
    padding:30px 0 22px;
    border:1px solid var(--hbx-borde,#e6e2f0);
    border-radius:0 0 18px 18px;
    background:#fff;
    box-shadow:0 18px 40px rgba(20,23,58,.14);
    opacity:0;
    visibility:hidden;
    transform:translateY(15px);
    transition:opacity .4s cubic-bezier(.19,1,.22,1),
               visibility .4s cubic-bezier(.19,1,.22,1),
               transform .4s cubic-bezier(.19,1,.22,1);
  }
  .whb-general-header .whb-col-center .wd-nav > li.hbx-tiene-mega:hover > .hbx-mega,
  .whb-general-header .whb-col-center .wd-nav > li.hbx-tiene-mega:focus-within > .hbx-mega{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
  }

  /* Las columnas. auto-fit y no un numero fijo: si algun dia hay 4
     categorias en vez de 7, las columnas se reparten el ancho solas en vez
     de dejar un hueco a la derecha. minmax(0,...) porque un nombre de
     producto largo sin espacios ensancharia su columna. */
  .hbx-mega-caja{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(0, 1fr));
    gap:12px 26px;
    max-width:1220px;
    margin-inline:auto;
    padding-inline:20px;
    text-align:left;
  }

  .hbx-mega-col{ min-width:0; }

  .whb-general-header .hbx-mega-tit{
    display:block;
    margin-bottom:12px;
    font-size:.8125rem;
    font-weight:700;
    letter-spacing:.1em;
    text-transform:uppercase;
    line-height:1.3;
    color:var(--hbx-morado,#581fb6);
  }
  .whb-general-header .hbx-mega-tit:hover{ text-decoration:underline; }

  .hbx-mega-lista{
    margin:0;
    padding:0;
    list-style:none;
  }
  .hbx-mega-lista li{ margin:0; }

  .whb-general-header .hbx-mega-lista a{
    display:block;
    padding:6px 0;
    font-size:.9375rem;
    font-weight:400;
    line-height:1.4;
    color:var(--hbx-texto,#14173a);
    transition:color .12s ease;
  }
  .whb-general-header .hbx-mega-lista a:hover{ color:var(--hbx-morado,#581fb6); }

  .whb-general-header .hbx-mega-mas a{
    margin-top:4px;
    font-size:.8125rem;
    color:var(--hbx-texto-2,#5d6081);
  }

  .hbx-mega-pie{
    max-width:1220px;
    margin:22px auto 0;
    padding:16px 20px 0;
    border-top:1px solid var(--hbx-borde,#e6e2f0);
    text-align:center;
  }
  .whb-general-header .hbx-mega-todos{
    font-size:.9375rem;
    font-weight:600;
    color:var(--hbx-morado,#581fb6);
  }
  .whb-general-header .hbx-mega-todos:hover{ text-decoration:underline; }

  @media (prefers-reduced-motion: reduce){
    .whb-general-header .hbx-mega{ transition:none; transform:none; }
  }

}

/* ══ LA CABECERA COMPACTA AL BAJAR ═══════════════════════════════════
   El efecto de floramatic.com que pidio el dueno: al bajar, el logo se
   achica y se va a la esquina superior izquierda, y los dos pisos se
   funden en uno solo. Al volver arriba, la cabecera se abre de nuevo.

   La clase hbx-cab-chica la pone assets/cabecera.js sobre el <html>. Si
   ese guion no carga, esta clase no existe y la cabecera se queda abierta:
   se ve entera, sin efecto, nunca rota.

   EL LOGO ES BLANCO PURO, ASI QUE LA BARRA COMPACTA SIGUE SIENDO MORADA.
   Es la trampa que ya costo caro una vez en este proyecto: una cabecera
   compacta blanca -- que es lo que hace la referencia -- dejaria el logo
   invisible. Aca la barra chica conserva el morado y el menu pasa a
   blanco, que es la combinacion que ya usaba el sitio antes de partir la
   cabecera en dos pisos.

   Y ARREGLA EL DESBORDE DEL MENU AL HACER SCROLL.
   La cabecera abierta mide 152 px, pero cuando Woodmart la deja pegada
   arriba le devuelve su altura vieja de 90 y el piso del menu se salia
   por debajo, quedando encima de los productos. Compacta mide 56: menos
   que 90, asi que ya no hay nada que desbordar. El error desaparece por
   construccion, no por un parche. */
@media (min-width:1025px){

  /* Lo que se mueve, se mueve suave. Solo estas cuatro cosas: animar la
     cabecera entera dejaria el menu temblando en cada cuadro.

     LA CURVA IMPORTA MAS QUE LA DURACION. Antes eran .28s con "ease", que
     arranca rapido y frena al final: el logo salta y despues se acomoda,
     que es justo lo que el dueno describio como que "le falta afinar".

     Ahora son .42s con una curva que arranca despacio, toma velocidad al
     medio y aterriza suave (cubic-bezier .22,.61,.36,1). Es la diferencia
     entre ver el logo APARECER chico y verlo VIAJAR a la esquina, que es
     el efecto que se pidio copiar. Los 0,42 s no se sienten lentos porque
     el recorrido es corto; se sienten como un movimiento y no como un
     corte. */
  .whb-general-header .whb-flex-row,
  .whb-general-header .whb-col-left,
  .whb-general-header .whb-col-left img,
  .whb-general-header .whb-col-center{
    transition:height .42s cubic-bezier(.22,.61,.36,1),
               min-height .42s cubic-bezier(.22,.61,.36,1),
               transform .42s cubic-bezier(.22,.61,.36,1),
               background-color .42s cubic-bezier(.22,.61,.36,1);
  }

  /* ── el estado compacto ────────────────────────────────────────────
     La barra chica va morada entera, igual que la abierta.

     ANTES ERA BLANCA, y por una razon que resulto ser falsa: se creia que
     el color del menu no se podia cambiar, asi que se dejo la barra blanca
     para que el menu oscuro se leyera. Lo que fallaba era el metodo, no el
     objetivo: se estaba pintando un contenedor y el color heredado nunca
     le gana a la regla que Woodmart pone sobre el propio enlace. Pintando
     el <a> directamente, el menu se pone blanco sin pelear (esta explicado
     en detalle en el bloque del color del menu, mas arriba).

     Esto importa aca porque el menu YA es blanco: si esta barra siguiera
     siendo blanca, quedaria texto blanco sobre fondo blanco, o sea el
     menu invisible. Los dos cambios van juntos, no se puede hacer uno
     sin el otro. */
  html.hbx-cab-chica .whb-row.whb-general-header{
    --wd-header-general-h:var(--hbx-cab-menu);
    height:var(--hbx-cab-menu);
    background:var(--hbx-morado,#581fb6);
  }
  html.hbx-cab-chica .whb-general-header .whb-flex-row{
    height:var(--hbx-cab-menu);
    min-height:var(--hbx-cab-menu);
  }

  /* El logo sale del flujo y se ancla a la esquina. Sin position:absolute
     seguiria ocupando su fila entera y la cabecera no podria encogerse.
     El box-shadow de un solo lado lleva el morado hasta el borde
     izquierdo de la pantalla sin taparle nada al menu. */
  html.hbx-cab-chica .whb-general-header .whb-col-left{
    position:absolute;
    top:0;
    left:0;
    z-index:5;
    flex:none;
    width:auto;
    height:var(--hbx-cab-menu);
    max-height:var(--hbx-cab-menu);
    justify-content:flex-start;
    padding-right:26px;
    background:var(--hbx-morado,#581fb6);
    box-shadow:-100vw 0 0 var(--hbx-morado,#581fb6);
  }

  /* Se achica con transform y no con width, y no es un detalle: transform
     no obliga al navegador a recalcular el resto de la pagina en cada
     cuadro, asi que la animacion no tironea. 0,62 deja el logo en 141 px
     -- la referencia baja de 432 a 134, pero el nuestro ya nace mucho
     mas chico (227) y bajarlo tanto lo dejaria ilegible. */
  html.hbx-cab-chica .whb-general-header .whb-col-left img{
    transform:scale(.62);
    transform-origin:left center;
  }

  /* ── el eslogan, solo con la barra compacta ────────────────────────
     Lo agrega assets/cabecera.js dentro de la columna del logo. Con la
     cabecera abierta NO se dibuja: ahi el logo va centrado y el eslogan lo
     corerria de su sitio. Con la barra chica el logo esta en la esquina y
     al lado sobra morado, que es justo donde calza.

     Blanco sobre el morado de marca: 9,2:1 de contraste. */
  .whb-general-header .hbx-lema{
    display:none;
  }
  html.hbx-cab-chica .whb-general-header .whb-col-left .hbx-lema{
    display:block;
    margin-left:16px;
    padding-left:16px;
    border-left:1px solid rgba(255,255,255,.4);
    color:#fff;
    font-size:.8125rem;
    font-weight:500;
    letter-spacing:.01em;
    line-height:1.2;
    white-space:nowrap;
    /* No recibe clics: es un letrero, y si tapara algo del menu seria un
       estorbo invisible. */
    pointer-events:none;
  }

  /* Bajo 1280 px la barra se pone estrecha y el eslogan empujaria al menu
     contra los iconos. Se esconde antes de que eso pase. */
  @media (max-width:1279px){
    html.hbx-cab-chica .whb-general-header .whb-col-left .hbx-lema{
      display:none;
    }
  }

  html.hbx-cab-chica .whb-general-header .whb-col-right{
    height:var(--hbx-cab-menu);
    max-height:var(--hbx-cab-menu);
  }

  @media (prefers-reduced-motion: reduce){
    .whb-general-header .whb-flex-row,
    .whb-general-header .whb-col-left,
    .whb-general-header .whb-col-left img,
    .whb-general-header .whb-col-center{
      transition:none;
    }
  }
}


/* ══ EL FONDO DE CADA PISO, A SANGRE, BIEN HECHO ══════════════════════
   POR QUE SE CAMBIO EL METODO
   La version anterior pintaba el fondo con dos sombras planas:
       box-shadow:-100vw 0 0 #fff, 100vw 0 0 #fff
   La idea era correcta pero el numero estaba mal, y se veia: la columna
   mide 1220 px y la sombra se corria 1440. La copia de la izquierda
   quedaba de x=-1338 a x=-118, o sea que NO cubria de x=0 a x=102; lo
   mismo por la derecha. Resultado: la banda blanca del menu no llegaba a
   los bordes y quedaba como un rectangulo blanco flotando dentro del
   morado. Es lo que el dueno vio y describio como "desencajado".

   Con una sombra el desplazamiento nunca puede ser mayor que el ancho
   del elemento, y ese ancho cambia con la pantalla: no hay numero fijo
   que sirva.

   El pseudo-elemento no tiene ese problema. Mide 100vw siempre y se
   centra sobre la columna, asi que cubre el ancho completo de la
   pantalla sea cual sea el ancho de la columna. Medido despues del
   cambio a 1440 px: blanco en x=6, x=50, x=720 y x=1400; morado en los
   mismos cuatro puntos a la altura del logo.

   z-index:0 en el fondo y z-index:1 en los hijos: sin eso el fondo se
   pintaria ENCIMA del logo y del menu. */
@media (min-width:1025px){
  .whb-general-header .whb-col-left,
  .whb-general-header .whb-col-center{
    position:relative;
  }
  .whb-general-header .whb-col-left::before,
  .whb-general-header .whb-col-center::before{
    content:'';
    position:absolute;
    top:0;
    bottom:0;
    left:50%;
    width:100vw;
    transform:translateX(-50%);
    z-index:0;
  }
  /* Los dos pisos van del mismo morado: el dueno pidio la cabecera entera
     morada con las letras blancas. Antes el de abajo era blanco, y por eso
     el menu tenia que ir en oscuro. */
  .whb-general-header .whb-col-left::before,
  .whb-general-header .whb-col-center::before{
    background:var(--hbx-morado,#581fb6);
  }
  .whb-general-header .whb-col-left > *,
  .whb-general-header .whb-col-center > *{
    position:relative;
    z-index:1;
  }
}

/* ══ LA FRANJA VIEJA DE WOODMART, FUERA ═══════════════════════════════
   Estas dos reglas van SIN media query, a diferencia del resto del
   archivo, y es a proposito: la franja vieja estorba en todos los
   anchos, tambien en el telefono.

   POR QUE NO ESTAN EN style.css, QUE SERIA SU SITIO NATURAL
   Ahi ya estaban, y no funcionaban. style.css se encola declarando
   'woodmart-style' como dependencia, asi que WordPress la imprime
   pegada a ella, sexta de unas cincuenta hojas, y las ~30 de Woodmart
   cargan DESPUES. Comprobado en el sitio vivo: con la regla en
   style.css, .header-banner seguia en display:flex. Esta hoja se cuelga
   solo de 'hbx-style' y se imprime de las ultimas, asi que aca si gana.

   QUE HACE CADA UNA
   1. Esconde la franja de eslogans de Woodmart ("Bienestar natural con
      respaldo tecnico", "Suplementos para cada etapa de la vida",
      "Calidad Herbomax"): suenan bien y no dicen nada, y desde que la
      cinta de sellos subio a ese mismo sitio serian dos textos
      corriendo uno sobre otro.
   2. Le quita al contenido los 40 px que Woodmart le reservaba a esa
      franja. La franja va en position:absolute, asi que ese hueco lo
      abre .header-banner-enabled .website-wrapper{margin-top:...}. Sin
      esta segunda regla queda una banda blanca vacia de 40 px entre la
      cinta de sellos y el logo. La clase repetida (.website-wrapper
      dos veces) sube la especificidad a (0,3,0) para ganarle a la de
      Woodmart, que es (0,2,0), sin usar !important. */
.header-banner.header-banner{
  display:none;
}
.header-banner-enabled .website-wrapper.website-wrapper{
  margin-top:0;
}

/* ══ LOS 40 px DE BLANCO ENTRE LA CABECERA Y EL CONTENIDO ═════════════
   Woodmart le pone margin-bottom:40px al encabezado. Con la cabecera
   antigua ese aire tenia sentido; con la nueva -- cinta de sellos, banda
   morada del logo y franja blanca del menu, todas pegadas -- ese margen
   abre una banda blanca vacia justo antes del hero y corta la pagina en
   dos. Medido en el sitio vivo a 1900 px: la banda terminaba en 211 y el
   hero empezaba en 252.

   Sin el margen, el hero arranca en 212: un pixel, que es el borde.

   Va sin media query porque el hueco esta en todos los anchos, y vale
   para todo el sitio: en la tienda y en la ficha el contenido tambien
   arrancaba 40 px mas abajo sin ninguna razon. Las tres paginas de
   referencia que dio el dueno pegan el contenido a la cabecera. */
.whb-header.whb-header{
  margin-bottom:0;
}

/* ══ AVISO PARA QUIEN TOQUE ESTA HOJA ═════════════════════════════════
   ESTA HOJA NO ES LA ULTIMA. Medido en el sitio vivo: cabecera.css es la
   numero 19 de 77, y Woodmart carga 16 hojas DESPUES -- entre ellas
   header-base.min.css, que es la 35.

   Consecuencia practica: una regla de UNA SOLA CLASE que Woodmart
   tambien declare NO GANA, aunque parezca que deberia. Paso con
   .whb-header{margin-bottom:0}: Woodmart declara
   .whb-header{margin-bottom:40px} en la hoja 35, misma especificidad,
   gana la que va despues. El hueco de 40 px seguia ahi y en el archivo
   la regla estaba escrita, correcta y sin efecto.

   POR ESO las dos reglas de arriba repiten la clase
   (.whb-header.whb-header): eso las sube a (0,2,0) y ganan sin importar
   el orden ni el !important.

   REGLA PARA EL FUTURO: en esta hoja, toda regla que pise algo de
   Woodmart necesita al menos DOS clases en el selector. Las que tienen
   dos o mas -- que son casi todas, del tipo
   .whb-general-header .whb-col-left -- estan bien y por eso funcionan.
   Las que quedan con una sola clase y solo tocan cosas nuestras
   (.hbx-mega-*) tampoco corren riesgo: Woodmart no las conoce. */

/* ══ EL ACABADO DE LA CABECERA ════════════════════════════════════════
   22/09/2026. El dueno: "se ve muy generico, dale un toque sutil pero
   bien". Se probaron cuatro versiones sobre el sitio EN VIVO, inyectando
   CSS y mirando el resultado, antes de escribir nada aca.

   Lo que se cambia, y por que cada cosa:

   1. LOS ICONOS ESTABAN EN AZUL MARINO SOBRE MORADO. No era gusto: la
      lupa y el carro heredaban el color de texto del tema, rgb(20,23,58),
      y sobre el morado de marca daban 1,8:1 de contraste. Se veian como
      manchas. Es el unico arreglo de esta tanda que es un defecto y no
      una decision de diseno.

   2. PROFUNDIDAD EN VEZ DE UNA PLANCHA PLANA. La cabecera eran 152 px de
      un solo morado liso. Ahora cada piso lleva su degradado, el de abajo
      arranca un punto mas oscuro que el de arriba, y una linea de un
      pixel los separa. Son diferencias de brillo minimas -- a proposito:
      se notan como "esto esta hecho", no como un degradado.

   3. EL ESLOGAN, A LA IZQUIERDA. Antes solo salia con la barra compacta,
      porque puesto al lado del logo lo corria del centro. La solucion es
      anclarlo al borde izquierdo con position:absolute: el logo se queda
      centrado, el eslogan llena el morado vacio de la izquierda y los
      iconos cierran por la derecha. Tres puntos de apoyo en vez de un
      logo solo en medio de una plancha.

   4. EL MENU, MAS FINO. 14 px con la letra un poco separada en vez de
      15 px apretados, y 40 px entre opciones en vez de 30. Y un subrayado
      que crece al pasar el mouse, que antes no habia ninguna senal.

   5. LA CINTA DE ARRIBA, COMO DETALLE Y NO COMO BARRA. Mayusculas de
      11 px bien espaciadas sobre un lavanda casi blanco. Antes era texto
      de 14 px sobre blanco puro: se leia como una barra de aviso pegada
      encima, no como parte de la marca.

   CONTRASTE, COMPROBADO: el eslogan es blanco al 72% sobre #5a20b9, que
   da 5,3:1. Pasa de sobra el 4,5:1 que pide un texto de ese tamano.
   ════════════════════════════════════════════════════════════════════ */

/* ── 1 · los iconos, en blanco ──────────────────────────────────────── */
.whb-general-header .whb-col-right a,
.whb-general-header .whb-col-right .wd-tools-element,
.whb-general-header .whb-col-right .wd-tools-icon{
  color:#fff;
}
.whb-general-header .whb-col-right svg,
.whb-general-header .whb-col-right svg *{
  fill:#fff;
}

/* Un circulo tenue al pasar el mouse: da el "se puede apretar" que a un
   icono suelto sobre un fondo de color le falta. */
.whb-general-header .whb-col-right .wd-tools-element{
  border-radius:50%;
  transition:background-color .18s ease;
}
.whb-general-header .whb-col-right .wd-tools-element:hover{
  background-color:rgba(255,255,255,.15);
}

/* ── 2 · profundidad ────────────────────────────────────────────────── */

/* Va en la cabecera entera para que la columna de los iconos -- que no
   tiene pseudo-elemento propio -- quede del mismo tono que el resto. */
.whb-general-header.whb-general-header{
  background:linear-gradient(180deg, #6329cc 0%, #4c16a2 100%);
  box-shadow:0 8px 30px rgba(26,9,62,.24);
}

@media (min-width:1025px){

  /* Los dos pisos, encadenados: el de arriba termina donde empieza el de
     abajo, asi que se leen como una sola pieza con volumen y no como dos
     franjas. */
  .whb-general-header .whb-col-left::before{
    background:linear-gradient(180deg, #6329cc 0%, #5a20b9 100%);
  }
  .whb-general-header .whb-col-center::before{
    background:linear-gradient(180deg, #551eb0 0%, #49159d 100%);
  }

  /* La linea que separa el logo del menu. Un pixel de blanco al 15%: se
     ve el escalon sin que aparezca una raya. Va a 100vw igual que los
     fondos, o se cortaria en el ancho de la columna. */
  .whb-general-header .whb-col-center{
    position:relative;
  }
  .whb-general-header .whb-col-center::after{
    content:'';
    position:absolute;
    top:0;
    left:50%;
    width:100vw;
    height:1px;
    transform:translateX(-50%);
    background:rgba(255,255,255,.15);
    z-index:1;
    pointer-events:none;
  }

  /* ── 3 · el menu ─────────────────────────────────────────────────── */
  .whb-general-header .whb-col-center .wd-nav{
    gap:1px 40px;
  }
  .whb-general-header .whb-col-center .wd-nav > li > a{
    position:relative;
    font-size:.875rem;
    font-weight:600;
    letter-spacing:.03em;
  }

  /* El subrayado crece desde el centro. Se anima el ancho y no un
     transform, porque tiene que crecer hacia los dos lados a la vez. */
  .whb-general-header .whb-col-center .wd-nav > li > a::after{
    content:'';
    position:absolute;
    left:50%;
    bottom:2px;
    width:0;
    height:2px;
    transform:translateX(-50%);
    border-radius:2px;
    background:var(--hbx-lavender,#c9bcf0);
    transition:width .22s ease;
  }
  .whb-general-header .whb-col-center .wd-nav > li:hover > a::after,
  .whb-general-header .whb-col-center .wd-nav > li > a:focus-visible::after{
    width:calc(100% - 10px);
  }

  /* ── 4 · el eslogan, anclado a la izquierda ──────────────────────── */
  .whb-general-header .whb-col-left{
    position:relative;
  }
  .whb-general-header .whb-col-left .hbx-lema{
    display:block;
    position:absolute;
    left:0;
    top:50%;
    transform:translateY(-50%);
    margin:0;
    padding:0;
    border:0;
    color:rgba(255,255,255,.72);
    font-size:.78125rem;
    font-weight:500;
    letter-spacing:.055em;
    line-height:1.25;
    text-transform:uppercase;
    white-space:nowrap;
    pointer-events:none;
  }

  /* Con la barra compacta manda la colocacion de siempre: ahi el logo se
     va a la esquina izquierda y un eslogan anclado al borde se le
     encimaria. Se devuelve al flujo normal. */
  html.hbx-cab-chica .whb-general-header .whb-col-left .hbx-lema{
    position:static;
    transform:none;
  }

  /* Bajo 1280 px el eslogan empujaria al menu contra los iconos, igual
     que ya pasaba con la barra compacta. Se esconde antes. */
  @media (max-width:1279px){
    .whb-general-header .whb-col-left .hbx-lema{
      display:none;
    }
  }
}

/* ── 5 · la cinta de sellos de arriba ───────────────────────────────── */
.hbx-ticker.hbx-ticker{
  background:#faf8ff;
  border-bottom:1px solid #e9e3f7;
}
.hbx-ticker.hbx-ticker span{
  font-size:.6875rem;
  font-weight:700;
  letter-spacing:.11em;
  text-transform:uppercase;
}
