.loading-container {
  --loader-bg: #f8fbff;
  --loader-text: #17243c;
  --loader-muted: #718099;
  --loader-accent: #2f4bff;
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  box-sizing: border-box;
  padding: 24px;
  background: radial-gradient(ellipse at 30% 25%, rgba(27, 111, 232, .10), transparent 60%),
    radial-gradient(ellipse at 75% 70%, rgba(27, 111, 232, .06), transparent 55%), var(--loader-bg);
  color: var(--loader-text);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft YaHei', sans-serif;
}
.loading-container[data-theme='dark'] {
  --loader-bg: #0c1018;
  --loader-text: #e3eaff;
  --loader-muted: #96a4bc;
  --loader-accent: #8aaaff;
}
.loading-emblem {
  position: relative;
  display: grid;
  place-items: center;
  width: 160px;
  height: 160px;
  margin-bottom: 28px;
}
.loading-emblem::before {
  content: '';
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(85, 124, 255, .16), transparent 70%);
  animation: loading-breathe 3s ease-in-out infinite;
}
.loading-svg {
  position: relative;
  width: 128px;
  height: 128px;
  filter: drop-shadow(0 4px 12px rgba(47, 75, 255, .12));
  animation: loading-orbit 18s linear infinite;
}
.loading-container[data-theme='dark'] .loading-svg {
  /* Lift the supplied SVG's dark connecting lines for contrast. */
  filter: invert(1) hue-rotate(180deg) drop-shadow(0 0 12px rgba(138, 170, 255, .2));
}
.loading-title {
  max-width: 100%;
  text-align: center;
  overflow-wrap: anywhere;
  font-size: clamp(20px, 4vw, 26px);
  font-weight: 600;
  letter-spacing: .04em;
  line-height: 1.5;
}
.loading-caption {
  margin-top: 10px;
  color: var(--loader-muted);
  font-size: 12px;
  letter-spacing: .16em;
}
/* Indeterminate activity, not a fabricated completion percentage. */
.loading-track {
  width: 96px;
  height: 3px;
  margin-top: 24px;
  overflow: hidden;
  border-radius: 3px;
  background: rgba(110, 140, 210, .16);
}
.loading-track::after {
  content: '';
  display: block;
  width: 40%;
  height: 100%;
  border-radius: inherit;
  background: var(--loader-accent);
  animation: loading-sweep 1.8s ease-in-out infinite;
}
@keyframes loading-orbit {
  to { transform: rotate(360deg); }
}
@keyframes loading-breathe {
  50% { transform: scale(1.12); opacity: .6; }
}
@keyframes loading-sweep {
  from { transform: translateX(-100%); }
  to { transform: translateX(350%); }
}
@media (prefers-reduced-motion: reduce) {
  .loading-svg,
  .loading-emblem::before,
  .loading-track::after { animation: none; }
  .loading-track::after { margin: 0 auto; }
}
