/* ==========================================================================
   Vértice Commerce 2 — core/cart-checkout.css
   Mecánica de CARRITO, CHECKOUT y GRACIAS (sin estética de marca, SOLO
   tokens). Porta el "recibo editorial" completo de la referencia v1
   (woo-cart-checkout.css): tablas planas de hairlines horizontales, cifras
   lining+tabular alineadas en columna, Total como pieza tipográfica con
   subrayado de acento, símbolo $ atenuado en las líneas de cuerpo y panel
   de resumen como única superficie enmarcada.

   Se encola con is_cart() || is_checkout() (el endpoint de pedido recibido
   — gracias — también es is_checkout()). core/shop.css NO carga acá: los
   notices y la neutralización de botones .vc-btn sobre el CSS del core se
   repiten en esta hoja para su contexto (coordinado: mismos tokens).

   Convenciones del motor:
   - Mobile-first; breakpoints 640 / 880 / 1100 (min-width). La tabla del
     carrito es tarjetas apiladas por DEFAULT y tabla real recién en ≥880px
     (mismo patrón del fix woo-account.css:244: sin hueco intermedio).
   - Foco: :focus-visible + var(--focus-ring) (anillo global en reset.css).
   - Motion SOLO dentro de @media (prefers-reduced-motion: no-preference).
   - z-index SOLO vía var(--z-*). SIN !important (fix woo-overrides.css:8):
     el CSS del core de Woo (woocommerce-general; layout y smallscreen se
     des-encolan en inc/woocommerce.php) se vence por especificidad acotada
     usando las clases de body .woocommerce-cart / .woocommerce-checkout.

   CONTRATO JS (Task 11) — carrito con actualización automática:
   - Con JS, main.js marca <body class="vc-cart-ajax"> y re-postea el form al
     cambiar cantidades: el botón "Actualizar carrito" (.vc-cart__update)
     sobra y se oculta. Sin JS, el botón queda como respaldo funcional.
   - Mientras recalcula: .vc-cart.is-updating (atenúa tabla y totales,
     bloquea clicks). El nodo que el AJAX reemplaza es .vc-cart ENTERO
     (incluidos los notices: viven adentro — fix main.js:967).
   ========================================================================== */

/* ============================ 1. LAYOUT DEL CARRITO ===================== */
/* cart/cart.php: .vc-cart > [notices del hook woocommerce_before_cart] +
   h1.vc-cart__head--items + form.vc-cart__form + .cart-collaterals
   .vc-cart__collaterals (cross-sells + totales por hooks del core).
   El h2 "Resumen del pedido" vive DENTRO de .cart_totals (cart-totals.php).

   Desktop: flex con wrap (no grid) A PROPÓSITO — los hooks del core pueden
   inyectar nodos hermanos en cualquier posición (notices, banners de
   plugins) y en un grid de 2 columnas esos nodos desconocidos descuadran la
   colocación; con flex, todo hijo desconocido cae a fila completa y solo el
   par form/collaterals comparte fila. */
.vc-cart { display: block; }

.vc-cart__head {
	margin: 0 0 var(--sp-4);
	font-family: var(--font-display);
	line-height: var(--lh-tight);
	color: var(--ink);
	text-wrap: balance;
}
.vc-cart__head--items { font-size: var(--fs-h1); }
/* Mismo tamaño que "Carrito" (--fs-h1): el "Resumen del pedido" es un título
   par del de la página, no un subtítulo dentro de la card (va fuera de ella,
   ver cart-totals.php). En ≥1100 el grid lo alinea a la altura de "Carrito". */
.vc-cart__head--summary { font-size: var(--fs-h1); margin-top: 0; }
/* Al vivir FUERA de la card (primer hijo del aside), el h2 pierde el reset del
   panel y hereda el margin-top del h2 base (~2rem): lo neutralizamos con más
   peso que ese origen para que su borde superior quede a la altura de "Carrito". */
.vc-cart__collaterals > .vc-cart__head--summary { margin-top: 0; }

.vc-cart__form { margin: 0 0 clamp(var(--sp-6), 5vw, var(--sp-7)); }

.vc-cart__collaterals { display: block; }
.vc-cart__crosssells { margin-top: clamp(var(--sp-5), 4vw, var(--sp-6)); }

/* El split abre recién en ≥1100 (no en 880): en 880 la tabla ya es tabla
   real con celdas nowrap + thumb de 96px (~600px de mínimo) y la columna
   del form en un split de 880 quedaba en ~420-460px → desborde horizontal
   en la franja 880-1050 (la misma clase de hueco del fix woo-account
   css:244). Entre 880 y 1100 la tabla real usa el ancho completo. */
@media (min-width: 1100px) {
	/* Grid de 2 columnas con los TÍTULOS en la fila de arriba: "Carrito" (área
	   head, col 1) y "Resumen del pedido" (fuera de la card, arriba del panel de
	   totales en el área aside, col 2) quedan a la MISMA ALTURA; debajo, los
	   items (col 1) y el panel de totales (col 2). El aside abarca las dos filas,
	   así su primer hijo (el título) arranca a la altura de head. Los hijos sin
	   área (notices, plugins) caen a fila completa (como en el flex anterior). */
	.vc-cart:not(.vc-cart--empty) {
		display: grid;
		grid-template-columns: minmax(0, 1fr) min(380px, 42%);
		grid-template-areas:
			"notices notices"
			"head    aside"
			"items   aside";
		column-gap: clamp(var(--sp-5), 4vw, var(--sp-8));
		align-items: start;
	}
	.vc-cart:not(.vc-cart--empty) > * { grid-column: 1 / -1; min-width: 0; }
	.vc-cart:not(.vc-cart--empty) > .woocommerce-notices-wrapper { grid-area: notices; }
	.vc-cart:not(.vc-cart--empty) > .vc-cart__head--items { grid-area: head; }
	.vc-cart:not(.vc-cart--empty) > .vc-cart__form {
		grid-area: items;
		margin-bottom: 0;
		/* Red de seguridad: si un plugin engorda la tabla más allá de la
		   columna, scrollea el form — nunca la página entera. */
		overflow-x: auto;
	}
	/* stretch: el panel sticky necesita que su contenedor mida el alto de la
	   fila para poder acompañar el scroll. */
	.vc-cart:not(.vc-cart--empty) > .vc-cart__collaterals {
		grid-area: aside;
		align-self: stretch;
	}
}

/* ============================ 2. NOTICES (carrito/checkout/gracias) ===== */
/* woocommerce_output_all_notices imprime .woocommerce-notices-wrapper DENTRO
   de .vc-cart (fix main.js:967) o arriba del checkout. Se anula el look del
   core (banda superior 3px + ícono ::before + padding para el ícono) con
   especificidad acotada por body class (0,2,0 vence a .woocommerce-message
   y a .woocommerce .woocommerce-message por orden de carga). */
.woocommerce-cart .woocommerce-message,
.woocommerce-cart .woocommerce-info,
.woocommerce-cart .woocommerce-error,
.woocommerce-checkout .woocommerce-message,
.woocommerce-checkout .woocommerce-info,
.woocommerce-checkout .woocommerce-error {
	position: static;
	list-style: none;
	margin: 0 0 var(--sp-4);
	padding: var(--sp-3) var(--sp-4);
	border: var(--border-w) solid var(--line);
	border-top-width: var(--border-w);
	border-radius: var(--radius-md);
	background: var(--surface-2);
	color: var(--ink);
	font-size: var(--fs-sm);
}
.woocommerce-cart .woocommerce-message::before,
.woocommerce-cart .woocommerce-info::before,
.woocommerce-cart .woocommerce-error::before,
.woocommerce-checkout .woocommerce-message::before,
.woocommerce-checkout .woocommerce-info::before,
.woocommerce-checkout .woocommerce-error::before {
	display: none;
}
.woocommerce-cart .woocommerce-message,
.woocommerce-checkout .woocommerce-message {
	border-color: color-mix(in srgb, var(--ok) 35%, var(--line));
	background: var(--ok-soft);
}
.woocommerce-cart .woocommerce-error,
.woocommerce-checkout .woocommerce-error {
	border-color: color-mix(in srgb, var(--error) 35%, var(--line));
	background: var(--error-soft);
	color: var(--error);
}
.woocommerce-cart .woocommerce-error li,
.woocommerce-checkout .woocommerce-error li { margin: 0; }
.woocommerce-cart .woocommerce-error li + li,
.woocommerce-checkout .woocommerce-error li + li { margin-top: var(--sp-2); }
/* Botón dentro del notice ("Deshacer", "Ver carrito"). */
.woocommerce-cart .woocommerce-message .button,
.woocommerce-cart .woocommerce-info .button,
.woocommerce-checkout .woocommerce-message .button,
.woocommerce-checkout .woocommerce-info .button {
	float: right;
	margin-left: var(--sp-3);
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--brand-strong);
	font-size: var(--fs-xs);
	font-weight: 500;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ============================ 2b. BOTONES .vc-btn SOBRE WC CORE ========== */
