
#app-site {
  display: flex;
  width: 100%;
  height: 100vh;
}

.loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background: transparent;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
}

.loader-ui {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  transform: scale(0.7);
}

.loader-ui-bars {
  position: relative;
  width: 90px;
  height: 200px;
  overflow: visible;
}

.loader-ui-bar {
  position: absolute;
  bottom: 20px;
  width: 16px;
  background: #222;
  clip-path: polygon(0 10px, 100% 0%, 100% 100%, 0% 100%);
}

.loader-ui-bar--1 {
  left: 0px;
  animation: loader-bar1 4s linear infinite;
}

.loader-ui-bar--2 {
  left: 30px;
  animation: loader-bar2 4s linear infinite;
}

.loader-ui-bar--3 {
  left: 60px;
  animation: loader-bar3 4s linear infinite;
}

.loader-ui-ball-track {
  position: absolute;
  bottom: 20px;
  left: 0;
  animation: loader-ball-x 4s linear infinite;
}

.loader-ui-ball {
  display: block;
  width: 16px;
  height: 14px;
  background: #3a8a3a;
  border-radius: 2px;
  animation: loader-ball-y 4s linear infinite;
}

@keyframes loader-bar1 {
  0%, 40%, 100% { height: 40px; }
  50%, 90%      { height: 80px; }
}

@keyframes loader-bar2 {
  0%, 100% { height: 60px; }
}

@keyframes loader-bar3 {
  0%, 40%, 100% { height: 80px; }
  50%, 90%      { height: 40px; }
}

@keyframes loader-ball-x {
  0%   { transform: translateX(0); }
  20%  { transform: translateX(30px); }
  40%  { transform: translateX(60px); }
  50%  { transform: translateX(60px); }
  70%  { transform: translateX(30px); }
  90%  { transform: translateX(0); }
  100% { transform: translateX(0); }
}

@keyframes loader-ball-y {
  0%  { transform: translateY(-46px);  animation-timing-function: cubic-bezier(0.25, 1, 0.5, 1); }
  10% { transform: translateY(-120px); animation-timing-function: cubic-bezier(0.5, 0, 0.75, 0); }
  20% { transform: translateY(-66px);  animation-timing-function: cubic-bezier(0.25, 1, 0.5, 1); }
  30% { transform: translateY(-120px); animation-timing-function: cubic-bezier(0.5, 0, 0.75, 0); }
  40% { transform: translateY(-86px);  animation-timing-function: linear; }
  50% { transform: translateY(-46px);  animation-timing-function: cubic-bezier(0.25, 1, 0.5, 1); }
  60% { transform: translateY(-120px); animation-timing-function: cubic-bezier(0.5, 0, 0.75, 0); }
  70% { transform: translateY(-66px);  animation-timing-function: cubic-bezier(0.25, 1, 0.5, 1); }
  80% { transform: translateY(-120px); animation-timing-function: cubic-bezier(0.5, 0, 0.75, 0); }
  90% { transform: translateY(-86px);  animation-timing-function: linear; }
  100% { transform: translateY(-46px); }
}
