/* GEO-DEF Command Terminal — war-room CRT design system */

body.cmd-terminal{
  --accent:#3fe3ff;
  --accent-glow:rgba(63,227,255,.45);
  --accent-dim:rgba(63,227,255,.72);
  --amber:#ffb020;
  --amber-glow:rgba(255,176,32,.4);
  --danger:#ff6b8a;
  --violet:#b794ff;
  --panel:rgba(6,12,22,.94);
  --panel2:rgba(9,18,32,.96);
  --glass:rgba(4,10,18,.88);
  --brd:rgba(63,227,255,.32);
  --brd-dim:rgba(63,227,255,.14);
  --brd-hot:rgba(255,176,32,.45);
  --txt:#edf6ff;
  --muted:#94b0cc;
  --font-brand:'Orbitron',ui-sans-serif,system-ui,sans-serif;
  --font-display:'Barlow Condensed',ui-sans-serif,system-ui,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --font:var(--font-mono);
  --radius:2px;
  --cut:10px;
  --hud-shadow:0 0 0 1px rgba(0,0,0,.55),0 12px 40px rgba(0,0,0,.5);
  --text-halo:0 1px 3px rgba(0,0,0,.9),0 0 12px rgba(0,0,0,.35);
  --touch:44px;
  background:#03060c;
  font-family:var(--font-mono);
  font-size:clamp(12px,1.05vw,14px);
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  -webkit-text-size-adjust:100%;
}

/* Atmospheric grid + legibility scrims on the playfield */
body.cmd-terminal #stage::before,
body.cmd-terminal #stage::after{
  content:'';position:absolute;left:0;right:0;pointer-events:none;z-index:4;
}
body.cmd-terminal #stage::before{
  top:0;height:min(32vh,240px);
  background:linear-gradient(180deg,rgba(3,6,12,.82) 0%,rgba(3,6,12,.45) 55%,transparent 100%);
}
body.cmd-terminal #stage::after{
  bottom:0;height:min(38vh,280px);
  background:linear-gradient(0deg,rgba(3,6,12,.9) 0%,rgba(3,6,12,.5) 50%,transparent 100%);
}

/* Angular panel cut — tactical HUD chrome */
body.cmd-terminal .cmd-cut{
  clip-path:polygon(
    0 var(--cut),var(--cut) 0,
    100% 0,100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,0 100%
  );
}
body.cmd-terminal .cmd-panel{
  position:relative;
  background:var(--panel);
  border:1px solid var(--brd);
  box-shadow:var(--hud-shadow);
}
body.cmd-terminal .cmd-panel::before{
  content:'';position:absolute;inset:0;pointer-events:none;opacity:.35;
  background:
    linear-gradient(90deg,rgba(63,227,255,.04) 1px,transparent 1px),
    linear-gradient(rgba(63,227,255,.04) 1px,transparent 1px);
  background-size:20px 20px;
}
body.cmd-terminal .cmd-panel > *{position:relative}

/* Ticker cursor blink */
@keyframes cmd-blink{0%,100%{opacity:1}50%{opacity:0}}
body.cmd-terminal .ops-ticker::after,
body.cmd-terminal .match-ticker::after{
  content:'█';margin-left:6px;font-size:.85em;color:var(--accent);
  animation:cmd-blink 1.1s step-end infinite;text-shadow:0 0 8px var(--accent-glow);
}

/* Lobby HUD vertical anchor — clears the ops nav bar */
body.cmd-terminal #worldmap{
  --lobby-hud-top:calc(54px + env(safe-area-inset-top));
}