/* Réplica del bloque §13 de core/shop.css (que NO carga acá) scopeada por
   body class. El wrapper del shortcode imprime <div class="woocommerce">,
   así que woocommerce-general aplica: .woocommerce button.button (0,2,1) y
   .woocommerce button.button.alt (0,3,1) — p.ej. "Aplicar cupón",
   "Actualizar carrito" (cart.php) y #place_order (payment.php, button.alt) —
   se vencen con (0,3,1)/(0,4,1) sin !important. MISMOS tokens que
   components.css/shop.css §13: cero drift. Las variantes llevan
   .vc-btn.vc-btn--x (0,4,1) para ganarle también al bloque base .alt. */
.woocommerce-cart a.button.vc-btn,
.woocommerce-cart button.button.vc-btn,
.woocommerce-cart input.button.vc-btn,
.woocommerce-cart a.button.alt.vc-btn,
.woocommerce-cart button.button.alt.vc-btn,
.woocommerce-checkout a.button.vc-btn,
.woocommerce-checkout button.button.vc-btn,
.woocommerce-checkout input.button.vc-btn,
.woocommerce-checkout a.button.alt.vc-btn,
.woocommerce-checkout button.button.alt.vc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 0.8rem 1.4rem;
	font-family: var(--font-sans);
	font-size: var(--fs-sm);
	font-weight: 500;
	line-height: 1;
	text-decoration: none;
	text-shadow: none;
	box-shadow: none;
	cursor: pointer;
	background: var(--cta-bg);
	color: var(--cta-ink);
	border: var(--border-w) solid transparent;
	border-radius: var(--radius-pill);
}
.woocommerce-cart a.button.vc-btn:hover,
.woocommerce-cart button.button.vc-btn:hover,
.woocommerce-cart input.button.vc-btn:hover,
.woocommerce-cart a.button.alt.vc-btn:hover,
.woocommerce-cart button.button.alt.vc-btn:hover,
.woocommerce-checkout a.button.vc-btn:hover,
.woocommerce-checkout button.button.vc-btn:hover,
.woocommerce-checkout input.button.vc-btn:hover,
.woocommerce-checkout a.button.alt.vc-btn:hover,
.woocommerce-checkout button.button.alt.vc-btn:hover {
	background: var(--cta-bg-hover);
	color: var(--cta-ink);
}
.woocommerce-cart a.button.vc-btn:focus-visible,
.woocommerce-cart button.button.vc-btn:focus-visible,
.woocommerce-cart input.button.vc-btn:focus-visible,
.woocommerce-checkout a.button.vc-btn:focus-visible,
.woocommerce-checkout button.button.vc-btn:focus-visible,
.woocommerce-checkout input.button.vc-btn:focus-visible {
	outline: 2px solid var(--focus-ring);
	outline-offset: 2px;
}
/* Variante fantasma. */
.woocommerce-cart a.button.vc-btn.vc-btn--ghost,
.woocommerce-cart button.button.vc-btn.vc-btn--ghost,
.woocommerce-cart input.button.vc-btn.vc-btn--ghost,
.woocommerce-checkout a.button.vc-btn.vc-btn--ghost,
.woocommerce-checkout button.button.vc-btn.vc-btn--ghost,
.woocommerce-checkout input.button.vc-btn.vc-btn--ghost {
	background: transparent;
	color: var(--brand-strong);
	border-color: var(--brand);
}
.woocommerce-cart a.button.vc-btn.vc-btn--ghost:hover,
.woocommerce-cart button.button.vc-btn.vc-btn--ghost:hover,
.woocommerce-cart input.button.vc-btn.vc-btn--ghost:hover,
.woocommerce-checkout a.button.vc-btn.vc-btn--ghost:hover,
.woocommerce-checkout button.button.vc-btn.vc-btn--ghost:hover,
.woocommerce-checkout input.button.vc-btn.vc-btn--ghost:hover {
	background: var(--brand);
	color: var(--cta-ink);
}
/* Tamaños / block. */
.woocommerce-cart a.button.vc-btn.vc-btn--sm,
.woocommerce-cart button.button.vc-btn.vc-btn--sm,
.woocommerce-cart input.button.vc-btn.vc-btn--sm,
.woocommerce-checkout a.button.vc-btn.vc-btn--sm,
.woocommerce-checkout button.button.vc-btn.vc-btn--sm,
.woocommerce-checkout input.button.vc-btn.vc-btn--sm { padding: 0.6rem 1rem; font-size: var(--fs-xs); }
.woocommerce-cart a.button.vc-btn.vc-btn--lg,
.woocommerce-cart button.button.vc-btn.vc-btn--lg,
.woocommerce-checkout a.button.vc-btn.vc-btn--lg,
.woocommerce-checkout button.button.vc-btn.vc-btn--lg { padding: 1rem 1.8rem; font-size: var(--fs-body); min-height: 52px; }
.woocommerce-cart a.button.vc-btn.vc-btn--block,
.woocommerce-cart button.button.vc-btn.vc-btn--block,
.woocommerce-checkout a.button.vc-btn.vc-btn--block,
.woocommerce-checkout button.button.vc-btn.vc-btn--block { display: flex; width: 100%; }
/* Estados del add-to-cart AJAX del core (cross-sells del carrito). */
.woocommerce-cart a.button.vc-btn.added,
.woocommerce-checkout a.button.vc-btn.added { background: var(--cta-bg-hover); }
.woocommerce-cart a.button.vc-btn.loading,
.woocommerce-checkout a.button.vc-btn.loading { opacity: 0.7; pointer-events: none; }

/* ============================ 3. DINERO: UNA SOLA VERDAD ================ */
/* Toda cifra en la sans del contrato con lining+tabular: las columnas de
   importes alinean dígito a dígito (mecánica del recibo v1 §9.0). */
.vc-cart .woocommerce-Price-amount,
.vc-checkout .woocommerce-Price-amount,
.vc-thankyou .woocommerce-Price-amount,
.vc-cart .amount,
.vc-checkout .amount,
.vc-thankyou .amount {
	font-family: var(--font-sans);
	font-style: normal;
	font-variant-numeric: lining-nums tabular-nums;
	font-feature-settings: "lnum" 1, "tnum" 1;
}
/* $ atenuado en líneas de cuerpo: el número manda (v1 §9.3). */
.vc-cart .woocommerce-Price-currencySymbol,
.vc-checkout .woocommerce-Price-currencySymbol,
.vc-thankyou .woocommerce-Price-currencySymbol {
	color: var(--ink-3);
	font-weight: inherit;
	margin-right: 0.1em;
}

/* ============================ 4. TABLA DEL CARRITO ====================== */
/* cart/cart.php: table.shop_table.vc-cart__table > tr.vc-cart__row con
   celdas product-remove/thumbnail/name/price/quantity/subtotal (+ fila
   .vc-cart__actions). Sin marco propio: los ítems flotan sobre el lienzo
   (editorial); el marco queda reservado para el recibo (§6).

   Neutralización del core: .woocommerce table.shop_table llega a (0,2,1) en
   la tabla, (0,2,2) en th/td y (0,2,3) en tbody th — un body class solo
   (0,2,0) NO alcanza. Se suma .shop_table (clase que el template conserva)
   y .cart_item en las filas: (0,3,x)+ le gana al core en todos los niveles,
   igual que el bloque del thankyou (§14, table.shop_table). */
.woocommerce-cart .vc-cart__table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	border-radius: 0;
	margin: 0;
	background: transparent;
}
.woocommerce-cart .vc-cart__table.shop_table th,
.woocommerce-cart .vc-cart__table.shop_table td {
	border: 0;
	background: transparent;
	line-height: var(--lh-snug);
}

/* --- Base (mobile-first): tarjetas apiladas, sin thead --- */
.woocommerce-cart .vc-cart__table.shop_table,
.woocommerce-cart .vc-cart__table.shop_table tbody { display: block; width: 100%; }
.woocommerce-cart .vc-cart__table.shop_table thead { display: none; }
/* Reset de filas a bloque EXCEPTO las de producto: .cart_item es grid (abajo) /
   table-row (980–1099). Sin el :not, esta regla (0,3,2) le ganaba a
   .cart_item{display:grid} (0,3,0) y el grid del recibo NUNCA se aplicaba →
   el ítem caía a table-cell y se veía desprolijo (bug del motor). */
.woocommerce-cart .vc-cart__table.shop_table tbody tr:not(.cart_item) { display: block; }

