/*
 * AutoSandoval — capa de tienda (WooCommerce).
 *
 * Se carga SIEMPRE y después de:
 *   1. dist/css/style.css del tema padre `automize`,
 *   2. dist/css/woocommerce.css del tema padre,
 *   3. style.css del tema hijo (tokens y utilidades de accesibilidad).
 *
 * Alcance:
 *   - Cabecera global (blanca + acento amarillo/naranja del logo).
 *   - Botones, precios, avisos, formularios, paginación, migas y mini-carrito
 *     de WooCommerce, con los tokens de docs/propuesta-inicial/diseno/sistema-diseno.md.
 *
 * Reglas de convivencia:
 *   - No se modifica el tema padre ni los plugins: todo va por CSS del hijo.
 *   - Se usan los tokens semánticos de esta hoja; no hay valores mágicos sueltos.
 *   - Sin `!important` salvo: (a) la regla migrada del CSS adicional del padre,
 *     que ya lo traía, (b) `prefers-reduced-motion`, por accesibilidad, y
 *     (c) el color del CTA `#place_order`, que debe ganarle a la utilidad
 *     `!text-white` del tema padre (ver §4.1).
 */

/* --------------------------------------------------------------------------
 * 1. Tokens semánticos de la capa de tienda
 * ------------------------------------------------------------------------ */

:root {
  /* Cabecera (paleta-oscura §4.2). Un escalón sobre el lienzo; el filete rojo
   * encima del degradado del logo lo dibuja oscuro.css (§6, patrón 6). */
  --as-header-bg: #001e4a;
  --as-header-text: #f4f7fc;          /* menú claro: 15.22:1 */
  --as-header-link-hover: #8cc9f0;    /* hover azul claro */
  --as-header-link-active: #f8b018;   /* ítem activo dorado + subrayado rojo */
  --as-header-border: #1e4273;
  --as-header-accent: linear-gradient(90deg, #ffd200 0%, #e8862b 100%); /* ⚠️ sin cambio: degradado del logo */

  /* Llamados a la acción */
  --as-cta-bg: #ffd200;               /* ⚠️ sin cambio: color de conversión, AAA 12.58:1 */
  --as-cta-bg-hover: #e6bd00;         /* ⚠️ sin cambio: 10.13:1 */
  --as-cta-text: #001530;             /* navy del lienzo: mantiene AAA y une la paleta */
  --as-cta-border: #d8950c;           /* borde de apoyo del CTA */

  /* Enlaces y precios */
  --as-link: #8cc9f0;                 /* 10.2:1 sobre fondo */
  --as-link-hover: #ffce4a;           /* el hover se ilumina en dorado claro: 12.33:1 */
  --as-price: #f4f7fc;                /* precio vigente */
  --as-price-sale: #f8b018;           /* ajuste del cliente: dorado en vez de #FFC061 (7.56:1) */
  --as-price-old: #9db0c9;            /* precio anterior tachado: 6.39:1 */

  /* Etiquetas y estados */
  --as-badge-bg: #ffd200;             /* ⚠️ sin cambio: el badge de oferta es el mayor contraste */
  --as-badge-text: #001530;           /* AAA sobre el badge */
  --as-border-input: #54779f;         /* ≥3:1 sobre campo y tarjeta */
  --as-placeholder: #9db0c9;          /* placeholder legible: 8.38:1 */
  --as-disabled-bg: #10233d;          /* superficie deshabilitada */
  --as-disabled-text: #8a9ab2;        /* 5.52:1 (WCAG exime los inactivos) */
  --as-disabled-border: #2a4160;      /* borde deshabilitado */
}

/* Reversión del modo oscuro: los mismos 22 tokens con los valores claros
 * anteriores, solo cuando el tema no añade `as-modo-oscuro` al <html>
 * (ver README, «Cómo revertir»). Nada de esto aplica con el modo encendido. */
html:not(.as-modo-oscuro) {
  --as-header-bg: #ffffff;
  --as-header-text: #111417;
  --as-header-link-hover: #0a6e9e;
  --as-header-link-active: #0b4a5a;
  --as-header-border: #d7dce3;

  --as-cta-text: #111417;
  --as-cta-border: #a85a0d;

  --as-link: #0a6e9e;
  --as-link-hover: #0b4a5a;
  --as-price: #111417;
  --as-price-sale: #a85a0d;
  --as-price-old: #5b6570;

  --as-badge-text: #111417;
  --as-border-input: #8a94a0;
  --as-placeholder: #5b6570;
  --as-disabled-bg: #f5f7fa;
  --as-disabled-text: #5b6570;
  --as-disabled-border: #c9d0d9;
}

/* --------------------------------------------------------------------------
 * 2. Cabecera: fondo blanco, borde inferior y acento del logo
 * ------------------------------------------------------------------------ */

.rbb-default-header {
  position: relative;
  background-color: var(--as-header-bg);
  border-bottom: 1px solid var(--as-header-border);
}

/* Acento de 2 px con el degradado amarillo -> naranja del logo. */
.rbb-default-header::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 30;
  height: 2px;
  background: var(--as-header-accent);
  pointer-events: none;
}

/* Desplegables del menú principal.
 *
 * El panel se dibuja dentro de la cabecera y el filete dorado (`::after`, z 30)
 * —más el rojo del modo oscuro (`::before`, z 31)— lo atravesaba: la primera
 * opción quedaba partida y era ilegible.
 *
 * No bastaba con el `z-index: 99999` del propio panel: `#desktop_menu` es un
 * ítem flexible con `z-20` y, por tanto, abre un contexto de apilamiento que
 * aplana todo su contenido por debajo de los filetes. Se eleva ese contexto por
 * encima de ambos. El valor 40 deja el desplegable de categorías de la búsqueda
 * (z 50) por delante, como estaba.
 *
 * No se toca `position` a propósito: el panel se posiciona con `top:100%` contra
 * el contenedor relativo de la primera fila y debe seguir colgando del ítem,
 * tanto con la cabecera completa como con la fija. Tampoco se desplaza el panel:
 * mientras está abierto sigue cubriendo la fila de categorías y búsqueda, igual
 * que en el tema padre; este cambio solo lo pone por delante del filete. */
