/* Motion language: calm reveal, restrained drift, precise UI response. */

.js .reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity var(--transition-reveal),
    transform var(--transition-reveal);
}

.js .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.hero .reveal:nth-child(2) { transition-delay: 70ms; }
.hero .reveal:nth-child(3) { transition-delay: 140ms; }
.hero .reveal:nth-child(4) { transition-delay: 210ms; }
.hero-console.reveal { transition-delay: 180ms; }

.capability:nth-child(2),
.solution-card:nth-child(2) {
  transition-delay: 70ms;
}

.capability:nth-child(3),
.solution-card:nth-child(3) {
  transition-delay: 140ms;
}

.engine-rings span {
  animation: ring-breathe 5.5s ease-in-out infinite;
}

.engine-rings span:nth-child(2) {
  animation-delay: -1.2s;
}

.engine-rings span:nth-child(3) {
  animation-delay: -2.4s;
}

.signal-dot {
  animation: signal-pulse 2.8s ease-out infinite;
}

.orbit--one {
  animation: orbit-drift-one 9s ease-in-out infinite alternate;
}

.orbit--two {
  animation: orbit-drift-two 12s ease-in-out infinite alternate;
}

.orbit--three {
  animation: orbit-drift-three 15s ease-in-out infinite alternate;
}

.modal[aria-hidden="false"] .modal__backdrop {
  animation: modal-fade 240ms ease both;
}

.modal[aria-hidden="false"] .modal__panel {
  animation: modal-enter 400ms cubic-bezier(.22, 1, .36, 1) both;
}

.modal.is-closing .modal__backdrop {
  animation: modal-fade 180ms ease reverse both;
}

.modal.is-closing .modal__panel {
  animation: modal-exit 180ms ease both;
}

@keyframes ring-breathe {
  0%, 100% { opacity: .45; transform: scale(.98); }
  50% { opacity: 1; transform: scale(1.025); }
}

@keyframes signal-pulse {
  0% { box-shadow: 0 0 0 0 rgba(200, 241, 90, .34); }
  70%, 100% { box-shadow: 0 0 0 16px rgba(200, 241, 90, 0); }
}

@keyframes orbit-drift-one {
  from { transform: translate(-50%, -50%) rotate(-2deg); }
  to { transform: translate(-50%, -50%) rotate(3deg); }
}

@keyframes orbit-drift-two {
  from { transform: translate(-50%, -50%) rotate(2deg); }
  to { transform: translate(-50%, -50%) rotate(-3deg); }
}

@keyframes orbit-drift-three {
  from { transform: translate(-50%, -50%) rotate(-1deg); }
  to { transform: translate(-50%, -50%) rotate(2deg); }
}

@keyframes modal-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes modal-enter {
  from { opacity: 0; transform: translateY(30px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes modal-exit {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(12px) scale(.985); }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  .js .reveal {
    opacity: 1;
    transform: none;
  }
}
