/* assets/pages/compra.css · carrito, checkout y gracias A1 (spec §4 a §6). Solo tokens --lf-*. */
.lf-compra { padding-block: var(--lf-s-6) var(--lf-s-10); }
.lf-compra .woocommerce { max-width: var(--lf-container); margin-inline: auto; padding-inline: var(--lf-gutter); }
.lf-sum { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lf-s-4); }
.lf-sum__line { display: grid; grid-template-columns: 72px 1fr; gap: var(--lf-s-3); align-items: start; }
.lf-sum__img { width: 72px; height: auto; object-fit: contain; background: transparent; border-radius: var(--lf-radius); } /* sin baldosa gris: foto entera sin placeholder */
.lf-sum__name { margin: 0; font-weight: 600; }
.lf-sum__meta { margin: 0; color: var(--lf-text-soft-on-light); font-size: var(--lf-fs-small); }
.lf-sum__to { margin-top: var(--lf-s-4); }
.lf-sum__to p { margin: 0; } /* "Para": nombre y direccion seguidos, como una etiqueta postal */
.lf-sum__to .lf-sum__label { margin-bottom: var(--lf-s-1); }
.lf-sum__label { margin: 0; font-size: var(--lf-fs-label); color: var(--lf-text-soft-on-light); text-transform: uppercase; letter-spacing: var(--lf-ls-label); }
.lf-track { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--lf-s-2); counter-reset: lf-step; }
.lf-track__step { counter-increment: lf-step; padding-top: var(--lf-s-3); border-top: 3px solid var(--lf-line-light); font-size: var(--lf-fs-small); color: var(--lf-text-soft-on-light); }
.lf-track__step::before { content: counter(lf-step) ". "; }
.lf-track__step.is-done, .lf-track__step.is-now { border-top-color: var(--lf-gold-dark); color: var(--lf-ink); }
.lf-track__step.is-now { font-weight: 600; }
@media (max-width: 599px) { .lf-track { grid-template-columns: 1fr 1fr; } }

