/*
Theme Name: Smart Building Solutions
Theme URI: https://example.com/
Description: Hello Elementor child theme with Smart Building Solutions WooCommerce shop, product, cart, checkout and account styling.
Version: 1.8.67
Template: hello-elementor
Text Domain: smart-building-solutions
*/
/* v1.8.64 — Make SBS the single owner of AJAX add-to-cart clicks and normalize duplicate add requests server-side so one click can never create quantity 2. */
/* v1.8.63 — Stretch checkout shipping-rate cards to the full order-summary width, including single-method/hidden-input cases. */
/* v1.8.62 — Prevent duplicate add-to-cart quantity on first add and remove checkout bottom blank-space regressions. */
/* v1.8.61 — Fixed checkout order-summary shipping methods so rates use the full sidebar width with stable radio, label, and price alignment. */
/* v1.8.60 — Finish clicks now always show the saved mapped/Large Display Image in the single-product gallery. */
/* v1.8.59 — Product Finish Library now uses the standard .sbs-single-section h2 style, with no product container or finish-specific heading class. */
/* v1.8.58 — Single-product Finish Library emitted after the summary now spans both product grid columns instead of remaining in the left column. */
/* v1.8.54 — Fixed Project Planner to a stable 1180x720 desktop canvas with viewport-safe height, consistent section padding, and internal-only scrolling. */
/* v1.8.53 — Project Planner modal now overrides generic 920px product-widget modal CSS, removes horizontal overflow, and keeps the close control outside the step header. */

/* v1.8.51 — Request Price modals are queued per product and rendered from wp_footer, never inside product cards/sliders. */
/* v1.8.52 — Preserve Project Planner Elementor CSS inside Request Price modal and remove generic modal layout conflicts. */
/* v1.8.50 — Smooth route handoff: stable scrollbar geometry and pure cross-fade view transitions to remove page-change snapping. */
/* v1.8.49 — Glitch-safe navigation: decode-safe Home preloader and no double Home view-transition snapshot. */
/* v1.8.48 — Server-safe backend pass: removed ORDER BY RAND(), disabled speculative prefetch, and switched faceted term calculation to a low-query default. */
/* v1.8.47 — Separated the home logo preloader from navigation progress: home is fade-only, while page/AJAX navigation uses a top left-to-right fill bar. */
/* v1.8.46 — Restored a fail-open home-only soft preloader and upgraded inner-page navigation to a slim GPU route progress bar. */
/* v1.8.43 — Fixed Popular/Featured fallback container sizing and moved carousel controls to an independent lightweight runtime. */
/* v1.8.45 — Stability/instant-response pass: removed blocking shop/checkout overlays, shortened route transition, and made dynamic navigation fail open. */
/* v1.8.44 — Fixed Webshop product pagination with results-only AJAX, cache-safe public fragments, timeout/native fallback, and non-blocking initial shop render. */
/* v1.8.42 — Added native cross-document View Transitions for fast, smooth route changes without SPA navigation or extra JS. */
/* v1.8.37 — Fixed checkout payment gateway inner labels/checkboxes inheriting the outer payment-method card styles. */
/* v1.8.35 — Removed permanent /404-page/ redirect and limited weighted random ordering to shop/taxonomy archives so single-product routing remains untouched. */
/* v1.8.34 — Popular Products now requires real sales, falls back to Featured products, and hides when neither exists. */
/* v1.8.14 — Connected faceted filters: every taxonomy dynamically narrows Brand and the other taxonomy groups in both top refinements and sidebar. */
/* v1.8.13 — Conditional CSS loading only; existing design, JS, animations, preloader, filters, and side-cart behavior remain unchanged. */
/* v1.8.11 — Keep Brand first/global and restrict the other top refinements to the selected brand range. */
/* v1.8.10 — Keep selected Webshop filters visible in the sidebar, including zero-count active terms. */



/* v1.7.30 — per-page layout support and WooCommerce thank-you page container */
:root {
	--sbs-page-container: var(--sbs-wc-container, 1370px);
	--sbs-page-gutter: clamp(18px, 3vw, 32px);
}

body.sbs-page-layout-container .main-wrap > main,
body.sbs-page-layout-container .main-wrap > .site-main,
body.sbs-page-layout-container .main-wrap .site-main,
body.sbs-page-layout-container .main-wrap .page-content,
body.sbs-page-layout-container .main-wrap .woocommerce {
	max-width: var(--sbs-page-container);
	width: min(100% - (var(--sbs-page-gutter) * 2), var(--sbs-page-container));
	margin-left: auto;
	margin-right: auto;
}

