/* Polymernai · WooCommerce overrides */

/* Force product collection grid — matching Astro ProductGrid:
   grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 */
.wp-block-woocommerce-product-template.is-flex-container.columns-4 {
	display: grid !important;
	/* En móvil la tarjeta a pantalla completa obligaba a scrollear producto a
	   producto: dos columnas y hueco menor para que entren 3-4 filas por pantalla. */
	gap: 0.75rem !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 480px) {
	.wp-block-woocommerce-product-template.is-flex-container.columns-4 {
		gap: 1.5rem !important; /* gap-6 = 24px */
	}
}
@media (min-width: 640px) {
	.wp-block-woocommerce-product-template.is-flex-container.columns-4 {
		grid-template-columns: repeat(2, minmax(0, 1fr)); /* sm:grid-cols-2 */
	}
}
@media (min-width: 1024px) {
	.wp-block-woocommerce-product-template.is-flex-container.columns-4 {
		grid-template-columns: repeat(3, minmax(0, 1fr)); /* lg:grid-cols-3 */
	}
}
@media (min-width: 1280px) {
	.wp-block-woocommerce-product-template.is-flex-container.columns-4 {
		grid-template-columns: repeat(4, minmax(0, 1fr)); /* xl:grid-cols-4 */
	}
}
.wp-block-woocommerce-product-template.is-flex-container.columns-4 > li {
	width: auto !important;
}

/* Horizontal scrolling carousel — Astro: w-[22%] on xl with gap-5, shows 4 + peek of 5th
   Higher specificity than grid override above */
.polymernai-prod-carousel {
	position: relative;
	margin: 0;
}
.polymernai-prod-carousel .wp-block-woocommerce-product-template.is-flex-container,
.polymernai-prod-carousel .wp-block-woocommerce-product-template.is-flex-container.columns-4 {
	display: flex !important;
	flex-wrap: nowrap !important;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 1.25rem !important; /* gap-5 = 20px */
	padding-bottom: 0.5rem;
	scrollbar-width: none;
	grid-template-columns: none !important;
}
/* Mobile: w-[78%], sm: w-[42%], lg: w-[28%], xl: w-[22%] — beats WC default (4-class specificity) */
.polymernai-prod-carousel .wc-block-product-template.is-flex-container.is-flex-container.columns-4 > li {
	flex: 0 0 78% !important;
	width: 78% !important;
	max-width: none !important;
	box-sizing: border-box; /* el borde de la card va dentro del % como en Tailwind */
	scroll-snap-align: start;
}
@media (min-width: 640px) {
	.polymernai-prod-carousel .wc-block-product-template.is-flex-container.is-flex-container.columns-4 > li {
		flex-basis: 42% !important; width: 42% !important;
	}
}
@media (min-width: 1024px) {
	.polymernai-prod-carousel .wc-block-product-template.is-flex-container.is-flex-container.columns-4 > li {
		flex-basis: 28% !important; width: 28% !important;
	}
}
@media (min-width: 1280px) {
	.polymernai-prod-carousel .wc-block-product-template.is-flex-container.is-flex-container.columns-4 > li {
		flex-basis: 22% !important; width: 22% !important;
	}
}
.polymernai-prod-carousel ul::-webkit-scrollbar { display: none; }

/* Carousel cards use smaller padding (p-4) + smaller title (text-sm) than grid cards (p-5 text-base) */
.polymernai-prod-carousel .polymernai-card-body {
	padding: 1rem !important; /* p-4 */
	gap: 0.5rem !important;
}
.polymernai-prod-carousel .polymernai-card-title {
	font-size: 0.875rem !important; /* text-sm */
}
.polymernai-prod-carousel .polymernai-card-price {
	padding-top: 0.5rem !important; /* pt-2 in carousel */
}

/*
 * Product card — exact Astro ProductCard parity
 * Container: rounded-3xl (24px) border-poly-blush 1px bg-white
 * Hover: -translate-y-1 + shadow-xl poly-pink/20
 * Inner: p-5 (20px) flex col gap-2 (8px)
 * Eyebrow: text-[10px] uppercase tracking-[0.2em] text-poly-pink font-semibold
 * Title: text-base leading-tight text-poly-ink line-clamp-2 hover:text-poly-rose
 * Price: text-sm font-bold text-poly-magenta
 */
.woocommerce ul.products li.product,
.wp-block-woocommerce-product-template .wc-block-product {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem; /* rounded-3xl */
	overflow: hidden;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
	padding: 0;
	display: flex !important;
	flex-direction: column;
	position: relative; /* anchor for stretched title link */
}
/* Stretched link: title <a> covers the whole card, so any click on the card
   (price, "Ver detalle" hint, empty space) navigates to the product page. */
.polymernai-card-title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
/* Keep image link and category link clickable above the overlay. */
.wp-block-woocommerce-product-template .wp-block-woocommerce-product-image,
.polymernai-card-cat a {
	position: relative;
	z-index: 2;
}
.woocommerce ul.products li.product:hover,
.wp-block-woocommerce-product-template .wc-block-product:hover {
	transform: translateY(-4px); /* -translate-y-1 */
	box-shadow: 0 20px 25px -5px color-mix( in srgb, var(--poly-card-grid) 20%, transparent ), 0 8px 10px -6px color-mix( in srgb, var(--poly-card-grid) 20%, transparent );
}

.woocommerce ul.products li.product img,
.wp-block-woocommerce-product-template .wc-block-product img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
}
.wp-block-woocommerce-product-template .wc-block-product .wp-block-woocommerce-product-image {
	overflow: hidden;
	background: var(--wp--preset--color--poly-cream);
}
.wp-block-woocommerce-product-template .wc-block-product .wp-block-woocommerce-product-image img {
	transition: transform 0.7s ease;
	width: 100%;
	height: 100%;
}
.wp-block-woocommerce-product-template .wc-block-product:hover .wp-block-woocommerce-product-image img {
	transform: scale(1.05);
}

/* Card body — p-5 = 1.25rem, gap-2 = 0.5rem */
.polymernai-card-body {
	flex: 1 1 auto !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 0.5rem !important;
	padding: 1.25rem !important;
}
.polymernai-card-cat {
	font-size: 0.625rem !important; /* text-[10px] */
	letter-spacing: 0.2em !important;
	text-transform: uppercase;
	font-weight: 600 !important; /* font-semibold */
	color: var(--wp--preset--color--poly-pink) !important;
	margin: 0 !important;
	line-height: 1.5;
}
.polymernai-card-cat a {
	color: inherit !important;
	text-decoration: none !important;
}
.polymernai-card-title {
	font-family: var(--wp--preset--font-family--display) !important; /* Astro h3 = Fredoka via global.css */
	font-size: 1rem !important; /* text-base */
	line-height: 1.25 !important; /* leading-tight */
	color: var(--wp--preset--color--poly-ink) !important;
	margin: 0 !important;
	font-weight: 600 !important;
	letter-spacing: -0.005em;
	/* Recorte a dos líneas por altura, sin line-clamp.
	   El clamp (tanto -webkit- como el estándar) hacía desaparecer el título
	   entero —caja de altura 0— cuando el texto ocupaba tres líneas o más, que
	   es lo que pasa con los nombres largos en la rejilla de dos columnas del
	   móvil. Recortar por max-height no tiene ese fallo; se pierde el "…". */
	display: block !important;
	overflow: hidden !important;
	max-height: 2.5em !important; /* 2 líneas * 1.25 de interlineado */
	transition: color 0.15s;
}
.polymernai-card-title a {
	color: inherit !important;
	text-decoration: none !important;
}
.wp-block-woocommerce-product-template .wc-block-product:hover .polymernai-card-title,
.wp-block-woocommerce-product-template .wc-block-product:hover .polymernai-card-title a {
	color: var(--wp--preset--color--poly-rose) !important;
}
.polymernai-card-price {
	margin: auto 0 0 !important; /* mt-auto */
	font-weight: 700 !important; /* font-bold */
	color: var(--wp--preset--color--poly-magenta) !important;
	font-size: 0.875rem !important; /* text-sm */
	padding-top: 0.75rem !important; /* pt-3 */
	position: relative;
	line-height: 1.4 !important;
	text-align: left !important; /* WC grid centers it; Astro is flush left */
}
/* Astro: "Ver detalle →" text-xs rose a la derecha del precio, visible solo en hover */
.polymernai-card-price::after {
	content: "Ver detalle →";
	position: absolute;
	right: 0;
	bottom: 2px;
	font-size: 0.75rem;
	line-height: 1.3333;
	font-weight: 400;
	color: var(--wp--preset--color--poly-rose);
	opacity: 0;
	transition: opacity 0.15s;
	pointer-events: none;
}
.wc-block-product:hover .polymernai-card-price::after,
li.product:hover .polymernai-card-price::after {
	opacity: 1;
}
/* i18n: este texto vive en CSS (TranslatePress no lo alcanza). TP pone <html lang="en-US"> en /en/. */
html[lang^="en"] .polymernai-card-price::after { content: "View detail →"; }
/* El carrusel de novedades (ProductCarousel en Astro) no lleva el hint */
.polymernai-prod-carousel .polymernai-card-price::after { content: none; }
.polymernai-card-price .wc-block-grid__product-price,
.polymernai-card-price .price { text-align: left !important; }
.polymernai-card-price .wc-block-components-product-price {
	display: inline;
	line-height: 1.4;
}
/* Kill image margin between image + body inside a card */
.wc-block-product-template .wp-block-woocommerce-product-image,
.products .wp-block-woocommerce-product-image,
.wc-block-product-template > li > div.wp-block-woocommerce-product-image,
.wc-block-product-template .wc-block-grid__product-image,
.wc-block-product-template > li > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

/* Force inner price container compact (high specificity — WC injects 0 16px 16px) */
.polymernai-card-price .wc-block-components-product-price.wc-block-grid__product-price,
.wc-block-components-product-price.wc-block-grid__product-price {
	padding: 0 !important;
	margin: 0 !important;
}

/* WC empty results — match Astro <p class="py-16 text-center text-poly-muted"> */
.wp-block-woocommerce-product-collection-no-results p,
.wc-block-product-template__responsive,
.wp-block-query-no-results p {
	padding-top: 4rem !important;
	padding-bottom: 4rem !important;
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
	text-align: center;
	color: var(--wp--preset--color--poly-muted);
}
/* Hover "Ver detalle →" indicator — Astro: text-xs poly-rose opacity 0→100 on hover */
.polymernai-card-price::after {
	content: "Ver detalle →";
	position: absolute;
	right: 0;
	bottom: 0;
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--wp--preset--color--poly-rose);
	opacity: 0;
	transition: opacity 0.25s;
	pointer-events: none;
}
.wp-block-woocommerce-product-template .wc-block-product:hover .polymernai-card-price::after,
.woocommerce ul.products li.product:hover .polymernai-card-price::after {
	opacity: 1;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--wp--preset--font-family--display);
	font-size: 1rem;
	color: var(--wp--preset--color--poly-ink);
	padding: 0.75rem 1rem 0.25rem !important;
}

.woocommerce ul.products li.product .price,
.wp-block-woocommerce-product-template .wc-block-components-product-price {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
	padding: 0 1rem 1rem !important;
}

.woocommerce ul.products li.product .button {
	margin: 0 1rem 1rem !important;
	border-radius: 9999px !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	font-weight: 600 !important;
}
.woocommerce ul.products li.product .button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
}

/* Pre-Order badge on product cards */
.wc-block-product.is-preorder,
.products li.product.is-preorder,
.wp-block-post.is-preorder {
	position: relative;
}
.wc-block-product.is-preorder::before,
.products li.product.is-preorder::before,
.wp-block-post.is-preorder::before {
	content: "PRE ORDER";
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	z-index: 5;
	background: var(--poly-badge-preorder);
	color: var(--poly-badge-preorder-text);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.08em;
	padding: 0.4rem 0.85rem;
	border-radius: 9999px;
	box-shadow: 0 4px 12px -4px color-mix( in srgb, var(--poly-badge-preorder) 50%, transparent );
	pointer-events: none;
}

/* Sale badge → pastilla verde, para distinguirla de un vistazo del PRE ORDER
   rosa. El color sale del token, así que se cambia desde el Personalizador. */
.woocommerce span.onsale,
.wc-block-components-product-sale-badge {
	position: absolute !important;
	top: 0.75rem !important;
	right: 0.75rem !important;
	left: auto !important;
	bottom: auto !important;
	z-index: 5;
	margin: 0 !important;
	background: var(--poly-badge-sale) !important;
	/* Texto oscuro: sobre el verde de la paleta el blanco se queda en 1,52:1.
	   Con el color de títulos sube a 10,97:1. */
	color: var(--poly-badge-sale-text) !important;
	border: 0 !important;
	border-radius: 9999px !important;
	padding: 0.4rem 0.85rem !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.75rem !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.08em !important;
	line-height: 1.2 !important;
	min-height: 0 !important;
	min-width: 0 !important;
	box-shadow: 0 4px 12px -4px color-mix( in srgb, var(--poly-badge-sale) 50%, transparent ) !important;
	pointer-events: none;
}
.wc-block-components-product-sale-badge__text {
	font-size: inherit !important;
	font-weight: inherit !important;
	line-height: inherit !important;
	letter-spacing: inherit !important;
	color: inherit !important;
}
/* span.onsale only renders on the single product (the classic sale flash, a
   sibling right before the gallery) — the catalog cards use the block badge.
   The gallery's zoom magnifier sits top-right, so keep this badge top-left to
   avoid overlapping (and hiding under) it. */
.woocommerce span.onsale {
	left: 0.75rem !important;
	right: auto !important;
}

/* Single product MAIN price (scoped — don't bleed into related/loop cards) */
.polymernai-single__price p.price,
.polymernai-single__price span.price,
.woocommerce div.product .summary > p.price,
.woocommerce div.product .summary > span.price {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-size: 1.875rem !important;
	font-weight: 700 !important;
}

/* Add to cart button */
.woocommerce #respond input#submit.alt,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce-message a.wc-forward {
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border-radius: 9999px !important;
	font-weight: 600 !important;
	padding: 0.75rem 1.5rem !important;
}
.woocommerce #respond input#submit.alt:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
}

/* Notices */
.woocommerce-message,
.woocommerce-info {
	border-top-color: var(--wp--preset--color--poly-rose) !important;
	background: var(--wp--preset--color--poly-cream) !important;
}

/* Breadcrumb */
.woocommerce-breadcrumb,
/* Breadcrumbs bar — Astro: nav border-b blush, bg-cream/60, inner max-w-7xl px-4 py-3 text-xs */
.polymernai-single__crumbs {
	border-bottom: 1px solid var(--wp--preset--color--poly-blush);
	background: color-mix( in srgb, var(--poly-field-bg) 60%, transparent );
}
.polymernai-single__crumbs-inner {
	max-width: 80rem; /* max-w-7xl */
	margin: 0 auto;
	padding: 0.75rem 1rem; /* py-3 px-4 */
	box-sizing: border-box;
}
@media (min-width: 640px) {
	.polymernai-single__crumbs-inner { padding-left: 1.5rem; padding-right: 1.5rem; }
}
.polymernai-breadcrumbs {
	font-size: 0.75rem !important; /* text-xs */
	line-height: 1.3333 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	margin: 0 !important;
}
.polymernai-single__crumbs .woocommerce-breadcrumb {
	margin: 0 !important; /* WC mete margin-bottom: 1em */
	font-size: 0.75rem;
	line-height: 1rem; /* línea de 16px exacta como Astro */
	height: 1rem; /* el line-box interno redondeaba a 17px */
	border: 0 !important; /* WC le mete 1px de borde */
	padding: 0 !important;
	overflow: hidden;
}
.polymernai-single__crumbs .woocommerce-breadcrumb a { line-height: 1rem; }
.woocommerce-breadcrumb a,
.polymernai-breadcrumbs a { color: var(--wp--preset--color--poly-muted); text-decoration: none; }
.woocommerce-breadcrumb a:hover,
.polymernai-breadcrumbs a:hover { color: var(--wp--preset--color--poly-rose); }

/* Single product main — Astro: py-10 sm:py-14, grid max-w-7xl gap-12 lg:grid-cols-2 */
.polymernai-single__main {
	max-width: 80rem;
	margin: 0 auto;
	padding: 2.5rem 1rem; /* py-10 px-4 */
	box-sizing: border-box;
}
@media (min-width: 640px) {
	.polymernai-single__main { padding: 3.5rem 1.5rem; } /* sm:py-14 sm:px-6 */
}
.polymernai-single__cols {
	gap: 3rem !important; /* gap-12 */
	margin: 0 !important;
}
/* Astro: lg:grid-cols-2 → 50/50 solo desde 1024; debajo, apilado */
@media (min-width: 1024px) {
	.polymernai-single__cols > .wp-block-column {
		flex-basis: 0 !important;
		flex-grow: 1 !important;
	}
}
@media (max-width: 1023px) {
	.polymernai-single__cols { flex-wrap: wrap !important; }
	.polymernai-single__cols > .wp-block-column {
		flex-basis: 100% !important;
		flex-grow: 1 !important;
	}
}

/* Gallery — Astro: main img aspect-square rounded-3xl bg-cream ring-4 white;
   thumbs grid-cols-8 gap-2 rounded-2xl border-2 blush */
.wp-block-woocommerce-product-image-gallery,
.woocommerce-product-gallery {
	background: transparent;
	width: 100% !important; /* fill the 592px column like Astro */
	max-width: none !important; /* WC injects max-width:512px from single_image_width */
	float: none !important;
	margin-bottom: 0 !important; /* WC mete 2em bajo la galería */
}
.woocommerce-product-gallery .woocommerce-product-gallery__image:first-child,
.woocommerce-product-gallery .flex-viewport {
	border-radius: 1.5rem; /* rounded-3xl */
	overflow: hidden;
	background: var(--wp--preset--color--poly-cream);
	box-shadow: 0 0 0 4px #fff;
}
.woocommerce-product-gallery__image img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
	width: 100%;
	height: auto;
}
/* Thumbnails row */
.woocommerce-product-gallery .flex-control-thumbs,
.woocommerce-product-gallery ol {
	display: grid !important;
	grid-template-columns: repeat(8, minmax(0, 1fr)); /* sm:grid-cols-8 */
	gap: 0.5rem; /* gap-2 */
	margin: 1rem 0 0 !important; /* space-y-4 */
	padding: 0 !important;
	list-style: none;
}
.woocommerce-product-gallery .flex-control-thumbs li,
.woocommerce-product-gallery ol li {
	margin: 0 !important;
	width: auto !important;
	float: none !important;
}
.woocommerce-product-gallery .flex-control-thumbs img,
.woocommerce-product-gallery ol img {
	display: block; /* img inline deja 4px de descender bajo el thumb */
	box-sizing: border-box; /* el borde de 2px va dentro de los 67px, como en Astro */
	aspect-ratio: 1 / 1;
	object-fit: cover;
	width: 100%;
	border-radius: 1rem; /* rounded-2xl */
	border: 2px solid var(--wp--preset--color--poly-blush);
	background: var(--wp--preset--color--poly-cream);
	cursor: pointer;
	transition: border-color 0.15s;
	opacity: 1 !important;
}
.woocommerce-product-gallery .flex-control-thumbs img:hover,
.woocommerce-product-gallery ol img:hover {
	border-color: var(--wp--preset--color--poly-rose);
}