.woocommerce-cart .vc-cart__row.cart_item {
	position: relative;
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: var(--sp-1) var(--sp-4);
	align-items: start;
	padding: var(--sp-5) 0;
	border-bottom: var(--border-w) solid var(--line);
}
.woocommerce-cart .vc-cart__row.cart_item td { padding: 0; text-align: left; }
.woocommerce-cart .vc-cart__row.cart_item td.product-thumbnail {
	grid-column: 1;
	grid-row: 1 / span 4;
	width: auto;
	align-self: start;
}
.woocommerce-cart .vc-cart__row.cart_item td.product-name {
	grid-column: 2;
	padding-right: var(--sp-7); /* aire para el botón quitar absoluto */
}
/* Precio unitario: susurro bajo el nombre. */
.woocommerce-cart .vc-cart__row.cart_item td.product-price {
	grid-column: 2;
	display: flex;
	align-items: baseline;
	gap: var(--sp-2);
	margin-top: 3px;
	white-space: normal;
}
/* Cantidad y subtotal: aire arriba para separar del bloque nombre/precio. */
.woocommerce-cart .vc-cart__row.cart_item td.product-quantity {
	grid-column: 2;
	margin-top: var(--sp-3);
}
/* Stepper alineado a la izquierda (con nombre/precio/subtotal). En la tabla real
   980–1099 se re-centra (margin-inline:auto) más abajo, que gana por orden. */
.woocommerce-cart .vc-cart__row.cart_item td.product-quantity .vc-qty { margin-inline: 0; }
.woocommerce-cart .vc-cart__row.cart_item td.product-subtotal {
	grid-column: 2;
	display: flex;
	align-items: baseline;
	gap: var(--sp-2);
	margin-top: var(--sp-2);
	white-space: normal;
}
/* Etiqueta de la celda apilada (data-title): versalita calma, editorial. */
.woocommerce-cart .vc-cart__row.cart_item td.product-price::before,
.woocommerce-cart .vc-cart__row.cart_item td.product-subtotal::before {
	content: attr(data-title);
	font-family: var(--font-sans);
	font-size: var(--fs-xs);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ink-3);
}
.woocommerce-cart .vc-cart__row.cart_item td.product-remove {
	position: absolute;
	top: var(--sp-5);
	right: 0;
	width: auto;
}

/* --- 980–1099px: tabla real (recibo a columnas). SOLO en single-column con
   contenedor ancho. En 2-col (≥1100px) la columna del form NO llega al ancho
   mínimo de la tabla (~905px; contenedor capado en 1240 − resumen ~380), y por
   debajo de ~980px el contenedor tampoco → ahí la tabla se queda en tarjetas
   apiladas (el layout base), que caben en cualquier ancho. Fix del scroll-H. --- */
@media (min-width: 980px) and (max-width: 1099px) {
	.woocommerce-cart .vc-cart__table.shop_table { display: table; }
	.woocommerce-cart .vc-cart__table.shop_table thead { display: table-header-group; }
	.woocommerce-cart .vc-cart__table.shop_table tbody { display: table-row-group; }
	.woocommerce-cart .vc-cart__table.shop_table tbody tr { display: table-row; }
	.woocommerce-cart .vc-cart__row.cart_item { display: table-row; padding: 0; border: 0; }
	.woocommerce-cart .vc-cart__row.cart_item td {
		display: table-cell;
		padding: var(--sp-5) var(--sp-3);
		border-bottom: var(--border-w) solid var(--line);
		vertical-align: middle;
	}
	/* Encabezados de columna: versalita calma con tracking abierto (v1 §9.2). */
	.woocommerce-cart .vc-cart__table.shop_table thead th {
		padding: 0 var(--sp-3) var(--sp-3);
		border-bottom: var(--border-w) solid var(--line);
		text-align: left;
		font-family: var(--font-sans);
		font-size: var(--fs-xs);
		font-weight: 600;
		letter-spacing: 0.12em;
		text-transform: uppercase;
		color: var(--ink-3);
	}
	.woocommerce-cart .vc-cart__table.shop_table thead th.product-price,
	.woocommerce-cart .vc-cart__table.shop_table thead th.product-quantity,
	.woocommerce-cart .vc-cart__table.shop_table thead th.product-subtotal { text-align: center; }
	.woocommerce-cart .vc-cart__row.cart_item td.product-remove {
		position: static;
		width: 36px;
		padding-left: 0;
	}
	.woocommerce-cart .vc-cart__row.cart_item td.product-thumbnail { width: 96px; }
	.woocommerce-cart .vc-cart__row.cart_item td.product-name { padding-right: var(--sp-3); }
	.woocommerce-cart .vc-cart__row.cart_item td.product-price,
	.woocommerce-cart .vc-cart__row.cart_item td.product-quantity,
	.woocommerce-cart .vc-cart__row.cart_item td.product-subtotal {
		display: table-cell;
		text-align: center;
		white-space: nowrap;
	}
	.woocommerce-cart .vc-cart__row.cart_item td.product-price::before,
	.woocommerce-cart .vc-cart__row.cart_item td.product-subtotal::before { content: none; }
	.woocommerce-cart .vc-cart__row.cart_item td.product-subtotal { padding-right: 0; }
	.woocommerce-cart .vc-cart__row.cart_item td.product-quantity .vc-qty { margin-inline: auto; }
}

/* Miniatura: plana, solo hairline (editorial). El core fija table.cart img
   en 32px (0,1,3): se vence con (0,4,2). */
.woocommerce-cart .vc-cart__table.shop_table td.product-thumbnail img {
	width: 96px;
	height: 112px;
	max-width: none;
	object-fit: cover;
	border-radius: var(--radius-md);
	border: var(--border-w) solid var(--line);
	background: var(--surface-2);
	box-shadow: none;
}
@media (min-width: 880px) {
	.woocommerce-cart .vc-cart__table.shop_table td.product-thumbnail img {
		width: 96px;
		height: 116px;
	}
}

/* Nombre del producto: pieza display; jerarquía por peso en los importes
   (precio unitario muted, subtotal en tinta plena — v1 §9.3). */
.vc-cart__name {
	font-family: var(--font-display);
	font-size: 1.15em;
	font-weight: 600;
	color: var(--ink);
	line-height: var(--lh-snug);
	text-decoration: none;
}
.vc-cart__name:hover { color: var(--brand-strong); }
.woocommerce-cart .vc-cart__row td.product-price { color: var(--ink-2); font-size: var(--fs-sm); }
.woocommerce-cart .vc-cart__row td.product-subtotal {
	color: var(--ink);
	font-weight: 700;
	font-size: 1.05em;
}

/* Variación / backorder bajo el nombre. El core flota los dt de dl.variation
   (0,2,3): se vence con (0,3,4). */
.woocommerce-cart .vc-cart__row td.product-name dl.variation {
	margin: var(--sp-1) 0 0;
	font-size: var(--fs-xs);
	color: var(--ink-3);
}
.woocommerce-cart .vc-cart__row td.product-name dl.variation dt,
.woocommerce-cart .vc-cart__row td.product-name dl.variation dd {
	float: none;
	display: inline;
	margin: 0;
	padding: 0;
	font-weight: inherit;
}
.woocommerce-cart .vc-cart__row td.product-name dl.variation dt { font-weight: 500; }
.woocommerce-cart .vc-cart__row td.product-name dl.variation dd::after {
	content: " ";
	display: block;
	height: 0.15em;
}
.woocommerce-cart .vc-cart__row td.product-name dl.variation dd p { margin: 0; display: inline; }
.woocommerce-cart .vc-cart__row .backorder_notification {
	margin: var(--sp-1) 0 0;
	font-size: var(--fs-xs);
	color: var(--warn);
}

/* --- Botón quitar: reposo casi invisible, hover de alerta suave; el ícono
       (tacho) inclina apenas en hover — micro-gesto, solo transform (v1
       §9.4; transición en §13). El core pinta a.remove en rojo con
       !important sobre el <a>: el color del ícono se fija en el propio
       <svg> (currentColor del svg ≠ color heredado del <a>) y el resto se
       vence por especificidad. --- */
.woocommerce-cart .vc-cart__remove {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	margin: 0;
	border-radius: var(--radius-pill);
	background: transparent;
	border: var(--border-w) solid transparent;
	font-size: 0; /* mata el "×" tipográfico del core si el ícono no carga el SVG */
	text-decoration: none;
}
.woocommerce-cart .vc-cart__remove svg {
	width: 17px;
	height: 17px;
	display: block;
	color: var(--ink-3);
	transform-origin: 70% 30%;
}
.woocommerce-cart .vc-cart__remove:hover,
.woocommerce-cart .vc-cart__remove:focus-visible {
	background: var(--error-soft);
	border-color: color-mix(in srgb, var(--error) 25%, transparent);
}
.woocommerce-cart .vc-cart__remove:hover svg,
.woocommerce-cart .vc-cart__remove:focus-visible svg {
	color: var(--error);
	transform: rotate(-8deg);
}

/* ============================ 5. ACCIONES (cupón + actualizar) ========== */
/* Fila td.actions.vc-cart__actions (colspan). El core llega alto acá:
   .woocommerce table.shop_table td (0,2,2) al padding de la celda y
   .woocommerce-cart table.cart td.actions .coupon .input-text (0,5,2) al
   input (80px + padding 6px + outline:0). Se incluyen las clases del core
   (.actions/.coupon/.input-text) para superarlo sin !important. */
