/* =================================================================
   HEADER
   ================================================================= */

/* OJO: este `sticky` **no es lo que pega la barra arriba** cuando la cabecera
   va montada con Bricks, y no se puede arreglar desde aquí.

   Un elemento pegajoso no puede salirse de la caja de su padre, y el árbol que
   monta Bricks es `#brx-header` (90 px) > `div.brxe-jri-header` (90 px) >
   `.jri-site-header` (90 px): el padre mide exactamente lo mismo, así que no
   hay ni un píxel de recorrido y la barra se va con el resto de la página.

   Lo que la pega es el ajuste **nativo** de la plantilla de cabecera de Bricks
   (`headerSticky` + `headerStickyOnScroll` en `_bricks_template_settings` de la
   236012), que pone `position: sticky` en `#brx-header`, cuyo padre es el
   `<body>` y sí tiene recorrido. Ver CLAUDE.md.

   Se queda declarado porque sirve fuera de Bricks: con el shortcode dentro de
   un contenedor alto, esto es lo único que hay. */
.jri-site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  /* Crema, como la cabecera de savihome.pe. El logo de SaviHome es un PNG
     **con transparencia** y de tinta oscura (carbón y salvia), así que funde
     sobre el crema sin recuadro; en Drigo, con la cabecera en azul, el logo
     desaparecía, y en SaviWork el JPG obligaba al blanco. */
  background: var(--brand-cream);
  color: var(--near-black);
  border-bottom: 1px solid var(--gray-150);
}

.jri-header-inner {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  min-height: var(--header-h);
  padding-block: var(--space-3);
}

/* Logo y pastillas **no encogen**: entre 981 y 1300 px la fila va justa y el
   único que debe ceder es el buscador, que tiene sitio de sobra. Sin esto el
   ancho fijo del logo desbordaba su propio enlace. */
.jri-logo { flex: none; }

/* Se acota la ALTURA, no la anchura.
   El logo de JR Implementos era apaisado, así que fijar `width: 240px` daba una
   franja baja; con un logo más cuadrado, esos mismos 240 px de ancho disparan
   la altura y la cabecera crece con él. Acotando la altura, la cabecera manda
   sobre el logo y no al revés, sea cual sea la proporción del fichero. */
/* SaviHome: el logo es muy apaisado (432×90, 4,8:1). A 60 px de alto mediría
   288 de ancho y le robaría al buscador los 333 px que pide su marcador; a 44
   mide 211, casi los 208 que le daba la cabecera de Divi. */
.jri-logo img { height: 44px; width: auto; }

/* Aquí Drigo tenía un `transform: translateY(-5px)` sobre `.jri-logo img`, y
   **no se ha portado a propósito**. Aquello estaba calibrado píxel a píxel
   contra `LOGO-DRIGO-ACTUALIZADO-WEB.png`, cuyo muñeco saca las antenas por
   arriba y deja el bloque de letras 22 px por debajo del centro de la imagen.
   Con otro fichero esa misma regla **descoloca en vez de corregir**.

   Si el logo de SaviHome tampoco está ópticamente centrado, hay que volver a
   medirlo: contando las filas con tinta del PNG, no mirando la caja. Centrar
   la caja no es centrar lo que se ve. */

.jri-main-nav { flex: none; }

/* Rejilla y no flex: con columnas `1fr` en una lista que se ajusta a su contenido, todas las
   pastillas miden lo que la más ancha. Con «Categorías» y «Marcas» solas no cambia nada —las
   dos llegan al `min-width`—, pero «Nuestras tiendas» (la galería, 29/09/2026) es más larga y
   con flex salía 23 px más ancha que sus vecinas. */
.jri-main-nav .jri-nav-list { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: var(--space-3); }

/* Pastillas «Categorías» y «Marcas»: **dos enlaces y nada más**. No despliegan
   ningún panel al pasar por encima; lo que enseñaba el mega menú es justo lo
   que ya hay en el menú lateral.

   `min-width` fijo porque en el Figma las dos miden lo mismo (176 px): con solo
   relleno, «CATEGORÍAS» saldría bastante más ancha que «MARCAS» y la pareja se
   leería descuadrada. */