.rbb-default-header #desktop_menu {
  z-index: 40;
}

/* Cabecera fija: mismo fondo oscuro para mantener el contraste del menú
 * (paleta-oscura §7.3: no cambia de color al hacer scroll, solo suma sombra). */
.rbb-default-header .rbb-header-sticky.header-stuck {
  background-color: var(--as-header-bg);
  box-shadow: var(--shadow-md);
}

.rbb-default-header .rbb-header-sticky.header-stuck > div {
  background-color: var(--as-header-bg);
}

/* Logo oficial: sin filtros y con el ancho de los theme_mods. */
.rbb-default-header #rbb-branding a img.logo {
  width: auto;
  max-width: 130px;
  height: auto;
  filter: none;
}

.rbb-default-header #rbb-branding a img.sticky-logo {
  width: auto;
  max-width: 100px;
  height: auto;
  filter: none;
}

/* Cuando el logo normal y el sticky son el mismo archivo, el tema padre sólo
 * imprime `img.logo`. Sin esta regla, `.header-stuck` lo ocultaría y la
 * cabecera fija se quedaría sin logo. */
.rbb-default-header .rbb-header-sticky.header-stuck #rbb-branding a img.logo {
  display: block;
  visibility: visible;
}

.rbb-default-header .rbb-header-sticky.header-stuck #rbb-branding a img.logo:only-child {
  max-width: 100px;
}

/* Menú principal: grafito sobre blanco. */
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1 > a {
  color: var(--as-header-text);
}

/* Hover: azul de marca con subrayado interior amarillo. */
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1 > a:hover,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1:hover > a {
  color: var(--as-header-link-hover);
}

.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1 > a .menu-item-title {
  position: relative;
}

.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1 > a .menu-item-title::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: -0.4em;
  left: 0;
  display: block;
  height: 3px;
  background: var(--as-cta-bg);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.2s ease;
}

.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1 > a:hover .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1:hover > a .menu-item-title::after {
  transform: scaleX(1);
}

/* Activo: teal oscuro con barra amarilla permanente. */
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.active > a,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.active-parent > a,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-item > a,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current_page_item > a,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-parent > a,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-ancestor > a {
  color: var(--as-header-link-active);
}

.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.active > a .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.active-parent > a .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-item > a .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current_page_item > a .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-parent > a .menu-item-title::after,
.rbb-default-header .rbb-main-navigation ul.menu-container li.level-1.current-menu-ancestor > a .menu-item-title::after {
  transform: scaleX(1);
}

/* Iconos de cabecera en grafito; hover en azul de marca. */
.rbb-default-header .rbb-account-icon,
.rbb-default-header .cart-icon,
.rbb-default-header .wishlist-icon,
.rbb-default-header .search-icon {
  color: var(--as-header-text);
}

.rbb-default-header .rbb-account:hover .rbb-account-icon,
.rbb-default-header .rbb-mini-cart .mini-cart-icon:hover .cart-icon,
.rbb-default-header .rbb-wishlist a:hover .wishlist-icon {
  color: var(--as-header-link-hover);
}

/* Contadores: carrito amarillo con texto navy; wishlist azul de acción con texto
 * claro (paleta-oscura §8.1: #2268B4 con blanco = 5.66:1). Antes el contador de
 * wishlist usaba el acento de la cabecera, que en oscuro es dorado: blanco sobre
 * dorado habría dado 2.4:1. */
.rbb-default-header .cart-count {
  background-color: var(--as-cta-bg);
  color: var(--as-cta-text);
  font-weight: 700;
}

.rbb-default-header .wishlist-count {
  background-color: var(--as-action);
  color: var(--as-text);
  font-weight: 700;
}

/* Buscador: la etiqueta visible («Escribe tu búsqueda») venía en #a1a1a1 sobre
 * blanco (2.55:1). Se usa el token de placeholder, 8.38:1 sobre el campo oscuro.
 * El botón de envío es azul de acción, así que su icono va en tinta clara
 * (5.66:1) en vez de grafito. */
.rbb-product-search .rbb-search-form .input-group label,
.rbb-product-search .rbb-search-form .input-search::placeholder {
  color: var(--as-placeholder);
}

.rbb-product-search .rbb-search-form .btn-search .search-icon {
  color: var(--as-text);
}

/* --------------------------------------------------------------------------
 * 3. Enlaces de contenido
 *
 * Se limita a los contenedores de contenido de WooCommerce para no subrayar
 * los enlaces de la cabecera (el <body> de la tienda también lleva la clase
 * `woocommerce` y un selector global alcanzaría el menú principal).
 * ------------------------------------------------------------------------ */

