*{margin:0;padding:0;box-sizing:border-box}
html,body{width:100%;height:100%;overflow:hidden;background:#000;font-family:'Segoe UI',system-ui,sans-serif;color:#fff}

/* ── Asset-loading veil ──────────────────────────────────── */
#loader-veil{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;
  background:rgba(0,0,0,.9);color:#e2b143;font-size:15px;letter-spacing:2px;
  text-transform:uppercase}
.loader-ring{width:54px;height:54px;border-radius:50%;
  border:3px solid rgba(226,177,67,.25);border-top-color:#e2b143;
  animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Click‑to‑play overlay ─────────────────────────────── */
#blocker{position:fixed;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  background:rgba(0,0,0,.75);z-index:100;backdrop-filter:blur(6px)}
#blocker h1{font-size:42px;letter-spacing:3px;margin-bottom:8px;text-transform:uppercase}
#blocker .sub{font-size:15px;color:#ccc;margin-bottom:28px}
#blocker .keys{font-size:13px;color:#999;line-height:2;text-align:center}
#blocker .play-btn{margin-top:22px;padding:14px 52px;font-size:17px;
  text-transform:uppercase;letter-spacing:2px;border:2px solid #e2b143;
  background:rgba(226,177,67,.12);color:#e2b143;cursor:pointer;
  border-radius:4px;transition:background .2s}
#blocker .play-btn:hover{background:rgba(226,177,67,.3)}
#blocker .play-btn.small{margin-top:10px;padding:9px 26px;font-size:13px}
.mp-box{margin-top:26px;padding:16px 22px;border:1px solid rgba(255,255,255,.12);border-radius:6px;
  background:rgba(0,0,0,.35);display:flex;flex-direction:column;align-items:center;gap:8px;min-width:340px}