.woocommerce-cart td.actions.vc-cart__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sp-3);
	padding: var(--sp-4) 0 0;
	border-bottom: 0;
}
.woocommerce-cart td.actions.vc-cart__actions .coupon.vc-cart__coupon {
	display: flex;
	flex: 1 1 100%;
	gap: var(--sp-2);
	float: none;
}
/* Receta de .vc-input repetida acá: a (0,7,2) el core ya no la pisa. El
   outline vuelve a cargo del anillo global (:focus-visible, reset.css) —
   el core lo mataba con outline:0. */
.woocommerce-cart td.actions.vc-cart__actions .coupon.vc-cart__coupon input.input-text.vc-cart__coupon-input {
	flex: 1 1 auto;
	width: auto;
	min-width: 0;
	float: none;
	margin: 0;
	padding: var(--sp-3) var(--sp-3);
	background: var(--surface);
	color: var(--ink);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-md);
	font: inherit;
	outline: revert;
}
.woocommerce-cart td.actions.vc-cart__actions .coupon.vc-cart__coupon input.input-text.vc-cart__coupon-input:focus-visible {
	outline: 2px solid var(--focus-ring);
	outline-offset: 2px;
	border-color: var(--brand);
}
.woocommerce-cart td.actions.vc-cart__actions .vc-cart__coupon .vc-btn {
	flex: none;
	white-space: nowrap;
}
.woocommerce-cart td.actions.vc-cart__actions .vc-cart__update {
	flex: 1 1 100%;
	float: none;
	white-space: nowrap;
}
@media (min-width: 640px) {
	.woocommerce-cart td.actions.vc-cart__actions .vc-cart__coupon { flex: 1 1 auto; max-width: 380px; }
	.woocommerce-cart td.actions.vc-cart__actions .vc-cart__update { flex: none; margin-left: auto; }
}
/* Con JS, el carrito se actualiza solo: el botón sobra (contrato §cabecera). */
/* Ocultar "Actualizar carrito" cuando el JS auto-actualiza (main.js:1698 marca
   body.vc-cart-ajax + re-postea al cambiar cantidad). La regla del botón en la
   celda de acciones es (0,0,4,1); esta debe igualar/superarla o el botón queda
   visible pese al AJAX (bug: antes era (0,0,2,1) y perdía). */
body.vc-cart-ajax td.actions.vc-cart__actions .vc-cart__update { display: none; }

/* Estado "recalculando" (contrato JS). */
.vc-cart.is-updating { pointer-events: none; }
.vc-cart.is-updating .vc-cart__totals,
.vc-cart.is-updating .vc-cart__table tbody { opacity: 0.55; }

/* ============================ 6. RECIBO (totales del carrito) =========== */
/* cart-totals.php: .cart_totals.vc-cart__totals.vc-panel > h2 +
   table.vc-cart__totals-table + .wc-proceed-to-checkout.vc-cart__proceed.
   La única superficie enmarcada de la página (.vc-panel da marco y fondo;
   acá solo el padding editorial y el sticky). */
/* El core flota el panel al 48% con .woocommerce .cart-collaterals
   .cart_totals (0,3,0): se empata con .cart_totals en el selector y gana el
   orden de carga del tema. Sticky recién en ≥1100 (cuando abre el split). */
.woocommerce-cart .cart_totals.vc-cart__totals {
	width: 100%;
	float: none;
	padding: clamp(var(--sp-5), 3vw, var(--sp-6));
}
@media (min-width: 1100px) {
	.woocommerce-cart .cart_totals.vc-cart__totals {
		position: sticky;
		top: calc(var(--header-h) + var(--wp-admin--admin-bar--height, 0px) + var(--sp-3));
	}
}

/* Tabla del recibo: mismo bump .shop_table que la tabla del carrito — el
   core pisa (0,2,1) tabla / (0,2,2) celdas / (0,2,3) tbody th|tfoot. */
.woocommerce-cart .vc-cart__totals-table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	margin: 0 0 var(--sp-5);
	background: transparent;
}
.woocommerce-cart .vc-cart__totals-table.shop_table th,
.woocommerce-cart .vc-cart__totals-table.shop_table td {
	padding: var(--sp-3) 0;
	border: 0;
	border-bottom: var(--border-w) solid var(--line);
	background: transparent;
	font-size: var(--fs-sm);
	vertical-align: top;
	line-height: var(--lh-snug);
}
.woocommerce-cart .vc-cart__totals-table.shop_table th {
	text-align: left;
	font-weight: 500;
	color: var(--ink-2);
	width: auto;
}
.woocommerce-cart .vc-cart__totals-table.shop_table td { text-align: right; color: var(--ink); }
/* Cupón aplicado: el "[Quitar]" como link discreto. */
.woocommerce-cart .vc-cart__totals-table.shop_table .cart-discount .woocommerce-remove-coupon {
	font-size: var(--fs-xs);
	color: var(--ink-3);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.woocommerce-cart .vc-cart__totals-table.shop_table .cart-discount .woocommerce-remove-coupon:hover { color: var(--error); }
/* Envío dentro de los totales (si el proyecto rehabilita el cálculo acá). */
.woocommerce-cart .vc-cart__totals-table.shop_table .shipping ul {
	list-style: none;
	margin: 0;
	padding: 0;
	text-align: right;
}
.woocommerce-cart .vc-cart__totals-table.shop_table .shipping ul li { margin: 0 0 var(--sp-2); }
.woocommerce-cart .vc-cart__totals-table.shop_table .shipping ul label { cursor: pointer; }
.woocommerce-cart .vc-cart__totals-table.shop_table .woocommerce-shipping-destination,
.woocommerce-cart .vc-cart__totals-table.shop_table .shipping-calculator-button {
	font-size: var(--fs-xs);
	color: var(--ink-3);
}

/* --- TOTAL como pieza: etiqueta en versalita fina, cifra grande con
       subrayado de acento; el $ alzado y en acento (v1 §9.5). --- */
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total th,
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total td {
	border-bottom: 0;
	padding-top: var(--sp-4);
	vertical-align: baseline;
}
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total th {
	font-family: var(--font-sans);
	font-size: var(--fs-sm);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ink);
}
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total td,
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total td .amount {
	font-family: var(--font-sans);
	font-variant-numeric: lining-nums tabular-nums;
	font-feature-settings: "lnum" 1, "tnum" 1;
	font-size: 1.65rem;
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -0.01em;
	color: var(--ink);
}
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total td .amount {
	display: inline-block;
	padding-bottom: 0.14em;
	box-shadow: inset 0 -2px 0 0 var(--accent);
}
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total .woocommerce-Price-currencySymbol {
	font-size: 0.6em;
	font-weight: 600;
	color: var(--accent-strong);
	vertical-align: 0.4em;
	margin-right: 0.1em;
}
/* La nota "(incluye $X de impuestos)" vuelve a tamaño de cuerpo. */
.woocommerce-cart .vc-cart__totals-table.shop_table .order-total td small {
	display: block;
	font-size: var(--fs-xs);
	font-weight: 400;
	letter-spacing: 0;
	color: var(--ink-3);
	box-shadow: none;
}

/* --- CTA "Finalizar compra". woocommerce_button_proceed_to_checkout imprime
       a.checkout-button.button.alt (sin clases vc-): se estila acá con el
       contrato de CTA. Vence a .woocommerce .wc-proceed-to-checkout
       a.checkout-button (0,3,1: font-size 1.25em, display block del core)
       por empate de especificidad + orden de carga del tema. --- */
.woocommerce-cart .vc-cart__proceed { padding: 0; margin: 0; }
.woocommerce-cart .vc-cart__proceed a.checkout-button {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	gap: var(--sp-2);
	min-height: 52px;
	margin: 0;
	padding: var(--sp-3) var(--sp-5);
	font-family: var(--font-sans);
	font-size: var(--fs-body);
	font-weight: 500;
	line-height: 1;
	text-align: center;
	text-decoration: none;
	text-shadow: none;
	box-shadow: none;
	background: var(--cta-bg);
	color: var(--cta-ink);
	border: var(--border-w) solid transparent;
	border-radius: var(--radius-md);
}
.woocommerce-cart .vc-cart__proceed a.checkout-button:hover {
	background: var(--cta-bg-hover);
	color: var(--cta-ink);
}
.woocommerce-cart .vc-cart__proceed a.checkout-button:focus-visible {
	outline: 2px solid var(--focus-ring);
	outline-offset: 2px;
}

/* --- Barra de envío gratis dentro del recibo (la base .vc-shipbar vive en
       core/components.css — se encola siempre por el mini-cart; acá solo el
       respiro dentro del panel). --- */
.vc-cart__totals .vc-shipbar {
	margin-bottom: var(--sp-4);
	padding-bottom: var(--sp-4);
	border-bottom: var(--border-w) solid var(--line);
}

/* --- Tira de confianza (inc/woocommerce.php: ul.vc-assurances en
       woocommerce_proceed_to_checkout @25 y review_order_after_submit @25). */