body.sbs-page-layout-fluid .main-wrap > main,
body.sbs-page-layout-fluid .main-wrap > .site-main,
body.sbs-page-layout-fluid .main-wrap .site-main,
body.sbs-page-layout-fluid .main-wrap .page-content,
body.sbs-page-layout-fluid .main-wrap .woocommerce {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

body.sbs-page-layout-fluid_inner .main-wrap > main,
body.sbs-page-layout-fluid_inner .main-wrap > .site-main,
body.sbs-page-layout-fluid_inner .main-wrap .site-main,
body.sbs-page-layout-fluid_inner .main-wrap .page-content {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

body.sbs-page-layout-fluid_inner .main-wrap > main > *,
body.sbs-page-layout-fluid_inner .main-wrap > .site-main > *,
body.sbs-page-layout-fluid_inner .main-wrap .page-content > * {
	max-width: var(--sbs-page-container);
	width: min(100% - (var(--sbs-page-gutter) * 2), var(--sbs-page-container));
	margin-left: auto;
	margin-right: auto;
}

body.woocommerce-order-received.sbs-order-received-container .main-wrap {
	background: #f6f7f4;
}

body.woocommerce-order-received.sbs-order-received-container .main-wrap > main,
body.woocommerce-order-received.sbs-order-received-container .main-wrap > .site-main,
body.woocommerce-order-received.sbs-order-received-container .main-wrap .site-main,
body.woocommerce-order-received.sbs-order-received-container .main-wrap .page-content,
body.woocommerce-order-received.sbs-order-received-container .main-wrap .woocommerce {
	max-width: var(--sbs-page-container);
	width: min(100% - (var(--sbs-page-gutter) * 2), var(--sbs-page-container));
	margin-left: auto;
	margin-right: auto;
}

body.woocommerce-order-received.sbs-order-received-container .main-wrap .woocommerce {
	padding-top: clamp(40px, 6vw, 80px);
	padding-bottom: clamp(48px, 7vw, 96px);
}

body.woocommerce-order-received.sbs-order-received-container .woocommerce-order {
	background: #ffffff;
	border: 1px solid rgba(16, 24, 40, 0.08);
	border-radius: 26px;
	box-shadow: 0 24px 70px rgba(16, 24, 40, 0.08);
	padding: clamp(24px, 4vw, 48px);
	max-width: 940px;
	margin: 0 auto;
}

body.woocommerce-order-received.sbs-order-received-container .woocommerce-notice--success,
body.woocommerce-order-received.sbs-order-received-container .woocommerce-thankyou-order-received {
	font-size: clamp(22px, 3vw, 34px);
	font-weight: 850;
	line-height: 1.2;
	color: #101828;
	margin-bottom: 24px;
	text-align: center;
}

body.woocommerce-order-received.sbs-order-received-container .woocommerce-order-overview {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	padding: 0;
	margin: 0 0 32px;
}
body.woocommerce-order-received.sbs-order-received-container p{
	text-align: center;
}
.woocommerce .woocommerce-customer-details address p{
	text-align: left;
	margin-bottom: 0;
	margin-top: 10px;
}
.woocommerce-order-details__title,
.woocommerce-column__title{
	font-size: 24px !important;
	margin-top: 0;
}
body.woocommerce-order-received.sbs-order-received-container .woocommerce-order-overview::before{
	display: none;
}
body.woocommerce-order-received.sbs-order-received-container .woocommerce-order-overview li {
	list-style: none;
	border: 1px solid rgba(16, 24, 40, 0.08);
	border-radius: 16px;
	padding: 16px;
	background: #f8faf7;
	margin-right: 0 !important;
	flex: 0 0 calc(25.3333% - 5px);
}

@media (max-width: 767px) {
	body.sbs-page-layout-container .main-wrap > main,
	body.sbs-page-layout-container .main-wrap > .site-main,
	body.sbs-page-layout-container .main-wrap .site-main,
	body.sbs-page-layout-container .main-wrap .page-content,
	body.sbs-page-layout-container .main-wrap .woocommerce,
	body.woocommerce-order-received.sbs-order-received-container .main-wrap > main,
	body.woocommerce-order-received.sbs-order-received-container .main-wrap > .site-main,
	body.woocommerce-order-received.sbs-order-received-container .main-wrap .site-main,
	body.woocommerce-order-received.sbs-order-received-container .main-wrap .page-content,
	body.woocommerce-order-received.sbs-order-received-container .main-wrap .woocommerce {
		width: min(100% - 32px, var(--sbs-page-container));
	}

	body.woocommerce-order-received.sbs-order-received-container .woocommerce-order {
		border-radius: 18px;
		padding: 22px;
	}
}


.woocommerce-order-received .woocommerce-table--order-details {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	background: #ffffff;
}

.woocommerce-order-received .woocommerce-table--order-details thead th {
	padding: 18px 32px;
	background: #f4f2ec;
	border: 0;
	color: #77736a;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.woocommerce-order-received .woocommerce-table--order-details thead th:last-child {
	text-align: right;
}

.woocommerce-order-received .woocommerce-table--order-details tbody td {
	padding: 26px 32px;
	border: 0;
	border-bottom: 1px solid #ecebe6;
	color: #111111;
	font-size: 16px;
	vertical-align: middle;
}

.woocommerce-order-received .woocommerce-table--order-details .product-name a {
	color: #111111;
	font-size: 17px;
	font-weight: 800;
	text-decoration: none;
}

.woocommerce-order-received .woocommerce-table--order-details .product-name a:hover {
	color: #c7a04a;
}

.woocommerce-order-received .woocommerce-table--order-details .product-quantity {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-left: 10px;
	padding: 6px 11px;
	background: #111111;
	border-radius: 999px;
	color: #ffffff;
	font-size: 12px;
	font-weight: 800;
	line-height: 1;
}

.woocommerce-order-received .woocommerce-table--order-details .product-total {
	text-align: right;
	font-size: 17px;
	font-weight: 900;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot {
	background: #faf9f6;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot tr th,
.woocommerce-order-received .woocommerce-table--order-details tfoot tr td {
	padding: 16px 32px;
	border: 0;
	border-bottom: 1px solid #ecebe6;
	color: #111111;
	font-size: 15px;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot tr th {
	color: #77736a;
	font-weight: 700;
	text-align: left;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot tr td {
	text-align: right;
	font-weight: 800;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot tr:nth-last-child(2) th,
.woocommerce-order-received .woocommerce-table--order-details tfoot tr:nth-last-child(2) td {
	padding-top: 24px;
	padding-bottom: 24px;
	background: #ffffff;
	color: #111111;
	font-size: 22px;
	font-weight: 900;
}

.woocommerce-order-received .woocommerce-table--order-details tfoot tr:last-child th,
.woocommerce-order-received .woocommerce-table--order-details tfoot tr:last-child td {
	border-bottom: 0;
}

.woocommerce-order-received .woocommerce-table--order-details .woocommerce-Price-amount {
	font-weight: 900;
	color: #111111;
}

.woocommerce-order-received .woocommerce-table--order-details .shipped_via {
	display: inline-block;
	margin-left: 8px;
	padding: 5px 9px;
	background: #ede8da;
	border-radius: 999px;
	color: #7a642d;
	font-size: 11px;
	font-weight: 800;
	vertical-align: middle;
}

/* Mobile */
@media (max-width: 767px) {
	.woocommerce-order-received .woocommerce-order-details {
		margin: 22px 14px;
		border-radius: 22px;
	}

	.woocommerce-order-received .woocommerce-order-details__title {
		padding: 22px;
		font-size: 22px;
	}

	.woocommerce-order-received .woocommerce-table--order-details thead {
		display: none;
	}

	.woocommerce-order-received .woocommerce-table--order-details tbody tr,
	.woocommerce-order-received .woocommerce-table--order-details tbody td {
		display: block;
		width: 100%;
		text-align: left;
	}

	.woocommerce-order-received .woocommerce-table--order-details tbody td {
		padding: 20px 22px;
	}

	.woocommerce-order-received .woocommerce-table--order-details tbody td.product-total {
		padding-top: 0;
		text-align: left;
	}

	.woocommerce-order-received .woocommerce-table--order-details tfoot tr {
		display: flex;
		justify-content: space-between;
		gap: 16px;
		padding: 15px 22px;
		border-bottom: 1px solid #ecebe6;
	}

	.woocommerce-order-received .woocommerce-table--order-details tfoot th,
	.woocommerce-order-received .woocommerce-table--order-details tfoot td {
		display: block;
		width: auto;
		padding: 0;
		border: 0;
		text-align: right;
	}

	.woocommerce-order-received .woocommerce-table--order-details tfoot th {
		text-align: left;
	}

	.woocommerce-order-received .woocommerce-table--order-details tfoot tr:nth-last-child(2) {
		background: #ffffff;
	}

	.woocommerce-order-received .woocommerce-table--order-details tfoot tr:nth-last-child(2) th,
	.woocommerce-order-received .woocommerce-table--order-details tfoot tr:nth-last-child(2) td {
		font-size: 18px;
	}
}

/* v1.7.98 — optional bottom-right floating trigger for the existing SBS side cart. */
.sbs-floating-cart {
	position: fixed !important;
	right: max(22px, env(safe-area-inset-right)) !important;
	bottom: max(22px, env(safe-area-inset-bottom)) !important;
	z-index: 99990 !important;
	width: 58px !important;
	height: 58px !important;
	min-width: 58px !important;
	min-height: 58px !important;
	padding: 0 !important;
	border: 1px solid rgba(255,255,255,.32) !important;
	border-radius: 999px !important;
	background: var(--sbs-wc-primary, #56B947) !important;
	color: #fff !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	text-decoration: none !important;
	line-height: 1 !important;
	isolation: isolate !important;
	-webkit-tap-highlight-color: transparent !important;
	transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, opacity .2s ease, visibility .2s ease !important;
}

.sbs-floating-cart:hover,
.sbs-floating-cart:focus-visible {
	background: #43a934 !important;
	color: #fff !important;
	transform: translateY(-3px) !important;
	box-shadow: 0 18px 42px rgba(16,24,40,.26), 0 7px 18px rgba(86,185,71,.34) !important;
	outline: none !important;
}

.sbs-floating-cart:focus-visible {
	box-shadow: 0 0 0 4px rgba(86,185,71,.24), 0 18px 42px rgba(16,24,40,.26) !important;
}

.sbs-floating-cart__icon {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-size: var(--sbs-floating-cart-icon-size, 27px) !important;
	line-height: 1 !important;
	color: inherit !important;
}

.sbs-floating-cart__icon i {
	margin: 0 !important;
	font-size: inherit !important;
	line-height: 1 !important;
	color: inherit !important;
}


.sbs-floating-cart__svg,
.sbs-floating-cart__custom-image {
	display: block !important;
	width: 1em !important;
	height: 1em !important;
	max-width: 1em !important;
	max-height: 1em !important;
	margin: 0 !important;
	object-fit: contain !important;
}

.sbs-floating-cart__svg {
	fill: none !important;
	stroke: currentColor !important;
	stroke-width: 1.8 !important;
	stroke-linecap: round !important;
	stroke-linejoin: round !important;
}

.sbs-floating-cart__count {
	position: absolute !important;
	top: -5px !important;
	right: -4px !important;
	z-index: 2 !important;
	min-width: 23px !important;
	height: 23px !important;
	padding: 0 5px !important;
	border: 2px solid #fff !important;
	border-radius: 999px !important;
	background: #101828 !important;
	color: #fff !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-family: inherit !important;
	font-size: 11px !important;
	font-weight: 800 !important;
	line-height: 1 !important;
	box-sizing: border-box !important;
	animation: sbs-floating-cart-count-in .22s ease both;
}

body.sbs-side-cart-open .sbs-floating-cart {
	opacity: 0 !important;
	visibility: hidden !important;
	pointer-events: none !important;
	transform: scale(.88) !important;
}

@keyframes sbs-floating-cart-count-in {
	from { transform: scale(.72); opacity: .45; }
	to { transform: scale(1); opacity: 1; }
}

@media (max-width: 767px) {
	.sbs-floating-cart {
		right: max(14px, env(safe-area-inset-right)) !important;
		bottom: max(14px, env(safe-area-inset-bottom)) !important;
		width: 52px !important;
		height: 52px !important;
		min-width: 52px !important;
		min-height: 52px !important;
	}

	.sbs-floating-cart__icon {
		font-size: min(var(--sbs-floating-cart-icon-size, 27px), 26px) !important;
	}

	.sbs-floating-cart__count {
		min-width: 21px !important;
		height: 21px !important;
		font-size: 10px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.sbs-floating-cart,
	.sbs-floating-cart__count {
		transition: none !important;
		animation: none !important;
	}
}

@media print {
	.sbs-floating-cart {
		display: none !important;
	}
}


/* v1.8.32 — assign Elementor landing-page layouts to all products, categories, or individual products. */
.sbs-elementor-product-layout {
	clear: both;
	width: 100%;
	max-width: none;
	margin: 0;
}

.sbs-elementor-product-layout--append {
	padding-top: clamp(30px, 5vw, 72px);
}

body.sbs-elementor-product-layout-replace .main-wrap > .sbs-elementor-product-layout--replace,
body.sbs-elementor-product-layout-replace .sbs-elementor-product-layout--replace {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

body.sbs-elementor-product-layout-replace.sbs-page-layout-container .main-wrap > main.sbs-elementor-product-layout--replace,
body.sbs-elementor-product-layout-replace.sbs-page-layout-container .main-wrap > .site-main.sbs-elementor-product-layout--replace {
	width: 100%;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* v1.8.45 — stability mode permanently fail-opens legacy global loaders. */
html.sbs-global-loader-active,
body.sbs-global-loader-active {
	overflow: auto !important;
}

.sbs-global-gsap-loader,
[data-sbs-global-loader] {
	display: none !important;
	visibility: hidden !important;
	pointer-events: none !important;
}
