/**
 * Cart, Checkout and Order received (WooCommerce blocks).
 *
 * Loaded on is_cart() / is_checkout() (see bootstrap.php). The page titles
 * come from bv_cart_checkout_titles() in integrations/woocommerce.php. The
 * parent theme frames these blocks with heavy black borders and its own
 * fonts; this file brings them in line with the rest of the shop: white page,
 * soft grey summary card, pill buttons, 52px fields, condensed headings.
 */

/* The parent theme pads its page wrappers; these pages set their own width. */
body.boravision:is(.woocommerce-cart, .woocommerce-checkout) #content.site-content,
body.boravision:is(.woocommerce-cart, .woocommerce-checkout) .theme-container,
body.boravision:is(.woocommerce-cart, .woocommerce-checkout) .page-content {
	max-width: none;
	margin: 0;
	padding: 0;
}

body.boravision :is(.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout) {
	width: min(calc(100% - (2 * var(--bv-page-gutter))), var(--bv-container));
	max-width: none;
	margin: 0 auto clamp(64px, 8vw, 112px);
	color: var(--bv-color-text);
	font-family: var(--bv-font-body);
}

/* ---------- Page title ---------- */

.bv-commerce-title {
	width: min(calc(100% - (2 * var(--bv-page-gutter))), var(--bv-container));
	margin: clamp(28px, 4vw, 56px) auto clamp(20px, 3vw, 36px);
}

.bv-commerce-title h1 {
	margin: 0;
	color: var(--bv-color-black);
	font-family: var(--bv-font-heading);
	font-size: clamp(40px, 5vw, 64px);
	font-weight: 800;
	line-height: 0.95;
	text-transform: uppercase;
}

.bv-commerce-title p {
	margin: 10px 0 0;
	color: var(--bv-color-text-muted);
	font-size: 16px;
}

/* ---------- Two-column layout ---------- */

/* WooCommerce sizes the columns 65% / 35% in a wrapping flex row, so the
   space between them must be padding (box-sizing: border-box), not gap. */
body.boravision .wc-block-components-sidebar-layout {
	margin: 0;
}

body.boravision .wc-block-components-sidebar-layout.is-large .wc-block-components-main {
	box-sizing: border-box;
	padding-right: clamp(32px, 4vw, 64px);
}

body.boravision .wc-block-components-sidebar-layout.is-large .wc-block-components-sidebar {
	box-sizing: border-box;
	padding-left: 0;
}

/* Empty totals slots (discounts, fees) should not draw separator lines. */
body.boravision .wc-block-components-totals-wrapper:empty,
body.boravision .wc-block-components-totals-wrapper:not(:has(.wc-block-components-totals-item, .wc-block-components-panel, .wc-block-components-totals-coupon, .wc-block-components-totals-shipping, button, input)) {
	display: none;
}

/* The coupon panel's own rule is dark; match the light separators. */
body.boravision .wc-block-components-sidebar :is(.wc-block-components-panel, .wc-block-components-totals-coupon, .wc-block-components-panel__button) {
	border-color: var(--bv-color-border);
	box-shadow: none;
}

@media (min-width: 900px) {
	body.boravision .wc-block-components-sidebar-layout .wc-block-components-sidebar {
		position: sticky;
		top: calc(var(--bv-header-height) + 16px);
		align-self: flex-start;
	}
}

/* ---------- Summary card (cart totals / order summary) ---------- */

body.boravision .wc-block-components-sidebar .wc-block-components-totals-wrapper,
body.boravision .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block,
body.boravision .wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block {
	border: 0;
	border-radius: 0;
}

body.boravision .wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block,
body.boravision .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block {
	overflow: hidden;
	padding: 8px 24px;
	border: 0;
	border-radius: var(--bv-radius);
	background: var(--bv-color-surface);
}

body.boravision .wc-block-components-sidebar .wc-block-components-totals-wrapper {
	padding: 16px 0;
	border-top: 1px solid var(--bv-color-border);
}

body.boravision .wc-block-components-sidebar .wc-block-components-totals-wrapper:first-child,
body.boravision .wc-block-cart__totals-title + .wc-block-components-totals-wrapper {
	border-top: 0;
}