.jri-nav-link {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 176px;
  height: 38px;
  padding: 0 22px;
  /* Sobre la barra blanca: pastilla perfilada en azul de marca. Antes era
     blanca sobre blanca —heredado de la cabecera negra de JRI— y no se veía. */
  color: var(--brand-dark);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .3px;
  text-transform: uppercase;
  border: 1px solid var(--brand-dark);
  border-radius: var(--radius-pill);
  white-space: nowrap;
  transition: background .2s, color .2s, border-color .2s;
}

.jri-nav-link:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: var(--white); }

/* ---------------- Buscador ----------------
   Píldora **gris sobre la barra blanca**, con la lupa dentro
   del mismo gris: en el Figma no hay botón amarillo. El campo y el botón son
   transparentes; el color lo pone el contenedor, así que no hay dos fondos que
   mantener a la par. */
.jri-search {
  flex: 0 1 460px;
  margin-left: auto;
  display: flex;
  align-items: center;
  height: 48px;
  background: var(--gray-100);
  border-radius: var(--radius-pill);
  overflow: hidden;
  max-width: 460px;
}

/* `line-height: 1` y altura fija en la píldora, no relleno vertical: el campo
   hereda del tema un interlineado de 60 px y la barra salía de 64 en vez de
   48. Es el mismo tropiezo del «Enviar cotización» del checkout. */
.jri-search input {
  flex: 1;
  min-width: 0;
  align-self: stretch;
  border: none;
  outline: none;
  background: transparent;
  color: var(--near-black);
  padding: 0 4px 0 24px;
  font-size: 15px;
  line-height: 1;
  font-family: inherit;
}

/* Solo el marcador va en cursiva —es lo que marca el Figma—; lo que se escribe
   sale recto. `opacity: 1` porque Firefox lo baja por su cuenta y el gris
   quedaba casi invisible sobre el #444. */
.jri-search input::placeholder {
  color: var(--text-muted);
  font-style: italic;
  opacity: 1;
}

/* La «×» de limpiar de WebKit se pinta en oscuro: sobre el gris de la píldora
   no se ve. Se blanquea con el mismo recurso que los iconos del menú. */
.jri-search input::-webkit-search-cancel-button { filter: invert(1); opacity: .6; }

.jri-search button {
  flex: none;
  border: none;
  background: transparent;
  color: var(--text-muted-2);
  padding: 0 22px;
  display: grid;
  place-items: center;
  cursor: pointer;
}

/* Azul marino, el color que manda en la marca. (El amarillo que había aquí
   antes venía del tema heredado, no de la marca: WoodMart pintaba de #F4EC09.) */
.jri-search button:hover { color: var(--brand-charcoal); }

/* FiboSearch dentro de la misma píldora. Su formulario trae caja blanca, borde
   y un botón oscuro con flecha: se vacía todo y el color lo sigue poniendo
   `.jri-search`. Las reglas del plugin pesan (0,3,1) y (0,4,1) en `:focus`;
   estas empiezan por `.jri-site-header .jri-search--fibo` para ganarles sin
   `!important`. Mismos colores que el formulario propio de arriba. */
.jri-search--fibo .dgwt-wcas-search-wrapp {
  min-width: 0;
  width: 100%;
  max-width: none;
  margin: 0;
  line-height: 1;
}

.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp {
  display: flex;
  align-items: center;
  height: 48px;
  background: transparent;
}

.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input {
  height: 48px;
  padding: 0 64px 0 24px;
  border: none;
  border-radius: var(--radius-pill);
  background: transparent;
  box-shadow: none;
  color: var(--near-black);
  font-size: 15px;
  line-height: 1;
  font-family: inherit;
}

.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input::placeholder {
  color: var(--text-muted);
  font-style: italic;
  opacity: 1;
}

.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit {
  height: 48px;
  min-height: 48px;
  min-width: 0;
  padding: 0 22px;
  border-radius: 0;
  background: transparent;
  color: var(--text-muted-2);
}

