/* ==========================================================================
   ENT — WooCommerce skin (var(--ul-*) tokens)
   ========================================================================== */

.ent-shop { padding-bottom: var(--ul-space-4xl); }
.ent-shop__body { padding-top: var(--ul-space-2xl); }

/* Full-width sidebar removed */
.woocommerce .ent-shop__body::after { content: ""; display: table; clear: both; }

/* ==========================================================================
   Hero de archivo (categoría / marca / tienda / búsqueda)
   ========================================================================== */
.ent-cat-hero {
	position: relative;
	background: var(--ul-color-surface-dark);
	color: var(--ul-color-text-inverse);
	overflow: hidden;
	isolation: isolate;
}
/* Resplandor de acento (esquina superior derecha) */
.ent-cat-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	background: radial-gradient(120% 130% at 100% 0%, rgba(255, 204, 51, 0.16), transparent 55%);
	z-index: -1;
	pointer-events: none;
}
/* Imagen de categoría difuminada de fondo (si el término tiene thumbnail) */
.ent-cat-hero.has-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--ent-cat-img);
	background-size: cover;
	background-position: center;
	opacity: 0.20;
	z-index: -2;
	pointer-events: none;
}
.ent-cat-hero__inner {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.5rem;
	padding-block: clamp(2rem, 1.3rem + 3.2vw, 3.75rem);
}
.ent-cat-hero .ent-breadcrumbs {
	color: rgba(255, 255, 255, 0.6);
	font-size: 0.82rem;
	margin-bottom: 0.35rem;
}
.ent-cat-hero .ent-breadcrumbs a { color: rgba(255, 255, 255, 0.75); text-decoration: none; }
.ent-cat-hero .ent-breadcrumbs a:hover { color: var(--ul-color-accent); }
.ent-cat-hero .ent-breadcrumbs .sep { margin: 0 0.4rem; opacity: 0.5; }
.ent-cat-hero__eyebrow { color: var(--ul-color-accent); margin: 0; }
.ent-cat-hero__title {
	margin: 0;
	font-family: var(--ul-font-heading);
	font-weight: var(--ul-font-weight-black, 800);
	font-size: clamp(1.9rem, 1.3rem + 2.6vw, 3.1rem);
	line-height: 1.05;
	letter-spacing: -0.02em;
	text-wrap: balance;
}
.ent-cat-hero__subtitle {
	margin: 0.25rem 0 0;
	max-width: 62ch;
	color: rgba(255, 255, 255, 0.78);
	font-size: 1.02rem;
	line-height: 1.5;
}
.ent-cat-hero__count {
	margin: 0.4rem 0 0;
	font-size: 0.82rem;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

/* WooCommerce imprime su propio header/título del archivo; lo ocultamos porque
   ya mostramos todo eso en el hero. */
.woocommerce-products-header { display: none; }

/* ==========================================================================
   Chips de subcategorías / hermanas
   ========================================================================== */
.ent-cat-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 var(--ul-space-xl);
}
.ent-cat-chip {
	display: inline-flex;
	align-items: baseline;
	gap: 0.45rem;
	padding: 0.5rem 0.95rem;
	border: 1px solid var(--ul-color-border);
	border-radius: 999px;
	background: var(--ul-color-surface);
	color: var(--ul-color-text);
	font-size: 0.86rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}
.ent-cat-chip span { font-weight: 500; font-size: 0.78rem; color: var(--ul-color-text-muted); }
.ent-cat-chip:hover { border-color: var(--ul-color-primary); background: var(--ul-color-surface-alt); }
.ent-cat-chip.is-active { background: var(--ul-color-primary); border-color: var(--ul-color-primary); color: var(--ul-color-text-inverse); }
.ent-cat-chip.is-active span { color: rgba(255, 255, 255, 0.7); }

/* ---- Result count + ordering ---- */
.woocommerce-result-count { color: var(--ul-color-text-muted); margin: 0 0 var(--ul-space-md); font-size: 0.9rem; }
.woocommerce-ordering { margin: 0 0 var(--ul-space-md); }
.woocommerce-ordering select,
.ent-shop select, .woocommerce select {
	padding: 0.6rem 0.9rem; border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-md); font: inherit; background: var(--ul-color-surface);
}

