/* ========== KEYFRAME ANIMATIONS ========== */

@keyframes blobDrift1 {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(-60px, 60px) scale(1.15); }
}

@keyframes blobDrift2 {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(60px, -60px) scale(1.2); }
}

@keyframes blobDrift3 {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(40px, 40px) scale(1.1); }
}

@keyframes badgePulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.2); }
}

@keyframes ringPulse {
    0%, 100% { box-shadow: 0 0 0px rgba(124, 58, 237, 0); }
    50% { box-shadow: 0 0 20px rgba(124, 58, 237, 0.12); }
}

@keyframes flowLine {
    from { stroke-dashoffset: 24; }
    to { stroke-dashoffset: 0; }
}

@keyframes flowCircle {
    from { stroke-dashoffset: 0; }
    to { stroke-dashoffset: 160; }
}

@keyframes centerPulse {
    0%, 100% { box-shadow: 0 0 0 12px rgba(124, 58, 237, 0.06), 0 0 0 24px rgba(124, 58, 237, 0.03), 0 8px 32px rgba(124, 58, 237, 0.15); }
    50% { box-shadow: 0 0 0 16px rgba(124, 58, 237, 0.10), 0 0 0 32px rgba(124, 58, 237, 0.05), 0 8px 48px rgba(124, 58, 237, 0.25); }
}

@keyframes wf-node-pulse {
    0% { box-shadow: 0 15px 35px rgba(124, 58, 237, 0.15); transform: scale(1.1); }
    50% { box-shadow: 0 20px 45px rgba(124, 58, 237, 0.3); transform: scale(1.15); }
    100% { box-shadow: 0 15px 35px rgba(124, 58, 237, 0.15); transform: scale(1.1); }
}

@keyframes chatPulse {
    0% { transform: scale(1); opacity: 0.8; }
    70% { transform: scale(1.6); opacity: 0; }
    100% { transform: scale(1.6); opacity: 0; }
}

@keyframes chatFadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes floatingSphere {
    0% { transform: translateY(0px); }
    50% { transform: translateY(-14px); }
    100% { transform: translateY(0px); }
}

@keyframes sparkleFloat {
    0% { opacity: 0.3; transform: translateY(0px); }
    50% { opacity: 1; transform: translateY(-8px); }
    100% { opacity: 0.3; transform: translateY(0px); }
}
