/*!
 * Karam Page Loader — Frontend styles
 * Author: Mostafa Kattan
 */

#kpl-progress {
	pointer-events: none;
	position: fixed;
	left: 0;
	right: 0;
	z-index: var( --kpl-z-index, 999999 );
	opacity: 0;
	transition: opacity 250ms ease-out;
	width: 100%;
	height: var( --kpl-height, 3px );
}

#kpl-progress[data-position="top"] {
	top: 0;
}

#kpl-progress[data-position="bottom"] {
	bottom: 0;
}

#kpl-progress.kpl-active {
	opacity: 1;
}

#kpl-progress.kpl-fading {
	opacity: 0;
}

#kpl-progress .kpl-progress-bar {
	position: relative;
	width: 100%;
	height: 100%;
	background-color: var( --kpl-color, #778DAA );
	transform: translate3d( -100%, 0, 0 );
	transition: transform 220ms cubic-bezier( 0.4, 0, 0.2, 1 );
	will-change: transform;
}

#kpl-progress.kpl-has-gradient .kpl-progress-bar {
	background-image: linear-gradient(
		90deg,
		var( --kpl-color, #778DAA ) 0%,
		var( --kpl-gradient-color, #AF7F4F ) 100%
	);
}

#kpl-progress.kpl-has-shadow .kpl-progress-bar {
	box-shadow:
		0 0 10px var( --kpl-color, #778DAA ),
		0 0 6px var( --kpl-color, #778DAA );
}

#kpl-progress .kpl-progress-peg {
	display: block;
	position: absolute;
	right: 0;
	top: 0;
	width: 100px;
	height: 100%;
	opacity: 0.85;
	box-shadow:
		0 0 10px var( --kpl-color, #778DAA ),
		0 0 6px var( --kpl-color, #778DAA );
	transform: rotate( 3deg ) translate3d( 0, -4px, 0 );
}

#kpl-progress .kpl-progress-spinner {
	position: fixed;
	top: 15px;
	right: 15px;
	width: 18px;
	height: 18px;
	z-index: var( --kpl-z-index, 999999 );
	border: 2px solid transparent;
	border-top-color: var( --kpl-spinner-color, #778DAA );
	border-left-color: var( --kpl-spinner-color, #778DAA );
	border-radius: 50%;
	animation: kpl-spin 400ms linear infinite;
}

#kpl-progress[data-position="bottom"] .kpl-progress-spinner {
	top: auto;
	bottom: 15px;
}

@keyframes kpl-spin {
	0% { transform: rotate( 0deg ); }
	100% { transform: rotate( 360deg ); }
}

@media ( prefers-reduced-motion: reduce ) {
	#kpl-progress,
	#kpl-progress .kpl-progress-bar,
	#kpl-progress .kpl-progress-spinner {
		transition: opacity 100ms linear;
		animation: none;
	}
}