/* ---- Paginación (píldoras) ---- */
.woocommerce nav.woocommerce-pagination { margin-top: var(--ul-space-3xl); text-align: center; }
.woocommerce nav.woocommerce-pagination ul.page-numbers {
	display: inline-flex; justify-content: center; align-items: center;
	gap: 0.4rem; flex-wrap: wrap; margin: 0; padding: 0; border: 0; list-style: none;
}
.woocommerce nav.woocommerce-pagination ul.page-numbers li { border: 0; margin: 0; overflow: visible; }
.woocommerce nav.woocommerce-pagination ul.page-numbers li a.page-numbers,
.woocommerce nav.woocommerce-pagination ul.page-numbers li span.page-numbers {
	display: inline-grid; place-items: center;
	min-width: 44px; height: 44px; padding: 0 0.6rem; margin: 0;
	border: 1px solid var(--ul-color-border); border-radius: 999px;
	background: var(--ul-color-surface); color: var(--ul-color-text);
	font-weight: 600; font-size: 0.95rem; line-height: 1; text-decoration: none;
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.woocommerce nav.woocommerce-pagination ul.page-numbers li a.page-numbers:hover,
.woocommerce nav.woocommerce-pagination ul.page-numbers li a.page-numbers:focus {
	border-color: var(--ul-color-primary); background: var(--ul-color-surface-alt); color: var(--ul-color-text);
}
.woocommerce nav.woocommerce-pagination ul.page-numbers li span.page-numbers.current {
	background: var(--ul-color-primary); color: var(--ul-color-text-inverse); border-color: var(--ul-color-primary);
}
.woocommerce nav.woocommerce-pagination ul.page-numbers li span.page-numbers.dots {
	border: 0; background: none; min-width: 1.4rem; color: var(--ul-color-text-muted);
}
/* Flechas prev/next un poco más marcadas */
.woocommerce nav.woocommerce-pagination ul.page-numbers li a.prev,
.woocommerce nav.woocommerce-pagination ul.page-numbers li a.next { font-size: 1.1rem; }

/* ==========================================================================
   Product grid + cards
   ========================================================================== */
.woocommerce ul.products,
ul.products {
	list-style: none; margin: 0; padding: 0;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--ul-space-lg);
}
/* WooCommerce añade pseudo-elementos clearfix que, en un grid, ocupan una
   celda vacía y descuadran la primera fila. Los anulamos. */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
ul.products::before,
ul.products::after { content: none; display: none; }
.woocommerce ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.woocommerce ul.products.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.woocommerce ul.products.columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.woocommerce ul.products li.product,
ul.products li.product {
	position: relative;
	margin: 0; padding: 0; width: auto; float: none;
	background: var(--ul-color-surface);
	border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-lg);
	overflow: hidden;
	display: flex; flex-direction: column;
	transition: transform var(--ul-transition-base), box-shadow var(--ul-transition-base), border-color var(--ul-transition-base);
}
.woocommerce ul.products li.product:hover {
	transform: translateY(-4px);
	box-shadow: var(--ul-shadow-md);
	border-color: var(--ul-color-primary);
}

/* Card media */
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link,
.woocommerce ul.products li.product a.woocommerce-loop-product__link {
	display: flex; flex-direction: column; color: inherit;
}
.woocommerce ul.products li.product img {
	width: 100%; aspect-ratio: 1 / 1; object-fit: contain;
	background: #fff; padding: var(--ul-space-md); margin: 0;
	transition: transform var(--ul-transition-slow, 0.5s ease);
}
.woocommerce ul.products li.product:hover img { transform: scale(1.05); }

/* Brand badge (from content-product override) */
.ent-card-brand {
	position: absolute; top: 10px; left: 10px; z-index: 2;
	font-family: var(--ul-font-heading); font-size: 0.66rem; font-weight: 700;
	letter-spacing: 0.08em; text-transform: uppercase;
	padding: 0.28rem 0.6rem; border-radius: var(--ul-radius-full);
	background: var(--ul-color-surface-dark); color: #fff;
}

/* Sale flash */
.woocommerce span.onsale {
	position: absolute; top: 10px; right: 10px; left: auto; z-index: 2;
	min-height: auto; min-width: auto; margin: 0; padding: 0.28rem 0.6rem;
	border-radius: var(--ul-radius-full);
	background: var(--ul-color-accent); color: var(--ul-color-text);
	font-family: var(--ul-font-heading); font-weight: 800; font-size: 0.68rem; line-height: 1.4;
	text-transform: uppercase; letter-spacing: 0.06em;
}

/* Card body */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product h2 {
	padding: var(--ul-space-sm) var(--ul-space-md) 0;
	font-family: var(--ul-font-heading); font-size: 0.98rem; font-weight: 600;
	line-height: 1.3; color: var(--ul-color-text);
}
.woocommerce ul.products li.product .price {
	display: block; padding: 0.25rem var(--ul-space-md) 0;
	color: var(--ul-color-primary); font-weight: 800; font-size: 1.1rem; margin-top: auto;
}
.woocommerce ul.products li.product .price del { color: var(--ul-color-text-muted); font-weight: 500; opacity: 0.7; margin-right: 0.4rem; }
.woocommerce ul.products li.product .price ins { text-decoration: none; }
.woocommerce ul.products li.product .star-rating { margin: 0.4rem var(--ul-space-md) 0; font-size: 0.8rem; color: var(--ul-color-accent-hover); }