/* Checkout */
.lf-co__title { font-family: var(--lf-font-head); font-size: var(--lf-fs-h2); margin: 0 0 var(--lf-s-5); }
.lf-co { display: grid; gap: var(--lf-s-6); }
.lf-co [hidden] { display: none !important; }
/* WooCommerce mete los avisos dentro del formulario: ocupan toda la fila y van antes que todo */
.lf-co > .woocommerce-NoticeGroup { grid-column: 1 / -1; order: -2; }
.lf-co .woocommerce-error { margin: 0; padding-left: var(--lf-s-5); color: var(--lf-red); }
.lf-compra .woocommerce-error > ul { margin: 0; padding: 0; } /* notices/error.php A1: la lista va dentro del contenedor con role="alert" */
.lf-co__sec { padding-block: var(--lf-s-5); border-top: 1px solid var(--lf-line-light); }
.lf-co__h { display: flex; gap: var(--lf-s-3); align-items: baseline; margin: 0 0 var(--lf-s-4); font-family: var(--lf-font-head); font-size: var(--lf-fs-h3); }
.lf-co__h span { display: inline-grid; place-items: center; width: 1.8em; height: 1.8em; border-radius: 50%; background: var(--lf-gold-dark); color: var(--lf-white); font-size: .8em; }
.lf-co__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--lf-s-3) var(--lf-s-4); }
.lf-co__grid .form-row { margin: 0; grid-column: 1 / -1; }
.lf-co__grid #billing_first_name_field, .lf-co__grid #billing_last_name_field, .lf-co__grid #shipping_first_name_field, .lf-co__grid #shipping_last_name_field,
.lf-co__grid #shipping_postcode_field, .lf-co__grid #shipping_state_field { grid-column: auto; }
.lf-co__grid .lf-third { grid-column: auto; }
.lf-co__same { margin-top: var(--lf-s-3); background: none; border-left: 0; border-right: 0; border-top: 0; cursor: pointer; }
.lf-co__cpmsg { margin: 0; }
.lf-co__cpmsg:not(:empty) { color: var(--lf-red); margin: var(--lf-s-2) 0 0; }
/* Rojo de texto AA (tanda global, BR-M3): --lf-red da 4,1:1 sobre marfil; mezclado con la tinta, 5,1:1 (4,6:1 sin color-mix) */
.lf-co .checkout-inline-error-message, .lf-sum__warn, .lf-sum__err:not(:empty) { color: var(--lf-red); color: color-mix(in srgb, var(--lf-red) 85%, var(--lf-ink)); font-size: var(--lf-fs-small); margin: var(--lf-s-1) 0 0; }
.lf-co [aria-invalid="true"] { border-color: var(--lf-red); }
.lf-co__aside { align-self: start; min-width: 0; }
.lf-co__sumtoggle { display: none; }
.lf-tot { display: grid; grid-template-columns: 1fr auto; gap: var(--lf-s-2); margin: var(--lf-s-4) 0 0; padding-top: var(--lf-s-4); border-top: 1px solid var(--lf-line-light); }
.lf-tot dt { margin: 0; }
.lf-tot dd { margin: 0; text-align: right; }
.lf-tot__total { font-weight: 700; font-size: var(--lf-fs-h3); }
.lf-sum__line { grid-template-columns: 72px 1fr auto; }
.lf-sum__price { margin: 0; white-space: nowrap; }
.lf-sum__price .lf-sub-cycle { display: block; font-size: var(--lf-fs-small); color: var(--lf-text-soft-on-light); white-space: normal; text-align: right; }
.lf-sum__date { display: flex; flex-wrap: wrap; gap: var(--lf-s-2); align-items: center; margin-top: var(--lf-s-2); }
.lf-sum__date .lf-sum__warn, .lf-sum__date .lf-sum__err { flex-basis: 100%; }
.lf-sum__date .lf-btn, .lf-co__coupon .lf-btn { height: var(--lf-s-8); padding: 0 var(--lf-s-4); }
.lf-co__coupon { margin-top: var(--lf-s-4); }
.lf-co__coupontoggle, .lf-cart__coupontoggle { background: none; border-left: 0; border-right: 0; border-top: 0; cursor: pointer; }
/* Botones de texto: sin el fondo rosa que el tema pone a button en hover y foco */
.lf-co__same:hover, .lf-co__same:focus, .lf-co__coupontoggle:hover, .lf-co__coupontoggle:focus, .lf-cart__coupontoggle:hover, .lf-cart__coupontoggle:focus { background: none; color: inherit; }
.lf-co__sumtoggle:hover, .lf-co__sumtoggle:focus { background: var(--lf-ivory); color: var(--lf-ink); }
.lf-co__sumtoggle:focus-visible, .lf-co__same:focus-visible, .lf-co__coupontoggle:focus-visible, .lf-cart__coupontoggle:focus-visible { outline: 2px solid var(--lf-gold-dark); outline-offset: 2px; }
/* Enlaces dentro de texto (privacidad, terminos): subrayados, no solo por color (WCAG 1.4.1, axe link-in-text-block) */
.lf-co #payment p a, .lf-co #payment label a, .lf-co .woocommerce-form-login-toggle a { text-decoration: underline; text-underline-offset: 2px; }
#lf-coupon:not([hidden]) { display: flex; gap: var(--lf-s-2); margin-top: var(--lf-s-3); }
#payment ul.payment_methods { list-style: none; margin: 0 0 var(--lf-s-4); padding: 0; display: grid; gap: var(--lf-s-2); }
#payment .payment_box { margin: var(--lf-s-1) 0 0; color: var(--lf-text-soft-on-light); font-size: var(--lf-fs-small); }
#payment .payment_box p { margin: 0; }
/* Un CSS antiguo pone .button { font-family y text-transform !important }: solo se gana con !important */
.lf-co #payment #place_order.button { width: 100%; height: var(--lf-s-10); margin-top: var(--lf-s-4); font-weight: 600; font-size: var(--lf-fs-label); line-height: 1; font-family: var(--lf-font-head) !important; letter-spacing: var(--lf-ls-label); text-transform: uppercase !important; background: var(--lf-gold); color: var(--lf-deep); border: 0; border-radius: var(--lf-radius); cursor: pointer; }
.lf-co #payment #place_order.button:hover, .lf-co #payment #place_order.button:focus-visible { background: var(--lf-paper); }
@media (min-width: 1024px) {
	.lf-co { grid-template-columns: minmax(0, 1fr) 380px; align-items: start; }
	.lf-co__aside { position: sticky; top: var(--lf-s-6); padding: var(--lf-s-5); background: var(--lf-ivory); border-radius: var(--lf-radius); }
}
@media (max-width: 1023px) {
	.lf-co__aside { order: -1; }
	.lf-co__sumtoggle { display: flex; width: 100%; justify-content: space-between; padding: var(--lf-s-3) var(--lf-s-4); background: var(--lf-ivory); color: var(--lf-ink); border: 0; border-radius: var(--lf-radius); font: inherit; cursor: pointer; }
	.lf-co__aside.is-open { padding: 0 var(--lf-s-4) var(--lf-s-4); background: var(--lf-ivory); }
	.lf-co__aside:not(.is-open) #order_review, .lf-co__aside:not(.is-open) .lf-co__coupon { display: none; }
}
@media (max-width: 599px) { .lf-co__grid { grid-template-columns: 1fr; } .lf-co__grid .form-row { grid-column: 1 / -1 !important; } }