body.boravision .wc-block-cart__totals-title,
body.boravision .wc-block-components-checkout-order-summary__title-text,
body.boravision .wc-block-components-order-summary .wc-block-components-panel__button {
	margin: 0;
	padding: 16px 0 8px;
	border: 0;
	background: none;
	color: var(--bv-color-black);
	font-family: var(--bv-font-ui);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

body.boravision .wc-block-components-totals-item {
	padding: 6px 0;
	font-size: 16px;
}

body.boravision .wc-block-components-totals-item__label {
	color: var(--bv-color-text);
}

body.boravision .wc-block-components-totals-item__value {
	color: var(--bv-color-black);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

body.boravision .wc-block-components-totals-footer-item {
	padding-top: 4px;
}

body.boravision .wc-block-components-totals-footer-item :is(.wc-block-components-totals-item__label, .wc-block-components-totals-item__value) {
	color: var(--bv-color-black);
	font-family: var(--bv-font-heading);
	font-size: 24px;
	font-weight: 800;
	text-transform: uppercase;
}

body.boravision .wc-block-components-totals-item__description,
body.boravision .wc-block-components-totals-shipping__via {
	color: var(--bv-color-text-muted);
	font-size: 14px;
}

/* Coupon panel */
body.boravision .wc-block-components-totals-coupon .wc-block-components-panel__button,
body.boravision .wc-block-components-panel__button {
	padding-top: 4px;
	padding-bottom: 4px;
	color: var(--bv-color-black);
	font-size: 15px;
	font-weight: 600;
}

body.boravision .wc-block-components-panel {
	border: 0;
}

/* ---------- Buttons ---------- */

body.boravision :is(.wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button, .wc-block-components-totals-coupon__button, .wc-block-components-button.contained) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--bv-control-height);
	padding: 0 28px;
	border: 0;
	border-radius: var(--bv-radius-full);
	background: var(--bv-interaction-strong);
	color: var(--bv-interaction-on-strong);
	font-family: var(--bv-font-ui);
	font-size: 17px;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	box-shadow: none;
	transition: background var(--bv-transition-fast);
}

body.boravision :is(.wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button, .wc-block-components-totals-coupon__button, .wc-block-components-button.contained):hover {
	background: var(--bv-interaction-strong-hover);
	color: var(--bv-interaction-on-strong);
}

body.boravision .wc-block-cart__submit-button,
body.boravision .wc-block-components-checkout-place-order-button {
	width: 100%;
}

body.boravision .wc-block-cart__submit-container {
	margin-top: 16px;
}