/* Card add-to-cart button */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart {
	margin: var(--ul-space-sm) var(--ul-space-md) var(--ul-space-md);
	display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
	padding: 0.7rem 1rem; border-radius: var(--ul-radius-md);
	background: var(--ul-color-primary); color: #fff;
	font-family: var(--ul-font-heading); font-weight: 700; font-size: 0.82rem;
	text-transform: uppercase; letter-spacing: 0.04em;
	transition: background var(--ul-transition-base);
}
.woocommerce ul.products li.product .button:hover { background: var(--ul-color-primary-hover); }
.woocommerce ul.products li.product .added_to_cart { background: var(--ul-color-surface-dark); }

/* ==========================================================================
   Single product
   ========================================================================== */
.single-product .ent-shop__body { padding-top: var(--ul-space-md); }
.ent-pdp { display: block; }
.ent-pdp__main {
	display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: var(--ul-space-2xl); align-items: start;
}
.ent-pdp__summary { position: sticky; top: 96px; }

/* Marca */
.ent-pdp__brand {
	display: inline-block; margin-bottom: var(--ul-space-xs);
	font-family: var(--ul-font-heading); font-size: 0.72rem; font-weight: 800;
	letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none;
	color: var(--ul-color-text-inverse); background: var(--ul-color-surface-dark);
	padding: 0.3rem 0.7rem; border-radius: var(--ul-radius-full);
}
.ent-pdp__brand:hover { background: var(--ul-color-primary); color: var(--ul-color-text-inverse); }

.ent-pdp__title { font-size: clamp(1.6rem, 1.2rem + 1.8vw, 2.4rem); font-weight: 800; line-height: 1.15; margin: 0.3rem 0 var(--ul-space-sm); color: var(--ul-color-text); }

/* Precio */
.ent-pdp__price { font-size: 2rem; font-weight: 800; color: var(--ul-color-text); margin: 0 0 var(--ul-space-md); }
.ent-pdp__price .woocommerce-Price-amount { color: var(--ul-color-text); }
.ent-pdp__price del { color: var(--ul-color-text-muted); font-size: 1.2rem; font-weight: 500; margin-right: 0.5rem; }
.ent-pdp__price ins { text-decoration: none; }
.ent-pdp__price--quote {
	display: inline-block; font-size: 1.1rem; letter-spacing: 0.04em; text-transform: uppercase;
	color: var(--ul-color-text); background: var(--ul-color-accent);
	padding: 0.4rem 0.9rem; border-radius: var(--ul-radius-md);
}

.ent-pdp__excerpt { color: var(--ul-color-text-muted); line-height: var(--ul-line-height-base); margin-bottom: var(--ul-space-md); }
.ent-pdp__wa { margin-top: var(--ul-space-sm); }

/* Señales de confianza */
.ent-pdp__trust {
	list-style: none; margin: var(--ul-space-lg) 0 0; padding: var(--ul-space-md) 0 0;
	border-top: 1px solid var(--ul-color-border);
	display: flex; flex-wrap: wrap; gap: var(--ul-space-md);
}
.ent-pdp__trust li { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.85rem; font-weight: 600; color: var(--ul-color-text); }
.ent-pdp__trust .ul-ic { width: 20px; height: 20px; color: var(--ul-color-primary); flex: none; }

/* Documentos en PDF — van con las insignias, a la par de la garantía */
.ent-pdp__datasheets {
	display: flex; flex-wrap: wrap; gap: var(--ul-space-sm);
	margin-top: var(--ul-space-md);
}
.ent-pdp__datasheet {
	display: inline-flex; align-items: center; gap: 0.45rem;
	font-size: 0.85rem; font-weight: 700;
	color: var(--ul-color-text); text-decoration: none;
	border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-full, 999px);
	padding: 0.5rem 0.9rem;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}
.ent-pdp__datasheet:hover, .ent-pdp__datasheet:focus-visible {
	border-color: var(--ul-color-primary); background: var(--ul-color-surface-alt);
}
.ent-pdp__datasheet .ul-ic { width: 20px; height: 20px; color: var(--ul-color-primary); flex: none; }

.ent-pdp__meta { margin-top: var(--ul-space-md); font-size: 0.85rem; color: var(--ul-color-text-muted); }
.ent-pdp__meta .sku_wrapper, .ent-pdp__meta .posted_in, .ent-pdp__meta .tagged_as { display: block; margin-bottom: 0.25rem; }
.ent-pdp__meta a { color: var(--ul-color-primary); }