/* Info column — Astro space-y-6 */
.polymernai-single__eyebrow {
	font-size: 0.75rem !important; /* text-xs */
	line-height: 1.3333;
	text-transform: uppercase;
	letter-spacing: 0.3em !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-rose) !important;
	margin: 0 !important;
}
.polymernai-single__eyebrow a { color: inherit !important; text-decoration: none !important; }
.polymernai-single__title {
	/* Astro: eyebrow en línea de 24px + mt-2; el eyebrow WP mide 16 → compensamos con mt-4 */
	margin: 1rem 0 0 !important;
	font-size: 1.875rem !important; /* text-3xl */
	line-height: 1.2 !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	letter-spacing: -0.005em;
}
@media (min-width: 640px) {
	.polymernai-single__title { font-size: 2.25rem !important; line-height: 1.1111 !important; } /* sm:text-4xl */
}
.polymernai-single__price {
	margin: 1.5rem 0 0 !important; /* space-y-6 */
	font-size: 1.875rem !important; /* text-3xl */
	line-height: 1.2 !important;
	font-weight: 700 !important; /* font-bold */
	color: var(--wp--preset--color--poly-magenta) !important;
}
.polymernai-single__price .wc-block-components-product-price { padding: 0 !important; }

/* CTA card — Astro: rounded-3xl border blush bg-cream p-5 */
.polymernai-single__cta {
	margin-top: 1.5rem; /* space-y-6 */
	border-radius: 1.5rem;
	border: 1px solid var(--wp--preset--color--poly-blush);
	background: var(--wp--preset--color--poly-cream);
	padding: 1.25rem; /* p-5 */
}
.polymernai-single__cta h3 {
	margin: 0;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 1rem; /* text-base */
	line-height: 1.5;
	font-weight: 600;
	color: var(--wp--preset--color--poly-deep);
}
.polymernai-single__cta p {
	margin: 0.25rem 0 0; /* mt-1 */
	font-size: 0.875rem;
	line-height: 1.4286;
	color: var(--wp--preset--color--poly-muted);
}
.polymernai-single__cta-actions {
	margin-top: 1rem; /* mt-4 */
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem; /* gap-3 */
}
.polymernai-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	border-radius: 9999px;
	padding: 0.75rem 1.5rem; /* px-6 py-3 */
	font-size: 0.875rem;
	line-height: 1.4286;
	font-weight: 600;
	letter-spacing: 0.025em;
	background: var(--wp--preset--color--poly-rose);
	color: #fff !important;
	text-decoration: none;
	box-shadow: 0 4px 14px rgba(232, 122, 167, 0.35);
	transition: background 0.15s, transform 0.15s;
}
.polymernai-btn-primary:hover { background: var(--wp--preset--color--poly-magenta); transform: translateY(-1px); }

/* Bullets — Astro: ul space-y-2 text-sm text-poly-ink/85 with pink dots */
.polymernai-single__bullets {
	list-style: none;
	margin: 1.5rem 0 0; /* space-y-6 */
	padding: 0;
	font-size: 0.875rem;
	line-height: 1.4286;
	color: color-mix( in srgb, var(--poly-text-soft) 85%, transparent );
}
.polymernai-single__bullets li {
	display: flex;
	gap: 0.5rem;
}
.polymernai-single__bullets li + li { margin-top: 0.5rem; } /* space-y-2 */
.polymernai-single__bullets .dot {
	margin-top: 0.25rem; /* mt-1 */
	display: inline-block;
	width: 0.375rem; /* h-1.5 w-1.5 */
	height: 0.375rem;
	flex-shrink: 0;
	border-radius: 9999px;
	background: var(--wp--preset--color--poly-pink);
}

/* Single product page */
.polymernai-single__info .polymernai-card-cat {
	margin-bottom: 0.25rem !important;
}
.polymernai-single__excerpt {
	background: rgba(251, 225, 236, 0.4);
	border-radius: 1.5rem;
	padding: 1rem 1.25rem;
	color: var(--wp--preset--color--poly-ink);
	font-size: 0.875rem;
	line-height: 1.55;
	margin: 1rem 0 1.5rem;
}
.polymernai-single__atc .quantity {
	margin: 0;
	display: inline-flex;
	align-items: center;
	background: #fff;
	border: 2px solid var(--wp--preset--color--poly-blush);
	border-radius: 9999px;
	padding: 0.25rem;
	transition: border-color 0.15s;
}
.polymernai-single__atc .quantity:focus-within {
	border-color: var(--wp--preset--color--poly-rose);
}
.polymernai-single__atc .quantity label.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px; overflow: hidden;
	clip: rect(0,0,0,0); border: 0;
}
/* «Añadir al carrito». Por DEFECTO es el pill PRIMARIO (relleno rosa) — cubre los
   productos sin «Comprar ahora» (agrupado), donde es el único CTA. Lleva `.alt` en
   el selector para ganar en especificidad a la regla genérica
   `.woocommerce button.button.alt` (fondo rosa !important) de más arriba.
   box-sizing + borde 2px del mismo color → misma caja que la variante outline. */
.polymernai-single__atc button.single_add_to_cart_button.alt {
	box-sizing: border-box !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 2px solid var(--wp--preset--color--poly-rose) !important;
	border-radius: 9999px !important;
	font-weight: 700 !important;
	font-size: 0.875rem !important;
	line-height: 1.4286 !important;
	letter-spacing: 0.025em !important;
	padding: calc(0.75rem - 2px) calc(1.5rem - 2px) !important;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.polymernai-single__atc button.single_add_to_cart_button.alt:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	border-color: var(--wp--preset--color--poly-magenta) !important;
}
/* Cuando SÍ hay «Comprar ahora» en el form (simple/variable), este pasa a ser el
   primario y «Añadir al carrito» baja a SECUNDARIO (outline), menos resaltado. */
.polymernai-single__atc form.cart:has(.polymernai-buy-now) button.single_add_to_cart_button.alt {
	background: transparent !important;
	color: var(--wp--preset--color--poly-rose) !important;
	font-weight: 600 !important;
}
.polymernai-single__atc form.cart:has(.polymernai-buy-now) button.single_add_to_cart_button.alt:hover {
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border-color: var(--wp--preset--color--poly-rose) !important;
}
/* «Comprar ahora» — pill PRIMARIO (relleno rosa), la acción destacada. Misma caja
   que el add-to-cart (border-box + borde 2px del mismo color para igualar tamaño). */
.polymernai-single__atc button.polymernai-buy-now {
	box-sizing: border-box !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 2px solid var(--wp--preset--color--poly-rose) !important;
	border-radius: 9999px !important;
	font-weight: 700 !important;
	font-size: 0.875rem !important;
	line-height: 1.4286 !important;
	letter-spacing: 0.025em !important;
	padding: calc(0.75rem - 2px) calc(1.5rem - 2px) !important;
	cursor: pointer;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.polymernai-single__atc button.polymernai-buy-now:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	border-color: var(--wp--preset--color--poly-magenta) !important;
}

/* Shipping pills */
.polymernai-shipping-pills {
	gap: 0.5rem !important;
}
.polymernai-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	background: var(--wp--preset--color--poly-cream);
	color: var(--wp--preset--color--poly-ink);
	border-radius: 9999px;
	padding: 0.5rem 0.875rem;
	font-size: 0.75rem;
	border: 1px solid var(--wp--preset--color--poly-blush);
}

/* Stock indicator pill */
.polymernai-stock-pill,
.wc-block-components-product-stock-indicator {
	display: inline-block;
	font-size: 0.75rem;
	line-height: 1.3333;
	background: var(--wp--preset--color--poly-mint);
	color: var(--wp--preset--color--poly-deep);
	border-radius: 9999px;
	padding: 0.375rem 0.75rem;
	font-weight: 600;
	margin: 1rem 0 0 !important;
}
/* El bloque product-stock-indicator, en producto VARIABLE, se renderiza con
   data-wp-text (interactividad) y queda vacío en la plantilla single (ese state
   sólo lo rellena Product Collection) → dejaba un pill mint vacío bajo el precio.
   El de producto simple no lleva data-wp-text (texto server-side), así que sólo
   ocultamos la variante interactiva vacía. La disponibilidad de la variante
   seleccionada la muestra el propio form (.woocommerce-variation-availability). */
.polymernai-stock-pill[data-wp-text] { display: none !important; }

/* El pill hereda fondo mint (disponible). Cuando el producto está agotado el
   bloque añade su modificador `--out-of-stock`: mismos colores que el badge de
   la variación agotada, para no dar la señal contraria. */
.polymernai-stock-pill.wc-block-components-product-stock-indicator--out-of-stock,
.wc-block-components-product-stock-indicator--out-of-stock {
	background: var(--wp--preset--color--poly-blush);
	color: var(--wp--preset--color--poly-magenta);
}

/* En producto SIMPLE, el bloque add-to-cart-form imprime su propio párrafo
   ".stock" (texto plano, sin estilo) justo antes del <form>, duplicando la
   info que ya muestra el pill de arriba. Lo ocultamos solo como hijo directo
   (no afecta ".woocommerce-variation-availability .stock", que es el que
   muestra la disponibilidad de la variante seleccionada en producto variable). */
.polymernai-single__atc > p.stock { display: none !important; }

/* ===== Variaciones (producto variable) ===== */
/* form.cart es flex (qty + CTA en fila, pensado para producto simple). En variable
   mete además la tabla de atributos y el wrap de variación; los forzamos a fila
   completa para que no compitan como ítems flex y se apilen limpios. */
.polymernai-single__atc form.cart > .variations,
.polymernai-single__atc form.cart > .single_variation_wrap {
	flex: 1 1 100%;
	width: 100%;
	margin: 0;
}
/* Tabla de atributos → filas apiladas, label a la izquierda del select. */
.polymernai-single__atc .variations {
	border: 0;
	margin: 0.5rem 0 0.25rem;
}
.polymernai-single__atc .variations tbody { display: block; }
.polymernai-single__atc .variations tr {
	display: flex;
	align-items: flex-start; /* fila arriba: la de Color es más alta por el enlace
	                            «Limpiar» (WC lo oculta con visibility:hidden, pero
	                            ocupa espacio); centrar la fila descuadraba el label. */
	gap: 1rem;
	margin: 0 0 0.75rem;
}
.polymernai-single__atc .variations th.label,
.polymernai-single__atc .variations td.value {
	padding: 0;
	border: 0;
}
.polymernai-single__atc .variations th.label {
	flex: 0 0 4.5rem;
	/* alto = alto del select (3rem) y centramos el texto dentro → el label queda
	   alineado con su select sea cual sea el contenido extra del td. */
	min-height: 3rem;
	display: flex;
	align-items: center;
	font-weight: 700;
	color: var(--wp--preset--color--poly-deep);
	text-align: left;
}
.polymernai-single__atc .variations th.label label { margin: 0; }
.polymernai-single__atc .variations td.value {
	display: block;
	flex: 1 1 auto;
	position: relative;
}
/* Select con el mismo lenguaje visual que el checkout (blush 2px, radius 1rem). */
.polymernai-single__atc .variations select {
	width: 100%;
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%233a2238' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 1rem center;
	background-size: 1rem;
	border: 2px solid var(--wp--preset--color--poly-blush);
	border-radius: 1rem;
	color: var(--wp--preset--color--poly-ink);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.9375rem;
	min-height: 3rem;
	padding: 0.6rem 2.75rem 0.6rem 1rem;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	cursor: pointer;
	box-shadow: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}
.polymernai-single__atc .variations select:focus {
	outline: none;
	border-color: var(--wp--preset--color--poly-rose);
	box-shadow: 0 0 0 3px rgba(232, 122, 167, 0.15);
}
/* Enlace «Limpiar» (WC lo muestra tras elegir una opción). */
.polymernai-single__atc .variations .reset_variations {
	display: inline-block;
	margin-top: 0.5rem;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--poly-rose);
	text-decoration: underline;
}
.polymernai-single__atc .variations .reset_variations:hover {
	color: var(--wp--preset--color--poly-magenta);
}
/* Precio + disponibilidad de la variación seleccionada. Antes flotaban sueltos con
   mucho hueco entre los selects y los botones; ahora forman UNA fila compacta con
   etiqueta «Precio» y quedan pegados a la fila de compra (qty + CTA). */
.polymernai-single__atc .variations { margin-bottom: 0.75rem !important; }
.polymernai-single__atc .single_variation_wrap { margin-top: 0 !important; }
.polymernai-single__atc .woocommerce-variation {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.4rem 0.75rem;
	margin: 0 0 0.75rem !important;
}
.polymernai-single__atc .woocommerce-variation-price {
	display: flex;
	align-items: baseline;
	gap: 0.45rem;
}
/* WooCommerce deja este bloque vacío cuando todas las variaciones cuestan lo
   mismo (el precio ya está arriba); sin esto quedaba el rótulo «Precio» solo. */
.polymernai-single__atc .woocommerce-variation-price:empty { display: none; }
.polymernai-single__atc .woocommerce-variation-price::before {
	content: "Precio";
	font-size: 0.7rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.18em;
	color: var(--wp--preset--color--poly-muted);
}
.polymernai-single__atc .woocommerce-variation-price .price {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 700;
	color: var(--wp--preset--color--poly-magenta);
	font-size: 1.35rem;
	margin: 0 !important;
}
.polymernai-single__atc .woocommerce-variation-availability { margin: 0; }
.polymernai-single__atc .woocommerce-variation-availability .stock {
	display: inline-block;
	background: var(--wp--preset--color--poly-mint);
	color: var(--wp--preset--color--poly-deep);
	border-radius: 9999px;
	padding: 0.375rem 0.75rem;
	font-size: 0.75rem;
	font-weight: 600;
	margin: 0;
}
.polymernai-single__atc .woocommerce-variation-availability .stock.out-of-stock {
	background: var(--wp--preset--color--poly-blush);
	color: var(--wp--preset--color--poly-magenta);
}
/* La fila qty + CTA vive dentro del wrap de variación: le damos el mismo flex
   que a form.cart en producto simple. */
.polymernai-single__atc .woocommerce-variation-add-to-cart {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-wrap: wrap;
}
@media (max-width: 639px) {
	.polymernai-single__atc .woocommerce-variation-add-to-cart > .quantity {
		flex: 0 0 auto;
	}
	.polymernai-single__atc .woocommerce-variation-add-to-cart button.single_add_to_cart_button,
	.polymernai-single__atc .woocommerce-variation-add-to-cart button.polymernai-buy-now {
		flex: 1 1 100%;
		width: 100%;
		justify-content: center;
		text-align: center;
	}
}

/* Excerpt + ATC spacing dentro de la columna de info */
.polymernai-single__excerpt { margin-top: 1rem !important; }
.polymernai-single__atc { margin-top: 1rem !important; }
.polymernai-single__atc form.cart {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-wrap: wrap;
}
/* Móvil: cantidad arriba y los dos CTA a ancho completo, apilados e iguales entre
   sí (evita que «Comprar ahora» quede huérfano a media fila junto al de carrito). */
@media (max-width: 639px) {
	.polymernai-single__atc form.cart > .quantity {
		flex: 0 0 auto;
	}
	.polymernai-single__atc button.single_add_to_cart_button,
	.polymernai-single__atc button.polymernai-buy-now {
		flex: 1 1 100%;
		width: 100%;
		justify-content: center;
		text-align: center;
	}
}
.polymernai-single__atc .quantity input.qty {
	margin: 0 !important;
	border: 0;
	background: transparent;
	/* WC/theme le mete ~1.1em de padding horizontal y box-sizing content-box, así que
	   el input crecía a ~83px (número descentrado, pill deforme) sobre todo en el
	   agrupado. Lo fijamos a 3rem reales con border-box + padding 0. */
	box-sizing: border-box !important;
	width: 3rem !important;
	min-width: 0 !important;
	padding: 0 !important;
	text-align: center;
	font-size: 1rem;
	font-weight: 600;
	color: var(--wp--preset--color--poly-deep);
	-moz-appearance: textfield;
	appearance: textfield;
}
.polymernai-single__atc .quantity input.qty::-webkit-outer-spin-button,
.polymernai-single__atc .quantity input.qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.polymernai-single__atc .quantity input.qty:focus {
	outline: none;
}
.polymernai-single__atc .quantity .polymernai-qty-btn {
	width: 2rem;
	height: 2rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--poly-cream);
	color: var(--wp--preset--color--poly-deep);
	border: 0;
	border-radius: 9999px;
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	padding: 0;
	transition: background 0.15s;
}
.polymernai-single__atc .quantity .polymernai-qty-btn:hover {
	background: var(--wp--preset--color--poly-blush);
}
.polymernai-single__atc .quantity .polymernai-qty-btn:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}

/* Description section — Astro: border-t blush, bg-cream/40, py-12, max-w-3xl inner */
.polymernai-prod-desc {
	border-top: 1px solid var(--wp--preset--color--poly-blush);
	background: color-mix( in srgb, var(--poly-field-bg) 40%, transparent ); /* poly-cream/40 */
	padding: 3rem 0; /* py-12 */
}
.polymernai-prod-desc__inner {
	max-width: 48rem; /* max-w-3xl */
	margin: 0 auto;
	padding: 0 1rem;
	box-sizing: border-box;
}
@media (min-width: 640px) {
	.polymernai-prod-desc__inner { padding-left: 1.5rem; padding-right: 1.5rem; }
}
.polymernai-prod-desc__title {
	margin: 0 0 1.5rem !important; /* mb-6 */
	font-size: 1.5rem !important; /* text-2xl */
	line-height: 1.3333 !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
}
.polymernai-prod-desc__inner p {
	color: color-mix( in srgb, var(--poly-text-soft) 85%, transparent );
	line-height: 1.625; /* leading-relaxed */
	/* Astro renders the description as whitespace-pre-line: blank lines ≈ one 26px line */
	margin-block-start: 0 !important;
	margin-block-end: 1.625em !important;
}
.polymernai-prod-desc__inner p:last-child { margin-block-end: 0 !important; }

/* Related — match home cards: 1232px constrained, identical card styles */
.polymernai-related {
	padding: 3.5rem 1rem; /* py-14 */
}
@media (min-width: 640px) {
	.polymernai-related { padding-left: 1.5rem; padding-right: 1.5rem; }
}
/* Constrain the inner product grid to 1232px so cards match home width. */
.polymernai-related > .wp-block-woocommerce-product-collection,
.polymernai-related > .polymernai-section-head {
	max-width: 1232px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}
.polymernai-related__title {
	margin: 0 auto 2rem !important;
	font-size: 1.5rem !important;
	line-height: 1.3333 !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
}
/* Force card text sizes inside related to mirror home (defensive — beats any
   block-injected has-*-font-size). */
.polymernai-related .polymernai-card-cat,
.polymernai-related .polymernai-card-cat * {
	font-size: 0.625rem !important;
}
.polymernai-related .polymernai-card-title,
.polymernai-related .polymernai-card-title a {
	font-size: 1rem !important;
	line-height: 1.25 !important;
}
.polymernai-related .polymernai-card-price,
.polymernai-related .polymernai-card-price .wc-block-components-product-price,
.polymernai-related .polymernai-card-price .wc-block-components-product-price__value,
.polymernai-related .polymernai-card-price .price,
.polymernai-related .polymernai-card-price span {
	font-size: 0.875rem !important;
	line-height: 1.4 !important;
}


/* ============================================================
   WooCommerce pages (cart / checkout / my-account / order-received)
   ============================================================ */

/* Body bg — match the rest of the site (pink bg around content) */
body.woocommerce-cart,
body.woocommerce-checkout,
body.woocommerce-account,
body.woocommerce-order-received {
	background: var(--wp--preset--color--poly-bg);
}

