/* WooCommerce sobre la paleta oscura Owari (spec/01-estilo-visual.md).
   Carrito, checkout, mi cuenta, tienda y página de gracias. */

/* ── Base ──
   ⚠ NUNCA usar `.woocommerce` a secas para reglas generales (color de enlaces,
   tipografías…): WordPress pone esa clase en el <body> de las páginas de tienda,
   así que la regla se filtra a la cabecera y al pie — y el menú y el botón
   "Agendar evaluación" quedaban cian sobre cian (invisibles).
   Todo lo que sea "general" se limita a NUESTROS contenedores de contenido:
   `.woo-shell` (woocommerce.php) y `.page-shell` (page.php: carrito, checkout,
   mi cuenta). Los selectores de componentes concretos de WooCommerce
   (`.woocommerce-message`, `ul.products`, …) sí pueden ir sueltos. */
.woo-shell, .page-shell .woocommerce { color: var(--text); }
.woo-shell a, .page-shell .woocommerce a { color:var(--cy-txt); }
.woo-shell h2, .woo-shell h3,
.page-shell .woocommerce h2, .page-shell .woocommerce h3 {
  font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso);
}

/* Avisos */
.woocommerce-message, .woocommerce-info, .woocommerce-error {
  background: var(--panel); border: 1px solid var(--line2); border-top: 3px solid var(--cy);
  color: var(--text); border-radius: 14px; padding: 16px 22px 16px 48px; margin-bottom: 26px;
}
.woocommerce-error { border-top-color: #e2574c; }
.woocommerce-message::before, .woocommerce-info::before { color:var(--cy-txt); }
.woocommerce-error::before { color: #e2574c; }
.woocommerce-message .button, .woocommerce-info .button, .woocommerce-error .button { float: right; }

/* Botones Woo → mismos botones Owari.
   OJO con la especificidad: WooCommerce usa `.woocommerce a.button` (0,2,1), que
   gana a `.woocommerce .button` (0,2,0) y dejaba los botones del catálogo en su
   gris por defecto. Por eso van los selectores con etiqueta. */
.woocommerce .button, .woocommerce a.button, .woocommerce button.button,
.woocommerce input.button, .woocommerce a.button.alt, .woocommerce button.button.alt,
.woocommerce #respond input#submit, .wc-block-components-button {
  display: inline-flex; align-items: center; gap: 9px; font-weight: 700; font-size: 14px;
  border-radius: 999px; padding: 12px 22px; cursor: pointer; transition: .18s;
  background: var(--cy); color: #042530; border: 1.5px solid transparent;
  font-family: 'Montserrat', sans-serif;
}
.woocommerce .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover,
.woocommerce input.button:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover {
  background: var(--cy-soft); color: #042530; transform: translateY(-1px);
}
/* Producto ya en el carrito: el enlace "Ver carrito" en versión fantasma. */
.woocommerce a.added_to_cart {
  display: inline-flex; align-items: center; margin-left: 10px;
  font-size: 13px; font-weight: 700; color:var(--cy-txt);
}
/* Los botones de los bloques Woo son <a>: sin esto heredan el cian de
   `.woocommerce a` y quedan cian sobre cian (texto invisible). */
.wc-block-components-button, a.wc-block-components-button,
.wc-block-cart__submit-button, a.checkout-button { color: #042530 !important; }
.wc-block-components-button:hover { color: #042530 !important; }

/* MISMO problema con NUESTROS botones `.btn` cuando caen dentro de una página
   de WooCommerce (Mi cuenta → Licencias, etc.): `.woocommerce a` (0,2,0) le
   gana a `.btn-primary` (0,1,0) y el texto quedaba cian sobre cian. */
.woocommerce a.btn-primary, .woocommerce-page a.btn-primary,
.woocommerce a.btn-primary:hover, .woocommerce-page a.btn-primary:hover {
  color: #042530 !important;
}
.woocommerce a.btn-ghost, .woocommerce-page a.btn-ghost { color: var(--text) !important; }
.woocommerce a.btn-ghost:hover, .woocommerce-page a.btn-ghost:hover { color:var(--cy-txt) !important; }

.woocommerce .button:disabled, .woocommerce button.button:disabled[disabled] {
  background: var(--panel2); color: var(--faint);
}

/* Formularios */
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea,
.woocommerce form .form-row select, .woocommerce-page form .form-row input.input-text,
.select2-container--default .select2-selection--single {
  background: var(--panel2); border: 1px solid var(--line2); color: var(--text);
  border-radius: 11px; padding: 12px 14px; font-family: 'Montserrat', sans-serif;
}
.woocommerce form .form-row input.input-text:focus, .woocommerce form .form-row textarea:focus {
  border-color:var(--cy-txt); outline: none;
}
.woocommerce form .form-row label { color: var(--muted); font-size: 13px; }
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--text); line-height: 1.6; }
.select2-dropdown { background: var(--panel); border: 1px solid var(--line2); color: var(--text); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--cy); color: #042530; }

/* ── Campos del checkout de bloques, en la paleta del tema ──
   Venían BLANCOS (estilo por defecto de WooCommerce Blocks) dentro de una
   página oscura: desentonaban y el desplegable de país se veía especialmente
   mal. Antes se parcheó poniendo el texto oscuro; ahora se oscurece el campo
   entero, que es lo coherente con el resto del sitio. */
.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-blocks-components-select__select,
.wc-block-components-combobox input,
.wc-block-components-select select,
.wc-block-components-country-input select,
.wc-block-components-state-input select {
  background: var(--panel2) !important; color: var(--text) !important;
  border: 1px solid var(--line2) !important; border-radius: 11px !important;
  color-scheme: dark;
}
/* El contenedor del select trae fondo blanco propio. */
.wc-blocks-components-select,
.wc-blocks-components-select__container {
  background: transparent !important; border: none !important; border-radius: 11px;
}
.wc-block-components-text-input label,
.wc-block-components-combobox label,
.wc-block-components-select label,
.wc-blocks-components-select__label,
.wc-block-components-country-input label,
.wc-block-components-state-input label { color: var(--faint) !important; }
/* Etiqueta flotante al escribir: que no se pierda sobre el campo oscuro. */
.wc-block-components-text-input.is-active label { color: var(--faint) !important; }
/* Flecha propia del select (Blocks dibuja la suya con appearance:none). */
.wc-blocks-components-select__expand { fill: var(--cy) !important; }
.wc-blocks-components-select__select option { background: var(--panel); color: var(--text); }

/* Focus de los campos de bloques: sin esto el navegador pinta su
   `outline: auto` (naranja en tema oscuro). Anillo cian de la marca. */
.wc-block-components-text-input input:focus,
.wc-block-components-combobox input:focus,
.wc-block-components-select select:focus,
.wc-block-components-country-input select:focus,
.wc-block-components-state-input select:focus,
.wc-block-components-textarea:focus,
.wc-block-checkout__add-note textarea:focus {
  outline: none !important;
  border-color:var(--cy-txt) !important;
  box-shadow: 0 0 0 2px rgba(0, 181, 212, .4) !important;
}
/* Componentes de bloques que usan el color "admin" de WP (radios, checks,
   spinners, enlaces internos): que usen el cian Owari. */
body {
  --wp-admin-theme-color:var(--cy-txt);
  --wp-admin-theme-color-darker-10: var(--cy-deep);
  --wp-admin-theme-color-darker-20: var(--cy-deep);
}

/* Numerito de cantidad sobre la miniatura del resumen del pedido: heredaba
   texto y fondo del mismo color claro (número invisible). */
.wc-block-components-order-summary-item__quantity {
  background: var(--cy); color: #042530 !important; font-weight: 800;
  border: 2px solid var(--panel);
}

/* Miniaturas del carrito y del pago (bloques y tabla clásica) */
.wc-block-cart-item__image img,
.wc-block-components-product-image img,
.woocommerce table.shop_table td.product-thumbnail img,
.wc-block-components-order-summary-item__image img {
  border-radius: 10px; border: 1px solid var(--line); background: #0b2130;
}

/* Tablas (carrito, totales, pedidos) */
.woocommerce table.shop_table {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px;
  border-collapse: separate; overflow: hidden;
}
.woocommerce table.shop_table th, .woocommerce table.shop_table td {
  border-top: 1px solid var(--line); color: var(--text); padding: 14px 16px;
}
.woocommerce table.shop_table thead th {
  background: var(--panel2); color: var(--faint); font-size: 11px; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; border-top: none;
}
.woocommerce table.shop_table td.product-name a { color: var(--text); font-weight: 600; }
.woocommerce .cart_totals h2, #order_review_heading { margin: 26px 0 14px; }
.woocommerce td.product-remove a.remove { color: var(--muted) !important; }
.woocommerce td.product-remove a.remove:hover { background: #e2574c; color: #fff !important; }
.woocommerce .quantity .qty { background: var(--panel2); border: 1px solid var(--line2); color: var(--text); border-radius: 9px; padding: 8px; }

/* Descuento acordado con el cliente: resaltado para que se lea la rebaja */
.owari-rebaja, .owari-rebaja .amount { color: var(--cy-txt); font-weight: 700; white-space: nowrap; }

/* Precios */
.woocommerce .amount, .woocommerce ins { color: var(--text); }
.woocommerce del .amount { color: var(--faint); }

/* Checkout */
.woocommerce-checkout #payment {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px;
}
.woocommerce-checkout #payment div.payment_box {
  background: var(--panel2); color: var(--muted);
}
.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--panel2); }
.woocommerce-checkout #payment ul.payment_methods { border-bottom: 1px solid var(--line); }

