.fade-in {
    opacity: 0;
    transition: opacity 1.2s ease-in-out;
}

.fade-in.show {
    opacity: 1;
}

#loading {
  position: fixed;       
    top: 0;
    left: 0;
    width: 100%;
    height: 105vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background: whitesmoke;  
    z-index: 999;
    transform: translateY(-40px);
}

#loading {
    opacity: 1;
    transition: opacity 0.5s ease;
}

#loading.hide {
    opacity: 0;
    pointer-events: none;
}

.loader, .loader:before, .loader:after {
  border-radius: 50%;
  width: 2.5em;
  height: 2.5em;
  animation-fill-mode: both;
  animation: bblFadInOut 1.8s infinite ease-in-out;
  will-change: box-shadow, transform;
  transform: translateZ(0);
}


.loader {
  color: #282829;
  font-size: 7px;
  position: relative;
  text-indent: -9999em;
  transform: translateZ(0);
  animation-delay: -0.16s;
  backface-visibility: hidden;
}

.loader:before,
.loader:after {
  content: '';
  position: absolute;
  top: 0;
}

.loader:before {
  left: -3.5em;
  animation-delay: -0.32s;
}

.loader:after {
  left: 3.5em;
}

@keyframes bblFadInOut {
  0%, 80%, 100% { box-shadow: 0 2.5em 0 -1.3em }
  40% { box-shadow: 0 2.5em 0 0 }
}
    