/* LOCKED: LOADER. Owner-approved candle-style bar. Do NOT edit without the owner's approval (hash-locked by scripts/loader.lock.json). */
/* LumenOS loading screen: a candle-style segmented progress bar. Each bar lights up amber as real loading milestones
   are reached, with a big live percentage. Used by the static splash in index.html (before JavaScript loads) and by
   <TerminalBoot/> (React Suspense fallback for later page loads). Brand colours only: black + amber. */
html,body{background:#000;margin:0}
#kb-splash,.kb{--kb-amber:#ffb000;--kb-amber-hi:#ffd36b;--kb-off:#15171c;--kb-dim:#6b7280}
#kb-splash{position:fixed;inset:0;z-index:99999;transition:opacity .45s ease,transform .45s ease}
#kb-splash.kb-out{opacity:0;transform:translateY(-10px);pointer-events:none}
.kb{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;
  background:radial-gradient(60% 40% at 50% 62%,rgba(255,176,0,.10),transparent 70%),#000;font-family:"JetBrains Mono Variable","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.kb *{box-sizing:border-box}
.kb-box{width:min(62vw,250px)}
.kb-row{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-bottom:6px}
.kb-pct{font-size:clamp(26px,8vw,34px);font-weight:800;line-height:1;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.kb-pct small{font-size:.42em;color:var(--kb-amber);margin-left:2px;letter-spacing:0}
.kb-stage{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--kb-amber);padding-bottom:4px;text-align:right}
.kb-stage::before{content:"> ";color:var(--kb-dim)}
.kb-stage::after{content:"_";margin-left:2px;animation:kb-blink 1s steps(1) infinite}
.kb-bars{display:flex;align-items:flex-end;gap:2px;height:30px}
.kb-seg{flex:1;min-width:0;background:var(--kb-off);border-radius:1px;transition:background .15s,box-shadow .15s}
.kb-seg.on{background:var(--kb-amber)}
.kb-seg.head{background:var(--kb-amber-hi);box-shadow:0 0 8px 1px rgba(255,176,0,.6);animation:kb-head .7s ease-in-out infinite alternate}
.kb-line{height:2px;margin-top:4px;background:var(--kb-off);overflow:hidden}
.kb-line i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--kb-amber),var(--kb-amber-hi));box-shadow:0 0 10px rgba(255,176,0,.7)}
.kb-slow{display:none;margin-top:12px;font-size:12px;color:var(--kb-amber);text-align:center}
.kb-slow a{color:#fff;text-decoration:underline}
@keyframes kb-blink{50%{opacity:0}}
@keyframes kb-head{from{filter:brightness(.9)}to{filter:brightness(1.25)}}
@media (prefers-reduced-motion:reduce){.kb-seg.head,.kb-stage::after{animation:none}#kb-splash{transition:none}}
/* fail-safe: if the splash script never runs (blocked, offline chunk, error), the overlay still removes itself after 30s */
#kb-splash{animation:kb-failsafe 0s linear 30s forwards}
@keyframes kb-failsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
