/* [EFFECTS CORE V1 · Pas 1 · 2026-09-29] CSS core de les entrades (fade, fade-up, scale-in, slide-in).
 * UNA sola implementació: el runtime del front (iaLayer_effects.js, `html.ia-effects-on`) i les miniatures
 * del selector del panell (arrel `.ia-effects-on`) fan servir aquestes mateixes regles.
 * Estats: sense atribut = visible i quiet · pending = amagat a punt d'entrar · in = entrant · done = quiet.
 * Tokens `--ia-motion-*` = intensitat d'Estils (system.css); els valors de reserva són els de «Normal».
 * El factor 2 de slide-in = `slide_factor` d'iailayer_effect_motion_constants() (test de paritat). */
.ia-effects-on [data-ia-effect-state="pending"] {
    opacity: 0;
}
.ia-effects-on [data-ia-effect-run="fade-up"][data-ia-effect-state="pending"] {
    transform: translateY(var(--ia-motion-distance, 20px));
}
.ia-effects-on [data-ia-effect-run="scale-in"][data-ia-effect-state="pending"] {
    transform: scale(var(--ia-motion-scale, .96));
}
.ia-effects-on [data-ia-effect-run="slide-in"][data-ia-effect-state="pending"] {
    transform: translateX(calc(var(--ia-motion-distance, 20px) * -2));
}
.ia-effects-on [data-ia-effect-state="in"] {
    opacity: 1;
    transform: none;
    transition: opacity var(--ia-motion-duration, 450ms) var(--ia-motion-ease, cubic-bezier(.22,.61,.36,1)),
                transform var(--ia-motion-duration, 450ms) var(--ia-motion-ease, cubic-bezier(.22,.61,.36,1));
    transition-delay: calc(var(--ia-effect-i, 0) * var(--ia-effect-step, 80ms));
}
@media (prefers-reduced-motion: reduce) {
    .ia-effects-on [data-ia-effect-state] {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}
@media print {
    [data-ia-effect-state] {
        opacity: 1 !important;
        transform: none !important;
    }
}
