/* Ночная смена — screens, style «Камера наблюдения» (tokens/components: ui/theme.css; one file per screen in ui/screens/:
   base · lobby · death · hud · panels). No new colours in screen files — only tokens.
   Game world stays clean: nothing paints over the canvas during play except small plates at the edges. */

/* ================= base ================= */
html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);overflow:hidden;font:400 var(--t-body)/1.4 var(--mono);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}
body{position:relative}
#game{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair;background:var(--bg);transition:filter .5s ease}
.fx{position:absolute;inset:0;pointer-events:none}
[hidden]{display:none!important}
button{font-family:inherit}
.padh{display:none} body.pad .padh{display:inline}
body.pad .kb{display:none}
kbd.gp{color:var(--cyan)}
.overlay{position:absolute;inset:0;z-index:20}
.err{margin:0;color:var(--mag);font:500 12px/1.4 var(--mono);letter-spacing:.06em}
.err:empty{display:none}

/* menus own the screen: no HUD under the lobby */
body:has(#overlay:not([hidden])) :is(.hud,#board,#grab,#perkPanel,#dead,#fireBtn,.tact,#topbar,#nudge,.h2h-ban,#camAlert,#chat){display:none!important}
/* menu backdrop = the live game frame, graded like the banner plate (lobby only; death greys the world a little) */
body:has(#overlay:not([hidden])) #game{filter:saturate(.7) contrast(1.22) brightness(.62);transform:rotate(-1.2deg) scale(1.05)}
body:has(#dead:not([hidden])) #game{filter:grayscale(.75) contrast(1.15) brightness(.72)}
body:has(#dead:not([hidden])) :is(.hud,#nudge,#chat,#perkPanel,.h2h-ban){display:none!important}
/* «Финал мертвецов» (client.js body.zplay): dead, he steers his zombie — the attack / action buttons and the top bar stay up */
body:not(.zplay):has(#dead:not([hidden])) :is(#grab,#fireBtn,.tact,#topbar){display:none!important}

