.woocommerce a,
.woocommerce-page a {
	color: var(--bf-primary);
}

.woocommerce a:hover,
.woocommerce-page a:hover {
	color: var(--bf-primary-hover);
}

.woocommerce a:focus-visible,
.woocommerce button:focus-visible,
.woocommerce input:focus-visible,
.woocommerce select:focus-visible,
.woocommerce textarea:focus-visible,
.woocommerce-page a:focus-visible,
.woocommerce-page button:focus-visible,
.woocommerce-page input:focus-visible,
.woocommerce-page select:focus-visible,
.woocommerce-page textarea:focus-visible,
.bf-balloon-product-badges:focus-visible {
	outline: 3px solid var(--bf-focus);
	outline-offset: 3px;
	box-shadow: 0 0 0 2px var(--bf-background);
}

.woocommerce .price,
.woocommerce-page .price {
	color: var(--bf-text);
	font-variant-numeric: lining-nums;
}

.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button,
.woocommerce #respond input#submit,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce a.button.alt,
.woocommerce-page button.button,
.woocommerce-page input.button,
.woocommerce-page a.button,
.woocommerce-page #respond input#submit {
	min-height: 44px;
	padding: var(--bf-space-sm) var(--bf-space-md);
	border: 1px solid var(--bf-primary);
	border-radius: var(--bf-radius-pill);
	background: var(--bf-primary);
	color: var(--bf-buy-text);
	transition: background-color var(--bf-transition), border-color var(--bf-transition), color var(--bf-transition);
}

.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce a.button.alt:hover,
.woocommerce-page button.button:hover,
.woocommerce-page input.button:hover,
.woocommerce-page a.button:hover,
.woocommerce-page #respond input#submit:hover {
	border-color: var(--bf-primary-hover);
	background: var(--bf-primary-hover);
	color: var(--bf-buy-text);
}

.woocommerce button.button:disabled,
.woocommerce button.button:disabled[disabled],
.woocommerce input.button:disabled,
.woocommerce-page button.button:disabled {
	border-color: var(--bf-disabled);
	background: var(--bf-disabled);
	color: var(--bf-buy-text);
	opacity: 1;
}

/* Green is reserved for actions that directly advance a purchase. */
ul.products li.product a.button,
ul.products li.product .button,
.single-product div.product .single_add_to_cart_button,
.woocommerce a.checkout-button,
.woocommerce .wc-proceed-to-checkout a.checkout-button,
.woocommerce button#place_order,
.woocommerce #payment #place_order,
.woocommerce-page a.checkout-button,
.woocommerce-page button#place_order,
.woocommerce-page #payment #place_order {
	border-color: var(--bf-buy);
	background: var(--bf-buy);
	color: var(--bf-buy-text);
}

.woocommerce ul.products li.product a.button:hover,
.woocommerce ul.products li.product .button:hover,
.single-product div.product .single_add_to_cart_button:hover,
.woocommerce a.checkout-button:hover,
.woocommerce .wc-proceed-to-checkout a.checkout-button:hover,
.woocommerce button#place_order:hover,
.woocommerce #payment #place_order:hover,
.woocommerce-page a.checkout-button:hover,
.woocommerce-page button#place_order:hover,
.woocommerce-page #payment #place_order:hover {
	border-color: var(--bf-buy-hover);
	background: var(--bf-buy-hover);
	color: var(--bf-buy-text);
}

.woocommerce ul.products li.product a.button:disabled,
.woocommerce ul.products li.product .button:disabled,
.single-product div.product .single_add_to_cart_button:disabled,
.single-product div.product .single_add_to_cart_button.disabled,
.single-product div.product .single_add_to_cart_button.wc-variation-selection-needed,
.single-product div.product .single_add_to_cart_button.wc-variation-is-unavailable,
.woocommerce a.checkout-button.disabled,
.woocommerce button#place_order:disabled,
.woocommerce #payment #place_order:disabled,
.woocommerce-page button#place_order:disabled {
	border-color: var(--bf-buy-disabled);
	background: var(--bf-buy-disabled);
	color: var(--bf-buy-text);
	opacity: 1;
}

.woocommerce ul.products li.product a.button.loading,
.woocommerce ul.products li.product .button.loading,
.single-product div.product .single_add_to_cart_button.loading,
.woocommerce a.checkout-button.loading,
.woocommerce button#place_order.loading,
.woocommerce #payment #place_order.loading {
	opacity: 0.86;
	cursor: progress;
}

.woocommerce a.checkout-button.loading::before,
.woocommerce button#place_order.loading::before,
.woocommerce #payment #place_order.loading::before {
	width: 0.85em;
	height: 0.85em;
	margin-right: 0.55em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: var(--bf-radius-circle);
	content: "";
	animation: bf-balloon-spin var(--bf-loading-duration) linear infinite;
}

@keyframes bf-balloon-spin {
	to {
		transform: rotate(360deg);
	}
}

