@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

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

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

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

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

@keyframes pulse-ring {
  0% {
    box-shadow: 0 0 0 0 rgba(143, 162, 138, 0.4);
  }
  100% {
    box-shadow: 0 0 0 16px rgba(143, 162, 138, 0);
  }
}

.animate-fade-up {
  animation: fadeInUp 0.7s ease both;
}

.animate-float {
  animation: float 5s ease-in-out infinite;
}

[x-cloak] {
  display: none !important;
}

.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.typing-cursor {
  display: inline-block;
  width: 3px;
  margin-left: 3px;
  background: var(--color-primary-dark);
  animation: blink 1s step-start infinite;
}