/* ---- Ops bar (lobby) ---- */
.ops-bar{
  position:absolute;left:0;right:0;top:0;z-index:4;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:calc(10px + env(safe-area-inset-top)) 14px 10px;
  background:linear-gradient(180deg,rgba(3,6,12,.97),rgba(3,6,12,.78));
  border-bottom:1px solid var(--brd);
  box-shadow:0 4px 24px rgba(0,0,0,.45),inset 0 -1px 0 rgba(63,227,255,.08);
  pointer-events:auto;
}
.ops-brand{display:flex;align-items:baseline;gap:10px;flex-shrink:0}
.ops-mark{
  font-family:var(--font-brand);font-size:clamp(18px,4.5vw,24px);font-weight:900;
  letter-spacing:.14em;color:var(--accent);
  text-shadow:var(--text-halo),0 0 24px var(--accent-glow);
}
.ops-title{
  font-family:var(--font-display);font-size:clamp(10px,2.4vw,12px);font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--muted);
  text-shadow:var(--text-halo);
}
.ops-ticker{
  flex:1;min-width:120px;font-size:clamp(11px,2.6vw,12px);font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;color:var(--accent-dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-left:1px solid var(--brd-dim);padding-left:12px;
  text-shadow:var(--text-halo);
}
.ops-bar-end{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}
.ops-xp{
  font-size:clamp(11px,2.6vw,12px);font-weight:700;color:var(--accent);
  letter-spacing:.06em;padding:6px 10px;
  border:1px solid var(--brd);background:rgba(63,227,255,.1);
  text-shadow:var(--text-halo);
}
.ops-xp:empty{display:none}
.ops-btn{
  cursor:pointer;font-family:var(--font-mono);font-size:clamp(10px,2.4vw,11px);font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  min-height:var(--touch);padding:0 14px;border-radius:var(--radius);
  border:1px solid var(--brd);background:var(--panel2);color:var(--txt);
  text-shadow:var(--text-halo);
  transition:border-color .15s,box-shadow .15s,color .15s;
}
.ops-btn:hover,.ops-btn:focus-visible{
  border-color:var(--accent);color:var(--accent);
  box-shadow:0 0 16px rgba(63,227,255,.2);outline:none;
}
.ops-btn.on,.ops-btn.ops-btn-accent{
  border-color:var(--amber);color:#ffe4b8;
  background:rgba(255,176,32,.14);box-shadow:0 0 14px var(--amber-glow);
}
.ops-btn-accent{border-color:var(--accent);color:var(--accent)}

.ops-lbl{
  font-size:clamp(10px,2.4vw,11px);font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap;
  text-shadow:var(--text-halo);
}

/* ---- Bottom dock ---- */
.ops-dock{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  display:flex;align-items:flex-end;gap:10px;
  padding:0 12px calc(10px + env(safe-area-inset-bottom));
  pointer-events:none;
}
.ops-dock > *{pointer-events:auto}

body.cmd-terminal .sector-panel,
body.cmd-terminal #citypanel.citypanel{
  position:relative;left:auto;bottom:auto;transform:none;
  flex:1;min-width:0;max-width:min(560px,100%);
  border-radius:0;
  background:var(--panel);border:1px solid var(--brd);
  backdrop-filter:none;
  box-shadow:var(--hud-shadow);
  padding:0;text-align:left;
  clip-path:polygon(0 12px,12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);
}
body.cmd-terminal .citypanel.hidden{opacity:0;transform:translateY(16px);pointer-events:none}

.sector-head{
  display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;
  gap:0;border-bottom:1px solid var(--brd-dim);
}
#sector-preview{
  grid-column:1/3;width:100%;height:clamp(72px,18vw,96px);display:block;
  background:#040810;border-bottom:1px solid var(--brd-dim);
}
.sector-meta{padding:12px 14px 10px}
.sector-id{
  font-size:clamp(9px,2.2vw,10px);font-weight:700;letter-spacing:.18em;
  color:var(--accent-dim);margin-bottom:3px;text-shadow:var(--text-halo);
}
body.cmd-terminal #cp-name{
  font-family:var(--font-display);font-size:clamp(18px,4.8vw,24px);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--txt);
  text-shadow:var(--text-halo),0 0 18px rgba(63,227,255,.15);
}
body.cmd-terminal #cp-country{
  font-size:clamp(10px,2.4vw,11px);letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent-dim);text-shadow:var(--text-halo);
}
.sector-intel{
  margin-top:6px;font-size:clamp(10px,2.4vw,11px);letter-spacing:.06em;
  color:var(--muted);text-transform:uppercase;text-shadow:var(--text-halo);
}
body.cmd-terminal .cp-close,
body.cmd-terminal .sector-close{
  position:absolute;right:8px;top:clamp(72px,18vw,88px);
  background:rgba(0,0,0,.35);border:1px solid var(--brd);color:var(--txt);
  font-size:18px;width:var(--touch);height:var(--touch);border-radius:var(--radius);
  cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;
}
.sector-custom-hint{
  margin:8px 0 0;font-size:clamp(10px,2.4vw,11px);color:var(--muted);letter-spacing:.04em;
}
.sector-custom-hint .linkbtn{font-size:inherit;padding:0;vertical-align:baseline}
.sector-body{padding:12px 14px 14px}

