/**
 * Cart page — WooCommerce classic cart laid out with the theme's own
 * templates (woocommerce/cart/*.php, inc/cart.php). Mobile-first: one column
 * (cards, then the order summary); two columns from 960px.
 *
 * WooCommerce's woocommerce-layout / woocommerce.css still load on this page,
 * so rules that have to beat them are written one level deeper (`.ed-cart …`)
 * and never rely on !important. Nothing here touches WooCommerce behaviour.
 */

/* -------------------------------------------------------------------- */
/* Page heading + intro                                                  */
/* -------------------------------------------------------------------- */

.ed-cart-page {
	padding-top: var(--ed-space-lg);
}

.ed-cart-page__title {
	margin: 0 0 var(--ed-space-2xs);
	font-family: var(--ed-font-heading);
	font-size: var(--ed-font-size-2xl);
	font-weight: 600;
	line-height: var(--ed-line-height-heading);
}

.ed-cart__intro {
	margin: 0 0 var(--ed-space-lg);
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-base);
}

/* -------------------------------------------------------------------- */
/* Notices (WooCommerce messages: coupon applied, item removed, errors)  */
/* -------------------------------------------------------------------- */

.ed-cart-page .woocommerce-notices-wrapper:empty {
	display: none;
}

.ed-cart-page .woocommerce-message,
.ed-cart-page .woocommerce-info,
.ed-cart-page .woocommerce-error {
	margin: 0 0 var(--ed-space-md);
	padding: var(--ed-space-xs) var(--ed-space-sm);
	background-color: var(--ed-color-surface-alt);
	border: 1px solid var(--ed-color-border);
	border-left: 3px solid var(--ed-color-link);
	border-radius: var(--ed-radius-md);
	color: var(--ed-color-text);
	font-size: var(--ed-font-size-sm);
	list-style: none;
}

.ed-cart-page .woocommerce-error {
	border-left-color: var(--ed-color-error);
}

.ed-cart-page .woocommerce-message::before,
.ed-cart-page .woocommerce-info::before,
.ed-cart-page .woocommerce-error::before {
	display: none;
}

.ed-cart-page .woocommerce-message a.button,
.ed-cart-page .woocommerce-message .restore-item {
	margin-inline-start: var(--ed-space-xs);
	float: none;
	background: none;
	color: var(--ed-color-link);
	font-weight: 600;
	text-decoration: underline;
}

/* -------------------------------------------------------------------- */
/* Layout                                                                */
/* -------------------------------------------------------------------- */

.ed-cart__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--ed-space-lg);
	align-items: start;
}

@media (min-width: 960px) {
	.ed-cart__layout {
		grid-template-columns: minmax(0, 1fr) 22.5rem;
		gap: var(--ed-space-xl);
	}
}

/* WooCommerce caps the shortcode wrapper at 1000px; the container owns the width now. */
.woocommerce-cart .ed-cart-page .woocommerce {
	max-width: none;
}

/*
 * WooCommerce's block-theme stylesheet sizes `.product-remove` (a table cell
 * in its own template) to 1em; the cart.js hooks (.product-remove,
 * .product-quantity, .product-subtotal) are kept on the card elements, so
 * neutralise those cell rules here.
 */
.ed-cart .woocommerce-cart-form .ed-cart-item__remove.product-remove,
.ed-cart .woocommerce-cart-form .ed-cart-item__qty.product-quantity,
.ed-cart .woocommerce-cart-form .ed-cart-item__price.product-subtotal {
	width: auto;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: inherit;
	line-height: inherit;
}

/* WooCommerce floats/sizes the cart form and collaterals; the grid owns it now. */
.ed-cart .woocommerce-cart-form,
.ed-cart .cart-collaterals,
.ed-cart .cart-collaterals .cart_totals {
	float: none;
	width: 100%;
	margin: 0;
	padding: 0;
}

/* -------------------------------------------------------------------- */
/* Item cards                                                            */
/* -------------------------------------------------------------------- */

.ed-cart .ed-cart__items {
	display: flex;
	flex-direction: column;
	gap: var(--ed-space-sm);
	margin: 0;
	padding: 0;
	list-style: none;
}

.ed-cart-item {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"head head"
		"qty price"
		"toggle remove";
	align-items: center;
	gap: var(--ed-space-xs) var(--ed-space-md);
	padding: var(--ed-space-md);
	background-color: var(--ed-color-surface);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-md);
	box-shadow: var(--ed-shadow-sm);
}