.ent-pdp__tabs { margin-top: var(--ul-space-3xl); }
.single-product div.product .woocommerce-product-gallery { margin: 0; }
.single-product div.product .woocommerce-product-gallery__image img {
	border-radius: var(--ul-radius-lg); border: 1px solid var(--ul-color-border);
	/* Visor cuadrado: cualquier foto rectangular se recorta centrada al cuadro.
	   El lightbox abre la imagen completa, sin recorte. */
	aspect-ratio: 1 / 1; width: 100%; height: auto; object-fit: cover; object-position: center;
	background: var(--ul-color-surface-alt);
}
/* Las miniaturas también cuadradas, para que la tira quede pareja. */
.single-product .flex-control-thumbs img { aspect-ratio: 1 / 1; object-fit: cover; object-position: center; }

/* Clic en la foto → abre el lightbox.
   El zoom de WooCommerce superpone un `.zoomImg` que se traga el clic, así que
   sólo la lupa abría PhotoSwipe. Dejando pasar los eventos, el clic llega al
   enlace de la galería y WooCommerce abre el lightbox por su cuenta, en la
   diapositiva correcta. El zoom sigue funcionando: se activa con mousemove
   sobre el contenedor, no sobre esta capa. */
.woocommerce-product-gallery__image .zoomImg { pointer-events: none; }
.single-product .flex-control-thumbs { display: flex; gap: 0.5rem; padding: 0.75rem 0 0; margin: 0; list-style: none; flex-wrap: wrap; }
.single-product .flex-control-thumbs li { width: 72px; }
.single-product .flex-control-thumbs img { border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-md); opacity: 0.7; }
.single-product .flex-control-thumbs img.flex-active, .single-product .flex-control-thumbs img:hover { opacity: 1; border-color: var(--ul-color-primary); }

.single-product .product_title {
	font-size: clamp(1.6rem, 1.2rem + 1.8vw, 2.4rem); font-weight: 800; margin: 0.25rem 0 var(--ul-space-sm);
}
.single-product .woocommerce-product-rating { margin-bottom: var(--ul-space-sm); }
.single-product div.product p.price,
.single-product div.product span.price {
	color: var(--ul-color-primary); font-size: 1.8rem; font-weight: 800; margin: 0 0 var(--ul-space-md);
}
.single-product div.product p.price del { color: var(--ul-color-text-muted); font-size: 1.2rem; font-weight: 500; }
.single-product .woocommerce-product-details__short-description { color: var(--ul-color-text-muted); margin-bottom: var(--ul-space-md); }

/* Quantity + add to cart */
.woocommerce div.product form.cart { display: flex; gap: var(--ul-space-sm); flex-wrap: wrap; align-items: center; margin-bottom: var(--ul-space-md); }
.ent-quantity, .woocommerce .quantity {
	display: inline-flex; align-items: stretch; border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-md); overflow: hidden;
}
.ent-quantity .ent-qty-btn {
	width: 42px; border: none; background: var(--ul-color-surface-alt); color: var(--ul-color-text);
	font-size: 1.2rem; cursor: pointer; line-height: 1;
}
.ent-quantity input.qty, .woocommerce .quantity input.qty {
	width: 60px; border: none; text-align: center; font: inherit; font-weight: 700;
	-moz-appearance: textfield;
}
.woocommerce div.product form.cart .button.single_add_to_cart_button {
	padding: 0.95rem 2rem; border-radius: var(--ul-radius-md);
	background: var(--ul-color-primary); color: #fff;
	font-family: var(--ul-font-heading); font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em;
	transition: background var(--ul-transition-base), transform var(--ul-transition-base);
}
.woocommerce div.product form.cart .button.single_add_to_cart_button:hover { background: var(--ul-color-primary-hover); transform: translateY(-2px); }

.single-product .product_meta { font-size: 0.88rem; color: var(--ul-color-text-muted); border-top: 1px solid var(--ul-color-border); padding-top: var(--ul-space-md); }
.single-product .product_meta a { color: var(--ul-color-primary); }

/* Tabs — override del look "cajita" por defecto de WooCommerce (alta especificidad) */
.woocommerce div.product .woocommerce-tabs,
.woocommerce-tabs { grid-column: 1 / -1; margin-top: var(--ul-space-3xl); }

.woocommerce div.product .woocommerce-tabs ul.tabs {
	list-style: none; margin: 0 0 var(--ul-space-xl); padding: 0;
	display: flex; gap: 0.15rem; flex-wrap: wrap;
	border-bottom: 1px solid var(--ul-color-border);
}
/* Quitar las líneas/clearfix y las esquinas de pestaña que dibuja WooCommerce */
.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after { content: ""; display: none; border: 0; }

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	margin: 0; padding: 0; border: 0; background: none; border-radius: 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { content: none; display: none; border: 0; box-shadow: none; }

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	display: block; padding: 0.85rem 1.15rem; margin: 0 0 -1px;
	color: var(--ul-color-text-muted); text-decoration: none;
	font-family: var(--ul-font-heading); font-weight: 700; text-transform: uppercase; font-size: 0.82rem; letter-spacing: 0.04em;
	border-bottom: 3px solid transparent;
	transition: color .15s ease, border-color .15s ease;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover { color: var(--ul-color-text); }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--ul-color-primary); border-bottom-color: var(--ul-color-accent);
}

