.loader {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1000;
    background-color: #343434;
    opacity: 1;
    visibility: visible;
    -webkit-transition: visibility .4s 0s, opacity .4s, background-color .6s ease-in-out;
    -o-transition: visibility .4s 0s, opacity .4s, background-color .6s ease-in-out;
    -moz-transition: visibility .4s 0s, opacity .4s, background-color .6s ease-in-out;
    transition: visibility .4s 0s, opacity .4s, background-color .6s ease-in-out
}

.loader.fade-dark {
    background-color: #383838
}

.loader .loader-content {
    position: absolute;
    left: 50%;
    top: 50%;
    bottom: auto;
    right: auto;
    -webkit-transform: translateX(-50%) translateY(-50%);
    -moz-transform: translateX(-50%) translateY(-50%);
    -ms-transform: translateX(-50%) translateY(-50%);
    transform: translateX(-50%) translateY(-50%)
}

.loader .loader-content .loader-logo {
    display: block;
    width: 6rem;
    height: 6rem;
    margin: 0 auto 24px
}

.loader .loader-content .loader-logo img {
    display: block;
    width: 100%;
    height: auto
}

.loader .loader-content .loader-caption {
    margin: 0 auto;
    text-align: center
}

.loader .loader-content .loader-caption .loading-text {
    display: block;
    color: rgba(255, 255, 255, .6);
    text-transform: normal;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.4rem
}

.loader .loader-content .loader-caption .loading-dots {
    position: relative;
    display: inline-block;
    text-align: center
}

.loader .loader-content .loader-caption .loading-dots::after {
    clear: both;
    content: "";
    display: table
}

.loader .loader-content .loader-caption .loading-dots .dot {
    float: left;
    width: .6rem;
    height: .6rem;
    margin: 0 .3rem;
    background: #fff;
    opacity: 0;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    border-radius: 50%;
    -webkit-animation: fade 1s infinite;
    -moz-animation: fade 1s infinite;
    animation: fade 1s infinite
}

.loader .loader-content .loader-caption .loading-dots .dot:nth-of-type(1) {
    -webkit-animation-delay: 0s;
    -moz-animation-delay: 0s;
    animation-delay: 0s
}

.loader .loader-content .loader-caption .loading-dots .dot:nth-of-type(2) {
    -webkit-animation-delay: .1s;
    -moz-animation-delay: .1s;
    animation-delay: .1s
}

.loader .loader-content .loader-caption .loading-dots .dot:nth-of-type(3) {
    -webkit-animation-delay: .2s;
    -moz-animation-delay: .2s;
    animation-delay: .2s
}

.loader.loaded {
    opacity: 0;
    visibility: hidden
}

@-webkit-keyframes fade {
    0% {
        opacity: 0
    }
    50% {
        opacity: .8
    }
    100% {
        opacity: 0
    }
}

@-moz-keyframes fade {
    0% {
        opacity: 0
    }
    50% {
        opacity: .8
    }
    100% {
        opacity: 0
    }
}

@keyframes fade {
    0% {
        opacity: 0
    }
    50% {
        opacity: .8
    }
    100% {
        opacity: 0
    }
}

@-webkit-keyframes slideInDown {
    from {
        -webkit-transform: translate3d(0, -100%, 0);
        transform: translate3d(0, -100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -webkit-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

@-moz-keyframes slideInDown {
    from {
        -moz-transform: translate3d(0, -100%, 0);
        transform: translate3d(0, -100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -moz-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

@keyframes slideInDown {
    from {
        -webkit-transform: translate3d(0, -100%, 0);
        -moz-transform: translate3d(0, -100%, 0);
        transform: translate3d(0, -100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -webkit-transform: translate3d(0, 0, 0);
        -moz-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

.slideInDown {
    -webkit-animation-iteration-count: 1;
    -moz-animation-iteration-count: 1;
    animation-iteration-count: 1;
    -webkit-animation-name: slideInDown;
    -moz-animation-name: slideInDown;
    animation-name: slideInDown;
    -webkit-animation-duration: 1s;
    -moz-animation-duration: 1s;
    animation-duration: 1s;
    -webkit-animation-fill-mode: both;
    -moz-animation-fill-mode: both;
    animation-fill-mode: both
}

@-webkit-keyframes slideInUp {
    from {
        -webkit-transform: translate3d(0, 100%, 0);
        transform: translate3d(0, 100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -webkit-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

@-moz-keyframes slideInUp {
    from {
        -moz-transform: translate3d(0, 100%, 0);
        transform: translate3d(0, 100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -moz-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

@keyframes slideInUp {
    from {
        -webkit-transform: translate3d(0, 100%, 0);
        -moz-transform: translate3d(0, 100%, 0);
        transform: translate3d(0, 100%, 0);
        opacity: 0;
        visibility: visible
    }
    to {
        opacity: 1;
        -webkit-transform: translate3d(0, 0, 0);
        -moz-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0)
    }
}

.slideInUp {
    -webkit-animation-name: slideInUp;
    -moz-animation-name: slideInUp;
    animation-name: slideInUp;
    -webkit-animation-iteration-count: 1;
    -moz-animation-iteration-count: 1;
    animation-iteration-count: 1;
    -webkit-animation-duration: 1s;
    -moz-animation-duration: 1s;
    animation-duration: 1s;
    -webkit-animation-fill-mode: both;
    -moz-animation-fill-mode: both;
    animation-fill-mode: both
}

@-webkit-keyframes flipOutY {
    from {
        -webkit-transform: perspective(400px);
        transform: perspective(400px)
    }
    to {
        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        opacity: 0
    }
}

@-moz-keyframes flipOutY {
    from {
        -moz-transform: perspective(400px);
        transform: perspective(400px)
    }
    to {
        -moz-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        opacity: 0
    }
}

@keyframes flipOutY {
    from {
        -webkit-transform: perspective(400px);
        -moz-transform: perspective(400px);
        transform: perspective(400px)
    }
    to {
        -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        -moz-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
        opacity: 0
    }
}

.flipOutY {
    -webkit-backface-visibility: visible;
    -moz-backface-visibility: visible;
    backface-visibility: visible;
    -webkit-animation-name: flipOutY;
    -moz-animation-name: flipOutY;
    animation-name: flipOutY;
    -webkit-animation-duration: 1s;
    -moz-animation-duration: 1s;
    animation-duration: 1s;
    -webkit-animation-fill-mode: both;
    -moz-animation-fill-mode: both;
    animation-fill-mode: both
}

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

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

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

.fadeOutDown {
    -webkit-animation: fadeOutDown 1s 1;
    -moz-animation: fadeOutDown 1s 1;
    animation: fadeOutDown 1s 1;
    -webkit-animation-fill-mode: both;
    -moz-animation-fill-mode: both;
    animation-fill-mode: both
}
