/**
 * MSE School Theme
 * Website Preloader
 */

/* =========================================================
   MAIN PRELOADER
   ========================================================= */

.mse-preloader {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	background: var(--mse-preloader-bg, #ffffff);
	opacity: 1;
	visibility: visible;
	pointer-events: all;
	transition:
		opacity 0.4s ease,
		visibility 0.4s ease;
}

.mse-preloader.mse-preloader-hidden {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}


/* =========================================================
   INNER
   ========================================================= */

.mse-preloader-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 18px;
	text-align: center;
}


/* =========================================================
   LOGO
   ========================================================= */

.mse-preloader-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	max-width: 320px;
}

.mse-preloader-logo img {
	display: block;
	width: auto;
	max-width: 320px;
	max-height: 160px;
	height: auto;
	object-fit: contain;
}

/* =========================================================
   SPINNER
   ========================================================= */

.mse-preloader-spinner {
	width: 42px;
	height: 42px;

	border: 3px solid rgba(0, 0, 0, 0.10);
	border-top-color: var(
		--mse-preloader-loader-color,
		#f57c20
	);
	border-right-color: var(
		--mse-preloader-loader-color,
		#f57c20
	);

	border-radius: 50%;

	box-sizing: border-box;

	animation:
		mse-preloader-spin 0.8s linear infinite;
}

@keyframes mse-preloader-spin {

	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}

}


/* =========================================================
   DOTS
   ========================================================= */

.mse-preloader-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
}

.mse-preloader-dots span {
	display: block;
	width: 9px;
	height: 9px;

	background: var(
		--mse-preloader-loader-color,
		#f57c20
	);

	border-radius: 50%;

	animation:
		mse-preloader-dot-bounce 1.2s ease-in-out infinite;
}

.mse-preloader-dots span:nth-child(1) {
	animation-delay: 0s;
}

.mse-preloader-dots span:nth-child(2) {
	animation-delay: 0.15s;
}

.mse-preloader-dots span:nth-child(3) {
	animation-delay: 0.3s;
}

@keyframes mse-preloader-dot-bounce {

	0%,
	80%,
	100% {
		transform: scale(0.65);
		opacity: 0.45;
	}

	40% {
		transform: scale(1);
		opacity: 1;
	}

}


/* =========================================================
   CIRCLE
   ========================================================= */

.mse-preloader-circle {
	width: 46px;
	height: 46px;

	border: 3px solid rgba(0, 0, 0, 0.10);

	border-left-color: var(
		--mse-preloader-loader-color,
		#f57c20
	);

	border-radius: 50%;

	box-sizing: border-box;

	animation:
		mse-preloader-circle-spin 1s linear infinite;
}

@keyframes mse-preloader-circle-spin {

	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}

}


/* =========================================================
   LOGO ONLY
   ========================================================= */

.mse-preloader-style-none .mse-preloader-inner {
	gap: 0;
}

.mse-preloader-style-none .mse-preloader-logo {
	margin: 0;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 767px) {

	.mse-preloader-logo {
		max-width: 150px;
	}

	.mse-preloader-logo img {
		max-width: 150px;
		max-height: 80px;
	}

	.mse-preloader-inner {
		gap: 15px;
	}

	.mse-preloader-spinner {
		width: 38px;
		height: 38px;
	}

	.mse-preloader-circle {
		width: 42px;
		height: 42px;
	}

	.mse-preloader-dots {
		gap: 6px;
	}

	.mse-preloader-dots span {
		width: 8px;
		height: 8px;
	}

}


/* =========================================================
   DISABLE PRELOADER ON MOBILE
   ========================================================= */

@media (max-width: 767px) {

	.mse-preloader-disable-mobile {
		display: none !important;
	}

}


/* =========================================================
   ACCESSIBILITY
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

	.mse-preloader {
		transition: none;
	}

	.mse-preloader-spinner,
	.mse-preloader-circle,
	.mse-preloader-dots span {
		animation-duration: 1.5s;
	}

}

/* ========================================================= 
   PREMIUM PRELOADER 
   ========================================================= */ 
 
