/* Pre-React boot frame — a static copy of the Haven "Beacon orbit" loader as rendered by
   <FullScreenLoader /> (no app CSS has loaded yet). Loaded from index.html before the app
   bundle; the overlay is removed by React once the app has mounted (see main.tsx).
   Colors come from --boot-* vars that vite.config.ts inlines from the active theme's
   boot.css (libs/design-system/src/theme/<name>/boot.css); the fallbacks are harbour.
   Keep the shape in sync with the design-system .hv-loader styles. */

html {
  background: var(--boot-bg, #000);
}

#boot-loader {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--boot-bg, #000);
}

#boot-loader .orbit-ring {
  position: relative;
  width: 56px;
  height: 56px;
}

#boot-loader .orbit-ring::before {
  content: '';
  position: absolute;
  inset: 0;
  border: 1px solid var(--boot-ring, #2a2a2a);
  border-radius: 50%;
}

#boot-loader .orbit {
  position: absolute;
  inset: 0;
  animation: boot-orbit 1.6s cubic-bezier(0.45, 0.1, 0.55, 0.9) infinite;
}

#boot-loader .orbit::before {
  content: '';
  position: absolute;
  top: -4px;
  left: 50%;
  margin-left: -4px;
  width: 8px;
  height: 8px;
  border-radius: 9999px;
  background: var(--boot-dot, #ff3b07);
}

@keyframes boot-orbit {
  to {
    transform: rotate(360deg);
  }
}

@keyframes boot-blink {
  0%,
  100% {
    opacity: 0.2;
  }
  50% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  #boot-loader .orbit {
    animation: boot-blink 2s ease infinite;
  }
}
