/* Plain CSS in the document, NOT Tailwind: the stylesheet is another
   asset that can fail to arrive, and a fallback that depends on the thing
   which might be broken is not a fallback. External file so CSP can drop
   style-src 'unsafe-inline' for the document head (print windows still
   need it — they inject their own <style>). */
#vtext-boot {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background: #f8fafc; color: #334155;
}
html.dark #vtext-boot { background: #0f172a; color: #cbd5e1; }
#vtext-boot .b-box { max-width: 30rem; padding: 1.5rem; text-align: center; }
#vtext-boot .b-spin {
  width: 28px; height: 28px; margin: 0 auto 1rem;
  border: 3px solid rgba(100,116,139,.25); border-top-color: #2563eb;
  border-radius: 50%; animation: vtext-spin .8s linear infinite;
}
@keyframes vtext-spin { to { transform: rotate(360deg) } }
@media (prefers-reduced-motion: reduce) {
  #vtext-boot .b-spin { animation-duration: 3s }
}
#vtext-boot h1 { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem }
#vtext-boot p  { font-size: .8125rem; line-height: 1.5; margin: 0 0 .75rem }
#vtext-boot kbd {
  font: inherit; font-size: .75rem; padding: .1rem .35rem;
  border: 1px solid currentColor; border-radius: .25rem; opacity: .8;
}
#vtext-boot button {
  font: inherit; font-size: .8125rem; font-weight: 600; cursor: pointer;
  padding: .5rem 1rem; border-radius: .5rem; border: 0;
  background: #1e293b; color: #fff;
}
#vtext-boot .b-stuck { display: none }
#vtext-boot[data-stuck="1"] .b-spin,
#vtext-boot[data-stuck="1"] .b-load { display: none }
#vtext-boot[data-stuck="1"] .b-stuck { display: block }