/* PageHeader wrapper injected by render_block / the_content — same look as static pages.
   Full-bleed via negative margin trick: works even cuando el padre es un
   .entry-content max-w 1232 (caso de my-account / order-received).
   En cart/checkout, donde el padre es is-layout-constrained y ya aplica alignfull,
   este hack es idempotente (margin-left + padre 100vw = 0). */
.polymernai-wc-pageheader {
	display: block;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	margin-bottom: 0 !important;
	width: 100vw !important;
	max-width: 100vw !important;
	padding-top: 1.5rem !important;
	padding-bottom: 1.25rem !important;
	padding-left: 1.5rem !important;
	padding-right: 1.5rem !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush);
	background: linear-gradient(to bottom, var(--wp--preset--color--poly-cream) 0%, var(--wp--preset--color--poly-bg) 100%);
	box-sizing: border-box;
}
@media (min-width: 1024px) {
	.polymernai-wc-pageheader {
		padding-top: 2rem !important;
		padding-bottom: 1.5rem !important;
	}
}
.polymernai-wc-pageheader > .polymernai-eyebrow {
	display: block;
	max-width: 1232px;
	width: 100%;
	margin: 0 auto 0.5rem !important;
	text-align: left;
}
.polymernai-wc-pageheader > h1.wp-block-post-title {
	max-width: 1232px !important;
	width: 100%;
	margin: 0 auto !important;
	font-family: var(--wp--preset--font-family--display) !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-size: 1.75rem !important;
	line-height: 1.2 !important;
	letter-spacing: -0.005em !important;
	text-align: left !important;
}
@media (min-width: 640px) {
	.polymernai-wc-pageheader > h1.wp-block-post-title { font-size: 2.25rem !important; }
}
@media (min-width: 1024px) {
	.polymernai-wc-pageheader > h1.wp-block-post-title { font-size: 2.5rem !important; }
}

/* Outer main wrapper — give WC pages the same 1232px constrained body bg */
body.woocommerce-cart main,
body.woocommerce-checkout main,
body.woocommerce-account main,
body.woocommerce-order-received main {
	padding-bottom: 4rem;
}
body.woocommerce-cart main > .entry-content,
body.woocommerce-checkout main > .entry-content,
body.woocommerce-order-received main > .entry-content {
	max-width: 1232px;
	margin: 0 auto !important;
	padding-left: 1.5rem;
	padding-right: 1.5rem;
	box-sizing: border-box;
}
/* Gap entre el pageheader (banda full-bleed con línea inferior) y el contenido.
   El pageheader es hijo directo de <main> en cart/checkout/order-received y va
   dentro de .entry-content en my-account: apuntamos a la clase directamente para
   cubrir ambos casos. La línea inferior debe separarse de las cards igual que en
   el resto del sitio. */
body.woocommerce-page .polymernai-wc-pageheader {
	margin-bottom: 1.5rem !important;
}
@media (min-width: 1024px) {
	body.woocommerce-page .polymernai-wc-pageheader {
		margin-bottom: 2rem !important;
	}
}
/* Quita el margin-top que WP block-gap añade al primer hijo después del pageheader */
body.woocommerce-page .polymernai-wc-pageheader + * {
	margin-top: 0 !important;
}

/* Notices (success / info / error banners injected by WC) */
.wc-block-components-notice-banner {
	border-radius: 1rem !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	background: #fff !important;
	color: var(--wp--preset--color--poly-ink) !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 8%, transparent );
	padding: 0.75rem 1rem !important;
	font-size: 0.875rem;
	margin-bottom: 0.75rem !important;
}
.wc-block-components-notice-banner.is-success { border-color: var(--wp--preset--color--poly-mint) !important; }
.wc-block-components-notice-banner.is-error   { border-color: #f4a8a8 !important; }
.wc-block-components-notice-banner > svg {
	fill: var(--wp--preset--color--poly-rose) !important;
	background: var(--wp--preset--color--poly-cream) !important;
	border-radius: 9999px;
	padding: 0.25rem;
	margin-right: 0.5rem !important;
}
.wc-block-components-notice-banner.is-success > svg { fill: #2a8765 !important; background: rgba(184,230,209,0.5) !important; }
.wc-block-components-notice-banner a.button {
	background: transparent !important;
	color: var(--wp--preset--color--poly-rose) !important;
	border: 0 !important;
	padding: 0 !important;
	font-weight: 600 !important;
	text-decoration: underline;
	text-underline-offset: 2px;
}
.wc-block-components-notice-banner a.button:hover { color: var(--wp--preset--color--poly-magenta) !important; }


/* ============================================================
   Cart — WC Blocks
   ============================================================ */

/* Sidebar-layout: items izquierda + sidebar derecha. WC ships 65/35 con container queries.
   align-items: stretch (default) — ambas cards comparten altura: la más alta manda. */
body.woocommerce-cart .wc-block-components-sidebar-layout {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: flex-start !important;
	gap: 2rem;
	margin: 0 !important;
}
/* Apilado (por debajo de 1024): WooCommerce mantiene el reparto 65/35 que usa en
   dos columnas, así que al envolver las dos cards quedaban a media anchura y
   descolgadas a la izquierda. Apiladas ocupan todo el ancho.
   Solo el ancho: `.wc-block-components-main` es el MISMO div que la card de
   items (`.wp-block-woocommerce-cart-items-block`), así que tocarle el padding
   aquí le quita el interior a la tarjeta y el contenido queda pegado al borde.
   El canalón entre columnas solo existe a partir de 1024. */
@media (max-width: 1023px) {
	body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main,
	body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar {
		flex: 1 1 100% !important;
		width: 100% !important;
		max-width: 100% !important;
	}
}
@media (min-width: 1024px) {
	body.woocommerce-cart .wc-block-components-sidebar-layout {
		flex-wrap: nowrap !important;
	}
	body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main {
		flex: 1 1 auto !important;
		width: auto !important;
		padding-right: 1.5rem !important;
	}
	body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar {
		flex: 0 0 22rem !important;
		width: 22rem !important;
		padding-left: 1.5rem !important;
	}
}

/* Items card — items table inside una surface blanca, mismo padding que el sidebar. */
body.woocommerce-cart .wp-block-woocommerce-cart-items-block {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 0.5rem 1.5rem 1.5rem !important;
	box-sizing: border-box;
	min-height: 0 !important;
}

/* Items table */
body.woocommerce-cart table.wc-block-cart-items {
	width: 100% !important;
	margin: 0 !important;
	/* WooCommerce deja `border-collapse: separate` con espaciado entre celdas:
	   eso abría un hueco entre la imagen y el producto y partía en dos la línea
	   separadora de cada fila. */
	border-collapse: collapse !important;
	border-spacing: 0 !important;
	background: transparent !important;
}
body.woocommerce-cart table.wc-block-cart-items thead {
	background: transparent !important;
}
body.woocommerce-cart .wc-block-cart-items__header th {
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.6875rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--poly-muted) !important;
	border: 0 !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush) !important;
	padding: 0.75rem 0 1rem !important;
	text-align: left;
}
body.woocommerce-cart .wc-block-cart-items__header-total { text-align: right !important; }
/* Si ocultamos el header de "Detalles" rompemos los anchos de columna del table-layout:auto.
   En su lugar lo dejamos visible pero con padding mínimo o sin texto. */
body.woocommerce-cart .wc-block-cart-items__header-product span { display: none; }

/* Item rows */
body.woocommerce-cart .wc-block-cart-items__row {
	background: transparent !important;
}
body.woocommerce-cart .wc-block-cart-items__row + .wc-block-cart-items__row > td {
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
}
body.woocommerce-cart .wc-block-cart-items__row > td {
	padding: 1.25rem 0 !important;
	background: transparent !important;
	border: 0;
	vertical-align: middle;
}
/* Tabla column widths — el total cell colapsa a su contenido, el producto se queda con todo lo demás. */
body.woocommerce-cart table.wc-block-cart-items { table-layout: auto !important; }
body.woocommerce-cart .wc-block-cart-item__image {
	width: 84px !important;
	min-width: 84px !important;
	padding-right: 1rem !important;
}
body.woocommerce-cart .wc-block-cart-item__product {
	width: auto !important;
}
body.woocommerce-cart .wc-block-cart-item__total {
	width: 1% !important; /* "1%" = colapsar al contenido en tabla auto */
	min-width: 6rem !important;
	white-space: nowrap;
	padding-left: 1rem !important;
}
body.woocommerce-cart .wc-block-cart-item__image img {
	width: 68px !important;
	height: 68px !important;
	border-radius: 0.875rem;
	border: 1px solid var(--wp--preset--color--poly-blush);
	background: var(--wp--preset--color--poly-cream);
	object-fit: cover;
}

/* Product cell */
body.woocommerce-cart .wc-block-cart-item__wrap {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
body.woocommerce-cart .wc-block-components-product-name {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 0.9375rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	line-height: 1.3 !important;
	letter-spacing: -0.005em;
	text-decoration: none !important;
	transition: color 0.15s;
}
body.woocommerce-cart .wc-block-components-product-name:hover {
	color: var(--wp--preset--color--poly-rose) !important;
}

/* Item unit price (next to name) */
body.woocommerce-cart .wc-block-cart-item__prices .wc-block-components-product-price__value,
body.woocommerce-cart .wc-block-cart-item__prices .price {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-size: 0.875rem !important;
	font-weight: 700 !important;
}

/* Metadata description */
body.woocommerce-cart .wc-block-components-product-metadata {
	font-size: 0.75rem !important;
	color: var(--wp--preset--color--poly-muted) !important;
	line-height: 1.4 !important;
}
body.woocommerce-cart .wc-block-components-product-metadata p { margin: 0 !important; }

/* Quantity stepper row + remove */
body.woocommerce-cart .wc-block-cart-item__quantity {
	display: flex !important;
	align-items: center;
	gap: 1rem;
	margin-top: 0.5rem;
}
body.woocommerce-cart .wc-block-components-quantity-selector {
	display: inline-flex !important;
	align-items: center;
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 9999px !important;
	overflow: hidden;
	width: 7rem !important;
	min-width: 0 !important;
	max-width: none !important;
	height: 2.25rem;
	padding: 0 !important;
}
body.woocommerce-cart .wc-block-components-quantity-selector::before,
body.woocommerce-cart .wc-block-components-quantity-selector::after { display: none !important; }
body.woocommerce-cart .wc-block-components-quantity-selector__input {
	background: transparent !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	font-size: 0.875rem !important;
	text-align: center !important;
	width: auto !important;
	flex: 1 1 auto !important;
	height: 2.25rem !important;
	min-height: 0 !important;
	border: 0 !important;
	padding: 0 !important;
	-moz-appearance: textfield;
}
body.woocommerce-cart .wc-block-components-quantity-selector__input::-webkit-outer-spin-button,
body.woocommerce-cart .wc-block-components-quantity-selector__input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
body.woocommerce-cart .wc-block-components-quantity-selector__button {
	background: var(--wp--preset--color--poly-cream) !important;
	color: var(--wp--preset--color--poly-rose) !important;
	border: 0 !important;
	width: 2rem !important;
	min-width: 2rem !important;
	height: 2.25rem !important;
	font-weight: 700;
	font-size: 1rem;
	padding: 0 !important;
	transition: background 0.15s, color 0.15s;
}
body.woocommerce-cart .wc-block-components-quantity-selector__button:hover:not(:disabled) {
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
}
body.woocommerce-cart .wc-block-components-quantity-selector__button:disabled { opacity: 0.4; }

/* Remove button (trash icon) */
body.woocommerce-cart .wc-block-cart-item__remove-link {
	background: transparent !important;
	border: 0 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	cursor: pointer;
	padding: 0.25rem !important;
	display: inline-flex;
	align-items: center;
	transition: color 0.15s;
}
body.woocommerce-cart .wc-block-cart-item__remove-link:hover {
	color: var(--wp--preset--color--poly-magenta) !important;
}
body.woocommerce-cart .wc-block-cart-item__remove-link svg { width: 1.125rem; height: 1.125rem; }

/* Total cell */
body.woocommerce-cart .wc-block-cart-item__total {
	text-align: right;
	white-space: nowrap;
}
body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price__value,
body.woocommerce-cart .wc-block-cart-item__total .price {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
	font-size: 0.9375rem !important;
}

/* ── Sidebar / order summary card ── */
body.woocommerce-cart .wc-block-cart__sidebar {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 1.5rem !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 8%, transparent );
	box-sizing: border-box;
}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-wrapper,
body.woocommerce-cart .wc-block-cart__sidebar .wp-block-woocommerce-cart-order-summary-block,
body.woocommerce-cart .wc-block-cart__sidebar .wp-block-woocommerce-cart-order-summary-coupon-form-block,
body.woocommerce-cart .wc-block-cart__sidebar .wp-block-woocommerce-cart-order-summary-totals-block {
	padding: 0 !important;
	border: 0 !important;
}
body.woocommerce-cart .wc-block-cart__totals-title,
body.woocommerce-cart .wp-block-woocommerce-cart-order-summary-heading-block {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	margin: 0 0 1rem !important;
	padding: 0 0 0.75rem !important;
	border: 0 !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush) !important;
	text-transform: none !important;
	letter-spacing: -0.005em !important;
}

/* Coupon panel */
body.woocommerce-cart .wc-block-components-totals-coupon {
	margin: 0 0 0.75rem !important;
}
body.woocommerce-cart .wc-block-components-panel__button {
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.8125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-rose) !important;
	padding: 0.5rem 0 !important;
	text-align: left !important;
	background: transparent !important;
	min-height: 0 !important;
	border: 0 !important;
}
body.woocommerce-cart .wc-block-components-panel__button:hover { color: var(--wp--preset--color--poly-magenta) !important; }
body.woocommerce-cart .wc-block-components-panel__button-icon { fill: currentColor !important; }
/* Coupon form — compartido cart + checkout. La label de WC se comporta como
   placeholder centrado en una sola línea; al enfocar/escribir se desvanece
   (en vez de "flotar" y apilarse sobre el valor). */
/* WC indenta el contenido del cupón con padding horizontal — lo alineamos al
   resto de filas del resumen (subtotal/total). */
body.woocommerce-page .wc-block-components-totals-coupon {
	padding: 0 !important;
}
body.woocommerce-page .wc-block-components-totals-coupon__form {
	display: flex;
	gap: 0.5rem;
	align-items: stretch;
	margin-top: 0.5rem;
}
body.woocommerce-page .wc-block-components-totals-coupon .wc-block-components-text-input {
	position: relative;
	flex: 1 1 auto;
	margin: 0 !important;
}
body.woocommerce-page .wc-block-components-totals-coupon .wc-block-components-text-input input {
	border: 2px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 9999px !important;
	background: #fff !important;
	padding: 0 1rem !important;
	height: 2.75rem !important;
	min-height: 0 !important;
	font-size: 0.8125rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
	box-sizing: border-box;
}
/* Label centrada como placeholder; desaparece cuando hay foco o contenido. */
body.woocommerce-page .wc-block-components-totals-coupon .wc-block-components-text-input label {
	position: absolute !important;
	top: 50% !important;
	left: 1rem !important;
	right: auto !important;
	transform: translateY(-50%) !important;
	transform-origin: left center !important;
	margin: 0 !important;
	padding: 0 !important;
	font-size: 0.8125rem !important;
	line-height: 1 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	pointer-events: none;
	transition: opacity 0.12s ease;
}
body.woocommerce-page .wc-block-components-totals-coupon .wc-block-components-text-input.is-active label {
	opacity: 0 !important;
}
body.woocommerce-page .wc-block-components-totals-coupon button[type="submit"] {
	background: transparent !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	color: var(--wp--preset--color--poly-rose) !important;
	border-radius: 9999px !important;
	font-weight: 600 !important;
	font-size: 0.8125rem !important;
	padding: 0 1rem !important;
	height: 2.75rem !important;
	white-space: nowrap;
	flex: 0 0 auto;
}
body.woocommerce-page .wc-block-components-totals-coupon button[type="submit"]:hover {
	border-color: var(--wp--preset--color--poly-rose) !important;
	color: var(--wp--preset--color--poly-magenta) !important;
}

/* Totals rows */
body.woocommerce-cart .wc-block-components-totals-item {
	padding: 0.5rem 0 !important;
	font-size: 0.875rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
}
body.woocommerce-cart .wc-block-components-totals-item__label {
	color: var(--wp--preset--color--poly-ink) !important;
	font-weight: 500 !important;
}
body.woocommerce-cart .wc-block-components-totals-item__value,
body.woocommerce-cart .wc-block-components-formatted-money-amount {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
}
body.woocommerce-cart .wc-block-components-totals-item__description {
	color: var(--wp--preset--color--poly-muted) !important;
	font-size: 0.6875rem !important;
}
body.woocommerce-cart .wc-block-components-totals-footer-item {
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	margin-top: 0.5rem !important;
	padding-top: 0.875rem !important;
	font-size: 1rem !important;
	font-weight: 600 !important;
}
body.woocommerce-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__label { font-weight: 600 !important; }
body.woocommerce-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-size: 1.25rem !important;
}

/* Proceed to checkout container — kill the WC sticky bar on desktop */
body.woocommerce-cart .wc-block-cart__submit { margin-top: 1rem; }
body.woocommerce-cart .wc-block-cart__submit-container {
	background: transparent !important;
	padding: 0 !important;
	position: static !important;
	box-shadow: none !important;
}
@media (max-width: 1023px) {
	body.woocommerce-cart .wc-block-cart__submit-container--sticky {
		position: sticky !important;
		bottom: 0;
		padding: 0.5rem 0 !important;
	}
}
/* Submit button — full-width primary rose pill */
body.woocommerce-cart a.wc-block-cart__submit-button,
body.woocommerce-cart button.wc-block-cart__submit-button,
body.woocommerce-cart .wc-block-cart__submit-button {
	display: flex !important;
	width: 100% !important;
	box-sizing: border-box;
	justify-content: center !important;
	align-items: center !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	padding: 0.95rem 1.5rem !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.9375rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.02em !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 35%, transparent ) !important;
	text-decoration: none !important;
	transition: background 0.15s, transform 0.15s !important;
	min-height: 0 !important;
}
body.woocommerce-cart .wc-block-cart__submit-button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	transform: translateY(-1px);
}
body.woocommerce-cart .wc-block-components-button__text { white-space: nowrap; }

