/* Short, compositor-friendly motion; no permanent hidden state or looping effects. */
body.portal-admin {
    --motion-fast: 140ms;
    --motion-normal: 220ms;
    --motion-ease: cubic-bezier(.2,.7,.3,1);
}
body.portal-admin .btn,
body.portal-admin .overview-button,
body.portal-admin .page-link {
    transition: transform var(--motion-fast) var(--motion-ease), background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease;
}

body.portal-admin .btn:active,
body.portal-admin .overview-button:active { transform: scale(.98); }
body.portal-admin .btn:disabled { transform: none; }
body.portal-admin .metric-card,
body.portal-admin .attention-card {
    transition: transform var(--motion-normal) var(--motion-ease), border-color var(--motion-fast) ease;
}
body.portal-admin .form-control,
body.portal-admin .form-select,
body.portal-admin .select2-selection {
    transition: border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
}
body.portal-admin .table tbody tr,
body.portal-admin .overview-table tbody tr,
body.portal-admin .pipeline-list a,
body.portal-admin .deadline-item { transition: background-color var(--motion-fast) ease; }
body.portal-admin .dropdown-menu.show { animation: portal-dropdown-in var(--motion-fast) ease-out; }
body.portal-admin .modal.fade .modal-dialog {
    transform: translateY(10px);
    transition: transform var(--motion-normal) var(--motion-ease);
}
body.portal-admin .modal.show .modal-dialog { transform: none; }
body.portal-admin .modal.fade,
body.portal-admin .modal-backdrop.fade { transition: opacity 160ms ease; }
body.portal-admin .chart-bar,
body.portal-admin .collection-track > span { transition: background-color var(--motion-fast) ease; }
@media (hover: hover) and (pointer: fine) {
    body.portal-admin .btn:not(:disabled):hover,
    body.portal-admin .overview-button:hover { transform: translateY(-1px); }
    body.portal-admin .metric-card:hover,
    body.portal-admin .attention-card:hover { transform: translateY(-2px); border-color: #a8c8d5; }
    body.portal-admin .deadline-item:hover { background-color: #f5f9fb; }
}
@keyframes portal-dropdown-in {
    from { opacity: .35; }
    to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
    body.portal-admin *,
    body.portal-admin *::before,
    body.portal-admin *::after {
        animation-duration: .01ms !important;
        animation-delay: 0ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        transition-delay: 0ms !important;
        scroll-behavior: auto !important;
    }
    body.portal-admin .btn:hover,
    body.portal-admin .btn:active,
    body.portal-admin .overview-button:hover,
    body.portal-admin .overview-button:active,
    body.portal-admin .metric-card:hover,
    body.portal-admin .attention-card:hover { transform: none; }
    body.portal-admin .modal.fade .modal-dialog { transform: none; }
}
