/* ========================================================================
   BOMBARERA V43 — STARTUP / INTERACTION RESILIENCE
   - route preparation never locks the current screen
   - stale loaders cannot leave the app unclickable
   - startup diagnostic toast is intentionally non-blocking
   ======================================================================== */

body[data-route-loading="true"] #app{
  pointer-events:auto!important;
  user-select:auto!important;
}

.route-progress-v41,
.route-progress-v41 *,
.v43-startup-status{
  pointer-events:none!important;
}

/* A gameplay loader may block only while the user explicitly starts gameplay. */
.runtime-loader-v41:not(.is-visible){
  pointer-events:none!important;
}

.v43-startup-status{
  position:fixed;
  left:50%;
  bottom:18px;
  z-index:1000002;
  display:flex;
  align-items:center;
  gap:9px;
  max-width:min(560px,calc(100vw - 32px));
  padding:10px 14px;
  border:1px solid rgba(112,203,255,.22);
  border-radius:14px;
  background:rgba(5,15,33,.94);
  color:#eaf7ff;
  box-shadow:0 14px 36px rgba(0,0,0,.30);
  font:800 12px/1.25 var(--font-body,'Exo 2',sans-serif);
  opacity:0;
  visibility:hidden;
  transform:translate(-50%,8px);
  transition:opacity .16s ease,transform .16s ease,visibility .16s ease;
}
.v43-startup-status.is-visible{
  opacity:1;
  visibility:visible;
  transform:translate(-50%,0);
}
.v43-startup-status::before{
  content:'';
  width:8px;
  height:8px;
  flex:0 0 8px;
  border-radius:50%;
  background:#72e6ff;
  box-shadow:0 0 14px rgba(114,230,255,.65);
}
.v43-startup-status.is-error{
  border-color:rgba(255,121,121,.30);
}
.v43-startup-status.is-error::before{
  background:#ff8585;
  box-shadow:0 0 14px rgba(255,133,133,.55);
}

@media (prefers-reduced-motion:reduce){
  .v43-startup-status{transition:none!important}
}
