/* Global loading overlay with a compact prize wheel. */
.tsp-loader{
  position:fixed;
  inset:0;
  z-index:2147483000;
  display:grid;
  place-items:center;
  background:
    radial-gradient(520px 360px at 50% 35%,rgba(245,180,0,.16),transparent 64%),
    radial-gradient(760px 520px at 50% 0,rgba(19,49,106,.36),transparent 70%),
    rgba(5,14,32,.94);
  opacity:1;
  visibility:visible;
  transition:opacity .28s ease,visibility .28s ease;
}
.tsp-loader.is-hiding{
  opacity:0;
  visibility:hidden;
}
.tsp-loader-content{
  display:grid;
  place-items:center;
  gap:16px;
}
.tsp-loader-box{
  width:clamp(132px,22vw,190px);
  aspect-ratio:1/1;
  position:relative;
  display:grid;
  place-items:center;
  filter:drop-shadow(0 24px 42px rgba(0,0,0,.55));
}
.tsp-loader-canvas,
.tsp-loader-fallback{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
.tsp-loader-canvas{
  display:block;
}
.tsp-loader-fallback{
  display:none;
  border-radius:50%;
  border:10px solid #f5b400;
  background:
    radial-gradient(circle at 50% 50%,#fff 0 13%,#ffd75e 14% 19%,transparent 20%),
    conic-gradient(from -90deg,#0a1c3d 0 45deg,#f5b400 45deg 90deg,#13316a 90deg 135deg,#ffd75e 135deg 180deg,#0a1c3d 180deg 225deg,#f5b400 225deg 270deg,#13316a 270deg 315deg,#ffd75e 315deg 360deg);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55), inset 0 0 28px rgba(0,0,0,.28);
  animation:tspLoaderSpin 1.1s linear infinite;
  will-change:transform;
}
.tsp-loader.use-fallback .tsp-loader-fallback{
  display:block;
}
.tsp-loader.use-fallback .tsp-loader-canvas{
  display:none;
}
.tsp-loader-text{
  display:block;
  color:#f8fbff;
  font:800 14px/1.2 "Plus Jakarta Sans",system-ui,-apple-system,Segoe UI,sans-serif;
  letter-spacing:0;
  text-shadow:0 2px 14px rgba(0,0,0,.55);
}
.tsp-loader-fallback::after{
  content:"";
  position:absolute;
  top:-18px;
  left:50%;
  transform:translateX(-50%);
  border-left:12px solid transparent;
  border-right:12px solid transparent;
  border-top:24px solid #ffd75e;
  filter:drop-shadow(0 4px 5px rgba(0,0,0,.45));
}
.tsp-loader-sr{
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
}
@keyframes tspLoaderSpin{
  to{transform:rotate(360deg)}
}
@media (prefers-reduced-motion: reduce){
  .tsp-loader,
  .tsp-loader-fallback{
    transition:none;
    animation:none;
  }
}