/* La flecha que apunta al campo es un triángulo de bordes pegado al botón. */
.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit::before { display: none; }

.jri-site-header .jri-search--fibo .dgwt-wcas-search-submit svg { position: static; width: 19px; height: 19px; }

.jri-site-header .jri-search--fibo .dgwt-wcas-search-submit svg path { fill: currentColor; }

.jri-site-header .jri-search--fibo .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit:hover { color: var(--brand-charcoal); opacity: 1; }

/* La «×» de borrar y el indicador de carga comparten caja. El JS de FiboSearch
   la aparta de la lupa con un `right` en línea igual al ancho del botón, medido
   **al arrancar**. A 980 o menos el buscador arranca plegado (`display: none`),
   mide 0 y la deja encima de la lupa. Un `right` en hoja no gana al de línea,
   así que se aparta con margen, y solo en el tramo del plegado: por encima el
   JS ya pone sus 63 px y se sumarían. */
@media (max-width: 980px) {
  .jri-site-header .jri-search--fibo .dgwt-wcas-preloader { margin-right: 63px; }
}

/* Las sugerencias cuelgan del `<body>`, fuera de la cabecera: solo la letra. */
.dgwt-wcas-suggestions-wrapp { font-family: inherit; }

/* La lupa que abre el buscador en móvil. En escritorio el campo se ve entero,
   así que sobra. */
.jri-search-toggle { display: none; }

.jri-search-btn { display: none; }

/* ---------------- Acciones (lista de cotización) ---------------- */
.jri-header-actions { display: flex; align-items: center; gap: var(--space-5); }

.jri-cart-link {
  position: relative;
  flex: none;
  color: var(--near-black);
  display: grid;
  place-items: center;
  transition: color .2s;
}

.jri-cart-link:hover { color: var(--brand-dark); }

/* Círculo **blanco con el número en negro**, abajo a la derecha y montado sobre
   el portapapeles, como en el Figma. Antes era un punto amarillo de 16 px
   arriba a la derecha.

   El aro oscuro que lo separa del icono va con `box-shadow` y no con `border`:
   así el círculo mide lo que dice `width` y el hueco no depende de restarle el
   borde. El color del aro es el fondo de la barra. */
.jri-cart-count {
  position: absolute;
  right: -14px;
  bottom: -10px;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: var(--brand-sage);
  color: var(--near-black);
  box-shadow: 0 0 0 3px var(--white);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  display: grid;
  place-items: center;
}

/* Hamburguesa (a la izquierda del logo, visible en escritorio y en móvil) */
.jri-hamburger {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  cursor: pointer;
  padding: 8px 0;
  flex: none;
  /* Es un `<label>`: el margen que le pone Bricks lo anula `base.css`, y sin
     eso el icono queda 2,5 px por encima del logo. */
}

/* Azul de marca. Era blanca, heredado de la cabecera negra de JR Implementos,
   y sobre una cabecera blanca queda invisible. */
.jri-hamburger span { width: 27px; height: 3px; background: var(--brand-dark); border-radius: 2px; transition: .3s; }

.jri-hamburger:hover span { background: var(--brand-sage-dark); }

/* =================================================================
   MENÚ LATERAL (drawer) — abre con la hamburguesa (CSS-only)
   ================================================================= */
.jri-drawer-toggle { display: none; }

.jri-drawer-overlay {
  position: fixed;
  inset: 0;
  z-index: 900;
  background: rgba(0,0,0,.5);
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s, visibility .3s;
}

.jri-drawer {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 950;
  width: 360px;
  max-width: 88vw;
  height: 100%;
  display: flex;
  flex-direction: column;
  /* Blanco, como la cabecera: el panel se lee como su prolongación. En azul
     el logo —que también es azul— se camuflaba contra el fondo. */
  background: var(--white);
  color: var(--near-black);
  box-shadow: 2px 0 24px rgba(0,0,0,.35);
  transform: translateX(-100%);
  transition: transform .3s ease;
  overflow-y: auto;
  overscroll-behavior: contain;
  /* Scrollbar sutil (Firefox) */
  scrollbar-width: thin;
  scrollbar-color: var(--gray-300) transparent;
}

