.reveal {
  opacity: 1;
  transform: none;
}

.reveal.is-visible {
  animation: reveal-block 0.58s var(--ease) both;
}

.reveal .reveal-item {
  opacity: 1;
  transform: none;
}

.reveal.is-visible .reveal-item {
  animation: reveal-item 0.5s var(--ease) both;
  animation-delay: var(--reveal-delay, 0ms);
}

.glow-line {
  position: absolute;
  inset: auto 0 0 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, rgba(34, 211, 238, 0.6), transparent);
  opacity: 0.6;
}

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

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

@keyframes gridDrift {
  from {
    background-position: 0 0, 0 0;
  }
  to {
    background-position: 44px 44px, 44px 44px;
  }
}

@keyframes softPulse {
  0% {
    filter: saturate(1) brightness(1);
  }
  50% {
    filter: saturate(1.1) brightness(1.06);
  }
  100% {
    filter: saturate(1) brightness(1);
  }
}

@keyframes reveal-block {
  from {
    opacity: 0.72;
    transform: translateY(10px);
    filter: saturate(0.94);
  }
  to {
    opacity: 1;
    transform: translateY(0);
    filter: saturate(1);
  }
}

@keyframes reveal-item {
  from {
    opacity: 0.78;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal.is-visible,
  .reveal .reveal-item {
    opacity: 1;
    transform: none;
    animation: none;
    transition: none;
  }
}
