/**
 * Cart page — WooCommerce Cart Block + classic cart fallbacks.
 * Do not change <tr>/<td> display modes — Blocks rely on table layout for events.
 */

/* —— Page shell —— */

.dc-main--cart {
	padding-block: var(--dc-space-6) var(--dc-space-12);
}

.dc-page__content--cart {
	max-width: none;
}

.dc-page__content--cart > .woocommerce,
.dc-page__content--cart > .wp-block-woocommerce-cart {
	max-width: none;
}

body.woocommerce-cart .entry-title,
body.woocommerce-cart .wp-block-post-title,
body.woocommerce-cart h1.wp-block-heading {
	font-size: clamp(1.75rem, 3vw, var(--dc-font-size-2xl));
	line-height: var(--dc-line-height-tight);
	margin: 0 0 var(--dc-space-6);
	color: var(--dc-colour-text);
}

/* Prefer Blocks filled-cart layout (items + sticky totals).
 * Grid — not flex-grow — so the items column cannot stretch and push the buy box away.
 */
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-cart .wp-block-woocommerce-filled-cart-block {
	width: 100%;
	max-width: none;
}

body.woocommerce-cart .wp-block-woocommerce-filled-cart-block {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--dc-space-6);
	align-items: start;
}

/* Neutralize Woo Blocks flex wrappers so theme grid owns the columns. */
body.woocommerce-cart .wp-block-woocommerce-filled-cart-block .wc-block-cart,
body.woocommerce-cart .wp-block-woocommerce-filled-cart-block .wc-block-cart__main,
body.woocommerce-cart .wp-block-woocommerce-filled-cart-block .wc-block-cart__sidebar {
	display: contents;
	width: auto;
	max-width: none;
	margin: 0;
	padding: 0;
	flex: none;
}

body.woocommerce-cart .wp-block-woocommerce-cart-items-block,
body.woocommerce-cart .wp-block-woocommerce-cart-totals-block {
	flex: none;
	width: 100%;
	min-width: 0;
	height: auto;
}

body.woocommerce-cart .wp-block-woocommerce-cart-items-block {
	overflow-x: auto;
}

body.woocommerce-cart .wp-block-woocommerce-cart-totals-block {
	max-width: none;
	padding: var(--dc-space-5);
	background: var(--dc-colour-surface);
	border: 1px solid var(--dc-colour-border);
	border-radius: var(--dc-radius-lg);
	position: static;
}

body.woocommerce-cart .wp-block-woocommerce-cart-cross-sells-block:not(:has(img, .wc-block-components-product-name)) {
	display: none;
}

@media (min-width: 1024px) {
	body.woocommerce-cart .wp-block-woocommerce-filled-cart-block {
		grid-template-columns: minmax(0, 1fr) minmax(22rem, 26rem);
		gap: var(--dc-space-10);
	}

	body.woocommerce-cart .wp-block-woocommerce-cart-totals-block {
		position: sticky;
		top: calc(var(--dc-space-6) + 4.75rem);
	}
}

/* —— Line items (keep table semantics) —— */

.wc-block-cart-items {
	width: 100%;
	border-collapse: collapse;
	border: 0;
}

.wc-block-cart-items__header {
	font-size: var(--dc-font-size-sm);
	color: var(--dc-colour-muted);
}

.wc-block-cart-items__header th {
	padding: var(--dc-space-3) var(--dc-space-2);
	border-bottom: 1px solid var(--dc-colour-border);
	font-weight: 600;
	text-align: left;
}

@media (max-width: 1023px) {
	.wc-block-cart-items__header {
		display: none;
	}
}

.wc-block-cart-items__row td {
	padding: var(--dc-space-5) var(--dc-space-2);
	border-bottom: 1px solid var(--dc-colour-border);
	vertical-align: top;
}

.wc-block-cart-item__image img {
	width: 5rem;
	height: 5rem;
	object-fit: contain;
	border-radius: var(--dc-radius-md);
	background: var(--dc-colour-bg);
}

.wc-block-components-product-name {
	font-size: var(--dc-font-size-base);
	font-weight: 600;
	line-height: var(--dc-line-height-tight);
	color: var(--dc-colour-text);
	text-decoration: none;
}

.wc-block-components-product-name:hover {
	color: var(--dc-colour-brand);
	text-decoration: underline;
}

.wc-block-components-product-price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--dc-space-2);
	margin-top: var(--dc-space-2);
	font-size: var(--dc-font-size-sm);
	font-weight: 600;
	color: var(--dc-colour-text);
}

.wc-block-components-product-price del {
	font-weight: 500;
	color: var(--dc-colour-muted);
}

.wc-block-components-product-price ins {
	text-decoration: none;
	color: var(--dc-colour-brand);
}