.woocommerce div.product .woocommerce-tabs .panel,
.woocommerce-Tabs-panel { padding-top: var(--ul-space-xs); max-width: 820px; }
.woocommerce-Tabs-panel h2 { font-size: 1.4rem; font-weight: 800; margin-bottom: var(--ul-space-sm); }

@media (max-width: 560px) {
	.woocommerce div.product .woocommerce-tabs ul.tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.woocommerce div.product .woocommerce-tabs ul.tabs li a { white-space: nowrap; }
}

/* Related */
.related.products, .upsells.products { grid-column: 1 / -1; margin-top: var(--ul-space-3xl); }
.related.products > h2, .upsells.products > h2, .cross-sells > h2 {
	font-size: clamp(1.4rem, 1.1rem + 1vw, 2rem); font-weight: 800; margin-bottom: var(--ul-space-lg);
}

/* ==========================================================================
   Cart
   ========================================================================== */
.woocommerce-cart .ent-main, .woocommerce-checkout .ent-main, .woocommerce-account .ent-main { padding-block: var(--ul-space-2xl) var(--ul-space-4xl); }
.woocommerce table.shop_table {
	border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-lg); border-collapse: separate; border-spacing: 0; overflow: hidden; width: 100%;
}
.woocommerce table.shop_table th { background: var(--ul-color-surface-alt); font-family: var(--ul-font-heading); text-transform: uppercase; font-size: 0.78rem; letter-spacing: 0.05em; padding: 1rem; text-align: left; }
.woocommerce table.shop_table td { padding: 1rem; border-top: 1px solid var(--ul-color-border); vertical-align: middle; }
.woocommerce table.cart img { width: 64px; border-radius: var(--ul-radius-md); border: 1px solid var(--ul-color-border); }
.woocommerce .cart_totals h2 { font-size: 1.3rem; margin-bottom: var(--ul-space-sm); }

/* ---- Fila de acciones: cupón (izq) + actualizar (der) ---- */
.woocommerce table.cart td.actions { background: var(--ul-color-surface-alt); }
.woocommerce table.cart td.actions::after { content: ""; display: block; clear: both; }
.woocommerce table.cart td.actions .coupon { float: left; display: inline-flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; margin: 0; }
.woocommerce table.cart td.actions button.button[name="update_cart"],
.woocommerce table.cart td.actions button[name="update_cart"] { float: right; }
.woocommerce table.cart td.actions .coupon .input-text {
	width: auto; min-width: 190px; padding: 0.7rem 0.9rem;
	border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-md); background: var(--ul-color-surface);
}
/* "Aplicar cupón" y "Actualizar carrito" → botones secundarios (contorno), visibles siempre */
.woocommerce table.cart td.actions .coupon .button,
.woocommerce table.cart td.actions button.button[name="update_cart"],
.woocommerce table.cart td.actions button[name="update_cart"] {
	background: var(--ul-color-surface); color: var(--ul-color-primary);
	border: 1px solid var(--ul-color-primary);
}
.woocommerce table.cart td.actions .coupon .button:hover,
.woocommerce table.cart td.actions button.button[name="update_cart"]:not(:disabled):hover {
	background: var(--ul-color-primary); color: #fff; border-color: var(--ul-color-primary);
}
.woocommerce table.cart td.actions button.button[name="update_cart"]:disabled,
.woocommerce table.cart td.actions button.button[name="update_cart"][disabled] {
	color: var(--ul-color-text-muted); background: var(--ul-color-surface);
	border-color: var(--ul-color-border); opacity: 1; cursor: default;
}

/* ---- Colaterales: cross-sells (izq) + totales (der, tarjeta) ---- */
.woocommerce-cart .cart-collaterals {
	display: flex; flex-wrap: wrap; gap: var(--ul-space-2xl);
	align-items: flex-start; margin-top: var(--ul-space-2xl);
}
.woocommerce-cart .cart-collaterals .cross-sells { order: 1; flex: 1 1 360px; width: auto; float: none; margin: 0; }
.woocommerce-cart .cart-collaterals .cart_totals { order: 2; flex: 0 1 380px; width: auto; float: none; }
.woocommerce .cart_totals {
	background: var(--ul-color-surface-alt); border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-lg); padding: var(--ul-space-lg); position: sticky; top: 100px;
}
.woocommerce .cart_totals table.shop_table { border: 0; border-radius: 0; }
.woocommerce .cart_totals table.shop_table th,
.woocommerce .cart_totals table.shop_table td { background: none; padding: 0.7rem 0; border-top: 1px solid var(--ul-color-border); text-transform: none; letter-spacing: 0; }
.woocommerce .cart_totals tr:first-child th, .woocommerce .cart_totals tr:first-child td { border-top: 0; }
.woocommerce .cart_totals .order-total th, .woocommerce .cart_totals .order-total td { font-size: 1.1rem; font-weight: 800; }
.woocommerce .cart_totals .wc-proceed-to-checkout { padding: var(--ul-space-md) 0 0; }
.woocommerce .cart_totals .checkout-button { display: block; width: 100%; text-align: center; padding: 1rem; }

