/* Available before Vue loads; independent of fonts, RPC and application styles. */
.boot-splash {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: radial-gradient(ellipse at 50% 42%, #edf4ff 0, #f8faff 40%, #fff 75%);
  color: #121826;
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  transition: opacity .32s ease, visibility .32s ease;
}
.boot-splash::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(#1f5eff06 1px, transparent 1px), linear-gradient(90deg, #1f5eff06 1px, transparent 1px); background-size: 56px 56px; mask-image: radial-gradient(ellipse, #000, transparent 68%); pointer-events: none; }
.boot-content { position: relative; z-index: 1; width: min(360px, calc(100vw - 48px)); text-align: center; animation: boot-enter .65s ease both; }
.boot-logo-wrap { width: 100%; margin: 0 auto 18px; animation: boot-float 2.6s ease-in-out infinite; }
.boot-logo { display: block; width: 100%; height: auto; object-fit: contain; }
.boot-eyebrow { margin: 0; color: #153c91; font-size: 17px; font-weight: 700; letter-spacing: .28em; text-indent: .28em; }
.boot-tagline { margin: 10px 0 30px; color: #8792a5; font: 9px ui-monospace, "Cascadia Mono", monospace; letter-spacing: .24em; text-indent: .24em; }
.boot-track { width: 144px; height: 3px; margin: 0 auto; overflow: hidden; border-radius: 3px; background: #dce7fb; }
.boot-track i { display: block; width: 48%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #1f5eff, #54d3ff); animation: boot-progress 1.3s ease-in-out infinite; }
.boot-message { margin: 16px 0 0; color: #8792a5; font-size: 11px; letter-spacing: .015em; line-height: 1.6; }
.boot-halo { position: absolute; top: 42%; left: 50%; width: min(440px, 88vw); aspect-ratio: 1; transform: translate(-50%, -50%); border: 1px solid #1f5eff0b; border-radius: 50%; pointer-events: none; }
.boot-halo::before, .boot-halo::after { content: ''; position: absolute; border: 1px solid #1f5eff0c; border-radius: 50%; }
.boot-halo::before { inset: 28px; }.boot-halo::after { inset: -30px; border-style: dashed; animation: boot-orbit 40s linear infinite; }
.boot-halo i { position: absolute; width: 4px; height: 4px; background: #5b9bff; border-radius: 50%; box-shadow: 0 0 14px #68b6ff; animation: boot-spark 1.8s ease-in-out infinite; }
.boot-halo i:nth-child(1) { top: 12%; left: 17%; }.boot-halo i:nth-child(2) { top: 65%; right: 2%; animation-delay: -.6s; }.boot-halo i:nth-child(3) { bottom: 6%; left: 25%; animation-delay: -1.2s; }
.boot-footer { position: absolute; bottom: max(28px, env(safe-area-inset-bottom)); left: 0; right: 0; color: #97a5bc; text-align: center; font: 8px ui-monospace, "Cascadia Mono", monospace; letter-spacing: .2em; }
.boot-retry { margin: 18px auto 0; border: 1px solid #cddcfc; border-radius: 7px; padding: 9px 16px; background: #fff; color: #1f5eff; font: 12px system-ui, sans-serif; cursor: pointer; }
.boot-retry:focus-visible { outline: 2px solid #1f5eff; outline-offset: 3px; }
.boot-splash.is-leaving { opacity: 0; visibility: hidden; pointer-events: none; }
#app[aria-busy="true"] { visibility: hidden; }
@keyframes boot-enter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes boot-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes boot-progress { from { transform: translateX(-105%); } to { transform: translateX(315%); } }
@keyframes boot-orbit { to { transform: rotate(360deg); } }
@keyframes boot-spark { 50% { opacity: .3; transform: scale(.65); } }
@media (max-width: 480px) { .boot-content { width: min(300px, calc(100vw - 56px)); }.boot-eyebrow { font-size: 15px; }.boot-tagline { font-size: 8px; } }
@media (max-height: 480px) { .boot-content { width: 220px; }.boot-logo-wrap { margin-bottom: 8px; }.boot-tagline { margin-block: 6px 18px; }.boot-footer { bottom: 12px; } }
@media (prefers-reduced-motion: reduce) { .boot-splash, .boot-splash *, .boot-splash *::after { animation: none !important; transition: none !important; } }