.vc-assurances {
	list-style: none;
	margin: var(--sp-4) 0 0;
	padding: var(--sp-4) 0 0;
	border-top: var(--border-w) solid var(--line);
	display: grid;
	gap: var(--sp-2);
}
.vc-assurances li {
	display: flex;
	align-items: center;
	gap: var(--sp-2);
	font-size: var(--fs-sm);
	color: var(--ink-2);
	line-height: var(--lh-snug);
}
.vc-assurances li svg {
	width: 19px;
	height: 19px;
	flex: none;
	color: var(--brand);
}

/* ============================ 7. CROSS-SELLS ============================ */
/* cart/cross-sells.php reusa el loop del core (ul.products + .vc-card). Como
   core/shop.css NO carga en el carrito, esta hoja repone la grilla y la
   anulación del clearfix del core (gotcha conocido: los ::before/::after de
   ul.products se vuelven ítems fantasma del grid). La tarjeta .vc-card
   completa es estética de la tienda; en el carrito alcanza la mecánica de
   grilla + imagen (la piel decide si el bloque se muestra: sin cross-sells
   configurados WooCommerce no lo imprime). */
.vc-cart__crosssells-title {
	font-size: var(--fs-h3);
	margin: 0 0 var(--sp-4);
}
.woocommerce-cart .vc-cart__crosssells ul.products::before,
.woocommerce-cart .vc-cart__crosssells ul.products::after { content: none; }
.woocommerce-cart .vc-cart__crosssells ul.products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--sp-3);
	margin: 0;
	padding: 0;
	list-style: none;
}
.woocommerce-cart .vc-cart__crosssells ul.products li.product {
	width: auto;
	margin: 0;
	padding: 0;
	float: none;
	clear: none;
	list-style: none;
	display: flex;
}
@media (min-width: 640px) {
	.woocommerce-cart .vc-cart__crosssells ul.products {
		grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	}
}
/* En la columna del recibo (≥1100px, cuando abre el split) se apilan de a uno. */
@media (min-width: 1100px) {
	.woocommerce-cart .vc-cart__collaterals .vc-cart__crosssells ul.products {
		grid-template-columns: 1fr;
	}
}
/* Mecánica mínima de la tarjeta en este contexto. */
.woocommerce-cart .vc-cart__crosssells .vc-card {
	display: flex;
	flex-direction: column;
	width: 100%;
	min-width: 0;
	background: var(--surface-raised);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-card);
	overflow: hidden;
}
.woocommerce-cart .vc-cart__crosssells .vc-card__media { position: relative; background: var(--surface-2); }
.woocommerce-cart .vc-cart__crosssells .vc-card__media-link {
	display: block;
	width: 100%;
	aspect-ratio: var(--vc-card-aspect, 1 / 1);
}
.woocommerce-cart .vc-cart__crosssells .vc-card__media-link img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.woocommerce-cart .vc-cart__crosssells .vc-card__badges {
	position: absolute;
	top: var(--sp-2);
	left: var(--sp-2);
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--sp-1);
	pointer-events: none;
}
.woocommerce-cart .vc-cart__crosssells .vc-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: var(--sp-1);
	padding: var(--sp-3);
}
.woocommerce-cart .vc-cart__crosssells .vc-card__cat {
	font-size: var(--fs-xs);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ink-3);
}
.woocommerce-cart .vc-cart__crosssells .vc-card__title { margin: 0; font-size: var(--fs-body); }
.woocommerce-cart .vc-cart__crosssells .vc-card__title a { color: var(--ink); text-decoration: none; }
.woocommerce-cart .vc-cart__crosssells .vc-card__title a:hover { color: var(--brand-strong); }
.woocommerce-cart .vc-cart__crosssells .vc-card__price { font-weight: 600; }
.woocommerce-cart .vc-cart__crosssells .vc-card__foot { margin-top: auto; padding-top: var(--sp-2); }
/* La vidriera del carrito no necesita corazón ni vista rápida. */
.woocommerce-cart .vc-cart__crosssells .vc-wish,
.woocommerce-cart .vc-cart__crosssells .vc-qv-btn { display: none; }

/* ============================ 8. CARRITO VACÍO ========================== */
/* cart-empty.php: .vc-cart--empty > .vc-cart-empty.wc-empty-cart-message. */
.vc-cart-empty {
	max-width: 46ch;
	margin-inline: auto;
	padding-block: clamp(var(--sp-6), 7vw, var(--sp-8));
	text-align: center;
}
.vc-cart-empty__ico {
	display: grid;
	place-items: center;
	width: 76px;
	height: 76px;
	margin: 0 auto var(--sp-4);
	border-radius: var(--radius-pill);
	background: var(--brand-soft);
	color: var(--brand-strong);
}
.vc-cart-empty__ico svg { width: 34px; height: 34px; }
/* El título reusa la clase woocommerce-info del core: se le quita el look de
   notice (fondo/borde/ícono) con especificidad acotada. */
.woocommerce-cart .vc-cart-empty__title,
.woocommerce-cart p.cart-empty.vc-cart-empty__title {
	margin: 0 0 var(--sp-2);
	padding: 0;
	border: 0;
	background: transparent;
	font-family: var(--font-display);
	font-size: var(--fs-h2);
	font-weight: 600;
	line-height: var(--lh-tight);
	color: var(--ink);
}
.woocommerce-cart .vc-cart-empty__title::before { display: none; }
.vc-cart-empty__lead { margin: 0 auto var(--sp-5); color: var(--ink-2); }
.vc-cart-empty__action { margin: 0; }

/* ============================ 9. CHECKOUT — LAYOUT ====================== */
/* form-checkout.php: .vc-checkout > form > .vc-checkout__cols >
   .vc-checkout__main (campos) + aside.vc-checkout__aside >
   .vc-checkout__review.vc-panel (heading + #order_review + payment). */
.vc-checkout__cols {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(var(--sp-5), 4vw, var(--sp-7));
	align-items: start;
}
@media (min-width: 880px) {
	.vc-checkout__cols { grid-template-columns: minmax(0, 1fr) 400px; }
	.vc-checkout__review {
		position: sticky;
		top: calc(var(--header-h) + var(--wp-admin--admin-bar--height, 0px) + var(--sp-3));
	}
}

.vc-checkout__details {
	display: grid;
	gap: clamp(var(--sp-5), 4vw, var(--sp-6));
	width: auto;
	float: none;
}
/* Guard del clearfix del core: el wrapper lleva .col2-set — si un plugin
   re-inyecta woocommerce-layout, sus ::before/::after serían ítems fantasma
   del grid (gotcha conocido; contrato Task 12: anulado en TODOS los grids). */
.vc-checkout__details::before,
.vc-checkout__details::after { content: none; }
/* El core flota .col2-set .col-1/.col-2 al 48% (0,2,0): mismo peso, gana el
   orden de carga del tema; el grid del wrapper hace el resto. */
.woocommerce-checkout .vc-checkout__details .vc-checkout__col {
	float: none;
	width: auto;
	min-width: 0;
}

.vc-checkout h3,
.vc-checkout .woocommerce-billing-fields > h3,
.vc-checkout .woocommerce-shipping-fields h3,
.vc-checkout .woocommerce-additional-fields h3 {
	font-size: var(--fs-h3);
	margin: 0 0 var(--sp-4);
}

/* ============================ 10. CHECKOUT — CAMPOS ===================== */
/* WooCommerce imprime p.form-row (label + span.woocommerce-input-wrapper >
   input.input-text / select / textarea) SIN clases vc-: se estila el
   contrato del core con la misma receta de .vc-input (tokens idénticos).
   Grilla de 2 columnas ≥640px vía el field-wrapper (woocommerce-layout.css
   está des-encolado: no hay floats que pelear, solo el width 48% residual
   de form-row-first/last en woocommerce-general si existiera). */
/* Con body class: .woocommerce form .form-row (0,2,1: padding 3px + margin
   6px + widths 47% de form-row-first/last) y ... .required (0,3,1) del core
   le ganaban al scope .vc-checkout solo (0,2,0). */
.woocommerce-checkout .vc-checkout .form-row {
	display: flex;
	flex-direction: column;
	gap: var(--sp-1);
	margin: 0;
	padding: 0;
	width: auto;
	float: none;
}
.woocommerce-checkout .vc-checkout .form-row label {
	font-size: var(--fs-sm);
	font-weight: 500;
	color: var(--ink-2);
	line-height: var(--lh-snug);
}
.woocommerce-checkout .vc-checkout .form-row .required {
	color: var(--accent-strong);
	border: 0;
	text-decoration: none;
}
.woocommerce-checkout .vc-checkout .form-row .optional { color: var(--ink-3); font-weight: 400; }
.vc-checkout .woocommerce-input-wrapper { display: block; width: 100%; }

