.loaderOverlay {
  position: fixed;
  inset: 0;
  background: rgba(248, 250, 251, 0.88);
  backdrop-filter: blur(8px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  animation: overlayIn 0.25s ease-out;
}

.loaderContainer {
  background: #ffffff;
  width: 380px;
  max-width: 90%;
  padding: 44px 40px;
  border-radius: 20px;
  border: 1px solid rgba(0,0,0,0.07);
  box-shadow: 0 20px 60px rgba(0,0,0,0.10), 0 4px 16px rgba(0,0,0,0.06);
  text-align: center;
  animation: cardIn 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ── Triple orbit rings ── */
.orbitWrap {
  position: relative;
  width: 96px;
  height: 96px;
  margin: 0 auto 28px;
}

.ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid transparent;
}

.ring1 {
  border-top-color: #6d28d9;
  border-right-color: #6d28d9;
  animation: spinCW 1.2s linear infinite;
}

.ring2 {
  inset: 10px;
  border-bottom-color: #8b5cf6;
  border-left-color: #8b5cf6;
  animation: spinCCW 0.9s linear infinite;
}

.ring3 {
  inset: 20px;
  border-top-color: #a78bfa;
  border-right-color: #a78bfa;
  animation: spinCW 0.65s linear infinite;
}

.core {
  position: absolute;
  inset: 32px;
  border-radius: 50%;
  background: #f5f3ff;
  display: flex;
  align-items: center;
  justify-content: center;
}

.core svg {
  width: 16px;
  height: 16px;
  stroke: #6d28d9;
  stroke-width: 2;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── Text ── */
.loaderTitle {
  font-size: 15px;
  font-weight: 600;
  color: #111827;
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}

.loaderSubtitle {
  font-size: 13px;
  color: #6b7280;
  margin: 0 0 24px;
  line-height: 1.5;
}

/* ── Step list ── */
.steps {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 22px;
  text-align: left;
}

.step {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 10px;
  background: #f9fafb;
  border: 1px solid #f3f4f6;
  transition: background 0.3s;
}

.stepDot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  transition: background 0.3s;
}

.stepDone .stepDot   { background: #6d28d9; }
.stepActive .stepDot { background: #8b5cf6; animation: dotPulse 1s ease-in-out infinite; }
.stepWait .stepDot   { background: #d1d5db; }

.stepLabel {
  font-size: 12px;
  font-weight: 500;
  color: #374151;
}

.stepWait .stepLabel   { color: #9ca3af; }
.stepActive .stepLabel { color: #6d28d9; }

/* ── Progress bar ── */
.track {
  height: 4px;
  background: #f3f4f6;
  border-radius: 4px;
  overflow: hidden;
}

.trackFill {
  height: 100%;
  width: 45%;
  background: #6d28d9;
  border-radius: 4px;
  animation: trackSlide 1.8s ease-in-out infinite;
}

/* ── Animations ── */
@keyframes spinCW  { to { transform: rotate(360deg);  } }
@keyframes spinCCW { to { transform: rotate(-360deg); } }

@keyframes trackSlide {
  0%   { transform: translateX(-120%); }
  50%  { transform: translateX(80%);  }
  100% { transform: translateX(280%); }
}

@keyframes dotPulse {
  0%, 100% { opacity: 0.4; transform: scale(0.75); }
  50%       { opacity: 1;   transform: scale(1);    }
}

@keyframes overlayIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes cardIn {
  from { opacity: 0; transform: scale(0.88) translateY(12px); }
  to   { opacity: 1; transform: scale(1)    translateY(0);    }
}

@media (max-width: 480px) {
  .loaderContainer { padding: 36px 28px; }
  .loaderTitle     { font-size: 14px; }
}