@media (max-width: 782px) {
	.woocommerce-cart .cart-collaterals .cart_totals,
	.woocommerce-cart .cart-collaterals .cross-sells { flex-basis: 100%; }
	.woocommerce .cart_totals { position: static; }
	.woocommerce table.cart td.actions .coupon { float: none; width: 100%; margin-bottom: 0.6rem; }
	.woocommerce table.cart td.actions .coupon .input-text { flex: 1; min-width: 0; }
	.woocommerce table.cart td.actions button[name="update_cart"] { float: none; width: 100%; }
}

/* Buttons (generic WC) */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit,
.woocommerce a.button.alt, .woocommerce button.button.alt {
	background: var(--ul-color-primary); color: #fff;
	font-family: var(--ul-font-heading); font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em;
	padding: 0.8rem 1.5rem; border-radius: var(--ul-radius-md); border: none; transition: background var(--ul-transition-base);
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover { background: var(--ul-color-primary-hover); color: #fff; }
.woocommerce .button.wc-backward, .woocommerce a.button.wc-backward { background: var(--ul-color-surface-dark); }

/* ==========================================================================
   Checkout
   ========================================================================== */
.woocommerce-checkout form.checkout { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--ul-space-2xl); align-items: start; }
.woocommerce-checkout #customer_details { grid-column: 1; min-width: 0; }
.woocommerce-checkout .ent-checkout__review { grid-column: 2; position: sticky; top: 100px; min-width: 0; }

/* Facturación y envío apilados a lo ancho (no dos sub-columnas apretadas) */
.woocommerce-checkout .col2-set { display: block; }
.woocommerce-checkout .col2-set .col-1,
.woocommerce-checkout .col2-set .col-2 { width: 100%; float: none; padding: 0; }
.woocommerce-checkout .col2-set .col-2 { margin-top: var(--ul-space-lg); }

/* Campos del formulario */
.woocommerce form .form-row { margin-bottom: var(--ul-space-md); }
.woocommerce form .form-row label { font-weight: 600; margin-bottom: 0.3rem; display: block; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce .select2-container .select2-selection--single {
	padding: 0.75rem 0.9rem; border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-md); font: inherit; width: 100%; min-height: 46px;
}

/* Tarjeta del resumen del pedido (derecha) */
.woocommerce-checkout .ent-checkout__review #order_review {
	background: var(--ul-color-surface-alt); border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-lg); padding: var(--ul-space-lg);
}
.woocommerce-checkout #order_review_heading { margin: 0 0 var(--ul-space-sm); font-size: 1.3rem; }
.woocommerce-checkout #order_review table.shop_table { border: 0; border-radius: 0; margin: 0; }
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td { padding: 0.6rem 0; background: none; border-top: 1px solid var(--ul-color-border); }
.woocommerce-checkout #order_review table.shop_table thead th { border-top: 0; }
.woocommerce-checkout #order_review .order-total th,
.woocommerce-checkout #order_review .order-total td { font-size: 1.05rem; font-weight: 800; }

.woocommerce-checkout #payment { background: none; border-radius: 0; padding: var(--ul-space-md) 0 0; }
.woocommerce #payment ul.payment_methods { border: none; padding: 0; background: none; }
.woocommerce #payment div.payment_box { background: var(--ul-color-surface); border-radius: var(--ul-radius-md); }
.woocommerce #payment div.payment_box::before { border-bottom-color: var(--ul-color-surface); }
.woocommerce-checkout #payment #place_order { width: 100%; padding: 1rem; font-size: 0.95rem; margin-top: var(--ul-space-sm); }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
	border-top: none; border-radius: var(--ul-radius-md); padding: 1rem 1.25rem 1rem 3rem; position: relative; background: var(--ul-color-surface-alt);
}
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { left: 1rem; top: 1rem; }
.woocommerce-message { border-left: 4px solid var(--ul-color-primary); }
.woocommerce-info { border-left: 4px solid var(--ul-color-accent-hover); }
.woocommerce-error { border-left: 4px solid #c0392b; }

/* Order received / thankyou */
.ent-thankyou-note {
	background: var(--ul-color-surface-alt); border: 1px dashed var(--ul-color-primary);
	border-radius: var(--ul-radius-lg); padding: var(--ul-space-md) var(--ul-space-lg); margin: var(--ul-space-md) 0;
}
.ent-thankyou-note h3 { margin: 0 0 0.5rem; color: var(--ul-color-primary); }

/* ==========================================================================
   Cotización (productos sin precio)
   ========================================================================== */
.ent-quote-price { font-weight: 800; color: var(--ul-color-text); }
.single-product div.product p.price .ent-quote-price,
.single-product div.product span.price .ent-quote-price { font-size: 1.4rem; }

.ent-quote {
	margin: var(--ul-space-md) 0;
	padding: var(--ul-space-md) var(--ul-space-lg);
	background: var(--ul-color-surface-alt);
	border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-lg);
}
.ent-quote__intro { margin: 0 0 var(--ul-space-sm); color: var(--ul-color-text-muted); }
.ent-quote__actions { display: flex; flex-wrap: wrap; gap: var(--ul-space-sm); }

