.woocommerce-cart .freyza-site-main {
	background: var(--freyza-color-section);
}

.woocommerce-cart .entry-content {
	margin-inline: auto;
	max-width: min(1460px, calc(100vw - 32px));
	padding: clamp(36px, 5.5vw, 80px) 16px;
}

/* The page's own title heading ("Cart") is redundant with the "Your cart"
   heading this template renders — hide it rather than double-style it.
   Kadence renders it with the class freyza-entry__title, not the generic
   WooCommerce .entry-title (kept here too in case that ever changes). */
.woocommerce-cart .freyza-entry__title,
.woocommerce-cart .entry-title {
	display: none;
}

.woocommerce-cart h1 {
	color: var(--freyza-color-primary);
	font-size: clamp(2rem, 4.5vw, 3.75rem);
	letter-spacing: 0;
	line-height: 1.05;
	margin-bottom: var(--freyza-space-6);
}

/* Kadence (parent theme) injects a visually-intended-hidden "Cart Summary"
   heading into each cart item's markup for screen readers, but it renders
   fully visible here — this restores the standard visually-hidden
   treatment via child-theme CSS rather than touching parent theme files. */
.woocommerce-cart .cart-summary > h2 {
	border: 0;
	clip: rect(0, 0, 0, 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.woocommerce-cart .woocommerce {
	display: block;
}

.woocommerce-cart .freyza-cart-page {
	width: 100%;
}

.woocommerce-cart .freyza-cart-layout {
	align-items: start;
	display: grid;
	gap: clamp(28px, 3.4vw, 48px);
	width: 100%;
}

.woocommerce-cart .freyza-cart-items,
.woocommerce-cart .freyza-cart-summary,
.woocommerce-cart .freyza-cart-form {
	min-width: 0;
}

.woocommerce-cart .freyza-cart-header {
	margin-bottom: var(--freyza-space-5);
}

.woocommerce-cart .freyza-cart-header h1 {
	color: var(--freyza-color-primary);
	font-size: clamp(1.9rem, 3vw, 2.375rem);
	font-weight: 800;
	line-height: 1.1;
	margin: 0;
}

/* Column header row (Product / Quantity / Total), matching the row grid
   below via the same fixed column widths. */
.woocommerce-cart .freyza-cart-list__columns {
	border-bottom: 1px solid var(--freyza-color-border);
	color: var(--freyza-color-muted);
	display: flex;
	font-family: var(--freyza-font-mono);
	font-size: 0.72rem;
	gap: clamp(16px, 2vw, 20px);
	letter-spacing: 0.08em;
	padding-bottom: var(--freyza-space-3);
	text-transform: uppercase;
}

.woocommerce-cart .freyza-cart-list__column-label {
	flex: 1 1 auto;
}

.woocommerce-cart .freyza-cart-list__column-label--quantity {
	flex: 0 0 140px;
	text-align: center;
}

.woocommerce-cart .freyza-cart-list__column-label--total {
	flex: 0 0 120px;
	text-align: right;
}

.woocommerce-cart .freyza-cart-list {
	display: flex;
	flex-direction: column;
}

.woocommerce-cart .freyza-cart-card {
	align-items: flex-start;
	border-bottom: 1px solid var(--freyza-color-border);
	display: flex;
	gap: clamp(16px, 2vw, 20px);
	padding: clamp(20px, 2.6vw, 28px) 0;
	transition: opacity 220ms ease, max-height 220ms ease, padding 220ms ease, transform 220ms ease;
}

.woocommerce-cart .freyza-cart-card.freyza-cart-item--removing {
	max-height: 0;
	opacity: 0.35;
	overflow: hidden;
	padding-block: 0;
	transform: translateX(10px) scale(0.99);
}

.woocommerce-cart .freyza-cart-card.freyza-cart-item--quantity-changed {
	background: linear-gradient(90deg, rgba(47, 111, 94, 0.045), transparent 40%);
}

.woocommerce-cart .freyza-cart-card__media,
.woocommerce-cart .freyza-cart-card__media a {
	display: block;
	flex-shrink: 0;
}

.woocommerce-cart .freyza-cart-card__media img {
	background: var(--freyza-color-surface-soft);
	border: 1px solid var(--freyza-color-border);
	border-radius: 8px;
	display: block;
	height: 96px;
	object-fit: contain;
	padding: 10px;
	width: 96px;
}

.woocommerce-cart .freyza-cart-card__details {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.woocommerce-cart .freyza-cart-card__eyebrow {
	color: var(--freyza-color-muted);
	font-family: var(--freyza-font-mono);
	font-size: 0.68rem;
	letter-spacing: 0.1em;
	margin: 0;
	text-transform: uppercase;
}

.woocommerce-cart .freyza-cart-card__details h3 {
	color: var(--freyza-color-primary);
	font-size: 1.06rem;
	letter-spacing: 0;
	line-height: 1.3;
	margin: 0;
	max-width: 36rem;
}

.woocommerce-cart .freyza-cart-card__details h3 a {
	color: inherit;
	font-weight: 700;
	text-decoration: none;
}

.woocommerce-cart .freyza-cart-card__details h3 a:hover,
.woocommerce-cart .freyza-cart-card__details h3 a:focus-visible {
	color: var(--freyza-color-secondary);
}

.woocommerce-cart .freyza-cart-card__details .variation,
.woocommerce-cart .freyza-cart-card__details .wc-item-meta {
	color: var(--freyza-color-muted);
	font-size: 0.82rem;
	line-height: 1.5;
	margin: 0;
}

.woocommerce-cart .freyza-cart-card__details .backorder_notification {
	color: var(--freyza-color-warning);
	font-size: 0.85rem;
	font-weight: 700;
	margin: 2px 0 0;
}

.woocommerce-cart .freyza-cart-card__unit-price {
	color: var(--freyza-color-muted);
	font-family: var(--freyza-font-mono);
	font-size: 0.82rem;
	margin: 4px 0 0;
}

.woocommerce-cart .freyza-cart-card__remove {
	margin-top: 4px;
}

.woocommerce-cart .freyza-cart-card__remove a.remove {
	color: var(--freyza-color-muted) !important;
	font-size: 0.8rem;
	text-decoration: underline;
	text-decoration-color: var(--freyza-color-border);
	text-underline-offset: 3px;
	transition: color 160ms ease, text-decoration-color 160ms ease;
}

.woocommerce-cart .freyza-cart-card__remove a.remove:hover,
.woocommerce-cart .freyza-cart-card__remove a.remove:focus-visible {
	color: var(--freyza-color-error) !important;
	text-decoration-color: var(--freyza-color-error);
}

/* Invisible on desktop — lets .freyza-cart-card__quantity and __subtotal
   keep acting as direct flex items of .freyza-cart-card. Mobile turns this
   into a real flex row so quantity + line total share one line. */
.woocommerce-cart .freyza-cart-card__meta {
	display: contents;
}

.woocommerce-cart .freyza-cart-card__quantity {
	flex: 0 0 140px;
	padding-top: 2px;
}

.woocommerce-cart .freyza-cart-card__quantity .quantity {
	align-items: center;
	background: var(--freyza-color-surface);
	border: 1px solid var(--freyza-color-border);
	border-radius: var(--freyza-radius-button);
	display: inline-flex;
	gap: 2px;
	height: 44px;
	justify-content: center;
	margin-inline: auto;
	padding: 0 4px;
	width: 100%;
}

.woocommerce-cart .quantity input.qty {
	-moz-appearance: textfield;
	appearance: textfield;
	background: transparent;
	border: 0;
	color: var(--freyza-color-primary);
	font-family: var(--freyza-font-mono, monospace);
	font-size: 0.92rem;
	font-variant-numeric: tabular-nums;
	height: 38px;
	min-width: 0;
	order: 2;
	padding: 0;
	text-align: center;
	width: 32px;
}

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

.woocommerce-cart .freyza-qty-step {
	appearance: none;
	background: transparent;
	border: 0;
	border-radius: 999px;
	color: var(--freyza-color-muted);
	cursor: pointer;
	display: grid;
	font-size: 1.05rem;
	height: 34px;
	line-height: 1;
	place-items: center;
	transition: background-color 120ms ease, color 120ms ease;
	width: 34px;
}

.woocommerce-cart .freyza-qty-step:hover,
.woocommerce-cart .freyza-qty-step:focus-visible {
	background: var(--freyza-color-section);
	color: var(--freyza-color-primary);
}

.woocommerce-cart .freyza-qty-step[data-step="minus"] {
	order: 1;
}

.woocommerce-cart .freyza-qty-step[data-step="plus"] {
	order: 3;
}

.woocommerce-cart .freyza-cart-card__subtotal {
	color: var(--freyza-color-primary);
	flex: 0 0 120px;
	font-family: var(--freyza-font-mono);
	font-size: 1rem;
	padding-top: 8px;
	text-align: right;
	white-space: nowrap;
}

.woocommerce-cart .freyza-cart-actions {
	align-items: center;
	display: flex;
	gap: var(--freyza-space-4);
	justify-content: space-between;
	margin-top: var(--freyza-space-5);
}

.woocommerce-cart .freyza-cart-continue {
	color: var(--freyza-color-secondary);
	font-size: 0.9rem;
}

.woocommerce-cart .freyza-cart-continue:hover,
.woocommerce-cart .freyza-cart-continue:focus-visible {
	color: var(--freyza-color-primary);
}

.woocommerce-cart .freyza-cart-update {
	border-radius: var(--freyza-radius-button);
	font-weight: 700;
	min-height: 44px;
	padding-inline: 20px;
	transition: background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, opacity 180ms ease, transform 180ms ease;
}

.woocommerce-cart .freyza-cart-update:not(:disabled):hover,
.woocommerce-cart .freyza-cart-update:not(:disabled):focus-visible {
	box-shadow: var(--freyza-focus-ring);
	transform: translateY(-1px);
}

.woocommerce-cart .freyza-cart-update:disabled {
	cursor: not-allowed;
	opacity: 0.52;
}

/* Order summary — one consolidated card: title, discount code, then
   WooCommerce's own cart totals/checkout button underneath. */
.woocommerce-cart .freyza-cart-summary-card {
	background: var(--freyza-color-surface);
	border: 1px solid var(--freyza-color-border);
	border-radius: var(--freyza-radius-card);
	display: flex;
	flex-direction: column;
	gap: var(--freyza-space-5);
	padding: clamp(24px, 2.8vw, 32px);
}

.woocommerce-cart .freyza-cart-summary-card h2 {
	color: var(--freyza-color-primary);
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0;
}

.woocommerce-cart .freyza-cart-coupon-form {
	display: block;
}

.woocommerce-cart .freyza-cart-coupon__controls {
	display: flex;
	gap: var(--freyza-space-3);
}

.woocommerce-cart .freyza-cart-coupon-form .input-text {
	background: var(--freyza-color-surface);
	border: 1px solid var(--freyza-color-border);
	border-radius: var(--freyza-radius-input);
	flex: 1 1 auto;
	min-height: 46px;
	min-width: 0;
	padding-inline: 14px;
}

.woocommerce-cart .freyza-cart-coupon-form .button {
	border-radius: var(--freyza-radius-button);
	font-weight: 700;
	min-height: 46px;
	padding-inline: 20px;
	white-space: nowrap;
}

.woocommerce-cart .cart-collaterals {
	display: flex;
	flex-direction: column;
	gap: var(--freyza-space-4);
	width: 100%;
}

.woocommerce-cart .cart-collaterals::after,
.woocommerce-cart .cart-collaterals::before {
	content: none;
}

.woocommerce-cart .cart_totals {
	background: transparent;
	border: 0;
	box-shadow: none;
	float: none;
	order: 1;
	padding: 0;
	width: 100%;
}

.woocommerce-cart .cart_totals h2 {
	display: none;
}

.woocommerce-cart table.shop_table {
	background: transparent;
	border-collapse: separate;
	border-spacing: 0;
	box-shadow: none;
}

.woocommerce-cart .cart_totals table.shop_table {
	border: 0;
	margin: 0;
}

.woocommerce-cart .cart_totals table.shop_table th,
.woocommerce-cart .cart_totals table.shop_table td {
	border: 0;
	color: var(--freyza-color-text);
	font-size: 0.9rem;
	padding: 8px 0;
	vertical-align: middle;
}

.woocommerce-cart .cart_totals table.shop_table th {
	color: var(--freyza-color-muted);
	font-size: 0.9rem;
	font-weight: 400;
	letter-spacing: 0;
	text-align: left;
	text-transform: none;
}

.woocommerce-cart .cart_totals table.shop_table td {
	font-family: var(--freyza-font-mono);
	text-align: right;
}

.woocommerce-cart .cart_totals .order-total th,
.woocommerce-cart .cart_totals .order-total td {
	border-top: 1px solid var(--freyza-color-border);
	color: var(--freyza-color-primary);
	font-family: var(--freyza-font-mono);
	font-size: 1.3rem;
	font-weight: 700;
	padding-top: var(--freyza-space-4);
}

.woocommerce-cart .cart_totals .order-total th {
	font-family: var(--freyza-font-heading);
	font-size: 1rem;
	font-weight: 400;
}

.woocommerce-cart .wc-proceed-to-checkout {
	order: 2;
	padding-bottom: 0;
	padding-top: 6px;
}

.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
	background: var(--freyza-color-primary);
	border-radius: var(--freyza-radius-button);
	color: #fff;
	font-size: 1rem;
	font-weight: 700;
	min-height: 54px;
	width: 100%;
}

.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:focus-visible {
	background: var(--freyza-color-secondary);
	box-shadow: none;
	transform: translateY(-1px);
}

/* The CTA carries its own reassurance, so it is a stacked block rather than a
   single line of text. `a.checkout-button` keeps it above the parent theme's
   own button rules, which are class + element. */
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button.freyza-checkout-cta {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: 10px;
	justify-content: center;
	line-height: 1.2;
	padding: 14px 18px 12px;
	text-decoration: none;
}

.freyza-checkout-cta__label {
	font-size: 1rem;
	font-weight: 700;
}

/* Hairline in the button's own colour space, so it reads as one control. */
.freyza-checkout-cta__trust {
	align-items: center;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
	display: flex;
	flex-wrap: wrap;
	gap: 6px 12px;
	justify-content: center;
	padding-top: 10px;
	width: 100%;
}

.freyza-checkout-cta__secure {
	align-items: center;
	color: rgba(255, 255, 255, 0.78);
	display: inline-flex;
	font-family: var(--freyza-font-mono);
	font-size: 0.64rem;
	font-weight: 400;
	gap: 6px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

/* Padlock drawn in white, unlike the muted one used on the product page. */
.freyza-checkout-cta__secure::before {
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='10' width='16' height='11' rx='2'/%3E%3Cpath d='M8 10V7a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E") center / contain no-repeat;
	content: "";
	flex-shrink: 0;
	height: 12px;
	opacity: 0.8;
	width: 12px;
}

/* `img` in the selector on purpose: the parent theme's `.woocommerce img`
   is class + element and would otherwise win and stretch the marks. */
.freyza-checkout-cta .freyza-checkout-cta__payments,
.freyza-checkout-cta img.freyza-checkout-cta__payments {
	display: block;
	flex-shrink: 0;
	height: 22px;
	max-width: 100%;
	width: auto;
}

.woocommerce-cart .woocommerce-notices-wrapper {
	display: grid;
	gap: var(--freyza-space-3);
	margin-bottom: var(--freyza-space-5);
}

/* Notices use the shared tinted style from global.css; only the spacing is
   cart-specific here. The old bordered/shadowed card override was removed so
   there is a single source of truth for how a notice looks. */
.woocommerce-cart .woocommerce-error,
.woocommerce-cart .woocommerce-info,
.woocommerce-cart .woocommerce-message {
	margin: 0 0 var(--freyza-space-4);
}

.freyza-button-pulse {
	animation: freyzaCartPulse 220ms ease;
}

.freyza-cart-form--updating,
.freyza-cart-updating .cart_totals {
	opacity: 0.72;
	pointer-events: none;
	position: relative;
}

.freyza-cart-form--updating::after,
.freyza-cart-updating .cart_totals::after {
	animation: freyzaCartLoading 240ms ease infinite;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.72), transparent);
	content: "";
	inset: 0;
	position: absolute;
	transform: translateX(-100%);
}

.freyza-cart-empty {
	padding-block: clamp(32px, 6vw, 72px);
}

.freyza-cart-empty__panel {
	min-height: 460px;
}

.freyza-cart-empty__icon span {
	border-radius: 14px 14px 20px 20px;
}

@keyframes freyzaNoticeIn {
	from {
		opacity: 0;
		transform: translateY(-8px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes freyzaCartPulse {
	0%,
	100% {
		transform: none;
	}

	50% {
		transform: translateY(-1px) scale(1.015);
	}
}

@keyframes freyzaCartLoading {
	to {
		transform: translateX(100%);
	}
}

@media (min-width: 1181px) {
	.woocommerce-cart .freyza-cart-layout {
		grid-template-columns: minmax(0, 1fr) minmax(380px, 440px);
	}

	.woocommerce-cart .cart-collaterals,
	.woocommerce-cart .freyza-cart-summary-card {
		position: sticky;
		top: 104px;
	}
}

@media (max-width: 1180px) {
	.woocommerce-cart .freyza-cart-layout {
		grid-template-columns: 1fr;
	}

	.woocommerce-cart .cart-collaterals,
	.woocommerce-cart .freyza-cart-summary-card {
		position: static;
	}
}

@media (max-width: 900px) {
	.woocommerce-cart .freyza-cart-list__columns {
		display: none;
	}

	.woocommerce-cart .freyza-cart-card {
		flex-wrap: wrap;
		position: relative;
	}

	.woocommerce-cart .freyza-cart-card__media img {
		height: 76px;
		width: 76px;
	}

	.woocommerce-cart .freyza-cart-card__details {
		flex: 1 1 auto;
		padding-right: 36px;
	}

	/* Remove becomes an icon-only "x" pinned to the row's top-right corner
	   instead of a text link at the bottom of the details block — the
	   accessible label stays on the element, only the visible glyph
	   changes at this breakpoint. */
	.woocommerce-cart .freyza-cart-card__remove {
		margin-top: 0;
		position: absolute;
		right: 0;
		top: 0;
	}

	.woocommerce-cart .freyza-cart-card__remove a.remove {
		align-items: center;
		display: inline-flex;
		font-size: 0;
		height: 36px;
		justify-content: center;
		text-decoration: none;
		width: 36px;
	}

	.woocommerce-cart .freyza-cart-card__remove a.remove::before {
		color: var(--freyza-color-muted);
		content: "\2715";
		font-size: 15px;
	}

	.woocommerce-cart .freyza-cart-card__remove a.remove:hover::before,
	.woocommerce-cart .freyza-cart-card__remove a.remove:focus-visible::before {
		color: var(--freyza-color-error);
	}

	/* Quantity stays flush left (aligned with the details column above —
	   the thumbnail sits above the details text at this width, not beside
	   it, so no extra indent is needed) and the line total sits at the
	   right of the same row. */
	.woocommerce-cart .freyza-cart-card__meta {
		align-items: center;
		display: flex;
		flex: 1 1 100%;
		justify-content: space-between;
		margin-top: 8px;
	}

	.woocommerce-cart .freyza-cart-card__quantity {
		flex: 0 0 auto;
		padding-top: 0;
	}

	.woocommerce-cart .freyza-cart-card__quantity .quantity {
		height: 36px;
		margin-inline: 0;
		width: auto;
	}

	.woocommerce-cart .freyza-cart-card__subtotal {
		flex: 0 0 auto;
		font-size: 0.95rem;
		padding-top: 0;
		text-align: right;
	}
}

@media (max-width: 640px) {
	.woocommerce-cart .freyza-cart-summary-card {
		background: var(--freyza-color-section);
		border-radius: 0;
		border-width: 1px 0 0;
	}
}

@media (max-width: 760px) {
	.woocommerce-cart .entry-content {
		max-width: none;
		padding-inline: var(--freyza-space-4);
	}

	.woocommerce-cart .freyza-cart-layout {
		gap: var(--freyza-space-6);
	}

	.woocommerce-cart .freyza-cart-actions {
		align-items: stretch;
		flex-direction: column-reverse;
	}

	.woocommerce-cart .freyza-cart-continue {
		text-align: center;
	}

	.woocommerce-cart .freyza-cart-update {
		width: 100%;
	}

	.woocommerce-cart .freyza-cart-coupon__controls {
		flex-direction: column;
	}

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

@media (prefers-reduced-motion: reduce) {
	.woocommerce-cart .freyza-cart-card,
	.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
	.woocommerce-cart .woocommerce-error,
	.woocommerce-cart .woocommerce-info,
	.woocommerce-cart .woocommerce-message {
		animation: none;
		transition: none;
	}
}

/* Shipping address summary (replaces the editable calculator — address is
   now collected on the dedicated address step before checkout) */

.woocommerce-cart .freyza-cart-shipping-summary {
	display: flex;
	flex-direction: column;
	gap: var(--freyza-space-2);
}

.woocommerce-cart .freyza-cart-shipping-summary__address {
	color: var(--freyza-color-text);
	font-size: 0.9rem;
	margin: 0;
}

.woocommerce-cart .freyza-cart-shipping-summary__link {
	color: var(--freyza-color-secondary);
	font-size: 0.85rem;
	font-weight: 600;
}

/* Mobile cart, tightened to the design.
   Declared last so it lands after the 900px block above, which deliberately
   wrapped the thumbnail onto its own line — that is what made every row
   ~200px tall. The thumbnail now stays beside the details, as in the design,
   and the row collapses to roughly the height of the 76px image. */
@media (max-width: 900px) {
	.woocommerce-cart .freyza-cart-header {
		margin-bottom: var(--freyza-space-4);
	}

	.woocommerce-cart .freyza-cart-header h1 {
		font-size: 1.32rem;
		font-weight: 600;
	}

	/* Grid rather than flex: the three children were stacking as three full
	   rows (thumbnail, then details, then quantity), which is what made the
	   row 283px tall. Two columns put the thumbnail alongside, with quantity
	   and line total tucked under the name as the design has them. */
	.woocommerce-cart .freyza-cart-card {
		align-items: start;
		display: grid;
		gap: 6px 14px;
		grid-template-columns: 76px minmax(0, 1fr);
		padding: 16px 0;
		position: relative;
	}

	.woocommerce-cart .freyza-cart-card__media {
		grid-column: 1;
		grid-row: 1 / span 2;
	}

	.woocommerce-cart .freyza-cart-card__media img {
		border-radius: 8px;
		height: 76px;
		padding: 6px;
		width: 76px;
	}

	/* Room on the right for the pinned remove control. */
	.woocommerce-cart .freyza-cart-card__details {
		gap: 2px;
		grid-column: 2;
		grid-row: 1;
		min-width: 0;
		padding-right: 30px;
	}

	.woocommerce-cart .freyza-cart-card__eyebrow {
		font-size: 0.58rem;
	}

	.woocommerce-cart .freyza-cart-card__details h3 {
		font-size: 0.94rem;
		line-height: 1.3;
	}

	/* Quantity and line total share one row under the name, in the same grid
	   column so they line up with the text rather than the image. */
	.woocommerce-cart .freyza-cart-card__meta {
		align-items: center;
		display: flex;
		gap: 12px;
		grid-column: 2;
		grid-row: 2;
		justify-content: space-between;
		margin: 0;
	}

	.woocommerce-cart .freyza-cart-card__quantity .quantity {
		height: 34px;
	}

	.woocommerce-cart .freyza-cart-card__subtotal {
		font-size: 0.92rem;
	}

	.woocommerce-cart .freyza-cart-card__remove a.remove {
		height: 32px;
		width: 32px;
	}
}

@media (max-width: 560px) {
	.woocommerce-cart .freyza-cart-card {
		gap: 6px 12px;
		grid-template-columns: 68px minmax(0, 1fr);
		padding: 14px 0;
	}

	.woocommerce-cart .freyza-cart-card__media img {
		height: 68px;
		width: 68px;
	}

	.woocommerce-cart .freyza-cart-card__details h3 {
		font-size: 0.9rem;
	}
}

/* Compact bar is mobile-only; the desktop heading takes over above 900px. */
.freyza-cart-mobile-bar {
	display: none;
}

@media (max-width: 900px) {
	.woocommerce-cart .freyza-cart-mobile-bar {
		align-items: center;
		border-bottom: 1px solid var(--freyza-color-border);
		display: grid;
		gap: 12px;
		grid-template-columns: 40px minmax(0, 1fr) 40px;
		margin: 0 0 var(--freyza-space-4);
		padding-bottom: 12px;
	}

	.woocommerce-cart .freyza-cart-mobile-bar__back {
		align-items: center;
		color: var(--freyza-color-primary);
		display: inline-flex;
		font-size: 1.1rem;
		height: 40px;
		justify-content: center;
		margin-left: -10px;
		text-decoration: none;
		width: 40px;
	}

	.woocommerce-cart .freyza-cart-mobile-bar__title {
		color: var(--freyza-color-primary);
		font-size: 1.05rem;
		font-weight: 500;
		text-align: center;
	}

	.woocommerce-cart .freyza-cart-mobile-bar__count {
		color: var(--freyza-color-muted);
		font-family: var(--freyza-font-mono);
		font-size: 0.8rem;
		text-align: center;
	}

	/* The compact bar names the page, so the large heading would repeat it. */
	.woocommerce-cart .freyza-cart-header {
		display: none;
	}

	/* Deliberately NOT position:sticky. The summary is a grid item, so its
	   containing block is its own row track — which is exactly its own height,
	   leaving nothing to stick within. It sits at the end of the list instead,
	   styled as a full-bleed panel. */
	.woocommerce-cart .freyza-cart-summary {
		margin-top: var(--freyza-space-5);
	}

	.woocommerce-cart .freyza-cart-summary-card {
		background: var(--freyza-color-surface);
		border-radius: 0;
		border-width: 1px 0 0;
		box-shadow: 0 -8px 20px -16px rgba(14, 35, 56, 0.35);
		margin-inline: calc(var(--freyza-space-4) * -1);
		padding: var(--freyza-space-4);
	}

	.woocommerce-cart .freyza-cart-summary-card h2 {
		font-size: 0.95rem;
		margin-bottom: var(--freyza-space-3);
	}
}

/* Order summary: lines, not boxes.
   Kills the parent theme's table chrome (borders, zebra striping, cell
   padding) so the rows read as a simple ledger separated by hairlines. */

.woocommerce-cart .cart_totals table,
.woocommerce-cart .cart_totals table.shop_table,
.woocommerce-cart .cart_totals table.shop_table_responsive {
	background: none;
	border: 0;
	border-collapse: collapse;
	border-radius: 0;
	box-shadow: none;
	margin: 0;
	width: 100%;
}

.woocommerce-cart .cart_totals table tr,
.woocommerce-cart .cart_totals table tbody tr,
.woocommerce-cart .cart_totals table tbody tr:nth-child(odd),
.woocommerce-cart .cart_totals table tbody tr:nth-child(even) {
	background: none;
}

.woocommerce-cart .cart_totals table th,
.woocommerce-cart .cart_totals table td {
	background: none;
	border: 0;
	color: var(--freyza-color-muted);
	font-size: 0.9rem;
	font-weight: 400;
	padding: 9px 0;
	vertical-align: baseline;
}

.woocommerce-cart .cart_totals table td {
	color: var(--freyza-color-primary);
	text-align: right;
}

.woocommerce-cart .cart_totals table tr + tr th,
.woocommerce-cart .cart_totals table tr + tr td {
	border-top: 1px solid var(--freyza-color-border);
}

/* The GST charged on delivery reads as a note attached to the delivery line,
   not as a separate charge — so no hairline above it and a lighter weight. */
.woocommerce-cart .cart_totals table tr.freyza-shipping-tax th,
.woocommerce-cart .cart_totals table tr.freyza-shipping-tax td {
	border-top: 0;
	color: var(--freyza-color-muted);
	font-size: 0.8rem;
	padding-top: 0;
}

/* The total is the one row that earns emphasis. */
.woocommerce-cart .cart_totals table tr.order-total th,
.woocommerce-cart .cart_totals table tr.order-total td {
	border-top: 1px solid var(--freyza-color-primary);
	color: var(--freyza-color-primary);
	font-size: 1.05rem;
	font-weight: 600;
	padding-top: 13px;
}

.woocommerce-cart .cart_totals table tr.order-total td .woocommerce-Price-amount {
	font-size: 1.15rem;
}

/* Mobile: full-screen app view, matching the account pages. The compact bar
   in the cart names the page, so the site header and promo strip only push
   the basket down the screen. */
@media (max-width: 900px) {
	/* The cart's app view drops the site header, but the header is also what
	   carries the vacation banner — so its rows are hidden rather than the
	   header itself, and its chrome is stripped. With no banner the shell
	   collapses to nothing, exactly as before. */
	body.woocommerce-cart .freyza-header__promo,
	body.woocommerce-cart .freyza-header__inner {
		display: none;
	}

	body.woocommerce-cart .freyza-header {
		background: none;
		border: 0;
		box-shadow: none;
		backdrop-filter: none;
	}

	.woocommerce-cart .entry-content {
		padding-block: var(--freyza-space-4);
	}

	/* De-boxed: the summary is a panel closing the page, not a card. */
	.woocommerce-cart .freyza-cart-summary-card {
		background: none;
		border: 0;
		border-radius: 0;
		border-top: 1px solid var(--freyza-color-border);
		box-shadow: none;
		gap: var(--freyza-space-4);
		margin-inline: 0;
		padding: var(--freyza-space-5) 0 0;
	}

	.woocommerce-cart .freyza-cart-summary-card h2 {
		font-size: 0.72rem;
		font-weight: 600;
		letter-spacing: 0.1em;
		text-transform: uppercase;
		color: var(--freyza-color-muted);
	}
}

/* Narrow screens: the payment marks drop to their own line under the label
   rather than shrinking the reassurance text to an unreadable size. */
@media (max-width: 420px) {
	.freyza-checkout-cta .freyza-checkout-cta__payments,
	.freyza-checkout-cta img.freyza-checkout-cta__payments {
		height: 20px;
	}
}