/* ── Elegir método de pago (checkout CLÁSICO y página de pago del pedido) ──
   Esta pantalla no es la del checkout de bloques: es la que abre el enlace de
   pago que se le manda al cliente. Venía sin estilar: los métodos salían como
   una lista suelta y el radio con los 13px grises del navegador, casi
   invisible sobre el fondo oscuro. */
.woocommerce #payment ul.wc_payment_methods {
  list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 10px;
}
.woocommerce #payment ul.wc_payment_methods li.wc_payment_method {
  background: var(--panel2); border: 1px solid var(--line2);
  border-radius: 14px; padding: 14px 18px; transition: .15s;
}
.woocommerce #payment ul.wc_payment_methods li.wc_payment_method:hover { border-color: var(--cy); }
/* El elegido se distingue sin depender de ver el radio. */
.woocommerce #payment ul.wc_payment_methods li.wc_payment_method:has(input:checked) {
  border-color: var(--cy); background: rgba(0, 181, 212, .08);
}
.woocommerce #payment ul.wc_payment_methods li.wc_payment_method > label {
  display: flex; align-items: center; gap: 10px;
  margin: 0; font-weight: 600; font-size: 15px; color: var(--text); cursor: pointer;
}
.woocommerce #payment ul.wc_payment_methods input.input-radio {
  width: 18px; height: 18px; margin: 0; flex: none;
  accent-color: var(--cy); cursor: pointer;
}
/* Los logos de las pasarelas están hechos para fondo BLANCO: el de Wompi es
   oscuro y desaparecía sobre el panel. Se les pone una placa clara detrás, que
   sirve para cualquier pasarela sin tener que conocer su logo. */
.woocommerce #payment ul.wc_payment_methods label img {
  max-height: 28px; width: auto; margin: 0 0 0 2px;
  background: #fff; padding: 4px 8px; border-radius: 7px;
}
.woocommerce #payment div.payment_box { margin: 12px 0 0; border-radius: 12px; }
.woocommerce form.checkout_coupon, .woocommerce form.login {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px;
}

/* ── Mi cuenta: acceso y registro ──
   Sin sesión, WooCommerce imprime el formulario de acceso y (si el registro
   está activo) el de registro. Se presentan como dos tarjetas lado a lado. */
.woocommerce-account .page-shell .woocommerce { max-width: 980px; margin-inline: auto; }
.woocommerce-account:not(.logged-in) .page-title { text-align: center; }
/* `stretch` (no `start`): las dos tarjetas ocupan la misma altura aunque una
   tenga más contenido. Con `start` cada una tomaba la suya y quedaban desiguales. */
.woocommerce .u-columns.col2-set {
  display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: stretch;
}
/* Colocación EXPLÍCITA de cada tarjeta (acceso izquierda, registro derecha).
   Dejarlo a la colocación automática las cruzaba de columna y las mandaba a
   filas distintas, dejando huecos. WooCommerce además fuerza `float` y
   `width: 48%/100%` con varias reglas, así que se anulan con !important. */
.woocommerce .u-columns.col2-set > .u-column1 { grid-area: 1 / 1; }
.woocommerce .u-columns.col2-set > .u-column2 { grid-area: 1 / 2; }
.woocommerce .u-columns.col2-set > .u-column1,
.woocommerce .u-columns.col2-set > .u-column2 {
  width: auto !important; float: none !important; margin: 0 !important;
}
.woocommerce form.login, .woocommerce form.register,
.woocommerce .u-column1 > h2, .woocommerce .u-column2 > h2 { margin: 0; }
.woocommerce .u-column1, .woocommerce .u-column2 {
  background: var(--panel); border: 1px solid var(--line); border-radius: 20px; padding: 32px 30px;
}
.woocommerce .u-column1 > h2, .woocommerce .u-column2 > h2 {
  font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso); font-size: 26px;
  color: var(--text); margin-bottom: 6px;
}
.woocommerce form.login, .woocommerce form.register {
  border: none; padding: 0; margin: 18px 0 0; background: transparent;
}
.woocommerce form .form-row { padding: 0; margin: 0 0 16px; }
.woocommerce form .form-row label {
  display: block; margin-bottom: 6px; font-size: 12px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--faint);
}
.woocommerce form .form-row .required { color:var(--cy-txt); border: none; }
.woocommerce form.login .woocommerce-form-login__rememberme,
.woocommerce form .woocommerce-form__label-for-checkbox {
  display: flex; align-items: center; gap: 8px; font-size: 13px;
  color: var(--muted); text-transform: none; letter-spacing: 0; font-weight: 500;
}
.woocommerce form .woocommerce-form__input-checkbox { width: auto; margin: 0; accent-color:var(--cy-txt); }
.woocommerce form.login button[type="submit"], .woocommerce form.register button[type="submit"] {
  width: 100%; justify-content: center; margin-top: 4px; font-size: 14px; padding: 13px 22px;
}
.woocommerce .woocommerce-LostPassword {
  margin: 14px 0 0; font-size: 13px; text-align: center;
}
.woocommerce .woocommerce-privacy-policy-text p { font-size: 12.5px; color: var(--faint); line-height: 1.5; }
.woocommerce-password-strength { border-radius: 9px; font-size: 12px; padding: 8px 12px; }
.woocommerce-password-hint { display: block; margin-top: 6px; font-size: 12px; color: var(--faint); }

