.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);
    }
}