/* More Fragments - Animate.css integration */

/* ==========================================================================
   Phase 1: Attention Seekers (CSS-only, same animation both ways)
   ========================================================================== */

/* Bounce */
.reveal .slides section .fragment.bounce {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.bounce {
  display: inline-block;
}
.reveal .slides section .fragment.bounce.current-fragment {
  animation-name: bounce;
  animation-duration: 1s;
}

/* Flash */
.reveal .slides section .fragment.flash {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.flash {
  display: inline-block;
}
.reveal .slides section .fragment.flash.current-fragment {
  animation-name: flash;
  animation-duration: 1s;
}

/* Pulse */
.reveal .slides section .fragment.pulse {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.pulse {
  display: inline-block;
}
.reveal .slides section .fragment.pulse.current-fragment {
  animation-name: pulse;
  animation-duration: 1s;
}

/* RubberBand */
.reveal .slides section .fragment.rubberBand {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.rubberBand {
  display: inline-block;
}
.reveal .slides section .fragment.rubberBand.current-fragment {
  animation-name: rubberBand;
  animation-duration: 1s;
}

/* ShakeX */
.reveal .slides section .fragment.shakeX {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.shakeX {
  display: inline-block;
}
.reveal .slides section .fragment.shakeX.current-fragment {
  animation-name: shakeX;
  animation-duration: 1s;
}

/* ShakeY */
.reveal .slides section .fragment.shakeY {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.shakeY {
  display: inline-block;
}
.reveal .slides section .fragment.shakeY.current-fragment {
  animation-name: shakeY;
  animation-duration: 1s;
}

/* HeadShake */
.reveal .slides section .fragment.headShake {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.headShake {
  display: inline-block;
}
.reveal .slides section .fragment.headShake.current-fragment {
  animation-name: headShake;
  animation-duration: 1s;
}

/* Swing */
.reveal .slides section .fragment.swing {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.swing {
  display: inline-block;
}
.reveal .slides section .fragment.swing.current-fragment {
  animation-name: swing;
  animation-duration: 1s;
}

/* Tada */
.reveal .slides section .fragment.tada {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.tada {
  display: inline-block;
}
.reveal .slides section .fragment.tada.current-fragment {
  animation-name: tada;
  animation-duration: 1s;
}

/* Wobble */
.reveal .slides section .fragment.wobble {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.wobble {
  display: inline-block;
}
.reveal .slides section .fragment.wobble.current-fragment {
  animation-name: wobble;
  animation-duration: 1s;
}

/* Jello */
.reveal .slides section .fragment.jello {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.jello {
  display: inline-block;
}
.reveal .slides section .fragment.jello.current-fragment {
  animation-name: jello;
  animation-duration: 1s;
}

/* HeartBeat */
.reveal .slides section .fragment.heartBeat {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.heartBeat {
  display: inline-block;
}
.reveal .slides section .fragment.heartBeat.current-fragment {
  animation-name: heartBeat;
  animation-duration: 1s;
}

/* ==========================================================================
   Phase 3: Back Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Back Entrances */
.reveal .slides section span.fragment.backInDown,
.reveal .slides section span.fragment.backInLeft,
.reveal .slides section span.fragment.backInRight,
.reveal .slides section span.fragment.backInUp {
  display: inline-block;
}
.reveal .slides section .fragment.backInDown,
.reveal .slides section .fragment.backInLeft,
.reveal .slides section .fragment.backInRight,
.reveal .slides section .fragment.backInUp {
  opacity: 0;
}
.reveal .slides section .fragment.backInDown.visible,
.reveal .slides section .fragment.backInLeft.visible,
.reveal .slides section .fragment.backInRight.visible,
.reveal .slides section .fragment.backInUp.visible {
  opacity: 1;
}

/* Back Exits */
.reveal .slides section span.fragment.backOutDown,
.reveal .slides section span.fragment.backOutLeft,
.reveal .slides section span.fragment.backOutRight,
.reveal .slides section span.fragment.backOutUp {
  display: inline-block;
}
.reveal .slides section .fragment.backOutDown,
.reveal .slides section .fragment.backOutLeft,
.reveal .slides section .fragment.backOutRight,
.reveal .slides section .fragment.backOutUp {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.backOutDown.visible,
.reveal .slides section .fragment.backOutLeft.visible,
.reveal .slides section .fragment.backOutRight.visible,
.reveal .slides section .fragment.backOutUp.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 4: Bouncing Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Bouncing Entrances */
.reveal .slides section span.fragment.bounceIn,
.reveal .slides section span.fragment.bounceInDown,
.reveal .slides section span.fragment.bounceInLeft,
.reveal .slides section span.fragment.bounceInRight,
.reveal .slides section span.fragment.bounceInUp {
  display: inline-block;
}
.reveal .slides section .fragment.bounceIn,
.reveal .slides section .fragment.bounceInDown,
.reveal .slides section .fragment.bounceInLeft,
.reveal .slides section .fragment.bounceInRight,
.reveal .slides section .fragment.bounceInUp {
  opacity: 0;
}
.reveal .slides section .fragment.bounceIn.visible,
.reveal .slides section .fragment.bounceInDown.visible,
.reveal .slides section .fragment.bounceInLeft.visible,
.reveal .slides section .fragment.bounceInRight.visible,
.reveal .slides section .fragment.bounceInUp.visible {
  opacity: 1;
}

/* Bouncing Exits */
.reveal .slides section span.fragment.bounceOut,
.reveal .slides section span.fragment.bounceOutDown,
.reveal .slides section span.fragment.bounceOutLeft,
.reveal .slides section span.fragment.bounceOutRight,
.reveal .slides section span.fragment.bounceOutUp {
  display: inline-block;
}
.reveal .slides section .fragment.bounceOut,
.reveal .slides section .fragment.bounceOutDown,
.reveal .slides section .fragment.bounceOutLeft,
.reveal .slides section .fragment.bounceOutRight,
.reveal .slides section .fragment.bounceOutUp {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.bounceOut.visible,
.reveal .slides section .fragment.bounceOutDown.visible,
.reveal .slides section .fragment.bounceOutLeft.visible,
.reveal .slides section .fragment.bounceOutRight.visible,
.reveal .slides section .fragment.bounceOutUp.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 5: Fading Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Fading Entrances */
.reveal .slides section span.fragment.fadeIn,
.reveal .slides section span.fragment.fadeInDown,
.reveal .slides section span.fragment.fadeInDownBig,
.reveal .slides section span.fragment.fadeInLeft,
.reveal .slides section span.fragment.fadeInLeftBig,
.reveal .slides section span.fragment.fadeInRight,
.reveal .slides section span.fragment.fadeInRightBig,
.reveal .slides section span.fragment.fadeInUp,
.reveal .slides section span.fragment.fadeInUpBig,
.reveal .slides section span.fragment.fadeInTopLeft,
.reveal .slides section span.fragment.fadeInTopRight,
.reveal .slides section span.fragment.fadeInBottomLeft,
.reveal .slides section span.fragment.fadeInBottomRight {
  display: inline-block;
}
.reveal .slides section .fragment.fadeIn,
.reveal .slides section .fragment.fadeInDown,
.reveal .slides section .fragment.fadeInDownBig,
.reveal .slides section .fragment.fadeInLeft,
.reveal .slides section .fragment.fadeInLeftBig,
.reveal .slides section .fragment.fadeInRight,
.reveal .slides section .fragment.fadeInRightBig,
.reveal .slides section .fragment.fadeInUp,
.reveal .slides section .fragment.fadeInUpBig,
.reveal .slides section .fragment.fadeInTopLeft,
.reveal .slides section .fragment.fadeInTopRight,
.reveal .slides section .fragment.fadeInBottomLeft,
.reveal .slides section .fragment.fadeInBottomRight {
  opacity: 0;
}
.reveal .slides section .fragment.fadeIn.visible,
.reveal .slides section .fragment.fadeInDown.visible,
.reveal .slides section .fragment.fadeInDownBig.visible,
.reveal .slides section .fragment.fadeInLeft.visible,
.reveal .slides section .fragment.fadeInLeftBig.visible,
.reveal .slides section .fragment.fadeInRight.visible,
.reveal .slides section .fragment.fadeInRightBig.visible,
.reveal .slides section .fragment.fadeInUp.visible,
.reveal .slides section .fragment.fadeInUpBig.visible,
.reveal .slides section .fragment.fadeInTopLeft.visible,
.reveal .slides section .fragment.fadeInTopRight.visible,
.reveal .slides section .fragment.fadeInBottomLeft.visible,
.reveal .slides section .fragment.fadeInBottomRight.visible {
  opacity: 1;
}

/* Fading Exits */
.reveal .slides section span.fragment.fadeOut,
.reveal .slides section span.fragment.fadeOutDown,
.reveal .slides section span.fragment.fadeOutDownBig,
.reveal .slides section span.fragment.fadeOutLeft,
.reveal .slides section span.fragment.fadeOutLeftBig,
.reveal .slides section span.fragment.fadeOutRight,
.reveal .slides section span.fragment.fadeOutRightBig,
.reveal .slides section span.fragment.fadeOutUp,
.reveal .slides section span.fragment.fadeOutUpBig,
.reveal .slides section span.fragment.fadeOutTopLeft,
.reveal .slides section span.fragment.fadeOutTopRight,
.reveal .slides section span.fragment.fadeOutBottomLeft,
.reveal .slides section span.fragment.fadeOutBottomRight {
  display: inline-block;
}
.reveal .slides section .fragment.fadeOut,
.reveal .slides section .fragment.fadeOutDown,
.reveal .slides section .fragment.fadeOutDownBig,
.reveal .slides section .fragment.fadeOutLeft,
.reveal .slides section .fragment.fadeOutLeftBig,
.reveal .slides section .fragment.fadeOutRight,
.reveal .slides section .fragment.fadeOutRightBig,
.reveal .slides section .fragment.fadeOutUp,
.reveal .slides section .fragment.fadeOutUpBig,
.reveal .slides section .fragment.fadeOutTopLeft,
.reveal .slides section .fragment.fadeOutTopRight,
.reveal .slides section .fragment.fadeOutBottomLeft,
.reveal .slides section .fragment.fadeOutBottomRight {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.fadeOut.visible,
.reveal .slides section .fragment.fadeOutDown.visible,
.reveal .slides section .fragment.fadeOutDownBig.visible,
.reveal .slides section .fragment.fadeOutLeft.visible,
.reveal .slides section .fragment.fadeOutLeftBig.visible,
.reveal .slides section .fragment.fadeOutRight.visible,
.reveal .slides section .fragment.fadeOutRightBig.visible,
.reveal .slides section .fragment.fadeOutUp.visible,
.reveal .slides section .fragment.fadeOutUpBig.visible,
.reveal .slides section .fragment.fadeOutTopLeft.visible,
.reveal .slides section .fragment.fadeOutTopRight.visible,
.reveal .slides section .fragment.fadeOutBottomLeft.visible,
.reveal .slides section .fragment.fadeOutBottomRight.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 6: Flippers
   ========================================================================== */

/* Flip - attention seeker style (always visible, just animates) */
.reveal .slides section .fragment.flip {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section span.fragment.flip {
  display: inline-block;
}
.reveal .slides section .fragment.flip.current-fragment {
  animation-name: flip;
  animation-duration: 1s;
}

/* Flip Entrances */
.reveal .slides section span.fragment.flipInX,
.reveal .slides section span.fragment.flipInY {
  display: inline-block;
}
.reveal .slides section .fragment.flipInX,
.reveal .slides section .fragment.flipInY {
  opacity: 0;
}
.reveal .slides section .fragment.flipInX.visible,
.reveal .slides section .fragment.flipInY.visible {
  opacity: 1;
}

/* Flip Exits */
.reveal .slides section span.fragment.flipOutX,
.reveal .slides section span.fragment.flipOutY {
  display: inline-block;
}
.reveal .slides section .fragment.flipOutX,
.reveal .slides section .fragment.flipOutY {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.flipOutX.visible,
.reveal .slides section .fragment.flipOutY.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 7: Lightspeed
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Lightspeed Entrances */
.reveal .slides section span.fragment.lightSpeedInRight,
.reveal .slides section span.fragment.lightSpeedInLeft {
  display: inline-block;
}
.reveal .slides section .fragment.lightSpeedInRight,
.reveal .slides section .fragment.lightSpeedInLeft {
  opacity: 0;
}
.reveal .slides section .fragment.lightSpeedInRight.visible,
.reveal .slides section .fragment.lightSpeedInLeft.visible {
  opacity: 1;
}

/* Lightspeed Exits */
.reveal .slides section span.fragment.lightSpeedOutRight,
.reveal .slides section span.fragment.lightSpeedOutLeft {
  display: inline-block;
}
.reveal .slides section .fragment.lightSpeedOutRight,
.reveal .slides section .fragment.lightSpeedOutLeft {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.lightSpeedOutRight.visible,
.reveal .slides section .fragment.lightSpeedOutLeft.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 8: Rotating Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Rotating Entrances */
.reveal .slides section span.fragment.rotateIn,
.reveal .slides section span.fragment.rotateInDownLeft,
.reveal .slides section span.fragment.rotateInDownRight,
.reveal .slides section span.fragment.rotateInUpLeft,
.reveal .slides section span.fragment.rotateInUpRight {
  display: inline-block;
}
.reveal .slides section .fragment.rotateIn,
.reveal .slides section .fragment.rotateInDownLeft,
.reveal .slides section .fragment.rotateInDownRight,
.reveal .slides section .fragment.rotateInUpLeft,
.reveal .slides section .fragment.rotateInUpRight {
  opacity: 0;
}
.reveal .slides section .fragment.rotateIn.visible,
.reveal .slides section .fragment.rotateInDownLeft.visible,
.reveal .slides section .fragment.rotateInDownRight.visible,
.reveal .slides section .fragment.rotateInUpLeft.visible,
.reveal .slides section .fragment.rotateInUpRight.visible {
  opacity: 1;
}

/* Rotating Exits */
.reveal .slides section span.fragment.rotateOut,
.reveal .slides section span.fragment.rotateOutDownLeft,
.reveal .slides section span.fragment.rotateOutDownRight,
.reveal .slides section span.fragment.rotateOutUpLeft,
.reveal .slides section span.fragment.rotateOutUpRight {
  display: inline-block;
}
.reveal .slides section .fragment.rotateOut,
.reveal .slides section .fragment.rotateOutDownLeft,
.reveal .slides section .fragment.rotateOutDownRight,
.reveal .slides section .fragment.rotateOutUpLeft,
.reveal .slides section .fragment.rotateOutUpRight {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.rotateOut.visible,
.reveal .slides section .fragment.rotateOutDownLeft.visible,
.reveal .slides section .fragment.rotateOutDownRight.visible,
.reveal .slides section .fragment.rotateOutUpLeft.visible,
.reveal .slides section .fragment.rotateOutUpRight.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 9: Sliding Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Sliding Entrances */
.reveal .slides section span.fragment.slideInDown,
.reveal .slides section span.fragment.slideInLeft,
.reveal .slides section span.fragment.slideInRight,
.reveal .slides section span.fragment.slideInUp {
  display: inline-block;
}
.reveal .slides section .fragment.slideInDown,
.reveal .slides section .fragment.slideInLeft,
.reveal .slides section .fragment.slideInRight,
.reveal .slides section .fragment.slideInUp {
  opacity: 0;
}
.reveal .slides section .fragment.slideInDown.visible,
.reveal .slides section .fragment.slideInLeft.visible,
.reveal .slides section .fragment.slideInRight.visible,
.reveal .slides section .fragment.slideInUp.visible {
  opacity: 1;
}

/* Sliding Exits */
.reveal .slides section span.fragment.slideOutDown,
.reveal .slides section span.fragment.slideOutLeft,
.reveal .slides section span.fragment.slideOutRight,
.reveal .slides section span.fragment.slideOutUp {
  display: inline-block;
}
.reveal .slides section .fragment.slideOutDown,
.reveal .slides section .fragment.slideOutLeft,
.reveal .slides section .fragment.slideOutRight,
.reveal .slides section .fragment.slideOutUp {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.slideOutDown.visible,
.reveal .slides section .fragment.slideOutLeft.visible,
.reveal .slides section .fragment.slideOutRight.visible,
.reveal .slides section .fragment.slideOutUp.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 10: Zooming Animations (Entrance/Exit Pairs)
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Zooming Entrances */
.reveal .slides section span.fragment.zoomIn,
.reveal .slides section span.fragment.zoomInDown,
.reveal .slides section span.fragment.zoomInLeft,
.reveal .slides section span.fragment.zoomInRight,
.reveal .slides section span.fragment.zoomInUp {
  display: inline-block;
}
.reveal .slides section .fragment.zoomIn,
.reveal .slides section .fragment.zoomInDown,
.reveal .slides section .fragment.zoomInLeft,
.reveal .slides section .fragment.zoomInRight,
.reveal .slides section .fragment.zoomInUp {
  opacity: 0;
}
.reveal .slides section .fragment.zoomIn.visible,
.reveal .slides section .fragment.zoomInDown.visible,
.reveal .slides section .fragment.zoomInLeft.visible,
.reveal .slides section .fragment.zoomInRight.visible,
.reveal .slides section .fragment.zoomInUp.visible {
  opacity: 1;
}

/* Zooming Exits */
.reveal .slides section span.fragment.zoomOut,
.reveal .slides section span.fragment.zoomOutDown,
.reveal .slides section span.fragment.zoomOutLeft,
.reveal .slides section span.fragment.zoomOutRight,
.reveal .slides section span.fragment.zoomOutUp {
  display: inline-block;
}
.reveal .slides section .fragment.zoomOut,
.reveal .slides section .fragment.zoomOutDown,
.reveal .slides section .fragment.zoomOutLeft,
.reveal .slides section .fragment.zoomOutRight,
.reveal .slides section .fragment.zoomOutUp {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.zoomOut.visible,
.reveal .slides section .fragment.zoomOutDown.visible,
.reveal .slides section .fragment.zoomOutLeft.visible,
.reveal .slides section .fragment.zoomOutRight.visible,
.reveal .slides section .fragment.zoomOutUp.visible {
  opacity: 0;
}

/* ==========================================================================
   Phase 11: Specials
   Animation names are controlled by JavaScript for proper forward/reverse handling
   ========================================================================== */

/* Hinge - entrance animation that fades in on reverse */
.reveal .slides section span.fragment.hinge {
  display: inline-block;
}
.reveal .slides section .fragment.hinge {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.hinge.visible {
  opacity: 0;
}

/* Jack In The Box - entrance animation */
.reveal .slides section span.fragment.jackInTheBox {
  display: inline-block;
}
.reveal .slides section .fragment.jackInTheBox {
  opacity: 0;
}
.reveal .slides section .fragment.jackInTheBox.visible {
  opacity: 1;
}

/* Roll In - entrance animation */
.reveal .slides section span.fragment.rollIn {
  display: inline-block;
}
.reveal .slides section .fragment.rollIn {
  opacity: 0;
}
.reveal .slides section .fragment.rollIn.visible {
  opacity: 1;
}

/* Roll Out - exit animation */
.reveal .slides section span.fragment.rollOut {
  display: inline-block;
}
.reveal .slides section .fragment.rollOut {
  opacity: unset;
  visibility: unset;
}
.reveal .slides section .fragment.rollOut.visible {
  opacity: 0;
}

/* ==========================================================================
   Speed Utility Classes
   From Animate.css: https://animate.style/
   ========================================================================== */

.reveal .slides section .fragment.slower {
  animation-duration: 3s;
}

.reveal .slides section .fragment.slow {
  animation-duration: 2s;
}

.reveal .slides section .fragment.fast {
  animation-duration: 800ms;
}

.reveal .slides section .fragment.faster {
  animation-duration: 500ms;
}
