/* Full-page preloader */
.page-preloader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #fff 0%, var(--brand-blue-soft, #e8f0fc) 100%);
  transition: opacity 0.45s ease, visibility 0.45s ease;
}

.page-preloader-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
}

.page-preloader-gif {
  display: block;
  max-width: min(200px, 45vw);
  max-height: min(200px, 45vw);
  width: auto;
  height: auto;
  object-fit: contain;
}

.page-preloader-spinner {
  width: 48px;
  height: 48px;
  border: 4px solid rgba(30, 82, 196, 0.15);
  border-top-color: var(--brand-blue, #1e52c4);
  border-radius: 50%;
  animation: preloader-spin 0.85s linear infinite;
}

.page-preloader--has-gif .page-preloader-spinner {
  display: none;
}

.page-preloader--done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

html.preloader-on,
html.preloader-on body {
  overflow: hidden;
}

@keyframes preloader-spin {
  to {
    transform: rotate(360deg);
  }
}