.ent-quote__form { margin-top: var(--ul-space-md); display: flex; flex-direction: column; gap: var(--ul-space-sm); }
.ent-quote__form[hidden] { display: none; }
.ent-quote__result[hidden] { display: none; }
.ent-quote__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--ul-space-sm); }
.ent-quote__form label { display: flex; flex-direction: column; gap: 0.3rem; font-weight: 600; font-size: 0.9rem; }
.ent-quote__form input, .ent-quote__form textarea {
	padding: 0.7rem 0.9rem; border: 1px solid var(--ul-color-border); border-radius: var(--ul-radius-md);
	font: inherit; background: var(--ul-color-surface); width: 100%;
}
.ent-quote__form input:focus, .ent-quote__form textarea:focus { outline: none; box-shadow: var(--ul-shadow-focus); border-color: var(--ul-color-accent); }
.ent-quote__qty input { max-width: 120px; }
.ent-quote__hint { margin: 0; font-size: 0.82rem; color: var(--ul-color-text-muted); }
.ent-quote__submit { align-self: flex-start; }

.ent-quote__result {
	margin-top: var(--ul-space-md); padding: var(--ul-space-md);
	border-radius: var(--ul-radius-md); font-weight: 600;
}
.ent-quote__result.is-ok { background: var(--ul-color-primary-50); border-left: 4px solid var(--ul-color-accent); color: var(--ul-color-text); }
.ent-quote__result.is-error { background: #fdecea; border-left: 4px solid #c0392b; color: #7a1f16; }

@media (max-width: 560px) {
	.ent-quote__row { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1024px) {
	.ent-pdp__main { grid-template-columns: 1fr; }
	.ent-pdp__summary { position: static; }
	.woocommerce-checkout form.checkout { grid-template-columns: 1fr; }
	.woocommerce-checkout .ent-checkout__review, .woocommerce-checkout #customer_details { grid-column: 1; }
	.woocommerce-checkout .ent-checkout__review { position: static; }
}
@media (max-width: 960px) {
	.woocommerce ul.products, .woocommerce ul.products.columns-4, .woocommerce ul.products.columns-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
	.woocommerce ul.products, .woocommerce ul.products.columns-3, .woocommerce ul.products.columns-4, .woocommerce ul.products.columns-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ul-space-sm); }
}
/* Teléfonos: una sola tarjeta por fila (evita que se aplaste el texto/botón) */
@media (max-width: 560px) {
	.woocommerce ul.products,
	.woocommerce ul.products.columns-2,
	.woocommerce ul.products.columns-3,
	.woocommerce ul.products.columns-4,
	.woocommerce ul.products.columns-5 { grid-template-columns: 1fr; gap: var(--ul-space-md); }
	.woocommerce ul.products li.product img { aspect-ratio: 16 / 10; }
}

/* --------------------------------------------------------------------------
   Títulos de producto en MAYÚSCULA
   Sólo presentación: el nombre guardado en la base de datos no se toca, así
   que pedidos, facturas y exportaciones conservan el texto original.
   -------------------------------------------------------------------------- */
.single-product .ul-banner__title,
.single-product .product_title,
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce-cart .product-name a,
.woocommerce-checkout .product-name,
.woocommerce table.shop_table td.product-name a,
.woocommerce .woocommerce-order-details .product-name a,
.wc-block-components-product-name {
	text-transform: uppercase;
}

/* ==========================================================================
   Tarjetas de los bloques de WooCommerce (Colección de productos)
   --------------------------------------------------------------------------
   El bloque «Colección de productos» y sus parientes no reutilizan el marcado
   clásico (ul.products li.product), sino wc-block-*. Sin esto las tarjetas
   salen crudas y no se parecen a las del resto del sitio.

   Aquí se les da la misma piel que a las nuestras: mismo borde, radio,
   elevación al pasar el mouse, imagen cuadrada con relleno, y el precio y el
   botón con el mismo peso tipográfico.
   ========================================================================== */