.mp-title{font-size:12px;letter-spacing:3px;text-transform:uppercase;color:#aaa}
.mp-input{width:100%;padding:8px 10px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.15);
  border-radius:4px;color:#fff;font-size:14px;outline:none}
.mp-input:focus{border-color:#e2b143}
.team-row{display:flex;gap:6px;width:100%}
.solo-team{width:340px;margin-top:14px}
.team-btn{flex:1;padding:7px 0;font-size:12px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.15);color:#bbb;border-radius:4px}
.team-btn.sel{border-color:#e2b143;color:#e2b143;background:rgba(226,177,67,.12)}
.team-btn.t.sel{border-color:#e07a30;color:#e07a30;background:rgba(224,122,48,.15)}
.team-btn.ct.sel{border-color:#4fa0ff;color:#4fa0ff;background:rgba(79,160,255,.15)}
.mp-status{font-size:12px;color:#aaa;min-height:16px;text-align:center}
.map-row{display:flex;align-items:center;gap:10px;margin-top:18px;font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#aaa}
.map-row select{min-width:340px;text-transform:none;letter-spacing:0;background:#14161a;color:#eee}

/* ── HUD overlay ───────────────────────────────────────── */
#hud{position:fixed;inset:0;pointer-events:none;z-index:10}

/* Crosshair */
#crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
.ch-line{position:absolute;background:rgba(255,255,255,.85)}
.ch-h{width:14px;height:2px;top:-1px}
.ch-v{width:2px;height:14px;left:-1px}
.ch-tl{top:-10px;left:-10px}.ch-tr{top:-10px;right:-10px}
.ch-bl{bottom:-10px;left:-10px}.ch-br{bottom:-10px;right:-10px}

/* Damage vignette */
#dmg-vignette{position:fixed;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 50%,rgba(180,0,0,.5) 100%);
  opacity:0;transition:opacity .15s;z-index:9}

/* Under water */
#water-overlay{position:fixed;inset:0;pointer-events:none;display:none;z-index:8;
  background:radial-gradient(ellipse at center,rgba(20,90,130,.22) 0%,rgba(8,50,80,.5) 100%)}

/* Flashbang */
#flash-overlay{position:fixed;inset:0;pointer-events:none;background:#fff;opacity:0;z-index:30}

/* Radar (top-left under the score) */
#radar{position:absolute;top:74px;left:16px;width:160px;height:160px;border-radius:4px;opacity:.92}

/* Bomb status + defuse progress */
#bomb-status{position:absolute;top:96px;left:50%;transform:translateX(-50%);display:none;
  font-size:14px;letter-spacing:2px;text-transform:uppercase;color:#e2b143;background:rgba(0,0,0,.55);padding:5px 14px;border-radius:3px}
#bomb-status.danger{color:#ff6a4a;animation:blink 1s steps(2,start) infinite}
#defuse-bar{position:absolute;bottom:34%;left:50%;transform:translateX(-50%);width:260px;height:10px;display:none;
  background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.3);border-radius:5px;overflow:hidden}
#defuse-bar div{height:100%;width:0;background:linear-gradient(90deg,#4fa0ff,#8fd0ff)}

/* Scoreboard */
#scoreboard{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);display:none;z-index:45;min-width:420px;
  background:rgba(10,12,16,.92);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:16px 22px;color:#ddd;font-size:14px}
#scoreboard .sb-title{font-size:13px;letter-spacing:3px;text-transform:uppercase;color:#e2b143;text-align:center;margin-bottom:8px}
#scoreboard .sb-team{font-weight:700;letter-spacing:2px;text-transform:uppercase;margin:10px 0 4px;font-size:12px}
#scoreboard table{width:100%;border-collapse:collapse}
#scoreboard th{text-align:left;font-size:11px;color:#888;font-weight:600;padding:2px 8px}
#scoreboard td{padding:3px 8px;border-top:1px solid rgba(255,255,255,.06)}
#scoreboard tr.me td{color:#fff;background:rgba(226,177,67,.08)}

/* Chat */
#chat-log{position:absolute;left:16px;bottom:120px;max-width:420px;font-size:13px;line-height:1.5;text-shadow:0 1px 2px #000}
.chat-line{transition:opacity .6s}
#chat-input{position:fixed;left:16px;bottom:96px;width:420px;display:none;z-index:50;padding:8px 10px;
  background:rgba(0,0,0,.8);border:1px solid rgba(226,177,67,.6);border-radius:4px;color:#fff;font-size:14px;outline:none}

/* Hit direction lines — flash red when hit from that side */
.hit-dir{position:fixed;pointer-events:none;z-index:9;background:rgba(255,0,0,0);transition:background .1s;opacity:0}
#hit-dir-front{top:0;left:0;right:0;height:4px}
#hit-dir-back{bottom:0;left:0;right:0;height:4px}
#hit-dir-left{top:0;bottom:0;left:0;width:4px}
#hit-dir-right{top:0;bottom:0;right:0;width:4px}

/* Health & Armor (bottom-left) */
#stats-panel{position:absolute;bottom:24px;left:24px}
.stat-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.stat-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}
.stat-bar-bg{width:180px;height:10px;background:rgba(255,255,255,.1);border-radius:5px;overflow:hidden}
.stat-bar{height:100%;border-radius:5px;transition:width .25s}
.stat-val{font-size:26px;font-weight:700;min-width:42px;text-align:right}
#hp-icon{background:#e74c3c}
#hp-bar{background:linear-gradient(90deg,#e74c3c,#ff6b6b)}
#armor-icon{background:#3498db}
#armor-bar{background:linear-gradient(90deg,#2980b9,#5dade2)}
#breath-icon{background:#2aa7c9}
#breath-bar{background:linear-gradient(90deg,#2aa7c9,#7fe0ff)}

/* Ammo (bottom-right) */
#ammo-panel{position:absolute;bottom:24px;right:24px;text-align:right}
#ammo-mag{font-size:52px;font-weight:800;line-height:1}
#ammo-res{font-size:20px;color:#aaa;margin-top:2px}
#weapon-name{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#e2b143;margin-bottom:4px}
#reload-hint{position:absolute;bottom:24px;right:24px;transform:translateY(-64px);
  margin-top:6px;font-size:13px;letter-spacing:3px;text-transform:uppercase;
  color:#e2b143;text-align:right;display:none;animation:blink .5s steps(2,start) infinite}
#pickup-hint{position:absolute;bottom:38%;left:50%;transform:translateX(-50%);
  font-size:15px;letter-spacing:2px;text-transform:uppercase;
  color:#e2b143;background:rgba(0,0,0,.55);padding:8px 16px;border-radius:4px;
  display:none;pointer-events:none}
@keyframes blink{to{visibility:hidden}}

/* Timer (top-center) */
#timer-display{position:absolute;top:14px;left:50%;transform:translateX(-50%);
  font-size:20px;font-weight:600;background:rgba(0,0,0,.55);
  padding:6px 22px;border-radius:4px;letter-spacing:1px}

/* Score (top-left) */
#score-display{position:absolute;top:14px;left:16px;font-size:15px;color:#aaa}
#score-display span{font-weight:700;color:#e2b143;font-size:22px}

/* Money (top-left, under score) */
#money-display{position:absolute;top:44px;left:16px;
  font-size:18px;font-weight:700;color:#5ef29a;
  text-shadow:0 0 8px rgba(94,242,154,.5)}