/* Scrollbar sutil (Chromium/WebKit) */
.jri-drawer::-webkit-scrollbar { width: 6px; }

.jri-drawer::-webkit-scrollbar-track { background: transparent; }

.jri-drawer::-webkit-scrollbar-thumb { background: var(--gray-300); border-radius: 10px; }

.jri-drawer::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }

.jri-drawer-toggle:checked ~ .jri-drawer-overlay { opacity: 1; visibility: visible; }

.jri-drawer-toggle:checked ~ .jri-drawer { transform: translateX(0); }

.jri-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-5);
  border-bottom: 1px solid var(--gray-150);
}

.jri-drawer-logo { width: 170px; height: auto; }

.jri-drawer-close { cursor: pointer; font-size: 22px; line-height: 1; color: var(--near-black); padding: 4px 8px; }

.jri-drawer-close:hover { color: var(--brand-sage-dark); }

.jri-drawer-nav { padding: var(--space-2) var(--space-5) var(--space-7); }

.jri-drawer-group { border-bottom: 1px solid var(--gray-150); }

/* «Nuestras tiendas» (la galería de fotos): un enlace suelto, sin desplegable, con el
   mismo rótulo que «Categorías» y «Marcas» para que el menú se lea como una sola lista.
   Solo existe cuando la galería tiene fotos. */
.jri-drawer-link {
  display: block;
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--gray-150);
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .3px;
  color: var(--near-black);
}

.jri-drawer-link:hover { color: var(--brand-sage-dark); text-decoration: none; }

.jri-drawer-group > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) 0;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .3px;
  color: var(--near-black);
}

.jri-drawer-group > summary::-webkit-details-marker { display: none; }

/* La flecha va en blanco, como el rótulo al que acompaña: en amarillo se leía
   como un acento y competía con él. */
.jri-drawer-group > summary::after { content: "⌄"; font-size: 15px; line-height: 1; color: var(--brand-dark); transition: transform .2s; }

.jri-drawer-group[open] > summary::after { transform: rotate(180deg); }

.jri-drawer-section { padding: var(--space-4) 0; border-bottom: 1px solid var(--gray-150); }

.jri-drawer-section h4 { margin-bottom: var(--space-3); font-size: 14px; font-weight: 700; text-transform: uppercase; color: var(--brand-dark); }

.jri-drawer-group ul, .jri-drawer-section ul {
  list-style: none;
  margin: 0;
  padding: 0 0 var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.jri-drawer-section ul { padding-bottom: 0; }

.jri-drawer-group a, .jri-drawer-section a { color: var(--near-black); font-size: 14px; }

/* «Teléfonos:» en blanco y en negrita, el número en gris suave. */
.jri-drawer-rotulo { font-weight: 700; color: var(--near-black); }
.jri-drawer-valor { color: var(--text-muted-2); }
.jri-drawer-section a:hover .jri-drawer-rotulo,
.jri-drawer-section a:hover .jri-drawer-valor { color: var(--brand-sage-dark); }
.jri-drawer-section ul { gap: var(--space-3); }

.jri-drawer-group a:hover, .jri-drawer-section a:hover { color: var(--brand-sage-dark); }

/* Botón ancho con el icono de cuadros, del mismo gris que las pastillas de
   arriba. Antes era un enlace amarillo suelto. */
.jri-drawer-all {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  width: 100%;
  margin: 2px 0 var(--space-4);
  padding: 14px var(--space-4);
  border-radius: var(--radius-lg);
  background: var(--gray-100);
  font-size: 14px;
  font-weight: 500;
  color: var(--brand-dark);
  transition: background .15s;
}

.jri-drawer-all:hover { background: var(--gray-150); color: var(--brand-dark); text-decoration: none; }

.jri-drawer-all-ico { flex: none; }

.jri-drawer-note { margin: var(--space-3) 0 0; font-size: 12px; color: var(--text-muted); }

/* Tiles de Categorías / Marcas dentro del drawer (cuadros con imagen, estilo catálogo) */
.jri-drawer-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: var(--space-2) 0 var(--space-3); }