.ops-channel{
  width:min(220px,100%);flex-shrink:0;
  background:var(--panel);border:1px solid var(--brd-dim);
  padding:12px 14px;border-radius:0;
  clip-path:polygon(0 10px,10px 0,100% 0,100% 100%,0 100%);
  box-shadow:var(--hud-shadow);
}
.ops-channel-row{display:flex;gap:8px;margin-top:8px}
.ops-channel input{
  flex:1;min-width:0;font-family:var(--font-mono);
  font-size:clamp(15px,4vw,18px);font-weight:700;
  letter-spacing:.28em;text-transform:uppercase;text-align:center;
  padding:10px 8px;min-height:var(--touch);border-radius:var(--radius);
  border:1px solid var(--brd);background:#040810;color:var(--accent);
  text-shadow:0 0 12px var(--accent-glow);
}
.ops-channel button{
  cursor:pointer;font-family:var(--font-mono);
  font-size:clamp(10px,2.4vw,11px);font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  min-height:var(--touch);padding:0 14px;border-radius:var(--radius);
  border:1px solid var(--accent);background:rgba(63,227,255,.16);color:var(--accent);
  text-shadow:var(--text-halo);
}
body.cmd-terminal #ad-banner{position:relative;left:auto;bottom:auto;transform:none;width:100%;margin-top:8px}
body.cmd-terminal .wm-legal{position:relative;left:auto;bottom:auto;margin-top:8px;font-size:clamp(10px,2.4vw,11px)}

body.cmd-terminal .wm-title{
  font-family:var(--font-mono);font-size:clamp(10px,2.4vw,11px);font-weight:600;
  letter-spacing:.1em;text-shadow:var(--text-halo);
  border-radius:var(--radius);background:var(--panel);border:1px solid var(--brd);
  bottom:calc(128px + env(safe-area-inset-bottom));
  padding:8px 14px;
}
body.cmd-terminal .wm-zoom button{
  border-radius:var(--radius);font-family:var(--font-display);
  width:var(--touch);height:var(--touch);font-size:22px;
  border-color:var(--brd);background:var(--panel);color:var(--txt);
  text-shadow:var(--text-halo);
}

body.cmd-terminal .fx-rec{
  font-family:var(--font-mono);font-weight:700;
  font-size:clamp(10px,2.4vw,11px);
  top:calc(52px + env(safe-area-inset-top));
  padding:6px 10px;background:rgba(3,6,12,.75);border:1px solid var(--brd-dim);
  text-shadow:var(--text-halo);
}

