/*!
 * cart-v2.css — Hechizos de Amor
 *
 * Skin del carrito v2 (CONTRATO desarrollo/web/carrito-v2.md §5). Reconfigura
 * el MISMO markup del plugin lumik-agency-widgets (cart.css, class-renderer.php)
 * más las 3 secciones nuevas impresas por cart-v2.php en los 4 do_action del
 * parche (lumik_cart_after_header / lumik_cart_after_items / lumik_cart_footer_start
 * / lumik_cart_footer_end). El plugin sigue siendo el motor: nada de abrir/cerrar,
 * foco, AJAX de cantidad/eliminar se toca acá — solo geometría, color y tipografía.
 *
 * Prefijo obligatorio en TODA regla que toque una propiedad que también tocan
 * header.css §6b (0,1,1 / 0,2,1) o cart-empty.css sección 2 fúnebre (0,3,1 / 0,4,1):
 * `body.hda-cart-v2 .zenth-cart-root` → (0,3,1) en la base, (0,4,1) con un pseudo-
 * clase encima. Empata con cart-empty.css en fúnebre; el empate lo resuelve el
 * encolado (hda-cart-v2 depende de [lumik-cart, hda-cart-empty] → siempre se
 * imprime DESPUÉS en el <head>, dependencia declarada, no orden de llamada).
 *
 * Tokens: --hc2-* con fallback a --mm-* (que declara cart-empty.css sobre la
 * MISMA `.zenth-cart-root`, CONTRATO §3.1) para no depender de que ese archivo
 * esté encolado. Dos bloques, igual que pide §5: floral en
 * `body.hda-cart-v2 .zenth-cart-root`, fúnebre en
 * `body.hda-cart-v2.hda-funeral-theme .zenth-cart-root` (0,4,1: gana sin
 * depender de orden). El resto de los componentes usa siempre var(--hc2-*):
 * el tema correcto sale solo por cascada de custom properties, sin repetir
 * selectores fúnebres salvo que la ESTRUCTURA (no el color) cambie.
 *
 * Guard `:not(:has(.zenth-cart-drawer__body--empty))` obligatorio en CUALQUIER
 * `display`/`background` que esta hoja ponga sobre `.zenth-cart-drawer` o su
 * `__footer`: con el carrito vacío manda cart-empty.css (`--mm-panel`, gotcha
 * 63) y el plugin (`body--empty ~ footer{display:none}`, cart.css:453) — sin
 * el guard, nuestra mayor especificidad les gana y el pie/fondo quedan
 * visibles sobre el estado vacío (bug real, atrapado en captura de pantalla).
 * `.zenth-cart-drawer__shipping-wrap` se oculta SIEMPRE (barra nativa,
 * reemplazada por `.hda-cart-v2__ship`); la línea propia se oculta SOLO en
 * vacío (se imprime siempre desde PHP, §4.2).
 */