.vc-checkout .woocommerce-billing-fields__field-wrapper,
.vc-checkout .woocommerce-shipping-fields__field-wrapper,
.vc-checkout .woocommerce-additional-fields__field-wrapper,
.vc-checkout .woocommerce-account-fields {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--sp-4);
}
@media (min-width: 640px) {
	.vc-checkout .woocommerce-billing-fields__field-wrapper,
	.vc-checkout .woocommerce-shipping-fields__field-wrapper {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.vc-checkout .woocommerce-billing-fields__field-wrapper .form-row-wide,
	.vc-checkout .woocommerce-shipping-fields__field-wrapper .form-row-wide,
	.vc-checkout .woocommerce-billing-fields__field-wrapper .notes,
	.vc-checkout .woocommerce-shipping-fields__field-wrapper .notes {
		grid-column: 1 / -1;
	}
}

/* Inputs: receta de .vc-input (core/components.css) sobre las clases del
   core. El anillo de foco global queda intacto; el borde activo solo suma
   (fix theme.css:316). */
.vc-checkout .input-text,
.vc-checkout textarea,
.vc-checkout select {
	width: 100%;
	padding: var(--sp-3) var(--sp-3);
	background: var(--surface);
	color: var(--ink);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-md);
	font: inherit;
	line-height: var(--lh-snug);
}
.vc-checkout textarea { min-height: 6rem; resize: vertical; }
.vc-checkout .input-text:focus-visible,
.vc-checkout textarea:focus-visible,
.vc-checkout select:focus-visible { border-color: var(--brand); }
.vc-checkout .input-text::placeholder,
.vc-checkout textarea::placeholder { color: var(--ink-3); }

/* Select2 (país/provincia): alineado a la altura del resto. */
.vc-checkout .select2-container .select2-selection {
	min-height: 44px;
	height: auto;
	display: flex;
	align-items: center;
	background: var(--surface);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-md);
}
.vc-checkout .select2-container .select2-selection--single .select2-selection__rendered {
	line-height: var(--lh-snug);
	padding-left: var(--sp-3);
	color: var(--ink);
}
.vc-checkout .select2-container .select2-selection--single .select2-selection__arrow {
	height: 100%;
	right: var(--sp-2);
}
.vc-checkout .select2-container--focus .select2-selection,
.vc-checkout .select2-container--open .select2-selection {
	border-color: var(--brand);
}

/* Helper / descripción bajo el input. */
.vc-checkout .form-row .description {
	font-size: var(--fs-xs);
	color: var(--ink-3);
	margin: 0;
}

/* Validación de WooCommerce. */
.vc-checkout .form-row.woocommerce-invalid .input-text,
.vc-checkout .form-row.woocommerce-invalid select,
.vc-checkout .form-row.woocommerce-invalid .select2-container .select2-selection {
	border-color: var(--error);
}
.vc-checkout .form-row.woocommerce-invalid label { color: var(--error); }
.vc-checkout .form-row.woocommerce-validated .input-text,
.vc-checkout .form-row.woocommerce-validated select {
	border-color: color-mix(in srgb, var(--ok) 60%, var(--line));
}

/* Checkboxes (crear cuenta / enviar a otra dirección / términos). */
.vc-checkout input[type="checkbox"],
.vc-checkout input[type="radio"] {
	width: 18px;
	height: 18px;
	accent-color: var(--brand);
	margin: 0;
	flex: none;
}
.vc-checkout label.checkbox,
.vc-checkout label.woocommerce-form__label-for-checkbox {
	display: inline-flex;
	flex-direction: row;
	align-items: flex-start;
	gap: var(--sp-2);
	cursor: pointer;
}
.vc-checkout #ship-to-different-address {
	margin: var(--sp-5) 0 var(--sp-4);
	font-size: var(--fs-h3);
}
.vc-checkout #ship-to-different-address label {
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	gap: var(--sp-2);
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: 600;
	color: var(--ink);
	cursor: pointer;
}

/* ============================ 11. CHECKOUT — CUPÓN ====================== */
/* form-coupon.php: toggle (notice) + form plegable. */
.vc-checkout__coupon-toggle { margin-bottom: var(--sp-4); }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info {
	margin: 0;
	background: transparent;
	border: var(--border-w) dashed var(--line);
	color: var(--ink-2);
}
.vc-checkout__coupon-link { font-weight: 500; }

.vc-checkout__coupon-form {
	display: block;
	margin: 0 0 var(--sp-5);
	padding: var(--sp-5);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-lg);
	background: var(--surface-2);
}
.vc-checkout__coupon-text {
	margin: 0 0 var(--sp-3);
	font-size: var(--fs-sm);
	color: var(--ink-2);
}
.vc-checkout__coupon-row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--sp-3);
}
.vc-checkout__coupon-row .form-row { flex: 1 1 200px; margin: 0; }
.vc-checkout__coupon-submit { flex: none; }
.vc-checkout__coupon-row .clear { display: none; }

/* ============================ 12. CHECKOUT — TU PEDIDO ================== */
/* review-order.php: table.shop_table.vc-checkout__items (miniatura + nombre
   + cantidad en la celda product-name; tfoot con subtotal/envío/total). El
   panel .vc-checkout__review es .vc-panel (marco de components.css). Los
   selectores suman .shop_table: el core llega a (0,2,2) en celdas y (0,2,3)
   en tfoot th/td — con (0,3,x) el recibo no se pisa. */
.vc-checkout__review { padding: clamp(var(--sp-5), 3vw, var(--sp-6)); }
.vc-checkout__review-title {
	font-size: var(--fs-h3);
	margin: 0 0 var(--sp-4);
}

.woocommerce-checkout .vc-checkout__items.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	margin: 0 0 var(--sp-4);
	background: transparent;
}
.woocommerce-checkout .vc-checkout__items.shop_table th,
.woocommerce-checkout .vc-checkout__items.shop_table td {
	border: 0;
	border-bottom: var(--border-w) solid var(--line);
	background: transparent;
	padding: var(--sp-3) 0;
	font-size: var(--fs-sm);
	vertical-align: top;
	line-height: var(--lh-snug);
}
.woocommerce-checkout .vc-checkout__items.shop_table thead th {
	padding-top: 0;
	text-align: left;
	font-family: var(--font-sans);
	font-size: var(--fs-xs);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ink-3);
}
.woocommerce-checkout .vc-checkout__items.shop_table th.product-total,
.woocommerce-checkout .vc-checkout__items.shop_table td.product-total { text-align: right; }

/* Ítem con miniatura (recibo premium — v1 §7). */
.woocommerce-checkout .vc-checkout__items.shop_table td.product-name {
	display: flex;
	align-items: flex-start;
	gap: var(--sp-3);
	text-align: left;
}
.vc-checkout__item-media { flex: none; }
.vc-checkout__item-media img {
	display: block;
	width: 46px;
	height: 56px;
	object-fit: cover;
	border-radius: var(--radius-sm);
	border: var(--border-w) solid var(--line);
	background: var(--surface-2);
}
.vc-checkout__item-info {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	min-width: 0;
}
.vc-checkout__item-name {
	font-family: var(--font-display);
	font-weight: 600;
	color: var(--ink);
	line-height: var(--lh-snug);
}
.vc-checkout__item-qty {
	display: inline-block;
	font-size: var(--fs-xs);
	font-weight: 500;
	color: var(--ink-3);
	font-variant-numeric: lining-nums tabular-nums;
}
.woocommerce-checkout .vc-checkout__items.shop_table td.product-name dl.variation {
	margin: 0;
	font-size: var(--fs-xs);
	color: var(--ink-3);
}
.woocommerce-checkout .vc-checkout__items.shop_table td.product-name dl.variation dt,
.woocommerce-checkout .vc-checkout__items.shop_table td.product-name dl.variation dd {
	float: none;
	display: inline;
	margin: 0;
	padding: 0;
}
.woocommerce-checkout .vc-checkout__items.shop_table td.product-name dl.variation dd p { margin: 0; display: inline; }