/* ---- Panels & cards (global) ---- */
body.cmd-terminal .mchip,body.cmd-terminal .card,
body.cmd-terminal .citypanel .openrow,
body.cmd-terminal .build,body.cmd-terminal .ubtn,
body.cmd-terminal .tpanel,body.cmd-terminal .rolepill,
body.cmd-terminal .hint,body.cmd-terminal .wm-filter,
body.cmd-terminal .eq-card,body.cmd-terminal .shop-card,
body.cmd-terminal .overlay .card{
  border-radius:var(--radius);
  backdrop-filter:none;-webkit-backdrop-filter:none;
  font-family:var(--font-mono);
}
body.cmd-terminal .mchip,body.cmd-terminal .rolepill,body.cmd-terminal .hint,
body.cmd-terminal .build,body.cmd-terminal .ubtn,body.cmd-terminal .tpanel{
  background:var(--panel);border:1px solid var(--brd-dim);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
body.cmd-terminal .mchip .k,body.cmd-terminal .sub{
  font-family:var(--font-mono);letter-spacing:.12em;
}
body.cmd-terminal .mchip .v{font-family:var(--font-display);font-size:20px}

body.cmd-terminal .rolepill{display:none !important}

body.cmd-terminal .abtn{
  border-radius:var(--radius);font-family:var(--font-display);
  font-size:clamp(12px,3vw,14px);font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;min-width:0;min-height:var(--touch);
  text-shadow:var(--text-halo);
  transition:box-shadow .15s,border-color .15s;
}
body.cmd-terminal .abtn.def{
  background:rgba(63,227,255,.08);border:1px solid var(--accent);color:var(--accent);
  box-shadow:inset 0 0 16px rgba(63,227,255,.1),0 0 12px rgba(63,227,255,.08);
}
body.cmd-terminal .abtn.def:hover{box-shadow:inset 0 0 24px rgba(63,227,255,.18),0 0 20px var(--accent-glow)}
body.cmd-terminal .abtn.atk{
  background:rgba(255,176,32,.08);border:1px solid var(--amber);color:#ffe4b8;
  box-shadow:inset 0 0 16px rgba(255,176,32,.1),0 0 12px rgba(255,176,32,.08);
}
body.cmd-terminal .opt,body.cmd-terminal .join button{
  border-radius:var(--radius);font-family:var(--font-mono);
  font-size:clamp(11px,2.6vw,12px);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  min-height:36px;padding:8px 12px;
  text-shadow:var(--text-halo);
}
body.cmd-terminal .opt.sel{
  border-color:var(--accent);background:rgba(63,227,255,.14);color:var(--accent);
  box-shadow:0 0 12px rgba(63,227,255,.15);
}
body.cmd-terminal .optlabel{font-family:var(--font-mono);letter-spacing:.12em}

body.cmd-terminal .cp-quick{gap:8px}
body.cmd-terminal .cp-adv-toggle{
  font-family:var(--font-mono);font-size:clamp(11px,2.6vw,12px);
  letter-spacing:.08em;text-transform:uppercase;min-height:36px;
}

body.cmd-terminal .openrow{
  border-radius:var(--radius);background:var(--panel2);font-size:clamp(12px,2.8vw,13px);
  padding:12px 14px;text-shadow:var(--text-halo);
}
body.cmd-terminal .openrow .ci{font-family:var(--font-display);letter-spacing:.08em;font-size:14px}
body.cmd-terminal .openrow button{
  border-radius:var(--radius);background:rgba(63,227,255,.12);
  border:1px solid var(--accent);color:var(--accent);font-family:var(--font-mono);
  font-size:clamp(10px,2.4vw,11px);letter-spacing:.08em;
  min-height:36px;padding:8px 14px;font-weight:700;
}

body.cmd-terminal .codebig{
  font-family:var(--font-brand);letter-spacing:.35em;color:var(--accent);
  text-shadow:0 0 30px var(--accent-glow),var(--text-halo);
}

body.cmd-terminal #endgame .verdict{font-family:var(--font-brand);letter-spacing:.08em}
body.cmd-terminal .vbtn,body.cmd-terminal .eq-ready,body.cmd-terminal .acct-btn{
  border-radius:var(--radius);font-family:var(--font-display);
  letter-spacing:.08em;text-transform:uppercase;min-height:var(--touch);
  text-shadow:var(--text-halo);
}

body.cmd-terminal .credit{
  font-family:var(--font-mono);letter-spacing:.04em;
  font-size:clamp(9px,2.2vw,10px);text-shadow:var(--text-halo);
  background:rgba(3,6,12,.5);padding:2px 6px;
}

body.cmd-terminal .overlay .card h1,
body.cmd-terminal #acct-title{
  font-family:var(--font-brand);letter-spacing:.08em;text-transform:uppercase;
  text-shadow:var(--text-halo),0 0 20px var(--accent-glow);
}
body.cmd-terminal .prof-id{font-family:var(--font-mono)}
body.cmd-terminal .acct-btn.ad{border-color:var(--amber);background:rgba(255,176,32,.18);color:#ffe4b8}

body.cmd-terminal .wm-top,
body.cmd-terminal .wm-foot{display:none !important}

/* ---- In-match command terminal HUD ---- */

body.cmd-terminal .match-bar{
  position:absolute;left:0;right:0;top:0;z-index:6;
  display:flex;align-items:stretch;gap:0;
  padding-top:env(safe-area-inset-top);
  background:linear-gradient(180deg,rgba(3,6,12,.96),rgba(3,6,12,.7));
  border-bottom:1px solid var(--brd);
  box-shadow:0 6px 28px rgba(0,0,0,.5),inset 0 -1px 0 rgba(63,227,255,.1);
  pointer-events:none;
}
body.cmd-terminal .match-role{
  flex-shrink:0;padding:10px 16px;
  font-family:var(--font-brand);font-size:clamp(11px,2.8vw,13px);font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
  border-right:1px solid var(--brd-dim);
  background:rgba(0,0,0,.35);text-shadow:var(--text-halo);
}
body.cmd-terminal .match-role.def{
  color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent);
  text-shadow:var(--text-halo),0 0 16px var(--accent-glow);
}
body.cmd-terminal .match-role.atk{
  color:#ffe4b8;box-shadow:inset 0 -3px 0 var(--amber);
  text-shadow:var(--text-halo),0 0 16px var(--amber-glow);
}
body.cmd-terminal .match-phase{
  flex-shrink:0;padding:10px 14px;
  font-size:clamp(10px,2.4vw,11px);font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);
  border-right:1px solid var(--brd-dim);
  display:flex;align-items:center;text-shadow:var(--text-halo);
}
body.cmd-terminal .match-ticker{
  flex:1;min-width:0;padding:10px 14px;
  font-size:clamp(11px,2.6vw,12px);font-weight:500;
  letter-spacing:.06em;text-transform:uppercase;
  color:var(--accent-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:flex;align-items:center;text-shadow:var(--text-halo);
}

/* Corner telemetry */
body.cmd-terminal .match-stats{
  position:absolute;
  top:calc(44px + env(safe-area-inset-top));
  left:calc(10px + env(safe-area-inset-left));
  right:auto;z-index:5;pointer-events:none;
  max-width:calc(100% - 20px - env(safe-area-inset-left) - env(safe-area-inset-right));
}
body.cmd-terminal .stats-panel{
  background:var(--panel);border:1px solid var(--brd);
  box-shadow:var(--hud-shadow);
  min-width:min(168px,100%);
  clip-path:polygon(0 8px,8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%);
}
body.cmd-terminal .stats-head{
  padding:7px 12px;font-size:clamp(9px,2.2vw,10px);font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:var(--accent-dim);
  border-bottom:1px solid var(--brd-dim);
  background:linear-gradient(90deg,rgba(63,227,255,.08),transparent);
  text-shadow:var(--text-halo);
}
body.cmd-terminal .stats-table{width:100%;border-collapse:collapse}
body.cmd-terminal .stats-table tr{border-bottom:1px solid var(--brd-dim)}
body.cmd-terminal .stats-table tr:last-child{border-bottom:none}
body.cmd-terminal .stats-table td{padding:7px 12px}
body.cmd-terminal .stats-table .sk{
  font-size:clamp(10px,2.4vw,11px);font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);width:58%;
  text-shadow:var(--text-halo);
}
body.cmd-terminal .stats-table .sv{
  font-family:var(--font-display);font-size:clamp(18px,4.5vw,22px);font-weight:700;
  font-variant-numeric:tabular-nums;text-align:right;color:var(--txt);
  text-shadow:var(--text-halo),0 0 12px rgba(255,255,255,.08);
}
body.cmd-terminal .stats-table .sv.danger{color:var(--danger);text-shadow:var(--text-halo),0 0 14px rgba(255,107,138,.35)}
body.cmd-terminal .stats-table .sv.accent{color:var(--accent);text-shadow:var(--text-halo),0 0 14px var(--accent-glow)}
body.cmd-terminal .stats-table .sv.amber{color:var(--amber);text-shadow:var(--text-halo),0 0 14px var(--amber-glow)}
body.cmd-terminal .stats-sub{
  padding:7px 12px 8px;font-size:clamp(10px,2.4vw,11px);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--amber);
  border-top:1px solid var(--brd-dim);
  background:linear-gradient(90deg,rgba(255,176,32,.1),transparent);
  text-shadow:var(--text-halo);
}