.wc-block-components-product-badge {
	display: inline-flex;
	align-items: center;
	padding: 0.15rem 0.45rem;
	font-size: var(--dc-font-size-xs);
	font-weight: 600;
	border-radius: var(--dc-radius-sm);
	background: color-mix(in srgb, var(--dc-colour-success) 14%, var(--dc-colour-surface));
	color: var(--dc-colour-success);
}

/* Short descriptions belong on the PDP — hide so long copy cannot break rows. */
.wc-block-components-product-metadata__description {
	display: none !important;
}

.wc-block-components-product-details {
	margin: var(--dc-space-2) 0 0;
	padding: 0;
	list-style: none;
	font-size: var(--dc-font-size-sm);
	color: var(--dc-colour-muted);
	line-height: 1.4;
}

.wc-block-components-product-details li {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
}

.wc-block-cart-item__quantity {
	white-space: nowrap;
}

.wc-block-components-quantity-selector {
	display: inline-flex;
	align-items: center;
	vertical-align: middle;
	border: 1px solid var(--dc-colour-border);
	border-radius: var(--dc-radius-md);
	overflow: hidden;
	background: var(--dc-colour-surface);
}

.wc-block-components-quantity-selector__button {
	min-width: var(--dc-touch-target);
	min-height: var(--dc-touch-target);
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: var(--dc-colour-bg);
	color: var(--dc-colour-text);
	font: inherit;
	cursor: pointer;
}

.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input {
	width: 3rem;
	min-height: var(--dc-touch-target);
	margin: 0;
	padding: 0;
	border: 0;
	border-inline: 1px solid var(--dc-colour-border);
	border-radius: 0;
	background: var(--dc-colour-surface);
	color: var(--dc-colour-text);
	text-align: center;
	font: inherit;
	-moz-appearance: textfield;
}

.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input::-webkit-outer-spin-button,
.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input::-webkit-inner-spin-button {
	margin: 0;
	-webkit-appearance: none;
}

.wc-block-cart-item__remove-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: var(--dc-touch-target);
	min-height: var(--dc-touch-target);
	margin-inline-start: var(--dc-space-2);
	vertical-align: middle;
	font-size: var(--dc-font-size-sm);
	color: var(--dc-colour-muted);
	text-decoration: none;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

.wc-block-cart-item__remove-link:hover {
	color: var(--dc-colour-error);
	text-decoration: underline;
}

.wc-block-cart-item__total {
	font-size: var(--dc-font-size-base);
	font-weight: 700;
	color: var(--dc-colour-text);
	white-space: nowrap;
	text-align: right;
}

/* —— Totals + CTA ——
 * WooCommerce wraps each row in .wc-block-components-totals-wrapper with its own border.
 * Reset those, then draw a single line between adjacent sections.
 */

body.woocommerce-cart .wp-block-woocommerce-cart-totals-block :is(
	.wc-block-components-totals-wrapper,
	.wc-block-components-totals-coupon,
	.wc-block-components-panel,
	.wc-block-components-totals-item,
	.wc-block-components-totals-footer-item,
	.wp-block-woocommerce-cart-order-summary-block,
	.wp-block-woocommerce-cart-order-summary-heading-block,
	.wp-block-woocommerce-proceed-to-checkout-block
) {
	border: 0;
	box-shadow: none;
	margin-block: 0;
}

body.woocommerce-cart .wp-block-woocommerce-cart-totals-block .wc-block-components-totals-wrapper::before,
body.woocommerce-cart .wp-block-woocommerce-cart-totals-block .wc-block-components-totals-wrapper::after {
	content: none;
	display: none;
}

body.woocommerce-cart .wp-block-woocommerce-cart-order-summary-heading-block:empty {
	display: none;
}

body.woocommerce-cart .wp-block-woocommerce-cart-totals-block .wc-block-components-totals-wrapper + .wc-block-components-totals-wrapper {
	border-top: 1px solid var(--dc-colour-border);
	margin-top: var(--dc-space-4);
	padding-top: var(--dc-space-4);
}

.wc-block-components-panel__button {
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	font-weight: 600;
	color: var(--dc-colour-text);
	cursor: pointer;
}

.wc-block-components-totals-coupon__form {
	display: flex;
	align-items: stretch;
	gap: var(--dc-space-2);
	margin-top: var(--dc-space-3);
}

.wc-block-components-totals-coupon__input,
.wc-block-components-totals-coupon__input input {
	flex: 1 1 auto;
	width: 100%;
	min-height: var(--dc-touch-target);
	margin: 0;
	border-radius: var(--dc-radius-md);
}

.wc-block-components-totals-coupon__button.wc-block-components-button,
.wc-block-components-totals-coupon .wc-block-components-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	min-height: var(--dc-touch-target);
	padding: var(--dc-space-3) var(--dc-space-5);
	border: 2px solid transparent;
	border-radius: var(--dc-radius-md);
	background: var(--dc-colour-brand) !important;
	color: #fff !important;
	font-size: var(--dc-font-size-sm);
	font-weight: 600;
	line-height: 1;
	box-shadow: none;
	cursor: pointer;
}

