/* Open Agency Page Loader */

html.oa-page-loader-active,
html.oa-page-loader-active body {
	overflow: hidden;
}

.oa-page-loader {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--oa-loader-bg, #fff);
	opacity: 1;
	visibility: visible;
	transition: opacity var(--oa-loader-fade, 500ms) ease, visibility var(--oa-loader-fade, 500ms) ease;
}

.oa-page-loader.is-hidden {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.oa-page-loader__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	padding: 2rem;
	max-width: min(92vw, 520px);
	text-align: center;
}

/* Logo */
.oa-page-loader__logo {
	display: block;
	max-width: min(80vw, 220px);
	height: auto;
}

/* Animated GIF slot */
.oa-page-loader__gif-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 80px;
	min-width: 120px;
}

.oa-page-loader__gif {
	display: block;
	max-width: var(--oa-loader-gif-max, 280px);
	width: 100%;
	height: auto;
	object-fit: contain;
}

/* GIF-only mode: no extra gap below empty indicator */
.oa-page-loader--gif .oa-page-loader__inner {
	gap: 1rem;
}

/* Spinner */
.oa-page-loader__spinner {
	width: 44px;
	height: 44px;
	border: 3px solid color-mix(in srgb, var(--oa-loader-accent, #f2bf59) 25%, transparent);
	border-top-color: var(--oa-loader-accent, #f2bf59);
	border-radius: 50%;
	animation: oa-loader-spin 0.75s linear infinite;
}

@keyframes oa-loader-spin {
	to {
		transform: rotate(360deg);
	}
}

/* Dots */
.oa-page-loader__dots {
	display: flex;
	gap: 8px;
	align-items: center;
	justify-content: center;
}

.oa-page-loader__dots span {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--oa-loader-accent, #f2bf59);
	animation: oa-loader-bounce 1.2s ease-in-out infinite;
}

.oa-page-loader__dots span:nth-child(2) {
	animation-delay: 0.15s;
}

.oa-page-loader__dots span:nth-child(3) {
	animation-delay: 0.3s;
}

@keyframes oa-loader-bounce {
	0%,
	80%,
	100% {
		transform: scale(0.6);
		opacity: 0.5;
	}
	40% {
		transform: scale(1);
		opacity: 1;
	}
}

/* Progress bar */
.oa-page-loader__bar {
	width: min(240px, 70vw);
	height: 4px;
	background: color-mix(in srgb, var(--oa-loader-accent, #f2bf59) 20%, transparent);
	border-radius: 999px;
	overflow: hidden;
}

.oa-page-loader__bar-fill {
	display: block;
	height: 100%;
	width: 35%;
	background: var(--oa-loader-accent, #f2bf59);
	border-radius: inherit;
	animation: oa-loader-bar 1.1s ease-in-out infinite;
}

@keyframes oa-loader-bar {
	0% {
		transform: translateX(-120%);
	}
	100% {
		transform: translateX(320%);
	}
}

/* Logo pulse */
.oa-page-loader--logo-pulse .oa-page-loader__logo {
	animation: oa-loader-pulse 1.4s ease-in-out infinite;
}

@keyframes oa-loader-pulse {
	0%,
	100% {
		opacity: 1;
		transform: scale(1);
	}
	50% {
		opacity: 0.65;
		transform: scale(0.96);
	}
}

@media (prefers-reduced-motion: reduce) {
	.oa-page-loader__spinner,
	.oa-page-loader__dots span,
	.oa-page-loader__bar-fill,
	.oa-page-loader--logo-pulse .oa-page-loader__logo {
		animation: none;
	}

	.oa-page-loader {
		transition-duration: 0.01ms;
	}
}
