.fade-in-up {
  animation: fadeInUp 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  opacity: 0;
  transform: translateY(20px);
}
.delay-100 { animation-delay: 100ms; }
.delay-200 { animation-delay: 200ms; }
.delay-300 { animation-delay: 300ms; }
.delay-500 { animation-delay: 500ms; }
@keyframes fadeInUp {
  to { opacity: 1; transform: translateY(0); }
}

.typing-cursor {
  display: inline-block;
  width: 2px;
  height: 1.2em;
  background-color: #0ea5e9;
  margin-left: 2px;
  vertical-align: middle;
  animation: blink 1s step-end infinite;
}
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }

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

@keyframes bar1 { 0%, 100% { height: 40%; } 50% { height: 70%; } }
@keyframes bar2 { 0%, 100% { height: 60%; } 50% { height: 30%; } }
@keyframes bar3 { 0%, 100% { height: 30%; } 50% { height: 60%; } }
@keyframes bar4 { 0%, 100% { height: 80%; } 50% { height: 40%; } }
@keyframes bar5 { 0%, 100% { height: 100%; } 50% { height: 60%; } }
@keyframes bar6 { 0%, 100% { height: 50%; } 50% { height: 80%; } }
@keyframes bar7 { 0%, 100% { height: 30%; } 50% { height: 50%; } }

@keyframes terminal-reveal {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}
.term-line {
  opacity: 0;
  animation: terminal-reveal 0.4s ease-out forwards;
}

@keyframes subtle-glow {
  0%, 100% { opacity: 0.2; filter: grayscale(100%); transform: scale(0.95); }
  50% { opacity: 1; filter: grayscale(0%); transform: scale(1.05); }
}

@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