/* Las pastillas de categoría van sobre el mismo gris del panel, un punto más
   claras, con el icono y el nombre en blanco. Las de marca **no**: sus logos
   son a color y necesitan fondo claro (más abajo). */
.jri-drawer-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;
  padding: 5px;
  background: var(--gray-100);
  border-radius: var(--radius-md);
  transition: transform .15s, box-shadow .15s;
}

.jri-drawer-tiles--cats .jri-drawer-tile {
  /* Sobre el #444 del panel da ≈ #575757, que es el gris del diseño. Se pone
     en blanco translúcido y no en un hex para que siga al fondo si cambia. */
  background: var(--gray-100);
  padding: 10px;
}

.jri-drawer-tiles--cats .jri-drawer-tile:hover { background: var(--gray-150); }

/* Pastilla **sin miniatura**. Aquí importa más que en la portada: esta baldosa
   normalmente no lleva texto —el nombre va dibujado dentro del PNG— así que sin
   imagen se quedaría **completamente vacía**, un cuadrado gris que se puede
   pulsar y no dice nada. Con el nombre escrito sigue siendo un enlace legible.
   La plantilla se encarga de escribirlo; aquí solo se le da forma. */
.jri-drawer-tiles--cats .jri-drawer-tile--sin-icono {
  padding: 6px;
  text-align: center;
}
.jri-drawer-tile--sin-icono span {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--near-black);
  overflow-wrap: anywhere;
  hyphens: auto;
}

/* Los iconos son siluetas **#444444 sobre transparente** —el mismo gris del
   panel, así que sin esto se verían casi negros sobre gris—. `brightness(0)`
   las aplasta a negro puro y `invert(1)` las pasa a blanco, respetando el
   canal alfa. Es la vía que sirve para todo el juego sin retocar 13 ficheros.

   La imagen ocupa la pastilla entera porque **el nombre viene dentro del
   propio PNG**, dibujado bajo el pictograma. */
.jri-drawer-tiles--cats .jri-drawer-tile img {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: contain;
  /* Sin filtro. Ese `brightness(0) invert(1)` pintaba el icono de **blanco
     puro** para que se viera sobre el panel azul de JR Implementos; sobre el
     panel blanco lo dejaba invisible. Y aquí no hace falta: las miniaturas de
     categoría, cuando las haya, serán fotos a color y no iconos monocromos. */
  filter: none;
}

.jri-drawer-tile:hover { transform: translateY(-2px); box-shadow: 0 2px 10px rgba(3, 76, 144, .22); }

.jri-drawer-tile img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }

/* ---------------- Pastillas de marca ----------------
   Mismo gris que las de categoría, pero con el logo en blanco y el nombre
   escrito debajo (los logos de marca no lo llevan dentro).

   **Los logos no se pueden invertir sin más:** 24 de los 29 son JPG, o sea con
   fondo blanco opaco, y `brightness(0) invert(1)` dejaría el cuadro entero en
   blanco. La vía que funciona es pasarlos a gris, invertirlos —el fondo blanco
   se vuelve negro y el logo, claro— y mezclarlos en `screen`, que hace
   desaparecer el negro sobre el gris de la pastilla. El punto de brillo extra
   es para los logos de gris medio, que si no salen apagados. */
.jri-drawer-tiles--brands .jri-drawer-tile {
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  aspect-ratio: auto;
  min-height: 96px;
  padding: 12px 8px;
  background: var(--gray-100);
  isolation: isolate;
  text-align: center;
}

.jri-drawer-tiles--brands .jri-drawer-tile:hover { background: var(--gray-150); }

.jri-drawer-tiles--brands .jri-drawer-tile-ico {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 40px;
}

