/* Visible but restrained motion — professional, not flashy. */
@media (prefers-reduced-motion: no-preference) {
    body.formation-detail-page .formation-hero__eyebrow,
    body.formation-detail-page .formation-hero__title,
    body.formation-detail-page .formation-hero__inner > .formation-cta,
    body.formation-detail-page .formation-meta,
    body.formation-detail-page .formation-sheet__aside-sticky > .formation-card {
        animation: formation-page-enter 520ms cubic-bezier(0.22, 0.7, 0.25, 1) backwards;
    }

    body.formation-detail-page .formation-hero__title {
        animation-delay: 70ms;
    }

    body.formation-detail-page .formation-hero__inner > .formation-cta {
        animation-delay: 140ms;
    }

    body.formation-detail-page .formation-meta {
        animation-delay: 200ms;
    }

    body.formation-detail-page .formation-sheet__aside-sticky > .formation-card {
        animation-delay: 260ms;
    }

    body.formation-detail-page .formation-page :is(.formation-cta, .formation-share, .formation-toc__link),
    body.formation-detail-page .formation-register-dialog :is(.formation-info__submit, .formation-profile__option, .formation-profile__icon-btn, .formation-date__option, .formation-recontact__pref, .formation-precontact__civilite-btn, .formation-participants__add),
    body.formation-detail-page .formation-share-dialog :is(.formation-share-dialog__option, .formation-share-dialog__close) {
        transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
    }

    body.formation-detail-page .formation-register-dialog .formation-info__field :is(input, select, textarea) {
        transition: border-color 180ms ease, box-shadow 180ms ease;
    }

    body.formation-detail-page .formation-register-dialog .formation-profile__progress span {
        transition: width 280ms ease-out;
    }

    body.formation-detail-page :is(.formation-register-dialog, .formation-share-dialog)[open] {
        animation: formation-dialog-enter 260ms cubic-bezier(0.22, 0.7, 0.25, 1);
    }

    body.formation-detail-page :is(.formation-register-dialog, .formation-share-dialog)[open]::backdrop {
        animation: formation-backdrop-enter 260ms ease-out;
    }

    body.formation-detail-page .formation-register-dialog > :is(.formation-profile, .formation-info):not([hidden]) {
        animation: formation-step-enter 220ms ease-out;
    }

    /* Scroll reveals: start offset, then settle in. */
    body.formation-detail-page .formation-page .formation-section-pending {
        opacity: 0;
        transform: translateY(28px);
    }

    body.formation-detail-page .formation-page .formation-section-arrived {
        animation: formation-section-enter 480ms cubic-bezier(0.22, 0.7, 0.25, 1) both;
    }

    @media (hover: hover) and (pointer: fine) {
        body.formation-detail-page .formation-similar {
            transition: transform 200ms ease-out, box-shadow 200ms ease-out;
        }

        body.formation-detail-page .formation-similar:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 28px rgba(0, 36, 64, 0.14);
        }

        body.formation-detail-page .formation-cta img,
        body.formation-detail-page .formation-info__submit img,
        body.formation-detail-page .formation-profile__chevron {
            transition: transform 180ms ease-out;
        }

        body.formation-detail-page .formation-cta:hover img,
        body.formation-detail-page .formation-info__submit:hover:not(:disabled) img,
        body.formation-detail-page .formation-profile__option:hover .formation-profile__chevron {
            transform: translateX(4px);
        }
    }
}

@keyframes formation-page-enter {
    from {
        opacity: 0;
        transform: translateY(22px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes formation-dialog-enter {
    from {
        opacity: 0;
        transform: translateY(14px) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes formation-backdrop-enter {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes formation-step-enter {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes formation-section-enter {
    from {
        opacity: 0;
        transform: translateY(28px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    body.formation-detail-page .formation-page .formation-section-pending,
    body.formation-detail-page .formation-page .formation-section-arrived,
    body.formation-detail-page .formation-page :is(.formation-cta, .formation-share, .formation-toc__link, .formation-similar),
    body.formation-detail-page :is(.formation-register-dialog, .formation-share-dialog),
    body.formation-detail-page :is(.formation-register-dialog, .formation-share-dialog) * {
        animation: none;
        transition: none;
        opacity: 1;
        transform: none;
    }
}
