/* Cart page (direction B "Pearl"). Loads only on the cart, after site.css. All values come from the --k-* tokens. */

/* ---------- Page frame: Astra's container and title step aside ---------- */
/* Astra paints the page white; the cards need the pearl backdrop or their edges melt into it. */
html, html body.woocommerce-cart[class] { background: var(--k-pearl); }
.woocommerce-cart :is(.site, .site-content, #content, #primary, .site-main, .entry-content, .ast-article-single, .ast-container) { background: transparent; }
.woocommerce-cart #primary { margin: 0; padding: 0; width: 100%; max-width: none; }
.woocommerce-cart .ast-container { display: block; max-width: none; padding: 0; }
.woocommerce-cart .site-content > .ast-container { padding: 0; }
.woocommerce-cart .entry-header,
.woocommerce-cart .ast-breadcrumbs-wrapper { display: none; }
.woocommerce-cart .ast-article-single,
.woocommerce-cart .entry-content { margin: 0; padding: 0; background: transparent; box-shadow: none; }

.kc {
	width: min(100% - 2 * var(--k-gutter), 1080px);
	margin: var(--k-7) auto var(--k-9);
}
.kc__head { margin-bottom: var(--k-6); }
.kc .kc__title { margin: var(--k-3) 0 0; font-family: var(--k-font-head); font-weight: 700; letter-spacing: -.03em; line-height: 1.05; color: var(--k-ink); font-size: clamp(34px, 5vw, 52px); }

/* notices WooCommerce prints above the cart */
.woocommerce-cart .woocommerce-notices-wrapper { width: min(100% - 2 * var(--k-gutter), 1080px); margin: var(--k-5) auto 0; }
.woocommerce-cart .woocommerce-notices-wrapper + .kc { margin-top: var(--k-5); }
.woocommerce-cart :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	display: flex; flex-direction: row-reverse; align-items: center; justify-content: space-between; gap: var(--k-3) var(--k-5);
	margin: 0 0 var(--k-3); padding: var(--k-4) var(--k-5); list-style: none;
	background: var(--k-surface); color: var(--k-ink); border: 0; border-radius: var(--k-r-md);
	box-shadow: var(--k-shadow-card); font-size: 15px; line-height: 1.5;
}
.woocommerce-cart :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before { display: none; }
.woocommerce-cart :is(.woocommerce-message, .woocommerce-info, .woocommerce-error):focus { outline: none; }   /* WooCommerce focuses the notice when it prints it; the ring is for links and buttons */
/* a notice without a button ("Item removed. Undo?"): plain text with an inline link, not a flex row of loose pieces */
.woocommerce-cart :is(.woocommerce-message, .woocommerce-info):not(:has(> a.button)) { display: block; }
.woocommerce-cart .woocommerce-message a.restore-item { margin-left: var(--k-2); font-weight: 600; color: var(--k-ink); text-decoration: underline; text-underline-offset: 3px; }
/* a 3px inset left bar on a rounded box draws a crescent; an even 1px ring in the notice colour keeps the corners clean */
.woocommerce-cart .woocommerce-error { box-shadow: inset 0 0 0 1px #a3302b, var(--k-shadow-card); }
.woocommerce-cart .woocommerce-error li { list-style: none; margin: 0; }
.woocommerce-cart :is(.woocommerce-message, .woocommerce-info) > a.button {
	flex: none; float: none; margin: 0; min-height: 40px; padding: 0 var(--k-4); display: inline-flex; align-items: center;
	border-radius: var(--k-r-pill); background: transparent; color: var(--k-ink); font-size: 14px; font-weight: 600;
	box-shadow: inset 0 0 0 1px var(--k-line-strong); text-decoration: none;
}
@media (hover: hover) { .woocommerce-cart :is(.woocommerce-message, .woocommerce-info) > a.button:hover { background: rgba(20, 23, 26, .05); color: var(--k-ink); } }

/* ---------- Layout: items + summary ---------- */
.kc__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(300px, 1fr); gap: var(--k-6); align-items: start; }
.kc__items { min-width: 0; }
.kc__side { position: sticky; top: 96px; }
.kc__side > :empty { display: none; }

