.ball-chasing .loader {
  width: 100px;
  height: 100px;
  -webkit-animation: rotate 2s linear infinite;
  animation: rotate 2s linear infinite;
}
.ball-chasing .loader .ball-1,
.ball-chasing .loader .ball-2 {
  position: absolute;
  top: 0;
  width: 60%;
  height: 60%;
  border-radius: 50%;
  background-color: #fff;
  -webkit-animation: chasingBallBounce 2s linear infinite;
  animation: chasingBallBounce 2s linear infinite;
}
.ball-chasing .loader .ball-2 {
  top: auto;
  bottom: 0;
  -webkit-animation-delay: -1s;
  animation-delay: -1s;
}
@-webkit-keyframes rotate {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes rotate {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@-webkit-keyframes chasingBallBounce {
  50% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
}
@keyframes chasingBallBounce {
  50% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
}
.ball-pulse .loader {
  width: 100px;
  height: 100px;
}
.ball-pulse .ball {
  margin: 25% 0 0 25%;
  width: 50%;
  height: 50%;
  background-color: #FFF;
  border-radius: 50%;
  -webkit-animation: ballPulse 2s ease-in-out infinite;
  animation: ballPulse 2s ease-in-out infinite;
}
@-webkit-keyframes ballPulse {
  0% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
    filter: alpha(opacity=0);
  }
}
@keyframes ballPulse {
  0% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
    filter: alpha(opacity=0);
  }
}
.ball-pulse-double .loader {
  width: 100px;
  height: 100px;
}
.ball-pulse-double .ball-1,
.ball-pulse-double .ball-2 {
  position: absolute;
  top: 25%;
  left: 25%;
  width: 50%;
  height: 50%;
  background-color: #FFF;
  border-radius: 50%;
  -webkit-animation: ballPulseDouble 2s ease-in-out infinite;
  animation: ballPulseDouble 2s ease-in-out infinite;
  opacity: .5;
  filter: alpha(opacity=50);
}
.ball-pulse-double .ball-2 {
  -webkit-animation-delay: -1s;
  animation-delay: -1s;
}
@-webkit-keyframes ballPulseDouble {
  0%,
  100% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
  50% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}
@keyframes ballPulseDouble {
  0%,
  100% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
  50% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}
