/* =========================================================
   animations.css
   Schlankes Subset von animate.css – nur die tatsächlich
   auf max-z.de genutzten Keyframes (fadeIn*, bounceInLeft, zoomIn/Out)
   ========================================================= */

@keyframes fadeInLeft {
  from { opacity: 0; transform: translate3d(-100%, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes fadeInRight {
  from { opacity: 0; transform: translate3d(100%, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translate3d(0, 100%, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes bounceInLeft {
  from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); }
  0%   { opacity: 0; transform: translate3d(-3000px, 0, 0); }
  60%  { opacity: 1; transform: translate3d(25px, 0, 0); }
  75%  { opacity: 1; transform: translate3d(-10px, 0, 0); }
  90%  { opacity: 1; transform: translate3d(5px, 0, 0); }
  100% { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes zoomIn {
  from { opacity: 0; transform: scale3d(.3, .3, .3); }
  50%  { opacity: 1; }
}

@keyframes zoomOut {
  from { opacity: 1; }
  50%  { opacity: 0; transform: scale3d(.3, .3, .3); }
  to   { opacity: 0; }
}

@keyframes blink {
  50% { opacity: 0; }
}

@keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(8px); }
  60% { transform: translateY(4px); }
}

/* Klassen, die von reveal.js per IntersectionObserver gesetzt werden */
.reveal-fadeInLeft.in-view  { animation-name: fadeInLeft; }
.reveal-fadeInRight.in-view { animation-name: fadeInRight; }
.reveal-fadeInUp.in-view    { animation-name: fadeInUp; }
.reveal-bounceInLeft.in-view{ animation-name: bounceInLeft; }

.zoom-enter { animation: zoomIn .35s ease both; }
.zoom-leave { animation: zoomOut .25s ease both; }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.in-view {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
