/* ==========================================================================
   Мастер реек — анимации появления
   Заменяет animate.css + wow-скрипт: элемент с .reveal проявляется,
   когда попадает в область видимости (IntersectionObserver).
   ========================================================================== */

.reveal {
	opacity: 0;
	will-change: opacity, transform;
}

.reveal--up { transform: translate3d(0, 40px, 0); }
.reveal--left { transform: translate3d(-60px, 0, 0); }
.reveal--right { transform: translate3d(60px, 0, 0); }

.reveal.is-in {
	opacity: 1;
	transform: none;
	transition: opacity .7s ease-out, transform .7s cubic-bezier(.215, .61, .355, 1);
}

/* если скрипт отключён — ничего не прячем */
.no-js .reveal, .reveal-static {
	opacity: 1;
	transform: none;
}

@keyframes fade-in {
	from { opacity: 0; }
	to { opacity: 1; }
}
@keyframes fade-in-down {
	from { opacity: 0; transform: translate3d(0, -100%, 0); }
	to { opacity: 1; transform: none; }
}
@keyframes spin {
	to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
	.site-header { animation: none; }
	.offcanvas, .offcanvas-overlay { transition: none; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
	}
}