/* Phase directive panel */
body.cmd-terminal #pvp-banner{
  top:calc(50px + env(safe-area-inset-top));
  left:12px;right:12px;transform:none;width:auto;max-width:none;
  text-align:left;border-radius:0;
  background:var(--panel);border:1px solid var(--brd);
  box-shadow:var(--hud-shadow);
  padding:12px 16px;
  animation:matchBannerIn .35s ease both;
  clip-path:polygon(0 8px,8px 0,100% 0,100% 100%,0 100%);
}
@keyframes matchBannerIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
body.cmd-terminal #pvp-banner .pb-main{
  font-family:var(--font-display);font-size:clamp(14px,3.6vw,17px);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--txt);
  text-shadow:var(--text-halo);
}
body.cmd-terminal #pvp-banner .pb-sub{
  font-size:clamp(11px,2.6vw,12px);letter-spacing:.06em;text-transform:uppercase;
  margin-top:5px;color:var(--muted);text-shadow:var(--text-halo);
}
body.cmd-terminal #pvp-banner .pb-boost{
  font-size:clamp(10px,2.4vw,11px);letter-spacing:.08em;text-transform:uppercase;
  margin-top:8px;padding-top:8px;border-top:1px solid var(--brd-dim);
  color:var(--accent-dim);text-shadow:var(--text-halo);
}
body.cmd-terminal #pvp-banner.count{
  left:50%;right:auto;transform:translateX(-50%);width:max-content;
  text-align:center;background:rgba(3,6,12,.92);
  clip-path:none;border-radius:var(--radius);
}
body.cmd-terminal #pvp-banner .pb-main{font-family:var(--font-display);letter-spacing:.06em}

/* Context hint */
body.cmd-terminal .hint{
  bottom:calc(148px + env(safe-area-inset-bottom));
  left:12px;right:12px;transform:none;max-width:none;
  border-radius:0;font-family:var(--font-mono);
  font-size:clamp(11px,2.6vw,12px);font-weight:500;
  letter-spacing:.05em;text-transform:uppercase;
  background:var(--panel);border:1px solid var(--brd);
  backdrop-filter:none;padding:10px 14px;text-align:center;
  text-shadow:var(--text-halo);
  box-shadow:var(--hud-shadow);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%);
}

