/* ==========================================================================
   Converge-Con — Star-burst preloader
   Irregular stars pop in on black, then pop away once the page is ready.
   ========================================================================== */

body.is-loading {
  overflow: hidden;
  /* Avoid a flash of page content behind the overlay during first paint */
  height: 100%;
}

.preloader {
  position: fixed;
  inset: 0;
  z-index: 100000;
  overflow: hidden;
  pointer-events: all;
  background: transparent;
}

.preloader.is-exiting {
  pointer-events: none;
}

.preloader.is-done {
  visibility: hidden;
}

.preloader__bg {
  position: absolute;
  inset: 0;
  background: var(--color-black);
  opacity: 1;
  transition: opacity 700ms var(--ease-smooth);
}

.preloader.is-exiting .preloader__bg {
  opacity: 0;
}

.preloader__field {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.preloader__star {
  position: absolute;
  left: 0;
  top: 0;
  width: var(--size, 120px);
  height: var(--size, 120px);
  transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(0);
  transform-origin: center;
  will-change: transform;
  /* Pop in: overshoot bounce */
  animation: preloader-star-in 480ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
  animation-delay: var(--delay, 0ms);
}

.preloader__star svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.preloader__star.is-out {
  animation: preloader-star-out 220ms cubic-bezier(0.55, 0.05, 0.9, 0.4) both;
  animation-delay: var(--out-delay, 0ms);
}

@keyframes preloader-star-in {
  0% {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(0);
  }
  70% {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(1.12);
  }
  100% {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(1);
  }
}

@keyframes preloader-star-out {
  0% {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(1);
  }
  100% {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .preloader__star,
  .preloader__star.is-out {
    animation: none;
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(1);
  }

  .preloader__star.is-out {
    transform: translate(-50%, -50%) rotate(var(--rot, 0deg)) scale(0);
  }

  .preloader__bg {
    transition: opacity 200ms linear;
  }
}
