/* Reusable HTMX + JS animation utilities */

/* Animate elements in as they appear (add .animate-in to the container) */
.animate-in {
    animation: fadeSlideIn 0.35s ease-out;
}

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

/* Animate out rows during HTMX swap delay (htmx-swapping is added automatically) */
tr.htmx-swapping {
    opacity: 0 !important;
    transform: scaleY(0) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}

/* JS-driven animated removal (call animateRemoveRow() from JS) */
tr.removing {
    opacity: 0 !important;
    transform: scaleY(0) !important;
    transition: opacity 0.3s ease, transform 0.3s ease !important;
}