/* Bottom weapon dock */
body.cmd-terminal .match-deck{
  left:0;right:0;bottom:0;z-index:5;
  padding:0 10px calc(10px + env(safe-area-inset-bottom));
  background:linear-gradient(0deg,rgba(3,6,12,.97) 60%,rgba(3,6,12,0));
  pointer-events:none;
}
body.cmd-terminal .deck-panel{
  pointer-events:auto;
  background:var(--panel);border:1px solid var(--brd);
  box-shadow:var(--hud-shadow);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);
}
body.cmd-terminal .deck-head{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:8px 12px;border-bottom:1px solid var(--brd-dim);
  background:linear-gradient(90deg,rgba(63,227,255,.06),transparent);
}
body.cmd-terminal .deck-lbl{
  font-size:clamp(9px,2.2vw,10px);font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent-dim);text-shadow:var(--text-halo);
}
body.cmd-terminal .deck-meta{
  flex:1;min-width:0;font-size:clamp(11px,2.6vw,12px);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  text-shadow:var(--text-halo);
}
body.cmd-terminal .deck-meta b{
  color:var(--accent);font-family:var(--font-display);
  font-size:clamp(15px,3.6vw,18px);
  text-shadow:var(--text-halo),0 0 12px var(--accent-glow);
}
body.cmd-terminal .deck-lock{
  cursor:pointer;font-family:var(--font-mono);
  font-size:clamp(10px,2.4vw,11px);font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  min-height:var(--touch);padding:0 16px;border-radius:var(--radius);
  border:1px solid var(--amber);background:rgba(255,176,32,.14);color:#ffe4b8;
  text-shadow:var(--text-halo);
  box-shadow:0 0 14px rgba(255,176,32,.12);
}
body.cmd-terminal .deck-lock.done{border-color:var(--brd);background:transparent;color:var(--muted);box-shadow:none}
body.cmd-terminal .deck-lock[disabled]{opacity:.5;cursor:default}

