/* animations.css — глобальная библиотека @keyframes и анимации экранов */

/* ── float-bob: мягкое покачивание (пузырьки, карты) ── */
@keyframes float-bob {
	0%, 100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-10px);
	}
}

/* ── shimmer-text: мерцание текста/призыва ── */
@keyframes shimmer-text {
	0%, 100% {
		opacity: 1;
		text-shadow: 0 0 4px rgba(255, 255, 255, 0.76);
	}
	50% {
		opacity: 0.6;
		text-shadow: 0 0 12px rgba(255, 255, 255, 0.9);
	}
}

/* ── fog-drift: дрейф тумана ── */
@keyframes fog-drift {
	0% {
		transform: translateX(-15%) scale(1.1);
		opacity: 0.35;
	}
	50% {
		transform: translateX(5%) scale(1.05);
		opacity: 0.25;
	}
	100% {
		transform: translateX(-15%) scale(1.1);
		opacity: 0.35;
	}
}

@keyframes fog-drift-reverse {
	0% {
		transform: translateX(10%) scale(1.08);
		opacity: 0.28;
	}
	50% {
		transform: translateX(-8%) scale(1.12);
		opacity: 0.18;
	}
	100% {
		transform: translateX(10%) scale(1.08);
		opacity: 0.28;
	}
}

/* ── light-flicker: мерцание огня/свечения ── */
@keyframes light-flicker {
	0%, 100% {
		opacity: 1;
		transform: scale(1);
	}
	20% {
		opacity: 0.85;
		transform: scale(1.02);
	}
	40% {
		opacity: 1;
		transform: scale(0.98);
	}
	60% {
		opacity: 0.9;
		transform: scale(1.01);
	}
	80% {
		opacity: 1;
		transform: scale(0.99);
	}
}

/* ── spark-fly: искры летят вверх ── */
@keyframes spark-fly {
	0% {
		transform: translateY(0) translateX(0) scale(1);
		opacity: 1;
	}
	100% {
		transform: translateY(-120px) translateX(var(--spark-x, 0px)) scale(0);
		opacity: 0;
	}
}

/* ── liana-crawl: вензели «прорастают» ── */
@keyframes liana-crawl {
	from {
		clip-path: inset(0 100% 0 0);
		opacity: 0;
	}
	to {
		clip-path: inset(0 0% 0 0);
		opacity: 0.4;
	}
}

/* ── glow-pulse: пульсация свечения ── */
@keyframes glow-pulse {
	0%, 100% {
		box-shadow: 0 0 10px var(--color-gold-glow);
	}
	50% {
		box-shadow: 0 0 30px var(--color-gold-glow), 0 0 60px rgba(255, 199, 120, 0.3);
	}
}

/* ── fade-up: появление снизу ── */
@keyframes fade-up {
	from {
		opacity: 0;
		transform: translateY(24px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ── flame-flicker: язык пламени ── */
@keyframes flame-flicker {
	0%, 100% {
		transform: scaleY(1) skewX(0deg);
	}
	20% {
		transform: scaleY(1.08) skewX(-3deg);
	}
	40% {
		transform: scaleY(0.95) skewX(2deg);
	}
	60% {
		transform: scaleY(1.05) skewX(-1deg);
	}
	80% {
		transform: scaleY(0.98) skewX(3deg);
	}
}

/* ── leaf-sway: покачивание листьев ── */
@keyframes leaf-sway {
	0%, 100% {
		transform: rotate(-8deg);
	}
	50% {
		transform: rotate(8deg);
	}
}

/* ── fern-glow: свечение кончика папоротника ── */
@keyframes fern-glow {
	0%, 100% {
		filter: drop-shadow(0 0 6px var(--color-gold));
		opacity: 0.8;
	}
	50% {
		filter: drop-shadow(0 0 18px var(--color-gold));
		opacity: 1;
	}
}

/* ── path-spark: «искра» при выборе пути ── */
@keyframes path-spark {
	0% {
		transform: scale(0.8);
		opacity: 0;
	}
	50% {
		transform: scale(1.05);
		opacity: 1;
	}
	100% {
		transform: scale(1);
		opacity: 1;
	}
}

/* ── Последовательное появление элементов challenge (stagger) ── */
.stagger-1 {
	animation: fade-up 0.6s var(--ease-cinematic) both 0.1s;
}

.stagger-2 {
	animation: fade-up 0.6s var(--ease-cinematic) both 0.25s;
}

.stagger-3 {
	animation: fade-up 0.6s var(--ease-cinematic) both 0.4s;
}

.stagger-4 {
	animation: fade-up 0.6s var(--ease-cinematic) both 0.55s;
}

.stagger-5 {
	animation: fade-up 0.6s var(--ease-cinematic) both 0.7s;
}

/* ── prefers-reduced-motion: отключить всё нетривиальное ── */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}

	.scene--enter {
		animation: none;
	}

	#scene-fire-bg {
		transition: none;
	}
}