/* ── Mi cuenta: panel con sesión iniciada ── */
.woocommerce-account.logged-in .woocommerce {
  display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 30px; align-items: start;
}
/* WooCommerce fija `width: 30%/68%` y `float` con selectores más específicos
   (`.woocommerce-account .woocommerce-MyAccount-…`), lo que rompía la rejilla:
   las columnas quedaban con anchos sueltos y en el orden cambiado. Se igualan
   los selectores y se anula ancho y flotado. */
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
  width: auto !important; float: none !important; margin: 0;
}
/* Colocación EXPLÍCITA: el menú a la izquierda y el contenido a la derecha.
   Sin esto quedaba a merced de la colocación automática y de los flotados que
   WooCommerce aplica, y las columnas salían cambiadas. */
.woocommerce-account .woocommerce-MyAccount-navigation { grid-area: 1 / 1; }
.woocommerce-account .woocommerce-MyAccount-content { grid-area: 1 / 2; }
.woocommerce-account .woocommerce-MyAccount-navigation {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px; padding: 12px;
}
.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 3px; }
.woocommerce-MyAccount-navigation li { padding: 0; }
.woocommerce-MyAccount-navigation li a {
  display: flex; align-items: center; gap: 11px;
  padding: 11px 15px; border: none; border-radius: 11px;
  color: var(--muted) !important; font-weight: 600; font-size: 14px; transition: .14s;
}

/* ── Iconos del menú de Mi cuenta ──
   Misma familia que el carrito y el usuario de la cabecera: trazo 1.8 sobre una
   caja de 24. Van por `mask` y no como <img> para que hereden `currentColor`:
   así siguen al gris, al blanco del hover y al cian del activo sin duplicar
   archivos. La plantilla de WooCommerce escapa las etiquetas, de modo que meter
   el SVG en el HTML exigiría sobreescribirla; esto no. */
.woocommerce-MyAccount-navigation li a::before {
  content: ""; width: 19px; height: 19px; flex: none;
  background: currentColor;
  -webkit-mask: var(--ic) center / contain no-repeat;
  mask: var(--ic) center / contain no-repeat;
}
.woocommerce-MyAccount-navigation li {
  /* Escritorio: cuadrícula de cuatro paneles. */
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.2' y='3.2' width='7.2' height='7.2' rx='1.6'/%3E%3Crect x='13.6' y='3.2' width='7.2' height='7.2' rx='1.6'/%3E%3Crect x='3.2' y='13.6' width='7.2' height='7.2' rx='1.6'/%3E%3Crect x='13.6' y='13.6' width='7.2' height='7.2' rx='1.6'/%3E%3C/svg%3E");
}
/* Pedidos: caja de envío. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--orders {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.4 7.6v8.8L12 21.2l-8.4-4.8V7.6L12 2.8z'/%3E%3Cpath d='M3.8 7.7 12 12.4l8.2-4.7M12 12.4v8.8'/%3E%3C/svg%3E");
}
/* Licencias: llave. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--licencias {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.6' cy='16.4' r='3.8'/%3E%3Cpath d='m10.3 13.7 8-8M17 7l2.2 2.2M14.6 9.4l2.2 2.2'/%3E%3C/svg%3E");
}
/* Descargas: flecha hacia una bandeja. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--downloads {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.4v10.8M7.8 10.2 12 14.4l4.2-4.2'/%3E%3Cpath d='M4.2 16.6v2.4a1.6 1.6 0 0 0 1.6 1.6h12.4a1.6 1.6 0 0 0 1.6-1.6v-2.4'/%3E%3C/svg%3E");
}
/* Direcciones: marcador de mapa. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--edit-address {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.8c-3.6 0-6.4 2.8-6.4 6.3 0 4.7 6.4 11.9 6.4 11.9s6.4-7.2 6.4-11.9c0-3.5-2.8-6.3-6.4-6.3z'/%3E%3Ccircle cx='12' cy='9.2' r='2.4'/%3E%3C/svg%3E");
}
/* Detalles de la cuenta: la misma persona que en la cabecera. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--edit-account {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='3.6'/%3E%3Cpath d='M4.8 20c0-3.6 3.2-5.6 7.2-5.6s7.2 2 7.2 5.6'/%3E%3C/svg%3E");
}
/* Salir: flecha saliendo por la puerta. */
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout {
  --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.4 3.6H5.8a1.6 1.6 0 0 0-1.6 1.6v13.6a1.6 1.6 0 0 0 1.6 1.6h8.6'/%3E%3Cpath d='M15.6 8.4 19.8 12l-4.2 3.6M19.4 12H9.4'/%3E%3C/svg%3E");
}
.woocommerce-MyAccount-navigation li a:hover { background: rgba(0, 181, 212, .09); color: var(--text) !important; }
.woocommerce-MyAccount-navigation li.is-active a {
  background: rgba(0, 181, 212, .14); color:var(--cy-txt) !important;
}
.woocommerce-MyAccount-content { color: var(--muted); line-height: 1.65; min-width: 0; }
.woocommerce-MyAccount-content p { margin: 0 0 14px; }
.woocommerce-MyAccount-content a { color:var(--cy-txt); }
.woocommerce-MyAccount-content mark, .woocommerce mark {
  background: transparent; color: var(--text); font-weight: 700;
}
.woocommerce-MyAccount-content .woocommerce-Address {
  background: var(--panel); border: 1px solid var(--line); border-radius: 16px; padding: 22px; margin-bottom: 16px;
}
.woocommerce-MyAccount-content h2, .woocommerce-MyAccount-content h3 {
  color: var(--text); font-size: 20px; margin: 0 0 12px;
}

