/* ==========================================================
   DOMA140 · ajustos de moviment

   Regla d'or: cap regla d'aquest fitxer pot amagar contingut
   un cop AOS ha afegit .aos-animate. Per això totes les regles
   d'estat inicial porten :not(.aos-animate) — així és impossible
   que una qüestió d'especificitat deixi text invisible.
   ========================================================== */

/* 400ms i una ease-out forta: arrenca ràpid i frena suau.
   Mai ease-in en una entrada; es percep lenta.
   El segon selector iguala el d'AOS (body[data-aos-easing] [data-aos])
   i aquest full es carrega després, així que preval. */
body [data-aos],
body[data-aos-easing] [data-aos] {
	transition-duration: 400ms;
	transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
}

/* Estat inicial: AOS desplaça 100px per defecte, massa per a un
   web editorial. Res no apareix del no-res, però el moviment és curt. */
body [data-aos="fade-up"]:not(.aos-animate)    { transform: translate3d(0, 24px, 0); }
body [data-aos="fade-down"]:not(.aos-animate)  { transform: translate3d(0, -24px, 0); }
body [data-aos="fade-right"]:not(.aos-animate) { transform: translate3d(-28px, 0, 0); }
body [data-aos="fade-left"]:not(.aos-animate)  { transform: translate3d(28px, 0, 0); }

/* Estat final explícit. */
body [data-aos].aos-animate {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

/* Xarxa de seguretat: si el JS no arrenca, res no queda amagat. */
[data-aos].doma-motion-off {
	opacity: 1 !important;
	transform: none !important;
}

/* ---------- Parallax ---------- */
.doma-parallax-wrap {
	overflow: hidden;
}
.parallax-item {
	will-change: transform;
	transform: translate3d(0, 0, 0) scale(1.06);
	transform-origin: center center;
}

/* ---------- Respecta qui no vol moviment ---------- */
@media (prefers-reduced-motion: reduce) {
	[data-aos] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
	.parallax-item {
		transform: none !important;
	}
}
