/* ═══════════════════════════════════════════════════
   REVEAL-ANIMATIONEN
   Nur aktiv wenn JS geladen (.js-Klasse auf <html>)
   ═══════════════════════════════════════════════════ */

.js .reveal {
  opacity: 0; transform: translateY(20px) scale(0.98);
  transition: opacity 450ms cubic-bezier(0.25,0.46,0.45,0.94),
              transform 450ms cubic-bezier(0.25,0.46,0.45,0.94);
}
.js .reveal.visible { opacity: 1; transform: translateY(0) scale(1) }
.js .reveal-stagger .reveal:nth-child(1) { transition-delay: 0ms }
.js .reveal-stagger .reveal:nth-child(2) { transition-delay: 100ms }
.js .reveal-stagger .reveal:nth-child(3) { transition-delay: 200ms }
.js .reveal-stagger .reveal:nth-child(4) { transition-delay: 300ms }
.js .reveal-stagger .reveal:nth-child(5) { transition-delay: 400ms }
.js .reveal-stagger .reveal:nth-child(6) { transition-delay: 500ms }
.js .reveal-stagger .reveal:nth-child(7) { transition-delay: 600ms }

@keyframes fadeUp { from { opacity: 0; transform: translateY(24px) } to { opacity: 1; transform: translateY(0) } }
@keyframes fadeIn { from { opacity: 0 } to { opacity: 1 } }
@keyframes pulse { 0%,100% { opacity: 0.4; transform: scale(1) } 50% { opacity: 1; transform: scale(1.3) } }


/* ═══════════════════════════════════════════════════
   BARRIEREFREIHEIT — Reduced Motion
   ═══════════════════════════════════════════════════ */

@media(prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important }
  .js .reveal { opacity: 1; transform: none }
  .aurora::before { animation: none }
}
