/*
  SolvAI — Motion-Utilities.

  Wichtig (Progressive Enhancement): Inhalte dürfen NIE rein über CSS versteckt werden,
  bevor JS läuft. Darum starten .reveal-Elemente sichtbar; erst main.js setzt beim Laden
  die Klasse `js-motion` auf <html>, und scroll-animations.js (Phase 2) animiert dann von
  einem hidden-Zustand ein. Ohne JS oder bei deaktiviertem Script bleibt alles sofort lesbar.
*/

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

html.js-motion .reveal {
  opacity: 0;
  transform: translateY(24px);
}

html.js-motion .reveal.is-revealed {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--dur-slow) var(--ease-calm),
    transform var(--dur-slow) var(--ease-calm);
}

@keyframes shadow-pulse {
  0%,
  100% {
    transform: translateX(-50%) scale(1);
    opacity: 0.85;
  }
  50% {
    transform: translateX(-50%) scale(0.9);
    opacity: 0.6;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.js-motion .reveal {
    opacity: 1;
    transform: none;
  }
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
