/* Screen Transitions — GPU-accelerated, smooth spring */
.fade-in {
    animation: fadeIn 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    will-change: opacity, transform;
}

.slide-in-right {
    animation: slideInRight 0.34s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    z-index: 10;
    will-change: transform;
}

.slide-in-left {
    animation: slideInLeft 0.34s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    z-index: 1;
    will-change: transform, opacity;
}

.slide-out-left {
    animation: slideOutLeft 0.34s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    z-index: 1;
    will-change: transform, opacity;
}

.slide-out-right {
    animation: slideOutRight 0.34s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    z-index: 10;
    will-change: transform;
}

/* Keyframes — translate3d forces GPU compositing */
@keyframes fadeIn {
    from { opacity: 0; transform: translate3d(0, 0, 0) scale(0.98); }
    to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

@keyframes slideInRight {
    from { transform: translate3d(100%, 0, 0); }
    to { transform: translate3d(0, 0, 0); }
}

@keyframes slideInLeft {
    from { transform: translate3d(-15%, 0, 0) scale(0.97); opacity: 0.3; }
    to { transform: translate3d(0, 0, 0) scale(1); opacity: 1; }
}

@keyframes slideOutLeft {
    from { transform: translate3d(0, 0, 0) scale(1); opacity: 1; }
    to { transform: translate3d(-15%, 0, 0) scale(0.97); opacity: 0.3; }
}

@keyframes slideOutRight {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(100%, 0, 0); }
}

@keyframes toastSlideUp {
    from { transform: translateY(100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* Accept Candidate Animation */
@keyframes pulseGreen {
    0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.5); }
    50% { transform: scale(1.02); box-shadow: 0 0 20px 6px rgba(16, 185, 129, 0.25); }
    100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}

.pulse-accepted {
    animation: pulseGreen 0.8s ease-in-out 2;
    border: 2px solid var(--success) !important;
}

/* Staggered List Item Animation */
@keyframes fadeInUp {
    from { opacity: 0; transform: translate3d(0, 14px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}

.animate-item {
    opacity: 0;
    animation: fadeInUp 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* Card entrance for feeds */
@keyframes cardSlideIn {
    from { opacity: 0; transform: translate3d(0, 10px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}

.card-animate {
    opacity: 0;
    animation: cardSlideIn 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}