/* ============================================================
   0) TOKENS (§5) — con fallback a --mm-*, sin asumir que
   cart-empty.css esté encolado (CONTRATO §3.1).
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root {
	--hc2-brand:          var(--mm-brand, #960946);
	--hc2-brand-dark:     #7B0035;
	--hc2-on-brand:       #FFFFFF;
	--hc2-on-brand-soft:  rgba(255, 255, 255, .82);
	--hc2-surface:        #FFFFFF;
	--hc2-band:           var(--mm-chip, #FCEFE7);
	--hc2-line:           var(--mm-panel-edge, #F6DACE);
	--hc2-control-line:   #9B8982; /* F4 */
	--hc2-text:           #1A1A1A;
	--hc2-muted:          #6B6B6B;
	--hc2-overlay:        rgba(46, 3, 22, .55);

	/* Variables del PLUGIN, pisadas en la misma regla (§5) */
	--zenth-cart-width:       480px;
	--zenth-cart-speed:       320ms;
	--zenth-cart-ease:        cubic-bezier(.22, .61, .36, 1);
	--zenth-cart-speed-close: 320ms;
	--zenth-cart-overlay:     var(--hc2-overlay);
	--zenth-cart-shadow:      0 30px 80px rgba(0, 0, 0, .35);
	--zenth-cart-accent:      var(--hc2-brand);
}
body.hda-cart-v2.hda-funeral-theme .zenth-cart-root {
	--hc2-brand:      var(--mm-brand, #4B5568);
	--hc2-brand-dark: #3A4250;
	--hc2-band:       var(--mm-chip, #E8EAEE);
	--hc2-line:       var(--mm-panel-edge, #C7CBD1);
	--hc2-control-line:   #8B8E92; /* F4 */
	--hc2-overlay:    rgba(30, 34, 44, .6);

	--zenth-cart-overlay: var(--hc2-overlay);
	--zenth-cart-accent:  var(--hc2-brand);
}


/* ============================================================
   1) NEUTRALIZACIÓN GLOBAL (gotcha 54)
   ============================================================
   text-shadow:none mata de una sola vez el
   `.elementor-kit-840 button{text-shadow:0 0 10px rgba(0,0,0,.3)}` del kit
   sobre CUALQUIER <button> del drawer. El beige de Astra
   (`button:hover,button:focus{background:#f9d9c1;border-color:#f9d9c1;
   color:#fff}`, 0,1,1) y el outline punteado (`:focus{outline:thin dotted}`,
   0,1,0) se neutralizan por componente más abajo (cada :hover/:focus-visible
   redeclara background+color+border-color explícitos) y acá de forma
   genérica para el outline. */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer button {
	text-shadow: none;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer button:focus-visible,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer a:focus-visible {
	outline: 2px solid var(--hc2-brand);
	outline-offset: 3px;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer button:focus:not(:focus-visible),
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer a:focus:not(:focus-visible) {
	outline: none;
}


/* ============================================================
   2) PANEL (§5 geometría) — top/right/bottom 24px, 480px, radio 20,
   sombra, entrada deslizando 48px + fade.
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer {
	top: 24px;
	right: 24px;
	bottom: 24px;
	height: auto;
	width: var(--zenth-cart-width);
	max-width: calc(100vw - 48px);
	border-radius: 20px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	opacity: 0;
	transform: translateX(48px);
	transition: transform var(--zenth-cart-speed) var(--zenth-cart-ease),
		opacity var(--zenth-cart-speed) var(--zenth-cart-ease);
	will-change: transform, opacity;
}
body.hda-cart-v2 .zenth-cart-root.is-open .zenth-cart-drawer {
	transform: none;
	opacity: 1;
}
/* Guard: con el carrito vacío manda cart-empty.css (--mm-panel, gotcha 63). */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer:not(:has(.zenth-cart-drawer__body--empty)) {
	background: var(--hc2-surface);
}

@media (max-width: 480px) {
	/* Mismo corte que el plugin y cart-empty.css (CONTRATO §5: "no se
	   inventa un rango 481-767 inconsistente"). El botón × a 44px ya lo
	   hace cart-empty.css en este corte — no se duplica acá (se conserva
	   ese archivo como dueño del botón cerrar, tabla §1). */
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer {
		inset: 0;
		width: 100%;
		max-width: none;
		border-radius: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	/* El plugin YA fuerza transition-duration:.01ms!important sobre
	   .zenth-cart-drawer/.zenth-cart-overlay (cart.css) — la entrada/salida
	   del panel se vuelve instantánea sola. Acá solo lo que el plugin no
	   cubre: el marquee de pagos (sección 8). */
}


/* ============================================================
   3) CABECERA — título Qalogre 30px + contador (§4.1/§5)
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__header {
	padding: 20px 24px 18px;
	border-bottom: 1px solid var(--hc2-line);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__title {
	font-family: "Qalogre fit", "Cormorant Garamond", Georgia, serif;
	font-weight: 400;
	font-size: 30px;
	line-height: 1.15;
	letter-spacing: normal;
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__count {
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 600;
	font-size: 13px;
	position: relative;
	top: -4px;
	margin-left: 4px;
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__count[hidden] {
	display: none !important;
}


/* ============================================================
   4) LÍNEA DE ENVÍO — hda-cart-v2__ship (§4.2)
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__ship {
	flex: 0 0 auto;
	padding: 20px 24px 18px;
	border-bottom: 1px solid var(--hc2-line);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__ship-t {
	margin: 0;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 400;
	font-size: 13.5px;
	line-height: 1.4;
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__ship-t b {
	font-weight: 600;
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__bar {
	height: 6px;
	margin-top: 10px;
	background: var(--hc2-band);
	border-radius: 999px;
	overflow: hidden;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__bar span {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(90deg, var(--hc2-brand), var(--hc2-brand-dark));
	border-radius: 999px;
}
/* Impresa SIEMPRE desde PHP (las páginas se cachean 11h, CONTRATO §4.2);
   se oculta solo acá, con la MISMA clase que cart.js mantiene en las
   transiciones AJAX (gotcha 59). */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer:has(.zenth-cart-drawer__body--empty) .hda-cart-v2__ship {
	display: none;
}
/* Barra NATIVA del plugin: reemplazada por la de arriba, oculta siempre
   (CONTRATO §2, sin depender de :empty — cart.css:458). No se le asigna
   área en el grid del pie. */
body.hda-cart-v2 .zenth-cart-drawer__shipping-wrap {
	display: none !important;
}


/* ============================================================
   5) BODY — flex column para que el cross-sell quede fijo entre
   la lista y el pie sin salir de [data-zenth-cart-body] (CONTRATO §2).
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__body {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 0;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-items {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	padding: 4px 24px 8px;
	/* FIX2 (2026-09-12, prod-visual.md): sombra de scroll en el borde
	   inferior, visible SOLO cuando hay contenido debajo. Tecnica de
	   "scroll shadows" con background-attachment local/scroll (sin JS):
	   el degradado de tapa (local) viaja con el contenido y cubre la
	   sombra (scroll, fija al borde) justo cuando se llega al final.
	   --hc2-surface es #FFFFFF en ambas lineas (CONTRATO §5).
	   FIX3 (2026-09-12, ≤480px): esta lista deja de scrollear sola en
	   móvil (sección 11) -- ahí la sombra ya no tiene borde que marcar y
	   se apaga (background:none). Se conserva tal cual en desktop/tablet,
	   donde el diseño original sigue vigente. */
	background:
		linear-gradient(rgba(255, 255, 255, 0), var(--hc2-surface) 75%) 0 100% local,
		radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, .38), rgba(0, 0, 0, 0)) 0 100% scroll;
	background-repeat: no-repeat;
	background-size: 100% 44px, 100% 14px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look {
	flex: 0 0 auto;
}


/* ============================================================
   6) ÍTEM — grid 96px 1fr auto, orden del DOM (§5)
   áreas: img título eliminar / img meta meta / img cantidad precio
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item {
	display: grid;
	grid-template-columns: 96px 1fr auto;
	grid-template-areas:
		"img titulo eliminar"
		"img meta meta"
		"img cantidad precio";
	column-gap: 14px;
	row-gap: 6px;
	align-items: start;
	padding: 18px 0;
	border-bottom: 1px solid var(--hc2-line);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__info,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__bottom {
	display: contents;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__thumb {
	grid-area: img;
	width: 96px;
	height: 96px;
	border-radius: 12px;
	background: var(--hc2-band);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__thumb img {
	object-fit: cover;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__title {
	grid-area: titulo;
	align-self: start;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 500;
	font-size: 15px;
	line-height: 1.3;
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__title:hover {
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__meta {
	grid-area: meta;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 400;
	font-size: 13px;
	line-height: 1.4;
	color: var(--hc2-muted);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
/* Píldora de cantidad: 38px alto, radio 999, botones 28×28 redondos (§5) */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__qty-controls {
	grid-area: cantidad;
	/* Grid da justify-self:stretch por defecto a un item de tipo bloque: sin
	   esto la píldora (display:inline-flex, sin width propio) se estira a
	   todo el ancho de la columna 1fr en vez de quedar compacta junto al
	   precio (medido: ~460px de ancho real en vez de los ~94px de su
	   contenido). */
	justify-self: start;
	align-self: end;
	height: 38px;
	padding: 0 4px;
	gap: 2px;
	border: 1px solid var(--hc2-control-line);
	border-radius: 999px;
	overflow: visible;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__qty-btn {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__qty-btn:hover:not(:disabled),
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__qty-btn:focus-visible {
	background: var(--hc2-band);
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__qty-value {
	min-width: 26px;
	border-left: 0;
	border-right: 0;
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__price {
	grid-area: precio;
	align-self: end;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 600;
	font-size: 15px;
	color: var(--hc2-text);
}
/* Eliminar: SVG oculto, ::after con el texto (coincide con aria-label) */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove {
	grid-area: eliminar;
	justify-self: end;
	align-self: start;
	width: auto;
	height: auto;
	padding: 2px 0;
	background: transparent;
	border-radius: 0;
	/* Astra fuerza mayúsculas en TODO <button> (gotcha 34): sin esto,
	   "Eliminar" se pinta "ELIMINAR". El shorthand font no cubre
	   text-transform/letter-spacing, hay que restaurarlos a mano. */
	text-transform: none;
	letter-spacing: normal;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove svg {
	display: none;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove::after {
	content: "Eliminar";
	display: inline-block;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 400;
	font-size: 13px;
	line-height: 1;
	color: var(--hc2-muted);
	text-decoration: underline;
	text-underline-offset: 2px;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove:hover:not(:disabled),
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove:focus-visible {
	background: transparent;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove:hover:not(:disabled)::after,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-item__remove:focus-visible::after {
	color: var(--hc2-text);
}


/* ============================================================
   7) CROSS-SELL — hda-cart-look (§4.3/§5)
   ============================================================ */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look {
	background: var(--hc2-band);
	padding: 22px 0 20px;
	border-top: 1px solid var(--hc2-line);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__h {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 24px 14px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__t {
	margin: 0;
	font-family: "Qalogre fit", "Cormorant Garamond", Georgia, serif;
	font-weight: 400;
	font-size: 22px;
	line-height: 1.2;
	color: var(--hc2-text);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__nav {
	display: flex;
	gap: 6px;
	flex: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__arrow {
	width: 28px;
	height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: transparent;
	border: 0;
	padding: 0;
	color: var(--hc2-brand);
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__arrow svg {
	width: 16px;
	height: 16px;
	/* El <svg> del PHP trae width/height="16" como ATRIBUTO HTML: dentro de
	   un flex container eso le da un aspect-ratio implícito y min-width:auto
	   lo encoge a un ancho absurdo (medido: 4px) aunque el width CSS diga
	   16px. flex-shrink:0 apaga el encogimiento, sin tocar el PHP. */
	flex: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__arrow:hover:not(:disabled),
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__arrow:focus-visible {
	background: rgba(0, 0, 0, .06);
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__arrow:disabled {
	background: transparent;
	color: var(--hc2-muted);
	opacity: .5;
	cursor: not-allowed;
}
/* Track: scroll-snap, scrollbar oculta */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__cards {
	list-style: none;
	margin: 0;
	padding: 0 24px;
	display: flex;
	gap: 12px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-left: 24px; /* F6 */
	scrollbar-width: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__cards::-webkit-scrollbar {
	display: none;
}
/* Tarjeta: flex 300px (≤480: 270px), grid 80px 1fr 44px, 112px alto (§5) */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__card {
	position: relative;
	flex: 0 0 300px;
	scroll-snap-align: start;
	display: grid;
	grid-template-columns: 80px 1fr 44px;
	column-gap: 14px;
	align-items: center;
	height: 112px;
	padding: 8px 14px 8px 8px;
	background: var(--hc2-surface);
	border-radius: 12px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__img {
	display: block;
	width: 80px;
	height: 80px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--hc2-band);
}
/* F2: :not([hidden]), pisaba display:none del hidden */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__img img:not([hidden]) {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__info {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__name {
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 1.3;
	color: var(--hc2-text);
	text-decoration: none;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__name:hover {
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__price {
	margin: 0;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 600;
	font-size: 13px;
	color: var(--hc2-muted);
}
/* Botón agregar: 44px redondo, marca / marca oscuro en hover */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add {
	position: relative;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--hc2-brand);
	border: 0;
	color: var(--hc2-on-brand);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color .15s ease;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add svg {
	width: 20px;
	height: 20px;
	/* Mismo gotcha que la flecha (ver arriba): el atributo width="18" del
	   PHP crea un aspect-ratio implícito que min-width:auto usa para
	   encoger el ancho dentro de este flex container. */
	flex: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add:hover,
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add:focus-visible {
	background: var(--hc2-brand-dark);
	color: var(--hc2-on-brand);
}
/* Estados JS: .is-adding (spinner CSS), .is-added (check 1.5s) */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add.is-adding svg {
	visibility: hidden;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add.is-adding::after {
	content: "";
	position: absolute;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 2px solid var(--hc2-on-brand);
	border-top-color: transparent;
	animation: hc2-spin .6s linear infinite;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add.is-added svg {
	display: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__add.is-added::after {
	content: "";
	position: absolute;
	width: 14px;
	height: 8px;
	border-left: 2px solid var(--hc2-on-brand);
	border-bottom: 2px solid var(--hc2-on-brand);
	transform: rotate(-45deg) translate(1px, -2px);
}
@keyframes hc2-spin {
	to { transform: rotate(360deg); }
}
/* Badge "Más pedido": solo la 1ª tarjeta (impreso condicionalmente en PHP) */
body.hda-cart-v2 .zenth-cart-root .hda-cart-look__badge {
	position: absolute;
	top: 8px;
	left: 102px;
	background: var(--hc2-brand);
	color: var(--hc2-on-brand);
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 600;
	font-size: 10.5px;
	line-height: 1;
	letter-spacing: .2px;
	padding: 4px 9px;
	border-radius: 999px;
	white-space: nowrap;
	pointer-events: none;
}
@media (max-width: 480px) {
	body.hda-cart-v2 .zenth-cart-root .hda-cart-look__card {
		flex-basis: 270px;
	}
}
/* F7: 760->790 (medido). FIX3 (2026-09-12): restringido a >480px de ancho.
   En movil (<=480px) el cross-sell ya NO compite por un alto fijo (ver
   seccion 11: scroll unico del body) y siempre se llega deslizando, asi
   que ocultarlo por poco alto de VENTANA ya no aplica ahi. Se conserva
   sin cambios para escritorio/tablet con ventana baja (sigue siendo el
   diseño original de items con scroll propio + cross-sell fijo). */
@media (max-height: 790px) and (min-width: 481px) {
	body.hda-cart-v2 .zenth-cart-root .hda-cart-look {
		display: none;
	}
}
/* FIX2 (2026-09-12, prod-visual.md) queda OBSOLETO y se retira con el
   FIX3 (mismo dia): compactaba la tarjeta de 112 a 96px entre 791-900px
   de alto para pelear espacio con la lista de items, que tenia scroll
   propio y un presupuesto de alto fijo. El escéptico midió que igual
   quedaba una banda real de corte, 791-838px (peor con dedicatoria larga:
   hasta 850px) — justo donde cae el iPhone 12/13 mini y el propio caso de
   referencia 390x844 (fix2-rechecks.md). El FIX3 (sección 11) resuelve la
   causa de raíz -- el body entero pasa a ser el único scroll en móvil, sin
   presupuesto de alto que repartir -- así que este parche ya no hace
   falta: la tarjeta vuelve a su tamaño normal (112px) en todas las
   alturas de ventana. */


/* ============================================================
   8) PIE — grid-template-areas, independiente del orden del DOM (§4.4/§5)
   ============================================================
   Orden real en el DOM: nota, shipping-wrap(oculto), subtotal, botones,
   marquee (CONTRATO §4.4: "se reordenan con CSS grid, no depende del
   orden del DOM"). shipping-wrap no recibe área: display:none lo saca
   del grid solo.

   Guard obligatorio (bug real atrapado en captura): el plugin oculta el
   <footer> con `body--empty ~ footer{display:none}` (0,2,0). Sin el
   `:not(:has(...))`, nuestro `display:grid` (0,3,1) le gana y el pie con
   "Subtotal $0" queda visible en el estado vacío. */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer:not(:has(.zenth-cart-drawer__body--empty)) .zenth-cart-drawer__footer {
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas:
		"subtotal nota"
		"botones botones"
		"marquee marquee";
	row-gap: 18px;
	column-gap: 16px;
	padding: 24px 24px 0;
	background: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__subtotal {
	grid-area: subtotal;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	margin: 0;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__subtotal-label {
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 500;
	font-size: 13px;
	color: var(--hc2-on-brand-soft);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__subtotal-amount {
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 600;
	font-size: 30px;
	line-height: 1.1;
	color: var(--hc2-on-brand);
}
/* Nota: dos <span>, alineada a la derecha y abajo del área (§4.4) */
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__note {
	grid-area: nota;
	align-self: end;
	justify-self: end;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 2px;
	margin: 0;
	text-align: right;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 400;
	font-size: 13px;
	line-height: 1.35;
	color: var(--hc2-on-brand-soft);
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__note span {
	display: block;
}
/* Botones: dos píldoras 46px */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__buttons {
	grid-area: botones;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	margin: 0;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn {
	height: 46px;
	padding: 0 18px;
	border-radius: 999px;
	font-family: "Founders Grotesk Official", "Space Grotesk", "Helvetica Neue", Helvetica, sans-serif;
	font-weight: 500;
	font-size: 15px;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease, opacity .15s ease;
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--secondary {
	background: transparent;
	border: 1.5px solid var(--hc2-on-brand);
	color: var(--hc2-on-brand);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--secondary:hover,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--secondary:focus-visible {
	background: rgba(255, 255, 255, .14);
	border-color: var(--hc2-on-brand);
	color: var(--hc2-on-brand);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--primary {
	background: var(--hc2-on-brand);
	border: 1.5px solid var(--hc2-on-brand);
	color: var(--hc2-brand);
}
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--primary:hover,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__btn--primary:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
	color: var(--hc2-brand-dark);
	opacity: 1;
}
/* F1: --hc2-brand = fondo del pie */
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer .zenth-cart-drawer__btn--secondary:focus-visible,
body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer .zenth-cart-drawer__btn--primary:focus-visible {
	outline-color: var(--hc2-on-brand);
}


/* ============================================================
   9) MARQUEE de medios de pago — hda-cart-v2__pay (§4.4/§5)
   ============================================================
   Los <svg> del marquee NO traen viewBox propio (heredan el símbolo vía
   <use>): sin ancho explícito por ícono, el navegador les daría el tamaño
   por defecto (300×150) y el `preserveAspectRatio` los dejaría con
   letterboxing enorme. Se fija el ancho por proporción real de cada
   símbolo de cart-v2-pay.svg (verificado con grep de los viewBox):
   tarjeta/PSE ≈ 3.62:2.1 → 34px a 20px de alto; Bancolombia 100:36 → 56px;
   Contra entrega 150:32 → 94px; WhatsApp 100:32 → 63px. */
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay {
	grid-area: marquee;
	position: relative;
	margin: 0 -24px;
	padding: 14px 0 0;
	border-top: 1px solid rgba(255, 255, 255, .16);
	overflow: hidden;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay::before,
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay::after {
	content: "";
	position: absolute;
	top: 14px;
	bottom: 0;
	width: 48px;
	z-index: 1;
	pointer-events: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay::before {
	left: 0;
	background: linear-gradient(90deg, var(--hc2-brand) 20%, rgba(0, 0, 0, 0));
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay::after {
	right: 0;
	background: linear-gradient(270deg, var(--hc2-brand) 20%, rgba(0, 0, 0, 0));
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-track {
	display: flex;
	width: max-content;
	animation: hc2-marquee 26s linear infinite;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay:hover .hda-cart-v2__pay-track {
	animation-play-state: paused;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set {
	display: flex;
	align-items: center;
	gap: 22px;
	list-style: none;
	margin: 0;
	padding: 0 22px 16px;
	flex: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set li {
	display: flex;
	align-items: center;
	flex: none;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set svg {
	display: block;
	height: 20px;
	width: 34px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set svg:has(use[data-href="#pay-bancolombia"]) {
	width: 56px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set svg:has(use[data-href="#pay-contra-entrega"]) {
	width: 94px;
}
body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set svg:has(use[data-href="#pay-whatsapp"]) {
	width: 63px;
}
@keyframes hc2-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	/* Marquee estático con scroll nativo, sin el set duplicado (§5) */
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay {
		overflow-x: auto;
	}
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-track {
		animation: none;
		width: auto;
	}
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay-set[aria-hidden="true"] {
		display: none;
	}
}


/* ============================================================
   10) RESPONSIVE ≤480px — paddings, pie apilado
   ============================================================ */
@media (max-width: 480px) {
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__ship,
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-items,
	body.hda-cart-v2 .zenth-cart-root .hda-cart-look__h,
	body.hda-cart-v2 .zenth-cart-root .hda-cart-look__cards {
		padding-left: 20px;
		padding-right: 20px;
		scroll-padding-left: 20px; /* F6 */
	}
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer:not(:has(.zenth-cart-drawer__body--empty)) .zenth-cart-drawer__footer {
		grid-template-columns: 1fr;
		grid-template-areas:
			"subtotal"
			"nota"
			"botones"
			"marquee";
		row-gap: 14px;
		padding: 20px 20px 0;
	}
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__note {
		align-items: flex-start;
		justify-self: start;
		text-align: left;
	}
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__subtotal-amount {
		font-size: 26px;
		white-space: nowrap;
	}
	body.hda-cart-v2 .zenth-cart-root .hda-cart-v2__pay {
		margin: 0 -20px;
	}
}


/* ============================================================
   11) FIX3 (2026-09-12) — SCROLL ÚNICO DEL BODY EN MÓVIL (≤480px)
   ============================================================
   Rechazo del escéptico sobre el intento anterior (fix2-rechecks.md):
   con la lista de items scrolleando por separado (sección 5: flex:1 1
   auto; overflow-y:auto) y el cross-sell fijo debajo (flex:0 0 auto), en
   una pantalla de teléfono casi nunca sobra alto para 2 items completos.
   La sombra de scroll y el umbral de compactar la tarjeta (791-900px,
   ambos retirados arriba) eran parches sobre ESE presupuesto de alto, y
   medido en barrido fino dejaban una banda real de corte de 48px
   (791-838px, corrida a 850px con una dedicatoria de 2 líneas) —
   exactamente donde cae el iPhone 12/13 mini (375×812) y el propio caso
   de referencia 390×844.

   Arreglo estructural, no otro umbral: en ≤480px el único scroll pasa a
   [data-zenth-cart-body] completo. La lista de items y el cross-sell
   fluyen dentro sin scroll propio (contenido natural, sin overflow), así
   que ningún item queda recortado por una caja interna — el largo total
   del contenido decide, no un reparto de alto entre dos cajas. El pie
   sigue FUERA de [data-zenth-cart-body] (su propio <footer>, hermano
   posterior, CONTRATO §2) y no se toca: sigue fijo abajo, fuera del
   scroll. Escritorio y tablet (>480px) no entran en este media query:
   ahí sigue el diseño original de la sección 5 sin cambios. */
@media (max-width: 480px) {
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-drawer__body {
		overflow-y: auto;
		overflow-x: hidden;
		-webkit-overflow-scrolling: touch;
	}
	body.hda-cart-v2 .zenth-cart-root .zenth-cart-items {
		flex: 0 0 auto;
		overflow: visible;
		/* La sombra de scroll de la sección 5 medía el borde de ESTA
		   lista cuando scrolleaba sola; ya no scrollea, así que ya no
		   tiene un borde real que marcar (se apaga, no se traslada). */
		background: none;
	}
	body.hda-cart-v2 .zenth-cart-root .hda-cart-look {
		flex: 0 0 auto;
	}
}