/* ── Buy menu (B during buy phase) ─────────────────────────── */
#buy-menu{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  z-index:40;display:none;flex-direction:column;gap:0;
  background:rgba(10,12,16,.92);border:1px solid rgba(226,177,67,.4);
  border-radius:8px;padding:22px 26px;min-width:380px;
  box-shadow:0 0 60px rgba(0,0,0,.8)}
.bm-title{font-size:22px;font-weight:800;letter-spacing:3px;text-transform:uppercase;
  color:#e2b143;text-align:center;margin-bottom:6px}
.bm-money{text-align:center;font-size:20px;font-weight:700;color:#5ef29a;margin-bottom:14px}
#bm-grid{display:flex;flex-direction:column;gap:6px}
.bm-row{display:grid;grid-template-columns:26px 1fr auto auto;
  align-items:center;gap:10px;padding:8px 12px;border-radius:4px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);
  font-size:15px;cursor:pointer;transition:background .15s}
.bm-row.bm-owned{background:rgba(94,242,154,.08);border-color:rgba(94,242,154,.3)}
.bm-row.bm-poor{opacity:.45}
.bm-k{font-weight:800;color:#e2b143;text-align:center}
.bm-n{font-weight:600}
.bm-s{font-size:11px;letter-spacing:1px;color:#5ef29a}
.bm-p{font-weight:700;color:#aaa;min-width:64px;text-align:right}
.bm-close{margin-top:14px;text-align:center;font-size:12px;color:#888;letter-spacing:1px}

/* Phase label (top-center, below timer) */
#phase-label{position:absolute;top:52px;left:50%;transform:translateX(-50%);
  font-size:13px;letter-spacing:2px;text-transform:uppercase;color:#e2b143;
  padding:4px 16px;background:rgba(0,0,0,.45);border-radius:3px;display:none}

/* Kill feed (top-right) */
#killfeed{position:absolute;top:14px;right:16px;text-align:right;max-width:360px}
.kf-entry{background:rgba(0,0,0,.55);padding:4px 12px;margin-bottom:3px;
  border-radius:3px;font-size:12px;opacity:1;transition:opacity .4s;white-space:nowrap}
.kf-entry .killer{color:#e2b143;font-weight:600}
.kf-entry .victim{color:#e74c3c;font-weight:600}

/* Round result announcement */
#round-result{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%);
  font-size:52px;font-weight:800;text-transform:uppercase;letter-spacing:4px;
  text-shadow:0 0 30px rgba(0,0,0,.8);display:none;z-index:20}

/* Ready prompt */
#ready-prompt{position:absolute;bottom:100px;left:50%;transform:translateX(-50%);
  font-size:15px;color:#aaa;display:none;text-align:center;line-height:2}

/* Death overlay */
#death-overlay{position:fixed;inset:0;display:none;align-items:center;
  justify-content:center;background:rgba(80,0,0,.4);z-index:15;
  flex-direction:column;pointer-events:auto}
#death-overlay h2{font-size:48px;color:#e74c3c;letter-spacing:4px;text-transform:uppercase}
#death-overlay p{font-size:16px;color:#ccc;margin-top:12px}
#death-overlay .death-hint{font-size:14px;color:#f1c40f;font-weight:bold}

/* Match victory */
#match-over{position:fixed;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(6,10,8,.82);z-index:120;flex-direction:column;pointer-events:auto;
  backdrop-filter:blur(8px);text-align:center}
#match-over h2{font-size:56px;color:#e2b143;letter-spacing:8px;text-transform:uppercase;
  text-shadow:0 0 28px rgba(226,177,67,.45);margin:0}
#match-over p{font-size:16px;color:#ccc;margin-top:12px}
#match-over-stats{color:#5ef29a !important;font-weight:700}
#match-over .play-btn{margin-top:28px;padding:14px 36px;font-size:18px;letter-spacing:2px;
  text-transform:uppercase;border:1px solid #e2b143;
  background:rgba(226,177,67,.12);color:#e2b143;cursor:pointer;border-radius:4px}
#match-over .play-btn:hover{background:rgba(226,177,67,.3)}

/* Sniper scope overlay */
#scope-overlay{position:fixed;inset:0;z-index:8;pointer-events:none;display:none;
  background:radial-gradient(circle at center, transparent 30%, rgba(0,0,0,.985) 31.2%)}
#scope-overlay .s-h{position:absolute;left:0;right:0;top:50%;height:2px;
  background:rgba(0,0,0,.9);transform:translateY(-50%)}
#scope-overlay .s-v{position:absolute;top:0;bottom:0;left:50%;width:2px;
  background:rgba(0,0,0,.9);transform:translateX(-50%)}
#scope-overlay .s-c{position:absolute;top:50%;left:50%;width:6px;height:6px;
  margin:-3px 0 0 -3px;border-radius:50%;background:rgba(0,0,0,.9)}