/* Weapon grid */
body.cmd-terminal .weapon-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:8px;
  padding:10px;pointer-events:auto;
}
body.cmd-terminal #deck-def .weapon-grid{grid-template-columns:repeat(3,1fr)}
body.cmd-terminal .weapon-grid .wpn,
body.cmd-terminal .weapon-grid .build,
body.cmd-terminal .weapon-grid .ubtn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  min-height:clamp(56px,14vw,68px);padding:10px 6px;margin:0;
  border-radius:var(--radius);border:1px solid var(--brd-dim);
  background:var(--panel2);color:var(--txt);
  font-family:var(--font-mono);font-size:clamp(10px,2.4vw,11px);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;
  cursor:pointer;backdrop-filter:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  text-shadow:var(--text-halo);
  transition:border-color .12s,box-shadow .12s,transform .12s;
  -webkit-tap-highlight-color:transparent;
}
body.cmd-terminal .weapon-grid .wpn:active:not([disabled]),
body.cmd-terminal .weapon-grid .build:active:not(.cool),
body.cmd-terminal .weapon-grid .ubtn:active:not([disabled]){transform:scale(.96)}
body.cmd-terminal .weapon-grid .wpn.sel,
body.cmd-terminal .weapon-grid .build.sel,
body.cmd-terminal .weapon-grid .ubtn.sel{
  border-color:var(--accent);color:var(--accent);
  box-shadow:inset 0 0 20px rgba(63,227,255,.15),0 0 16px var(--accent-glow);
}
body.cmd-terminal .weapon-grid .wpn.cool,
body.cmd-terminal .weapon-grid .build.cool{opacity:.45}
body.cmd-terminal .weapon-grid .ubtn[disabled]{opacity:.35;cursor:default}
body.cmd-terminal .wpn-swatch,
body.cmd-terminal .weapon-grid .dot{
  width:12px;height:12px;border-radius:1px;
  background:var(--c,#22d3ee);
  box-shadow:0 0 10px var(--c,#22d3ee);
}
body.cmd-terminal .wpn-name{font-size:clamp(11px,2.6vw,12px)}
body.cmd-terminal .wpn-cost,
body.cmd-terminal .weapon-grid .pc{
  font-size:clamp(10px,2.4vw,11px);color:var(--muted);
  font-variant-numeric:tabular-nums;font-weight:600;
}
body.cmd-terminal .weapon-grid .qn{
  position:static;min-width:0;height:auto;border-radius:var(--radius);
  background:rgba(255,176,32,.22);color:var(--amber);font-weight:700;
  font-size:clamp(10px,2.4vw,11px);padding:2px 7px;margin-top:2px;
}
body.cmd-terminal .weapon-grid .qn[data-z="0"]{display:none}

/* Tower inspect */
body.cmd-terminal .tower-panel,
body.cmd-terminal .tpanel{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 12px;border-top:1px solid var(--brd-dim);
  background:rgba(0,0,0,.25);pointer-events:auto;
}
body.cmd-terminal .tower-panel .tinfo,
body.cmd-terminal .tpanel .tinfo{flex:1;min-width:140px}
body.cmd-terminal .tower-panel .tinfo b,
body.cmd-terminal .tpanel .tinfo b{
  font-family:var(--font-display);font-size:clamp(14px,3.4vw,16px);
  letter-spacing:.04em;text-transform:uppercase;text-shadow:var(--text-halo);
}
body.cmd-terminal .tower-panel .tinfo span,
body.cmd-terminal .tpanel .tinfo span{
  font-size:clamp(10px,2.4vw,11px);text-shadow:var(--text-halo);
}
body.cmd-terminal .tbtn{
  border-radius:var(--radius);font-family:var(--font-mono);
  font-size:clamp(10px,2.4vw,11px);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;
  min-height:var(--touch);padding:0 16px;
  text-shadow:var(--text-halo);
}
body.cmd-terminal .tbtn.up{background:rgba(63,227,255,.1);border:1px solid var(--accent);color:var(--accent)}
body.cmd-terminal .tbtn.sell{background:rgba(255,107,138,.08);border:1px solid var(--danger);color:var(--danger)}

body.cmd-terminal #stage > .fx-rec{
  left:auto;right:calc(10px + env(safe-area-inset-right));
  top:calc(48px + env(safe-area-inset-top));z-index:5;
  clip-path:polygon(8px 0,100% 0,100% 100%,0 100%,0 8px);
}
body.cmd-terminal #stage > .fx-rec.hidden{display:none !important}

body.cmd-terminal .match-bar.solo .match-role{border-bottom-color:var(--accent)}
body.cmd-terminal .match-bar.solo .match-role.def{color:var(--accent)}

body.cmd-terminal .cluster{display:none !important}
body.cmd-terminal .deck:not(.match-deck){display:none !important}
body.cmd-terminal #atk-lock:not(.deck-lock){display:none !important}

/* ========== RESPONSIVE: mobile portrait ========== */
@media (max-width:599px){
  body.cmd-terminal{--cut:8px;--touch:48px}

  .ops-bar{
    display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;
    grid-template-areas:"brand end" "ticker ticker";
    gap:8px 10px;padding:calc(8px + env(safe-area-inset-top)) 12px 10px;
  }
  .ops-brand{grid-area:brand}
  .ops-bar-end{grid-area:end;gap:6px}
  .ops-ticker{
    grid-area:ticker;border-left:none;border-top:1px solid var(--brd-dim);
    padding:8px 0 0;width:100%;
  }
  .ops-title{display:none}
  body.cmd-terminal #worldmap{--lobby-hud-top:calc(112px + env(safe-area-inset-top))}

  .ops-dock{
    flex-direction:column;align-items:stretch;gap:8px;
    padding:0 10px calc(8px + env(safe-area-inset-bottom));
  }
  .ops-channel{width:100%}

  body.cmd-terminal .wm-zoom{right:10px;bottom:calc(72px + env(safe-area-inset-bottom))}

  /* Match HUD: full-width stats ribbon */
  body.cmd-terminal .match-stats{
    left:8px;right:8px;top:calc(46px + env(safe-area-inset-top));
    max-width:none;
  }
  body.cmd-terminal .stats-panel{width:100%}
  body.cmd-terminal .match-phase{display:none}

  body.cmd-terminal .match-ticker{font-size:12px}

  body.cmd-terminal #pvp-banner{top:calc(52px + env(safe-area-inset-top))}

  body.cmd-terminal .hint{
    bottom:calc(162px + env(safe-area-inset-bottom));
    left:8px;right:8px;font-size:11px;line-height:1.35;
    white-space:normal;
  }

  body.cmd-terminal .weapon-grid{gap:6px;padding:8px}
  body.cmd-terminal #deck-atk .weapon-grid{grid-template-columns:repeat(2,1fr)}
  body.cmd-terminal #deck-def .weapon-grid{grid-template-columns:repeat(3,1fr)}

  body.cmd-terminal .tower-panel,
  body.cmd-terminal .tpanel{flex-direction:column;align-items:stretch}
  body.cmd-terminal .tbtn{width:100%}
}

/* ========== RESPONSIVE: small phones ========== */
@media (max-width:380px){
  .ops-btn#wm-filter{
    font-size:0;width:var(--touch);padding:0;position:relative;
  }
  .ops-btn#wm-filter::after{
    content:'CH';font-size:10px;font-weight:700;letter-spacing:.1em;
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  }
  .ops-btn#wm-account{
    font-size:0;width:var(--touch);padding:0;position:relative;
  }
  .ops-btn#wm-account::after{
    content:'OP';font-size:10px;font-weight:700;letter-spacing:.1em;
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  }
}