/* Empty cart state */
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block {
	text-align: center;
	padding: 4rem 1rem !important;
}
body.woocommerce-cart .wc-block-cart__empty-cart__title {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.875rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 1rem 0 1.5rem !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-separator { display: none !important; }
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block h2:not(.wc-block-cart__empty-cart__title) {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.5rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 2.5rem 0 1.5rem !important;
}

/* ── Carrito en móvil ──────────────────────────────────────────────────────
   Por debajo de 700px WooCommerce deja de maquetar la fila como tabla y la
   convierte en un `display: grid` de cuatro columnas (lo decide con una
   @container query). Con eso, los anchos que el tema fijaba en los `td` ya no
   mandaban: el precio y la etiqueta «Ahorra ¥X» se salían del borde de la card,
   la línea separadora salía partida en dos y el padding de fila y de celda se
   sumaban dejando huecos enormes debajo del selector de cantidad.
   Aquí se define la rejilla a mano: imagen | producto | total. La condición es
   la misma @container que usa WooCommerce (el ancho del bloque del carrito, no
   el de la ventana), para que los dos cambios ocurran a la vez: con un
   `@media` normal quedaba una franja (ventana de 640 a ~750px) con la rejilla
   de WooCommerce y los estilos de tabla del tema. */
@container (max-width: 699px) {
	body.woocommerce-cart .wp-block-woocommerce-cart-items-block {
		padding: 0.25rem 1rem 1rem !important;
	}
	body.woocommerce-cart .wc-block-cart-items__row {
		grid-template-columns: 60px minmax(0, 1fr) auto !important;
		column-gap: 0.75rem !important;
		align-items: start !important;
		padding: 1rem 0 !important;
	}
	/* La línea separadora va en la fila, no en cada celda (en rejilla los
	   bordes de las celdas dejaban tramos sueltos). */
	body.woocommerce-cart .wc-block-cart-items__row > td,
	body.woocommerce-cart .wc-block-cart-items__row + .wc-block-cart-items__row > td {
		padding: 0 !important;
		border: 0 !important;
	}
	body.woocommerce-cart .wc-block-cart-items__row + .wc-block-cart-items__row {
		border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	}
	body.woocommerce-cart .wc-block-cart-item__image {
		grid-column: 1 !important;
		width: auto !important;
		min-width: 0 !important;
	}
	body.woocommerce-cart .wc-block-cart-item__image img {
		width: 60px !important;
		height: 60px !important;
		border-radius: 0.875rem;
	}
	body.woocommerce-cart .wc-block-cart-item__product {
		grid-column: 2 !important;
		width: auto !important;
	}
	body.woocommerce-cart .wc-block-cart-item__total {
		grid-column: 3 !important;
		width: auto !important;
		min-width: 0 !important;
	}
	/* El precio unitario bajo el nombre repite el total de la derecha (mismo
	   número salvo con cantidades >1): en 390px sobra. */
	body.woocommerce-cart .wc-block-cart-item__prices { display: none !important; }
	body.woocommerce-cart .wc-block-components-product-name { font-size: 0.875rem !important; }
	body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price__value,
	body.woocommerce-cart .wc-block-cart-item__total .price { font-size: 0.875rem !important; }
	/* El ahorro deja de ser un rectángulo gris y pasa a leerse como pie del
	   precio, alineado con él. */
	body.woocommerce-cart .wc-block-cart-item__total-price-and-sale-badge-wrapper {
		display: flex;
		flex-direction: column;
		align-items: flex-end;
		gap: 0.125rem;
	}
	body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-sale-badge {
		background: transparent !important;
		color: var(--wp--preset--color--poly-muted) !important;
		border: 0 !important;
		padding: 0 !important;
		font-size: 0.6875rem !important;
		font-weight: 600 !important;
		line-height: 1.3 !important;
		white-space: nowrap !important;
	}
	body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-sale-badge .wc-block-formatted-money-amount,
	body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-sale-badge span {
		color: var(--wp--preset--color--poly-rose) !important;
	}
	body.woocommerce-cart .wc-block-components-quantity-selector {
		width: 6rem !important;
		height: 2rem;
	}
	body.woocommerce-cart .wc-block-components-quantity-selector__input,
	body.woocommerce-cart .wc-block-components-quantity-selector__button {
		height: 2rem !important;
	}
	body.woocommerce-cart .wc-block-components-quantity-selector__button {
		width: 1.75rem !important;
		min-width: 1.75rem !important;
	}
	body.woocommerce-cart .wc-block-cart-item__quantity { gap: 0.5rem; margin-top: 0.625rem; }
}

/* Pantallas estrechas de verdad (iPhone SE y similares): 320px de bloque son
   368px de ventana. Por encima de eso el escalón normal ya cabe. */
@container (max-width: 320px) {
	body.woocommerce-cart .wp-block-woocommerce-cart-items-block {
		padding: 0.25rem 0.75rem 0.75rem !important;
	}
	body.woocommerce-cart .wc-block-cart-items__row {
		grid-template-columns: 52px minmax(0, 1fr) auto !important;
		column-gap: 0.625rem !important;
	}
	body.woocommerce-cart .wc-block-cart-item__image img {
		width: 52px !important;
		height: 52px !important;
	}
	body.woocommerce-cart .wc-block-components-quantity-selector { width: 5.5rem !important; }
	body.woocommerce-cart .wc-block-components-quantity-selector__button {
		width: 1.625rem !important;
		min-width: 1.625rem !important;
	}
}

/* ============================================================
   My Account — Classic WooCommerce forms
   ============================================================ */

/* Account body — generous breathing room around the form/dashboard */
body.woocommerce-account main {
	padding-bottom: 4rem;
}
body.woocommerce-account main > .entry-content,
body.woocommerce-account main > .entry-content > .woocommerce {
	max-width: 1232px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 1.5rem;
	padding-right: 1.5rem;
	box-sizing: border-box;
}
/* Gap entre el pageheader y el contenido del dashboard / formularios. */
body.woocommerce-account main > .entry-content > .polymernai-wc-pageheader {
	margin-bottom: 1rem !important;
}
@media (min-width: 1024px) {
	body.woocommerce-account main > .entry-content > .polymernai-wc-pageheader {
		margin-bottom: 1.25rem !important;
	}
}
body.woocommerce-account main > .entry-content > .woocommerce,
body.woocommerce-account main > .entry-content > .polymernai-wc-pageheader + * {
	margin-top: 0 !important;
}

/* Hide WC's own h2 page heading — our injected pageheader already names the page */
body.woocommerce-account:not(.logged-in) .woocommerce > h2 { display: none !important; }

/* ── Auth pages (login / register / lost-password / reset-password) ── */
body.woocommerce-account .woocommerce-ResetPassword + h2 {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.5rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	margin: 0 auto 1rem !important;
	text-align: center;
	max-width: 28rem;
}

/* Auth form card */
body.woocommerce-account:not(.logged-in) form.woocommerce-form-login,
body.woocommerce-account:not(.logged-in) form.woocommerce-form-register,
body.woocommerce-account form.woocommerce-ResetPassword,
body.woocommerce-account form.lost_reset_password {
	max-width: 28rem;
	margin: 1rem auto 0 !important;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 2rem;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 8%, transparent );
	box-sizing: border-box;
}

/* Stack login + register vertically (WC ships .u-columns / 2-col on auth) */
body.woocommerce-account:not(.logged-in) .u-columns,
body.woocommerce-account:not(.logged-in) .col2-set {
	display: flex !important;
	flex-direction: column !important;
	gap: 1.5rem !important;
}
body.woocommerce-account:not(.logged-in) .u-columns > .u-column1,
body.woocommerce-account:not(.logged-in) .u-columns > .u-column2,
body.woocommerce-account:not(.logged-in) .col2-set > .col-1,
body.woocommerce-account:not(.logged-in) .col2-set > .col-2 {
	width: 100% !important;
	float: none !important;
	max-width: 28rem;
	margin: 0 auto !important;
}

/* Form rows */
body.woocommerce-account .woocommerce-form-row,
body.woocommerce-account .form-row {
	margin: 0 0 1rem !important;
	padding: 0 !important;
}
body.woocommerce-account .form-row label {
	display: block;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--wp--preset--color--poly-deep);
	margin-bottom: 0.375rem;
	font-family: var(--wp--preset--font-family--sans);
}
body.woocommerce-account .form-row label .required {
	color: var(--wp--preset--color--poly-rose);
	text-decoration: none !important;
	border: 0 !important;
}

/* Inputs (text, email, password, etc.) — scope al contenedor .woocommerce
   para no pisar el #adminbar-search (también es input[type="text"]). */
body.woocommerce-account .woocommerce .woocommerce-Input,
body.woocommerce-account .woocommerce input.input-text,
body.woocommerce-account .woocommerce input[type="text"]:not([type="hidden"]),
body.woocommerce-account .woocommerce input[type="email"],
body.woocommerce-account .woocommerce input[type="password"],
body.woocommerce-account .woocommerce input[type="tel"],
body.woocommerce-account .woocommerce input[type="number"],
body.woocommerce-account .woocommerce select,
body.woocommerce-account .woocommerce textarea {
	width: 100% !important;
	box-sizing: border-box;
	background: #fff !important;
	border: 2px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1rem !important;
	padding: 0.65rem 1rem !important;
	font-size: 0.875rem !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	color: var(--wp--preset--color--poly-ink) !important;
	transition: border-color 0.15s, box-shadow 0.15s;
	min-height: 2.75rem;
	line-height: 1.4;
}
body.woocommerce-account .woocommerce input:focus,
body.woocommerce-account .woocommerce select:focus,
body.woocommerce-account .woocommerce textarea:focus {
	outline: none !important;
	border-color: var(--wp--preset--color--poly-rose) !important;
	box-shadow: 0 0 0 3px color-mix( in srgb, var(--poly-wc-accent) 15%, transparent ) !important;
}

/* Password reveal toggle — keep input full-width, position the eye properly */
body.woocommerce-account .password-input {
	position: relative;
	display: block;
}
body.woocommerce-account .password-input input { padding-right: 3rem !important; }
body.woocommerce-account .show-password-input {
	position: absolute !important;
	top: 50% !important;
	right: 0.875rem !important;
	transform: translateY(-50%) !important;
	width: 1.5rem !important;
	height: 1.5rem !important;
	background: transparent !important;
	border: 0 !important;
	cursor: pointer;
	padding: 0 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
}
body.woocommerce-account .show-password-input::before {
	content: "";
	display: block;
	width: 1.25rem;
	height: 1.25rem;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/><circle cx='12' cy='12' r='3'/></svg>") no-repeat center / contain;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/><circle cx='12' cy='12' r='3'/></svg>") no-repeat center / contain;
}
body.woocommerce-account .show-password-input.display-password { color: var(--wp--preset--color--poly-rose) !important; }
body.woocommerce-account .show-password-input.display-password::before {
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94'/><path d='M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19'/><line x1='1' y1='1' x2='23' y2='23'/><path d='M14.12 14.12a3 3 0 1 1-4.24-4.24'/></svg>") no-repeat center / contain;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94'/><path d='M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19'/><line x1='1' y1='1' x2='23' y2='23'/><path d='M14.12 14.12a3 3 0 1 1-4.24-4.24'/></svg>") no-repeat center / contain;
}

/* Remember me + submit row */
body.woocommerce-account form.woocommerce-form-login .form-row:last-of-type,
body.woocommerce-account form.woocommerce-form-register .form-row:last-of-type {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
	align-items: stretch;
	margin-top: 1.25rem !important;
}
body.woocommerce-account .woocommerce-form-login__rememberme {
	display: inline-flex !important;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--poly-ink);
	font-weight: 500;
	margin: 0 !important;
}
body.woocommerce-account .woocommerce-form-login__rememberme input[type="checkbox"] {
	accent-color: var(--wp--preset--color--poly-rose);
	width: 1rem !important;
	height: 1rem !important;
	min-height: 0 !important;
	margin: 0;
}
body.woocommerce-account .woocommerce-form-login__rememberme > span { margin: 0; }

/* Submit / primary buttons */
body.woocommerce-account button.woocommerce-button,
body.woocommerce-account button.button,
body.woocommerce-account input.button,
body.woocommerce-account a.button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	font-weight: 600 !important;
	font-size: 0.875rem !important;
	letter-spacing: 0.02em !important;
	padding: 0.75rem 1.5rem !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 35%, transparent );
	transition: background 0.15s, transform 0.15s;
	text-decoration: none !important;
	cursor: pointer;
	min-height: 0 !important;
	line-height: 1.4 !important;
}
body.woocommerce-account button.woocommerce-button:hover,
body.woocommerce-account button.button:hover,
body.woocommerce-account input.button:hover,
body.woocommerce-account a.button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	transform: translateY(-1px);
	color: #fff !important;
}

/* Submit button in login form is full-width */
body.woocommerce-account form.woocommerce-form-login button[type="submit"],
body.woocommerce-account form.woocommerce-form-register button[type="submit"],
body.woocommerce-account form.lost_reset_password button[type="submit"] {
	width: 100%;
}

/* Lost password link */
body.woocommerce-account .woocommerce-LostPassword {
	margin: 1rem 0 0 !important;
	text-align: center;
}
body.woocommerce-account .woocommerce-LostPassword a {
	color: var(--wp--preset--color--poly-rose);
	font-size: 0.8125rem;
	font-weight: 600;
	text-decoration: none;
}
body.woocommerce-account .woocommerce-LostPassword a:hover { color: var(--wp--preset--color--poly-magenta); }

