/* ========================================================================
   BOMBARERA V41 — RELEASE UX / LOADING POLISH
   Subtle route progress, no full-screen flash for ordinary section changes,
   and a premium delayed arena loader only when gameplay really is cold.
   ======================================================================== */

.route-progress-v41{
  position:fixed;
  inset:0;
  z-index:999995;
  pointer-events:none;
  visibility:hidden;
}
.route-progress-v41.is-active{visibility:visible}
.route-progress-v41__line{
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:3px;
  overflow:hidden;
  background:rgba(93,160,226,.10);
  opacity:0;
  transition:opacity .12s ease;
}
.route-progress-v41.is-active .route-progress-v41__line{opacity:1}
.route-progress-v41__line i{
  display:block;
  width:9%;
  height:100%;
  border-radius:0 99px 99px 0;
  background:linear-gradient(90deg,#50d8ff 0%,#8c78ff 52%,#ff69be 100%);
  box-shadow:0 0 16px rgba(80,216,255,.50);
  transition:width .18s cubic-bezier(.2,.75,.25,1);
}
.route-progress-v41__pill{
  position:absolute;
  top:18px;
  left:50%;
  display:flex;
  align-items:center;
  gap:10px;
  min-width:190px;
  max-width:min(360px,calc(100vw - 40px));
  padding:9px 13px;
  border:1px solid rgba(118,196,255,.18);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(7,19,42,.95),rgba(4,11,27,.97));
  box-shadow:0 14px 36px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.06);
  backdrop-filter:blur(12px) saturate(125%);
  -webkit-backdrop-filter:blur(12px) saturate(125%);
  opacity:0;
  transform:translate(-50%,-8px);
  transition:opacity .14s ease,transform .14s ease;
}
.route-progress-v41.is-slow .route-progress-v41__pill{
  opacity:1;
  transform:translate(-50%,0);
}
.route-progress-v41__dot{
  width:10px;
  height:10px;
  flex:0 0 10px;
  border-radius:50%;
  background:#63ddff;
  box-shadow:0 0 0 5px rgba(99,221,255,.10),0 0 18px rgba(99,221,255,.56);
  animation:v41RoutePulse 1s ease-in-out infinite alternate;
}
.route-progress-v41__copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.route-progress-v41__copy small{
  color:#72dcff;
  font:900 9px/1 var(--font-title,'Exo 2',sans-serif);
  letter-spacing:.14em;
}
.route-progress-v41__copy strong{
  overflow:hidden;
  color:#f7fbff;
  font:900 12px/1.1 var(--font-body,'Exo 2',sans-serif);
  white-space:nowrap;
  text-overflow:ellipsis;
}
.route-progress-v41.is-done .route-progress-v41__line i{box-shadow:0 0 22px rgba(115,244,167,.50)}
body[data-route-loading="true"] #app{pointer-events:none}

/* Arena loader: shown only after a delayed threshold, so cached/warmed launches
   never flash a modal in front of the player. */
.runtime-loader-v41{
  position:fixed;
  inset:0;
  z-index:1000000;
  display:grid;
  place-items:center;
  padding:24px;
  background:
    radial-gradient(circle at 50% 42%,rgba(75,126,255,.14),transparent 36%),
    rgba(1,6,16,.74);
  backdrop-filter:blur(14px) saturate(115%);
  -webkit-backdrop-filter:blur(14px) saturate(115%);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .16s ease,visibility .16s ease;
}
.runtime-loader-v41.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.runtime-loader-v41__card{
  position:relative;
  width:min(430px,calc(100vw - 40px));
  padding:26px 26px 24px;
  overflow:hidden;
  border:1px solid rgba(122,197,255,.22);
  border-radius:26px;
  background:linear-gradient(180deg,rgba(8,22,49,.98),rgba(4,12,29,.99));
  box-shadow:0 32px 90px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.07);
}
.runtime-loader-v41__card::before{
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 85% 12%,rgba(89,102,255,.20),transparent 30%);
}
.runtime-loader-v41__mark{
  position:relative;
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  margin-bottom:16px;
  border:1px solid rgba(103,221,255,.34);
  border-radius:17px;
  background:linear-gradient(180deg,rgba(35,91,150,.54),rgba(7,25,55,.92));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 12px 24px rgba(0,0,0,.22);
}
.runtime-loader-v41__mark span{
  width:22px;
  height:22px;
  border:3px solid rgba(117,226,255,.24);
  border-top-color:#69e1ff;
  border-radius:50%;
  animation:v41ArenaSpin .85s linear infinite;
}
.runtime-loader-v41__eyebrow{
  position:relative;
  display:block;
  color:#72dcff;
  font:900 10px/1 var(--font-title,'Exo 2',sans-serif);
  letter-spacing:.16em;
}
.runtime-loader-v41__card>strong{
  position:relative;
  display:block;
  margin-top:10px;
  color:#fff;
  font:1000 26px/1 var(--font-body,'Exo 2',sans-serif);
  letter-spacing:-.035em;
}
.runtime-loader-v41__status{
  position:relative;
  min-height:20px;
  margin:9px 0 0;
  color:#c5d5e8;
  font:800 14px/1.4 var(--font-body,'Exo 2',sans-serif);
}
.runtime-loader-v41__meta{
  position:relative;
  display:flex;
  justify-content:space-between;
  gap:14px;
  margin-top:20px;
  color:#7e9ab9;
  font:900 10px/1 var(--font-title,'Exo 2',sans-serif);
  letter-spacing:.10em;
}
.runtime-loader-v41__meta b{color:#eaf6ff;font:1000 11px/1 var(--font-body,'Exo 2',sans-serif);letter-spacing:0}
.runtime-loader-v41__track{
  position:relative;
  height:7px;
  margin-top:8px;
  overflow:hidden;
  border-radius:99px;
  background:rgba(255,255,255,.07);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.3);
}
.runtime-loader-v41__track i{
  display:block;
  width:0;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,#5adfff,#8777ff 58%,#ff69be);
  box-shadow:0 0 18px rgba(90,223,255,.36);
  transition:width .18s ease;
}
.runtime-loader-v41__retry{
  position:relative;
  width:100%;
  min-height:46px;
  margin-top:18px;
  border:1px solid rgba(255,112,137,.34);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(120,38,61,.92),rgba(62,18,38,.96));
  color:#fff;
  font:1000 13px/1 var(--font-body,'Exo 2',sans-serif);
  cursor:var(--bm-cursor-action)!important;
}
.runtime-loader-v41__retry:focus-visible{outline:3px solid #8fe8ff;outline-offset:3px}

@keyframes v41RoutePulse{to{transform:scale(.82);opacity:.72}}
@keyframes v41ArenaSpin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion:reduce){
  .route-progress-v41__line i,
  .route-progress-v41__pill,
  .route-progress-v41__dot,
  .runtime-loader-v41,
  .runtime-loader-v41__mark span,
  .runtime-loader-v41__track i{animation:none!important;transition:none!important}
}