:is(
  .rbb-product-catalog,
  .product-summary,
  .cart-template,
  .checkout-template,
  .woocommerce-MyAccount-content
) a:not(.button):not(.remove),
.woocommerce .woocommerce-breadcrumb a {
  color: var(--as-link);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

:is(
  .rbb-product-catalog,
  .product-summary,
  .cart-template,
  .checkout-template,
  .woocommerce-MyAccount-content
) a:not(.button):not(.remove):hover,
.woocommerce .woocommerce-breadcrumb a:hover {
  color: var(--as-link-hover);
}

/* --------------------------------------------------------------------------
 * 4. Llamados a la acción
 *
 * Orden de cascada: primero el CTA secundario y después el primario, para que
 * en empates de especificidad gane el primario.
 * ------------------------------------------------------------------------ */

/* CTA secundario: transparente con contorno neutro y texto claro. El rojo NO es
 * color de acción (paleta-oscura §6.4); el acento dorado aparece al interactuar
 * (§8.3). Antes el hover rellenaba en el color de cabecera, que en oscuro es
 * dorado: texto blanco sobre dorado habría quedado en 2.4:1. */
.woocommerce .button,
.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
:is(body.woocommerce, body.woocommerce-page) .button,
:is(body.woocommerce, body.woocommerce-page) button.button,
:is(body.woocommerce, body.woocommerce-page) a.button,
:is(body.woocommerce, body.woocommerce-page) input.button,
:is(body.woocommerce, body.woocommerce-page) .wc-block-components-button.is-secondary,
.wc-block-components-button.is-secondary,
body.woocommerce-cart .woocommerce .return-to-shop .button,
.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.button,
.rbb-mini-cart-canvas .shopping a.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 48px;
  padding: 0.75rem 1.25rem;
  border: 2px solid var(--as-border-strong);
  border-radius: 999px;
  background-color: transparent;
  background-image: none;
  color: var(--as-text);
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  text-shadow: none;
  box-shadow: none;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.woocommerce .button:hover,
.woocommerce button.button:hover,
.woocommerce a.button:hover,
.woocommerce input.button:hover,
:is(body.woocommerce, body.woocommerce-page) .button:hover,
:is(body.woocommerce, body.woocommerce-page) button.button:hover,
:is(body.woocommerce, body.woocommerce-page) a.button:hover,
:is(body.woocommerce, body.woocommerce-page) input.button:hover,
:is(body.woocommerce, body.woocommerce-page) .wc-block-components-button.is-secondary:hover,
.wc-block-components-button.is-secondary:hover,
body.woocommerce-cart .woocommerce .return-to-shop .button:hover,
.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.button:hover,
.rbb-mini-cart-canvas .shopping a.button:hover {
  border-color: var(--as-gold);
  background-color: transparent;
  color: var(--as-gold);
}

:is(body.woocommerce, body.woocommerce-page) .button:focus-visible,
:is(body.woocommerce, body.woocommerce-page) button.button:focus-visible,
:is(body.woocommerce, body.woocommerce-page) a.button:focus-visible,
:is(body.woocommerce, body.woocommerce-page) input.button:focus-visible,
.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.button:focus-visible,
.rbb-mini-cart-canvas .shopping a.button:focus-visible,
.as-btn-primary:focus-visible {
  outline: var(--as-focus-ring);
  outline-offset: var(--as-focus-offset);
  box-shadow: var(--as-focus-halo);
}

/* CTA principal: amarillo del logo con borde naranja y texto grafito. */
.woocommerce .single_add_to_cart_button,
.woocommerce .add_to_cart_button,
.woocommerce .checkout-button,
.woocommerce #place_order,
.woocommerce .button.alt,
:is(body.woocommerce, body.woocommerce-page) .single_add_to_cart_button,
body .quick-view-product-wrap .rbb-modal-body .content_product_detail form .single_add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) form.cart .single_add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) .product-summary form .single_add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) .add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) .product_button .add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) ul.products li.product .add_to_cart_button,
:is(body.woocommerce, body.woocommerce-page) .checkout-button,
:is(body.woocommerce, body.woocommerce-page) .wc-proceed-to-checkout .checkout-button,
:is(body.woocommerce, body.woocommerce-page) #place_order,
:is(body.woocommerce, body.woocommerce-page) a.button.alt,
:is(body.woocommerce, body.woocommerce-page) button.button.alt,
:is(body.woocommerce, body.woocommerce-page) input.button.alt,
:is(body.woocommerce, body.woocommerce-page) .wc-block-components-button:not(.is-secondary),
.wc-block-components-button:not(.is-secondary),
/* El home no tiene la clase `.woocommerce` en <body>: se ancla a la tarjeta. */
.rbb_woo_products .item-product .product_button .button.add_to_cart_button,
.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.checkout,
.rbb-mini-cart-canvas .shopping a.button,
.as-btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 48px;
  padding: 0.75rem 1.5rem;
  border: 1px solid var(--as-cta-border);
  border-radius: 999px;
  background-color: var(--as-cta-bg);
  background-image: none;
  color: var(--as-cta-text);
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  text-shadow: none;
  box-shadow: none;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

/* Hover del CTA principal. Las variantes `body.woocommerce.single-product` y
 * del quick-view igualan o superan la especificidad con la que el tema padre
 * pinta el hover en teal (`.single-product .product-summary form ...`). */
.woocommerce .single_add_to_cart_button:hover,
.woocommerce .add_to_cart_button:hover,
.woocommerce .checkout-button:hover,
.woocommerce #place_order:hover,
.woocommerce .button.alt:hover,
:is(body.woocommerce, body.woocommerce-page) .single_add_to_cart_button:hover,
body.woocommerce.single-product .product-summary form .single_add_to_cart_button:hover:not(.disabled),
body .quick-view-product-wrap .rbb-modal-body .content_product_detail form .single_add_to_cart_button:hover:not(.disabled),
:is(body.woocommerce, body.woocommerce-page) form.cart .single_add_to_cart_button:hover,
:is(body.woocommerce, body.woocommerce-page) .product-summary form .single_add_to_cart_button:hover,
:is(body.woocommerce, body.woocommerce-page) .add_to_cart_button:hover,
:is(body.woocommerce, body.woocommerce-page) .product_button .add_to_cart_button:hover,
:is(body.woocommerce, body.woocommerce-page) ul.products li.product .add_to_cart_button:hover,
:is(body.woocommerce, body.woocommerce-page) .checkout-button:hover,
:is(body.woocommerce, body.woocommerce-page) .wc-proceed-to-checkout .checkout-button:hover,
:is(body.woocommerce, body.woocommerce-page) #place_order:hover,
:is(body.woocommerce, body.woocommerce-page) a.button.alt:hover,
:is(body.woocommerce, body.woocommerce-page) button.button.alt:hover,
:is(body.woocommerce, body.woocommerce-page) input.button.alt:hover,
:is(body.woocommerce, body.woocommerce-page) .wc-block-components-button:not(.is-secondary):hover,
.wc-block-components-button:not(.is-secondary):hover,
.rbb_woo_products .item-product .product_button .button.add_to_cart_button:hover,
.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.checkout:hover,
.rbb-mini-cart-canvas .shopping a.button:hover,
.as-btn-primary:hover {
  border-color: var(--as-cta-border);
  background-color: var(--as-cta-bg-hover);
  color: var(--as-cta-text);
}