/* Totales (tfoot). */
.woocommerce-checkout .vc-checkout__items.shop_table tfoot th {
	text-align: left;
	font-weight: 500;
	color: var(--ink-2);
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot td { text-align: right; color: var(--ink); }
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .shipping ul {
	list-style: none;
	margin: 0;
	padding: 0;
	text-align: right;
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .shipping ul li { margin: 0 0 var(--sp-2); }
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .shipping label { cursor: pointer; }
.woocommerce-checkout .vc-checkout__items.shop_table .woocommerce-shipping-destination {
	font-size: var(--fs-xs);
	color: var(--ink-3);
}

/* TOTAL del checkout: misma pieza tipográfica que el carrito (v1 §9.6). */
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total th,
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total td {
	border-bottom: 0;
	padding-top: var(--sp-4);
	vertical-align: baseline;
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total th {
	font-family: var(--font-sans);
	font-size: var(--fs-sm);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ink);
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total td,
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total td .amount {
	font-family: var(--font-sans);
	font-variant-numeric: lining-nums tabular-nums;
	font-feature-settings: "lnum" 1, "tnum" 1;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -0.01em;
	color: var(--ink);
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total td .amount {
	display: inline-block;
	padding-bottom: 0.14em;
	box-shadow: inset 0 -2px 0 0 var(--accent);
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total .woocommerce-Price-currencySymbol {
	font-size: 0.6em;
	font-weight: 600;
	color: var(--accent-strong);
	vertical-align: 0.4em;
	margin-right: 0.1em;
}
.woocommerce-checkout .vc-checkout__items.shop_table tfoot .order-total td small {
	display: block;
	font-size: var(--fs-xs);
	font-weight: 400;
	letter-spacing: 0;
	color: var(--ink-3);
	box-shadow: none;
}

/* ============================ 13. CHECKOUT — PAGO ======================= */
/* payment.php / payment-method.php: #payment.vc-checkout__payment >
   ul.vc-checkout__methods > li.vc-checkout__method (radio + label + icon +
   .payment_box.vc-checkout__method-box) + .place-order. El core pinta
   #payment con fondo gris propio y un triángulo en div.payment_box: se
   neutraliza con especificidad (el id + clases del tema vencen sin
   !important). */
.woocommerce-checkout #payment.vc-checkout__payment {
	background: transparent;
	border-radius: 0;
	margin-top: var(--sp-4);
}
.woocommerce-checkout #payment.vc-checkout__payment ul.vc-checkout__methods {
	list-style: none;
	margin: 0 0 var(--sp-4);
	padding: 0;
	border: var(--border-w) solid var(--line);
	border-bottom: var(--border-w) solid var(--line);
	border-radius: var(--radius-lg);
	overflow: hidden;
	background: var(--surface);
}
.woocommerce-checkout #payment.vc-checkout__payment li.vc-checkout__method {
	margin: 0;
	padding: var(--sp-4);
	border-bottom: var(--border-w) solid var(--line);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sp-2) var(--sp-2);
	line-height: var(--lh-snug);
	text-align: left;
}
.woocommerce-checkout #payment.vc-checkout__payment li.vc-checkout__method:last-child {
	border-bottom: 0;
}
.vc-checkout__method-radio { margin: 0; }
.vc-checkout__method-label {
	display: flex;
	align-items: center;
	gap: var(--sp-2);
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	font-weight: 500;
	color: var(--ink);
	cursor: pointer;
}
.vc-checkout__method-icon {
	margin-left: auto;
	display: inline-flex;
	align-items: center;
	gap: var(--sp-1);
	flex: none;
}
.vc-checkout__method-icon img,
.vc-checkout__method-icon svg {
	max-height: 24px;
	width: auto;
	display: inline-block;
}
/* Los íconos de vc_icon() (p. ej. building-bank de la transferencia) traen
   viewBox pero sin width/height propios: con solo max-height (sin height) el
   navegador los colapsaba a 0×0 y no se veían. Un height explícito los fija
   (24px, ancho según su viewBox). La <img> de un gateway externo mantiene el
   max-height flexible por si su logo no es cuadrado. */
.vc-checkout__method-icon svg { height: 24px; }
.woocommerce-checkout #payment.vc-checkout__payment div.payment_box.vc-checkout__method-box {
	position: static;
	flex-basis: 100%;
	width: auto;
	margin: var(--sp-2) 0 0;
	padding: var(--sp-3) var(--sp-4);
	background: var(--info-soft);
	color: var(--ink);
	border: var(--border-w) solid color-mix(in srgb, var(--info) 30%, var(--line));
	border-radius: var(--radius-md);
	font-size: var(--fs-sm);
}
.woocommerce-checkout #payment.vc-checkout__payment div.payment_box.vc-checkout__method-box::before {
	content: none;
	display: none;
}
.vc-checkout__method-box p { margin: 0; max-width: none; }
.vc-checkout__method-box p + p { margin-top: var(--sp-2); }
.vc-checkout__no-payment {
	padding: var(--sp-4);
	font-size: var(--fs-sm);
	color: var(--ink-2);
}

/* Realizar pedido (button#place_order ya lleva vc-btn--primary --block --lg;
   solo se limpia el contenedor que el core rellena). */
.woocommerce-checkout #payment.vc-checkout__payment div.form-row.place-order {
	display: block;
	background: transparent;
	margin: 0;
	padding: 0;
	float: none;
	width: 100%;
}
.woocommerce-checkout #payment.vc-checkout__payment .place-order noscript {
	display: block;
	margin-bottom: var(--sp-3);
	font-size: var(--fs-sm);
	color: var(--ink-2);
}

/* Términos y condiciones. */
.vc-checkout .woocommerce-terms-and-conditions-wrapper {
	margin-bottom: var(--sp-4);
	font-size: var(--fs-sm);
	color: var(--ink-2);
}
.vc-checkout .woocommerce-terms-and-conditions {
	margin-top: var(--sp-3);
	padding: var(--sp-4);
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-md);
	background: var(--surface-2);
	max-height: 180px;
	overflow-y: auto;
}

/* ============================ 14. GRACIAS (thankyou) ==================== */
/* thankyou.php + order-received.php: .woocommerce-order.vc-thankyou >
   .vc-thankyou__head (__check + __title) + ul.vc-thankyou__overview +
   [.vc-thankyou__pay de inc/woocommerce.php para BACS] + detalle del pedido
   (templates del CORE: section.woocommerce-order-details con
   table.woocommerce-table--order-details + woocommerce-customer-details) +
   p.vc-thankyou__cta. */
.vc-thankyou {
	max-width: var(--container-narrow);
	margin-inline: auto;
}

/* --- Encabezado: check + título. El pop del check se anima en §16. --- */
.vc-thankyou__head {
	text-align: center;
	margin-bottom: clamp(var(--sp-5), 4vw, var(--sp-6));
}
.vc-thankyou__check {
	display: grid;
	place-items: center;
	width: 76px;
	height: 76px;
	margin: 0 auto var(--sp-4);
	border-radius: var(--radius-pill);
	background: var(--ok-soft);
	color: var(--ok);
	box-shadow: 0 0 0 8px color-mix(in srgb, var(--ok-soft) 55%, transparent);
}
.vc-thankyou__check svg { width: 38px; height: 38px; }
.woocommerce-checkout .vc-thankyou__title {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	font-family: var(--font-display);
	font-size: var(--fs-h2);
	font-weight: 600;
	line-height: var(--lh-tight);
	color: var(--ink);
	text-wrap: balance;
}
.woocommerce-checkout .vc-thankyou__title::before { display: none; }
.vc-thankyou__head--failed .woocommerce-thankyou-order-failed {
	color: var(--error);
	font-size: var(--fs-body);
	margin: 0 0 var(--sp-3);
}
.vc-thankyou__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-3);
	justify-content: center;
	margin: var(--sp-4) 0 0;
}

/* --- Resumen rápido (overview): tira centrada con los datos clave. El
       clearfix del core sobre ul.order_details metía una "celda fantasma"
       en la tira flex: se anula (gotcha conocido). --- */
.woocommerce-checkout .vc-thankyou__overview::before,
.woocommerce-checkout .vc-thankyou__overview::after { content: none; }
.woocommerce-checkout ul.order_details.vc-thankyou__overview {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--sp-4) clamp(var(--sp-5), 4vw, var(--sp-7));
	margin: 0 0 clamp(var(--sp-5), 4vw, var(--sp-6));
	padding: clamp(var(--sp-4), 3vw, var(--sp-5));
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-lg);
	background: var(--surface-raised);
	text-align: center;
}
.woocommerce-checkout .vc-thankyou__overview li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--sp-1);
	margin: 0;
	padding: 0;
	border: 0;
	float: none;
	min-width: 0; /* el email largo se parte, no desborda */
	font-size: var(--fs-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ink-3);
}
.woocommerce-checkout .vc-thankyou__overview li strong {
	min-width: 0;
	display: block;
	font-family: var(--font-sans);
	font-size: var(--fs-body);
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	color: var(--ink);
	overflow-wrap: anywhere;
}
.woocommerce-checkout .vc-thankyou__overview .total strong {
	font-variant-numeric: lining-nums tabular-nums;
}
/* El $ del Total del overview: alzado y en acento (firma del recibo). */
.vc-thankyou__overview .total .woocommerce-Price-currencySymbol {
	color: var(--accent-strong);
	font-size: 0.62em;
	font-weight: 700;
	vertical-align: 0.36em;
	margin-right: 0.06em;
}

/* --- Panel BACS "qué sigue" (inc/woocommerce.php envuelve la salida real
       del gateway en .vc-thankyou__pay). --- */
.vc-thankyou__pay {
	margin: 0 0 clamp(var(--sp-5), 4vw, var(--sp-6));
	padding: clamp(var(--sp-5), 3vw, var(--sp-6)) clamp(var(--sp-4), 3vw, var(--sp-5));
	border: var(--border-w) solid color-mix(in srgb, var(--accent) 30%, var(--line));
	border-radius: var(--radius-lg);
	background: var(--accent-soft);
}
.vc-thankyou__pay-head {
	display: flex;
	align-items: center;
	gap: var(--sp-2);
	margin-bottom: var(--sp-3);
	font-family: var(--font-sans);
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--accent-strong);
}
.vc-thankyou__pay-head svg { width: 18px; height: 18px; flex: none; }
.vc-thankyou__pay p {
	margin: 0 0 var(--sp-2);
	color: var(--ink);
	line-height: var(--lh-body);
}
.vc-thankyou__pay p:last-child { margin-bottom: 0; }
.vc-thankyou__pay strong { color: var(--ink); font-weight: 600; }
.vc-thankyou__pay h2,
.vc-thankyou__pay .wc-bacs-bank-details-heading {
	font-size: var(--fs-h3);
	margin: var(--sp-3) 0 var(--sp-2);
}
.vc-thankyou__pay ul.wc-bacs-bank-details {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--sp-1);
	font-size: var(--fs-sm);
	color: var(--ink);
}

