.rotation{
  animation-name: rotation;
  -webkit-animation-name: rotation;

  animation-duration: 4s;
  -webkit-animation-duration: 4s;

  animation-timing-function: linear;
  -webkit-animation-timing-function: linear;

  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;

  visibility: visible !important;
}
@-webkit-keyframes rotation {
  from { -webkit-transform: rotate(0deg) translateX(50%) rotate(0deg); }
  to   { -webkit-transform: rotate(360deg) translateX(50%) rotate(-360deg); }
}
@keyframes rotation {
  from { transform: rotate(0deg) translateX(50%) rotate(0deg); }
  to   { transform: rotate(360deg) translateX(50%) rotate(-360deg); }
}

/*
==========
sideToSide
==========
*/
.sideToSide{
  animation-name: sideToSide;
  -webkit-animation-name: sideToSide;

  animation-duration: 3s;
  -webkit-animation-duration: 3s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;

  visibility: visible !important;
}
@-webkit-keyframes sideToSide {
  0% {
    -webkit-transform: translate(100%, 0);
  }
  50% {
    -webkit-transform: translate(-100%, 0);
  }
  100% {
    -webkit-transform: translate(100%, 0);
  }
}
@keyframes sideToSide {
  0% {
    transform: translate(100%, 0);
  }
  50% {
    transform: translate(-100%, 0);
  }
  100% {
    transform: translate(100%, 0);
  }
}

/*
==========
zoomer
==========
*/
.zoomer{
  animation-name: zoomer;
  -webkit-animation-name: zoomer;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: cubic-bezier(0.5, 0.2, 0.3, 1.0);
  -webkit-animation-timing-function: cubic-bezier(0.5, 0.2, 0.3, 1.0);

  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;

  visibility: visible !important;
}
@-webkit-keyframes zoomer {
  0% {
    -webkit-transform: scale(.3);
  }
  100% {
    -webkit-transform: scale(1);
  }
}
@keyframes zoomer {
  0% {
    transform: scale(.3);
  }
  100% {
    transform: scale(1);
  }
}

/*
==========
zoomerOut
==========
*/
.zoomerOut{
  animation-name: zoomerOut;
  -webkit-animation-name: zoomerOut;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: cubic-bezier(0.5, 0.2, 0.3, 1.0);
  -webkit-animation-timing-function: cubic-bezier(0.5, 0.2, 0.3, 1.0);

  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;

  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;

  visibility: visible !important;
}
@-webkit-keyframes zoomerOut {
  0% {
    -webkit-transform: scale(1);
  }
  100% {
    -webkit-transform: scale(0);
  }
}
@keyframes zoomerOut {
  0% {
    transform: scale(1);
  }
  100% {
    transform: scale(0);
  }
}

/*
==========
spinner
==========
*/
.spinner{
  animation-name: spinner;
  -webkit-animation-name: spinner;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: linear;
  -webkit-animation-timing-function: linear;

  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;

  visibility: visible !important;
}
@-webkit-keyframes spinner {
  from { -webkit-transform: rotate(0deg); }
  to { -webkit-transform: rotate(360deg); }
}
@keyframes spinner {
  from {transform:rotate(0deg);}
  to {transform:rotate(360deg);}
}

/*
==========
pulse
==========
*/
.pulse{
  animation-name: pulse;
  -webkit-animation-name: pulse;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: linear;
  -webkit-animation-timing-function: linear;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;

  visibility: visible !important;
}

@keyframes pulse {
  0% {
    transform: scale(0.9);
    opacity: 0.9;
  }
  50% {
    transform: scale(1);
    opacity: 1;
  }
  100% {
    transform: scale(0.9);
    opacity: 0.9;
  }
}

@-webkit-keyframes pulse {
  0% {
    -webkit-transform: scale(0.95);
    opacity: 0.9;
  }
  50% {
    -webkit-transform: scale(1);
    opacity: 1;
  }
  100% {
    -webkit-transform: scale(0.95);
    opacity: 0.9;
  }
}



/*
==========
shake
==========
*/
.shake{
  animation-name: shake;
  -webkit-animation-name: shake;

  animation-duration: 0.4s;
  -webkit-animation-duration: 0.4s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: 1;
  -webkit-animation-iteration-count: 1;

  visibility: visible !important;
}

@keyframes shake {
  0%, 100% {transform: translateX(0);}
  16%, 50%, 83% {transform: translateX(-10px);}
  33%, 66% {transform: translateX(10px);}
}

@-webkit-keyframes shake {
  0%, 100% {-webkit-transform: translateX(0);}
  16%, 50%, 83% {-webkit-transform: translateX(-10px);}
  33%, 66% {-webkit-transform: translateX(10px);}
}

