/* Keyframes */
@keyframes fadeUp {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes blurReveal {
  0% {
    opacity: 0;
    filter: blur(10px);
  }
  100% {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes scaleIn {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes float {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes floatSlow {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-15px);
  }
}

/* Utility Classes */
.animate-fade-up {
  opacity: 0;
  animation: fadeUp 0.8s var(--transition-normal) forwards;
}

.animate-blur-reveal {
  opacity: 0;
  animation: blurReveal 1s var(--transition-slow) forwards;
}

.animate-scale-in {
  opacity: 0;
  animation: scaleIn 0.8s var(--transition-normal) forwards;
}

/* Animation Delays */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-400 { animation-delay: 0.4s; }
.delay-500 { animation-delay: 0.5s; }

/* Typing Effect Cursor */
.typing-cursor {
  display: inline-block;
  width: 3px;
  height: 1em;
  background-color: var(--primary-color);
  animation: blink 1s step-end infinite;
  vertical-align: text-bottom;
  margin-left: 4px;
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* Hover Elements */
.hover-float {
  transition: transform var(--transition-normal), box-shadow var(--transition-normal);
}
.hover-float:hover {
  transform: translateY(-5px);
  box-shadow: var(--glass-shadow);
}
