/* ─── Overlay ─────────────────────────────────────────────── */
.avanton-preloader {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--avanton-preloader-bg, #0b0b0b);
	transition:
		opacity    var(--avanton-preloader-duration, 1200ms) ease,
		visibility var(--avanton-preloader-duration, 1200ms) ease;
}

.avanton-preloader.is-hidden {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.avanton-preloader__inner {
	display: flex;
	align-items: center;
	justify-content: center;
}

/* ─── Logo ─────────────────────────────────────────────────── */
.avanton-preloader__logo {
	width: var(--avanton-preloader-logo-width, 160px);
	height: auto;
	display: block;
}

/* ─── Spinner ──────────────────────────────────────────────── */
.avanton-preloader__spinner {
	width: 48px;
	height: 48px;
	border: 3px solid rgba(255, 255, 255, .15);
	border-top-color: #fff;
	border-radius: 50%;
	animation: avanton-spin var(--avanton-preloader-duration, 1200ms) linear infinite;
}

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

/* ─── Dots ─────────────────────────────────────────────────── */
.avanton-preloader__dots {
	display: flex;
	gap: 10px;
	align-items: center;
}

.avanton-preloader__dots span {
	width: 12px;
	height: 12px;
	background: #fff;
	border-radius: 50%;
	animation: avanton-dot-bounce 1.2s ease-in-out infinite;
}

.avanton-preloader__dots span:nth-child(2) { animation-delay: .2s; }
.avanton-preloader__dots span:nth-child(3) { animation-delay: .4s; }

@keyframes avanton-dot-bounce {
	0%, 80%, 100% { transform: scale(.6); opacity: .5; }
	40%           { transform: scale(1);  opacity: 1;  }
}

/* ─── Logo + Progress Bar ──────────────────────────────────── */
.avanton-preloader__logo-progress {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
}

/* ─── Progress bar ─────────────────────────────────────────── */
.avanton-preloader__progress {
	width: 220px;
	height: 3px;
	background: rgba(255, 255, 255, .15);
	border-radius: 2px;
	overflow: hidden;
}

.avanton-preloader__progress-bar {
	height: 100%;
	background: #fff;
	border-radius: 2px;
	animation: avanton-progress var(--avanton-preloader-duration, 1200ms) ease forwards;
}

@keyframes avanton-progress {
	from { width: 0; }
	to   { width: 100%; }
}

/* ─── Logo cyclic animations ──────────────────────────────── */
.avanton-preloader__logo--rotate {
	animation: avanton-logo-rotate var(--avanton-preloader-duration, 1200ms) linear infinite;
	transform-origin: center;
}
@keyframes avanton-logo-rotate {
	to { transform: rotate(360deg); }
}

.avanton-preloader__logo--pulse {
	animation: avanton-logo-pulse var(--avanton-preloader-duration, 1200ms) ease-in-out infinite;
}
@keyframes avanton-logo-pulse {
	0%, 100% { transform: scale(1);    }
	50%       { transform: scale(1.12); }
}

.avanton-preloader__logo--bounce {
	animation: avanton-logo-bounce var(--avanton-preloader-duration, 1200ms) cubic-bezier(0.36, 0.07, 0.19, 0.97) infinite;
}
@keyframes avanton-logo-bounce {
	0%, 100% { transform: translateY(0);    }
	30%       { transform: translateY(-14px); }
	60%       { transform: translateY(-6px);  }
}

.avanton-preloader__logo--swing {
	animation: avanton-logo-swing var(--avanton-preloader-duration, 1200ms) ease-in-out infinite alternate;
	transform-origin: top center;
}
@keyframes avanton-logo-swing {
	from { transform: rotate(-12deg); }
	to   { transform: rotate(12deg);  }
}

.avanton-preloader__logo--float {
	animation: avanton-logo-float var(--avanton-preloader-duration, 1200ms) ease-in-out infinite alternate;
}
@keyframes avanton-logo-float {
	from { transform: translateY(0);    }
	to   { transform: translateY(-10px); }
}

.avanton-preloader__logo--fade-pulse {
	animation: avanton-logo-fade-pulse var(--avanton-preloader-duration, 1200ms) ease-in-out infinite;
}
@keyframes avanton-logo-fade-pulse {
	0%, 100% { opacity: 1;   }
	50%       { opacity: .3; }
}

/* ─── SVG wrapper ──────────────────────────────────────────── */
.avanton-preloader__svg svg {
	width: var(--avanton-preloader-logo-width, 160px);
	height: auto;
	display: block;
}

/* SVG: fade */
.avanton-preloader__svg--fade svg {
	animation: avanton-svg-fade var(--avanton-preloader-duration, 1200ms) ease-in-out infinite alternate;
}
@keyframes avanton-svg-fade {
	from { opacity: .2; }
	to   { opacity: 1;  }
}

/* SVG: scale */
.avanton-preloader__svg--scale svg {
	animation: avanton-svg-scale var(--avanton-preloader-duration, 1200ms) ease-in-out infinite alternate;
}
@keyframes avanton-svg-scale {
	from { transform: scale(.9);   }
	to   { transform: scale(1.05); }
}

/* SVG: draw-stroke — works on path, line, polyline, circle, rect */
.avanton-preloader__svg--draw-stroke svg path,
.avanton-preloader__svg--draw-stroke svg line,
.avanton-preloader__svg--draw-stroke svg polyline,
.avanton-preloader__svg--draw-stroke svg circle,
.avanton-preloader__svg--draw-stroke svg rect {
	stroke-dasharray: 1000;
	stroke-dashoffset: 1000;
	animation: avanton-draw-stroke var(--avanton-preloader-duration, 1200ms) ease forwards;
}
@keyframes avanton-draw-stroke {
	to { stroke-dashoffset: 0; }
}

/* SVG: pulse */
.avanton-preloader__svg--pulse svg {
	animation: avanton-svg-pulse var(--avanton-preloader-duration, 1200ms) ease-in-out infinite;
}
@keyframes avanton-svg-pulse {
	0%, 100% { transform: scale(1);    opacity: 1;  }
	50%       { transform: scale(1.08); opacity: .7; }
}

/* SVG: rotate */
.avanton-preloader__svg--rotate svg {
	animation: avanton-svg-rotate var(--avanton-preloader-duration, 1200ms) linear infinite;
}
@keyframes avanton-svg-rotate {
	to { transform: rotate(360deg); }
}

/* ─── Body scroll lock ─────────────────────────────────────── */
body.avanton-preloader-active {
	overflow: hidden;
}
