/* animations.css - Micro-animations & Visual Polish */

/* Online Pulse Animation */
@keyframes pulseDot {
    0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
    70% { transform: scale(1); box-shadow: 0 0 0 8px rgba(16, 185, 129, 0); }
    100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}

.online-pulse .pulse-dot {
    animation: pulseDot 2s infinite;
}

/* Radar Spinner for WebRTC Stream Placeholder */
@keyframes radarSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.radar-spinner {
    width: 70px;
    height: 70px;
    border: 3px solid rgba(14, 165, 233, 0.2);
    border-top: 3px solid var(--accent-primary);
    border-radius: 50%;
    animation: radarSpin 1.2s linear infinite;
}

/* Modal Animations */
@keyframes modalSlideUp {
    0% { opacity: 0; transform: translateY(20px) scale(0.96); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* Toast Animations */
@keyframes toastSlideIn {
    0% { opacity: 0; transform: translateX(40px); }
    100% { opacity: 1; transform: translateX(0); }
}

/* Smooth Transitions for Interactive Elements */
.action-btn-primary, .toolbar-btn, .routine-pill, .icon-btn, .view-btn {
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