/* --- Detalle del pedido: recibo editorial (mata la grilla/zebra del core
       en table.shop_table con especificidad (0,3,x): body class + .vc-thankyou
       + selectores del core). Cubre también order-downloads. --- */
.vc-thankyou .woocommerce-order-details,
.vc-thankyou .woocommerce-customer-details {
	margin-top: clamp(var(--sp-5), 4vw, var(--sp-6));
}
.vc-thankyou .woocommerce-order-details__title,
.vc-thankyou .woocommerce-column__title {
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: 600;
	color: var(--ink);
	margin: 0 0 var(--sp-4);
}
.woocommerce-checkout .vc-thankyou table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-lg);
	overflow: hidden;
	background: transparent;
	margin: 0;
	font-size: var(--fs-sm);
}
.woocommerce-checkout .vc-thankyou table.shop_table th,
.woocommerce-checkout .vc-thankyou table.shop_table td {
	background: transparent;
	border: 0;
	border-bottom: var(--border-w) solid var(--line);
	padding: var(--sp-3) var(--sp-4);
	text-align: left;
	vertical-align: top;
	line-height: var(--lh-snug);
}
.woocommerce-checkout .vc-thankyou table.shop_table thead th {
	font-family: var(--font-sans);
	font-size: var(--fs-xs);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--ink-3);
}
.woocommerce-checkout .vc-thankyou table.shop_table thead th:last-child,
.woocommerce-checkout .vc-thankyou table.shop_table td.product-total,
.woocommerce-checkout .vc-thankyou table.shop_table tfoot td { text-align: right; }
.woocommerce-checkout .vc-thankyou table.shop_table tfoot th {
	font-weight: 500;
	color: var(--ink-2);
}
.woocommerce-checkout .vc-thankyou table.shop_table tfoot tr:last-child th,
.woocommerce-checkout .vc-thankyou table.shop_table tfoot tr:last-child td { border-bottom: 0; }
.woocommerce-checkout .vc-thankyou table.shop_table .product-name a {
	color: var(--ink);
	font-weight: 600;
	text-decoration: none;
}
.woocommerce-checkout .vc-thankyou table.shop_table .product-name a:hover { color: var(--brand-strong); }
.woocommerce-checkout .vc-thankyou table.shop_table .product-quantity { color: var(--ink-3); }
.woocommerce-checkout .vc-thankyou table.shop_table .wc-item-meta {
	list-style: none;
	margin: var(--sp-1) 0 0;
	padding: 0;
	font-size: var(--fs-xs);
	color: var(--ink-3);
}
.woocommerce-checkout .vc-thankyou table.shop_table .wc-item-meta p { display: inline; margin: 0; }

/* Total del recibo como pieza. WooCommerce no marca la fila del Total con
   clase propia: se aísla como "la última fila del tfoot con un importe"
   vía :has() (la de Método de pago no tiene importe) — mecánica heredada
   del recibo v1. */
.woocommerce-checkout .vc-thankyou table.woocommerce-table--order-details tfoot tr:has(.woocommerce-Price-amount):not(:has(~ tr .woocommerce-Price-amount)) th {
	font-family: var(--font-sans);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--ink);
}
.woocommerce-checkout .vc-thankyou table.woocommerce-table--order-details tfoot tr:has(.woocommerce-Price-amount):not(:has(~ tr .woocommerce-Price-amount)) td {
	font-size: 1.3rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--ink);
}
.woocommerce-checkout .vc-thankyou table.woocommerce-table--order-details tfoot tr:has(.woocommerce-Price-amount):not(:has(~ tr .woocommerce-Price-amount)) .woocommerce-Price-currencySymbol {
	color: var(--accent-strong);
	font-size: 0.62em;
	font-weight: 700;
	vertical-align: 0.36em;
	margin-right: 0.06em;
}
/* Método de envío entre paréntesis, discreto. */
.woocommerce-checkout .vc-thankyou table.shop_table .shipped_via {
	font-size: var(--fs-xs);
	color: var(--ink-3);
}

/* --- Direcciones del cliente (core: .woocommerce-columns--addresses).
       Clearfix del core anulado (celda fantasma en el grid). --- */
.vc-thankyou .woocommerce-customer-details .woocommerce-columns--addresses::before,
.vc-thankyou .woocommerce-customer-details .woocommerce-columns--addresses::after,
.vc-thankyou .woocommerce-customer-details .addresses::before,
.vc-thankyou .woocommerce-customer-details .addresses::after { content: none; }
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-columns--addresses,
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .addresses {
	display: grid;
	gap: var(--sp-4);
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	margin: 0;
}
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-column {
	float: none;
	width: auto;
}
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details address {
	font-style: normal;
	padding: clamp(var(--sp-4), 2.5vw, var(--sp-5));
	border: var(--border-w) solid var(--line);
	border-radius: var(--radius-md);
	background: var(--surface-raised);
	font-size: var(--fs-sm);
	color: var(--ink-2);
	line-height: var(--lh-body);
}
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-customer-details--phone,
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-customer-details--email {
	margin: var(--sp-2) 0 0;
	padding: 0;
}
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-customer-details--phone::before,
.woocommerce-checkout .vc-thankyou .woocommerce-customer-details .woocommerce-customer-details--email::before {
	display: none;
}

/* CTA final. */
.vc-thankyou__cta {
	text-align: center;
	margin: clamp(var(--sp-5), 4vw, var(--sp-6)) 0 0;
}

/* Densidad mobile del recibo. */
@media (max-width: 639.98px) {
	.woocommerce-checkout .vc-thankyou table.shop_table th,
	.woocommerce-checkout .vc-thankyou table.shop_table td {
		padding: var(--sp-3) var(--sp-2);
	}
	.woocommerce-checkout .vc-thankyou table.shop_table .shipped_via {
		display: block;
		margin-top: 0.15rem;
	}
}

/* ============================ 15. IMPRESIÓN (gracias) =================== */
/* El comprobante de la compra se imprime limpio: sin chrome del sitio
   (header/topbar/footer/FAB/drawers/toasts) ni acciones de navegación. */
@media print {
	.vc-topbar,
	.vc-header,
	.vc-footer,
	.vc-whatsapp-fab,
	.vc-drawer,
	.vc-toasts,
	.vc-breadcrumbs,
	.vc-thankyou__cta,
	.vc-thankyou__actions {
		display: none;
	}
	.vc-thankyou { max-width: none; }
	.vc-thankyou__check { box-shadow: none; }
	/* Hairlines visibles en papel; nada de fondos que gasten tinta. */
	.woocommerce-checkout .vc-thankyou table.shop_table,
	.vc-thankyou__pay,
	.woocommerce-checkout ul.order_details.vc-thankyou__overview {
		background: transparent;
		box-shadow: none;
	}
}

/* ============================ 16. MOTION ================================ */
/* Todas las transiciones/animaciones de esta hoja viven acá: con
   prefers-reduced-motion: reduce, nada se mueve. */
@media (prefers-reduced-motion: no-preference) {
	.woocommerce-cart .vc-cart__remove,
	.woocommerce-cart .vc-cart__remove svg {
		transition:
			background var(--tr) var(--ease-out),
			border-color var(--tr) var(--ease-out),
			color var(--tr) var(--ease-out),
			transform var(--tr) var(--ease-out);
	}
	.vc-cart__name { transition: color var(--tr) var(--ease-out); }
	.vc-cart.is-updating .vc-cart__totals,
	.vc-cart.is-updating .vc-cart__table tbody {
		transition: opacity var(--tr) var(--ease-out);
	}
	.woocommerce-cart .vc-cart__proceed a.checkout-button {
		transition: background var(--tr) var(--ease-out);
	}
	.vc-checkout .input-text,
	.vc-checkout textarea,
	.vc-checkout select,
	.vc-checkout .select2-container .select2-selection {
		transition: border-color var(--tr) var(--ease-out);
	}
	/* Festejo discreto: el check aparece UNA vez (frecuencia: 1 por compra).
	   Desaceleración suave (--ease-out), sin rebote. */
	.vc-thankyou__check { animation: vc-thanks-pop 520ms var(--ease-out) both; }
	.vc-thankyou__check svg { animation: vc-thanks-pop 560ms var(--ease-out) 140ms both; }
}
@keyframes vc-thanks-pop {
	from { opacity: 0; transform: scale(0.82); }
	to { opacity: 1; transform: scale(1); }
}
