*, *::before, *::after {
  box-sizing: border-box;
}

html.preloader-pending,
html.preloader-pending body {
  min-width: 100%;
  min-height: 100%;
  margin: 0;
  overflow: hidden;
  background: #000;
}

.site-preloader {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #000;
  opacity: 1;
  visibility: visible;
  transition: opacity 180ms linear, visibility 0s linear 180ms;
}

.site-preloader canvas {
  display: block;
  width: 100%;
  height: 100%;
  image-rendering: pixelated;
}

.site-preloader.is-complete {
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
}

.site-preloader.is-permanent {
  pointer-events: auto;
  opacity: 1;
  visibility: visible;
  transition: none;
}

html.preloader-pending .site-app {
  visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .site-preloader {
    transition-duration: 80ms;
  }
}
