#preloader {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: var(--z-loader);
  width: 100%;
  height: 100vh;
  background: var(--loader-background-color);
}

.fw-spinner-loader-holder {
  position: relative;
  width: var(--loader-spinner-width);
  height: var(--loader-spinner-width);
}

.fw-spinner-loader {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transform-origin: center center;
  border: 30px solid var(--loader-spinner-color);
}

.fw-spinner-loader-1 {
  opacity: 0.8;
  border-right-color: transparent;
  border-top-color: transparent;
  animation: spinner-loader-1 2s linear infinite;
}

/* // Fast Spinners */
.fw-spinner-loader-2 {
  opacity: 0.6;
  animation: spinner-loader-2 2s linear infinite;
  border-right-color: transparent;
  border-bottom-color: transparent;
}

.fw-spinner-loader-3 {
  opacity: 0.4;
  animation: spinner-loader-3 2s linear infinite;
  border-left-color: transparent;
  border-bottom-color: transparent;
}

.fw-spinner-loader-4 {
  opacity: 0.2;
  animation: spinner-loader-4 2s linear infinite;
  border-left-color: transparent;
  border-top-color: transparent;
}

@keyframes spinner-loader-1 {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
@keyframes spinner-loader-2 {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(720deg);
  }
}
@keyframes spinner-loader-3 {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(1080deg);
  }
}
@keyframes spinner-loader-4 {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(1440deg);
  }
}
.fw-skeleton .skeleton-line,
.fw-skeleton .skeleton-block {
  background-color: var(--skeleton-surface-color);
  border-radius: var(--skeleton-radius);
  background-image: linear-gradient(90deg, var(--skeleton-surface-color) 0%, var(--skeleton-highlight-color) 50%, var(--skeleton-surface-color) 100%);
  background-size: 200% 100%;
  background-repeat: no-repeat;
  animation: fw-skeleton-shimmer var(--skeleton-shimmer-duration) var(--transition-ease-2) infinite;
}
.fw-skeleton .skeleton-line {
  height: 1em;
}
.fw-skeleton .skeleton-line + .skeleton-line {
  margin-top: var(--inner-spacing-xs);
}
@media (prefers-reduced-motion: reduce) {
  .fw-skeleton .skeleton-line,
  .fw-skeleton .skeleton-block {
    animation: none;
    background-image: none;
  }
}

@keyframes fw-skeleton-shimmer {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