@media (min-width: 720px) {
	.ed-cart-item {
		grid-template-columns: minmax(0, 1fr) auto 7.5rem;
		grid-template-areas:
			"head qty price"
			"toggle . remove";
		column-gap: var(--ed-space-lg);
		padding: var(--ed-space-md) var(--ed-space-lg);
	}
}

.ed-cart-item__head {
	grid-area: head;
	min-width: 0;
}

.ed-cart .ed-cart-item__title {
	margin: 0;
	font-family: var(--ed-font-heading);
	font-size: var(--ed-font-size-lg);
	font-weight: 600;
	line-height: var(--ed-line-height-heading);
	overflow-wrap: anywhere;
}

.ed-cart-item__dimensions {
	margin: var(--ed-space-3xs) 0 0;
	color: var(--ed-color-heading);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	letter-spacing: 0.01em;
}

/* Compact differentiator ("Basic 1% · Grafito · Con motor"): tells two blinds of the
 * same size apart without opening the details. Same recipe on the Checkout summary
 * (checkout-order-summary.css). */
.ed-cart-item__summary {
	margin: var(--ed-space-3xs) 0 0;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
	font-weight: 400;
	line-height: 1.4;
	overflow-wrap: anywhere;
}

/* Quantity stepper ----------------------------------------------------- */

.ed-cart-item__qty {
	grid-area: qty;
	justify-self: start;
}

@media (min-width: 720px) {
	.ed-cart-item__qty {
		justify-self: end;
	}
}

.ed-cart-qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-full);
	background-color: var(--ed-color-surface);
}

.ed-cart-qty .quantity {
	margin: 0;
	float: none;
}

.ed-cart .ed-cart-qty .quantity .qty {
	width: 2.75rem;
	height: 2.5rem;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
	color: var(--ed-color-heading);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-base);
	font-weight: 600;
	text-align: center;
	-moz-appearance: textfield;
	appearance: textfield;
}

.ed-cart .ed-cart-qty .qty::-webkit-outer-spin-button,
.ed-cart .ed-cart-qty .qty::-webkit-inner-spin-button {
	margin: 0;
	-webkit-appearance: none;
}

.ed-cart-qty__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	background: none;
	border: 0;
	border-radius: var(--ed-radius-full);
	color: var(--ed-color-heading);
	cursor: pointer;
	transition: background-color var(--ed-transition-fast), color var(--ed-transition-fast);
}

.ed-cart-qty__btn svg {
	width: 14px;
	height: 14px;
}

.ed-cart-qty__btn:hover:not(:disabled) {
	background-color: var(--ed-color-surface-alt);
	color: var(--ed-color-link);
}

.ed-cart-qty__btn:disabled {
	color: var(--ed-color-border);
	cursor: not-allowed;
}

.ed-cart-qty__btn:focus-visible,
.ed-cart .ed-cart-qty .qty:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: var(--ed-focus-outline-offset);
}

/* Price ---------------------------------------------------------------- */

.ed-cart-item__price {
	grid-area: price;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 2px;
	text-align: right;
}

.ed-cart-item__subtotal {
	color: var(--ed-color-heading);
	font-size: 1.1875rem;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
}

.ed-cart-item__unit {
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-xs);
	white-space: nowrap;
}

/* Details toggle + Eliminar --------------------------------------------- */

.ed-cart-item__toggle {
	grid-area: toggle;
	justify-self: start;
}