body.boravision .wc-block-components-checkout-return-to-cart-button {
	color: var(--bv-color-text);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ---------- Cart items ---------- */

body.boravision table.wc-block-cart-items {
	border-collapse: collapse;
	margin: 0;
}

body.boravision .wc-block-cart-items__header {
	color: var(--bv-color-text-muted);
	font-family: var(--bv-font-ui);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

body.boravision .wc-block-cart-items__header th {
	padding: 0 0 12px;
	border-bottom: 1px solid var(--bv-color-border);
}

body.boravision .wc-block-cart-items .wc-block-cart-items__row {
	border-bottom: 1px solid var(--bv-color-border);
}

body.boravision .wc-block-cart-items .wc-block-cart-items__row > td {
	padding-top: 24px;
	padding-bottom: 24px;
	border: 0;
}

body.boravision .wc-block-cart-item__image {
	width: 120px;
}

body.boravision .wc-block-cart-item__image a {
	display: block;
	overflow: hidden;
	border-radius: var(--bv-radius);
	background: var(--bv-color-surface);
}

body.boravision .wc-block-cart-item__image img {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	object-fit: contain;
}

body.boravision .wc-block-cart-item__product {
	padding-left: 20px;
}

body.boravision .wc-block-components-product-name {
	color: var(--bv-color-black);
	font-family: var(--bv-font-ui);
	font-size: 18px;
	font-weight: 600;
	text-decoration: none;
}

body.boravision .wc-block-components-product-name:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

body.boravision .wc-block-cart-item__prices,
body.boravision .wc-block-components-product-price {
	color: var(--bv-color-black);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

body.boravision .wc-block-components-product-metadata {
	color: var(--bv-color-text-muted);
	font-size: 14px;
	line-height: 1.45;
}

body.boravision .wc-block-components-product-metadata__description p {
	display: -webkit-box;
	overflow: hidden;
	margin: 4px 0 0;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

body.boravision .wc-block-cart-item__total {
	color: var(--bv-color-black);
	font-size: 18px;
	font-weight: 600;
}

/* Quantity: a pill like the product page. */
body.boravision .wc-block-components-quantity-selector {
	overflow: hidden;
	width: 120px;
	height: 44px;
	border: 1px solid var(--bv-color-border);
	border-radius: var(--bv-radius-full);
	background: var(--bv-color-white);
}

body.boravision .wc-block-components-quantity-selector::after {
	display: none;
}

body.boravision .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input {
	min-height: 0;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
	color: var(--bv-color-black);
	font-weight: 600;
}

body.boravision .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	min-width: 38px;
	border: 0;
	background: none;
	color: var(--bv-color-black);
	opacity: 1;
}

body.boravision .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled {
	opacity: 0.3;
}

body.boravision .wc-block-cart-item__remove-link {
	color: var(--bv-color-text-muted);
}

body.boravision .wc-block-cart-item__remove-link:hover {
	color: var(--bv-color-black);
}

/* ---------- Checkout form ---------- */

body.boravision .wc-block-components-checkout-step {
	margin-bottom: 32px;
	padding: 0;
	border: 0;
}

body.boravision .wc-block-components-checkout-step::after {
	display: none;
}

body.boravision .wc-block-components-checkout-step__heading {
	margin: 0 0 14px;
}

body.boravision .wc-block-components-checkout-step__title,
body.boravision .wc-block-components-title.wc-block-components-title {
	color: var(--bv-color-black);
	font-family: var(--bv-font-heading);
	font-size: clamp(24px, 2.4vw, 30px);
	font-weight: 800;
	line-height: 1;
	text-transform: uppercase;
}

body.boravision .wc-block-components-checkout-step__description {
	color: var(--bv-color-text-muted);
	font-size: 15px;
}

body.boravision .wc-block-components-text-input input,
body.boravision .wc-block-components-combobox .wc-block-components-combobox-control input,
body.boravision .wc-blocks-components-select .wc-blocks-components-select__select,
body.boravision .wc-block-components-textarea {
	min-height: var(--bv-control-height);
	border: 1px solid var(--bv-color-border);
	border-radius: var(--bv-radius);
	background: var(--bv-color-white);
	box-shadow: none;
	color: var(--bv-color-black);
	font-family: var(--bv-font-body);
	font-size: 16px;
}

body.boravision .wc-block-components-text-input input:focus,
body.boravision .wc-block-components-combobox .wc-block-components-combobox-control input:focus,
body.boravision .wc-blocks-components-select .wc-blocks-components-select__select:focus,
body.boravision .wc-block-components-textarea:focus {
	border-color: var(--bv-color-black);
	outline: 0;
	box-shadow: var(--bv-shadow-focus);
}

body.boravision .wc-block-components-text-input label,
body.boravision .wc-block-components-combobox label,
body.boravision .wc-blocks-components-select__label {
	color: var(--bv-color-text-muted);
	font-family: var(--bv-font-body);
}

body.boravision .wc-block-components-text-input.has-error input,
body.boravision .wc-block-components-validation-error {
	border-color: var(--bv-color-danger);
	color: var(--bv-color-danger);
}

body.boravision .wc-block-components-address-form__address_2-toggle,
body.boravision .wc-block-checkout__guest-checkout-notice,
body.boravision .wc-block-checkout__terms {
	color: var(--bv-color-text-muted);
	font-size: 14px;
}

body.boravision .wc-block-checkout__terms a,
body.boravision .wc-block-checkout__login-prompt {
	color: var(--bv-color-black);
	font-weight: 600;
}

/* Shipping and payment choices as soft cards. */
body.boravision .wc-block-components-radio-control--highlight-checked,
body.boravision .wc-block-components-radio-control-accordion-option,
body.boravision .wc-block-components-radio-control__option {
	border-color: var(--bv-color-border);
	border-radius: var(--bv-radius);
	box-shadow: none;
}

body.boravision .wc-block-components-radio-control--highlight-checked::after,
body.boravision .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
body.boravision .wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted {
	border-radius: var(--bv-radius);
	box-shadow: inset 0 0 0 2px var(--bv-color-black);
}

body.boravision .wc-block-components-radio-control__input {
	border-color: var(--bv-color-text-muted);
}

body.boravision .wc-block-components-radio-control__input:checked {
	border-color: var(--bv-color-black);
}

body.boravision .wc-block-components-radio-control__input:checked::before {
	background: var(--bv-color-black);
}

body.boravision .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"] {
	border-color: var(--bv-color-text-muted);
	border-radius: var(--bv-radius-sm);
}

body.boravision .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:checked {
	border-color: var(--bv-color-black);
	background: var(--bv-color-black);
}

body.boravision .wc-block-components-checkbox .wc-block-components-checkbox__mark {
	fill: var(--bv-color-white);
}

/* Order summary items in the checkout sidebar. */
body.boravision .wc-block-components-order-summary-item__image img {
	border-radius: var(--bv-radius-sm);
	background: var(--bv-color-white);
}

body.boravision .wc-block-components-order-summary-item__quantity {
	border: 0;
	background: var(--bv-color-black);
	color: var(--bv-color-white);
	box-shadow: none;
}

/* Notices */
body.boravision .wc-block-components-notice-banner {
	border-radius: var(--bv-radius);
	font-size: 15px;
}

/* Empty cart */
body.boravision .wp-block-woocommerce-empty-cart-block :is(h2, .wc-block-cart__empty-cart__title) {
	color: var(--bv-color-black);
	font-family: var(--bv-font-heading);
	font-size: clamp(28px, 3vw, 40px);
	font-weight: 800;
	text-transform: uppercase;
}

/* ---------- Phones ---------- */

@media (max-width: 767px) {
	body.boravision .wc-block-cart-item__image {
		width: 88px;
	}

	body.boravision .wc-block-cart-item__product {
		padding-left: 14px;
	}

	body.boravision .wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block,
	body.boravision .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block {
		padding: 4px 16px;
	}

	/* Keep the order button clear of the fixed mobile tab bar. */
	body.boravision .wc-block-cart__submit-container--sticky {
		bottom: calc(64px + env(safe-area-inset-bottom, 0px));
	}
}

/* The totals block draws its own dark top rule under the coupon panel. */
body.boravision :is(.wp-block-woocommerce-cart-order-summary-totals-block, .wp-block-woocommerce-checkout-order-summary-totals-block) {
	border-top-color: var(--bv-color-border);
}