/* Pagina del carrito (spec 4.2): bloques del carrito lateral (carrito-lateral.css). Movil: lineas, resumen y vinos;
   desde 1024 px lineas y vinos a la izquierda y resumen fijo a la derecha. Sin JS: campo numerico, "Actualizar cesta" y cupon abierto */
.lf-cart { display: grid; gap: var(--lf-s-4); font-size: var(--lf-fs-body); line-height: 1.5; color: var(--lf-ink); }
.lf-cart [hidden] { display: none !important; }
:where(.lf-cart) a { color: inherit; }
.lf-cart__title:focus { outline: none; }
.lf-cart__main, .lf-cart__aside { min-width: 0; }
.lf-cart__lines { border-top: 1px solid var(--lf-line-light); }
.lf-cart .lf-winerow { margin-top: var(--lf-s-6); }
.lf-cart .lf-drawer__sum { margin-top: 0; }
/* Fotos enteras sin baldosa gris alrededor (se leia como un hueco de imagen): fondo transparente solo aqui, no en la tarjeta global */
.lf-cart .lf-winerow .lf-product-card__media { background: transparent; }
.lf-cart .lf-winerow .lf-product-card__title { display: block; -webkit-line-clamp: unset; overflow: visible; }
/* Boton por defecto del formulario (ver cart.php): fuera de la vista y del orden de tabulacion */
.lf-cart .lf-cart__default { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; }
.lf-cart .lf-qty__n { width: var(--lf-s-11); height: 44px; padding: 0; border: 0; border-radius: 0; background: none; color: var(--lf-ink); text-align: center; }
.lf-cart .lf-qty__btn { display: none; }
.lf-cart-js .lf-cart .lf-qty__btn { display: inline-flex; }
.lf-cart-js .lf-cart .lf-qty__n { width: 44px; -moz-appearance: textfield; appearance: textfield; }
.lf-cart-js .lf-cart .lf-qty__n::-webkit-inner-spin-button, .lf-cart-js .lf-cart .lf-qty__n::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.lf-cart .lf-qty__n:focus-visible { outline: 2px solid var(--lf-gold-dark); outline-offset: -2px; }
.lf-cart__msg { margin-top: var(--lf-s-3); }
.lf-cart__msg:empty { display: none; }
.lf-cart .lf-cart__update { width: auto; margin-top: var(--lf-s-4); height: 44px; padding: 0 var(--lf-s-5); }
.lf-cart-js .lf-cart__update { display: none; }
.lf-cart__coupon { margin-top: var(--lf-s-5); }
.lf-cart__couponform { flex-wrap: wrap; }
.lf-cart .lf-cart__coupontoggle { display: none; min-height: 44px; padding: 0; border: 0; color: var(--lf-ink); } /* sin JS el cupon ya esta abierto */
.lf-cart-js .lf-cart .lf-cart__coupontoggle { display: inline-flex; align-items: center; } /* 44 px de objetivo; el texto con el aspecto del checkout (.lf-link) */
.lf-cart-js:not(.lf-coupon-open) .lf-cart__couponform { display: none; }
.lf-cart .coupon-error-notice { flex-basis: 100%; margin: 0; padding: var(--lf-s-1) var(--lf-s-3); border-left: 2px solid var(--lf-red); color: var(--lf-ink); font-size: var(--lf-fs-small); }
.lf-cart .lf-cart__go { width: 100%; margin-top: var(--lf-s-5); }
.lf-cart__back { display: flex; width: fit-content; align-items: center; min-height: 44px; margin: var(--lf-s-2) auto 0; }
.lf-cart__empty { max-width: 40rem; margin-inline: auto; }
/* Avisos de WooCommerce (quitar con "¿Deshacer?", cupon): enlaces subrayados, no solo por color (axe link-in-text-block) */
.lf-compra :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) a:not(.button) { text-decoration: underline; text-underline-offset: 2px; }
/* Errores al cargar la pagina (pago no completado, pedido no valido, stock): caja como .lf-drawer__alert y .lf-thx__pending,
   borde --lf-red y texto --lf-ink sobre --lf-ivory (AA). role="alert" en el contenedor (woocommerce-a1/notices/error.php) */