.ed-cart-item__details-btn {
	display: inline-flex;
	align-items: center;
	gap: var(--ed-space-2xs);
	min-height: 44px;
	padding: 0;
	background: none;
	border: 0;
	color: var(--ed-color-heading);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

.ed-cart-item__details-btn:hover {
	color: var(--ed-color-link);
}

.ed-cart-item__details-btn svg {
	width: 12px;
	height: 8px;
	flex: none;
	transition: transform var(--ed-transition-fast);
}

.ed-cart-item__details-btn[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

.ed-cart-item__remove {
	grid-area: remove;
	justify-self: end;
}

.ed-cart .ed-cart-item__remove-link {
	display: inline-flex;
	align-items: center;
	gap: var(--ed-space-2xs);
	min-height: 44px;
	padding: 0 var(--ed-space-2xs);
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	text-decoration: none;
	transition: color var(--ed-transition-fast);
}

.ed-cart .ed-cart-item__remove-link svg {
	width: 16px;
	height: 16px;
	flex: none;
}

.ed-cart .ed-cart-item__remove-link:hover {
	color: var(--ed-color-error);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ed-cart-item__details-btn:focus-visible,
.ed-cart .ed-cart-item__remove-link:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: var(--ed-focus-outline-offset);
}

/* Structured details --------------------------------------------------- */

/* Not a named grid area: an explicit "details" row would still add a row gap while the list is hidden. */
.ed-cart .ed-cart-item__details {
	grid-column: 1 / -1;
	margin: var(--ed-space-2xs) 0 0;
	padding: var(--ed-space-2xs) 0 0;
	border-top: 1px solid var(--ed-color-border);
}

.ed-cart-item__details[hidden] {
	display: none;
}

.ed-cart-item__detail {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--ed-space-xs) 0;
	border-bottom: 1px solid var(--ed-color-border);
}

.ed-cart-item__detail:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

/* Labels read darker than the values so the list scans at a glance. */
.ed-cart-item__detail dt {
	color: var(--ed-color-text);
	font-size: var(--ed-font-size-xs);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ed-cart-item__detail dd {
	margin: 0;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
	overflow-wrap: anywhere;
}

@media (min-width: 720px) {
	.ed-cart-item__detail {
		flex-direction: row;
		align-items: baseline;
		gap: var(--ed-space-md);
	}

	.ed-cart-item__detail dt {
		flex: 0 0 15rem;
	}

	.ed-cart-item__detail dd {
		flex: 1 1 auto;
	}
}

/* -------------------------------------------------------------------- */
/* Coupon (secondary, collapsed)                                         */
/* -------------------------------------------------------------------- */

.ed-cart__actions {
	margin-top: var(--ed-space-md);
}

/* .coupon is on this element for WooCommerce's cart.js; undo WooCommerce's float/width for it. */
.ed-cart .ed-cart__actions .ed-cart-coupon.coupon {
	float: none;
	width: 100%;
	margin: 0;
	padding: var(--ed-space-2xs) 0 0;
	border-top: 1px solid var(--ed-color-border);
}

/* Inline error WooCommerce's cart.js puts under the coupon field. */
.ed-cart .ed-cart-coupon .coupon-error-notice {
	flex: 1 0 100%;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	color: var(--ed-color-error);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
}

.ed-cart .ed-cart-coupon .ed-cart-coupon__input.is-error {
	border-color: var(--ed-color-error);
}

.ed-cart-coupon__summary {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	cursor: pointer;
}

.ed-cart-coupon__summary:hover {
	color: var(--ed-color-link);
}

.ed-cart-coupon__summary:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: var(--ed-focus-outline-offset);
}

.ed-cart-coupon__body {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ed-space-xs);
	padding-bottom: var(--ed-space-xs);
}

.ed-cart .ed-cart-coupon__input {
	flex: 1 1 12rem;
	min-width: 0;
	height: 2.75rem;
	padding: 0 var(--ed-space-sm);
	background-color: var(--ed-color-surface);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-md);
	color: var(--ed-color-text);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
}

.ed-cart .ed-cart-coupon__input:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: 1px;
}

.ed-cart .ed-cart-coupon__apply {
	flex: 0 0 auto;
	min-height: 2.75rem;
	padding: 0 var(--ed-space-md);
	background: none;
	border: 1px solid var(--ed-color-heading);
	border-radius: var(--ed-radius-full);
	color: var(--ed-color-heading);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--ed-transition-fast), color var(--ed-transition-fast);
}

.ed-cart .ed-cart-coupon__apply:hover {
	background-color: var(--ed-color-heading);
	color: var(--ed-color-surface);
}

.ed-cart .ed-cart-coupon__apply:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: 2px;
}

/*
 * "Actualizar carrito" exists for WooCommerce's cart.js (and for visitors
 * without JS); cart-page.js clicks it after a quantity change. Kept out of
 * sight while it is disabled, shown when it can actually be used without JS
 * (a keyboard user tabbing to it also sees it).
 */