/* Notices in my-account */
body.woocommerce-account .woocommerce-notices-wrapper:empty { display: none; }
body.woocommerce-account .woocommerce-message,
body.woocommerce-account .woocommerce-info,
body.woocommerce-account .woocommerce-error {
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-left-width: 4px !important;
	border-left-color: var(--wp--preset--color--poly-rose) !important;
	border-radius: 1rem !important;
	padding: 0.875rem 1.25rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
	max-width: 28rem;
	margin: 0 auto 1.25rem !important;
	font-size: 0.875rem;
}
body.woocommerce-account .woocommerce-message::before,
body.woocommerce-account .woocommerce-info::before,
body.woocommerce-account .woocommerce-error::before { display: none !important; }
body.woocommerce-account .woocommerce-message { border-left-color: #2a8765 !important; }
body.woocommerce-account .woocommerce-error  { border-left-color: #d04a85 !important; }

/* ── Dashboard (logged in) — sidebar nav + content ── */
/* WC ships a max-width:1000px on `main .woocommerce` — quitamos para usar todo el ancho */
body.woocommerce-account.logged-in main .woocommerce { max-width: 1232px !important; }

body.woocommerce-account.logged-in .woocommerce {
	display: block;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation,
body.woocommerce-account.logged-in .woocommerce-MyAccount-content {
	float: none !important;
	margin: 0 0 1rem !important;
}
@media (min-width: 1024px) {
	body.woocommerce-account.logged-in .woocommerce {
		display: flex !important;
		flex-direction: row !important;
		align-items: flex-start !important;
		gap: 2rem !important;
	}
	body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation {
		flex: 0 0 16rem !important;
		width: 16rem !important;
		max-width: 16rem !important;
		margin: 0 !important;
	}
	body.woocommerce-account.logged-in .woocommerce-MyAccount-content {
		flex: 1 1 auto !important;
		width: auto !important;
		min-width: 0 !important;
		margin: 0 !important;
	}
	body.woocommerce-account.logged-in form.woocommerce-form,
	body.woocommerce-account.logged-in form.edit-account,
	body.woocommerce-account.logged-in form.woocommerce-EditAccountForm {
		max-width: none !important;
		background: transparent !important;
		border: 0 !important;
		padding: 0 !important;
		box-shadow: none !important;
		margin: 0 !important;
	}
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 1rem;
	box-sizing: border-box;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation ul {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation li {
	margin: 0 !important;
	padding: 0 !important;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 0.625rem 0.875rem;
	border-radius: 1rem;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--wp--preset--color--poly-ink);
	text-decoration: none;
	transition: background 0.15s, color 0.15s;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation li a:hover {
	background: var(--wp--preset--color--poly-cream);
	color: var(--wp--preset--color--poly-magenta);
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--wp--preset--color--poly-rose);
	color: #fff;
	font-weight: 600;
}

body.woocommerce-account.logged-in .woocommerce-MyAccount-content {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 1.5rem;
	box-sizing: border-box;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-content > p:first-child {
	margin-top: 0 !important;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-content h2,
body.woocommerce-account.logged-in .woocommerce-MyAccount-content h3 {
	font-family: var(--wp--preset--font-family--display) !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 0 0 1rem !important;
}
body.woocommerce-account.logged-in .woocommerce-MyAccount-content h2 { font-size: 1.25rem !important; }
body.woocommerce-account.logged-in .woocommerce-MyAccount-content h3 { font-size: 1rem !important; }
body.woocommerce-account.logged-in .woocommerce-MyAccount-content p {
	color: var(--wp--preset--color--poly-ink);
	line-height: 1.55;
}

/* Orders table */
body.woocommerce-account table.woocommerce-orders-table,
body.woocommerce-account table.shop_table {
	width: 100%;
	border-collapse: collapse;
	background: transparent !important;
	border: 0 !important;
	margin: 0 !important;
}
body.woocommerce-account table.shop_table thead th {
	font-size: 0.6875rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--wp--preset--color--poly-muted) !important;
	background: transparent !important;
	border: 0 !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush) !important;
	padding: 0.75rem 1rem !important;
	text-align: left;
}
body.woocommerce-account table.shop_table tbody td {
	padding: 0.85rem 1rem !important;
	font-size: 0.875rem;
	color: var(--wp--preset--color--poly-ink);
	background: transparent !important;
	border: 0 !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush) !important;
	vertical-align: middle;
}
body.woocommerce-account table.shop_table tbody tr:last-child td { border-bottom: 0 !important; }
body.woocommerce-account table.shop_table .woocommerce-orders-table__cell-order-actions {
	text-align: right;
}
body.woocommerce-account table.shop_table .woocommerce-orders-table__cell-order-actions a.button {
	background: transparent !important;
	color: var(--wp--preset--color--poly-rose) !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	box-shadow: none !important;
	padding: 0.4rem 0.85rem !important;
	font-size: 0.75rem !important;
}
body.woocommerce-account table.shop_table .woocommerce-orders-table__cell-order-actions a.button:hover {
	border-color: var(--wp--preset--color--poly-rose) !important;
	color: var(--wp--preset--color--poly-magenta) !important;
	background: transparent !important;
}

/* Addresses grid */
body.woocommerce-account .woocommerce-Addresses,
body.woocommerce-account .u-columns.woocommerce-Addresses {
	display: grid !important;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}
@media (min-width: 640px) {
	body.woocommerce-account .woocommerce-Addresses,
	body.woocommerce-account .u-columns.woocommerce-Addresses {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
body.woocommerce-account .woocommerce-Address {
	width: 100% !important;
	background: var(--wp--preset--color--poly-cream);
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 1.5rem;
	box-sizing: border-box;
	float: none !important;
}
/* Stack vertical — "Añadir Dirección de facturación" es texto largo que apretado
   al lado del h3 rompe en 2 líneas de forma fea. Pill discreto debajo. */
body.woocommerce-account .woocommerce-Address-title {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}
body.woocommerce-account .woocommerce-Address-title h3 {
	margin: 0 !important;
	font-size: 1.0625rem !important;
	line-height: 1.3 !important;
}
body.woocommerce-account .woocommerce-Address-title .edit {
	display: inline-flex;
	align-items: center;
	font-size: 0.8125rem !important;
	font-weight: 500 !important;
	color: var(--wp--preset--color--poly-rose) !important;
	background: #fff !important;
	padding: 0.375rem 0.75rem !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 999px !important;
	box-shadow: none !important;
	text-decoration: none !important;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}
body.woocommerce-account .woocommerce-Address-title .edit:hover {
	background: var(--wp--preset--color--poly-bg) !important;
	border-color: var(--wp--preset--color--poly-rose) !important;
}
body.woocommerce-account .woocommerce-Address address {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--wp--preset--color--poly-ink);
	font-style: normal;
}


/* Auth form rows always full-width (override WC form-row-first/last) */
body.woocommerce-account:not(.logged-in) .form-row,
body.woocommerce-account:not(.logged-in) .form-row-first,
body.woocommerce-account:not(.logged-in) .form-row-last {
	width: 100% !important;
	float: none !important;
	clear: both !important;
}

/* Intro paragraph inside lost-password card */
body.woocommerce-account form.lost_reset_password > p:first-of-type,
body.woocommerce-account form.woocommerce-ResetPassword > p:first-of-type {
	margin: 0 0 1rem !important;
	color: var(--wp--preset--color--poly-muted);
	font-size: 0.875rem;
	line-height: 1.55;
}


/* ============================================================
   Order Received — WC Blocks confirmation
   ============================================================ */

body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-status,
body.woocommerce-order-received .wc-block-order-confirmation-status {
	max-width: 48rem !important;
	margin: 2.5rem auto 0 !important;
	text-align: center !important;
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.875rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	line-height: 1.2 !important;
	letter-spacing: -0.005em !important;
	background: transparent !important;
	padding: 0 1.5rem !important;
}
@media (min-width: 640px) {
	body.woocommerce-order-received .wc-block-order-confirmation-status { font-size: 2.25rem !important; }
}
body.woocommerce-order-received .wc-block-order-confirmation-status p { margin: 0 !important; }

body.woocommerce-order-received .wc-block-order-confirmation-status-description {
	max-width: 40rem;
	margin: 1rem auto 2rem !important;
	text-align: center;
	color: var(--wp--preset--color--poly-muted) !important;
	font-size: 0.9375rem;
	line-height: 1.55;
	padding: 0 1.5rem;
}
body.woocommerce-order-received .wc-block-order-confirmation-status-description p { margin: 0 !important; }

/* "Log in here / View order" inline CTA in confirmation — pill outline */
body.woocommerce-order-received .wc-block-order-confirmation-status-description a.button {
	display: inline-flex !important;
	align-items: center;
	gap: 0.4rem;
	background: transparent !important;
	color: var(--wp--preset--color--poly-rose) !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 9999px !important;
	padding: 0.5rem 1rem !important;
	font-weight: 600 !important;
	font-size: 0.8125rem !important;
	margin-left: 0.5rem;
	text-decoration: none !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-status-description a.button:hover {
	border-color: var(--wp--preset--color--poly-rose) !important;
	color: var(--wp--preset--color--poly-magenta) !important;
}

/* Section cards (summary, totals, downloads, additional info) */
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-summary,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-totals,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-shipping-address,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-billing-address,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-downloads,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-additional-information,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-additional-fields {
	max-width: 48rem;
	margin: 0 auto 1.5rem !important;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	padding: 1.5rem !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 5%, transparent );
	box-sizing: border-box;
}

body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-summary h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-totals h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-shipping-address h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-billing-address h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-downloads h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-additional-information h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-additional-fields h2 {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.125rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 0 0 1rem !important;
	padding: 0 0 0.75rem !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush);
	letter-spacing: -0.005em;
}

/* Addresses row: 2 columns on tablet+ */
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper {
	max-width: 48rem;
	margin: 0 auto 1.5rem !important;
	display: grid !important;
	grid-template-columns: 1fr;
	gap: 1.5rem;
}
@media (min-width: 640px) {
	body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper > .wp-block-column {
	margin: 0 !important;
}
/* Empty columns: hide them */
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper > .wp-block-column:empty,
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper > .wp-block-column.is-layout-flow:empty {
	display: none !important;
}

/* Totals rows inside confirmation */
body.woocommerce-order-received .wc-block-components-totals-item {
	padding: 0.5rem 0 !important;
	font-size: 0.875rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
}
body.woocommerce-order-received .wc-block-components-totals-item__value,
body.woocommerce-order-received .wc-block-components-formatted-money-amount {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
}
body.woocommerce-order-received .wc-block-components-totals-footer-item {
	border-top: 1px solid var(--wp--preset--color--poly-blush);
	margin-top: 0.5rem;
	padding-top: 0.875rem !important;
}
body.woocommerce-order-received .wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: 1.125rem !important; }


/* ============================================================
   Checkout — WC Blocks
   ============================================================ */

/* Distraction-free header — make brand match site (display font + deep) */
body.woocommerce-checkout .wp-block-woocommerce-checkout-header-block,
body.woocommerce-checkout .wc-block-checkout-header {
	padding: 1.5rem 1.5rem !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush);
	background: #fff;
}
body.woocommerce-checkout .wc-block-checkout-header__title {
	font-family: var(--wp--preset--font-family--display) !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 700 !important;
	letter-spacing: -0.005em;
}

/* Page body bg */
body.woocommerce-checkout {
	background: var(--wp--preset--color--poly-bg);
}

/* Alineación con el título: el pageheader es una banda full-bleed cuyo título va
   en una caja max-width 1232 (wideSize) centrada. El bloque del checkout, en
   cambio, vivía dentro del padding de .entry-content (1184, 24px más estrecho) →
   no alineaba con el título en pantallas anchas. Replicamos el MISMO mecanismo:
   bloque full-bleed con padding lateral, y dentro una caja max-width 1232
   centrada → las cards quedan exactamente a ras del título en todos los anchos. */
body.woocommerce-checkout .wp-block-woocommerce-checkout {
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	width: 100vw !important;
	max-width: 100vw !important;
	padding-top: 0 !important;
	padding-left: 1.5rem !important;
	padding-right: 1.5rem !important;
	box-sizing: border-box;
}
/* Outer layout: main + sidebar — caja de contenido (= wideSize del título). */
body.woocommerce-checkout .wc-block-components-sidebar-layout {
	max-width: var(--wp--style--global--wide-size, 1232px);
	margin: 0 auto 2rem !important;
	padding: 0 !important;
	gap: 2rem;
	align-items: flex-start;
}
@media (min-width: 1024px) {
	body.woocommerce-checkout .wc-block-components-sidebar-layout {
		flex-wrap: nowrap !important;
	}
	body.woocommerce-checkout .wc-block-checkout__main {
		flex: 1 1 auto !important;
		width: auto !important;
		padding-right: 0 !important;
	}
	body.woocommerce-checkout .wc-block-checkout__sidebar {
		flex: 0 0 24rem !important;
		width: 24rem !important;
		padding-left: 0 !important;
		position: sticky;
		top: 1.5rem;
	}
}
/* Tablet (entre móvil y desktop): WC deja dos columnas pero sin reglas de ancho
   → la columna del resumen quedaba vacía/rota. Apilamos a una sola columna. */
@media (min-width: 782px) and (max-width: 1023px) {
	body.woocommerce-checkout .wc-block-components-sidebar-layout {
		flex-wrap: wrap !important;
	}
	body.woocommerce-checkout .wc-block-checkout__main,
	body.woocommerce-checkout .wc-block-checkout__sidebar {
		flex: 1 1 100% !important;
		width: 100% !important;
		max-width: 100% !important;
	}
}

/* Each form block (contact, shipping, billing, shipping methods, payment, notes) as white card */
body.woocommerce-checkout .wc-block-checkout__contact-fields,
body.woocommerce-checkout .wc-block-checkout__billing-fields,
body.woocommerce-checkout .wc-block-checkout__shipping-fields,
body.woocommerce-checkout .wc-block-checkout__shipping-method,
body.woocommerce-checkout .wc-block-checkout__shipping-option,
body.woocommerce-checkout .wc-block-checkout__payment-method,
body.woocommerce-checkout .wc-block-checkout__order-notes,
body.woocommerce-checkout .wp-block-woocommerce-checkout-contact-information-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-shipping-address-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-billing-address-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-shipping-methods-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-payment-methods-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-payment-block,
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-note-block {
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	padding: 1.25rem 1.5rem !important;
	margin: 0 0 1.25rem !important;
	box-sizing: border-box;
}

/* Section headings */
body.woocommerce-checkout .wc-block-components-checkout-step__title,
body.woocommerce-checkout .wc-block-components-title {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	margin: 0 0 1rem !important;
	letter-spacing: -0.005em !important;
}
body.woocommerce-checkout .wc-block-components-checkout-step__description {
	color: var(--wp--preset--color--poly-muted) !important;
	font-size: 0.875rem;
	margin: 0.625rem 0 0.25rem !important;
}

/* Text inputs */
body.woocommerce-checkout .wc-block-components-text-input,
body.woocommerce-checkout .wc-block-components-combobox {
	margin: 0 0 0.875rem !important;
}
body.woocommerce-checkout .wc-block-components-text-input input,
body.woocommerce-checkout .wc-block-components-combobox input,
body.woocommerce-checkout .wc-block-components-select select,
body.woocommerce-checkout select,
body.woocommerce-checkout textarea {
	background: #fff !important;
	border: 2px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.875rem !important;
	/* La caja mide 3rem y el label flotante ocupa la franja de arriba: con el
	   `line-height` heredado (1.8 del tema) el valor no cabe entre el padding y
	   se le comían las colas («Japón», «Tokyo»). */
	line-height: 1.25 !important;
	min-height: 3rem !important;
	height: 3rem !important;
	padding: 1.25rem 1rem 0.4rem !important;
	box-shadow: none !important;
	transition: border-color 0.15s, box-shadow 0.15s;
}
body.woocommerce-checkout textarea { height: auto !important; min-height: 5rem !important; }
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-block-components-combobox input:focus,
body.woocommerce-checkout select:focus,
body.woocommerce-checkout textarea:focus {
	outline: none !important;
	border-color: var(--wp--preset--color--poly-rose) !important;
	box-shadow: 0 0 0 3px color-mix( in srgb, var(--poly-wc-accent) 15%, transparent ) !important;
}
body.woocommerce-checkout .wc-block-components-text-input label,
body.woocommerce-checkout .wc-block-components-combobox label {
	color: var(--wp--preset--color--poly-muted) !important;
	font-family: var(--wp--preset--font-family--sans) !important;
}

/* Estado de error de validación. Nuestro borde base (2px blush !important) pisaba
   el rojo de WC, así que un campo inválido no se distinguía. Lo restauramos. */
body.woocommerce-checkout .wc-block-components-text-input.has-error input,
body.woocommerce-checkout .wc-block-components-combobox.has-error input,
body.woocommerce-checkout .has-error > input,
body.woocommerce-checkout .has-error > select,
body.woocommerce-checkout .has-error textarea {
	border-color: #cc1818 !important;
}
body.woocommerce-checkout .wc-block-components-text-input.has-error input:focus,
body.woocommerce-checkout .wc-block-components-combobox.has-error input:focus,
body.woocommerce-checkout .has-error > input:focus,
body.woocommerce-checkout .has-error > select:focus {
	box-shadow: 0 0 0 3px rgba(204, 24, 24, 0.12) !important;
}
body.woocommerce-checkout .wc-block-components-validation-error {
	color: #cc1818 !important;
	font-size: 0.8125rem !important;
}


/* El formulario de dirección solo es flex cuando su contenedor mide 400px o más
   (WooCommerce lo decide con una @container query); por debajo —móvil— vuelve a
   `display: block`, y ahí el `row-gap` no existe: los campos se pegaban y sus
   bordes redondeados colisionaban. Por eso el espaciado vertical va en el
   margin de cada campo (funciona en los dos modos) y el gap solo separa las
   columnas. */
body.woocommerce-checkout .wc-block-components-address-form {
	gap: 0 0.75rem !important;
	align-items: flex-start !important; /* alinea arriba: Postal code y Prefecture comparten borde superior */
}
body.woocommerce-checkout .wc-block-components-address-form .wc-block-components-text-input,
body.woocommerce-checkout .wc-block-components-address-form .wc-block-components-combobox,
body.woocommerce-checkout .wc-block-components-address-form .wc-block-components-country-input,
body.woocommerce-checkout .wc-block-components-address-form .wc-block-components-state-input {
	margin-bottom: 0.875rem !important;
}
/* La casilla del newsletter va pegada al campo de email en el bloque de
   contacto (el email no lleva margin propio en modo bloque). */
body.woocommerce-checkout .wc-block-checkout__contact-fields .wc-block-components-checkbox {
	margin-top: 0.25rem !important;
}

/* Los <select> de País/Región y Prefecture van envueltos en .wc-blocks-components-select,
   que arrastra un margin-top de 12px del CSS de WooCommerce. Eso baja la caja con borde y
   desalinea Prefecture respecto a Postal code en su fila. Lo anulamos: el gap del form ya
   espacia las filas, así que el select queda al ras como los text-inputs. */
body.woocommerce-checkout .wc-block-components-address-form .wc-blocks-components-select {
	margin-top: 0 !important;
}

/* Add apartment / phone optional links */
body.woocommerce-checkout button.wc-block-components-button-secondary,
body.woocommerce-checkout .wc-block-components-address-form__address_2-toggle {
	background: transparent !important;
	color: var(--wp--preset--color--poly-rose) !important;
	font-size: 0.8125rem !important;
	font-weight: 600 !important;
	border: 0 !important;
	padding: 0.25rem 0 !important;
	box-shadow: none !important;
	text-decoration: none;
}
body.woocommerce-checkout button.wc-block-components-button-secondary:hover {
	color: var(--wp--preset--color--poly-magenta) !important;
}

/* Checkboxes (terms, add-note, save info) */
body.woocommerce-checkout .wc-block-components-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 0.625rem;
	font-size: 0.875rem;
	color: var(--wp--preset--color--poly-ink);
}
body.woocommerce-checkout .wc-block-components-checkbox__input {
	accent-color: var(--wp--preset--color--poly-rose);
}
body.woocommerce-checkout .wc-block-components-checkbox__label {
	color: var(--wp--preset--color--poly-ink);
	line-height: 1.5;
}

/* ── Tarjetas de opción: métodos de envío + métodos de pago ──
   Cada método es UNA sola caja. Claves:
     · Envío (sin acordeón): la caja es el propio .__option.
     · Pago (con acordeón): la caja es el wrapper .accordion-option y la fila
       interior va PLANA (sin borde/fondo/margen/radio).
   El RADIO es el <input> nativo de WC, posicionado en absolute por WC. NO lo
   reposicionamos (hacerlo dejaba un segundo radio suelto en la fila): solo lo
   recoloreamos y restauramos el hueco a su izquierda con padding-left, que
   nuestro padding anterior se había comido (de ahí que el texto lo pisara). */

/* Quita el borde/divisores que WC pone alrededor del GRUPO de opciones
   (.wc-block-components-radio-control): no queremos la caja que agrupa a las 3,
   solo las cajas individuales. */
body.woocommerce-checkout .wc-block-components-radio-control {
	border: 0 !important;
	background: transparent !important;
	padding: 0 !important;
	box-shadow: none !important;
	overflow: visible !important;
}
/* WC dibuja TODOS los bordes y divisores de las opciones con pseudo-elementos
   :after: el marco que envuelve las 3 opciones (--highlight-checked::after) y una
   línea gris sutil de 1px arriba de cada opción (…option:after, fondo currentColor
   al 20%). Como nosotros pintamos el borde directamente en cada caja, eliminamos
   todos esos :after para que no se solapen ni queden líneas grises. */
body.woocommerce-checkout .wc-block-components-radio-control::after,
body.woocommerce-checkout .wc-block-components-radio-control--highlight-checked::after,
body.woocommerce-checkout .wc-block-components-radio-control__option::after,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option::after {
	content: none !important;
	display: none !important;
	background: none !important;
	border: 0 !important;
}

/* La caja individual (común a envío y pago) */
body.woocommerce-checkout .wc-block-components-radio-control__option,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option {
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1rem !important;
	margin: 0 0 0.625rem !important;
	background: #fff !important;
	overflow: hidden;
	transition: border-color 0.15s, background 0.15s;
}
body.woocommerce-checkout .wc-block-components-radio-control__option:last-child,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option:last-child {
	margin-bottom: 0 !important;
}
body.woocommerce-checkout .wc-block-components-radio-control__option:hover,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option:hover {
	border-color: var(--wp--preset--color--poly-rose) !important;
}

/* Pago: la fila interior NO es caja — anula borde/fondo/margen/radio heredados */
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__option {
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	margin: 0 !important;
}

/* La fila: reserva hueco a la izquierda para el radio absolute de WC */
body.woocommerce-checkout .wc-block-components-radio-control__option {
	position: relative;
	padding: 0.875rem 1rem 0.875rem 2.85rem !important;
}

/* Seleccionado: tiñe la caja completa (envío) o el wrapper del método (pago) */
body.woocommerce-checkout .wc-block-components-radio-control__option-checked,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option:has(.wc-block-components-radio-control__option-checked) {
	border-color: var(--wp--preset--color--poly-rose) !important;
	background: var(--wp--preset--color--poly-cream) !important;
}
/* …pero en pago la fila no se vuelve a pintar (el wrapper ya está teñido) */
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__option-checked {
	background: transparent !important;
}

/* Radio nativo de WC: solo color, conservando su posición absolute */
body.woocommerce-checkout .wc-block-components-radio-control__input {
	accent-color: var(--wp--preset--color--poly-rose);
}

/* Contenido desplegado del método. Hay dos tipos:
     a) Descripción simple (bacs, cheque, contra reembolso, PayPal): texto suelto
        sobre el fondo de la caja, alineado con el label. Sin recuadro.
     b) Formulario de pago (tarjeta/Stripe…): lleva inputs/iframe → lo metemos en
        una tarjeta blanca limpia (radio + padding coherentes) dentro de la caja.
   Distinguimos con :has(): si hay campos, es formulario. */
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content,
body.woocommerce-checkout .wc-block-components-radio-control__description {
	border: 0 !important;
	background: transparent !important;
	margin: 0 !important;
	padding: 0 1rem 0.875rem 2.85rem !important;
	color: var(--wp--preset--color--poly-muted) !important;
	font-size: 0.875rem;
	line-height: 1.5;
}
/* Párrafos/elementos internos: márgenes uniformes, sin sangrías raras (p. ej. el
   segundo párrafo de PayPal aparecía indentado). */
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content p,
body.woocommerce-checkout .wc-block-components-radio-control__description p {
	margin: 0 0 0.4rem !important;
	padding: 0 !important;
	text-indent: 0 !important;
}
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content > *:last-child,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content p:last-child {
	margin-bottom: 0 !important;
}
/* Formulario de pago → tarjeta blanca dentro de la caja blush */
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content:has(input),
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content:has(textarea),
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content:has(select),
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content:has(iframe) {
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1rem !important;
	margin: 0 1rem 1rem !important;
	padding: 1.125rem !important;
}

/* "No payment methods available" notice */
body.woocommerce-checkout .wc-block-components-notice-banner.is-warning,
body.woocommerce-checkout .wc-block-checkout__no-payment-methods-notice {
	border-color: var(--wp--preset--color--poly-rose) !important;
	background: var(--wp--preset--color--poly-cream) !important;
}

/* Express checkout (Google/Apple Pay, PayPal). Solo aparece en prod, donde los
   gateways express están activos. Estructura WC Blocks:
     .wp-block-woocommerce-checkout-express-payment-block   (wrapper)
       └ .wc-block-components-express-payment               → caja titulada
           ├ …__title-container > …__title  ("Pago exprés")
           └ …__event-buttons               → botones de cada gateway
       └ .wc-block-components-express-payment-continue-rule → "O continúa más abajo"
   La caja titulada la tratamos como tarjeta blanca coherente con el resto de
   secciones; el separador queda fuera, a ancho completo, bajo la caja. */

/* El wrapper no pinta nada (la caja interior es la tarjeta) → sin doble marco */
body.woocommerce-checkout .wp-block-woocommerce-checkout-express-payment-block {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 0 1.25rem !important;
}

/* Caja titulada = tarjeta blanca (igual que contacto/envío/pago) */
body.woocommerce-checkout .wc-block-components-express-payment {
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	padding: 1.25rem 1.5rem !important;
	margin: 0 !important;
	box-sizing: border-box;
}

/* Título "Pago exprés" como heading de sección, centrado. WC dibuja reglas
   laterales alrededor del título con ::before/::after → las quitamos. */
body.woocommerce-checkout .wc-block-components-express-payment__title-container {
	margin: 0 0 1rem !important;
	border: 0 !important;
	justify-content: center !important;
}
body.woocommerce-checkout .wc-block-components-express-payment__title-container::before,
body.woocommerce-checkout .wc-block-components-express-payment__title-container::after {
	content: none !important;
	display: none !important;
	border: 0 !important;
}
body.woocommerce-checkout .wc-block-components-express-payment__title {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	letter-spacing: -0.005em !important;
	padding: 0 !important;
}

/* Botones apilados a ancho completo (uno por fila), coherentes con el botón de
   "Realizar el pedido". Antes iban en grid de 2 columnas, lo que estrujaba el
   botón de Google Pay/PayPal (rotura). El contenedor puede ser <ul> (con <li>) o
   <div> según versión de WC → cubrimos ambos. */
body.woocommerce-checkout .wc-block-components-express-payment__event-buttons {
	display: flex !important;
	flex-direction: column !important;
	gap: 0.625rem !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}
/* Wrapper de cada gateway: sin borde/fondo propio (la pill la da el plugin), a
   ancho completo. min-width:0 evita que el iframe desborde el flex item.
   IMPORTANTE: NO tocamos width/margin de los iframes — Stripe usa
   width:calc(100%+8px) + margin:-4px a propósito (sangrado del botón) y PayPal
   posiciona su iframe en absolute; forzarlos era lo que rompía el render. */
body.woocommerce-checkout .wc-block-components-express-payment__event-buttons > li,
body.woocommerce-checkout .wc-block-components-express-payment__event-buttons > div {
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	min-height: 3rem !important;
	list-style: none !important;
}
/* Solo los contenedores directos (no los iframes) llenan el ancho de la columna. */
body.woocommerce-checkout .wc-block-components-express-payment__event-buttons > li > div,
body.woocommerce-checkout .wc-block-components-express-payment__event-buttons > div > div {
	width: 100% !important;
}

/* Separador "O continúa más abajo": fuera de la tarjeta, a ancho completo */
body.woocommerce-checkout .wc-block-components-express-payment-continue-rule {
	color: var(--wp--preset--color--poly-muted) !important;
	font-size: 0.8125rem !important;
	text-transform: none !important;
	margin: 1.25rem 0 !important;
}
body.woocommerce-checkout .wc-block-components-express-payment-continue-rule::before,
body.woocommerce-checkout .wc-block-components-express-payment-continue-rule::after {
	border-color: var(--wp--preset--color--poly-blush) !important;
}

/* Métodos de pago guardados (tarjetas tokenizadas, p. ej. Stripe): mismo estilo
   de caja que las opciones de pago para que no rompan la coherencia. */
body.woocommerce-checkout .wc-block-components-saved-payment-method-options {
	display: grid;
	gap: 0.625rem;
}
body.woocommerce-checkout .wc-block-components-saved-payment-method__label {
	color: var(--wp--preset--color--poly-ink) !important;
}

/* Terms separator + small print */
body.woocommerce-checkout .wc-block-checkout__terms {
	border: 0 !important;
	padding: 1rem 0 1.5rem !important;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--poly-muted);
	text-align: center;
}
body.woocommerce-checkout .wc-block-checkout__terms a { color: var(--wp--preset--color--poly-rose); text-decoration: underline; text-underline-offset: 2px; }