/* ---------- Item card ---------- */
.kc__list { list-style: none; margin: 0; padding: 0; background: var(--k-surface); border-radius: var(--k-r-lg); box-shadow: var(--k-shadow-card); overflow: hidden; }
.kc__item { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: var(--k-5); align-items: start; padding: var(--k-5) var(--k-6); }
.kc__item + .kc__item { border-top: 1px solid var(--k-line); }
.kc__thumb { padding: 4px; border-radius: 20px; background: rgba(20, 23, 26, .05); border: 1px solid rgba(20, 23, 26, .06); }
.kc__thumb img { display: block; width: 100%; height: auto; border-radius: 16px; box-shadow: inset 0 1px 1px rgba(255, 255, 255, .25); }
.kc__thumb a { display: block; }
.kc__info { min-width: 0; display: grid; gap: var(--k-1); align-content: start; }
.kc__name { margin: 0; font: 700 20px/1.2 var(--k-font-head); letter-spacing: -.02em; }
.kc__name a, .kc__name a:hover, .kc__name a:focus { color: var(--k-ink); text-decoration: none; }
.kc__meta { margin: 0; font-size: 14px; color: var(--k-mute); }
.kc__price { margin: 0; font: 700 20px/1.2 var(--k-font-head); letter-spacing: -.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* quantity: hidden for single-licence items, a small stepper-less field otherwise */
.kc__qty.is-hidden { display: none; }
.kc__qty .quantity { display: inline-block; margin-top: var(--k-3); }
.kc__qty input.qty { width: 84px; min-height: 44px; padding: 0 var(--k-3); border: 1px solid var(--k-line-strong); border-radius: var(--k-r-sm); background: var(--k-surface); color: var(--k-ink); font-size: 16px; text-align: center; }
.kc__qty input.qty:focus { outline: none; border-color: var(--k-ink); box-shadow: 0 0 0 3px rgba(20, 23, 26, .12); }

/* remove: quiet text link with a 44 px tap area */
.woocommerce .kc a.kc__remove, .woocommerce .kc a.kc__remove:visited {
	justify-self: start; display: inline-flex; align-items: center; min-height: 44px; margin-top: var(--k-1); padding: 0;
	font-size: 14px; font-weight: 600; color: var(--k-mute); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--k-line-strong);
	background: none; border-radius: 0; width: auto; height: auto; line-height: 1; opacity: 1; transition: color var(--k-fast) var(--k-ease), text-decoration-color var(--k-fast) var(--k-ease);
}
.woocommerce .kc a.kc__remove::before, .woocommerce .kc a.kc__remove::after { content: none; display: none; }
.woocommerce .kc a.kc__remove:hover, .woocommerce .kc a.kc__remove:focus { color: var(--k-ink); text-decoration-color: var(--k-ink); background: none; }

