/* =========================================================
   Sora & Stone — WooCommerce Cart & Checkout blocks
   Loaded only on the basket and checkout pages.
   Every rule is prefixed with body:is(.woocommerce-cart, .woocommerce-checkout)
   so it outranks WooCommerce's block CSS whatever the load order.
   Class names checked against WooCommerce 11.2.
   ========================================================= */

/* ---------- Page frame ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .sas-page { max-width: var(--maxw); padding-top: var(--space-10); }
body:is(.woocommerce-cart, .woocommerce-checkout) .sas-page h1 {
	font-size: clamp(30px, 6vw, 44px); margin-bottom: var(--space-3);
}

body:is(.woocommerce-cart, .woocommerce-checkout) .sas-checkout__steps {
	list-style: none; padding: 0; margin: 0 0 var(--space-8);
	flex-wrap: wrap;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .sas-checkout__steps a { color: inherit; text-decoration: none; }
body:is(.woocommerce-cart, .woocommerce-checkout) .sas-checkout__steps a:hover { color: var(--stone); }

/* ---------- Base type ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-cart, .wc-block-checkout) {
	font-family: var(--font-body); font-weight: 300; font-size: 15px; color: var(--fg-2);
}

/* Section titles: "Contact information", "Shipping address", "Payment options" */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkout-step__title {
	font-family: var(--font-display); font-weight: 300; font-size: 24px;
	letter-spacing: 0.02em; color: var(--stone); line-height: 1.2;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkout-step__description {
	font-size: 13px; color: var(--fg-3);
}

/* Small caps titles: "Order summary", "Cart totals", table headers */
body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-components-title, .wc-block-cart__totals-title, .wc-block-cart-items__header) {
	font-family: var(--font-body); font-weight: 400; font-size: 11px;
	letter-spacing: 0.25em; text-transform: uppercase; color: var(--stone);
}