.mse-preloader-premium { 
	position: relative; 
	display: flex; 
	align-items: center; 
	justify-content: center; 
	width: 220px; 
	height: 220px; 
} 
 
/* Animated outer ring */ 
.mse-preloader-premium-ring { 
	position: absolute; 
	inset: 0; 
	border: 2px solid rgba(245, 124, 32, 0.12); 
	border-top-color: var(--mse-preloader-loader-color, #f57c20); 
	border-right-color: var(--mse-preloader-loader-color, #f57c20); 
	border-radius: 50%; 
	animation: mse-premium-ring-spin 1.8s linear infinite; 
} 
 
/* Soft inner ring */ 
.mse-preloader-premium-ring::after { 
	content: ""; 
	position: absolute; 
	inset: 10px; 
	border: 1px solid rgba(245, 124, 32, 0.10); 
	border-left-color: var(--mse-preloader-loader-color, #f57c20); 
	border-radius: 50%; 
	animation: mse-premium-ring-spin-reverse 2.5s linear infinite; 
} 
 
/* Logo */ 
.mse-preloader-premium-logo { 
	position: relative; 
	z-index: 2; 
	display: flex; 
	align-items: center; 
	justify-content: center; 
	width: 160px; 
	height: 160px; 
	border-radius: 50%; 
	background: #ffffff; 
	box-shadow: 
		0 8px 30px rgba(0, 0, 0, 0.08); 
	animation: mse-premium-logo-pulse 2s ease-in-out infinite; 
} 
 
.mse-preloader-premium-logo img { 
	display: block; 
	width: auto; 
	max-width: 135px; 
	max-height: 115px; 
	height: auto; 
	object-fit: contain; 
} 
 
/* Loading dots */ 
.mse-preloader-premium-dots { 
	position: absolute; 
	bottom: -28px; 
	left: 50%; 
	display: flex; 
	align-items: center; 
	gap: 6px; 
	transform: translateX(-50%); 
} 
 
.mse-preloader-premium-dots span { 
	width: 6px; 
	height: 6px; 
	border-radius: 50%; 
	background: var(--mse-preloader-loader-color, #f57c20); 
	animation: mse-premium-dot 1.2s ease-in-out infinite; 
} 
 
.mse-preloader-premium-dots span:nth-child(1) { 
	animation-delay: 0s; 
} 
 
.mse-preloader-premium-dots span:nth-child(2) { 
	animation-delay: 0.15s; 
} 
 
.mse-preloader-premium-dots span:nth-child(3) { 
	animation-delay: 0.3s; 
} 
 
/* Animations */ 
@keyframes mse-premium-ring-spin { 
	from { 
		transform: rotate(0deg); 
	} 
 
	to { 
		transform: rotate(360deg); 
	} 
} 
 
@keyframes mse-premium-ring-spin-reverse { 
	from { 
		transform: rotate(360deg); 
	} 
 
	to { 
		transform: rotate(0deg); 
	} 
} 
 
@keyframes mse-premium-logo-pulse { 
	0%, 
	100% { 
		transform: scale(1); 
	} 
 
	50% { 
		transform: scale(1.03); 
	} 
} 
 
@keyframes mse-premium-dot { 
	0%, 
	100% { 
		transform: translateY(0); 
		opacity: 0.35; 
	} 
 
	50% { 
		transform: translateY(-4px); 
		opacity: 1; 
	} 
} 
 
/* Premium mobile */ 
@media (max-width: 767px) { 
 
	.mse-preloader-premium { 
		width: 180px; 
		height: 180px; 
	} 
 
	.mse-preloader-premium-logo { 
		width: 130px; 
		height: 130px; 
	} 
 
	.mse-preloader-premium-logo img { 
		max-width: 105px; 
		max-height: 90px; 
	} 
}