.js [data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 520ms ease, transform 520ms ease;
}
.js [data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0);
}
.visual-dashboard, .visual-tokens, .visual-ring, .visual-vault, .visual-building, .visual-support, .visual-cards {
  animation: softGlow 9s ease-in-out infinite alternate;
}
.token, .dash-mini, .support-orb {
  animation: floatSoft 7s ease-in-out infinite alternate;
}
@keyframes softGlow {
  from { background-position: 0 0; }
  to { background-position: 22px 18px; }
}
@keyframes floatSoft {
  from { translate: 0 0; }
  to { translate: 0 -8px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
  .js [data-reveal] { opacity: 1; transform: none; }
}

