/**
 * Warstwa efektów (Faza 6 „Motion") — hover, higiena `will-change` i
 * fallback dla stanu wejścia. Animacje wejścia/scroll same w sobie są w
 * całości inline (zero zależności od kolejności ładowania tego pliku —
 * patrz inc/Effects/RenderFilter.php); ten plik dotyczy wyłącznie hover
 * (bez ryzyka FOUC — hover nie wpływa na stan początkowy strony) oraz
 * higieny wydajnościowej.
 */

/* Animowane wyłącznie transform/opacity — nigdy własności layoutowych (brak layout-thrash). */

.prcs-fx-entrance {
	will-change: opacity, transform;
}

.prcs-fx-entrance.is-prcs-fx-visible {
	will-change: auto;
}

/* Hover — tylko urządzenia z realnym hover+wskaźnikiem (nie dotyk), żeby
   „hover" nie przyklejał się po tapnięciu na telefonie. */
@media ( hover: hover ) and ( pointer: fine ) {
	.prcs-fx-hover-lift,
	.prcs-fx-hover-scale,
	.prcs-fx-hover-rotate {
		transition: transform 200ms ease, box-shadow 200ms ease;
	}

	.prcs-fx-hover-lift:hover {
		transform: translateY( -6px );
	}

	.prcs-fx-hover-scale:hover {
		transform: scale( 1.03 );
	}

	.prcs-fx-hover-rotate:hover {
		transform: rotate( 1.5deg );
	}

	.prcs-fx-hover-shadow:hover {
		box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.12 );
	}
}

/* Stany focus-visible spójne z hover (dostępność klawiaturowa — te same
   transformacje, żeby użytkownicy klawiatury dostali ten sam sygnał). */
.prcs-fx-hover-lift:focus-visible {
	transform: translateY( -6px );
}

.prcs-fx-hover-scale:focus-visible {
	transform: scale( 1.03 );
}

@media ( prefers-reduced-motion: reduce ) {
	.prcs-fx-hover-lift,
	.prcs-fx-hover-scale,
	.prcs-fx-hover-rotate {
		transition: none;
	}

	.prcs-fx-hover-lift:hover,
	.prcs-fx-hover-lift:focus-visible,
	.prcs-fx-hover-scale:hover,
	.prcs-fx-hover-scale:focus-visible,
	.prcs-fx-hover-rotate:hover {
		transform: none;
	}
}
