/* Boot skeleton — hides Dec 2025 mock flash until observatory-bridge sets __VS_LOADED */
#vs-boot-skeleton {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  background: #0D0618;
  color: rgba(240, 230, 211, 0.72);
  font-family: "Space Mono", ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transition: opacity 0.35s ease, visibility 0.35s ease;
}
#vs-boot-skeleton.vs-boot-skeleton--hide {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
#vs-boot-skeleton .vs-boot-skel-pulse {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid rgba(212, 168, 67, 0.25);
  border-top-color: rgba(212, 168, 67, 0.85);
  animation: vs-boot-spin 1.1s linear infinite;
  margin-bottom: 18px;
}
#vs-boot-skeleton .vs-boot-skel-label {
  opacity: 0.8;
}
body.vs-boot-pending #root {
  visibility: hidden;
}
body.vs-boot-ready #root {
  visibility: visible;
}
@keyframes vs-boot-spin {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  #vs-boot-skeleton .vs-boot-skel-pulse {
    animation: none;
    border-top-color: rgba(212, 168, 67, 0.55);
  }
  #vs-boot-skeleton,
  #vs-boot-skeleton.vs-boot-skeleton--hide {
    transition: none;
  }
  #vs-boot-skeleton.vs-boot-skeleton--hide {
    display: none;
  }
}