.ed-cart .ed-cart__update-btn {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.ed-cart .ed-cart__update-btn:focus {
	position: static;
	width: auto;
	height: auto;
	margin: var(--ed-space-xs) 0 0;
	padding: var(--ed-space-2xs) var(--ed-space-md);
	overflow: visible;
	clip: auto;
	background: var(--ed-color-surface);
	border: 1px solid var(--ed-color-heading);
	border-radius: var(--ed-radius-full);
	font-family: var(--ed-font-body);
}

/* Vaciar carrito — quiet secondary action under the list. */
.ed-cart .ed-cart-clear {
	display: inline-flex;
	align-items: center;
	gap: var(--ed-space-2xs);
	min-height: 44px;
	margin-top: var(--ed-space-2xs);
	padding: 0;
	background: none;
	border: 0;
	color: var(--ed-color-muted);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
	transition: color var(--ed-transition-fast);
}

.ed-cart .ed-cart-clear svg {
	flex: none;
	width: 18px;
	height: 16px;
}

.ed-cart .ed-cart-clear:hover {
	color: var(--ed-color-error);
}

.ed-cart .ed-cart-clear:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: 2px;
}

/* -------------------------------------------------------------------- */
/* Order summary                                                         */
/* -------------------------------------------------------------------- */

.ed-cart__aside {
	min-width: 0;
}

.ed-cart .cart-collaterals .cart_totals {
	padding: var(--ed-space-md);
	background-color: var(--ed-color-surface-alt);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-lg);
}

@media (min-width: 720px) {
	.ed-cart .cart-collaterals .cart_totals {
		padding: var(--ed-space-lg);
	}
}

.ed-cart .ed-cart-summary__title {
	margin: 0 0 var(--ed-space-sm);
	font-family: var(--ed-font-heading);
	font-size: var(--ed-font-size-lg);
	font-weight: 600;
	line-height: var(--ed-line-height-heading);
}

/* Item count + free-shipping message: supporting information, quieter than TOTAL and the CTA. */
.ed-cart .ed-cart-summary__count {
	margin: calc(var(--ed-space-2xs) * -1) 0 var(--ed-space-xs);
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
}

.ed-cart .ed-cart-summary__free {
	display: flex;
	align-items: flex-start;
	gap: var(--ed-space-2xs);
	margin: 0 0 var(--ed-space-sm);
	padding: var(--ed-space-xs) var(--ed-space-sm);
	background-color: var(--ed-color-surface);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-md);
	color: var(--ed-color-text);
	font-size: var(--ed-font-size-sm);
	line-height: 1.4;
}

.ed-cart .ed-cart-summary__free svg {
	flex: none;
	width: 18px;
	height: 16px;
	margin-top: 1px;
	color: var(--ed-color-muted);
}

.ed-cart .ed-cart-summary__free strong {
	color: var(--ed-color-heading);
	font-weight: 600;
	white-space: nowrap;
}

/* Reached: same box, the accent only on the tick. */
.ed-cart .ed-cart-summary__free.is-reached {
	color: var(--ed-color-heading);
	font-weight: 600;
}

.ed-cart .ed-cart-summary__free.is-reached svg {
	color: var(--ed-color-primary);
}

