/* Dental Express — catalog product loader */
.dx-product-loader[hidden] {
	display: none !important;
}

.dx-product-loader {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: grid;
	place-items: center;
	padding: 24px;
	background: rgba(247, 250, 252, .90);
	-webkit-backdrop-filter: blur(7px) saturate(.92);
	backdrop-filter: blur(7px) saturate(.92);
	opacity: 0;
	visibility: hidden;
	transition: opacity .2s ease, visibility .2s ease;
}

.dx-product-loader.is-visible {
	opacity: 1;
	visibility: visible;
}

html.dx-product-loader-active,
body.dx-product-loader-active {
	cursor: progress !important;
}

.dx-product-loader__panel {
	position: relative;
	width: min(300px, calc(100vw - 40px));
	padding: 24px 24px 20px;
	border: 1px solid #d5e1ea;
	border-top: 4px solid #005596;
	border-bottom: 3px solid #d71920;
	background: linear-gradient(180deg, #fff 0%, #f8fbfd 100%);
	box-shadow: 0 20px 52px rgba(16, 42, 67, .18);
	text-align: center;
	direction: rtl;
	transform: translateY(8px) scale(.98);
	transition: transform .22s ease;
	overflow: hidden;
}

.dx-product-loader.is-visible .dx-product-loader__panel {
	transform: translateY(0) scale(1);
}

.dx-product-loader__brand {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-bottom: 14px;
	color: #51697c;
	font-size: 10px;
	font-weight: 900;
	letter-spacing: .7px;
	direction: ltr;
}

.dx-product-loader__brand::before,
.dx-product-loader__brand::after {
	content: "";
	width: 22px;
	height: 2px;
	background: #005596;
}

.dx-product-loader__brand::after {
	background: #d71920;
}

.dx-product-loader__spinner {
	position: relative;
	width: 58px;
	height: 58px;
	margin: 0 auto 15px;
}

.dx-product-loader__ring {
	position: absolute;
	inset: 0;
	border: 3px solid transparent;
	border-radius: 50%;
	animation: dxProductLoaderSpin .82s linear infinite;
}

.dx-product-loader__ring--blue {
	border-top-color: #005596;
	border-right-color: #168ac8;
}

.dx-product-loader__ring--red {
	inset: 8px;
	border-bottom-color: #d71920;
	border-left-color: #ef4050;
	animation-direction: reverse;
	animation-duration: .68s;
}

.dx-product-loader__spinner i {
	position: absolute;
	inset: 22px;
	border-radius: 50%;
	background: #0b3554;
	box-shadow: 0 0 0 4px #eef4f8;
}

.dx-product-loader__panel > strong {
	display: block;
	margin: 0;
	color: #0b3554;
	font-size: 15px;
	font-weight: 950;
	line-height: 1.6;
}

.dx-product-loader__panel > small {
	display: block;
	margin-top: 3px;
	color: #6a7f90;
	font-size: 11px;
	font-weight: 750;
	line-height: 1.7;
}

.dx-product-loader__progress {
	position: relative;
	display: flex;
	height: 3px;
	margin-top: 16px;
	background: #e7eef3;
	overflow: hidden;
}

.dx-product-loader__progress span,
.dx-product-loader__progress i {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 42%;
	animation: dxProductLoaderSlide 1.15s ease-in-out infinite;
}

.dx-product-loader__progress span {
	background: #005596;
}

.dx-product-loader__progress i {
	background: #d71920;
	animation-delay: .34s;
}

/* Improve common Flatsome/WooCommerce inline spinners on product archives. */
body.dx-product-loader-enabled .loading-spin,
body.dx-product-loader-enabled .ux-relay .loading-spin,
body.dx-product-loader-enabled .shop-container .loading-spin {
	width: 42px !important;
	height: 42px !important;
	border: 3px solid #dce7ef !important;
	border-top-color: #005596 !important;
	border-right-color: #d71920 !important;
	border-radius: 50% !important;
	background: none !important;
	box-shadow: 0 6px 18px rgba(16, 42, 67, .10) !important;
	animation: dxProductLoaderSpin .8s linear infinite !important;
}

body.dx-product-loader-enabled .shop-container .blockUI.blockOverlay,
body.dx-product-loader-enabled .products .blockUI.blockOverlay {
	background: rgba(248, 251, 253, .82) !important;
	opacity: 1 !important;
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
}

@keyframes dxProductLoaderSpin {
	to { transform: rotate(360deg); }
}

@keyframes dxProductLoaderSlide {
	0% { transform: translateX(155%); }
	50% { transform: translateX(20%); }
	100% { transform: translateX(-155%); }
}

@media (max-width: 549px) {
	.dx-product-loader {
		padding: 16px;
	}

	.dx-product-loader__panel {
		width: min(280px, calc(100vw - 28px));
		padding: 21px 18px 18px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.dx-product-loader,
	.dx-product-loader__panel {
		transition: none;
	}

	.dx-product-loader__ring,
	.dx-product-loader__progress span,
	.dx-product-loader__progress i,
	body.dx-product-loader-enabled .loading-spin {
		animation-duration: 1.8s !important;
	}
}


/* -------------------------------------------------------------------------
 * V10.3 — Exact Flatsome native bottom spinner redesign
 * Keeps the native loader in its original position; only its visual is
 * replaced with a compact Dental Express blue/red double ring.
 * ------------------------------------------------------------------------- */
:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
) {
	position: relative !important;
	display: block !important;
	box-sizing: border-box !important;
	width: 46px !important;
	height: 46px !important;
	min-width: 46px !important;
	min-height: 46px !important;
	margin: 14px auto 10px !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50% !important;
	background:
		radial-gradient(circle at 50% 50%, #0b3554 0 4px, #edf3f7 4.5px 8px, transparent 8.5px) !important;
	box-shadow: 0 8px 20px rgba(11, 53, 84, .13) !important;
	overflow: visible !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
	animation: none !important;
	font-size: 0 !important;
	line-height: 0 !important;
}

:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
)::before,
:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
)::after {
	content: "" !important;
	position: absolute !important;
	display: block !important;
	box-sizing: border-box !important;
	border-radius: 50% !important;
	pointer-events: none !important;
}

:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
)::before {
	inset: 0 !important;
	border: 3px solid #dce7ef !important;
	border-top-color: #005596 !important;
	border-right-color: #168ac8 !important;
	animation: dxInlineProductSpinnerBlue .82s linear infinite !important;
}

:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
)::after {
	inset: 8px !important;
	border: 3px solid transparent !important;
	border-bottom-color: #d71920 !important;
	border-left-color: #ef4050 !important;
	animation: dxInlineProductSpinnerRed .68s linear infinite !important;
}

/* Flatsome occasionally draws the old grey spinner through a child node. */
:where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
) > * {
	display: none !important;
}

/* Give the native loader a little breathing room without creating a panel. */
:where(
	.ux-relay,
	.infinite-scroll-loader,
	.shop-container > .loading-spin,
	.products + .loading-spin
) {
	text-align: center !important;
}

@keyframes dxInlineProductSpinnerBlue {
	to { transform: rotate(360deg); }
}

@keyframes dxInlineProductSpinnerRed {
	to { transform: rotate(-360deg); }
}

@media (max-width: 549px) {
	:where(
		.loading-spin,
		.loading-spinner,
		.ux-relay .loading-spin,
		.shop-container .loading-spin,
		.woocommerce .loading-spin,
		.products .loading-spin,
		.infinite-scroll-loader .loading-spin,
		.pagination-next .loading-spin
	) {
		width: 42px !important;
		height: 42px !important;
		min-width: 42px !important;
		min-height: 42px !important;
		margin-top: 12px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	:where(
		.loading-spin,
		.loading-spinner,
		.ux-relay .loading-spin,
		.shop-container .loading-spin,
		.woocommerce .loading-spin,
		.products .loading-spin,
		.infinite-scroll-loader .loading-spin,
		.pagination-next .loading-spin
	)::before,
	:where(
		.loading-spin,
		.loading-spinner,
		.ux-relay .loading-spin,
		.shop-container .loading-spin,
		.woocommerce .loading-spin,
		.products .loading-spin,
		.infinite-scroll-loader .loading-spin,
		.pagination-next .loading-spin
	)::after {
		animation-duration: 1.8s !important;
	}
}

/* -------------------------------------------------------------------------
 * V10.4 — Native bottom spinner spacing
 * Adds a little breathing room above the footer without changing the loader
 * position, animation, or the product grid layout.
 * ------------------------------------------------------------------------- */
body.dx-product-loader-enabled :where(
	.loading-spin,
	.loading-spinner,
	.ux-relay .loading-spin,
	.shop-container .loading-spin,
	.woocommerce .loading-spin,
	.products .loading-spin,
	.infinite-scroll-loader .loading-spin,
	.pagination-next .loading-spin
) {
	margin-top: 18px !important;
	margin-bottom: 34px !important;
}

body.dx-product-loader-enabled :where(
	.ux-relay,
	.infinite-scroll-loader
) {
	padding-bottom: 14px !important;
}

@media (max-width: 549px) {
	body.dx-product-loader-enabled :where(
		.loading-spin,
		.loading-spinner,
		.ux-relay .loading-spin,
		.shop-container .loading-spin,
		.woocommerce .loading-spin,
		.products .loading-spin,
		.infinite-scroll-loader .loading-spin,
		.pagination-next .loading-spin
	) {
		margin-top: 16px !important;
		margin-bottom: 28px !important;
	}

	body.dx-product-loader-enabled :where(
		.ux-relay,
		.infinite-scroll-loader
	) {
		padding-bottom: 10px !important;
	}
}