/* --------------------------------------------------------------------------
 * 4.1 Contraste del texto en los CTA de compra
 * --------------------------------------------------------------------------
 * El tema padre envuelve la etiqueta en `<span class="text-white">` y en el
 * checkout añade la utilidad `!text-white` (`color: #fff !important`). El
 * resultado era texto blanco sobre el CTA amarillo: 1.45:1, muy por debajo de
 * AA. Se fuerza el grafito del sistema, que da 12.8:1 sobre `--as-cta-bg`.
 */
.woocommerce .wc-proceed-to-checkout .checkout-button span,
:is(body.woocommerce, body.woocommerce-page) .wc-proceed-to-checkout .checkout-button span,
.wc-block-components-button:not(.is-secondary) span,
.wc-block-cart__submit-button span {
  color: inherit;
}

/* `#place_order` trae `!text-white`, así que la única forma de ganarle es con
 * otra declaración `!important` más específica (documentado en la cabecera). */
.woocommerce #place_order,
.woocommerce #place_order span,
:is(body.woocommerce, body.woocommerce-page) #place_order,
:is(body.woocommerce, body.woocommerce-page) #place_order span {
  color: var(--as-cta-text) !important;
}

/* Mini-carrito (vista previa lateral). El padre pinta el último botón con
 * `.mini-cart-content-inner ... a.wc-forward:last-child` (0,4,1) en grafito,
 * mientras que el color de nuestro CTA (0,3,1) se aplicaba encima: quedaba
 * grafito sobre grafito (1:1). Se iguala la especificidad del padre. */
.rbb-mini-cart-canvas .mini-cart-content-inner .woocommerce-mini-cart__buttons a.wc-forward:last-child,
.rbb-mini-cart .mini-cart-content-inner .woocommerce-mini-cart__buttons a.wc-forward:last-child {
  border: 1px solid var(--as-cta-border);
  background-color: var(--as-cta-bg);
  color: var(--as-cta-text);
}

.rbb-mini-cart-canvas .mini-cart-content-inner .woocommerce-mini-cart__buttons a.wc-forward:last-child:hover,
.rbb-mini-cart .mini-cart-content-inner .woocommerce-mini-cart__buttons a.wc-forward:last-child:hover {
  border-color: var(--as-cta-border);
  background-color: var(--as-cta-bg-hover);
  color: var(--as-cta-text);
}

/* --------------------------------------------------------------------------
 * 4.2 CTA «Añadir al carrito» en las tarjetas de producto
 * --------------------------------------------------------------------------
 * El padre pinta el `<div class="add-to-cart-icon">` como una píldora grafito
 * con texto blanco y limita el `<a>` a `max-width: 150px`. Sobre nuestro CTA
 * amarillo eso dejaba un óvalo con otra píldora dentro y el texto en tres
 * líneas. Se anula la píldora interna, se libera el ancho y se evita el salto.
 */
.rbb_woo_products .item-product .product_button .button.add_to_cart_button {
  flex: 1 1 auto;
  max-width: none;
  min-width: 0;
  margin-right: 0;
  line-height: 1.2;
  padding: 0.75rem 0.875rem;
  font-size: 0.6875rem;
  white-space: nowrap;
}

.rbb_woo_products .item-product .product_button .add_to_cart_button .add-to-cart-icon,
.rbb_woo_products .item-product .product_button .add_to_cart_button .add-to-cart-icon:hover {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background-color: transparent;
  color: inherit;
}

.rbb_woo_products .item-product .product_button .add_to_cart_button .add-to-cart-icon span {
  display: block;
  padding: 0;
  color: inherit;
  white-space: nowrap;
}

/* En pantallas estrechas el CTA ocupa su propia fila y los botones de acción
 * rápida (comparar / vista rápida) bajan debajo. */
@media (max-width: 767px) {
  .rbb_woo_products .item-product .product_button {
    flex-wrap: wrap;
    gap: 0.5rem;
  }

  .rbb_woo_products .item-product .product_button .button.add_to_cart_button {
    flex: 1 1 100%;
  }
}

/* Deshabilitados legibles (no grises sobre gris). */
:is(body.woocommerce, body.woocommerce-page) .button:disabled,
:is(body.woocommerce, body.woocommerce-page) .button:disabled[disabled],
:is(body.woocommerce, body.woocommerce-page) .button.disabled,
:is(body.woocommerce, body.woocommerce-page) .button.disabled:hover,
:is(body.woocommerce, body.woocommerce-page) .single_add_to_cart_button.disabled,
:is(body.woocommerce, body.woocommerce-page) .single_add_to_cart_button.disabled:hover,
:is(body.woocommerce, body.woocommerce-page) .product-summary form .single_add_to_cart_button.disabled,
:is(body.woocommerce, body.woocommerce-page) .product-summary form .single_add_to_cart_button.disabled:hover,
:is(body.woocommerce, body.woocommerce-page) .wc-block-components-button:disabled,
.as-btn-primary:disabled,
.as-btn-primary[aria-disabled="true"] {
  border-color: var(--as-disabled-border);
  background-color: var(--as-disabled-bg);
  color: var(--as-disabled-text);
  opacity: 1;
  cursor: not-allowed;
  box-shadow: none;
}

/* --------------------------------------------------------------------------
 * 5. Precios
 * ------------------------------------------------------------------------ */

.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price {
  color: var(--as-price);
}

.woocommerce div.product p.price ins,
.woocommerce div.product span.price ins,
.woocommerce ul.products li.product .price ins {
  color: var(--as-price-sale);
  font-weight: 700;
  text-decoration: none;
}

.woocommerce div.product p.price del,
.woocommerce div.product span.price del,
.woocommerce ul.products li.product .price del {
  color: var(--as-price-old);
  opacity: 1;
}