.woocommerce-cart .ed-cart .cart_totals table.ed-cart-totals__table {
	display: block;
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tbody {
	display: block;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--ed-space-2xs) var(--ed-space-sm);
	padding: var(--ed-space-xs) 0;
	border-top: 1px solid var(--ed-color-border);
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr:first-child {
	border-top: 0;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table th,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table td {
	display: block;
	width: auto;
	padding: 0;
	background: none;
	border: 0;
	color: var(--ed-color-text);
	font-size: var(--ed-font-size-sm);
	font-weight: 400;
	text-align: left;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table td {
	text-align: right;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table td::before {
	content: none;
}

/* Shipping row: methods stack under the label, full width. */
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.shipping,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.woocommerce-shipping-totals {
	flex-direction: column;
	align-items: stretch;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.shipping td,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.woocommerce-shipping-totals td {
	text-align: left;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table #shipping_method {
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table #shipping_method li {
	display: flex;
	align-items: baseline;
	gap: var(--ed-space-2xs);
	margin: 0;
	padding: var(--ed-space-3xs) 0;
	font-size: var(--ed-font-size-sm);
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table #shipping_method input {
	margin: 0;
	flex: none;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .woocommerce-shipping-destination,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .woocommerce-shipping-calculator {
	margin: var(--ed-space-2xs) 0 0;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-xs);
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .shipping-calculator-button {
	color: var(--ed-color-link);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .shipping-calculator-form input,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .shipping-calculator-form select {
	width: 100%;
	min-height: 2.5rem;
	margin-bottom: var(--ed-space-2xs);
	padding: 0 var(--ed-space-xs);
	background-color: var(--ed-color-surface);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-md);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .shipping-calculator-form button {
	min-height: 2.5rem;
	padding: 0 var(--ed-space-md);
	background: none;
	border: 1px solid var(--ed-color-heading);
	border-radius: var(--ed-radius-full);
	color: var(--ed-color-heading);
	font-family: var(--ed-font-body);
	font-weight: 600;
	cursor: pointer;
}

/* One rate (the normal case): "Envío ......... 12,04 €" / "Envío ......... Gratis" on a single line. */
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.ed-cart-shipping--single {
	flex-direction: row;
	align-items: baseline;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.ed-cart-shipping--single td {
	text-align: right;
}

/* Total */
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.order-total {
	align-items: flex-end;
	padding-top: var(--ed-space-sm);
	border-top: 2px solid var(--ed-color-heading);
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.order-total th {
	color: var(--ed-color-heading);
	font-size: var(--ed-font-size-base);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.order-total td {
	color: var(--ed-color-heading);
	font-size: 1.5rem;
	font-weight: 600;
	line-height: 1.2;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.order-total small,
.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table tr.order-total .includes_tax {
	display: block;
	margin-top: 2px;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-xs);
	font-weight: 400;
}

.woocommerce-cart .ed-cart .cart_totals .ed-cart-totals__table .woocommerce-remove-coupon {
	margin-inline-start: var(--ed-space-2xs);
	color: var(--ed-color-link);
	font-size: var(--ed-font-size-xs);
}

/* Estimated dispatch date: informative, quieter than TOTAL and the CTA. */
.ed-cart .ed-cart-summary__dispatch {
	margin: var(--ed-space-sm) 0 0;
	padding-top: var(--ed-space-sm);
	border-top: 1px solid var(--ed-color-border);
}

.ed-cart .ed-cart-summary__dispatch p {
	margin: 0;
}

.ed-cart .ed-cart-summary__dispatch-label {
	display: flex;
	align-items: center;
	gap: var(--ed-space-2xs);
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-xs);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ed-cart .ed-cart-summary__dispatch-label svg {
	flex: none;
	width: 16px;
	height: 16px;
	color: var(--ed-color-primary);
}

.ed-cart .ed-cart-summary__dispatch-date {
	margin-top: 2px;
	color: var(--ed-color-heading);
	font-size: var(--ed-font-size-base);
	font-weight: 600;
	line-height: 1.3;
}

.ed-cart .ed-cart-summary__dispatch-note {
	margin-top: 2px;
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-xs);
	line-height: 1.45;
}

/* Checkout CTA */
.ed-cart .wc-proceed-to-checkout {
	margin: var(--ed-space-md) 0 0;
	padding: 0;
}

.ed-cart .cart_totals a.ed-cart-checkout.button,
.ed-cart .cart_totals a.ed-cart-checkout.button:hover {
	display: block;
	width: 100%;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	box-shadow: none;
	color: inherit;
	font-size: inherit;
	line-height: inherit;
}

.ed-cart .ed-cart-checkout .wp-block-button__link {
	width: 100%;
	min-height: 3.25rem;
	font-size: var(--ed-font-size-base);
}

/* -------------------------------------------------------------------- */
/* Empty cart                                                            */
/* -------------------------------------------------------------------- */

.ed-cart-empty {
	max-width: 32rem;
	margin: var(--ed-space-lg) auto var(--ed-space-xl);
	padding: var(--ed-space-xl) var(--ed-space-md);
	background-color: var(--ed-color-surface-alt);
	border: 1px solid var(--ed-color-border);
	border-radius: var(--ed-radius-lg);
	text-align: center;
}

.ed-cart-empty__icon {
	display: block;
	margin-inline: auto;
	width: 48px;
	height: 44px;
	margin-bottom: var(--ed-space-sm);
	color: var(--ed-color-muted);
}

/* WooCommerce prints the message as a blue .woocommerce-info notice; here it is the empty-state heading. */
.woocommerce-cart .ed-cart-empty .wc-empty-cart-message,
.woocommerce-cart .ed-cart-empty .cart-empty,
.woocommerce-cart .ed-cart-empty .woocommerce-info,
.woocommerce-cart .ed-cart-empty .wc-block-components-notice-banner {
	margin: 0 0 var(--ed-space-2xs);
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	color: var(--ed-color-heading);
	font-family: var(--ed-font-heading);
	font-size: var(--ed-font-size-lg);
	font-weight: 600;
	line-height: var(--ed-line-height-heading);
	text-align: center;
}

.woocommerce-cart .ed-cart-empty .cart-empty::before,
.woocommerce-cart .ed-cart-empty .woocommerce-info::before {
	display: none;
	content: none;
}

/* The message is a WooCommerce notice banner (icon + content); show only its text as the heading. */
.woocommerce-cart .ed-cart-empty .wc-block-components-notice-banner {
	display: block;
}

.woocommerce-cart .ed-cart-empty .wc-block-components-notice-banner > svg {
	display: none;
}

.woocommerce-cart .ed-cart-empty .wc-block-components-notice-banner__content {
	padding: 0;
	color: inherit;
	font: inherit;
}

.ed-cart-empty__text {
	margin: 0 0 var(--ed-space-md);
	color: var(--ed-color-muted);
}

.ed-cart-empty__cta {
	display: inline-block;
}

/* -------------------------------------------------------------------- */
/* Remove-item confirmation dialog                                       */
/* -------------------------------------------------------------------- */

html.ed-cart-modal-open {
	overflow: hidden;
}

/* Above the sticky header, the WhatsApp bubble and the back-to-top button. */
.ed-cart-modal {
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--ed-space-sm);
}

.ed-cart-modal[hidden] {
	display: none;
}

.ed-cart-modal__backdrop {
	position: absolute;
	inset: 0;
	background-color: rgba(16, 19, 20, 0.55);
}

.ed-cart-modal__dialog {
	position: relative;
	width: 100%;
	max-width: 26rem;
	max-height: calc(100dvh - 2rem);
	overflow-y: auto;
	padding: var(--ed-space-lg) var(--ed-space-md) var(--ed-space-md);
	background-color: var(--ed-color-surface);
	border-radius: var(--ed-radius-lg);
	box-shadow: var(--ed-shadow-lg);
	text-align: center;
}

.ed-cart-modal__dialog:focus {
	outline: none;
}

.ed-cart .ed-cart-modal__title {
	margin: 0 0 var(--ed-space-xs);
	padding-inline: var(--ed-space-md);
	font-family: var(--ed-font-heading);
	font-size: var(--ed-font-size-lg);
	font-weight: 600;
	line-height: var(--ed-line-height-heading);
}

.ed-cart-modal__text {
	margin: 0 0 var(--ed-space-md);
	color: var(--ed-color-muted);
	font-size: var(--ed-font-size-sm);
}

.ed-cart-modal__x {
	position: absolute;
	top: var(--ed-space-2xs);
	right: var(--ed-space-2xs);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	background: none;
	border: 0;
	border-radius: var(--ed-radius-full);
	color: var(--ed-color-muted);
	cursor: pointer;
}

.ed-cart-modal__x svg {
	width: 16px;
	height: 16px;
}

.ed-cart-modal__x:hover {
	background-color: var(--ed-color-surface-alt);
	color: var(--ed-color-heading);
}

.ed-cart-modal__actions {
	display: flex;
	flex-direction: column-reverse;
	gap: var(--ed-space-xs);
}

@media (min-width: 480px) {
	.ed-cart-modal__actions {
		flex-direction: row;
	}

	.ed-cart-modal__btn {
		flex: 1 1 0;
	}
}

.ed-cart .ed-cart-modal__btn {
	min-height: 3rem;
	padding: 0 var(--ed-space-md);
	border-radius: var(--ed-radius-full);
	font-family: var(--ed-font-body);
	font-size: var(--ed-font-size-sm);
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--ed-transition-fast), color var(--ed-transition-fast);
}

.ed-cart .ed-cart-modal__btn--cancel {
	background: none;
	border: 1px solid var(--ed-color-heading);
	color: var(--ed-color-heading);
}

.ed-cart .ed-cart-modal__btn--cancel:hover {
	background-color: var(--ed-color-surface-alt);
}

/* White on --ed-color-error (#c6402c) is ~5:1. */
.ed-cart .ed-cart-modal__btn--confirm {
	background-color: var(--ed-color-error);
	border: 1px solid var(--ed-color-error);
	color: #fff;
}

.ed-cart .ed-cart-modal__btn--confirm:hover {
	background-color: #a83322;
	border-color: #a83322;
}

.ed-cart-modal__x:focus-visible,
.ed-cart .ed-cart-modal__btn:focus-visible {
	outline: var(--ed-focus-outline);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.ed-cart-item__details-btn svg,
	.ed-cart-qty__btn,
	.ed-cart .ed-cart-item__remove-link {
		transition: none;
	}
}