/* Rejilla */
.wp-block-woocommerce-product-collection .wc-block-product-template,
.wc-block-product-template {
	list-style: none; margin: 0; padding: 0;
	gap: var(--ul-space-lg);
}

/* La tarjeta */
.wc-block-product-template .wc-block-product,
li.wc-block-product {
	position: relative;
	margin: 0; padding: 0;
	background: var(--ul-color-surface);
	border: 1px solid var(--ul-color-border);
	border-radius: var(--ul-radius-lg);
	overflow: hidden;
	display: flex; flex-direction: column;
	transition: transform var(--ul-transition-base), box-shadow var(--ul-transition-base), border-color var(--ul-transition-base);
}
li.wc-block-product:hover {
	transform: translateY(-4px);
	box-shadow: var(--ul-shadow-md);
	border-color: var(--ul-color-primary);
}

/* Imagen: cuadrada y contenida, como en las tarjetas clásicas */
li.wc-block-product .wc-block-components-product-image {
	margin: 0; overflow: hidden;
}
li.wc-block-product .wc-block-components-product-image img {
	width: 100%; aspect-ratio: 1 / 1; object-fit: contain;
	background: #fff; padding: var(--ul-space-md); margin: 0;
	border-radius: 0;
	transition: transform var(--ul-transition-slow, 0.5s ease);
}
li.wc-block-product:hover .wc-block-components-product-image img { transform: scale(1.05); }

/* Título */
li.wc-block-product .wp-block-post-title,
li.wc-block-product .wc-block-components-product-title {
	margin: 0;
	padding: var(--ul-space-sm) var(--ul-space-md) 0;
	font-family: var(--ul-font-heading); font-size: 0.98rem; font-weight: 600;
	line-height: 1.3; color: var(--ul-color-text);
	text-transform: uppercase; /* igual que el resto de títulos de producto */
}
li.wc-block-product .wp-block-post-title a { color: inherit; text-decoration: none; }

/* Precio */
li.wc-block-product .wc-block-components-product-price {
	display: block; margin: 0;
	padding: 0.25rem var(--ul-space-md) 0;
	color: var(--ul-color-primary); font-weight: 800; font-size: 1.1rem;
	margin-top: auto;
}
li.wc-block-product .wc-block-components-product-price del { color: var(--ul-color-text-muted); font-weight: 500; opacity: 0.7; margin-right: 0.4rem; }
li.wc-block-product .wc-block-components-product-price ins { text-decoration: none; }

/* Botón */
li.wc-block-product .wp-block-woocommerce-product-button,
li.wc-block-product .wc-block-components-product-button {
	margin: var(--ul-space-sm) var(--ul-space-md) var(--ul-space-md);
}
li.wc-block-product .wc-block-components-product-button .wp-block-button__link,
li.wc-block-product .wc-block-components-product-button a.button {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
	width: 100%;
	padding: 0.7rem 1rem; border-radius: var(--ul-radius-md);
	background: var(--ul-color-primary); color: #fff; border: 0;
	font-family: var(--ul-font-heading); font-weight: 700; font-size: 0.82rem;
	text-transform: uppercase; letter-spacing: 0.04em;
	transition: background var(--ul-transition-base);
}
li.wc-block-product .wc-block-components-product-button .wp-block-button__link:hover { background: var(--ul-color-primary-hover); }

/* Insignia de oferta, en la misma esquina que la clásica */
li.wc-block-product .wc-block-components-product-sale-badge {
	position: absolute; top: 10px; right: 10px; left: auto; z-index: 2;
	margin: 0; padding: 0.28rem 0.6rem;
	border-radius: var(--ul-radius-full);
	background: var(--ul-color-accent); color: var(--ul-color-text); border: 0;
	font-family: var(--ul-font-heading); font-weight: 800; font-size: 0.68rem; line-height: 1.4;
	text-transform: uppercase; letter-spacing: 0.06em;
}

/* Calificación y stock, alineados con el resto del cuerpo */
li.wc-block-product .wc-block-components-product-rating,
li.wc-block-product .wc-block-components-product-stock-indicator {
	padding: 0.35rem var(--ul-space-md) 0; margin: 0;
	font-size: 0.8rem; text-align: left;
}

/* Paginación del bloque */
.wp-block-woocommerce-product-collection .wp-block-query-pagination {
	margin-top: var(--ul-space-xl);
	display: flex; gap: var(--ul-space-sm); align-items: center; justify-content: center;
	font-family: var(--ul-font-heading); font-weight: 700; font-size: 0.85rem;
}
.wp-block-woocommerce-product-collection .wp-block-query-pagination a { color: var(--ul-color-primary); }