/* ── Licencias del cliente (Mi cuenta → Licencias) ── */
.owari-lic-intro { color: var(--muted); margin: 0 0 20px; }
.owari-lic-ayuda { color: var(--muted); font-size: 13px; margin: 8px 0 0; }
.owari-licencias { display: flex; flex-direction: column; gap: 16px; }
.owari-lic {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px; padding: 22px 24px;
}
.owari-lic-vigente { border-color: rgba(0, 181, 212, .35); }
.owari-lic-vencida { border-color: rgba(226, 87, 76, .35); }
.owari-lic-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.owari-lic-top h3 {
  margin: 0; font-size: 19px; color: var(--text);
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.owari-lic-tipo {
  font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted); border: 1px solid var(--line2); border-radius: 999px; padding: 3px 9px;
}
.owari-lic-estado {
  flex: none; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  border-radius: 999px; padding: 5px 12px;
}
.owari-lic-estado-vigente { background: rgba(0, 181, 212, .15); color:var(--cy-txt); }
/* Ámbar: venció pero sigue funcionando durante los meses de gracia. */
.owari-lic-estado-gracia { background: rgba(240, 173, 78, .16); color: #f5c072; }
.owari-lic-estado-vencida { background: rgba(226, 87, 76, .15); color: #ff8b82; }
.owari-lic-estado-suspendida { background: rgba(226, 87, 76, .22); color: #ff8b82; }
.owari-lic-estado-anulada { background: var(--line); color: var(--faint); }
.owari-lic-datos {
  display: flex; flex-wrap: wrap; gap: 10px 34px; margin: 18px 0 0; padding: 16px 0 0;
  border-top: 1px solid var(--line);
}
.owari-lic-datos div { margin: 0; }
.owari-lic-datos dt {
  font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--faint);
}
.owari-lic-datos dd { margin: 4px 0 0; color: var(--text); font-size: 14.5px; }
.owari-lic-datos code {
  background: var(--panel2); border: 1px solid var(--line2); border-radius: 7px;
  padding: 4px 9px; font-size: 13px; color:var(--cy-txt);
}
.owari-lic-datos small { color: var(--faint); }
.owari-lic-nota, .owari-lic-aviso { color: var(--muted); font-size: 13.5px; line-height: 1.55; margin: 10px 0 0; }
.owari-lic-aviso { color: #ffb3ac; }

/* Facturas atrasadas: una por mes sin pagar, con su propio enlace de pago. */
.owari-lic-facturas {
  margin: 14px 0 0; padding: 14px 16px; border: 1px solid var(--line2);
  border-radius: 14px; background: var(--panel2);
}
.owari-lic-facturas-tit { margin: 0 0 10px; font-size: 14px; color: var(--text); }
.owari-lic-facturas ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.owari-lic-facturas li {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between;
  font-size: 14px; color: var(--muted);
}
.owari-lic-facturas li .amount { color: var(--text); font-weight: 600; }
.owari-lic-pagar {
  flex: none; border: 1px solid var(--cy-txt); color: var(--cy-txt); border-radius: 999px;
  padding: 5px 14px; font-size: 13px; font-weight: 600; text-decoration: none;
}
.owari-lic-pagar:hover { background: rgba(0, 181, 212, .14); }
.owari-lic-facturas-nota { margin: 10px 0 0; font-size: 12.5px; color: var(--faint); }
.owari-lic-renovar {
  margin-top: 16px; padding: 16px 18px; border-radius: 14px;
  background: rgba(0, 181, 212, .07); border: 1px solid rgba(0, 181, 212, .28);
}
.owari-lic-renovar-tit { margin: 0 0 4px; color: var(--text); font-size: 14.5px; }
.owari-lic-renovar-tit b { color:var(--cy-txt); }
.owari-lic-renovar-tit small, .owari-lic-renovar-op { color: var(--muted); font-size: 12.5px; font-weight: 500; }
.owari-lic-renovar-op { margin: 0 0 12px; }
/* Las dos opciones de renovación: las elige el CLIENTE */
.owari-lic-opciones { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.owari-lic-op { margin: 0; }
.owari-lic-op button {
  width: 100%; display: flex; flex-direction: column; gap: 3px; cursor: pointer;
  background: var(--panel2); border: 1.5px solid var(--line2); border-radius: 14px;
  padding: 14px 16px; text-align: left; font-family: 'Montserrat', sans-serif; transition: .15s;
}
.owari-lic-op button:hover { border-color:var(--cy-txt); transform: translateY(-2px); }
.owari-lic-op.elegida button { border-color:var(--cy-txt); background: rgba(0, 181, 212, .12); }
.owari-lic-op-nom {
  font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color:var(--cy-txt);
}
.owari-lic-op-precio { font-size: 19px; font-weight: 700; color: var(--text); }
.owari-lic-op-nota { font-size: 12px; color: var(--muted); }
@media (max-width: 480px) { .owari-lic-opciones { grid-template-columns: 1fr; } }
.owari-lic-dominio { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); }
.owari-lic-activa { margin: 0 0 10px; color: var(--muted); font-size: 14px; }
.owari-lic-activa b { color:var(--cy-txt); }
.owari-lic-form label {
  display: block; margin-bottom: 7px; font-size: 11px; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--faint);
}
.owari-lic-fila { display: flex; gap: 10px; flex-wrap: wrap; }
.owari-lic-fila input[type="text"] {
  flex: 1; min-width: 200px; background: var(--panel2); border: 1px solid var(--line2);
  color: var(--text); border-radius: 999px; padding: 11px 18px;
  font-family: 'Montserrat', sans-serif; font-size: 14px;
}
.owari-lic-fila input[type="text"]:focus {
  outline: none; border-color:var(--cy-txt); box-shadow: 0 0 0 2px rgba(0, 181, 212, .3);
}
@media (max-width: 560px) { .owari-lic-top { flex-direction: column; } }

/* ── Datos de facturación dentro de «Detalles de la cuenta» ── */
.owari-fact {
  margin: 26px 0 0; padding: 20px 22px;
  background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
}
.owari-fact legend { padding: 0 8px; font-weight: 700; font-size: 17px; }
/* Los <select> nativos traen su propio fondo blanco y despliegan una lista
   clara: `color-scheme: dark` es lo que oscurece también esa lista. */
.owari-fact select { width: 100%; color-scheme: dark; }
.owari-fact .form-row { margin-bottom: 14px; }
.owari-fact .form-row label { display: block; margin-bottom: 5px; }
/* --muted y no --faint: a 13px, --faint se queda en 4,16 de contraste. */
.owari-fact-ayuda { color: var(--muted); font-size: 13px; margin: 0 0 14px; }
.owari-fact-empresa[hidden] { display: none; }
.owari-fact-rut { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.owari-fact-rut > label { display: block; font-weight: 600; margin-bottom: 4px; }
.owari-fact-quitar { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.owari-fact-vista {
  width: 100%; height: 420px; margin-top: 14px;
  border: 1px solid var(--line); border-radius: 12px; background: var(--panel2);
}
.owari-fact-vista img { width: 100%; height: 100%; object-fit: contain; display: block; }
.owari-fact-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 16px 0 0; }
/* Igual que en el admin: el control nativo no se puede estilar. */
.owari-rut-archivo { position: absolute; width: 1px; height: 1px; opacity: 0; }
.owari-rut-archivo:focus + .btn { outline: 2px solid var(--cy); outline-offset: 2px; }
.owari-rut-elegido { color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.owari-rut-elegido.tiene { color:var(--cy-txt); font-weight: 600; }
@media (max-width: 560px) {
  .owari-fact { padding: 16px; }
  .owari-fact-vista { height: 300px; }
}

/* Resumen de líneas bajo el total, en segundo plano. */
.owari-pedido-lineas { display: block; margin-top: 3px; font-size: 12px; color: var(--faint); }

/* ── «Mis pedidos»: acciones ──
   WooCommerce las pinta pegadas una contra otra y con márgenes propios. */
.woocommerce-orders-table__cell-order-actions {
  display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; align-items: center;
}
.woocommerce .woocommerce-orders-table__cell-order-actions a.button {
  margin: 0; padding: 9px 18px; font-size: 13px;
}
/* La factura va en versión fantasma: es un documento, no una acción de compra,
   y su sola presencia le dice al cliente que ya se emitió. */
.woocommerce .woocommerce-orders-table__cell-order-actions a.button.owari_factura {
  background: transparent; color:var(--cy-txt); border-color:var(--cy-txt);
}
.woocommerce .woocommerce-orders-table__cell-order-actions a.button.owari_factura::before {
  content: '\2193'; font-weight: 700; margin-right: -3px;
}
.woocommerce .woocommerce-orders-table__cell-order-actions a.button.owari_factura:hover {
  background: var(--cy); color: #042530;
}
@media (max-width: 700px) {
  .woocommerce-orders-table__cell-order-actions { justify-content: flex-start; }
}

/* ── Documentos del pedido (lado del cliente) ── */
.owari-docs-cliente { margin-top: 34px; }
.owari-docs-cliente h2 {
  font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso);
  font-size: 24px; color: var(--text); margin: 0 0 16px;
}
.owari-doc-c {
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px;
  padding: 20px 22px; margin-bottom: 16px;
}
.owari-doc-c header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; flex-wrap: wrap; margin-bottom: 14px;
}
.owari-doc-c h3 { margin: 0; font-size: 17px; color: var(--text); }
.owari-doc-c-vista {
  width: 100%; height: 460px; border: 1px solid var(--line2); border-radius: 12px;
  background: #0b2130; display: block;
}
.owari-doc-c-vista img { width: 100%; height: 100%; object-fit: contain; display: block; }
@media (max-width: 600px) { .owari-doc-c-vista { height: 320px; } }

/* ── Formulario «Detalles de la cuenta» ──
   El bloque de contraseña viene en un <fieldset> con el borde por defecto del
   navegador y sin separación del botón, que quedaba pegado a la caja. */
.woocommerce-EditAccountForm fieldset {
  border: 1px solid var(--line); border-radius: 16px;
  background: var(--line);
  padding: 8px 24px 4px; margin: 30px 0 0;
}
.woocommerce-EditAccountForm legend {
  padding: 0 10px; font-size: 12px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color:var(--cy-txt);
}
.woocommerce-EditAccountForm fieldset .form-row:last-child { margin-bottom: 20px; }
/* Separar el botón del recuadro anterior (el <p> final del formulario). */
.woocommerce-EditAccountForm > p:last-of-type,
.woocommerce-EditAccountForm .clear + p { margin-top: 28px; }
.woocommerce-EditAccountForm button[type="submit"] { padding: 13px 26px; }
/* Etiquetas largas: que no griten tanto en mayúsculas apretadas. */
.woocommerce-EditAccountForm .form-row label { line-height: 1.5; letter-spacing: .04em; }
/* Ojo de «mostrar contraseña» dentro del campo, alineado y en el gris del tema */
.woocommerce form .password-input, .woocommerce form .show-password-input { position: relative; display: block; }
.woocommerce form .show-password-input {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  color: var(--faint); cursor: pointer;
}
.woocommerce form .show-password-input:hover,
.woocommerce form .show-password-input.display-password { color:var(--cy-txt); }
/* Especificidad ≥ que `.woocommerce form .form-row input.input-text`, que fija
   el relleno base; si no, el texto pasa por debajo del icono del ojo. */
.woocommerce form .form-row .password-input input.input-text { padding-right: 44px; }
@media (max-width: 860px) {
  .woocommerce-account.logged-in .woocommerce { grid-template-columns: 1fr; gap: 20px; }
  .woocommerce .u-columns.col2-set { grid-template-columns: 1fr; }
  /* Con una sola columna hay que RECOLOCAR en filas: si se dejan las áreas de
     escritorio (1/1 y 1/2), la rejilla crea una segunda columna implícita y las
     tarjetas se quedan lado a lado, estrujadas. */
  .woocommerce .u-columns.col2-set > .u-column1 { grid-area: 1 / 1; }
  .woocommerce .u-columns.col2-set > .u-column2 { grid-area: 2 / 1; }
  .woocommerce-account .woocommerce-MyAccount-navigation { grid-area: 1 / 1; }
  .woocommerce-account .woocommerce-MyAccount-content { grid-area: 2 / 1; }
}

/* ── Contenedor de las páginas de tienda (woocommerce.php) ── */
/* Recorta los resplandores, que sobresalen por la derecha (ver .page-shell). */
.woo-shell { position: relative; overflow-x: clip; }
.woo-shell .woo-glow {
  position: absolute; width: 520px; height: 520px; right: -140px; top: -200px;
  border-radius: 50%; filter: blur(90px); opacity: .4; pointer-events: none;
  background: radial-gradient(circle, var(--cy) 0%, transparent 60%);
}
.woo-shell .wrap { position: relative; z-index: 2; }
.woocommerce .page-title, .woo-shell h1.page-title {
  font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso);
  font-size: clamp(30px, 4vw, 52px); margin-bottom: 26px;
}
.woocommerce .woocommerce-result-count { color: var(--faint); font-size: 13px; }
/* Selector de ordenación. El desplegable que abre el navegador es NATIVO: no se
   puede estilar por CSS. `color-scheme: dark` es lo que hace que el sistema lo
   pinte oscuro (si no, sale la lista blanca con bordes duros de la captura). */
.woocommerce .woocommerce-ordering select {
  color-scheme: dark;
  background: var(--panel2); border: 1px solid var(--line2); color: var(--text);
  border-radius: 999px; padding: 10px 40px 10px 18px; font-family: 'Montserrat', sans-serif;
  font-size: 13px; font-weight: 600; cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%2300b5d4' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 16px center; background-size: 11px;
  transition: .15s;
}
.woocommerce .woocommerce-ordering select:hover { border-color:var(--cy-txt); }
.woocommerce .woocommerce-ordering select:focus {
  outline: none; border-color:var(--cy-txt); box-shadow: 0 0 0 2px rgba(0, 181, 212, .35);
}
.woocommerce .woocommerce-ordering select option { background: var(--panel); color: var(--text); }
/* Misma corrección para los demás select del tema (checkout, cantidad…). */
.woo-shell select, .page-shell select, .woocommerce-page select { color-scheme: dark; }

/* ── Desplegable propio (main.js) ──
   Sustituye visualmente al <select> nativo, cuya lista dibuja el sistema
   operativo y NO se puede estilar por CSS. El <select> real sigue en el DOM
   (oculto) porque es el que envía el formulario y el que escucha WooCommerce. */
/* ══════════════════════════════════════════════════════════════════════════
   SELECTOR OWARI — regla del tema
   ═══════════════════════════════════════════════════════════════════════════
   TODO <select> del sitio usa este componente: `assets/js/main.js` lo aplica a
   todos, sin listas de excepciones por página. El desplegable nativo lo dibuja
   el sistema operativo y no se puede estilar, así que se construye uno propio y
   el <select> real queda oculto detrás (sigue enviando el formulario).

   Las medidas NO se declaran por contexto sino con variables, y cada contexto
   solo redefine las variables que necesita. Así un selector nuevo en cualquier
   parte de la web sale bien sin tocar nada.

     --sel-radio     esquinas          --sel-relleno   relleno del botón
     --sel-texto     tamaño de letra   --sel-peso      grosor de la letra
     --sel-ancho     ancho mínimo
   ══════════════════════════════════════════════════════════════════════════ */
.owari-select {
  --sel-radio: 999px;          /* píldora: es el estilo suelto, tipo barra de filtros */
  --sel-relleno: 11px 18px;
  --sel-texto: 13px;
  --sel-peso: 600;
  --sel-ancho: 230px;
  --sel-alto-linea: normal;
  position: relative; display: inline-block; min-width: var(--sel-ancho);
}

/* Como CAMPO de formulario deja de ser píldora y pasa a ser un campo más: ocupa
   la fila y copia el radio, el relleno y la letra de los <input> vecinos.
   La clase la pone el JS al detectar que el <select> vive en una fila de
   formulario; los controles sueltos (barra de ordenar) siguen siendo píldora. */
.owari-select.es-campo {
  --sel-radio: 11px;
  --sel-relleno: 12px 14px;
  /* 13.3333px es el tamaño que el navegador da por defecto a los campos de
     formulario, que es el que usan los <input>: igualarlo hace que el botón
     mida exactamente lo mismo que un campo de texto vecino. */
  --sel-texto: 13.3333px;
  --sel-peso: 400;
  display: block; width: 100%; min-width: 0;
}

/* Checkout de bloques: ahí la etiqueta NO va encima del campo, flota DENTRO
   encogida, y el campo reserva 24px arriba para ella. Sin este hueco el valor
   se monta sobre la etiqueta. Medidas idénticas a un campo de texto del bloque. */
.owari-en-bloque .owari-select {
  --sel-relleno: 24px 9px 8px;
  --sel-texto: 16px;
  /* line-height 1 deja el alto exacto del campo nativo (50px); con el normal
     del navegador se iba 3px por encima y las filas quedaban desiguales. */
  --sel-alto-linea: 1;
}
.owari-en-bloque .owari-select-btn { align-items: flex-end; }
/* La etiqueta se encoge sola cuando el <select> tiene valor; como está oculto,
   esa regla ya no dispara y hay que dejarla encogida. */
.owari-en-bloque .wc-blocks-components-select__label {
  transform: scale(.82); transform-origin: left top;
}
/* El bloque dibuja su propia flecha sobre el campo: sobra la nuestra. */
.owari-en-bloque .owari-select-btn::after { display: none; }

.owari-select-nativo {
  position: absolute; opacity: 0; pointer-events: none; width: 100%; height: 100%; left: 0; top: 0;
}
.owari-select-btn {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%;
  background: var(--panel2); border: 1px solid var(--line2); color: var(--text);
  border-radius: var(--sel-radio); padding: var(--sel-relleno);
  font-family: 'Montserrat', sans-serif; line-height: var(--sel-alto-linea);
  font-size: var(--sel-texto); font-weight: var(--sel-peso);
  cursor: pointer; transition: .15s; text-align: left;
}
.owari-select-btn::after {
  content: ""; width: 11px; height: 8px; flex: none; background: var(--cy);
  clip-path: polygon(0 0, 100% 0, 50% 100%); transition: transform .18s;
}
.owari-select.abierto .owari-select-btn::after { transform: rotate(180deg); }
.owari-select-btn:hover { border-color:var(--cy-txt); }
.owari-select.abierto .owari-select-btn {
  border-color:var(--cy-txt); box-shadow: 0 0 0 2px rgba(0, 181, 212, .3);
}
/* El panel es lo que se despliega: buscador (si procede) + lista. */
.owari-select-panel {
  position: absolute; z-index: 60; top: calc(100% + 8px); left: 0; right: 0;
  padding: 6px;
  background: var(--panel); border: 1px solid var(--line2); border-radius: 14px;
  box-shadow: 0 24px 60px -24px rgba(0, 0, 0, .8);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  /* La transición NO incluye `visibility`: si se difiere, el panel sigue oculto
     durante ese rato y el buscador no puede recibir el foco al abrir. */
  transition: opacity .16s, transform .16s;
}
.owari-select.abierto .owari-select-panel { opacity: 1; visibility: visible; transform: none; }
.owari-select-lista {
  list-style: none; margin: 0; padding: 0;
  /* Con listas largas (países) hay que poder desplazarse. */
  max-height: 260px; overflow-y: auto; overscroll-behavior: contain;
}
.owari-select-op {
  padding: 10px 14px; border-radius: 9px; font-size: 13.5px; color: var(--muted);
  cursor: pointer; outline: none; transition: .12s;
}
/* `.activa` es la opción resaltada con las flechas (el foco se queda en el
   buscador o en el botón, según la pauta de combobox accesible). */
.owari-select-op:hover, .owari-select-op:focus, .owari-select-op.activa {
  background: rgba(0, 181, 212, .12); color: var(--text);
}
.owari-select-op.sel { color:var(--cy-txt); font-weight: 700; }
.owari-select-op.sel::after { content: " ✓"; }

/* Buscador: solo cuando hay más opciones de las que se recorren a ojo. */
.owari-select-buscar { display: none; }
.owari-select.con-buscador .owari-select-buscar {
  display: block; width: 100%; margin: 0 0 6px;
  background: var(--panel2); border: 1px solid var(--line2); color: var(--text);
  border-radius: 9px; padding: 9px 12px; font-size: 13px;
  font-family: 'Montserrat', sans-serif;
}
.owari-select-buscar:focus { border-color:var(--cy-txt); outline: none; }
.owari-select-buscar::placeholder { color: var(--faint); }
.owari-select-vacio {
  margin: 0; padding: 12px 14px; color: var(--muted); font-size: 13px; text-align: center;
}

/* ── Distribución con barra lateral ──
   El orden en el DOM es SIEMPRE lateral → principal (mejor para lectores de
   pantalla y para móvil); a la derecha se coloca solo visualmente con `order`. */
.woo-layout.con-lateral { display: grid; grid-template-columns: 268px minmax(0, 1fr); gap: 34px; align-items: start; }
.woo-layout.lateral-derecha .woo-lateral { order: 2; }
.woo-layout.lateral-derecha .woo-principal { order: 1; }
.woo-layout.sin-lateral .woo-principal { width: 100%; }
.woo-principal { min-width: 0; }
@media (max-width: 900px) {
  .woo-layout.con-lateral { grid-template-columns: 1fr; gap: 26px; }
  .woo-layout.lateral-derecha .woo-lateral { order: 2; }
}

/* ── Widgets de la barra lateral ── */
.woo-lateral { position: relative; }
.owari-widget {
  background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px; margin-bottom: 16px;
}
.owari-widget-tit {
  font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--faint); margin: 0 0 14px; font-family: 'Montserrat', sans-serif;
}
.owari-lista-lateral { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.owari-lista-lateral li {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border-radius: 9px; transition: .14s;
}
.owari-lista-lateral li:hover { background: rgba(0, 181, 212, .09); }
.owari-lista-lateral a {
  flex: 1; padding: 9px 12px; font-size: 14px; font-weight: 600;
  color: var(--muted) !important; transition: .14s;
}
.owari-lista-lateral li:hover a { color: var(--text) !important; }
.owari-lista-lateral li.activo { background: rgba(0, 181, 212, .14); }
.owari-lista-lateral li.activo a { color:var(--cy-txt) !important; }
.owari-lista-lateral .n {
  padding-right: 12px; font-size: 12px; font-weight: 700; color: var(--faint);
}

/* Categorías con miniatura */
.owari-lista-cats { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.owari-lista-cats li { border-radius: 12px; transition: .14s; }
.owari-lista-cats li:hover { background: rgba(0, 181, 212, .09); }
.owari-lista-cats li.activo { background: rgba(0, 181, 212, .14); }
.owari-lista-cats a {
  display: flex; align-items: center; gap: 12px; padding: 8px 12px 8px 8px;
  font-size: 14px; font-weight: 600; color: var(--muted) !important; transition: .14s;
}
.owari-lista-cats li:hover a { color: var(--text) !important; }
.owari-lista-cats li.activo a { color:var(--cy-txt) !important; }
.owari-cat-txt { flex: 1; min-width: 0; line-height: 1.3; }
.owari-lista-cats .n { font-size: 12px; font-weight: 700; color: var(--faint); flex: none; }
.owari-cat-mini {
  flex: none; width: 44px; height: 44px; border-radius: 10px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(145deg, var(--bg2), var(--panel2)); border: 1px solid var(--line);
  transition: .14s;
}
.owari-cat-mini img { width: 100%; height: 100%; object-fit: cover; display: block; }
.owari-cat-mini-svg svg { width: 34px; height: 34px; display: block; }
.owari-lista-cats li:hover .owari-cat-mini, .owari-lista-cats li.activo .owari-cat-mini {
  border-color:var(--cy-txt);
}

/* Buscador de productos */
.owari-widget-buscador form, .owari-widget .woocommerce-product-search {
  display: flex; gap: 8px;
}
.owari-widget .search-field, .owari-widget input[type="search"] {
  flex: 1; min-width: 0; background: var(--panel2); border: 1px solid var(--line2);
  color: var(--text); border-radius: 999px; padding: 11px 16px;
  font-family: 'Montserrat', sans-serif; font-size: 13.5px;
}
.owari-widget .search-field::placeholder { color: var(--faint); }
.owari-widget .search-field:focus {
  outline: none; border-color:var(--cy-txt); box-shadow: 0 0 0 2px rgba(0, 181, 212, .3);
}
.owari-widget button[type="submit"], .owari-widget input[type="submit"] {
  flex: none; background: var(--cy); color: #042530; border: none; border-radius: 999px;
  padding: 0 16px; font-weight: 700; font-size: 13px; cursor: pointer; transition: .15s;
}
.owari-widget button[type="submit"]:hover, .owari-widget input[type="submit"]:hover { background: var(--cy-soft); }

/* Widgets nativos de WordPress/WooCommerce que se añadan a mano */
.owari-widget ul { list-style: none; margin: 0; padding: 0; }
.owari-widget ul li { color: var(--muted); font-size: 14px; padding: 7px 0; }
.owari-widget ul li a { color: var(--muted) !important; }
.owari-widget ul li a:hover { color:var(--cy-txt) !important; }
.owari-widget .price { color:var(--cy-txt) !important; }

/* ── Catálogo: rejilla propia (la de Woo es de floats y no encaja) ── */
.woocommerce ul.products {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
  list-style: none; margin: 26px 0 0; padding: 0;
}
.woocommerce ul.products::before, .woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product {
  width: auto !important; margin: 0 !important; float: none !important; clear: none !important;
  background: var(--panel); border: 1px solid var(--line); border-radius: 18px;
  padding: 18px; display: flex; flex-direction: column; text-align: left; transition: .2s;
}
.woocommerce ul.products li.product:hover { border-color:var(--cy-txt); transform: translateY(-3px); }
.woocommerce ul.products li.product a img {
  border-radius: 12px; margin-bottom: 14px; background: var(--panel2);
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  color: var(--text); font-size: 17px; font-weight: 700; padding: 0; margin: 0 0 6px;
}
.woocommerce ul.products li.product .price {
  color:var(--cy-txt) !important; font-family: var(--fuente-titulo);
  font-size: 24px; font-weight: 400; margin: 0 0 14px;
}
.woocommerce ul.products li.product .price del { color: var(--faint) !important; font-size: 16px; }
.woocommerce ul.products li.product .price ins { text-decoration: none; }
.woocommerce ul.products li.product .button { margin-top: auto; align-self: flex-start; }
.woocommerce ul.products li.product .onsale,
.woocommerce span.onsale {
  background: var(--cy); color: #042530; border-radius: 999px; font-weight: 800;
  font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  min-height: 0; min-width: 0; padding: 5px 12px; line-height: 1; top: 12px; left: 12px; margin: 0;
}
.woocommerce .woocommerce-info + ul.products { margin-top: 0; }

/* ── Ficha de producto ── */
.woocommerce div.product { color: var(--text); }
.woocommerce div.product .product_title {
  color: var(--text); font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso);
  font-size: clamp(26px, 3.4vw, 42px); line-height: 1.1;
}
.woocommerce div.product p.price, .woocommerce div.product span.price {
  color:var(--cy-txt) !important; font-family: var(--fuente-titulo);
  font-size: 32px; font-weight: 400; margin: 14px 0 18px;
}
.woocommerce div.product p.price del { color: var(--faint) !important; font-size: 20px; }
.woocommerce div.product .woocommerce-product-details__short-description { color: var(--muted); line-height: 1.6; }
.woocommerce div.product div.images img { border-radius: 18px; background: var(--panel2); }

/* ── Galería del producto ───────────────────────────────────────────────────
   WooCommerce monta aquí flexslider (carrusel + miniaturas) y PhotoSwipe (la
   galería a pantalla completa). Trae su propio CSS, pero pensado para fondo
   claro: sin esto las miniaturas salen sin borde y la lupa en blanco sobre
   blanco. Los soportes se declaran en functions.php. */
.woocommerce div.product div.images { position: relative; }
.woocommerce div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce div.product .woocommerce-product-gallery__image a { display: block; }

/* La lupa: botón redondo del tema en vez del icono suelto del núcleo. */
.woocommerce div.product .woocommerce-product-gallery__trigger {
  top: 14px; right: 14px; width: 40px; height: 40px; z-index: 3;
  display: flex; align-items: center; justify-content: center;
  background: var(--velo-solido); border: 1px solid var(--line2); border-radius: 999px;
  color: var(--cy-txt); font-size: 0; text-decoration: none;
  transition: border-color .18s, background .18s;
}
.woocommerce div.product .woocommerce-product-gallery__trigger:hover {
  border-color: var(--cy-txt); background: var(--panel2);
}
/* El núcleo pinta ahí un emoji de lupa; se sustituye por un icono nítido. */
.woocommerce div.product .woocommerce-product-gallery__trigger::before,
.woocommerce div.product .woocommerce-product-gallery__trigger::after { content: none; }
.woocommerce div.product .woocommerce-product-gallery__trigger img { display: none; }
.woocommerce div.product .woocommerce-product-gallery__trigger::before {
  content: ""; display: block; width: 17px; height: 17px; border-radius: 999px;
  border: 2px solid currentColor; box-shadow: 7px 7px 0 -6px currentColor;
  transform: translate(-2px, -2px);
}

/* Miniaturas: mismo lenguaje que las tarjetas del tema.
   Los selectores llevan `div.images` porque WooCommerce declara
   `.woocommerce div.product div.images .flex-control-thumbs li{width:25%;float:left}`
   y con menos especificidad no se le gana. Ese 25 %, dentro de una rejilla, se
   calcula sobre la CELDA y dejaba las miniaturas en 24 px. */
.woocommerce div.product div.images .flex-control-thumbs {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  margin: 12px 0 0; padding: 0; list-style: none;
}
.woocommerce div.product div.images .flex-control-thumbs li {
  width: auto; float: none; margin: 0; list-style: none;
}
.woocommerce div.product div.images .flex-control-thumbs li img {
  width: 100%; height: auto; opacity: .55; border-radius: 10px;
  border: 1px solid var(--line); background: var(--panel2);
  cursor: pointer; transition: opacity .18s, border-color .18s;
}
.woocommerce div.product div.images .flex-control-thumbs li img:hover { opacity: .85; border-color: var(--line2); }
.woocommerce div.product div.images .flex-control-thumbs li img.flex-active {
  opacity: 1; border-color: var(--cy-txt);
}

/* PhotoSwipe: el fondo por defecto es negro puro y desentona con la marca. */
.pswp__bg { background: #04121c; }
.pswp__caption__center { color: var(--text, #eaf4f8); text-align: center; }
.woocommerce div.product .product_meta { color: var(--faint); font-size: 13px; margin-top: 20px; }
.woocommerce div.product .product_meta a { color: var(--muted); }
.woocommerce div.product form.cart { margin: 22px 0; }
.woocommerce div.product .woocommerce-tabs { margin-top: 30px; }
.woocommerce div.product .woocommerce-tabs ul.tabs { padding: 0; margin: 0 0 -1px; }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { border-bottom-color: var(--line); }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px 12px 0 0;
  box-shadow: none;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { background: var(--panel2); border-bottom-color: var(--panel2); }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { color: var(--muted); font-weight: 600; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color:var(--cy-txt); }
.woocommerce div.product .woocommerce-tabs .panel {
  color: var(--muted); background: var(--panel2); border: 1px solid var(--line);
  border-radius: 0 12px 12px 12px; padding: 24px;
}
.woocommerce div.product .woocommerce-tabs .panel h2 { color: var(--text); font-size: 20px; }
/* Imagen del producto: es la imagen destacada real (ver inc/producto-visual.php),
   así que se estila la de WooCommerce, sin marcado propio. */
.woocommerce ul.products li.product a img,
.woocommerce div.product div.images img {
  background: #0b2130; border: 1px solid var(--line);
}

/* ── Flechas de navegación arriba de la ficha ── */
.owari-prodnav-top {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  margin: 0 0 22px; clear: both;
}
.owari-prodnav-flechas { display: flex; gap: 10px; }
.owari-flecha {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 50%;
  border: 1px solid var(--line2); color: var(--text) !important; background: var(--panel);
  transition: .16s;
}
.owari-flecha svg { width: 20px; height: 20px; display: block; }
.owari-flecha:hover { border-color:var(--cy-txt); color:var(--cy-txt) !important; transform: translateY(-2px); }
.owari-flecha.desactivada { opacity: .3; pointer-events: none; }
/* Nombre del producto vecino al pasar el cursor. */
.owari-flecha-tip {
  position: absolute; top: calc(100% + 8px); right: 0; white-space: nowrap; z-index: 20;
  background: var(--panel); border: 1px solid var(--line2); border-radius: 9px;
  padding: 7px 12px; font-size: 12.5px; font-weight: 600; color: var(--text);
  opacity: 0; visibility: hidden; transform: translateY(-4px); transition: .15s; pointer-events: none;
}
.owari-flecha:hover .owari-flecha-tip, .owari-flecha:focus .owari-flecha-tip {
  opacity: 1; visibility: visible; transform: none;
}
@media (max-width: 480px) { .owari-flecha-tip { display: none; } }

/* ── Navegación anterior / siguiente entre productos ── */
.owari-prodnav {
  display: grid; grid-template-columns: 1fr auto 1fr; gap: 16px; align-items: center;
  margin: 40px 0 0; padding-top: 26px; border-top: 1px solid var(--line);
}
.owari-prodnav-item {
  display: flex; flex-direction: column; gap: 3px; max-width: 260px;
  padding: 12px 18px; border: 1px solid var(--line); border-radius: 14px;
  background: var(--panel); transition: .18s;
}
.owari-prodnav-item:hover { border-color:var(--cy-txt); transform: translateY(-2px); }
.owari-prodnav-item.next { margin-left: auto; text-align: right; }
.owari-prodnav-item .lab {
  font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color:var(--cy-txt);
}
.owari-prodnav-item .nom { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.35; }
.owari-prodnav-todos {
  font-size: 13px; font-weight: 600; color: var(--muted) !important; white-space: nowrap;
}
.owari-prodnav-todos:hover { color:var(--cy-txt) !important; }
@media (max-width: 680px) {
  .owari-prodnav { grid-template-columns: 1fr 1fr; }
  .owari-prodnav-todos { grid-column: 1 / -1; order: 3; text-align: center; }
}

/* Datos del plan en la ficha (mismo contenido que la tarjeta de Planes). */
.owari-plan-uso {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 18px;
  padding: 14px 0 16px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  margin-bottom: 18px;
}
.owari-plan-lab {
  font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--faint);
}
.owari-plan-v { font-size: 15px; font-weight: 700; color: var(--text); }
.owari-plan-feats {
  list-style: none; padding: 0; margin: 0 0 24px;
  display: flex; flex-direction: column; gap: 11px;
}
.owari-plan-feats li {
  font-size: 14px; color: var(--muted); line-height: 1.45; padding-left: 25px; position: relative;
}
.owari-plan-feats li::before {
  content: ""; position: absolute; left: 0; top: 6px; width: 14px; height: 9px;
  border-left: 2px solid var(--cy); border-bottom: 2px solid var(--cy); transform: rotate(-45deg);
}

.woocommerce .related > h2, .woocommerce .up-sells > h2, .woocommerce .cross-sells > h2 {
  color: var(--text); font-family: var(--fuente-titulo); font-weight: var(--fuente-titulo-peso);
  font-size: 26px; margin: 44px 0 0;
}

@media (max-width: 920px) { .woocommerce ul.products { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .woocommerce ul.products { grid-template-columns: 1fr; } }

/* ── Página de gracias (order-received) — patrón gracias-premium.html ── */
.woocommerce-order {
  max-width: 640px; margin: 0 auto; text-align: center;
  background: var(--panel); border: 1px solid var(--line); border-radius: 24px;
  padding: 52px 40px 44px; box-shadow: 0 30px 80px -30px rgba(0,0,0,.6);
}
.woocommerce-order > p.woocommerce-notice--success,
.woocommerce-thankyou-order-received {
  font-size: clamp(22px, 3.5vw, 30px); line-height: 1.25; color: var(--text);
  font-family: var(--fuente-titulo); margin: 0 0 24px;
}
.woocommerce-order ul.woocommerce-order-overview {
  list-style: none; margin: 0 0 26px; padding: 18px 0; display: flex; flex-wrap: wrap;
  justify-content: center; gap: 14px 28px; border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line); font-size: 13px; color: var(--muted);
}
.woocommerce-order ul.woocommerce-order-overview li { border: none; float: none; margin: 0; padding: 0; }
.woocommerce-order ul.woocommerce-order-overview li strong { display: block; color: var(--text); margin-top: 4px; }
.woocommerce-order .woocommerce-order-details, .woocommerce-order .woocommerce-customer-details { text-align: left; }

@media (max-width: 760px) {
  .woocommerce-order { padding: 36px 22px; }
  .woocommerce table.shop_table_responsive tr { background: transparent; }
  .woocommerce table.shop_table_responsive tr td::before { color: var(--faint); }
}

/* ── Botones de bloque dentro de la tienda ──
   La rejilla de productos del carrito vacío usa botones de Gutenberg
   (`.wp-block-button__link`), que traen el gris de fábrica y se saltaban todo
   el tema: sobre la paleta clara quedaban en 2,19 de contraste. Se les da el
   mismo botón de la marca. El texto va oscuro fijo porque el fondo es SIEMPRE
   cian, en cualquier paleta. */
.woo-shell .wp-block-button__link,
.page-shell .wp-block-button__link {
  background: var(--cy) !important;
  color: #042530 !important;
  border-color: transparent !important;
  border-radius: 999px;
  font-weight: 700;
}
.woo-shell .wp-block-button__link:hover,
.page-shell .wp-block-button__link:hover { background: var(--cy-soft) !important; }
