/* =========================================================
   LOADER — integrated with SOUVENRA NEXUS theme system
   Uses --sn-* tokens from theme/theme.css, so it automatically
   follows dark/light mode. No separate color variables here.
   ========================================================= */

.loader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: var(--sn-bg-primary);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  transition:
    opacity var(--sn-motion-slow) var(--sn-easing),
    visibility var(--sn-motion-slow) var(--sn-easing),
    background-color var(--sn-motion-normal) var(--sn-easing);
}

.loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loader-mark {
  font-family: var(--sn-font-primary);
  font-size: 13px;
  font-weight: var(--sn-heading-weight);
  letter-spacing: 0.24em;
  color: var(--sn-text-primary);
}

.loader-status {
  font-family: var(--sn-font-primary);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--sn-text-muted);
  text-transform: uppercase;
}

.loader-bar {
  width: 220px;
  height: 1px;
  background: var(--sn-border-default);
  position: relative;
  overflow: hidden;
}

.loader-bar-fill {
  position: absolute;
  inset: 0;
  width: 0%;
  background: var(--sn-accent-gradient);
  box-shadow: 0 0 12px var(--sn-accent-glow);
  transition: width var(--sn-motion-normal) var(--sn-easing);
}

.loader-percent {
  font-family: var(--sn-font-primary);
  font-size: 11px;
  color: var(--sn-text-muted);
  font-variant-numeric: tabular-nums;
}

@media (prefers-reduced-motion: reduce) {
  .loader {
    transition: none;
  }
}