/* Cart Block only. WooCommerce owns fields, requests, limits and totals. */
.cd-cart-page {
	padding-block: var(--cd-space-8) var(--cd-space-12);
	--wc-form-color-text: var(--cd-color-text);
	--wc-form-color-background: var(--cd-color-surface);
	--wc-form-border-radius: var(--cd-radius-sm);
	--wc-separator-color: color-mix(in srgb, var(--cd-color-border) 45%, transparent);
}
.cd-cart-heading {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--cd-space-3);
	margin-bottom: var(--cd-space-8);
}
.cd-cart-heading h1 { margin: 0; }
.cd-cart-heading a { color: var(--cd-color-muted); font-size: var(--cd-font-sm); }
.cd-cart-page .wc-block-components-sidebar-layout {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	gap: var(--cd-space-8);
	align-items: start;
}
.cd-cart-page .wc-block-components-sidebar-layout > :is(.wc-block-components-main, .wc-block-components-sidebar) {
	width: auto;
	min-width: 0;
	padding: 0;
	margin: 0;
}
.cd-cart-page .wc-block-components-sidebar-layout > .wc-block-components-sidebar {
	position: sticky;
	top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--cd-space-6));
	padding: var(--cd-space-6);
	background: var(--cd-color-surface);
	border-radius: var(--cd-radius-card);
	box-shadow: var(--cd-shadow-raised);
}
.cd-cart-page .wc-block-cart .wc-block-cart__totals-title {
	display: block;
	margin: 0 0 var(--cd-space-4);
	padding: 0;
	font-size: var(--cd-font-lg);
	text-transform: none;
}
.cd-cart-page .wc-block-cart table.wc-block-cart-items { display: block; width: 100%; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items thead { display: none; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items tbody { display: grid; gap: var(--cd-space-4); }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row {
	display: grid;
	grid-template-columns: 7rem minmax(0, 1fr) auto;
	gap: var(--cd-space-4);
	padding: var(--cd-space-4);
	border: 0;
	border-radius: var(--cd-radius-card);
	background: var(--cd-color-surface);
	box-shadow: var(--cd-shadow-raised-soft);
}
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row > td { min-width: 0; padding: 0; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__image { grid-area: 1 / 1; width: auto; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__product { grid-area: 1 / 2; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__total { grid-area: 1 / 3; font-weight: var(--cd-weight-semibold); }
.cd-cart-page .wc-block-cart-item__image :is(a, img) {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	border-radius: calc(var(--cd-radius-card) - var(--cd-space-4));
	background: var(--cd-color-background);
	object-fit: contain;
	overflow: hidden;
}
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__image img { height: auto; aspect-ratio: 1; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-components-product-name {
	color: var(--cd-color-text);
	font-size: var(--cd-font-md);
	font-weight: var(--cd-weight-semibold);
	text-decoration: none;
	overflow-wrap: anywhere;
}
.cd-cart-page .wc-block-components-product-metadata { color: var(--cd-color-muted); font-size: var(--cd-font-sm); }
.cd-cart-page .wc-block-components-product-metadata__description { display: none; }
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__quantity {
	flex-wrap: wrap;
	gap: var(--cd-space-3);
	padding: var(--cd-space-2) 0 0;
}
.cd-cart-page .wc-block-components-quantity-selector {
	margin: 0;
	min-height: var(--cd-control-size);
	border: 0;
	border-radius: var(--cd-radius-sm);
	background: var(--cd-color-background);
	box-shadow: var(--cd-shadow-inset);
}
.cd-cart-page .wc-block-components-quantity-selector::after { border: 0; }
.cd-cart-page .wc-block-components-quantity-selector :is(input, button) { min-height: var(--cd-control-size); color: var(--cd-color-text); }
/* Woo's inset :focus shadow also persists after pointer clicks. */
.cd-cart-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:focus:not(:focus-visible) {
	outline: none;
	box-shadow: none;
}
.cd-cart-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:focus-visible {
	box-shadow: none;
	border-radius: var(--cd-radius-sm);
	outline: var(--cd-focus-width) solid var(--cd-focus-color);
	outline-offset: calc(-1 * var(--cd-focus-width));
}
.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__quantity .wc-block-cart-item__remove-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--cd-control-size);
	height: var(--cd-control-size);
	color: var(--cd-color-muted);
	border-radius: var(--cd-radius-sm);
}
.cd-cart-page .wc-block-components-totals-wrapper { padding-block: var(--cd-space-4); }
.cd-cart-page .wc-block-components-totals-item,
.cd-cart-page .wc-block-components-panel { padding-inline: 0; }
.cd-cart-page .wc-block-components-totals-footer-item { font-size: var(--cd-font-lg); }
.cd-cart-page .wc-block-components-totals-coupon__button {
	border-radius: var(--cd-radius-sm);
	background: var(--cd-color-background);
	color: var(--cd-color-text);
	box-shadow: var(--cd-shadow-raised-soft);
}
/* The theme bar includes the live total; keep the native CTA in document flow. */
.cd-cart-page .wc-block-cart .wc-block-cart__submit-container,
.cd-cart-page .wc-block-cart .wc-block-cart__submit-container--sticky {
	position: static;
	display: block;
	width: 100%;
	padding: 0;
	box-shadow: none;
	background: transparent !important; /* Woo sets an inline sticky background. */
	z-index: auto;
}
.cd-cart-page .wc-block-cart .wc-block-cart__submit-container::before { display: none; }
.cd-cart-page .wc-block-cart__submit-button {
	min-height: var(--cd-control-size);
	padding: var(--cd-space-3) var(--cd-space-4);
	border: 1px solid var(--cd-color-primary-border);
	border-radius: var(--cd-radius-md);
	background: var(--cd-gradient-primary);
	color: var(--cd-color-surface);
	box-shadow: var(--cd-shadow-primary);
	text-decoration: none;
	font-weight: var(--cd-weight-semibold);
}
.cd-cart-page .wc-block-cart__submit-button:hover { background: var(--cd-gradient-primary-hover); box-shadow: var(--cd-shadow-primary-hover); }
.cd-cart-page .wc-block-cart__submit-button:active { background: var(--cd-gradient-primary-active); box-shadow: var(--cd-shadow-primary-inset); }
.cd-cart-page :is(a, button, input):focus-visible { outline: var(--cd-focus-width) solid var(--cd-focus-color); outline-offset: var(--cd-focus-offset); }
.cd-cart-page .cd-cart-note { margin: var(--cd-space-4) 0 0; color: var(--cd-color-muted); font-size: var(--cd-font-sm); }
.cd-cart-page .wc-block-components-notice-banner { border-radius: var(--cd-radius-md); box-shadow: var(--cd-shadow-raised); }
.cd-cart-page .wc-block-components-notice-banner.is-success { background: var(--cd-surface-raised); color: var(--cd-color-success); }
.cd-cart-page .wc-block-components-notice-banner.is-error { background: var(--cd-surface-raised); color: var(--cd-color-error-text); }
.cd-cart-page .wc-block-components-notice-banner.is-info { background: var(--cd-surface-raised); color: var(--cd-color-text); }
.cd-cart-empty { padding: var(--cd-space-12) var(--cd-space-6); background: var(--cd-color-surface); border-radius: var(--cd-radius-card); box-shadow: var(--cd-shadow-raised); text-align: center; }
.cd-cart-empty p { margin-block: var(--cd-space-4) var(--cd-space-6); color: var(--cd-color-muted); }
.cd-cart-sticky { display: none; }
@media (max-width: 55rem) {
	.cd-cart-page .wc-block-components-sidebar-layout { grid-template-columns: minmax(0, 1fr); gap: var(--cd-space-6); }
	.cd-cart-page .wc-block-components-sidebar-layout > .wc-block-components-sidebar { position: static; }
}
@media (max-width: 40rem) {
	.cd-cart-page { padding-bottom: calc(var(--cd-space-8) + var(--cd-cart-sticky-height, 0px)); }
	.cd-cart-heading { margin-bottom: var(--cd-space-6); }
	.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row {
		grid-template-columns: 5rem minmax(0, 1fr);
		gap: var(--cd-space-3);
		padding: var(--cd-space-3);
	}
	.cd-cart-page .wc-block-cart table.wc-block-cart-items .wc-block-cart-item__total { grid-area: 2 / 2; justify-content: flex-start; text-align: left; }
	.cd-cart-page .wc-block-cart-item__total-price-and-sale-badge-wrapper { align-items: flex-start; }
	.cd-cart-page .wc-block-components-sidebar-layout > .wc-block-components-sidebar { padding: var(--cd-space-4); }
	.cd-cart-sticky:not([hidden]) {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--cd-space-3);
		position: fixed;
		inset: auto 0 0;
		z-index: 40;
		padding: var(--cd-space-3) var(--cd-gutter) calc(var(--cd-space-3) + env(safe-area-inset-bottom));
		background: var(--cd-color-surface);
		box-shadow: var(--cd-shadow-raised);
	}
	.cd-cart-sticky > div { min-width: 0; }
	.cd-cart-sticky span { display: block; font-size: var(--cd-font-sm); color: var(--cd-color-muted); }
	.cd-cart-sticky strong { display: block; overflow-wrap: anywhere; }
	.cd-cart-sticky .cd-button { flex-shrink: 0; }
	/* Native notices stay above the checkout bar and its measured safe-area padding. */
	.cd-cart-page .wc-block-components-notices__snackbar { bottom: calc(var(--cd-cart-sticky-height, 0px) + var(--cd-space-3)); }
}

/* Native desktop Cart Block adds borders to the table and every td.
 * Remove only those separators inside item surfaces, not summary dividers. */
@media (min-width: 40.001rem) {
	.cd-cart-page .wc-block-cart__main table.wc-block-cart-items,
	.cd-cart-page .wc-block-cart__main table.wc-block-cart-items .wc-block-cart-items__row > td { border: 0; }
}

.cd-cart-page .wc-block-components-text-input input { background: var(--cd-surface-inset); box-shadow: var(--cd-shadow-inset); }
