.js .reveal-item,
.js .reveal-word,
.js .reveal-on-scroll {
  opacity: 0;
}

.js .reveal-item {
  transform: translateY(16px);
}

.js .reveal-word {
  transform: translateY(100%);
}

.js .reveal-on-scroll {
  transform: translateY(24px);
}

.orbit__satellites,
.orbit__core {
  transform-box: view-box;
  transform-origin: 240px 240px;
}

.orbit__satellites {
  animation: orbit-spin 40s linear infinite;
}

.orbit__core {
  animation: core-pulse 3.4s ease-in-out infinite;
}

.lost-orbit__core {
  transform-box: view-box;
  transform-origin: 160px 160px;
  animation: core-pulse 3.4s ease-in-out infinite;
}

.lost-orbit__satellite {
  transform-box: view-box;
  transform-origin: 262.5px 57.5px;
  animation: stray-drift 4s ease-in-out infinite;
}

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

@keyframes core-pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

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

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .js .reveal-item,
  .js .reveal-word,
  .js .reveal-on-scroll {
    opacity: 1;
    transform: none;
  }

  .orbit__satellites,
  .orbit__core,
  .lost-orbit__core,
  .lost-orbit__satellite {
    animation: none;
  }

  .btn:hover,
  .card:hover {
    transform: none;
  }

  .contact__status {
    transition: none;
  }
}
