/* Cute Animations & Micro-interactions */

/* Scanning bar sweep effect */
@keyframes scan-sweep {
  0% {
    top: 0%;
  }
  50% {
    top: 100%;
  }
  100% {
    top: 0%;
  }
}

/* Floating bobbing animation for elements like speech bubbles and coffee cups */
@keyframes float-bob {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-8px);
  }
}

/* Soft breathing scale animation for characters */
@keyframes breath {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.04);
  }
}

/* Bobbing and breathing together for dino */
@keyframes cute-bounce {
  0%, 100% {
    transform: translateY(0) scaleX(1) scaleY(1);
  }
  50% {
    transform: translateY(-6px) scaleX(0.96) scaleY(1.04);
  }
}

/* Stressed panic shake */
@keyframes stress-shiver {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  20% { transform: translate(-1px, 1px) rotate(-0.5deg); }
  40% { transform: translate(1px, -1px) rotate(0.5deg); }
  60% { transform: translate(-1px, -1px) rotate(-0.5deg); }
  80% { transform: translate(1px, 1px) rotate(0.5deg); }
}

/* Bouncy entrance scale for modals/buttons */
@keyframes bounce-in {
  0% {
    transform: scale(0.3);
    opacity: 0;
  }
  50% {
    transform: scale(1.08);
    opacity: 0.8;
  }
  70% {
    transform: scale(0.95);
    opacity: 0.9;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* Sparkle twinkle */
@keyframes sparkle-twinkle {
  0%, 100% {
    opacity: 0.3;
    transform: scale(0.8);
  }
  50% {
    opacity: 1;
    transform: scale(1.2);
  }
}

/* Heart pop up animation */
@keyframes heart-pop {
  0% {
    transform: translateY(0) scale(0.8);
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    transform: translateY(-80px) scale(1.2);
    opacity: 0;
  }
}

/* Fade in up effect for cards */
@keyframes fade-in-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Screen flash on hit */
@keyframes flash-red {
  0%, 100% {
    background-color: transparent;
  }
  50% {
    background-color: rgba(255, 100, 100, 0.25);
  }
}

/* Speech bubble typing dot blink */
@keyframes dot-blink {
  0%, 100% {
    opacity: 0.2;
  }
  50% {
    opacity: 1;
  }
}

/* CSS Animation Classes */
.anim-float {
  animation: float-bob 3s ease-in-out infinite;
}

.anim-breath {
  animation: breath 2.5s ease-in-out infinite;
}

.anim-dino-idle {
  animation: cute-bounce 2s ease-in-out infinite;
}

.anim-dino-stress {
  animation: stress-shiver 0.2s linear infinite;
}

.anim-sparkle {
  animation: sparkle-twinkle 1.5s ease-in-out infinite;
}

.anim-bounce-in {
  animation: bounce-in 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.anim-fade-in-up {
  animation: fade-in-up 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}
