/* ──────────────────────────────
   Page loader (designisfunny-style)
────────────────────────────── */

html.is-loading,
html.is-loading body {
  overflow: hidden;
}

.page-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--color-bg);
  color: var(--color-text);
  user-select: none;
}

.page-loader__label {
  position: absolute;
  top: clamp(2rem, 5vw, 3.333rem);
  left: var(--pad-x);
  font-size: var(--fs-label);
  font-weight: var(--fw-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.page-loader__dot {
  animation: loader-dot-flash 2s infinite;
}

.page-loader__dot:nth-child(3) { animation-delay: -0.33s; }
.page-loader__dot:nth-child(2) { animation-delay: -0.66s; }
.page-loader__dot:nth-child(1) { animation-delay: -1s; }

@keyframes loader-dot-flash {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: 0; }
}

.page-loader__progress {
  position: absolute;
  bottom: clamp(2rem, 5vw, 3.333rem);
  left: var(--pad-x);
  height: 1.2em;
}

.page-loader__percent {
  position: absolute;
  bottom: 0;
  left: 0;
  display: flex;
  font-size: var(--fs-heading);
  font-weight: var(--fw-bold);
  line-height: 0.88;
  letter-spacing: -0.04em;
  opacity: 0;
  visibility: hidden;
}

.page-loader__percent.is-active {
  opacity: 1;
  visibility: visible;
}

.page-loader__char {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.15em);
}

.page-loader__copy {
  position: absolute;
  right: var(--pad-x);
  bottom: clamp(2rem, 5vw, 3.333rem);
  font-size: var(--fs-body2);
  font-weight: var(--fw-medium);
  letter-spacing: 0.02em;
}

.page-loader.is-exiting {
  pointer-events: none;
}

@media (max-width: 520px) {
  .page-loader__copy {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-loader__dot {
    animation: none;
    opacity: 1;
  }

  .page-loader__char {
    opacity: 1;
    transform: none;
  }
}