.wc-block-components-totals-coupon__button.wc-block-components-button:hover,
.wc-block-components-totals-coupon .wc-block-components-button:hover {
	background: var(--dc-colour-brand-dark) !important;
	color: #fff !important;
}

.wc-block-components-totals-item,
.wc-block-components-totals-footer-item {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--dc-space-4);
	padding-block: var(--dc-space-2);
	font-size: var(--dc-font-size-base);
}

.wc-block-components-totals-footer-item {
	font-size: var(--dc-font-size-lg);
	font-weight: 700;
}

.wc-block-cart__submit-container {
	margin-top: var(--dc-space-5);
	padding-top: var(--dc-space-5);
	border-top: 1px solid var(--dc-colour-border);
}

.wc-block-cart__submit-button,
.wp-block-woocommerce-proceed-to-checkout-block .wc-block-components-button,
.wc-block-cart .wc-block-components-checkout-place-order-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: var(--dc-touch-target);
	padding: var(--dc-space-3) var(--dc-space-6);
	border: 0;
	border-radius: var(--dc-radius-md);
	background: var(--dc-colour-brand) !important;
	color: #fff !important;
	font-size: var(--dc-font-size-base);
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}

.wc-block-cart__submit-button:hover,
.wp-block-woocommerce-proceed-to-checkout-block .wc-block-components-button:hover {
	background: var(--dc-colour-brand-dark) !important;
	color: #fff !important;
}

/* —— Empty cart —— */

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--dc-space-4);
	max-width: 36rem;
	padding-block: var(--dc-space-4);
}

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title,
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block h2 {
	margin: 0;
	font-size: var(--dc-font-size-xl);
	line-height: var(--dc-line-height-tight);
	color: var(--dc-colour-text);
}

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__description,
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block p {
	margin: 0;
	color: var(--dc-colour-muted);
	font-size: var(--dc-font-size-base);
}

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-components-button,
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--dc-touch-target);
	padding: var(--dc-space-3) var(--dc-space-6);
	border: 0;
	border-radius: var(--dc-radius-md);
	background: var(--dc-colour-brand) !important;
	color: #fff !important;
	font-weight: 600;
	text-decoration: none;
}

body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-components-button:hover,
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-button__link:hover {
	background: var(--dc-colour-brand-dark) !important;
	color: #fff !important;
}

/* —— Classic cart fallback —— */

.woocommerce-cart .woocommerce-cart-form,
.woocommerce-cart .cart-collaterals {
	width: 100%;
	float: none;
	clear: both;
}

.woocommerce-cart-form {
	width: 100%;
}

.woocommerce-cart table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
}

.woocommerce-cart table.shop_table th {
	padding: var(--dc-space-3) 0;
	border-bottom: 1px solid var(--dc-colour-border);
	font-size: var(--dc-font-size-sm);
	font-weight: 600;
	color: var(--dc-colour-muted);
	text-align: left;
}

.woocommerce-cart table.shop_table td {
	padding: var(--dc-space-5) 0;
	border-bottom: 1px solid var(--dc-colour-border);
	vertical-align: top;
}

.woocommerce-cart table.shop_table .product-thumbnail img {
	width: 5rem;
	height: 5rem;
	object-fit: contain;
	border-radius: var(--dc-radius-md);
	background: var(--dc-colour-bg);
}

.woocommerce-cart table.shop_table .product-name a {
	font-weight: 600;
	text-decoration: none;
	color: var(--dc-colour-text);
}

.woocommerce-cart table.shop_table .product-name a:hover {
	color: var(--dc-colour-brand);
	text-decoration: underline;
}

.woocommerce-cart table.shop_table .product-name .description,
.woocommerce-cart table.shop_table .product-name .woocommerce-product-details__short-description,
.woocommerce-cart table.shop_table .product-name p:not(.backorder_notification) {
	display: none;
}

.woocommerce-cart .cart-collaterals {
	margin-top: var(--dc-space-6);
}

.woocommerce-cart .cart_totals {
	width: 100%;
	float: none;
	max-width: 26rem;
	margin-left: auto;
	padding: var(--dc-space-6);
	background: var(--dc-colour-surface);
	border: 1px solid var(--dc-colour-border);
	border-radius: var(--dc-radius-lg);
}

.woocommerce-cart .wc-proceed-to-checkout .checkout-button,
.woocommerce-cart a.checkout-button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: var(--dc-touch-target);
	padding: var(--dc-space-3) var(--dc-space-6);
	background: var(--dc-colour-brand) !important;
	color: #fff !important;
	border-radius: var(--dc-radius-md);
	font-weight: 600;
	text-decoration: none;
	text-align: center;
}