/* ========== RESPONSIVE: tablet ========== */
@media (min-width:600px) and (max-width:899px){
  .ops-dock{flex-wrap:wrap}
  .ops-channel{width:min(200px,38vw)}
  body.cmd-terminal .match-stats{max-width:220px}
}

/* ========== RESPONSIVE: desktop ========== */
@media (min-width:900px){
  .ops-bar{padding:calc(12px + env(safe-area-inset-top)) 20px 12px}
  .ops-dock{
    padding:0 20px calc(14px + env(safe-area-inset-bottom));
    justify-content:center;gap:14px;
  }
  body.cmd-terminal .sector-panel,
  body.cmd-terminal #citypanel.citypanel{max-width:min(600px,58vw)}

  body.cmd-terminal .match-deck{
    display:flex;justify-content:center;
    padding:0 20px calc(14px + env(safe-area-inset-bottom));
  }
  body.cmd-terminal .deck-panel{max-width:720px;width:100%}

  body.cmd-terminal .match-stats{
    left:20px;top:calc(48px + env(safe-area-inset-top));
    max-width:200px;
  }

  body.cmd-terminal .hint{
    left:50%;right:auto;transform:translateX(-50%);
    max-width:min(640px,70vw);white-space:nowrap;
    bottom:calc(156px + env(safe-area-inset-bottom));
  }

  body.cmd-terminal #pvp-banner{
    left:50%;right:auto;transform:translateX(-50%);
    max-width:min(520px,60vw);
  }
  body.cmd-terminal #pvp-banner:not(.count){
    animation:matchBannerInDesk .35s ease both;
  }
  @keyframes matchBannerInDesk{
    from{opacity:0;transform:translateX(-50%) translateY(-8px)}
    to{opacity:1;transform:translateX(-50%) translateY(0)}
  }

  body.cmd-terminal .weapon-grid .wpn,
  body.cmd-terminal .weapon-grid .build,
  body.cmd-terminal .weapon-grid .ubtn{min-height:72px}
}

/* Landscape phones: reclaim vertical space */
@media (max-height:500px) and (orientation:landscape){
  body.cmd-terminal .match-stats{display:none}
  body.cmd-terminal .hint{display:none !important}
  body.cmd-terminal .stats-sub{font-size:10px}
  body.cmd-terminal .match-deck{padding-bottom:calc(6px + env(safe-area-inset-bottom))}
  body.cmd-terminal .weapon-grid .wpn,
  body.cmd-terminal .weapon-grid .build,
  body.cmd-terminal .weapon-grid .ubtn{min-height:48px;padding:6px}
}

/* Overlays: equip, shop, account, endgame cards */
body.cmd-terminal .eq-card,
body.cmd-terminal #shop .card,
body.cmd-terminal #acct-panel .card,
body.cmd-terminal #endgame .vbtn{
  border-radius:0;
  clip-path:polygon(0 12px,12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%);
  box-shadow:var(--hud-shadow),0 0 40px rgba(63,227,255,.06);
}
body.cmd-terminal .eq-title{font-family:var(--font-brand);letter-spacing:.06em;text-shadow:var(--text-halo)}
body.cmd-terminal .eq-chip{
  min-height:var(--touch);font-size:clamp(12px,2.8vw,13px);
  text-shadow:var(--text-halo);
}
body.cmd-terminal .eq-chip.on{
  border-color:var(--accent);box-shadow:inset 0 0 16px rgba(63,227,255,.12);
}
body.cmd-terminal #count-pop .n{
  font-family:var(--font-brand);
  text-shadow:0 0 60px var(--accent-glow),0 0 20px rgba(255,255,255,.5),var(--text-halo);
}

@media (prefers-reduced-motion:reduce){
  body.cmd-terminal .ops-ticker::after,
  body.cmd-terminal .match-ticker::after{animation:none}
  body.cmd-terminal #pvp-banner{animation:none}
}