/*
==========
barrelRoll
==========
*/
.barrelRoll{
  animation-name: barrelRoll;
  -webkit-animation-name: barrelRoll;

  animation-duration: 0.4s;
  -webkit-animation-duration: 0.4s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: 1;
  -webkit-animation-iteration-count: 1;

  visibility: visible !important;
}

@keyframes barrelRoll {
  from { transform: rotate(0deg) }
  to   { transform: rotate(360deg) }
}

@-webkit-keyframes barrelRoll {
  from { -webkit-transform: rotate(0deg) }
  to   { -webkit-transform: rotate(360deg) }
}


/*
=========
floater
=========
*/

.floater{
  animation-name: floater;
  -webkit-animation-name: floater;

  animation-duration: 1.5s;
  -webkit-animation-duration: 1.5s;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;

  visibility: visible !important;
}

@keyframes floater {
  0% {
    transform: translateY(0%);
  }
  50% {
    transform: translateY(8%);
  }
  100% {
    transform: translateY(0%);
  }
}

@-webkit-keyframes floater {
  0% {
    -webkit-transform: translateY(0%);
  }
  50% {
    -webkit-transform: translateY(8%);
  }
  100% {
    -webkit-transform: translateY(0%);
  }
}


/*
======
wiggle
======
*/

.wiggle{
  animation-name: wiggle;
  -webkit-animation-name: wiggle;

  animation-duration: 2.5s;
  -webkit-animation-duration: 2.5s;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;

  visibility: visible !important;
}

@keyframes wiggle {
  0% {
    transform: rotate(-4deg);
  }
  50% {
    transform: rotate(4deg);
  }
  100% {
    transform: rotate(-4deg);
  }
}

@-webkit-keyframes wiggle {
  0% {
    -webkit-transform: rotate(-4deg);
  }
  50% {
    -webkit-transform: rotate(4deg);
  }
  100% {
    -webkit-transform: rotate(-4deg);
  }
}

/*
======
pound
======
*/

.pound{
  animation-name: pound;
  -webkit-animation-name: pound;

  animation-duration: 0.5s;
  -webkit-animation-duration: 0.5s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;

  visibility: visible !important;
}
@keyframes pound {
  to { transform: scale(1.2); }
}
@-webkit-keyframes pound {
  to { transform: scale(1.2); }
}

/*
======
heartbeat
======
*/

.heartbeat{
  animation-name: heartbeat;
  -webkit-animation-name: heartbeat;

  animation-duration: 3s;
  -webkit-animation-duration: 3s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;

  visibility: visible !important;
}

@keyframes heartbeat {
  0% {
    transform: scale(1);
  }
  10% {
    transform: scale(1.2);
  }
  20% {
    transform: scale(1.4);
  }
  100% {
    transform: scale(1);
  }
}

@-webkit-keyframes heartbeat {
  0% {
    -webkit-transform: scale(1);
  }
  10% {
    -webkit-transform: scale(1.2);
  }
  20% {
    -webkit-transform: scale(1.4);
  }
  100% {
    -webkit-transform: scale(1);
  }
}


/*
======
rollerRight
======
*/

.rollerRight{
  animation-name: rollerRight;
  -webkit-animation-name: rollerRight;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: 1;
  -webkit-animation-iteration-count: 1;

  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;

}
@keyframes rollerRight {
  0% {
    transform: translateX(-200px) rotate(0);
    opacity: 0;
  }
  100% {
    transform: translateX(0) rotate(2turn);
    opacity: 1;
  }
}
@-webkit-keyframes rollerRight {
  0% {
    -webkit-transform: translateX(-200px) rotate(0);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0) rotate(2turn);
    opacity: 1;
  }
}

/*
======
rollerLeft
======
*/

.rollerLeft{
  animation-name: rollerLeft;
  -webkit-animation-name: rollerLeft;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  animation-iteration-count: 1;
  -webkit-animation-iteration-count: 1;

  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;

}
@keyframes rollerLeft {
  0% {
    transform: translateX(200px) rotate(0);
    opacity: 0;
  }
  100% {
    transform: translateX(0) rotate(-2turn);
    opacity: 1;
  }
}
@-webkit-keyframes rollerLeft {
  0% {
    -webkit-transform: translateX(200px) rotate(0);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0) rotate(-2turn);
    opacity: 1;
  }
}


/*
==========
Boring ones from here on down
==========
*/

/*
==========
slideDown
==========
*/
.slideDown{
  animation-name: slideDown;
  -webkit-animation-name: slideDown;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

}

@keyframes slideDown {
  0% {
    transform: translateY(-100%);
    opacity: 0;
  }
  100% {
    transform: translateY(0%);
    opacity: 1;
  }
}

@-webkit-keyframes slideDown {
  0% {
    -webkit-transform: translateY(-100%);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0%);
    opacity: 1;
  }
}

/*
==========
slideUp
==========
*/


.slideUp{
  animation-name: slideUp;
  -webkit-animation-name: slideUp;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

}

