/* =====================================================================
   Scroll-Reveals: AUSSCHLIESSLICH per transform, NIE opacity:0 als Start.
   Jeder Endzustand ist bereits im HTML sichtbar – auch ohne JavaScript
   und im Headless-Render (nur leicht versetzt, nie blank).
   ===================================================================== */

.reveal-up {
	opacity: 1;
	transform: translateY(28px);
	transition: transform var(--duration-reveal) var(--ease-out);
	will-change: transform;
}

.reveal-up.is-visible { transform: translateY(0); }

.reveal-scale {
	opacity: 1;
	transform: scale(0.96);
	transition: transform var(--duration-reveal) var(--ease-out);
	will-change: transform;
}

.reveal-scale.is-visible { transform: scale(1); }

.reveal-delay-1 { transition-delay: 70ms; }
.reveal-delay-2 { transition-delay: 140ms; }
.reveal-delay-3 { transition-delay: 210ms; }

/* Gestaffelte Service-Reihen: jede Reihe etwas später (JS setzt den Index als Inline-Delay-Var) */
.service-row.reveal-up { transition-delay: calc(var(--row-i, 0) * 60ms); }

/* ===== Reduzierte Bewegung strikt respektieren ===== */
@media (prefers-reduced-motion: reduce) {
	.reveal-up,
	.reveal-scale,
	.service-row.reveal-up {
		transform: none !important;
		transition: none !important;
	}

	html { scroll-behavior: auto; }

	* {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}