.jri-drawer-tiles--brands .jri-drawer-tile img {
  max-height: 40px;
  max-width: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

/* Solo las marcas **sin** logo blanco pasan por la conversión. Las que lo
   tienen se pintan tal cual, que siempre sale mejor que cualquier filtro. */
.jri-drawer-tile--convertir img {
  /* Sin conversión. Ese `invert` + `screen` servía para que un logo oscuro se
     leyera sobre el panel azul de JR Implementos; sobre el panel blanco de
     sobre fondo claro lavaba los logos hasta dejarlos casi invisibles. */
  filter: none;
  mix-blend-mode: normal;
}

.jri-drawer-tile-nombre {
  display: block;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.25;
  color: var(--near-black);
}

/* Te asesoramos: caja WhatsApp (borde punteado) + accesos tipo tarjeta */
.jri-drawer-wa {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: 0 0 var(--space-3);
  padding: 11px 16px;
  border: 1px dashed var(--gray-300);
  border-radius: var(--radius-lg);
  font-size: 13px;
  color: var(--text-muted-2);
}

.jri-drawer-wa-ico {
  flex: none;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--brand-dark);
  color: var(--brand-dark);
}

/* `minmax(0, 1fr)` y no `1fr` a secas.
   `1fr` equivale a `minmax(auto, 1fr)`: si el contenido de una celda no cabe,
   la columna crece por encima de su parte y **el grid desborda su contenedor**.
   Aquí pasaba con «Libro de Reclamaciones»: las tres columnas sumaban 393 px
   dentro de un panel de 320, y la tercera se salía 53 px por la derecha.
   Con el mínimo en 0 las tres columnas se reparten a partes iguales y el texto
   parte de línea. */
.jri-drawer-help { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
/* `hyphens` y no `overflow-wrap: anywhere`: «anywhere» parte por donde caiga
   y dejaba «COTIZACIÓ / N» o «FRECUENT / ES». Con guionado el navegador corta
   por sílaba y marca el corte —«RECLAMA-CIONES»—, que es lo que se espera leer.
   Funciona porque WordPress declara `lang="es-ES"` en el <html>.
   `break-word` queda de red por si algún rótulo futuro no admite guionado. */
.jri-drawer-help-item {
  padding-inline: var(--space-1);
  hyphens: auto;
  overflow-wrap: break-word;
}

.jri-drawer-help-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-5) var(--space-2);
  /* Mismo gris que las pastillas de categoría. Antes era negro translúcido,
     que sobre el #444 salía bastante más oscuro que en el diseño. */
  background: var(--gray-100);
  border-radius: var(--radius-lg);
  text-align: center;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .3px;
  line-height: 1.25;
  color: var(--brand-dark);
  transition: background .2s, color .2s;
}

.jri-drawer-help-item:hover { background: var(--brand-dark); color: var(--white); }

.jri-drawer-help-ico { color: var(--brand-dark); }

.jri-drawer-help-item:hover .jri-drawer-help-ico { color: var(--brand-dark); }

/* Contacto: redes sociales */
.jri-drawer-social { display: flex; gap: var(--space-3); margin-top: var(--space-4); }

/* Círculo **blanco relleno** con el glifo recortado en el gris del panel, que
   es como está en el diseño. Antes era un círculo transparente con un filete
   blanco: se perdía sobre el fondo oscuro. */
.jri-drawer-social a {
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 0;
  display: grid;
  place-items: center;
  background: var(--brand-dark);
  color: var(--white);
  transition: background .2s, color .2s;
}

.jri-drawer-social a:hover { background: var(--brand-sage); color: var(--near-black); }

.jri-drawer-social svg { width: 18px; height: 18px; }

/* =================================================================
   MÓVIL Y TABLET

   La cabecera **nunca ha tenido reglas responsivas que se aplicaran**: las del
   diseño estático se escribieron sin el prefijo (`.header-inner`, `.logo`,
   `.search`, `.main-nav`), así que no alcanzaban a nada. De ahí que hasta
   ahora el buscador de 460 px y las dos pastillas siguieran en la fila en una
   pantalla de 390.
   ================================================================= */
/* Entre 981 y 1200 la fila va justa y el único que cede es el buscador: a 981
   se quedaba en 166 px, con el marcador cortado a media palabra. Se recorta
   antes lo que no se lee —el aire entre piezas, el relleno de las pastillas y
   el logo— y el campo recupera unos 150. */