/* Precios del loop del tema padre (`rbb_woo_products`): la tarjeta de producto
 * no usa `ul.products li.product .price`, sino
 *   .item-product .product_price > .woocommerce-Price-amount bdi
 * y el padre lo pinta con `--rbb-general-primary-color` (2.5:1 sobre la tarjeta
 * oscura). Se alinea con los mismos tokens que la ficha. El prefijo `body`
 * (0,3,2) gana a la regla del padre (0,3,1) aunque el padre anteponga
 * `body.automize-0x` en otras variantes de su demo. */
body .item-product .product_price > .woocommerce-Price-amount bdi,
body .item-product .product_price .woocommerce-Price-amount {
  color: var(--as-price);
}

body .item-product .product_price ins,
body .item-product .product_price ins .woocommerce-Price-amount {
  color: var(--as-price-sale);
  font-weight: 700;
  text-decoration: none;
}

body .item-product .product_price > del,
body .item-product .product_price del .woocommerce-Price-amount {
  color: var(--as-price-old);
  text-decoration: line-through;
}

/* --------------------------------------------------------------------------
 * 5-bis. Existencias
 *
 * El padre pinta el stock en `#0f834d` (3.61:1 sobre navy) y su punto en
 * `#108043`. Como texto/indicador sobre oscuro se usan los tokens de estado de
 * texto (`--as-success-text` 8.68:1; `--as-danger-text` 6.91:1 sobre tarjeta).
 * ------------------------------------------------------------------------ */

body .stock.in-stock,
body .woosw-item--stock .in-stock {
  color: var(--as-success-text);
}

body .stock.out-of-stock {
  color: var(--as-danger-text);
}

/* F-15 de la revisión de código: la variante «disponible por encargo» caía al
 * `#0f834d` del padre (3.61:1 sobre navy). Se usa el token de aviso (8.74:1). */
body .stock.available-on-backorder {
  color: var(--as-warning-text);
}

body .stock.in-stock:before,
body .woosw-item--stock .in-stock:before {
  border-color: var(--as-success-text);
  color: var(--as-success-text);
}

body .stock.out-of-stock:before {
  border-color: var(--as-danger-text);
  color: var(--as-danger-text);
}

/* --------------------------------------------------------------------------
 * 6. Etiqueta de oferta (píldora amarilla)
 * ------------------------------------------------------------------------ */

.woocommerce span.onsale,
body.woocommerce span.onsale,
body.woocommerce-page span.onsale {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 0;
  padding: 0.3rem 0.85rem;
  border: 1px solid var(--as-cta-border);
  border-radius: 999px;
  background-color: var(--as-badge-bg);
  color: var(--as-badge-text);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  box-shadow: var(--shadow-sm);
}

/* --------------------------------------------------------------------------
 * 7. Avisos de WooCommerce
 * ------------------------------------------------------------------------ */

/* Padding simétrico: el `padding-left` de 3 rem reservaba sitio para el icono
 * `::before` con el que WooCommerce decora sus avisos. En este sitio ese icono
 * no se dibuja (ver la nota de `::before` más abajo), así que los 48 px eran un
 * hueco muerto a la izquierda de todos los avisos —en móvil, espacio perdido—.
 * El estado sigue siendo reconocible por el borde izquierdo de 4 px y el fondo
 * tenue. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error {
  margin: 0 0 1.5rem;
  padding: 1rem 1.25rem;
  border: 0;
  border-left: 4px solid currentColor;
  border-radius: 0.5rem;
  box-shadow: none;
  list-style: none;
}

/* Estados de WooCommerce con la paleta oscura (paleta-oscura §8.7): fondo tenue,
 * borde izquierdo de 4 px y texto principal; el detalle va en el token de texto
 * del estado. Como *texto* sobre navy, `--as-success` (3.42:1) y `--as-danger`
 * (2.79:1) no sirven: para eso existen `--as-success-text` y `--as-danger-text`. */
.woocommerce-message,
.woocommerce .woocommerce-message {
  border-left-color: var(--as-success);
  background-color: var(--as-success-soft);
  color: var(--as-text);
}

.woocommerce-info,
.woocommerce .woocommerce-info {
  border-left-color: var(--as-link);
  background-color: var(--as-blue-soft);
  color: var(--as-text);
}

.woocommerce-error,
.woocommerce .woocommerce-error {
  border-left-color: var(--as-danger);
  background-color: var(--as-danger-soft);
  color: var(--as-text);
}

/* Se retiran las tres reglas `.woocommerce-*::before` que solo cambiaban `color`.
 *
 * WooCommerce dibuja el icono del aviso desde su propio `::before`
 * (`.woocommerce-info::before { content: "\e015"; … }`), y ese `content` vive en
 * el CSS del núcleo, que aquí **no se encola**: el tema padre sirve únicamente
 * `select2.css` de WooCommerce, y ninguna hoja del tema declara `content` para
 * esos pseudo-elementos (verificado con `grep` sobre el CSS realmente servido).
 * Sin `content` el pseudo-elemento no se genera, así que no había caja que
 * pintar: los tres `color` eran código muerto y sostenían, además, el
 * `padding-left` de 3 rem hacia un icono inexistente que se acaba de quitar.
 *
 * Esto no contradice F-11 de la revisión de código: aquel bloque
 * `::before { color: inherit }` común, que iba después y con la misma
 * especificidad, ya se había retirado por anular estos tres colores. Ahora se
 * retiran también los tres `color`, que se quedaron sin consumidor. El «detalle
 * en el color del token» de la paleta oscura §8.7 sigue vivo donde sí hay algo
 * que pintar: `border-left-color` y `background-color` de cada estado.
 *
 * Si algún día se encola el CSS del núcleo o el tema declara `content` para
 * estos `::before`, hay que reponer aquí el `color` de estado **y** el
 * `padding-left` de 3 rem; sin lo segundo el icono se dibujaría encima del
 * texto. */