.wave .loader {
  width: 100px;
  height: 100px;
}
.wave .loader > div {
  float: left;
  margin: 40% 2% 0 0;
  width: 4%;
  height: 16%;
  background-color: #FFF;
  -webkit-animation: wave 1s cubic-bezier(0.2, 0.68, 0.18, 1.08) infinite;
  animation: wave 1s cubic-bezier(0.2, 0.68, 0.18, 1.08) infinite;
}
.wave .loader .line-1 {
  margin-left: 30%;
}
.wave .loader .line-1 {
  -webkit-animation-delay: 0.1s;
  animation-delay: 0.1s;
}
.wave .loader .line-2 {
  -webkit-animation-delay: 0.2s;
  animation-delay: 0.2s;
}
.wave .loader .line-3 {
  -webkit-animation-delay: 0.3s;
  animation-delay: 0.3s;
}
.wave .loader .line-4 {
  -webkit-animation-delay: 0.4s;
  animation-delay: 0.4s;
}
.wave .loader .line-5 {
  -webkit-animation-delay: 0.5s;
  animation-delay: 0.5s;
}
@-webkit-keyframes wave {
  0%,
  100% {
    -webkit-transform: scaleY(1);
    transform: scaleY(1);
  }
  50% {
    -webkit-transform: scaleY(2);
    transform: scaleY(2);
  }
}
@keyframes wave {
  0%,
  100% {
    -webkit-transform: scaleY(1);
    transform: scaleY(1);
  }
  50% {
    -webkit-transform: scaleY(2);
    transform: scaleY(2);
  }
}
.wave-spread .loader {
  width: 100px;
  height: 100px;
}
.wave-spread .loader > div {
  float: left;
  margin: 40% 2% 0 0;
  width: 4%;
  height: 16%;
  background-color: #FFF;
  -webkit-animation: wave 1s cubic-bezier(0.85, 0.25, 0.37, 0.85) infinite;
  animation: wave 1s cubic-bezier(0.85, 0.25, 0.37, 0.85) infinite;
}
.wave-spread .loader .line-1 {
  margin-left: 30%;
}
.wave-spread .loader .line-1,
.wave-spread .loader .line-5 {
  -webkit-animation-delay: .4s;
  animation-delay: .4s;
}
.wave-spread .loader .line-2,
.wave-spread .loader .line-4 {
  -webkit-animation-delay: .2s;
  animation-delay: .2s;
}
.circle-pulse .loader {
  width: 100px;
  height: 100px;
}
.circle-pulse .loader > div {
  margin: 23px 0 0 23px;
  width: 50%;
  height: 50%;
  border: 2px solid #FFF;
  border-radius: 50%;
  -webkit-animation: circlePulse 1s ease infinite;
  animation: circlePulse 1s ease infinite;
}
@-webkit-keyframes circlePulse {
  0% {
    -webkit-transform: scale(0.1);
    transform: scale(0.1);
  }
  80% {
    opacity: .8;
    filter: alpha(opacity=80);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
    filter: alpha(opacity=0);
  }
}
@keyframes circlePulse {
  0% {
    -webkit-transform: scale(0.1);
    transform: scale(0.1);
  }
  80% {
    opacity: .8;
    filter: alpha(opacity=80);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
    filter: alpha(opacity=0);
  }
}
.circle-pulse-multiple .loader {
  width: 100px;
  height: 100px;
}
.circle-pulse-multiple .loader > div {
  position: absolute;
  top: 24px;
  left: 24px;
  width: 50%;
  height: 50%;
  border: 2px solid #FFF;
  border-radius: 50%;
  -webkit-animation: circlePulse 1s ease infinite;
  animation: circlePulse 1s ease infinite;
}
.circle-pulse-multiple .loader .circle-2 {
  -webkit-animation-delay: -0.9s;
  animation-delay: -0.9s;
}
.circle-pulse-multiple .loader .circle-3 {
  -webkit-animation-delay: -0.8s;
  animation-delay: -0.8s;
}
@keyframes circlePulse {
  0% {
    -webkit-transform: scale(0.1);
    transform: scale(0.1);
  }
  80% {
    opacity: .8;
    filter: alpha(opacity=80);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
    filter: alpha(opacity=0);
  }
}
.arc-rotate-double .loader {
  width: 100px;
  height: 100px;
}
.arc-rotate-double .loader > div {
  position: absolute;
  border: 2px solid;
  border-color: transparent #FFF;
  border-radius: 50%;
  -webkit-animation: load 1s infinite ease-in-out;
  animation: load 1s infinite ease-in-out;
}
.arc-rotate-double .loader .arc-1 {
  margin: 32% 0 0 32%;
  width: 36%;
  height: 36%;
}
.arc-rotate-double .loader .arc-2 {
  margin: 40% 0 0 40%;
  width: 20%;
  height: 20%;
  -webkit-animation-direction: reverse;
  animation-direction: reverse;
  -webkit-animation-delay: -0.5s;
  animation-delay: -0.5s;
}
@-webkit-keyframes load {
  0% {
    -webkit-transform: rotate(0) scale(1);
    transform: rotate(0) scale(1);
  }
  50% {
    -webkit-transform: rotate(180deg) scale(0.6);
    transform: rotate(180deg) scale(0.6);
  }
  100% {
    -webkit-transform: rotate(360deg) scale(1);
    transform: rotate(360deg) scale(1);
  }
}
@keyframes load {
  0% {
    -webkit-transform: rotate(0) scale(1);
    transform: rotate(0) scale(1);
  }
  50% {
    -webkit-transform: rotate(180deg) scale(0.6);
    transform: rotate(180deg) scale(0.6);
  }
  100% {
    -webkit-transform: rotate(360deg) scale(1);
    transform: rotate(360deg) scale(1);
  }
}
.arc-rotate .loader {
  width: 100px;
  height: 100px;
}
.arc-rotate .loader .arc {
  position: absolute;
  border: 2px solid;
  border-color: transparent #FFF #FFF #FFF;
  border-radius: 50%;
  margin: 32% 0 0 32%;
  width: 36%;
  height: 36%;
  -webkit-animation: single-arc-rotate 1s infinite linear;
  animation: single-arc-rotate 1s infinite linear;
}
@-webkit-keyframes single-arc-rotate {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes single-arc-rotate {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
.square-split .loader {
  width: 100px;
  height: 100px;
}
.square-split .loader > div {
  float: left;
  width: 50%;
  height: 50%;
}
.square-split .loader > div::after {
  content: '';
  display: block;
  margin: 50% 0 0 50%;
  width: 50%;
  height: 50%;
  background: #FFF;
  -webkit-animation: squareSplit 2s infinite ease-in-out alternate;
  animation: squareSplit 2s infinite ease-in-out alternate;
}
.square-split .loader .square-2 {
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.square-split .loader .square-3 {
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
  -webkit-animation-direction: reverse;
  animation-direction: reverse;
}
.square-split .loader .square-4 {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
  -webkit-animation-direction: reverse;
  animation-direction: reverse;
}
@-webkit-keyframes squareSplit {
  20% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    margin: 50% 0 0 50%;
  }
  50% {
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
    margin: 0px;
  }
  80% {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
    margin: 50% 0 0 50%;
  }
  100% {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
    margin: 50% 0 0 50%;
  }
}
@keyframes squareSplit {
  20% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
    margin: 50% 0 0 50%;
  }
  50% {
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
    margin: 0px;
  }
  80% {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
    margin: 50% 0 0 50%;
  }
  100% {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
    margin: 50% 0 0 50%;
  }
}
.arc-scale .loader {
  width: 100px;
  height: 100px;
}
.arc-scale .loader .arc {
  position: relative;
  margin: 25% 0 0 25%;
  width: 50%;
  height: 50%;
  border: 4px solid #FFF;
  border-radius: 50%;
  -webkit-animation: rotate 2.9s infinite linear;
  animation: rotate 2.9s infinite linear;
}
.arc-scale .loader .arc::before,
.arc-scale .loader .arc::after {
  content: '';
  position: absolute;
  top: -5px;
  width: 33px;
  height: 62px;
  background-color: rgba(255, 255, 255, 0.7);
  -webkit-animation: rotate 2s infinite ease;
  animation: rotate 2s infinite ease;
}
.arc-scale .loader .arc::before {
  left: -6px;
  -webkit-transform-origin: 29px 29px;
  -ms-transform-origin: 29px 29px;
  transform-origin: 29px 29px;
}
.arc-scale .loader .arc::after {
  left: 27px;
  -webkit-transform-origin: 0 29px;
  -ms-transform-origin: 0 29px;
  transform-origin: 0 29px;
  -webkit-animation-delay: 0.5s;
  animation-delay: 0.5s;
}
.clock .loader {
  width: 100px;
  height: 100px;
}
.clock .loader .arc {
  position: relative;
  margin: 23% 0 0 23%;
  border: 2px solid #FFF;
  width: 50px;
  height: 50px;
  border-radius: 50%;
}
.clock .loader .arc::after,
.clock .loader .arc::before {
  content: '';
  position: absolute;
  top: 4%;
  left: 48%;
  width: 4%;
  height: 46%;
  background-color: #FFF;
  -webkit-transform-origin: 50% 100%;
  -ms-transform-origin: 50% 100%;
  transform-origin: 50% 100%;
  border-radius: 5px;
  -webkit-animation: rotate 2s infinite linear;
  animation: rotate 2s infinite linear;
}
.clock .loader .arc::after {
  height: 36%;
  top: 14%;
  -webkit-animation-duration: 12s;
  animation-duration: 12s;
}
.arc-rotate2 .loader {
  width: 100px;
  height: 100px;
}
.arc-rotate2 .loader .arc {
  position: absolute;
  width: 100%;
  height: 100%;
}
.arc-rotate2 .loader .arc::before,
.arc-rotate2 .loader .arc::after {
  content: '';
  position: absolute;
  top: 32%;
  left: 32%;
  border: 2px solid;
  border-radius: 50%;
  width: 36%;
  height: 36%;
}
.arc-rotate2 .loader .arc::before {
  border-color: #FFF;
  opacity: .3;
  filter: alpha(opacity=30);
}
.arc-rotate2 .loader .arc::after {
  border-color: transparent;
  border-bottom-color: #FFF;
  -webkit-animation: rotate 1s infinite linear;
  animation: rotate 1s infinite linear;
}
.square-rotate-3d .loader {
  width: 100px;
  height: 100px;
}
.square-rotate-3d .loader .square {
  margin-top: 25%;
  margin-left: 25%;
  width: 50%;
  height: 50%;
  background-color: #FFF;
  -webkit-animation: squareRotate3d 2s infinite ease-in-out;
  animation: squareRotate3d 2s infinite ease-in-out;
}
@-webkit-keyframes squareRotate3d {
  25% {
    -webkit-transform: perspective(100px) rotateX(180deg) rotateY(0);
    transform: perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    -webkit-transform: perspective(100px) rotateX(180deg) rotateY(-180deg);
    transform: perspective(100px) rotateX(180deg) rotateY(-180deg);
  }
  75% {
    -webkit-transform: perspective(100px) rotateX(0) rotateY(-180deg);
    transform: perspective(100px) rotateX(0) rotateY(-180deg);
  }
  100% {
    -webkit-transform: perspective(100px) rotateX(0) rotateY(0);
    transform: perspective(100px) rotateX(0) rotateY(0);
  }
}
@keyframes squareRotate3d {
  25% {
    -webkit-transform: perspective(100px) rotateX(180deg) rotateY(0);
    transform: perspective(100px) rotateX(180deg) rotateY(0);
  }
  50% {
    -webkit-transform: perspective(100px) rotateX(180deg) rotateY(-180deg);
    transform: perspective(100px) rotateX(180deg) rotateY(-180deg);
  }
  75% {
    -webkit-transform: perspective(100px) rotateX(0) rotateY(-180deg);
    transform: perspective(100px) rotateX(0) rotateY(-180deg);
  }
  100% {
    -webkit-transform: perspective(100px) rotateX(0) rotateY(0);
    transform: perspective(100px) rotateX(0) rotateY(0);
  }
}
.preloader {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1000005;
  -webkit-transition: visibility 0.4s;
  -moz-transition: visibility 0.4s;
  -o-transition: visibility 0.4s;
  transition: visibility 0.4s;
  text-align: center;
  width: 100%;
  height: 100%;
  display: table;
}
.preloader-holder {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
.loader::before,
.loader::after {
  content: "";
  display: table;
}
.loader::after {
  clear: both;
  overflow: hidden;
}
.preloader-element {
  text-align: center;
  width: 100%;
}
.loader-container {
  position: relative;
  width: 100px;
  height: 100px;
  display: inline-block;
}
.loader-container .loader {
  text-align: center;
}
.preloader-wrapper,
.preloader-logo {
  top: 50%;
  max-height: calc(30%);
  opacity: 1;
  filter: alpha(opacity=100);
}
.preloader.light-bg .ball-chasing .loader .ball-1,
.preloader.light-bg .ball-chasing .loader .ball-2,
.preloader.light-bg .ball-pulse .ball,
.preloader.light-bg .ball-pulse-double .ball-1,
.preloader.light-bg .ball-pulse-double .ball-2,
.preloader.light-bg .wave .loader > div,
.preloader.light-bg .circle-pulse .loader > div,
.preloader.light-bg .wave-spread .loader > div,
.preloader.light-bg .square-split .loader > div::after,
.preloader.light-bg .clock .loader .arc::after,
.preloader.light-bg .clock .loader .arc::before {
  background-color: #666;
}
.preloader.light-bg .circle-pulse .loader > div,
.preloader.light-bg .circle-pulse-multiple .loader > div,
.preloader.light-bg .clock .loader .arc {
  border: 2px solid #666;
}
.preloader.light-bg .arc-rotate-double .loader > div {
  border-color: transparent #666;
}
.preloader.light-bg .arc-rotate .loader .arc {
  border-color: transparent #666 #666 #666;
}
.preloader.light-bg .arc-scale .loader .arc {
  border: 4px solid #666;
}
.preloader.light-bg .arc-scale .loader .arc::before,
.preloader.light-bg .arc-scale .loader .arc::after {
  background: rgba(0, 0, 0, 0.7);
}
.preloader.light-bg .arc-rotate2 .loader .arc::before {
  border-color: #666;
}
.preloader.light-bg .arc-rotate2 .loader .arc::after {
  border-bottom-color: #666;
}
.preloader.light-bg .square-rotate-3d .loader .square {
  background-color: #666;
}