@media (max-width: 1200px) {
  .jri-header-inner { gap: var(--space-4); }

  .jri-logo img { height: 40px; } /* SaviHome: 192 px de ancho */

  .jri-nav-link { min-width: 140px; padding: 0 16px; }
}

@media (max-width: 980px) {
  /* `--header-h` baja a 64 px en `base.css`: lo comparten el panel del catálogo
     y la columna del total, así que el token no puede vivir aquí. */

  /* `wrap` para que el buscador pueda bajar a una segunda línea al abrirlo. */
  .jri-header-inner { flex-wrap: wrap; gap: var(--space-4); }

  /* Las dos pastillas se van: sus destinos están en el menú lateral. */
  .jri-main-nav { display: none; }

  .jri-logo img { height: 34px; } /* SaviHome: 163 px; a 390 caben hamburguesa, logo y acciones */

  .jri-hamburger span { width: 22px; height: 2.5px; }

  .jri-hamburger { gap: 4px; }

  .jri-header-actions { margin-left: auto; gap: var(--space-5); }

  .jri-search-btn {
    display: grid;
    place-items: center;
    padding: 4px;
    cursor: pointer;
    color: var(--near-black);
    transition: color .2s;
  }

  .jri-search-btn:hover { color: var(--brand-dark); }

  /* El campo se pliega tras la lupa y ocupa una fila entera al abrirse.
     `order` lo manda al final aunque en el marcado vaya antes de las acciones.

     Se oculta con `display: none` y no fuera de la vista: si no, quedaría un
     campo de formulario enfocable con el tabulador que no se ve. */
  .jri-search {
    order: 5;
    flex: 1 0 100%;
    max-width: none;
    margin: 0 0 var(--space-3);
    min-height: 44px;
    display: none;
  }

  .jri-search-toggle:checked ~ .jri-search { display: flex; }

  /* El contador **sobresale** del icono, y en móvil el margen del contenedor es
     de 16 px: sin recolocar, el círculo se pegaba al borde de la pantalla. Se
     desplaza el icono lo que sobresale el círculo, así que lo que queda a ras
     del margen es el grupo entero, que es como está en el Figma. */
  .jri-cart-link { margin-right: 14px; }

  .jri-cart-count { box-shadow: 0 0 0 2px var(--white); }
}

@media (max-width: 500px) {
  .jri-header-inner { gap: var(--space-3); }

  /* Por debajo de ~348 px el logo a 160 no cabe junto a la hamburguesa, la lupa
     y el carrito, y la fila se partía en dos —la cabecera pasaba de 64 a 106 px
     en una pantalla de 320—. Con `min()` encoge **solo ahí**: a 360 y a 390 se
     queda en los 160 del Figma. */
  .jri-logo img { height: 44px; }
}

/* -----------------------------------------------------------------
   Tercera pastilla, «Nuestras tiendas» (galería de fotos, 29/09/2026)

   Solo existe cuando la galería tiene fotos. Con ella la fila pierde unos
   200 px y el único que cede es el buscador, que necesita 333 px para que
   su marcador («¿Qué producto estás buscando?») se lea entero: en saviwork.com, con tres pastillas, el buscador bajaba de los 333 px que pide su marcador
   entre 1201 y 1366.
   Medido con capturas por CDP. Por tramos cerrados —sin restaurar valores,
   para no pisar las reglas de móvil—:
   - 1201–1366 px: las pastillas se compactan (cuerpo 13, menos aire);
   - hasta 1200 px: la tercera sale de la barra. Su destino sigue en el menú
     lateral, que se abre con la hamburguesa también en escritorio.
   Todo cuelga de `.jri-nav-item--galeria`: sin fotos, la cabecera es
   exactamente la de siempre.
   ----------------------------------------------------------------- */
@media (min-width: 1201px) and (max-width: 1366px) {
  .jri-main-nav:has(.jri-nav-item--galeria) .jri-nav-link {
    min-width: 0;
    padding: 0 14px;
    font-size: 13px;
    letter-spacing: 0;
  }
}

@media (max-width: 1200px) {
  .jri-main-nav .jri-nav-item--galeria { display: none; }
}
