
.loader-overlay[data-v-31a4f8ba] {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 2rem;
}
.loader-overlay--fullscreen[data-v-31a4f8ba] {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
  background: rgba(255, 255, 255, 0.9);
  padding: 0;
}
.loader-wrapper[data-v-31a4f8ba] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.85rem;
}

/* ── SVG spinner ── */
.loader-svg[data-v-31a4f8ba] {
  overflow: visible;
  transform: rotate(-90deg);
  transform-origin: center;
  --active: #2563EB;
  --track: #DBEAFE;
  --duration: 8s;
  animation: loader-spin-31a4f8ba 2s linear infinite;
}
@keyframes loader-spin-31a4f8ba {
to { rotate: 360deg;
}
}
.loader-active[data-v-31a4f8ba] {
  stroke: var(--active);
  stroke-linecap: round;
  stroke-dashoffset: 360;
  animation: loader-active-anim-31a4f8ba var(--duration) ease-in-out infinite;
}
@keyframes loader-active-anim-31a4f8ba {
0%      { stroke-dasharray: 0 0 0 360 0 360;
}
12.5%   { stroke-dasharray: 0 0 270 90 270 90;
}
25%     { stroke-dasharray: 0 270 0 360 0 360;
}
37.5%   { stroke-dasharray: 0 270 270 90 270 90;
}
50%     { stroke-dasharray: 0 540 0 360 0 360;
}
50.001% { stroke-dasharray: 0 180 0 360 0 360;
}
62.5%   { stroke-dasharray: 0 180 270 90 270 90;
}
75%     { stroke-dasharray: 0 450 0 360 0 360;
}
87.5%   { stroke-dasharray: 0 450 270 90 270 90;
}
87.501% { stroke-dasharray: 0 90 270 90 270 90;
}
100%    { stroke-dasharray: 0 360 1 360 0 360;
}
}
.loader-track[data-v-31a4f8ba] {
  stroke: var(--track);
  stroke-linecap: round;
  stroke-dashoffset: 360;
  animation: loader-track-anim-31a4f8ba var(--duration) ease-in-out infinite;
}
@keyframes loader-track-anim-31a4f8ba {
0%      { stroke-dasharray: 0 20 320 40 320 40;
}
12.5%   { stroke-dasharray: 0 290 50 310 50 310;
}
25%     { stroke-dasharray: 0 290 320 40 320 40;
}
37.5%   { stroke-dasharray: 0 560 50 310 50 310;
}
37.501% { stroke-dasharray: 0 200 50 310 50 310;
}
50%     { stroke-dasharray: 0 200 320 40 320 40;
}
62.5%   { stroke-dasharray: 0 470 50 310 50 310;
}
62.501% { stroke-dasharray: 0 110 50 310 50 310;
}
75%     { stroke-dasharray: 0 110 320 40 320 40;
}
87.5%   { stroke-dasharray: 0 380 50 310 50 310;
}
100%    { stroke-dasharray: 0 380 320 40 320 40;
}
}

/* ── Label ── */
.loader-text[data-v-31a4f8ba] {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  color: #1a1a1a;
  letter-spacing: 0.01em;
}

/* ── Fade transition ── */
.loader-fade-enter-active[data-v-31a4f8ba],
.loader-fade-leave-active[data-v-31a4f8ba] {
  transition: opacity 0.3s ease;
}
.loader-fade-enter[data-v-31a4f8ba],
.loader-fade-leave-to[data-v-31a4f8ba] {
  opacity: 0;
}
