
#replay-loading{position:fixed;z-index:200;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:stretch;padding:24px max(24px,calc((100vw - 440px)/2));background:#06101bf5;color:#deedf9;font:0.875rem system-ui}
#replay-loading.loading-card{border:0;border-radius:0;box-shadow:none;gap:14px}
#studio-loading-tasks{position:fixed;z-index:150;right:16px;bottom:38px;width:min(350px,calc(100vw - 32px));max-height:55vh;overflow:auto;display:grid;gap:8px;pointer-events:none}
.loading-card{padding:14px 16px;border:1px solid #315a72;border-radius:7px;background:#0b1b29f5;color:#ddecf8;box-shadow:0 8px 25px #0007;font:0.75rem system-ui;pointer-events:auto}
.loading-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.loading-title strong{font-size:0.875rem}.loading-title button{padding:3px 9px;font-size:0.8125rem}.loading-detail{margin:9px 0;line-height:1.45;overflow-wrap:anywhere;color:#a5c4d8}.loading-count{font-variant-numeric:tabular-nums;font-size:0.6875rem;margin-top:7px;color:#8acfff}
.loading-card progress,#replay-loading progress{display:block;width:100%;height:9px;accent-color:#2abaff;border:0;border-radius:8px;overflow:hidden;background:#173044}.loading-card progress::-webkit-progress-bar{background:#173044;border-radius:8px}.loading-card progress::-webkit-progress-value{background:linear-gradient(90deg,#187dc8,#55d7ff);border-radius:8px}
.loading-card progress:indeterminate{background:linear-gradient(90deg,#173044 0%,#3bc4fa 45%,#173044 80%);background-size:200% 100%;animation:loading-pulse 1.5s linear infinite}.loading-card[data-state=error]{border-color:#cb6476}.loading-card[data-state=error] .loading-count{color:#ffb7c2}
@keyframes loading-pulse{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.loading-card progress:indeterminate{animation:none}}

.loading-card[hidden],.loading-card button[hidden]{display:none!important}
.loading-card progress:indeterminate::-webkit-progress-bar{background:transparent}

/* Startup step list: finished steps stay readable with their time; the active one carries the bar. */
.loading-elapsed{margin-left:auto;font-variant-numeric:tabular-nums;font-size:0.75rem;color:#6f93ab}
.loading-steps{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:7px}
.loading-steps li{display:flex;align-items:center;gap:10px;color:#56788f;line-height:1.3}
.loading-steps li::before{content:"";flex:none;width:12px;height:12px;border-radius:50%;border:1.5px solid #34566c;box-sizing:border-box}
.loading-steps li span{flex:1}
.loading-steps li small{font-variant-numeric:tabular-nums;color:#55788e}
.loading-steps li[data-state=done]{color:#94c7a9}
.loading-steps li[data-state=done]::before{border:0;background:#3ec27e;mask:none;box-shadow:inset 0 0 0 3px #0b2a1c}
.loading-steps li[data-state=active]{color:#e3f4ff;font-weight:600}
.loading-steps li[data-state=active]::before{border-color:#3bc4fa;background:#3bc4fa55;animation:loading-dot 1s ease-in-out infinite alternate}
@keyframes loading-dot{to{background:#3bc4fa}}
@media(prefers-reduced-motion:reduce){.loading-steps li[data-state=active]::before{animation:none}}
/* Buffering: a fixed box over the replay while playback waits for files. */
.buffer-box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:20;width:min(340px,82%);display:grid;gap:7px;padding:14px 18px;background:#0b1b29ee;border:1px solid #315a72;border-radius:8px;color:#ddecf8;font:0.8125rem system-ui;box-shadow:0 10px 30px #0008;pointer-events:none}
.buffer-box[hidden]{display:none}
.buffer-box strong{font-size:0.875rem}
.buffer-detail{color:#9cc4dc;font-size:0.75rem;line-height:1.4}
.buffer-box progress{display:block;width:100%;height:8px;accent-color:#2abaff;border:0;border-radius:8px;overflow:hidden;background:#173044}
.buffer-box progress::-webkit-progress-bar{background:#173044;border-radius:8px}.buffer-box progress::-webkit-progress-value{background:linear-gradient(90deg,#187dc8,#55d7ff);border-radius:8px}
.buffer-box small{font-variant-numeric:tabular-nums;color:#8acfff;font-size:0.75rem}