/* ---------- Text inputs & selects ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-text-input input:is([type=text], [type=email], [type=tel], [type=number], [type=password], [type=url], [type=date]),
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-textarea,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-blocks-components-select .wc-blocks-components-select__select {
	font-family: var(--font-body); font-weight: 300; color: var(--stone);
	background-color: #fff; border: 1px solid var(--mist); border-radius: var(--r-sm);
	box-shadow: none;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-text-input input:focus,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-textarea:focus,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-blocks-components-select .wc-blocks-components-select__select:focus {
	border-color: var(--soft-gold); box-shadow: 0 0 0 2px rgba(201,168,107,0.18); outline: none;
}
body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-components-text-input label, .wc-blocks-components-select .wc-blocks-components-select__label) {
	font-family: var(--font-body); color: var(--fg-3);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-blocks-components-select .wc-blocks-components-select__container { border-radius: var(--r-sm); }

/* Validation — darker rose so error text stays readable on cream */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-validation-error,
body:is(.woocommerce-cart, .woocommerce-checkout) .has-error .wc-block-components-text-input label { color: #A6503F; }
body:is(.woocommerce-cart, .woocommerce-checkout) .has-error .wc-block-components-text-input input,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-text-input.has-error input { border-color: #A6503F; }

/* ---------- Checkboxes & radios ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox] {
	border: 1px solid var(--sand); border-radius: 3px;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:checked {
	background: var(--stone); border-color: var(--stone);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkbox .wc-block-components-checkbox__mark { fill: var(--cream); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkbox__label { font-size: 13px; color: var(--fg-2); line-height: 1.5; }

body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control .wc-block-components-radio-control__input { border: 1px solid var(--sand); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control .wc-block-components-radio-control__input:checked { border-color: var(--stone); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control .wc-block-components-radio-control__input:checked:before { background: var(--stone); }

/* Delivery + payment option rows */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control__option { font-size: 14px; color: var(--stone); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control__secondary-label,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control__description { color: var(--fg-3); font-size: 13px; }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-radio-control-accordion-option {
	border-color: var(--mist);
}

/* ---------- Buttons ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-button:not(.is-link) {
	background: var(--stone); color: var(--cream); border: 0; border-radius: var(--r-sm);
	font-family: var(--font-body); font-weight: 400; font-size: 11px;
	letter-spacing: 0.3em; text-transform: uppercase;
	min-height: 50px; padding: 14px 24px;
	transition: background var(--dur-state) var(--ease), box-shadow var(--dur-state) var(--ease);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-button:not(.is-link):is(:hover, :focus-visible):not(:disabled) {
	background: var(--ink); color: var(--cream); box-shadow: inset 0 -2px 0 var(--soft-gold);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-button:not(.is-link):is(.outlined, .is-style-outline) {
	background: transparent; color: var(--stone); border: 1px solid var(--stone);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkout-place-order-button { min-height: 56px; }

body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkout-return-to-cart-button {
	font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--fg-3); text-decoration: none;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-checkout-return-to-cart-button:hover { color: var(--stone); }

/* ---------- Summary card (sidebar) ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-checkout__sidebar, .wc-block-cart__sidebar) {
	background: #fff; border: var(--border-hairline); border-radius: var(--r-md); padding: 20px;
}
@media (min-width: 880px) {
	body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-checkout__sidebar, .wc-block-cart__sidebar) { padding: 28px; }
	body.woocommerce-checkout .wc-block-checkout__sidebar.is-sticky { top: 100px; }
}

body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-order-summary-item__image img {
	border: var(--border-hairline); border-radius: var(--r-sm);
}
/* Quantity badge — dusty rose with a cream ring, like the header basket pill */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-order-summary .wc-block-components-order-summary-item__quantity {
	background: var(--dusty-rose); color: var(--cream); box-shadow: 0 0 0 2px #fff; font-weight: 600;
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-product-name {
	font-family: var(--font-display); font-weight: 400; font-size: 17px; line-height: 1.2;
	color: var(--stone); text-decoration: none;
}
body:is(.woocommerce-cart, .woocommerce-checkout) :is(.wc-block-components-product-metadata, .wc-block-components-product-details) {
	font-size: 12px; color: var(--fg-3);
}

/* Totals */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-totals-item { font-size: 13px; color: var(--fg-3); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-totals-item__value { color: var(--stone); }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-size: 17px; color: var(--stone);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-totals-wrapper { border-color: var(--mist); }

/* Coupon panel + applied-coupon chip */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-panel__button {
	font-size: 12px; letter-spacing: 0.08em; color: var(--stone);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-chip {
	background: var(--bg-soft); border: var(--border-hairline); border-radius: var(--r-pill); color: var(--stone);
}

/* ---------- Express payments (Apple Pay / Google Pay / Link) ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-express-payment--checkout {
	border-color: var(--mist); border-radius: var(--r-md);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-express-payment__title {
	font-family: var(--font-body); font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--stone);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-express-payment-continue-rule {
	font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fg-4);
}

/* ---------- Notices ---------- */
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-notice-banner {
	font-size: 13px; color: var(--fg-2); background: var(--bg-soft);
	border: var(--border-hairline); border-left: 3px solid var(--soft-gold); border-radius: var(--r-sm);
}
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-notice-banner.is-error { border-left-color: #A6503F; }
body:is(.woocommerce-cart, .woocommerce-checkout) .wc-block-components-notice-banner > svg { fill: currentColor; background: transparent; }

/* ---------- Terms line above Place order ---------- */
body.woocommerce-checkout .wc-block-checkout__terms { font-size: 12px; color: var(--fg-3); line-height: 1.6; }
body.woocommerce-checkout .wc-block-checkout__terms a { color: var(--stone); }

/* ---------- Basket (Cart block) items ---------- */
body.woocommerce-cart .wc-block-cart-items { border-color: var(--mist); }
body.woocommerce-cart .wc-block-cart-items .wc-block-cart-items__row { border-color: var(--mist); }
body.woocommerce-cart .wc-block-cart-item__image img { border: var(--border-hairline); border-radius: var(--r-sm); }
body.woocommerce-cart .wc-block-cart-item__remove-link {
	font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fg-3);
}
body.woocommerce-cart .wc-block-cart-item__remove-link:hover { color: var(--dusty-rose); }
body.woocommerce-cart .wc-block-components-quantity-selector {
	border: var(--border-hairline); border-radius: var(--r-sm); background: #fff;
}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	font-family: var(--font-display); font-size: 18px; color: var(--stone);
}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__input {
	font-family: var(--font-body); font-size: 14px; color: var(--stone);
}

/* Empty basket — swap WooCommerce's sad-face icon for the brand's small sand diamond */
body.woocommerce-cart .wc-block-cart__empty-cart__title {
	font-family: var(--font-display); font-style: italic; font-weight: 300; font-size: 28px; color: var(--stone);
}
body.woocommerce-cart .wc-block-cart__empty-cart__title.with-empty-cart-icon:before {
	mask-image: none; -webkit-mask-image: none;
	width: 10px; height: 10px; margin: 0 auto var(--space-6);
	background-color: var(--sand); transform: rotate(45deg);
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-post-title a {
	font-family: var(--font-display); color: var(--stone); text-decoration: none;
}
