/* Startup is a garage state from the first HTML paint, before scripts arrive.
   Keep dynamically installed driving widgets out of the loading composition. */
html.game-loading body > :not(#menu):not(#game):not(#error):not(#asset-error):not(#graphics-recovery):not(script):not(noscript){display:none!important}
html.game-loading #game{visibility:hidden}
html.game-loading #menu{background:radial-gradient(ellipse at 80% 35%,#213a47 0%,#0b1722 48%,#080e16 100%)}
html.game-loading #menu .menu-content{opacity:1;animation:none;transition:none}
html.game-loading #start{cursor:wait}
/* Garage submenus remain usable after load; only driving surfaces are hidden. */
html.garage-menu-open body > header,
html.garage-menu-open :is(#hud,#navigation,#player-hud,#market-hud,.drive-left-stack,.drive-right-stack,#vibe-hud,#vibe-rush-hud,#radio-mini,#destination-hud,#destination-beacon,#duber-card,#duber-progress,#walk-hud,#walk-stick,#walk-help,#key-unlock){display:none!important}

/* One quiet loading state inside the actual garage, not another splash/menu. */
#garage-loading{min-height:64px;display:grid;gap:6px;align-content:center;color:#d6e3e8}
#garage-loading-label{font-size:12px;font-weight:600;line-height:1.3}
#garage-loading-note{font-size:10px;line-height:1.4;color:#9eafb9}
#garage-loading-progress{display:block;appearance:none;width:100%;height:3px;border:0;border-radius:4px;background:#243c48;accent-color:#dfb38b;overflow:hidden}
#garage-loading-progress::-webkit-progress-bar{background:#243c48}
#garage-loading-progress::-webkit-progress-value{background:#dfb38b}
#garage-loading-progress::-moz-progress-bar{background:#dfb38b}
html:not(.game-loading) #garage-loading{display:none}
html.game-loading #menu .garage-actions>:not(#garage-loading):not(#start){visibility:hidden}
html.game-loading #menu .garage-vehicles{opacity:.6}
@media(max-height:500px){#garage-loading{min-height:48px}#garage-loading-note{font-size:9px}}
