/* ==============================================
   ArcadeHub — Page Loader
   Matches the base44 crispy-arcade-play loading
   state: floating logo + neon spinner + label.
   ============================================== */

/* ── Full-screen initial loader ─────────────── */
#page-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: hsl(250, 25%, 6%);
  transition: opacity 0.35s ease, visibility 0.35s ease;
}

.page-loader-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}

/* Floating logo */
.page-loader-logo {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  object-fit: cover;
  mix-blend-mode: lighten;
  filter: drop-shadow(0 0 18px hsl(160, 100%, 50%, 0.55));
  animation: loader-float 3s ease-in-out infinite;
}

@keyframes loader-float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-9px); }
}

/* Spinner ring */
.page-loader-spinner {
  width: 34px;
  height: 34px;
  border: 3px solid hsl(160, 100%, 50%, 0.15);
  border-top-color: hsl(160, 100%, 55%);
  border-radius: 50%;
  box-shadow: 0 0 12px hsl(160, 100%, 50%, 0.3);
  animation: loader-spin 0.72s linear infinite;
}

@keyframes loader-spin {
  to { transform: rotate(360deg); }
}

/* "LOADING..." label */
.page-loader-text {
  font-family: 'Orbitron', sans-serif;
  font-size: 0.58rem;
  font-weight: 900;
  letter-spacing: 0.28em;
  color: hsl(160, 100%, 58%);
  text-shadow:
    0 0 10px hsl(160, 100%, 50%, 0.55),
    0 0 22px hsl(160, 100%, 50%, 0.3);
  text-transform: uppercase;
  animation: loader-blink 1.6s ease-in-out infinite;
}

@keyframes loader-blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.45; }
}

/* ── Hidden state (JS adds this class) ────────── */
#page-loader.loader-hiding {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* ── Navigation progress bar ──────────────────── */
/* Slim neon bar at top during page navigation */
#nav-progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 0%;
  z-index: 10000;
  background: linear-gradient(
    90deg,
    hsl(160, 100%, 55%),
    hsl(200, 100%, 65%),
    hsl(280, 80%, 65%)
  );
  box-shadow:
    0 0 8px hsl(160, 100%, 50%, 0.7),
    0 0 20px hsl(160, 100%, 50%, 0.35);
  pointer-events: none;
  opacity: 0;
  transition: width 0.3s ease, opacity 0.25s ease;
}

#nav-progress-bar.nav-active {
  opacity: 1;
}

#nav-progress-bar.nav-done {
  width: 100% !important;
  opacity: 0;
  transition: width 0.18s ease, opacity 0.38s ease 0.18s;
}