/* Place order button */
body.woocommerce-checkout .wc-block-components-checkout-place-order-button,
body.woocommerce-checkout button.wc-block-components-checkout-place-order-button {
	display: flex !important;
	width: 100% !important;
	box-sizing: border-box;
	justify-content: center !important;
	align-items: center !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	padding: 1rem 1.5rem !important;
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.02em !important;
	box-shadow: 0 4px 14px color-mix( in srgb, var(--poly-wc-accent) 35%, transparent ) !important;
	transition: background 0.15s, transform 0.15s !important;
	min-height: 0 !important;
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	transform: translateY(-1px);
}
/* La línea "Total · Pago seguro" la inyecta el JS dentro de la barra de acciones.
   Solo tiene sentido en la barra sticky de móvil → oculta por defecto (desktop). */
body.woocommerce-checkout .poly-checkout-bar { display: none; }

/* ── Sidebar / Order Summary ── */
body.woocommerce-checkout .wc-block-checkout__sidebar {
	/* Card blanca. La página es casi blanca (#fff6f7); para que la card se distinga
	   nos apoyamos en el borde blush + la sombra (no en un fondo tintado). */
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	padding: 1.5rem !important;
	box-shadow: 0 6px 20px color-mix( in srgb, var(--poly-wc-accent) 12%, transparent );
	box-sizing: border-box;
}
body.woocommerce-checkout .wc-block-checkout__sidebar > * { padding-left: 0 !important; padding-right: 0 !important; }
/* WC mete un recuadro gris interno en el summary-block — lo quitamos (la card ya es el recuadro). */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block {
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
}
body.woocommerce-checkout .wc-block-components-order-summary-item {
	padding: 1.125rem 0 !important;
	border: 0 !important;
	border-bottom: 1px solid var(--wp--preset--color--poly-blush) !important;
	align-items: center !important;
	gap: 0.875rem !important;
}
body.woocommerce-checkout .wc-block-components-order-summary-item:last-child { border-bottom: 0 !important; }
/* Miniatura cuadrada fija — no estirar a la altura de la fila. */
body.woocommerce-checkout .wc-block-components-order-summary-item__image {
	flex: 0 0 3rem !important;
	width: 3rem !important;
	height: 3rem !important;
	min-width: 3rem !important;
	margin: 0 !important;
	padding: 0 !important;
	border-radius: 0.75rem !important;
	border: 1px solid var(--wp--preset--color--poly-blush);
	background: var(--wp--preset--color--poly-cream);
	overflow: visible;
	position: relative;
}
body.woocommerce-checkout .wc-block-components-order-summary-item__image img {
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	object-fit: cover !important;
	border-radius: 0.75rem !important;
	border: 0 !important;
	background: transparent !important;
}
body.woocommerce-checkout .wc-block-components-order-summary-item__quantity {
	position: absolute !important;
	top: -0.4rem !important;
	right: -0.4rem !important;
	left: auto !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	font-weight: 700 !important;
	font-size: 0.6875rem !important;
	line-height: 1 !important;
	border-radius: 9999px !important;
	min-width: 1.25rem;
	height: 1.25rem;
	padding: 0 0.35rem !important;
	box-shadow: 0 0 0 2px #fff;
}
/* La cantidad se muestra ahora como "N ×" en el subtítulo (lo inyecta el JS) →
   ocultamos la insignia flotante sobre la miniatura. */
body.woocommerce-checkout .wc-block-components-order-summary-item__quantity {
	display: none !important;
}
/* Cantidad 1: el unitario == total de línea → redundante, lo ocultamos. */
body.woocommerce-checkout .wc-block-components-order-summary-item.poly-qty-one .wc-block-components-order-summary-item__individual-prices {
	display: none !important;
}
/* Prefijo "N ×" del subtítulo cantidad × unitario (hereda el muted del unitario). */
body.woocommerce-checkout .poly-qty-x {
	color: inherit;
	font-weight: 600;
}
body.woocommerce-checkout .wc-block-components-order-summary-item__description .wc-block-components-product-name,
body.woocommerce-checkout .wc-block-components-product-name {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 0.875rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
	margin: 0 0 0.25rem !important;
}
/* Subtítulo "N × <unitario>": info secundaria. El unitario iba en magenta/negrita
   igual que el total de línea → competían. Lo dejamos pequeño y muted; el precio
   "fuerte" es el total de línea. El contenedor es una línea (block); el "N ×" y el
   importe van inline para que queden juntos: "4 × ¥12,000". */
body.woocommerce-checkout .wc-block-components-order-summary-item__individual-prices {
	display: block !important;
	margin-top: 0.25rem !important;
	color: var(--wp--preset--color--poly-muted) !important;
	font-weight: 500 !important;
	font-size: 0.75rem !important;
}
body.woocommerce-checkout .wc-block-components-order-summary-item__individual-prices .wc-block-components-formatted-money-amount,
body.woocommerce-checkout .wc-block-components-order-summary-item__individual-price {
	display: inline !important;
	color: inherit !important;
	font-weight: inherit !important;
	font-size: inherit !important;
}
/* El precio total (col. derecha) no debe encoger ni envolver, y separa del nombre
   para que no queden "pegados". */
body.woocommerce-checkout .wc-block-components-order-summary-item__total-price {
	flex-shrink: 0 !important;
	white-space: nowrap !important;
	padding-left: 0.75rem !important;
}
/* El título del resumen trae margin-left:16px por defecto (hueco de toggle) — lo alineamos al resto. */
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title-text {
	margin-left: 0 !important;
}
/* "Resumen del pedido" con el mismo estilo que los títulos de sección (Información
   de contacto, Dirección de envío…): display, 1.125rem, 600, poly-deep. */
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title,
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title-text,
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title button {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	letter-spacing: -0.005em !important;
}
/* WC pinta un borde translúcido oscuro arriba y abajo del título del resumen (se
   ven como líneas grises, sobre todo en la píldora colapsable). Fuera: los
   divisores reales del desglose son blush y los ponen los totals-wrapper. */
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title {
	border-top: 0 !important;
	border-bottom: 0 !important;
	margin-top: 0 !important;
}
body.woocommerce-checkout .wc-block-components-totals-item__value,
body.woocommerce-checkout .wc-block-components-formatted-money-amount {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
}
body.woocommerce-checkout .wc-block-components-totals-item {
	padding: 0.5rem 0 !important;
	font-size: 0.875rem !important;
	color: var(--wp--preset--color--poly-ink) !important;
}
/* WC envuelve items + totales en un .checkout-order-summary-block-fill con borde
   propio (translúcido oscuro) → caja anidada dentro de la card. La quitamos: la
   card (sidebar en desktop / summary-block en móvil) ya es el recuadro. */
body.woocommerce-checkout .checkout-order-summary-block-fill {
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
}
/* WC añade 16px de padding lateral propio a .wc-block-components-order-summary;
   sumado al de la card estrangulaba la columna del nombre (se partía en 5 líneas).
   La card ya pone el padding → este sobra. */
body.woocommerce-checkout .wc-block-components-order-summary {
	padding-left: 0 !important;
	padding-right: 0 !important;
}
/* Cada sección del desglose (cupón, subtotal, total) es un .totals-wrapper:
   un único divisor blush arriba + aire vertical uniforme, para que nada toque
   las líneas y todas las líneas sean del mismo color. (No lo limitamos al
   sidebar: en móvil el resumen completo vive en .wc-block-checkout__main.) */
body.woocommerce-checkout .wc-block-components-totals-wrapper {
	border: 0 !important;
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	padding: 0.875rem 0 !important;
}
/* El contenedor de totales solo agrupa subtotal + total: sin línea ni padding propios
   (las pintan sus filas internas). */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-totals-block {
	border: 0 !important;
	padding: 0 !important;
}
/* El footer-item del Total no duplica la línea (su wrapper ya la pone). */
body.woocommerce-checkout .wc-block-components-totals-footer-item {
	border-top: 0 !important;
	margin-top: 0 !important;
	padding-top: 0 !important;
	font-size: 1rem !important;
	font-weight: 600 !important;
}
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: 1.25rem !important; }

/* Coupon panel reuse the cart styling */
body.woocommerce-checkout .wc-block-components-panel__button {
	font-family: var(--wp--preset--font-family--sans) !important;
	font-size: 0.8125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-rose) !important;
	padding: 0.5rem 0 !important;
	background: transparent !important;
	border: 0 !important;
}
body.woocommerce-checkout .wc-block-components-panel__button:hover { color: var(--wp--preset--color--poly-magenta) !important; }
body.woocommerce-checkout .wc-block-components-panel__button-icon { fill: currentColor !important; }

/* Hide empty/zero totals rows in sidebar (no shipping selected, no taxes, etc.).
   Cuando no hay descuento/fee/envío/impuestos, WC deja el wrapper sin un
   .wc-block-components-totals-item dentro — lo ocultamos para que no aporten
   padding vacío entre Subtotal y Total. */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-shipping-block:not(:has(.wc-block-components-totals-item)),
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-taxes-block:not(:has(.wc-block-components-totals-item)),
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-fee-block:not(:has(.wc-block-components-totals-item)),
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-discount-block:not(:has(.wc-block-components-totals-item)) {
	display: none !important;
}

/* Tighten product-name wrap in sidebar items */
body.woocommerce-checkout .wc-block-components-order-summary-item__description {
	padding-right: 0.5rem;
}
/* WC mete la descripción corta del producto en el resumen, truncada a media
   palabra ("ESTE ES UN PRODUCT…") — ruido en un checkout. Dejamos solo el
   nombre (y la variación, si la hay). */
body.woocommerce-checkout .wc-block-components-product-metadata__description {
	display: none !important;
}