.woocommerce-message a,
.woocommerce-info a,
.woocommerce-error a,
.woocommerce-message a:hover,
.woocommerce-info a:hover,
.woocommerce-error a:hover {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Checkout: el aviso de envío ocupa la fila completa del grid.
 *
 * `woocommerce_before_checkout_form` —de donde cuelga el aviso de
 * `inc/checkout.php`— se imprime dentro del grid del tema padre
 * (`.checkout-template … > div.grid.grid-cols-2`, junto a las columnas del cupón
 * y del acceso). Sin `grid-column`, el aviso era un ítem más del grid y se
 * quedaba en **una sola columna de las dos** —media pantalla— en todos los
 * breakpoints, porque `grid-cols-2` del padre no es responsive
 * (`grid-template-columns: repeat(2, minmax(0, 1fr))`, sin media query). En
 * móvil, donde no hay ancho que perder, el problema se notaba más.
 *
 * Ámbito: `[role="status"]` acota la regla al aviso del proyecto
 * (`<div class="woocommerce-info" role="status">`). Los avisos nativos de
 * WooCommerce no llevan ese atributo, así que su maquetación no cambia.
 *
 * `grid-column` no tiene efecto fuera de un contenedor grid, de modo que la
 * regla es inocua donde el aviso ya ocupa el ancho completo: en la página del
 * carrito es hijo directo de `.cart-template` (display block) y en el reintento
 * de pago (`order-pay`) cuelga de `<form id="order_review">`, sin
 * `.checkout-template` ni grid en la página (comprobado en el DOM real). Si el
 * padre llegara a maquetar cualquiera de las dos con este grid, la regla ya
 * estaría puesta.
 *
 * Sin `!important`: no hay otra regla que declare `grid-column` sobre este
 * elemento (las únicas del sitio son las utilidades `col-span-*` del padre, que
 * el aviso no lleva). */
.checkout-template .woocommerce-info[role="status"] {
  grid-column: 1 / -1;
}

/* --------------------------------------------------------------------------
 * 8. Formularios (inputs, selects y textareas)
 *
 * El ámbito son los contenedores de contenido y los formularios de WooCommerce
 * (incluido el de acceso del popup de cuenta). Así no se altera el buscador de
 * la cabecera, que no es un formulario de WooCommerce.
 * ------------------------------------------------------------------------ */

.woocommerce :is(
  .product-summary,
  .rbb-product-catalog,
  .cart-template,
  .checkout-template,
  .woocommerce-cart-form,
  .woocommerce-checkout,
  .woocommerce-MyAccount-content,
  .woocommerce-form-login,
  .woocommerce-form-register
) :is(
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  input[type="password"],
  input[type="search"],
  input[type="number"],
  input[type="date"],
  input[type="url"],
  textarea,
  select,
  .input-text
) {
  min-height: 48px;
  padding: 0.75rem 1rem;
  border: 1px solid var(--as-border-input);
  border-radius: 0.5rem;
  background-color: var(--as-field);
  color: var(--as-text);
  font-size: 1rem;
  line-height: 1.4;
  box-shadow: none;
}

.woocommerce :is(
  .product-summary,
  .rbb-product-catalog,
  .cart-template,
  .checkout-template,
  .woocommerce-cart-form,
  .woocommerce-checkout,
  .woocommerce-MyAccount-content,
  .woocommerce-form-login,
  .woocommerce-form-register
) textarea {
  min-height: 8rem;
  resize: vertical;
}

.woocommerce :is(
  .product-summary,
  .rbb-product-catalog,
  .cart-template,
  .checkout-template,
  .woocommerce-cart-form,
  .woocommerce-checkout,
  .woocommerce-MyAccount-content,
  .woocommerce-form-login,
  .woocommerce-form-register
) :is(
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  input[type="password"],
  input[type="search"],
  input[type="number"],
  textarea,
  .input-text
)::placeholder {
  color: var(--as-placeholder);
  opacity: 1;
}

.woocommerce :is(
  .product-summary,
  .rbb-product-catalog,
  .cart-template,
  .checkout-template,
  .woocommerce-cart-form,
  .woocommerce-checkout,
  .woocommerce-MyAccount-content,
  .woocommerce-form-login,
  .woocommerce-form-register
) :is(
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  input[type="password"],
  input[type="search"],
  input[type="number"],
  input[type="date"],
  input[type="url"],
  textarea,
  select,
  .input-text
):focus {
  border-color: var(--as-gold);
  outline: 2px solid transparent;
  outline-offset: 0;
  box-shadow: var(--as-focus-glow);
}

/* Autocompletado del navegador: sin el amarillo nativo (paleta-oscura R-9). */
.woocommerce :is(
  .product-summary,
  .rbb-product-catalog,
  .cart-template,
  .checkout-template,
  .woocommerce-cart-form,
  .woocommerce-checkout,
  .woocommerce-MyAccount-content,
  .woocommerce-form-login,
  .woocommerce-form-register
) :is(input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="search"], textarea, .input-text):autofill {
  box-shadow: inset 0 0 0 100px var(--as-blue-soft);
  -webkit-text-fill-color: var(--as-text);
}

/* Estados de validación de WooCommerce (no se usa :invalid para no pintar
 * de rojo campos obligatorios vacíos antes de enviar el formulario). El error
 * en línea usa `--as-danger-text` (6.91:1 sobre tarjeta); `--as-danger` como
 * borde de 2 px también cumple 3:1 como componente. */
.woocommerce form .form-row.woocommerce-invalid input.input-text,
.woocommerce form .form-row.woocommerce-invalid select,
.woocommerce .woocommerce-invalid .input-text {
  border-color: var(--as-danger-text);
  box-shadow: 0 0 0 1px var(--as-danger-text);
}

.woocommerce form .form-row.woocommerce-validated input.input-text,
.woocommerce form .form-row.woocommerce-validated select,
.woocommerce .woocommerce-validated .input-text {
  border-color: var(--as-success-text);
}

