/* OVP Dentissimo Widgets — Animații pe secțiuni (per element)
   Vezi includes/class-motion.php pentru cum se generează atributele
   data-dvf-animate / data-dvf-delay, și assets/js/ovp-motion.js pentru
   logica de declanșare la scroll (IntersectionObserver).

   IMPORTANT: elementul NU e ascuns implicit prin CSS — devine ascuns
   doar dacă JS-ul chiar rulează și decide să-l anime (clasa
   .dvf-anim-pending, adăugată din JS). Așa, dacă scriptul nu se
   încarcă dintr-un motiv oarecare, conținutul rămâne mereu vizibil —
   animația e un bonus, nu ceva de care depinde afișarea conținutului. */

[data-dvf-animate].dvf-anim-pending {
	opacity: 0;
}

[data-dvf-animate].dvf-anim-in {
	animation-duration: 0.7s;
	animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
	animation-fill-mode: both;
}

[data-dvf-animate="fade"].dvf-anim-in {
	animation-name: dvfFade;
}

[data-dvf-animate="fade-up"].dvf-anim-pending {
	transform: translateY(32px);
}
[data-dvf-animate="fade-up"].dvf-anim-in {
	animation-name: dvfFadeUp;
}

[data-dvf-animate="fade-down"].dvf-anim-pending {
	transform: translateY(-32px);
}
[data-dvf-animate="fade-down"].dvf-anim-in {
	animation-name: dvfFadeDown;
}

[data-dvf-animate="fade-left"].dvf-anim-pending {
	transform: translateX(40px);
}
[data-dvf-animate="fade-left"].dvf-anim-in {
	animation-name: dvfFadeLeft;
}

[data-dvf-animate="fade-right"].dvf-anim-pending {
	transform: translateX(-40px);
}
[data-dvf-animate="fade-right"].dvf-anim-in {
	animation-name: dvfFadeRight;
}

[data-dvf-animate="zoom-in"].dvf-anim-pending {
	transform: scale(0.92);
}
[data-dvf-animate="zoom-in"].dvf-anim-in {
	animation-name: dvfZoomIn;
}

@keyframes dvfFade {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes dvfFadeUp {
	from { opacity: 0; transform: translateY(32px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes dvfFadeDown {
	from { opacity: 0; transform: translateY(-32px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes dvfFadeLeft {
	from { opacity: 0; transform: translateX(40px); }
	to   { opacity: 1; transform: translateX(0); }
}

@keyframes dvfFadeRight {
	from { opacity: 0; transform: translateX(-40px); }
	to   { opacity: 1; transform: translateX(0); }
}

@keyframes dvfZoomIn {
	from { opacity: 0; transform: scale(0.92); }
	to   { opacity: 1; transform: scale(1); }
}

/* Respectă preferința sistemului pentru mișcare redusă — conținutul
   apare direct, fără animație. */
@media (prefers-reduced-motion: reduce) {
	[data-dvf-animate].dvf-anim-pending,
	[data-dvf-animate].dvf-anim-in {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
}