.lf-compra .woocommerce-notices-wrapper .woocommerce-error { margin: 0 0 var(--lf-s-6); padding: var(--lf-s-3) var(--lf-s-4); list-style: none; border: 0; border-left: 3px solid var(--lf-red); background: var(--lf-ivory); color: var(--lf-ink); font-weight: 600; }
.lf-compra .woocommerce-notices-wrapper .woocommerce-error::before { content: none; }
/* woocommerce.js lo enfoca al cargar (tabindex="-1") para que el lector lo anuncie: fuera del orden de tabulacion, sin anillo */
.lf-compra .woocommerce-error[tabindex="-1"]:focus { outline: none; }
.lf-compra .woocommerce-notices-wrapper .woocommerce-error ul { list-style: none; }
.lf-compra .woocommerce-notices-wrapper .woocommerce-error li { margin: 0; padding: 0; }
.lf-compra .woocommerce-notices-wrapper .woocommerce-error li + li { margin-top: var(--lf-s-2); }
.lf-cart__empty .lf-cart__title { margin-bottom: var(--lf-s-2); }
@media (min-width: 1024px) {
	.lf-cart { grid-template-columns: minmax(0, 1fr) 380px; grid-template-areas: "main aside" "wine aside"; column-gap: var(--lf-s-10); align-items: start; }
	.lf-cart__main { grid-area: main; }
	.lf-cart > .lf-winerow { grid-area: wine; }
	.lf-cart__aside { grid-area: aside; position: sticky; top: var(--lf-s-6); padding: var(--lf-s-5); background: var(--lf-ivory); }
	.lf-cart .lf-drawer__line { grid-template-columns: 120px minmax(0, 1fr) auto; }
	.lf-cart .lf-drawer__media { width: 120px; height: 120px; }
}

/* Gracias (spec 6.2) */
.lf-thx { max-width: 720px; margin-inline: auto; }
.lf-thx__kicker { margin: 0 0 var(--lf-s-2); color: var(--lf-text-soft-on-light); font-size: var(--lf-fs-label); letter-spacing: var(--lf-ls-label); text-transform: uppercase; }
.lf-thx .lf-co__title { margin-bottom: var(--lf-s-4); }
.lf-thx__pending, .lf-thx__ok { margin: 0 0 var(--lf-s-5); padding: var(--lf-s-3) var(--lf-s-4); background: var(--lf-ivory); border-left: 3px solid var(--lf-gold-dark); }
.lf-thx__pending[hidden] { display: none; }
.lf-thx__pending a, .lf-thx__ok a, .lf-thx__claim p a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.lf-thx__sec { padding-block: var(--lf-s-5); border-top: 1px solid var(--lf-line-light); }
.lf-thx__h { margin: 0 0 var(--lf-s-4); font-family: var(--lf-font-head); font-size: var(--lf-fs-h3); font-weight: 400; }
.lf-thx__total { margin: var(--lf-s-5) 0 var(--lf-s-2); font-weight: 600; }
.lf-thx__actions { margin: var(--lf-s-5) 0; }
.lf-thx__claim form { display: grid; gap: var(--lf-s-2); max-width: 360px; }
.lf-thx__claim label { font-size: var(--lf-fs-small); font-weight: 600; }
.lf-thx__claim input[type=password] { height: 48px; padding: 0 var(--lf-s-3); font: inherit; border: 1px solid var(--lf-text-soft-on-light); border-radius: var(--lf-radius); background: var(--lf-white); }
.lf-thx__claim input[type=password]:focus-visible { outline: 2px solid var(--lf-gold-dark); outline-offset: 2px; }
.lf-thx__claim .lf-btn { margin-top: var(--lf-s-2); }
.lf-thx__err { margin: 0 0 var(--lf-s-3); color: var(--lf-red); font-size: var(--lf-fs-small); }

/* Enlaces legales y de acceso: Hello Elementor los pinta de rosa (#c36); van en tinta y subrayados. Radios y casillas en el color de marca */
.lf-compra :is(.woocommerce-privacy-policy-text, .woocommerce-terms-and-conditions-wrapper, .woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) a { color: var(--lf-ink); text-decoration: underline; text-underline-offset: 2px; }
.lf-compra :is(input[type=radio], input[type=checkbox]) { accent-color: var(--lf-deep); }
/* Aviso de CartFlows bajo el email: llega con font-size:xx-small en linea (~9 px, ilegible); tamano y color de ayuda A1 */
#wcf_cf_gdpr_message_block span { font-size: var(--lf-fs-small) !important; line-height: 1.5; color: var(--lf-text-soft-on-light); }