/* --------------------------------------------------------------------------
 * 8.1 Indicador de selección de envío, dirección distinta y «Crear una cuenta»
 * --------------------------------------------------------------------------
 * El padre oculta el `<input>` (`display:none; opacity:0; visibility:hidden`) y
 * dibuja el indicador con un `<span>`:
 *
 *   .rbb__input-radio .presentation { background-color:#fff; border:1px solid
 *     #dfdfdf; border-radius:100%; height:17px; width:17px; … }
 *   .rbb__input-radio input:checked + .presentation,
 *   .rbb__input-radio input[type="hidden"] + .presentation {
 *     background-color:var(--rbb-general-secondary-color);
 *     box-shadow:inset 0 0 0 3px #fff }
 *
 * Con `--rbb-general-secondary-color` = #8CC9F0, el estado vacío era un aro
 * blanco y el seleccionado un círculo azul claro con anillo blanco interior:
 * ambos se distinguen mal sobre el navy del checkout y el conjunto no usaba el
 * acento de marca. Aquí el aro vacío pasa a ser el borde de control del sistema
 * (`--as-border-input`, ≥3:1 sobre las superficies navy) y el seleccionado un
 * relleno naranja sólido (`--as-orange-dark`: #F8B018 en oscuro —7.56:1 sobre
 * `--as-card`, la superficie real del bloque de envío, y hasta 9.75:1 sobre el
 * lienzo— y #A85A0D en claro), sin anillo blanco interior.
 *
 * Sin `!important`: los selectores son idénticos a los del padre (misma
 * especificidad) y `tienda.css` se imprime después de `woocommerce.css`. El
 * orden lo da la prioridad de `wp_enqueue_scripts`, no la cadena de
 * dependencias: `rising-bamboo-woocommerce-style` lo encola el padre a la
 * prioridad por defecto (10) y `autosandoval-tienda` se encola en la 20 (ver
 * `inc/assets.php`). Tampoco se toca la geometría: 17×17, círculo y separación
 * respecto al texto siguen siendo los del padre; solo cambian color y grosor del
 * borde. El
 * `box-sizing` se declara como salvaguarda —el preflight del padre ya aplica
 * `border-box` a todo— para que el aro de 2 px no agrande el indicador si esa
 * regla desapareciera algún día.
 *
 * No hay regla de `:focus-visible` porque el `display:none` del padre deja estos
 * `<input>` fuera del orden de tabulación: mientras se mantenga, no existe foco
 * de teclado que pintar. Recuperarlo exige cambiar la técnica de ocultamiento
 * (recorte de 1 px en lugar de `display:none`) y queda fuera de este cambio.
 *
 * La regla no se acota a `.checkout-template` a propósito: el mismo marcado
 * (`label.rbb__input-radio > input + span.presentation`) cubre los tres
 * controles del flujo de compra —métodos de envío, «¿Enviar a una dirección
 * diferente?» y «Crear una cuenta»— y también el selector de métodos de envío
 * del carrito, que se resuelve antes de llegar al checkout.
 */
.rbb__input-radio .presentation {
  box-sizing: border-box;
  background-color: transparent;
  border: 2px solid var(--as-border-input);
  box-shadow: none;
}

.rbb__input-radio input:checked + .presentation,
.rbb__input-radio input[type="hidden"] + .presentation {
  background-color: var(--as-orange-dark);
  border-color: var(--as-orange-dark);
  box-shadow: none;
}

/* --------------------------------------------------------------------------
 * 9. Paginación y migas de pan
 * ------------------------------------------------------------------------ */

.woocommerce-pagination ul.page-numbers {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 2rem 0 0;
  padding: 0;
  border: 0;
  list-style: none;
}

.woocommerce-pagination ul.page-numbers li {
  margin: 0;
  border: 0;
}

.woocommerce-pagination ul.page-numbers .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding: 0 0.75rem;
  border: 1px solid var(--as-header-border);
  border-radius: 0.5rem;
  background-color: var(--as-card);
  color: var(--as-link);
  font-weight: 600;
  text-decoration: none;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.woocommerce-pagination ul.page-numbers .page-numbers:hover {
  border-color: var(--as-action);
  background-color: var(--as-action);
  color: var(--as-text);
}

.woocommerce-pagination ul.page-numbers .page-numbers.current,
.woocommerce-pagination ul.page-numbers .page-numbers[aria-current="page"] {
  border-color: var(--as-action);
  background-color: var(--as-action);
  color: var(--as-text);
}

.woocommerce-pagination ul.page-numbers .page-numbers:focus-visible {
  outline: var(--as-focus-ring);
  outline-offset: var(--as-focus-offset);
}

.woocommerce .woocommerce-breadcrumb {
  margin: 0 0 1.5rem;
  color: var(--as-placeholder);
  font-size: 0.875rem;
  line-height: 1.5;
}

