#preluxe-preloader {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 1;
	visibility: visible;
	transform: translateY(0) scale(1);
	will-change: opacity, transform;
}

#preluxe-preloader .preluxe-preloader-inner {
	width: 100%;
	max-width: 420px;
	padding: 20px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
}

/* Entrance animations */
#preluxe-preloader.preluxe-entrance-fade {
	animation: preluxeEntranceFade 0.5s ease both;
}

#preluxe-preloader.preluxe-entrance-zoom {
	animation: preluxeEntranceZoom 0.5s ease both;
}

#preluxe-preloader.preluxe-entrance-none {
	animation: none;
}

@keyframes preluxeEntranceFade {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@keyframes preluxeEntranceZoom {
	from {
		opacity: 0;
		transform: scale(0.92);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

/* Exit animation classes */
#preluxe-preloader.preluxe-is-hiding {
	pointer-events: none;
}

#preluxe-preloader.preluxe-exit-fade {
	animation-name: preluxeExitFade !important;
	animation-timing-function: ease !important;
	animation-fill-mode: forwards !important;
}

#preluxe-preloader.preluxe-exit-zoom-out {
	animation-name: preluxeExitZoomOut !important;
	animation-timing-function: ease !important;
	animation-fill-mode: forwards !important;
}

#preluxe-preloader.preluxe-exit-slide-up {
	animation-name: preluxeExitSlideUp !important;
	animation-timing-function: ease !important;
	animation-fill-mode: forwards !important;
}

@keyframes preluxeExitFade {
	from {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
	to {
		opacity: 0;
		transform: translateY(0) scale(1);
	}
}

@keyframes preluxeExitZoomOut {
	from {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
	to {
		opacity: 0;
		transform: translateY(0) scale(0.78);
	}
}

@keyframes preluxeExitSlideUp {
	from {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
	to {
		opacity: 0;
		transform: translateY(-120px) scale(0.98);
	}
}

#preluxe-preloader .preluxe-progress-wrap {
	width: 100%;
	height: 8px;
	border-radius: 999px;
	overflow: hidden;
	position: relative;
}

#preluxe-preloader .preluxe-progress-bar {
	width: 40%;
	height: 100%;
	border-radius: 999px;
	animation: preluxe-progress-loop 1.4s ease-in-out infinite;
	will-change: transform;
}

@keyframes preluxe-progress-loop {
	0% {
		transform: translateX(-120%);
	}
	50% {
		transform: translateX(140%);
	}
	100% {
		transform: translateX(-120%);
	}
}

#preluxe-preloader .preluxe-spinner {
	width: 56px;
	height: 56px;
	border-width: 4px;
	border-style: solid;
	border-radius: 50%;
	animation: preluxe-spin 0.9s linear infinite;
	box-sizing: border-box;
}

@keyframes preluxe-spin {
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(360deg);
	}
}

#preluxe-preloader .preluxe-dots {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}

#preluxe-preloader .preluxe-dots span {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	display: inline-block;
	animation: preluxe-dot-bounce 1s infinite ease-in-out;
}

#preluxe-preloader .preluxe-dots span:nth-child(2) {
	animation-delay: 0.15s;
}

#preluxe-preloader .preluxe-dots span:nth-child(3) {
	animation-delay: 0.3s;
}

@keyframes preluxe-dot-bounce {
	0%, 80%, 100% {
		transform: scale(0.7);
		opacity: 0.5;
	}
	40% {
		transform: scale(1);
		opacity: 1;
	}
}

#preluxe-preloader .preluxe-text-loader {
	font-size: 20px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-align: center;
}

#preluxe-preloader .preluxe-logo-wrap {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
}

#preluxe-preloader .preluxe-logo {
	display: block !important;
	width: 100% !important;
	height: auto !important;
	max-width: 100% !important;
	max-height: none !important;
	object-fit: contain !important;
	animation: preluxe-logo-pulse 1.6s ease-in-out infinite;
}

#preluxe-preloader .preluxe-logo-fallback {
	padding: 14px 18px;
	border-radius: 12px;
	font-size: 16px;
	font-weight: 600;
	letter-spacing: 0.03em;
}

@keyframes preluxe-logo-pulse {
	0%, 100% {
		transform: scale(1);
		opacity: 1;
	}
	50% {
		transform: scale(1.04);
		opacity: 0.85;
	}
}

body.preluxe-preloader-active {
	overflow: hidden;
}