.woocommerce input.input-text,
.woocommerce textarea,
.woocommerce select,
.woocommerce-page input.input-text,
.woocommerce-page textarea,
.woocommerce-page select,
.woocommerce .quantity .qty,
.woocommerce-page .quantity .qty {
	min-height: 44px;
	border: 1px solid var(--bf-border);
	border-radius: var(--bf-radius-sm);
	background-color: var(--bf-background);
	color: var(--bf-text);
}

.woocommerce .quantity .qty,
.woocommerce-page .quantity .qty {
	max-width: 5rem;
	min-height: 44px;
	text-align: center;
}

.woocommerce nav.woocommerce-pagination ul,
.woocommerce-page nav.woocommerce-pagination ul {
	border: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--bf-space-xs);
}

.woocommerce nav.woocommerce-pagination ul li,
.woocommerce-page nav.woocommerce-pagination ul li {
	float: none;
	border: 0;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span,
.woocommerce-page nav.woocommerce-pagination ul li a,
.woocommerce-page nav.woocommerce-pagination ul li span {
	min-width: 44px;
	min-height: 44px;
	display: grid;
	place-items: center;
	border: 1px solid var(--bf-border);
	border-radius: var(--bf-radius-pill);
	background: var(--bf-background);
	color: var(--bf-primary);
}

.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce-page nav.woocommerce-pagination ul li a:hover,
.woocommerce-page nav.woocommerce-pagination ul li span.current {
	border-color: var(--bf-primary);
	background: var(--bf-primary);
	color: var(--bf-buy-text);
}

.woocommerce .woocommerce-breadcrumb,
.woocommerce-page .woocommerce-breadcrumb {
	color: var(--bf-muted);
}

.woocommerce .woocommerce-breadcrumb a,
.woocommerce-page .woocommerce-breadcrumb a {
	color: var(--bf-primary);
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before {
	border-color: var(--bf-border);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	border: 1px solid var(--bf-border);
	border-radius: var(--bf-radius-md) var(--bf-radius-md) 0 0;
	background: var(--bf-surface-soft);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	padding-inline: var(--bf-space-sm);
	color: var(--bf-muted);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	border-bottom-color: var(--bf-background);
	background: var(--bf-background);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--bf-primary);
}

.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error,
.woocommerce-page .woocommerce-message,
.woocommerce-page .woocommerce-info,
.woocommerce-page .woocommerce-error {
	border: 1px solid var(--bf-border);
	border-left: 4px solid var(--bf-primary);
	border-radius: var(--bf-radius-md);
	background: var(--bf-surface-soft);
	color: var(--bf-text);
}

.woocommerce .woocommerce-message::before,
.woocommerce-page .woocommerce-message::before {
	color: var(--bf-primary);
}

.woocommerce .woocommerce-info::before,
.woocommerce-page .woocommerce-info::before {
	color: var(--bf-primary);
}

.woocommerce .woocommerce-error,
.woocommerce-page .woocommerce-error {
	border-left-color: var(--bf-error);
}

.woocommerce .woocommerce-error::before,
.woocommerce-page .woocommerce-error::before,
.woocommerce a.remove,
.woocommerce-page a.remove {
	color: var(--bf-error) !important;
}

.woocommerce a.remove:hover,
.woocommerce-page a.remove:hover {
	background: var(--bf-error);
	color: var(--bf-buy-text) !important;
}

.woocommerce a.remove,
.woocommerce-page a.remove {
	width: 44px;
	min-width: 44px;
	height: 44px;
	min-height: 44px;
	display: inline-grid;
	place-items: center;
	border-radius: var(--bf-radius-circle);
}

.woocommerce .stock,
.woocommerce-page .stock {
	color: var(--bf-primary);
}

.woocommerce .stock.out-of-stock,
.woocommerce-page .stock.out-of-stock {
	color: var(--bf-error);
}

.woocommerce .input-group .btn-decrement,
.woocommerce .input-group .btn-increment,
.woocommerce-page .input-group .btn-decrement,
.woocommerce-page .input-group .btn-increment {
	min-width: 44px;
	min-height: 44px;
	border: 1px solid var(--bf-border);
	border-radius: var(--bf-radius-pill);
	background: var(--bf-surface-soft);
	color: var(--bf-primary);
}

@media (prefers-reduced-motion: reduce) {
	.woocommerce *,
	.woocommerce-page * {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* Mobile-first cart title scale, verified against the staged cart render. */
@media (max-width: 767px) {
	body.woocommerce-cart #jupiterx-main h1 {
		font-size: clamp(30px, 8vw, 34px);
		line-height: 1.12;
		text-wrap: balance;
	}
}


/* Contain the 4px Raven footer overflow observed on the mobile cart. */
@media (max-width: 767px) {
	body.woocommerce-cart footer.elementor-1898 .elementor-element-f1fb4d7 {
		overflow-x: clip;
	}
}


/* Keep the active WooCommerce cart step within the Big Festa brand palette. */
.jupiterx-wc-steps .jupiterx-wc-step-active .jupiterx-wc-step-number {
	background-color: var(--bf-primary);
	color: var(--bf-on-primary);
}