/* Mobile-only: cards/inputs breathing room */
@media (max-width: 781px) {
	/* La capa del checkout ya queda al ancho real de la página (24px del root
	   padding, igual que la cabecera "Finalizar compra"); su padding lateral metía
	   las cards 16px más adentro que el resto de la página → lo quitamos para que
	   los bloques alineen con el ancho real. */
	body.woocommerce-checkout .wc-block-components-sidebar-layout {
		padding: 0 !important;
		margin: 1.25rem auto !important;
		gap: 1rem;
	}
	body.woocommerce-checkout .wc-block-checkout__contact-fields,
	body.woocommerce-checkout .wc-block-checkout__billing-fields,
	body.woocommerce-checkout .wc-block-checkout__shipping-fields,
	body.woocommerce-checkout .wc-block-checkout__shipping-method,
	body.woocommerce-checkout .wc-block-checkout__shipping-option,
	body.woocommerce-checkout .wc-block-checkout__payment-method,
	body.woocommerce-checkout .wc-block-checkout__order-notes,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-contact-information-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-shipping-address-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-billing-address-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-shipping-methods-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-payment-methods-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-payment-block,
	body.woocommerce-checkout .wp-block-woocommerce-checkout-order-note-block {
		padding: 1rem 1rem !important;
		border-radius: 1.25rem !important;
		margin: 0 0 1rem !important;
	}
	body.woocommerce-checkout .wc-block-checkout__sidebar {
		padding: 1rem !important;
		border-radius: 1.25rem !important;
	}
	/* En móvil WC renderiza el resumen DOS veces: el colapsable de arriba
	   (.wc-block-checkout__sidebar) y un duplicado completo dentro de
	   .wc-block-checkout__main. Mostramos solo el colapsable + la barra sticky con
	   el Total → ocultamos el duplicado del main. (Sigue en el DOM, así el JS lee
	   de él el total para la barra.) */
	body.woocommerce-checkout .wc-block-checkout__main .wp-block-woocommerce-checkout-order-summary-block {
		display: none !important;
	}
	/* 16px de fuente para que iOS no haga zoom al enfocar; el padding de abajo
	   sube un pelo para que quepa la línea (20 + 20 + 6 = 46 ≤ 48). */
	body.woocommerce-checkout .wc-block-components-text-input input,
	body.woocommerce-checkout .wc-block-components-combobox input,
	body.woocommerce-checkout .wc-block-components-select select,
	body.woocommerce-checkout select,
	body.woocommerce-checkout textarea {
		padding: 1.25rem 0.75rem 0.375rem !important;
		font-size: 1rem !important;
	}
	body.woocommerce-checkout .wc-block-components-checkout-step__title,
	body.woocommerce-checkout .wc-block-components-title {
		margin: 0 0 0.75rem !important;
	}
	/* Payment notice padding tighter inside the card */
	body.woocommerce-checkout .wc-block-components-notice-banner {
		padding: 0.75rem 1rem !important;
	}
	/* Resumen del pedido: filas de producto y desglose más compactas en móvil
	   (en escritorio respiran más; aquí el espacio es escaso). */
	body.woocommerce-checkout .wc-block-components-order-summary-item {
		padding: 0.875rem 0 !important;
		gap: 0.625rem !important;
	}
	body.woocommerce-checkout .wc-block-components-totals-wrapper {
		padding: 0.75rem 0 !important;
	}
	body.woocommerce-checkout .wc-block-components-totals-item {
		padding: 0.375rem 0 !important;
	}
	body.woocommerce-checkout .wc-block-components-panel__button {
		padding: 0.25rem 0 !important;
	}
	/* ── Botón "Realizar el pedido" como barra fija inferior (solo móvil) ──
	   El botón vive en .wc-block-checkout__actions_row, al final del formulario.
	   Lo fijamos abajo para que esté siempre visible mientras se hace scroll. */
	body.woocommerce-checkout .wc-block-checkout__actions_row {
		position: fixed !important;
		left: 0 !important;
		right: 0 !important;
		bottom: 0 !important;
		z-index: 100 !important;
		margin: 0 !important;
		padding: 0.75rem 1rem calc(0.75rem + env(safe-area-inset-bottom)) !important;
		/* Fondo blanco sólido: la versión translúcida dejaba traslucir el borde de
		   la card de arriba y se veía sucio. */
		background: #fff !important;
		border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
		box-shadow: 0 -8px 24px rgba(42, 24, 40, 0.10) !important;
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 0.625rem !important;
	}
	/* Línea Total + "Pago seguro" inyectada por JS dentro de la barra sticky. */
	body.woocommerce-checkout .poly-checkout-bar {
		display: flex !important;
		justify-content: space-between !important;
		align-items: baseline !important;
		width: 100%;
		font-family: var(--wp--preset--font-family--sans) !important;
		font-size: 0.875rem;
		line-height: 1;
	}
	body.woocommerce-checkout .poly-checkout-bar__total-label {
		color: var(--wp--preset--color--poly-ink);
		font-weight: 600;
	}
	body.woocommerce-checkout .poly-checkout-bar__total-value {
		color: var(--wp--preset--color--poly-magenta);
		font-weight: 700;
		font-size: 1.0625rem;
		margin-left: 0.25rem;
	}
	body.woocommerce-checkout .poly-checkout-bar__secure {
		display: inline-flex;
		align-items: center;
		gap: 0.3rem;
		color: var(--wp--preset--color--poly-muted);
		font-size: 0.8125rem;
		align-self: center;
	}
	body.woocommerce-checkout .poly-checkout-bar__secure svg { flex: 0 0 auto; }
	/* Botón un poco más compacto dentro de la barra (no tan voluminoso). */
	body.woocommerce-checkout .wc-block-checkout__actions_row .wc-block-components-checkout-place-order-button {
		padding: 0.8125rem 1.5rem !important;
		font-size: 0.9375rem !important;
	}
	/* Hueco al final para que la barra no tape el último contenido. */
	body.woocommerce-checkout .wc-block-checkout__main {
		padding-bottom: 5.5rem !important;
	}
}

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-product-new,
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid {
	margin: 0;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block ul.wc-block-grid__products {
	display: grid !important;
	grid-template-columns: 1fr !important;
	gap: 1.25rem !important;
	padding: 0 !important;
	margin: 0 !important;
	list-style: none !important;
}
@media (min-width: 640px) {
	body.woocommerce-cart .wp-block-woocommerce-empty-cart-block ul.wc-block-grid__products {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}
@media (min-width: 1024px) {
	body.woocommerce-cart .wp-block-woocommerce-empty-cart-block ul.wc-block-grid__products {
		grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	}
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block li.wc-block-grid__product {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	overflow: hidden;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
	padding: 0 !important;
	margin: 0 !important;
	display: flex !important;
	flex-direction: column;
	width: auto !important;
	max-width: none !important;
	list-style: none !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block li.wc-block-grid__product:hover {
	transform: translateY(-4px);
	box-shadow: 0 20px 25px -5px rgba(244, 168, 196, 0.2);
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-link {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image {
	background: var(--wp--preset--color--poly-cream);
	margin: 0 !important;
	padding: 0 !important;
	aspect-ratio: 1 / 1;
	overflow: hidden;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	margin: 0 !important;
	padding: 0 !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-title {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1rem !important;
	line-height: 1.25 !important;
	color: var(--wp--preset--color--poly-ink) !important;
	font-weight: 600 !important;
	letter-spacing: -0.005em;
	padding: 1.25rem 1.25rem 0.5rem !important;
	margin: 0 !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price {
	padding: 0 1.25rem 1.25rem !important;
	margin: auto 0 0 !important;
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
	font-size: 0.875rem !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart {
	padding: 0 1.25rem 1.25rem !important;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart a.button {
	display: inline-flex !important;
	width: 100%;
	box-sizing: border-box;
	justify-content: center;
	align-items: center;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	padding: 0.6rem 1rem !important;
	font-weight: 600 !important;
	font-size: 0.8125rem !important;
	box-shadow: 0 4px 10px color-mix( in srgb, var(--poly-wc-accent) 30%, transparent );
	text-decoration: none !important;
	transition: background 0.15s;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-grid__product-add-to-cart a.button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
}

/* Center empty-cart title + decorate the empty icon */
body.woocommerce-cart .with-empty-cart-icon::before {
	content: "✿";
	display: block;
	font-size: 2.5rem;
	color: var(--wp--preset--color--poly-pink);
	margin-bottom: 0.5rem;
	line-height: 1;
}


/* ============================================================
   Polish (logged-in account + order-received with real data)
   ============================================================ */

/* Addresses page (/my-account/edit-address/) — flexbox 2-col.
   Grid was placing items in reversed columns (DOM order vs visual) — WC adds
   ::before/::after clearfix pseudo-elements that hijack grid auto-placement. */
body.woocommerce-account.logged-in .woocommerce-Addresses {
	display: flex !important;
	flex-direction: column !important;
	gap: 1.25rem !important;
	float: none !important;
	width: auto !important;
}
body.woocommerce-account.logged-in .woocommerce-Addresses::before,
body.woocommerce-account.logged-in .woocommerce-Addresses::after { display: none !important; }
@media (min-width: 640px) {
	body.woocommerce-account.logged-in .woocommerce-Addresses {
		flex-direction: row !important;
		align-items: stretch !important;
	}
	body.woocommerce-account.logged-in .woocommerce-Addresses > .woocommerce-Address {
		flex: 1 1 0 !important;
		min-width: 0 !important;
	}
}
body.woocommerce-account.logged-in .woocommerce-Addresses > .woocommerce-Address {
	float: none !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
}

/* Edit-account: password fieldset — remove the default browser dotted border */
body.woocommerce-account.logged-in fieldset {
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1rem !important;
	padding: 1rem 1.25rem !important;
	margin: 1.5rem 0 0 !important;
	background: var(--wp--preset--color--poly-cream);
}
body.woocommerce-account.logged-in fieldset legend {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 0.9375rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
	padding: 0 0.5rem !important;
}

/* "Mostrar/Editar Contraseña" hint text under fields */
body.woocommerce-account.logged-in span.description,
body.woocommerce-account.logged-in em {
	display: block;
	font-size: 0.75rem;
	color: var(--wp--preset--color--poly-muted);
	margin-top: 0.25rem;
	font-style: normal;
}

/* form-row-first / form-row-last side by side on edit-account */
@media (min-width: 640px) {
	body.woocommerce-account.logged-in form.woocommerce-EditAccountForm .form-row-first,
	body.woocommerce-account.logged-in form.woocommerce-EditAccountForm .form-row-last,
	body.woocommerce-account.logged-in form.edit-account .form-row-first,
	body.woocommerce-account.logged-in form.edit-account .form-row-last,
	body.woocommerce-account.logged-in .woocommerce-address-fields .form-row-first,
	body.woocommerce-account.logged-in .woocommerce-address-fields .form-row-last {
		width: calc(50% - 0.5rem) !important;
		float: none !important;
		display: inline-block;
		vertical-align: top;
	}
	body.woocommerce-account.logged-in form.woocommerce-EditAccountForm .form-row-first,
	body.woocommerce-account.logged-in form.edit-account .form-row-first,
	body.woocommerce-account.logged-in .woocommerce-address-fields .form-row-first {
		margin-right: 1rem !important;
	}
}

/* "Guardar cambios" / "Guardar dirección" button — tighter, primary */
body.woocommerce-account.logged-in button[type="submit"],
body.woocommerce-account.logged-in button.button[type="submit"] {
	min-width: 12rem;
}

/* ── Order Received with real data ── */
/* Hide WC's own "Order received" h2 — pageheader provides title */
body.woocommerce-order-received .woocommerce-thankyou-order-received,
body.woocommerce-order-received .woocommerce > h2:first-of-type {
	display: none !important;
}

/* Order overview pills row (#, fecha, total, email) */
body.woocommerce-order-received ul.woocommerce-order-overview,
body.woocommerce-order-received ul.order_details {
	display: flex !important;
	flex-wrap: wrap;
	gap: 1rem !important;
	padding: 1.25rem !important;
	margin: 0 auto 1.5rem !important;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	max-width: 48rem;
	list-style: none;
	box-sizing: border-box;
}
body.woocommerce-order-received ul.woocommerce-order-overview li,
body.woocommerce-order-received ul.order_details li {
	flex: 1 1 8rem;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	font-size: 0.6875rem !important;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--wp--preset--color--poly-muted) !important;
	font-weight: 600;
	border-left: 1px solid var(--wp--preset--color--poly-blush) !important;
	padding-left: 1rem !important;
}
body.woocommerce-order-received ul.woocommerce-order-overview li:first-child,
body.woocommerce-order-received ul.order_details li:first-child {
	border-left: 0 !important;
	padding-left: 0 !important;
}
body.woocommerce-order-received ul.woocommerce-order-overview li strong,
body.woocommerce-order-received ul.order_details li strong {
	display: block;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--poly-deep);
	font-weight: 600;
	letter-spacing: -0.005em;
	text-transform: none;
	margin-top: 0.25rem;
	font-family: var(--wp--preset--font-family--sans);
}

/* "Detalles del pedido" h2 outside the cards */
body.woocommerce-order-received .woocommerce-order-details > h2,
body.woocommerce-order-received section.woocommerce-order-details > h2,
body.woocommerce-order-received .woocommerce-customer-details > h2 {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1.25rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	max-width: 48rem;
	margin: 1.5rem auto 0.75rem !important;
	padding: 0 0.25rem;
}

/* Order details + customer details cards */
body.woocommerce-order-received .woocommerce-order-details,
body.woocommerce-order-received section.woocommerce-order-details,
body.woocommerce-order-received .woocommerce-customer-details {
	max-width: 48rem;
	margin: 0 auto 1.5rem !important;
}
body.woocommerce-order-received table.woocommerce-table--order-details,
body.woocommerce-order-received table.order_details,
body.woocommerce-order-received table.shop_table.order_details {
	width: 100% !important;
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	overflow: hidden;
	border-collapse: separate !important;
	border-spacing: 0 !important;
	margin: 0 !important;
}
body.woocommerce-order-received table.shop_table.order_details thead th {
	font-size: 0.6875rem !important;
	letter-spacing: 0.15em !important;
	text-transform: uppercase;
	font-weight: 700 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	background: var(--wp--preset--color--poly-cream) !important;
	padding: 0.875rem 1.25rem !important;
	border: 0 !important;
}
body.woocommerce-order-received table.shop_table.order_details tbody td,
body.woocommerce-order-received table.shop_table.order_details tbody th {
	padding: 0.875rem 1.25rem !important;
	border: 0 !important;
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	font-size: 0.875rem;
	color: var(--wp--preset--color--poly-ink);
	background: transparent !important;
}
body.woocommerce-order-received table.shop_table.order_details tbody tr:first-child td,
body.woocommerce-order-received table.shop_table.order_details tbody tr:first-child th { border-top: 0 !important; }
body.woocommerce-order-received table.shop_table.order_details tfoot th,
body.woocommerce-order-received table.shop_table.order_details tfoot td {
	padding: 0.625rem 1.25rem !important;
	font-size: 0.875rem;
	border: 0 !important;
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	background: transparent !important;
}
body.woocommerce-order-received table.shop_table.order_details tfoot tr:last-child th,
body.woocommerce-order-received table.shop_table.order_details tfoot tr:last-child td {
	background: var(--wp--preset--color--poly-cream) !important;
	font-size: 1rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
}
body.woocommerce-order-received table.shop_table.order_details .product-name a,
body.woocommerce-order-received table.shop_table.order_details .woocommerce-table__product-name a {
	color: var(--wp--preset--color--poly-deep) !important;
	font-family: var(--wp--preset--font-family--display) !important;
	font-weight: 600 !important;
	text-decoration: none !important;
}
body.woocommerce-order-received table.shop_table.order_details .product-name a:hover {
	color: var(--wp--preset--color--poly-rose) !important;
}
body.woocommerce-order-received table.shop_table.order_details .product-total bdi,
body.woocommerce-order-received table.shop_table.order_details .woocommerce-Price-amount {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700;
}

/* Customer details address blocks (legacy) */
body.woocommerce-order-received .woocommerce-customer-details .woocommerce-columns,
body.woocommerce-order-received .woocommerce-customer-details .col2-set {
	display: grid !important;
	grid-template-columns: 1fr !important;
	gap: 1.25rem;
}
@media (min-width: 640px) {
	body.woocommerce-order-received .woocommerce-customer-details .woocommerce-columns,
	body.woocommerce-order-received .woocommerce-customer-details .col2-set {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}
body.woocommerce-order-received .woocommerce-customer-details address {
	background: var(--wp--preset--color--poly-cream);
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	padding: 1.25rem !important;
	font-style: normal;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--wp--preset--color--poly-ink);
	width: 100% !important;
	box-sizing: border-box;
}
body.woocommerce-order-received .woocommerce-customer-details .col-1 h2,
body.woocommerce-order-received .woocommerce-customer-details .col-2 h2,
body.woocommerce-order-received .woocommerce-customer-details .woocommerce-column__title {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 0 0 0.5rem !important;
}


/* ============================================================
   Order Received (WC Blocks) — real order data
   ============================================================ */

/* Order summary list (N° pedido / Fecha / Total / Email) */
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-summary {
	max-width: 48rem !important;
	margin: 0 auto 1.5rem !important;
}
body.woocommerce-order-received ul.wc-block-order-confirmation-summary-list {
	display: flex !important;
	flex-wrap: wrap;
	gap: 0 !important;
	padding: 1.25rem !important;
	margin: 0 !important;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	list-style: none;
	box-sizing: border-box;
}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item {
	flex: 1 1 8rem;
	margin: 0 !important;
	padding: 0 1rem !important;
	border-left: 1px solid var(--wp--preset--color--poly-blush);
	display: flex !important;
	flex-direction: column;
	gap: 0.25rem;
}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item:first-child {
	border-left: 0 !important;
	padding-left: 0 !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item__key {
	font-size: 0.6875rem !important;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--wp--preset--color--poly-muted) !important;
	font-weight: 600;
}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item__value {
	font-size: 0.9375rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	font-family: var(--wp--preset--font-family--sans);
}

/* Totals table */
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-totals-wrapper,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-totals {
	max-width: 48rem !important;
	margin: 0 auto 1.5rem !important;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table {
	width: 100% !important;
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	border-collapse: separate !important;
	border-spacing: 0 !important;
	overflow: hidden;
	margin: 0 !important;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table thead th {
	background: var(--wp--preset--color--poly-cream) !important;
	font-size: 0.6875rem !important;
	letter-spacing: 0.15em !important;
	text-transform: uppercase;
	font-weight: 700 !important;
	color: var(--wp--preset--color--poly-muted) !important;
	padding: 0.875rem 1.25rem !important;
	border: 0 !important;
	text-align: left !important;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table thead th.wc-block-order-confirmation-totals__total {
	text-align: right !important;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tbody td {
	padding: 0.875rem 1.25rem !important;
	border: 0 !important;
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	font-size: 0.875rem;
	color: var(--wp--preset--color--poly-ink);
	vertical-align: top;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tbody td.wc-block-order-confirmation-totals__total {
	text-align: right !important;
	white-space: nowrap;
}
body.woocommerce-order-received .wc-block-order-confirmation-totals__product a {
	color: var(--wp--preset--color--poly-deep) !important;
	font-family: var(--wp--preset--font-family--display) !important;
	font-weight: 600 !important;
	text-decoration: none !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-totals__product a:hover {
	color: var(--wp--preset--color--poly-rose) !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-totals__total bdi,
body.woocommerce-order-received .wc-block-order-confirmation-totals__total .woocommerce-Price-amount {
	color: var(--wp--preset--color--poly-magenta) !important;
	font-weight: 700 !important;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tfoot th,
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tfoot td {
	background: transparent !important;
	border: 0 !important;
	border-top: 1px solid var(--wp--preset--color--poly-blush) !important;
	padding: 0.625rem 1.25rem !important;
	font-size: 0.875rem;
}
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tfoot tr:last-child th,
body.woocommerce-order-received table.wc-block-order-confirmation-totals__table tfoot tr:last-child td {
	background: var(--wp--preset--color--poly-cream) !important;
	font-size: 1rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
}

/* Address wrapper (billing + shipping, side by side) */
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper {
	max-width: 48rem !important;
	margin: 0 auto 1.5rem !important;
	display: flex !important;
	flex-wrap: wrap;
	gap: 1.5rem !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper > .wp-block-column {
	flex: 1 1 18rem !important;
	margin: 0 !important;
	background: #fff !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 1.5rem !important;
	padding: 1.25rem !important;
	box-sizing: border-box;
}
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-billing-wrapper,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-shipping-wrapper {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	box-shadow: none !important;
}
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-billing-wrapper h2,
body.woocommerce-order-received .wp-block-woocommerce-order-confirmation-shipping-wrapper h2 {
	font-family: var(--wp--preset--font-family--display) !important;
	font-size: 1rem !important;
	color: var(--wp--preset--color--poly-deep) !important;
	font-weight: 600 !important;
	margin: 0 0 0.5rem !important;
	padding: 0 !important;
	border: 0 !important;
}
body.woocommerce-order-received .wc-block-order-confirmation-billing-address,
body.woocommerce-order-received .wc-block-order-confirmation-shipping-address {
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--wp--preset--color--poly-ink);
}


/* Hide WC's confirmation-status heading when we have a real order
   (pageheader "¡Pedido recibido!" already shows it; status would be duplicate).
   We keep the description below. */
body.woocommerce-order-received .wc-block-order-confirmation-status {
	display: none !important;
}


/* ==========================================================================
   PRODUCT REVIEWS — estrellas en single, sección de reseñas y banda en home
   ========================================================================== */

/* --- Resumen de estrellas bajo el título (single product) --- */
.polymernai-single__rating {
	margin: 0.5rem 0 0.25rem !important;
}
.polymernai-single__rating .wc-block-components-product-rating,
.polymernai-single__rating .star-rating {
	color: var(--wp--preset--color--poly-rose);
	margin: 0;
}
.polymernai-single__rating .wc-block-components-product-rating__stars,
.polymernai-single__rating .star-rating span::before {
	color: var(--wp--preset--color--poly-rose);
}
.polymernai-single__rating a {
	color: var(--wp--preset--color--poly-muted);
	font-size: 0.8125rem;
	text-decoration: none;
}
.polymernai-single__rating a:hover { color: var(--wp--preset--color--poly-rose); }

/* --- Sección de reseñas (single product) --- */
.polymernai-reviews {
	border-top: 1px solid var(--wp--preset--color--poly-blush);
	background: color-mix( in srgb, var(--poly-reviews-bg) 45%, transparent );
	padding: 3rem 1.25rem;
}
/* el contenido de reseñas sigue el ancho del sitio (1232px), como el resto de secciones */
.polymernai-reviews__block {
	max-width: 1232px;
	margin-left: auto;
	margin-right: auto;
}
.polymernai-reviews__title,
.polymernai-reviews .wp-block-woocommerce-product-reviews-title {
	font-family: var(--wp--preset--font-family--display) !important;
	color: var(--wp--preset--color--poly-magenta) !important;
	font-size: 1.25rem !important;
	margin: 0 0 1.5rem !important;
}
/* lista de reseñas en 3 columnas (2 en tablet, 1 en móvil) para no desperdiciar ancho */
.polymernai-reviews .wp-block-woocommerce-product-review-template {
	margin: 0 0 1.5rem;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}
@media (min-width: 600px) {
	.polymernai-reviews .wp-block-woocommerce-product-review-template {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 982px) {
	.polymernai-reviews .wp-block-woocommerce-product-review-template {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
/* cada reseña como tarjeta blanda */
.polymernai-reviews .wp-block-woocommerce-product-review-template > li,
.polymernai-reviews ol.commentlist > li.review {
	list-style: none;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: var(--poly-radius, 1.5rem);
	box-shadow: var(--poly-shadow-soft, 0 6px 20px -8px rgba(232,122,167,0.25));
	padding: 1.25rem 1.5rem;
	margin: 0;
}
/* cabecera: autor + fecha a la izquierda, estrellas a la derecha (misma fila) */
.polymernai-review__head { align-items: center; gap: 0.75rem 1rem; }
.polymernai-review__id { gap: 0.1rem; }
.polymernai-review__author,
.polymernai-reviews .wp-block-woocommerce-product-review-author-name {
	font-weight: 600;
	color: var(--wp--preset--color--poly-deep);
	margin: 0;
}
.polymernai-review__date,
.polymernai-reviews .wp-block-woocommerce-product-review-date {
	color: var(--wp--preset--color--poly-muted);
	margin: 0;
	font-size: 0.8125rem;
}
.polymernai-review__date a { color: inherit; text-decoration: none; }
.polymernai-review__rating,
.polymernai-reviews .wp-block-woocommerce-product-review-rating,
.polymernai-reviews .star-rating {
	color: var(--wp--preset--color--poly-rose);
	margin: 0;
}
.polymernai-review__content {
	margin: 0.85rem 0 0;
	color: var(--wp--preset--color--poly-ink);
	line-height: 1.55;
}
.polymernai-review__content p:last-child { margin-bottom: 0; }

/* ── formulario "deja tu reseña" ──
   Tarjeta a ancho completo del contenido (igual que la lista de reseñas),
   en 2 columnas: textarea a la izquierda; puntuación + datos + enviar a la derecha. */
.polymernai-reviews #respond,
.polymernai-reviews .comment-respond {
	background: #fff !important; /* WC fuerza un fondo en el bloque form; lo sobrescribimos */
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: var(--poly-radius, 1.5rem);
	box-shadow: 0 8px 24px -16px color-mix( in srgb, var(--poly-shadow-form) 18%, transparent );
	padding: 2.5rem 2.75rem !important;
	margin: 0;
	max-width: none;
}
/* título del form vacío (ver inc/woocommerce.php) — se oculta para no dejar hueco;
   el link "Cancelar la respuesta" que va dentro ya está display:none por WC */
.polymernai-reviews #reply-title,
.polymernai-reviews .comment-reply-title {
	display: none;
}
.polymernai-reviews #commentform { margin: 0; }
.polymernai-reviews .comment-notes {
	color: var(--wp--preset--color--poly-muted);
	font-size: 0.8125rem;
	margin: 0 0 1.25rem;
}
/* puntuación: etiqueta + estrellas en una línea */
.polymernai-reviews .comment-form-rating {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	flex-wrap: wrap;
	margin: 0 0 1.1rem;
	color: var(--wp--preset--color--poly-rose);
}
.polymernai-reviews .comment-form-rating label {
	margin: 0;
	color: var(--wp--preset--color--poly-magenta);
	font-weight: 600;
}
.polymernai-reviews .comment-form-rating .stars-wrapper,
.polymernai-reviews .comment-form-rating .stars {
	display: inline-flex;
	gap: 0.3rem;
	margin: 0;
	padding: 0;
}
.polymernai-reviews .comment-form-rating .stars button {
	padding: 0;
	margin: 0;
	line-height: 0;
	background: none;
	border: 0;
	cursor: pointer;
}
.polymernai-reviews .comment-form-rating .stars button svg { width: 28px; height: 28px; }
.polymernai-reviews .comment-form-rating .stars button svg path {
	fill: var(--wp--preset--color--poly-blush);
	stroke: none;
	transition: fill 0.15s;
}
.polymernai-reviews .comment-form-rating .stars button.is-hovered svg path,
.polymernai-reviews .comment-form-rating .stars button.is-selected svg path {
	fill: var(--wp--preset--color--poly-rose);
}
.polymernai-reviews .comment-form-rating .stars a,
.polymernai-reviews p.stars a { color: var(--wp--preset--color--poly-rose) !important; }
/* campos (base: una columna; en desktop pasa a 2 columnas más abajo) */
.polymernai-reviews .comment-form-comment { margin: 0 0 1.1rem; }
.polymernai-reviews .comment-form-comment label,
.polymernai-reviews .comment-form-rating label { display: block; }
.polymernai-reviews .comment-form-comment label,
.polymernai-reviews .comment-form-author label,
.polymernai-reviews .comment-form-email label {
	color: var(--wp--preset--color--poly-magenta);
	font-weight: 600;
}
.polymernai-reviews .comment-form-cookies-consent label {
	color: var(--wp--preset--color--poly-muted);
	font-weight: 400;
}
.polymernai-reviews textarea {
	display: block;
	width: 100%;
	box-sizing: border-box;
	height: auto !important;
	min-height: 150px;
	padding: 0.9rem 1.1rem !important;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 0.85rem !important;
	box-shadow: none !important;
}
.polymernai-reviews input[type="text"],
.polymernai-reviews input[type="email"] {
	width: 100%;
	box-sizing: border-box;
	border: 1px solid var(--wp--preset--color--poly-blush) !important;
	border-radius: 0.75rem !important;
	box-shadow: none !important;
}
.polymernai-reviews .comment-form-author,
.polymernai-reviews .comment-form-email,
.polymernai-reviews .comment-form-cookies-consent { margin: 0 0 1.1rem; }
.polymernai-reviews .form-submit { margin: 0; }

/* ── 2 columnas en desktop ──
   Todos los campos van a la columna derecha en su orden natural; el textarea
   ocupa la izquierda y se estira al alto de esa columna. Sin posiciones
   explícitas conflictivas → orden correcto con o sin sesión. */
@media (min-width: 782px) {
	.polymernai-reviews #commentform {
		display: grid;
		grid-template-columns: 1.6fr 1fr;
		column-gap: 2.5rem;
		align-items: stretch;
		grid-auto-flow: row;
	}
	/* derecha por defecto, en orden natural */
	.polymernai-reviews #commentform > * { grid-column: 2; align-self: start; margin: 0 0 1.1rem; }
	.polymernai-reviews #commentform > *:last-child { margin-bottom: 0; }
	/* textarea: columna izquierda desde la fila 1, se estira al alto de la derecha */
	.polymernai-reviews #commentform > .comment-form-comment {
		grid-column: 1;
		grid-row: 1 / span 50;
		align-self: stretch;
		min-height: 0;
		margin: 0;
		display: flex;
		flex-direction: column;
	}
	.polymernai-reviews .comment-form-comment label { margin: 0 0 0.5rem; }
	.polymernai-reviews .comment-form-comment textarea {
		flex: 1 1 0;
		height: auto !important;
		min-height: 110px;
	}
}
.polymernai-reviews #respond input#submit,
.polymernai-reviews .comment-respond input[type="submit"] {
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	font-weight: 600 !important;
	padding: 0.75rem 1.5rem !important;
}
.polymernai-reviews #respond input#submit:hover,
.polymernai-reviews .comment-respond input[type="submit"]:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
}

/* --- Banda de reseñas en la home: carrusel (mismo mecanismo que Novedades) --- */
.polymernai-reviews-home__track {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 1.25rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	scrollbar-width: none;
}
.polymernai-reviews-home__track::-webkit-scrollbar { display: none; }
.polymernai-reviews-home__track > .polymernai-review-card {
	flex: 0 0 80%;
	max-width: none;
	box-sizing: border-box;
	scroll-snap-align: start;
}
@media (min-width: 640px) {
	.polymernai-reviews-home__track > .polymernai-review-card { flex-basis: 46%; }
}
@media (min-width: 1024px) {
	.polymernai-reviews-home__track > .polymernai-review-card { flex-basis: 31%; }
}
.polymernai-review-card {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: var(--poly-radius, 1.5rem);
	box-shadow: var(--poly-shadow-soft, 0 6px 20px -8px color-mix( in srgb, var(--poly-shadow-card) 25%, transparent ));
	padding: 1.5rem;
}
.polymernai-review-card__stars { display: inline-flex; gap: 0.15rem; line-height: 1; }
.polymernai-review-card__stars .polymernai-star { width: 1.05rem; height: 1.05rem; color: var(--wp--preset--color--poly-blush); }
.polymernai-review-card__stars .polymernai-star.is-on { color: var(--wp--preset--color--poly-rose); }
.polymernai-review-card__text {
	margin: 0;
	color: var(--wp--preset--color--poly-ink);
	line-height: 1.55;
	flex: 1 1 auto;
}
.polymernai-review-card__foot {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	border-top: 1px solid var(--wp--preset--color--poly-blush);
	padding-top: 0.85rem;
}
.polymernai-review-card__img {
	width: 44px;
	height: 44px;
	border-radius: 9999px;
	object-fit: cover;
	flex: 0 0 auto;
}
.polymernai-review-card__meta { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; }
.polymernai-review-card__author { font-weight: 600; color: var(--wp--preset--color--poly-deep); }
.polymernai-review-card__product {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--poly-rose);
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.polymernai-review-card__product:hover { color: var(--wp--preset--color--poly-magenta); }
/* la propia banda usa el padding/bg de .polymernai-section--kawaii ya existente */


/* ----- Feedback de carrito (badge + toast) ----- */
.polymernai-icon__badge[hidden] { display: none; }

.polymernai-toast {
	position: fixed;
	z-index: 9999;
	left: 50%;
	bottom: 1.5rem;
	transform: translate(-50%, 1rem);
	max-width: calc(100vw - 2rem);
	padding: 0.7rem 1.15rem;
	background: var(--wp--preset--color--poly-rose);
	color: #fff;
	font-family: var(--wp--preset--font-family--sans);
	font-weight: 600;
	font-size: 0.9rem;
	line-height: 1.2;
	border-radius: 9999px;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.25s ease, transform 0.25s ease;
}
.polymernai-toast.is-visible {
	opacity: 1;
	transform: translate(-50%, 0);
}
@media (prefers-reduced-motion: reduce) {
	.polymernai-toast { transition: opacity 0.25s ease; transform: translate(-50%, 0); }
}

/* Botón de la ficha mientras vuela el add AJAX */
.single_add_to_cart_button.loading { opacity: 0.6; pointer-events: none; cursor: progress; }
.single_add_to_cart_button.added::after { content: ""; }

/* Tarjeta compacta en móvil.
   Va al final del archivo a propósito: las reglas base de la tarjeta tienen la
   misma especificidad, así que si esto fuera antes, perdería.
   El título necesita flex-shrink: 0 — dentro de la columna flex de la tarjeta,
   al estrechar a dos columnas se encogía hasta altura 0 y desaparecía. */
@media (max-width: 639px) {
	.wp-block-woocommerce-product-template .wc-block-product {
		border-radius: 1rem;
	}
	.wp-block-woocommerce-product-template .polymernai-card-body {
		padding: 0.75rem !important;
		gap: 0.25rem !important;
	}
	.wp-block-woocommerce-product-template .polymernai-card-title,
	.wp-block-woocommerce-product-template .wc-block-components-product-title {
		font-size: 0.8125rem !important;
		line-height: 1.3 !important;
		max-height: 2.6em !important;
		flex: 0 0 auto !important;
	}
	.wp-block-woocommerce-product-template .polymernai-card-price,
	.wp-block-woocommerce-product-template .wc-block-components-product-price,
	.wp-block-woocommerce-product-template .price {
		font-size: 0.8125rem !important;
		flex: 0 0 auto !important;
	}
	.wp-block-woocommerce-product-template .polymernai-card-cat {
		font-size: 0.625rem !important;
		letter-spacing: 0.12em !important;
		flex: 0 0 auto !important;
	}
	/* Ambos badges en la misma línea: PRE ORDER a la izquierda, OFERTA a la
	   derecha. Medido a 390px: 77 + 57 + márgenes = 158 de 173 disponibles. */
	.wc-block-components-product-sale-badge,
	.wc-block-product.is-preorder::before,
	.wp-block-post.is-preorder::before {
		font-size: 0.625rem !important;
		padding: 0.25rem 0.5rem !important;
		letter-spacing: 0.05em !important;
	}
	.wc-block-product.is-preorder::before,
	.wp-block-post.is-preorder::before {
		top: 0.5rem !important;
		left: 0.5rem !important;
	}
	.wc-block-components-product-sale-badge {
		top: 0.5rem !important;
		right: 0.5rem !important;
	}
}

/* ==========================================================================
   Aviso de vuelta a stock (NotifyWise)
   El plugin trae Bootstrap para el modal y pinta su botón con colores propios.
   Aquí Bootstrap se descarta (ver inc/back-in-stock.php) y el modal + el botón
   se visten con los tokens del tema. Los selectores son largos a propósito:
   tienen que ganar al CSS inline `!important` que el plugin genera desde su
   panel de diseño (`button.sanfwc-custom-out-of-stock-button{...!important}`).
   ========================================================================== */

/* Botón de aviso — mismo pill primario que «Comprar ahora». */
.polymernai-single__cta button.sanfwc-custom-out-of-stock-button,
.polymernai-single__atc button.sanfwc-custom-out-of-stock-button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	box-sizing: border-box !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 2px solid var(--wp--preset--color--poly-rose) !important;
	border-radius: 9999px !important;
	font-size: 0.875rem !important;
	line-height: 1.4286 !important;
	font-weight: 700 !important;
	letter-spacing: 0.025em;
	padding: calc(0.75rem - 2px) calc(1.5rem - 2px) !important;
	margin: 0 !important;
	cursor: pointer;
	box-shadow: 0 4px 14px rgba(232, 122, 167, 0.35) !important;
	transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.polymernai-single__cta button.sanfwc-custom-out-of-stock-button:hover,
.polymernai-single__atc button.sanfwc-custom-out-of-stock-button:hover {
	background: var(--wp--preset--color--poly-magenta) !important;
	border-color: var(--wp--preset--color--poly-magenta) !important;
	transform: translateY(-1px);
}

/* Variables: la tarjeta de agotado vive oculta bajo los botones de compra y
   solo aparece cuando el JS del plugin ha metido el botón en su hueco; en ese
   momento los CTA de compra desaparecen (no se suman, se sustituyen). El hueco
   es `display:contents` para que el botón sea un ítem más de la fila: el plugin
   le pone `display` inline al mostrarlo/ocultarlo, de ahí el !important. */
.polymernai-single__cta--variation { display: none; }
.polymernai-single__cta--variation:has( #notifywise-variation-notify-button button ) { display: block; }
#notifywise-variation-notify-button { display: contents !important; }
.polymernai-single__atc form.cart:has( #notifywise-variation-notify-button button ) .woocommerce-variation-add-to-cart {
	display: none !important;
}

/* Modal — sustituye por completo a `.modal` de Bootstrap. */
body.polymernai-modal-open { overflow: hidden; }
.notifywise_form_modal {
	position: fixed;
	inset: 0;
	z-index: 100000;
	background: rgba(61, 34, 46, 0.45);
	overflow-y: auto;
	padding: 1.5rem 1rem;
}
/* El JS pone `display: block` inline al abrir; con `!important` lo pisamos por
   flex y así el diálogo queda centrado también en vertical (sin Bootstrap,
   `modal-dialog-centered` no hace nada). */
.notifywise_form_modal.is-open {
	display: flex !important;
	align-items: center;
	justify-content: center;
}
.notifywise_form_modal .modal-dialog {
	width: 100%;
	max-width: 26rem;
	margin: auto;
}
.notifywise_form_modal .modal-content {
	background: #fff;
	border: 1px solid var(--wp--preset--color--poly-blush);
	border-radius: 1.5rem;
	box-shadow: 0 18px 40px rgba(61, 34, 46, 0.18);
}
.notifywise_form_modal .modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.25rem 1.5rem 0.5rem;
}
.notifywise_form_modal .modal-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.125rem !important;
	font-weight: 600 !important;
	color: var(--wp--preset--color--poly-deep) !important;
}
.notifywise_form_modal .btn-close {
	appearance: none;
	width: 2rem;
	height: 2rem;
	padding: 0 !important;
	border: 0;
	border-radius: 9999px;
	background: transparent;
	color: var(--wp--preset--color--poly-muted);
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	opacity: 0.7;
}
.notifywise_form_modal .btn-close::before { content: "×"; display: block; }
.notifywise_form_modal .btn-close:hover {
	opacity: 1;
	background: var(--wp--preset--color--poly-cream);
}
.notifywise_form_modal .modal-body { padding: 0 1.5rem 1.5rem !important; }
/* Etiqueta de campo: rótulo pequeño, no un titular que compita con «Te
   avisamos». */
.notifywise_form_modal .form-fields label {
	color: var(--wp--preset--color--poly-muted);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.8125rem;
	font-weight: 600;
	line-height: 1.3;
}
/* Campo con la misma caja que los del checkout (48px de alto, 16px de fuente
   para que iOS no haga zoom); el del plugin venía a 27px de alto. */
.notifywise_form_modal .form-fields input:not([type="submit"]):not([type="checkbox"]) {
	box-sizing: border-box;
	width: 100%;
	height: 3rem;
	border: 2px solid var(--wp--preset--color--poly-blush);
	border-radius: 9999px;
	padding: 0.5rem 1rem;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 1rem;
	line-height: 1.25;
	color: var(--wp--preset--color--poly-ink);
	background: #fff;
}
.notifywise_form_modal .form-fields input:not([type="submit"]):not([type="checkbox"]):focus {
	border-color: var(--wp--preset--color--poly-rose);
	box-shadow: 0 0 0 3px rgba(232, 122, 167, 0.18);
}
.notifywise_form_modal .gdpr-concent-container {
	display: flex;
	align-items: flex-start;
	width: 100%;
	margin-left: 0;
	color: var(--wp--preset--color--poly-muted);
}
.notifywise_form_modal .gdpr-concent-container p {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.45;
}
/* Selector largo a propósito: el CSS del plugin le da un 70% de ancho a
   cualquier input del formulario, y eso incluía la casilla del consentimiento
   (salía como una caja enorme que empujaba el texto fuera del modal). */
.notifywise_form_modal form.notifywise-custom-form .form-fields .gdpr-concent-container input[type="checkbox"] {
	flex: 0 0 auto;
	width: 1.125rem !important;
	height: 1.125rem;
	min-width: 0;
	margin: 0.125rem 0 0;
	accent-color: var(--wp--preset--color--poly-rose);
}
.notifywise_form_modal .gdpr-concent-container a { color: var(--wp--preset--color--poly-rose); }
.notifywise_form_modal .notifywise-form-footer input[type="submit"] {
	width: 100% !important;
	background: var(--wp--preset--color--poly-rose) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 9999px !important;
	padding: 0.875rem 1.5rem !important;
	font-size: 0.9375rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.025em;
	margin-left: 0 !important;
	cursor: pointer;
}
/* El pie llega con el `gap` de 3 del plugin entre botón y spinner; el spinner
   es un SVG sin tamaño, que en un modal estrecho se comía media caja. */
.notifywise_form_modal .notifywise-form-footer {
	align-items: center;
	gap: 0.75rem !important;
	margin-top: 1.25rem !important;
}
.notifywise_form_modal .notifywise-form-footer svg {
	width: 1.5rem;
	height: 1.5rem;
	flex: 0 0 auto;
}
.notifywise_form_modal .notifywise-form-footer input[type="submit"]:hover:not(:disabled) {
	background: var(--wp--preset--color--poly-magenta) !important;
}
.notifywise_form_modal .notifywise-form-footer input[type="submit"]:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}
.notifywise_form_modal .notifywise-form-footer svg circle { stroke: var(--wp--preset--color--poly-rose); }
.notifywise_form_modal .subscribed-text {
	margin: 0;
	font-size: 0.875rem;
	color: var(--wp--preset--color--poly-deep);
}
/* Los campos vienen en dos columnas (etiqueta 30% / campo 70%) desde el CSS del
   plugin; en un modal estrecho se lee mejor apilado. */
.notifywise_form_modal form.notifywise-custom-form .form-fields {
	flex-direction: column;
	align-items: stretch;
	gap: 0.35rem;
	margin-top: 0.9rem;
}
.notifywise_form_modal form.notifywise-custom-form .form-fields label {
	width: auto !important;
	min-width: 0;
}
.notifywise_form_modal form.notifywise-custom-form .form-fields label:empty { display: none; }
/* Esta regla gana al CSS del plugin (`.notifywise-form form.notifywise-custom-form
   input`, que fija 14px y un padding de 2px), así que la caja del campo se
   termina de definir aquí. */
.notifywise_form_modal form.notifywise-custom-form .form-fields input:not([type="submit"]):not([type="checkbox"]) {
	width: 100% !important;
	/* El plugin le pone `flex: 1`; al apilar los campos en columna eso convierte
	   el flex-basis en altura y se comía el `height`. */
	flex: 0 0 auto;
	height: 3rem;
	padding: 0.5rem 1rem;
	font-size: 1rem;
	line-height: 1.25;
}
.notifywise_form_modal form.notifywise-custom-form .form-fields label {
	font-size: 0.8125rem;
}
.notifywise_form_modal .gdpr-concent-container { gap: 0.5rem; }
/* El botón que inyecta el JS del plugin (variaciones) no trae icono; se lo
   ponemos por CSS para que sea idéntico al del CTA de agotado. */
.polymernai-single__atc button.sanfwc-custom-out-of-stock-button:not(:has( svg ))::before {
	content: "";
	width: 18px;
	height: 18px;
	flex: 0 0 auto;
	background: currentColor;
	-webkit-mask: var(--polymernai-bell) center / contain no-repeat;
	mask: var(--polymernai-bell) center / contain no-repeat;
}
:root {
	--polymernai-bell: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/></svg>');
}

/* ──────────────────────────────────────────────────────────────
   Fotos adjuntas a una reseña (plugin WooCommerce Photo Reviews,
   pintadas por el tema — ver inc/woocommerce.php)
   ────────────────────────────────────────────────────────────── */

.polymernai-review__photos {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0.75rem 0 0;
	padding: 0;
}
.polymernai-review__photos li {
	margin: 0;
}
.polymernai-review__photo a {
	display: block;
	border-radius: 0.75rem;
	overflow: hidden;
	box-shadow: 0 0 0 1px var(--wp--preset--color--poly-blush);
	transition: box-shadow 0.15s;
}
.polymernai-review__photo a:hover {
	box-shadow: 0 0 0 2px var(--wp--preset--color--poly-pink);
}
.polymernai-review__photo-img {
	display: block;
	width: 72px;
	height: 72px;
	object-fit: cover;
}
