/* ===== ANIMATIONS ===== */
@keyframes float {
  0%,100% { transform: translateY(0px); }
  50% { transform: translateY(-6px); }
}
@keyframes floatActive {
  0%,100% { transform: translateY(0px) scale(1.05); }
  50% { transform: translateY(-8px) scale(1.05); }
}
@keyframes speaking {
  0%,100% { box-shadow: 0 0 0 0 rgba(99,179,237,0); }
  50% { box-shadow: 0 0 0 10px rgba(99,179,237,0.3); }
}
@keyframes glowPulse {
  0%,100% { filter: drop-shadow(0 4px 12px rgba(0,0,0,0.8)) drop-shadow(0 0 8px rgba(147,197,253,0.4)); }
  50% { filter: drop-shadow(0 4px 12px rgba(0,0,0,0.8)) drop-shadow(0 0 20px rgba(147,197,253,0.9)); }
}
@keyframes fadeInUp {
  from { opacity:0; transform:translateY(12px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes popIn {
  0% { transform:scale(0.5); opacity:0; }
  80% { transform:scale(1.08); }
  100% { transform:scale(1); opacity:1; }
}
@keyframes slideInRight {
  from { transform:translateX(100%); opacity:0; }
  to { transform:translateX(0); opacity:1; }
}
@keyframes slideOutRight {
  from { transform:translateX(0); opacity:1; }
  to { transform:translateX(100%); opacity:0; }
}
@keyframes typing {
  0%,80%,100% { transform:scale(0.6); opacity:0.4; }
  40% { transform:scale(1); opacity:1; }
}
@keyframes bubbleIn {
  0% { transform:scale(0) translateY(10px); opacity:0; transform-origin: bottom center; }
  80% { transform:scale(1.05) translateY(-2px); }
  100% { transform:scale(1) translateY(0); opacity:1; }
}
@keyframes statusPulse {
  0%,100% { opacity:1; }
  50% { opacity:0.4; }
}
@keyframes ringPulse {
  0% { transform:scale(1); opacity:0.8; }
  100% { transform:scale(1.6); opacity:0; }
}
@keyframes idleBob {
  0%,100% { transform: translateY(0px); }
  50%      { transform: translateY(-5px); }
}
@keyframes wave {
  0%,100% { transform: rotate(0deg)   translateY(0px); }
  20%      { transform: rotate(-6deg) translateY(-3px); }
  40%      { transform: rotate(6deg)  translateY(-5px); }
  60%      { transform: rotate(-4deg) translateY(-3px); }
  80%      { transform: rotate(4deg)  translateY(-2px); }
}
@keyframes lipOpen {
  0%,100% { height: 2px; opacity: 0.7; }
  50%      { height: 8px; opacity: 1;   }
}
@keyframes hoverGlow {
  0%,100% { filter: drop-shadow(0 6px 14px rgba(0,0,0,0.85)) drop-shadow(0 0 12px rgba(255,220,100,0.6)); }
  50%      { filter: drop-shadow(0 6px 14px rgba(0,0,0,0.85)) drop-shadow(0 0 24px rgba(255,220,100,0.9)); }
}
