*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:#16161d;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
  overscroll-behavior:none;touch-action:none}
#stage{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:1}
/* Menu only: the club is the light source the chrome reflects, so the start screen
   pushes the scene's chroma up instead of letting it sit as a grey-brown render.
   Dropped the moment a run starts, so gameplay never pays for a full-screen filter. */
#stage.ar-lit{filter:saturate(1.55) contrast(1.12) brightness(1.02)}
/* z-index ladder: canvas 1, hud.js's menu-only scene grade 2 (it must blend with the
   canvas, so it cannot sit inside this stacking context), UI 3. */
#ui{position:fixed;inset:0;z-index:3;pointer-events:none;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}

/* Depth vignette. The corners fall away so the value ladder ends dark at the
   frame edge and the lit lane down the centre owns the eye. Violet-black, never
   brown: a warm vignette is what made the corridor read as a grey render. */
#ui::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 88% at 50% 46%,
    rgba(0,0,0,0) 41%, rgba(14,4,34,.16) 70%, rgba(7,1,20,.46) 100%)}

/* Orbitron: the sheet's thin, wide, tracked-out secondary type (all small copy in the HUD). */
@font-face{font-family:'Orbitron';font-weight:500;font-style:normal;font-display:swap;
  src:url("../assets/font/orbitron-500.woff2") format("woff2")}
@font-face{font-family:'Orbitron';font-weight:700;font-style:normal;font-display:swap;
  src:url("../assets/font/orbitron-700.woff2") format("woff2")}
@font-face{font-family:'Orbitron';font-weight:900;font-style:normal;font-display:swap;
  src:url("../assets/font/orbitron-900.woff2") format("woff2")}
