/* Public loader: standalone so it can be removed without affecting site features. */
.site-loader {
  position: fixed;
  z-index: 99999;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 24px;
  overflow: hidden;
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  background:
    radial-gradient(circle at 50% 42%, rgba(20, 75, 113, .38), transparent 42%),
    #062b46;
  transition: opacity 360ms cubic-bezier(.22, 1, .36, 1), visibility 0s linear 360ms;
}

.site-loader::after {
  position: absolute;
  content: '';
  pointer-events: none;
}

.site-loader::after {
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, #679b46 0 22%, #9dca6f 48%, #679b46 78% 100%);
  transform-origin: left center;
  animation: sem-loader-progress 1.25s cubic-bezier(.65, 0, .35, 1) infinite;
}

html.sem-loader-active .site-loader {
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
  transition-delay: 0s;
}

html.sem-loader-exit .site-loader {
  opacity: 0;
  transition-delay: 0s, 360ms;
}

.site-loader__content {
  position: relative;
  z-index: 1;
  width: min(100%, 360px);
  text-align: center;
}

.site-loader__brand {
  display: grid;
  place-items: center;
  transform: translateY(14px);
  opacity: 0;
}

html.sem-loader-active .site-loader__brand {
  animation: sem-loader-brand 520ms cubic-bezier(.22, 1, .36, 1) 80ms forwards;
}

.site-loader__brand img {
  display: block;
  width: min(100%, 280px);
  height: auto;
  filter: brightness(0) invert(1) drop-shadow(0 10px 24px rgba(0, 18, 33, .22));
}

@keyframes sem-loader-progress {
  0% { transform: scaleX(.08); opacity: .55; }
  52% { transform: scaleX(.72); opacity: 1; }
  100% { transform: scaleX(1); opacity: .76; }
}

@keyframes sem-loader-brand {
  to { transform: translateY(0); opacity: 1; }
}

@media (max-width: 575.98px) {
  .site-loader__brand img { width: 210px; }
}