.woocommerce .woocommerce-breadcrumb a {
  color: var(--as-link);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.woocommerce .woocommerce-breadcrumb a:hover {
  color: var(--as-link-hover);
}

/* --------------------------------------------------------------------------
 * 10. Mini-carrito lateral
 * ------------------------------------------------------------------------ */

.rbb-mini-cart-canvas .cart-right {
  border-left: 1px solid var(--as-header-border);
  background-color: var(--as-elevated);
  box-shadow: var(--shadow-xl);
}

.rbb-mini-cart-canvas .title-cart {
  border-bottom: 1px solid var(--as-header-border);
}

.rbb-mini-cart-canvas .cart-count,
.rbb-mini-cart-canvas .title-cart .cart-count {
  background-color: var(--as-cta-bg);
  color: var(--as-cta-text);
  font-weight: 700;
}

.rbb-mini-cart-canvas .woocommerce-mini-cart-item {
  border-bottom: 1px solid var(--as-header-border);
}

.rbb-mini-cart-canvas .woocommerce-mini-cart-item a:not(.remove) {
  color: var(--as-header-text);
  text-decoration: none;
}

.rbb-mini-cart-canvas .woocommerce-mini-cart-item a:not(.remove):hover {
  color: var(--as-link);
}

.rbb-mini-cart-canvas .woocommerce-mini-cart-item .remove {
  color: var(--as-danger-text);
}

.rbb-mini-cart-canvas .woocommerce-mini-cart__total {
  border-top: 1px solid var(--as-header-border);
  color: var(--as-price);
}

.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.rbb-mini-cart-canvas .woocommerce-mini-cart__buttons a.button {
  width: 100%;
}

/* --------------------------------------------------------------------------
 * 11. CSS adicional migrado del tema padre (post 11313)
 *     Se conserva tal cual para no perder los ajustes de la home 11297.
 * ------------------------------------------------------------------------ */

/* D-15: las fotos de los image-box "policy-icon" deben llenar el círculo de 80px
   (el tema automize las limita a max-width:33px, tamaño pensado para iconos SVG). */
.elementor-11297 .policy-icon .elementor-image-box-wrapper .elementor-image-box-img img {
  max-width: 100%;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* D-16: ocultar el banner de título de página + migas SOLO en 11297.
   No se tocan las opciones globales del tema (rbb_layout_title / rbb_layout_breadcrumb);
   la tienda y las categorías conservan su banner. */
.page-id-11297 #rbb-page-title {
  display: none !important;
}

/* --------------------------------------------------------------------------
 * 11-bis. Categorías de las tarjetas de producto de la home (D-10)
 *
 * El widget `rbb_woo_products` de Elementor usa un fragmento del padre que
 * elige la primera hija de la categoría raíz y muestra una categoría que no
 * corresponde al producto. La tienda ya lo corrige con `woocommerce/content-product.php`;
 * en la home se ocultan las etiquetas para no publicar información errónea.
 * Se acota a `body.home`: `.rbb_woo_products` también lo usan los resultados de
 * búsqueda, relacionados y upsells, donde la categoría sí es correcta y útil.
 * ------------------------------------------------------------------------ */

body.home .rbb_woo_products .title-category {
  display: none;
}

/* --------------------------------------------------------------------------
 * 12. Móvil
 * ------------------------------------------------------------------------ */

@media (max-width: 767px) {
  .rbb-default-header #rbb-branding a img.logo {
    max-width: 100px;
  }

  .rbb-default-header #rbb-branding a img.sticky-logo {
    max-width: 100px;
  }

  :is(body.woocommerce, body.woocommerce-page) .single_add_to_cart_button,
  :is(body.woocommerce, body.woocommerce-page) .add_to_cart_button,
  :is(body.woocommerce, body.woocommerce-page) .checkout-button,
  :is(body.woocommerce, body.woocommerce-page) #place_order,
  :is(body.woocommerce, body.woocommerce-page) .wc-block-components-button:not(.is-secondary),
  .as-btn-primary {
    width: 100%;
  }

  .woocommerce-pagination ul.page-numbers {
    justify-content: center;
  }
}

/* --------------------------------------------------------------------------
 * 13. Etiquetas es_CO más largas: evitar desbordes en botones del flujo
 *
 * «Añadir al carrito», «Finalizar compra», «Seguir comprando» o
 * «Añadir a la lista de deseos» no caben en los anchos pensados para el inglés.
 * No se rediseña nada: los botones conservan su min-height de 48 px, pero
 * pueden ocupar dos líneas en lugar de recortar el texto.
 * ------------------------------------------------------------------------ */

.woocommerce .button,
.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
:is(body.woocommerce, body.woocommerce-page) .button,
:is(body.woocommerce, body.woocommerce-page) button.button,
:is(body.woocommerce, body.woocommerce-page) a.button,
:is(body.woocommerce, body.woocommerce-page) input.button {
  height: auto;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Botones de los plugins de lista de deseos y comparación (tienen altura fija
 * en su CSS y el texto español se recortaba). */
.woosw-btn,
.woosc-btn,
.woosw-popup .button,
.woosc-popup .button,
.woosc-bar .button,
.woosw-menu-item {
  height: auto;
  min-height: 44px;
  white-space: normal;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

/* Los campos de la tabla de comparación y las listas de filtros también
 * muestran etiquetas largas en español. */
.woosc-table td,
.woosc-table th,
.woosc-settings-field-li .move,
.widget.woocommerce .woocommerce-widget-layered-nav-list__item a {
  overflow-wrap: anywhere;
}

/* --------------------------------------------------------------------------
 * 14. Resultados de búsqueda del catálogo (search.php)
 *
 * La plantilla usa clases utilitarias del padre (`text-[1.375rem]`,
 * `md:text-[1.875rem]`), pero esas utilidades solo existen en el CSS compilado si
 * el tema padre las generó: la clase no está en su plantilla, así que el `h1` se
 * quedaba con el tamaño heredado y el encabezado casi no se distinguía del
 * texto. Se declaran aquí con los mismos valores y se acotan a
 * `.as-search-results` para no tocar el resto del sitio (hallazgo S-2).
 * ------------------------------------------------------------------------ */

.as-search-results__header h1 {
  margin: 0 0 0.5rem;
  color: var(--as-header-text);
  font-size: 1.375rem;
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  overflow-wrap: anywhere;
}

@media (min-width: 768px) {
  .as-search-results__header h1 {
    font-size: 1.875rem;
  }
}

/* Estado vacío: el bloque no debe estirarse a todo el ancho en escritorio. */
.as-search-results__empty {
  max-width: 42rem;
  margin-inline: auto;
  text-align: center;
}

.as-search-results__empty p {
  margin: 0 0 1.5rem;
  color: var(--as-header-text);
  font-size: 1rem;
  line-height: 1.6;
}

@media (min-width: 1024px) {
  .as-search-results__empty p {
    font-size: 1.125rem;
  }
}

/* --------------------------------------------------------------------------
 * 15. Movimiento reducido
 * ------------------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .rbb-default-header *,
  .rbb-default-header *::before,
  .rbb-default-header *::after,
  .rbb-mini-cart-canvas *,
  :is(body.woocommerce, body.woocommerce-page) .button,
  .as-btn-primary,
  .woocommerce-pagination ul.page-numbers .page-numbers {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
