/* Solis.BackOffice.Portal — shared loading overlay ("something's happening, wait here").
   Pairs 1:1 with ts/behaviors/loaderOverlay.ts, which creates/removes this markup at runtime —
   any screen that needs "an activity is ongoing" wires that behavior, not this file directly.
   Depends on solis-tokens.css being loaded first (--solis-* custom properties). */

.solis-loader-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--solis-scrim-heavy);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  animation: solis-loader-fade-in 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes solis-loader-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Author rules otherwise beat the UA stylesheet's [hidden] { display: none }, since specificity
   ties go to whichever stylesheet is applied last — without this the overlay never actually hides. */
.solis-loader-overlay[hidden] {
  display: none;
}

.solis-loader {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--solis-space-2xl);
}

/* No CSS animation here — solis-spinner.svg already animates its own rays (chase/pulse), baked
   into the SVG itself so it works even if this file isn't loaded for some reason. */
.solis-loader__icon {
  width: 56px;
  height: 56px;
}

.solis-loader__text {
  font-size: var(--solis-fs-md);
  font-weight: 600;
  color: var(--solis-on-scrim);
  text-shadow: var(--solis-text-shadow-on-scrim);
  min-height: 18px;
  transition: opacity 0.18s ease;
}

.solis-loader__text.solis-loader__text--fade {
  opacity: 0;
}

.solis-loader__sub {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: var(--solis-fs-xs);
  letter-spacing: 0.5px;
  color: var(--solis-on-scrim-muted);
  margin-top: var(--solis-space-2xs);
}