@keyframes slideUp {
  0% {
    transform: translateY(100%);
    opacity: 0;
  }
  100% {
    transform: translateY(0%);
    opacity: 1;
  }
}

@-webkit-keyframes slideUp {
  0% {
    -webkit-transform: translateY(100%);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0%);
    opacity: 1;
  }
}

/*
==========
slideLeft
==========
*/


.slideLeft{
  animation-name: slideLeft;
  -webkit-animation-name: slideLeft;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

}

@keyframes slideLeft {
  0% {
    transform: translateX(150%);
    opacity: 0;
  }
  100% {
    transform: translateX(0%);
    opacity: 1;
  }
}

@-webkit-keyframes slideLeft {
  0% {
    -webkit-transform: translateX(150%);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0%);
    opacity: 1;
  }
}

/*
==========
slideRight
==========
*/


.slideRight{
  animation-name: slideRight;
  -webkit-animation-name: slideRight;

  animation-duration: 1s;
  -webkit-animation-duration: 1s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

}

@keyframes slideRight {
  0% {
    transform: translateX(-150%);
    opacity: 0;
  }
  100% {
    transform: translateX(0%);
    opacity: 1;
  }
}

@-webkit-keyframes slideRight {
  0% {
    -webkit-transform: translateX(-150%);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0%);
    opacity: 1;
  }
}

/*
==========
fadeIn
==========
*/


.fadeIn{
  animation-name: fadeIn;
  -webkit-animation-name: fadeIn;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  visibility: visible !important;
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}


/*
==========
fadeOut
==========
*/


.fadeOut{
  animation-name: fadeOut;
  -webkit-animation-name: fadeOut;

  animation-duration: 2s;
  -webkit-animation-duration: 2s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}


/*
==========
rotateInRight
==========
*/
.rotateInRight{
  animation-name: rotateInRight;
  -webkit-animation-name: rotateInRight;

  animation-duration: 3s;
  -webkit-animation-duration: 3s;

  animation-timing-function: ease-in-out;
  -webkit-animation-timing-function: ease-in-out;

  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;

}
@-webkit-keyframes rotateInRight {
  from {
    -webkit-transform: rotate(0deg) translateX(100%) rotate(0deg);
  }
  to   {
    -webkit-transform: rotate(360deg) translateX(0) rotate(-360deg);
  }
}
@keyframes rotateInRight {
  from {
    transform: rotate(0deg) translateX(100%) rotate(0deg);
  }
  to   {
    transform: rotate(360deg) translateX(0) rotate(-360deg);
  }
}

/*
==========
rotateInLeft
==========
*/
.rotateInLeft{
  animation-name: rotateInLeft;
  -webkit-animation-name: rotateInLeft;

  animation-duration: 3s;
  -webkit-animation-duration: 3s;

  animation-timing-function: ease-in-out;
  -webkit-animation-timing-function: ease-in-out;

  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;

}
@-webkit-keyframes rotateInLeft {
  from {
    -webkit-transform: rotate(0deg) translateX(-100%) rotate(0deg);
  }
  to   {
    -webkit-transform: rotate(360deg) translateX(0) rotate(-360deg);
  }
}
@keyframes rotateInLeft {
  from {
    transform: rotate(0deg) translateX(-100%) rotate(0deg);
  }
  to   {
    transform: rotate(360deg) translateX(0) rotate(-360deg);
  }
}

/*
==========
rotateIn
==========
*/
.rotateIn {
  animation-name: rotateIn;
  -webkit-animation-name: rotateIn;

  animation-duration: 3s;
  -webkit-animation-duration: 3s;

  animation-timing-function: ease;
  -webkit-animation-timing-function: ease;

  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;

  -webkit-transform-origin: center;
  transform-origin: center;

}


@-webkit-keyframes rotateIn {
  0% {
    -webkit-transform: rotate3d(0, 0, 1, -720deg);
    transform: rotate3d(0, 0, 1, -720deg);
    opacity: 0;
  }

  100% {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}

@keyframes rotateIn {
  0% {
    -webkit-transform: rotate3d(0, 0, 1, -720deg);
    transform: rotate3d(0, 0, 1, -720deg);
    opacity: 0;
  }

  100% {
    -webkit-transform: none;
    transform: none;
    opacity: 1;
  }
}


/*
==========
bounceIn
==========
*/

.bounceIn{

  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;

  -webkit-animation-duration: .8s;
  animation-duration: .8s;

  -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
}

@-webkit-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(.97, .97, .97);
    transform: scale3d(.97, .97, .97);
  }

  100% {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale3d(.3, .3, .3);
    transform: scale3d(.3, .3, .3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(.9, .9, .9);
    transform: scale3d(.9, .9, .9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(.97, .97, .97);
    transform: scale3d(.97, .97, .97);
  }

  100% {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}