/* ---------- Promo code ---------- */
.kc__actions { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--k-4); margin-top: var(--k-4); padding: var(--k-5) var(--k-6); background: var(--k-surface); border-radius: var(--k-r-lg); box-shadow: var(--k-shadow-card); }
.kc__coupon { flex: 1 1 320px; display: grid; gap: var(--k-2); }
.kc__label { font-size: 14px; font-weight: 600; }
.kc__coupon-row { display: flex; gap: var(--k-2); }
.kc__coupon-row input#coupon_code {
	flex: 1; min-width: 0; min-height: 48px; margin: 0; padding: 0 var(--k-4); border: 1px solid var(--k-line-strong); border-radius: var(--k-r-sm);
	background: var(--k-surface); color: var(--k-ink); font-size: 16px; box-shadow: none; width: auto;
	transition: border-color var(--k-fast) var(--k-ease), box-shadow var(--k-fast) var(--k-ease);
}
.kc__coupon-row input#coupon_code::placeholder { color: var(--k-soft); }
.kc__coupon-row input#coupon_code:hover { border-color: var(--k-ink); }
.kc__coupon-row input#coupon_code:focus { outline: none; border-color: var(--k-ink); box-shadow: 0 0 0 3px rgba(20, 23, 26, .12); }
.kc__coupon .coupon-error-notice { margin: 0; font-size: 14px; line-height: 1.4; color: #a3302b; }
.kc__coupon input#coupon_code.has-error, .kc__coupon input#coupon_code.coupon-invalid, .kc__coupon input#coupon_code[aria-invalid="true"] { border-color: #a3302b; }
.kc .kc__apply, .kc .kc__update {
	letter-spacing: normal; text-transform: none; min-height: 48px; padding: 0 var(--k-5); border: 0; border-radius: var(--k-r-pill); background: transparent; color: var(--k-ink); cursor: pointer;
	font: 600 15px/1 var(--k-font-body); box-shadow: inset 0 0 0 1px var(--k-line-strong);
	transition: transform var(--k-slow) var(--k-ease), background-color var(--k-fast) var(--k-ease), box-shadow var(--k-fast) var(--k-ease);
}
@media (hover: hover) { .kc__apply:hover, .kc__update:hover { background: rgba(20, 23, 26, .05); box-shadow: inset 0 0 0 1px var(--k-ink); color: var(--k-ink); } }
.kc__apply:active, .kc__update:active { transform: scale(.98); }
.kc__update[hidden] { display: none; }
.kc__update:disabled { opacity: .45; cursor: not-allowed; }

/* ---------- Summary ---------- */
.woocommerce-cart .kc__side .cart_totals { padding: var(--k-6); background: var(--k-surface); border: 0; border-radius: var(--k-r-lg); box-shadow: var(--k-shadow-card); width: 100%; float: none; }
.woocommerce-cart .kc__side .cart_totals h2 { margin: 0 0 var(--k-4); padding: 0; border: 0; background: none; font-family: var(--k-font-head); font-weight: 700; font-size: 24px; letter-spacing: -.03em; color: var(--k-ink); }
.woocommerce-cart .kc__side .shop_table { width: 100%; margin: 0; border: 0; border-collapse: collapse; background: transparent; }
.woocommerce-cart .kc__side .shop_table :is(th, td) { padding: var(--k-3) 0; border: 0; border-top: 1px solid var(--k-line); background: transparent; font-size: 15px; vertical-align: baseline; }
.woocommerce-cart .kc__side .shop_table tr:first-child :is(th, td) { border-top: 0; }
.woocommerce-cart .kc__side .shop_table th { font-weight: 500; color: var(--k-mute); text-align: left; }
.woocommerce-cart .kc__side .shop_table td { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
.woocommerce-cart .kc__side .shop_table tr.order-total :is(th, td) { padding-top: var(--k-4); font: 700 24px/1.2 var(--k-font-head); letter-spacing: -.02em; color: var(--k-ink); }
.woocommerce-cart .kc__side .shop_table tr.order-total th { font-weight: 700; }
.woocommerce-cart .kc__side .shop_table .includes_tax { display: block; font: 400 13px/1.4 var(--k-font-body); color: var(--k-mute); }
.woocommerce-cart .kc__side .shop_table td a.woocommerce-remove-coupon { font-size: 13px; color: var(--k-mute); }
.woocommerce-cart .kc__side .wc-proceed-to-checkout { padding: var(--k-5) 0 0; }
.woocommerce-cart .kc__side .wc-proceed-to-checkout a.k-btn { display: flex; width: 100%; min-height: 56px; padding: 0 8px 0 var(--k-5); justify-content: space-between; border-radius: var(--k-r-pill); font-size: 16px; line-height: 1; text-align: left; letter-spacing: normal; text-transform: none; margin: 0; }
.woocommerce-cart .kc__side .wc-proceed-to-checkout .k-btn__icon { width: 40px; height: 40px; }
.kc__continue, .kc__continue:visited { display: inline-flex; margin: var(--k-3) 0 0 var(--k-6); align-items: center; min-height: 44px; padding: 0; font-size: 15px; font-weight: 600; color: var(--k-mute); text-decoration: none; transition: color var(--k-fast) var(--k-ease); }
.kc__continue:hover, .kc__continue:focus { color: var(--k-ink); }

/* WooCommerce turns the totals table into stacked "Label: value" rows on phones. Keep it a plain two-column table. */
.woocommerce-cart .kc__side table.shop_table_responsive tr { display: table-row; }
.woocommerce-cart .kc__side table.shop_table_responsive :is(th, td) { display: table-cell; }
.woocommerce-cart .kc__side table.shop_table_responsive td { text-align: right !important; }
.woocommerce-cart .kc__side table.shop_table_responsive td::before { content: none; display: none; }
.woocommerce-cart .kc__side table.shop_table_responsive tr:nth-child(even) :is(td, th) { background: transparent; }

/* ---------- Empty cart ---------- */
.kc--empty { width: min(100% - 2 * var(--k-gutter), 640px); }
.kc__empty { display: grid; justify-items: start; gap: var(--k-4); padding: var(--k-7) var(--k-6); }
.kc__empty .kc__title { margin: 0; }
.kc__empty p { margin: 0; max-width: 46ch; color: var(--k-mute); }

/* ---------- Entrance: items and summary rise in turn ---------- */
@keyframes kc-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.kc__head, .kc__list, .kc__actions, .kc__side, .kc__empty { animation: kc-rise .8s var(--k-ease) backwards; }
.kc__list { animation-delay: 80ms; }
.kc__actions { animation-delay: 160ms; }
.kc__side { animation-delay: 120ms; }

/* ---------- Tablet / phone ---------- */
@media (max-width: 880px) {
	.kc__grid { grid-template-columns: 1fr; gap: var(--k-5); }
	.kc__side { position: static; }
}
@media (max-width: 560px) {
	.kc { margin-top: var(--k-6); margin-bottom: var(--k-8); }
	.kc__item { grid-template-columns: 72px minmax(0, 1fr); gap: var(--k-4); padding: var(--k-4); }
	.kc__price { grid-column: 2; font-size: 18px; }
	.kc__name { font-size: 18px; }
	.kc__actions, .woocommerce-cart .kc__side .cart_totals { padding: var(--k-5) var(--k-4); }
	.kc__coupon-row { flex-direction: column; }
	.kc__apply { width: 100%; }
	.kc__empty { padding: var(--k-6) var(--k-4); }
}

@media (prefers-reduced-motion: reduce) {
	.kc__head, .kc__list, .kc__actions, .kc__side, .kc__empty { animation: none; }
	.kc__apply, .kc__update, .kc__remove, .kc__continue { transition-duration: .01ms; }
}
