/* DEPLA reveal. Hidden state only when reveal.js has set html.reveal-on (progressive enhancement).
   Values as measured on the live site: 1s, translate 100 % (animate.css), trigger at 90 % viewport.
   Before the trigger only opacity is changed (no transform), so IntersectionObserver sees the real box. */
.reveal-on body { overflow-x: clip; }
.reveal-on .reveal:not(.is-visible) { opacity: 0; }
.reveal-on .reveal.is-visible {
  animation: reveal-up var(--reveal-duration, 1s) ease var(--reveal-delay, 0s) both;
}
.reveal-on .reveal--left.is-visible { animation-name: reveal-left; }
.reveal-on .reveal--right.is-visible { animation-name: reveal-right; }
@keyframes reveal-up { from { opacity: 0; transform: translate3d(0, 100%, 0); } to { opacity: 1; transform: none; } }
@keyframes reveal-left { from { opacity: 0; transform: translate3d(-100%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes reveal-right { from { opacity: 0; transform: translate3d(100%, 0, 0); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .reveal-on .reveal:not(.is-visible),
  .reveal-on .reveal.is-visible { opacity: 1; animation: none; }
}
@media print {
  .reveal-on .reveal:not(.is-visible) { opacity: 1; }
}
