:root {
  --bg: #050706;
  --panel: rgba(8, 11, 11, 0.86);
  --panel-2: rgba(15, 20, 19, 0.94);
  --line: rgba(210, 232, 225, 0.56);
  --line-soft: rgba(210, 232, 225, 0.22);
  --accent: #d99a14;
  --accent-2: #f4c542;
  --good: #38f66c;
  --bad: #ff3e2f;
  --warn: #f8e13b;
  --text: #e4e2dd;
  --muted: #a8aba9;
  --shadow: rgba(0, 0, 0, 0.65);
  --font: 'Tektur', 'Rajdhani', 'Segoe UI', Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { min-height: 100%; }
body {
  margin: 0;
  background:
    radial-gradient(circle at 52% 42%, rgba(190, 128, 24, 0.14), transparent 25%),
    radial-gradient(circle at 80% 55%, rgba(44, 115, 102, 0.16), transparent 35%),
    linear-gradient(135deg, rgba(255,255,255,0.025) 25%, transparent 25%) 0 0 / 5px 5px,
    #030404;
  color: var(--text);
  font-family: var(--font);
  letter-spacing: 0.04em;
}
button, input { font: inherit; }

.scanline {
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: 0.42;
  z-index: 50;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,0.03), rgba(255,255,255,0.03) 1px, transparent 1px, transparent 4px);
  mix-blend-mode: soft-light;
}

.game-body { overflow-x: hidden; }
.game-shell {
  min-height: 100vh;
  padding: clamp(14px, 2vw, 30px);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) minmax(190px, 24vh);
  gap: 16px;
}

.frame-panel {
  border: 1px solid var(--line-soft);
  background:
    linear-gradient(135deg, rgba(255,255,255,0.035), transparent 30%),
    var(--panel);
  box-shadow: 0 18px 50px var(--shadow), inset 0 0 0 1px rgba(255,255,255,0.035);
  backdrop-filter: blur(5px);
  position: relative;
}
.frame-panel::before,
.frame-panel::after {
  content: '';
  position: absolute;
  width: 18px;
  height: 18px;
  border-color: var(--accent);
  opacity: 0.8;
  pointer-events: none;
}
.frame-panel::before { left: -1px; top: -1px; border-left: 2px solid; border-top: 2px solid; }
.frame-panel::after { right: -1px; bottom: -1px; border-right: 2px solid; border-bottom: 2px solid; }

.topbar {
  display: grid;
  grid-template-columns: auto 1fr auto minmax(240px, auto);
  gap: 18px;
  align-items: center;
  min-height: 78px;
  background:
    radial-gradient(circle at 58% 10%, rgba(255,255,255,0.06), transparent 28%),
    linear-gradient(90deg, rgba(0,0,0,0.82), rgba(0,0,0,0.42));
  border-bottom: 1px solid rgba(255,255,255,0.09);
  padding: 0 18px;
}
.pad-key {
  font-size: 12px;
  color: #c4c4c4;
  background: rgba(255,255,255,0.13);
  border-radius: 4px;
  padding: 3px 8px;
  width: fit-content;
}
.nav-tabs {
  display: grid;
  grid-template-columns: repeat(6, minmax(72px, 1fr));
  gap: 4px;
  height: 100%;
}
.nav-tab {
  border: 0;
  background: transparent;
  color: var(--muted);
  text-transform: uppercase;
  font-weight: 800;
  letter-spacing: 0.22em;
  position: relative;
  cursor: pointer;
}
.nav-tab.active,
.nav-tab:hover { color: var(--accent-2); }
.nav-tab.active::after {
  content: '';
  position: absolute;
  left: 12%;
  right: 12%;
  bottom: -1px;
  height: 3px;
  background: var(--accent-2);
  box-shadow: 0 0 16px rgba(244, 197, 66, 0.46);
}
.profile-strip {
  justify-self: end;
  display: grid;
  grid-template-columns: auto auto auto auto auto;
  gap: 10px;
  align-items: center;
  white-space: nowrap;
}
.coin {
  display: inline-grid;
  place-items: center;
  width: 30px;
  height: 30px;
  color: #4b2b00;
  border-radius: 50%;
  background: radial-gradient(circle, #ffe786, #bd760d 70%);
  box-shadow: 0 0 18px rgba(244, 197, 66, 0.35);
  font-weight: 900;
}
.profile-strip strong { font-size: clamp(18px, 2vw, 30px); letter-spacing: 0.04em; }
.rank { text-transform: uppercase; color: var(--muted); border-bottom: 2px solid var(--accent); padding-bottom: 5px; }
.rank-chevron { color: var(--accent-2); font-size: 30px; filter: drop-shadow(0 0 12px rgba(244, 197, 66, .5)); }

.main-layout {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(300px, 28vw) minmax(420px, 1fr) minmax(330px, 28vw);
  gap: 18px;
}
.left-column,
.center-column,
.right-column {
  min-width: 0;
  min-height: 0;
}
.left-column,
.center-column {
  display: grid;
  gap: 14px;
}
.left-column { grid-template-rows: minmax(330px, 1fr) auto; }
.center-column { grid-template-rows: minmax(310px, 0.8fr) minmax(330px, 1fr); }
.right-column { padding: 14px; overflow: hidden; display: grid; grid-template-rows: auto minmax(260px, 1fr) auto; gap: 14px; }

.panel-title,
.mini-label {
  color: var(--muted);
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: 0.16em;
}
.equipment-list { padding: 14px; }
.weapon-slots { display: grid; gap: 10px; margin-top: 10px; }
.weapon-slot {
  min-height: 74px;
  display: grid;
  grid-template-columns: 26px 74px 1fr auto;
  gap: 10px;
  align-items: center;
  border: 1px solid rgba(217,154,20,0.85);
  background: linear-gradient(90deg, rgba(217,154,20,0.08), rgba(255,255,255,0.02));
  padding: 8px;
}
.weapon-slot .slot-num { color: #cfcfcf; border: 1px solid var(--line); width: 22px; height: 22px; display: grid; place-items: center; }
.item-icon { max-width: 72px; max-height: 56px; object-fit: contain; filter: drop-shadow(0 3px 8px #000); }
.item-title { font-weight: 800; text-transform: uppercase; font-size: 13px; }
.item-meta { color: var(--muted); font-size: 12px; }
.ammo { align-self: end; color: #eee; font-size: 22px; text-shadow: 0 0 10px #000; }
.quickbar { display: grid; grid-template-columns: repeat(8, minmax(38px, 1fr)); margin-top: 12px; border: 1px solid var(--line-soft); }
.quick-slot {
  min-height: 48px;
  border-right: 1px solid var(--line-soft);
  display: grid;
  place-items: center;
  position: relative;
}
.quick-slot:last-child { border-right: 0; }
.quick-slot span { position: absolute; top: 3px; left: 4px; font-size: 10px; color: var(--muted); }
.quick-slot img { max-height: 32px; max-width: 32px; }
.quick-slot button { all: unset; cursor: pointer; display: grid; place-items: center; width: 100%; height: 100%; }

.vitals { padding: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; }
.vital-row { display: grid; grid-template-columns: 42px 1fr auto; gap: 10px; align-items: center; }
.vital-icon { color: #d4d4d4; font-size: 34px; opacity: 0.92; text-align: center; }
.vital-name { color: #c9c9c9; font-weight: 700; }
.vital-percent { font-weight: 900; }
.vital-bar { grid-column: 2 / 4; height: 7px; background: #8c8c8c; position: relative; overflow: hidden; }
.vital-fill { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-2)); }
.vital-good { color: var(--good); }
.vital-warn { color: var(--warn); }
.vital-bad { color: var(--bad); }
.vital-text { color: #c9c9c9; }

.paperdoll {
  min-height: 300px;
  display: grid;
  grid-template-columns: 90px 1fr 90px;
  align-items: center;
  justify-items: center;
  overflow: hidden;
  background:
    radial-gradient(circle at 50% 62%, rgba(217,154,20,0.19), transparent 28%),
    radial-gradient(circle at 65% 30%, rgba(75, 129, 119, .16), transparent 36%),
    var(--panel);
}
.paperdoll-left,
.paperdoll-right { display: grid; gap: 14px; z-index: 1; }
.armor-slot {
  width: 58px;
  height: 58px;
  border: 1px solid rgba(217,154,20,0.85);
  background: rgba(0,0,0,0.48);
  display: grid;
  place-items: center;
}
.armor-slot img { max-width: 45px; max-height: 45px; object-fit: contain; }
.operator-silhouette {
  width: min(230px, 36vw);
  height: 300px;
  position: relative;
  filter: drop-shadow(0 22px 26px rgba(0,0,0,0.82));
}
.operator-head,
.operator-body,
.operator-leg,
.operator-gun { position: absolute; background: linear-gradient(135deg, #293530, #717a69); border: 1px solid rgba(255,255,255,0.08); }
.operator-head { width: 60px; height: 54px; border-radius: 42% 42% 20% 20%; top: 18px; left: 86px; }
.operator-body { width: 110px; height: 150px; top: 72px; left: 58px; clip-path: polygon(18% 0, 82% 0, 100% 34%, 86% 100%, 16% 100%, 0 34%); }
.operator-gun { width: 22px; height: 180px; top: 96px; left: 30px; transform: rotate(-6deg); background: linear-gradient(90deg, #101615, #46514b); }
.operator-leg { width: 40px; height: 92px; top: 213px; }
.operator-leg.left { left: 73px; transform: rotate(4deg); }
.operator-leg.right { left: 121px; transform: rotate(-4deg); }

.map-panel { padding: 14px; display: grid; grid-template-rows: auto auto auto; gap: 12px; }
.map-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.position-chip { border: 1px solid rgba(217,154,20,0.65); color: var(--accent-2); padding: 5px 10px; text-transform: uppercase; font-size: 12px; }
.world-map { display: grid; gap: 2px; min-height: 0; background: rgba(255,255,255,0.04); border: 1px solid var(--line-soft); padding: 6px; }
.map-cell {
  min-height: 32px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(11, 14, 14, .95);
  display: grid;
  place-items: center;
  color: rgba(255,255,255,0.72);
  position: relative;
  cursor: pointer;
}
.map-cell.street { background: linear-gradient(135deg, #151918, #0c0f0f); }
.map-cell.building { background: linear-gradient(135deg, #2a2d25, #131817); border-color: rgba(217,154,20,.3); }
.map-cell.medical { background: linear-gradient(135deg, #183027, #0c1412); border-color: rgba(56,246,108,.35); }
.map-cell.store { background: linear-gradient(135deg, #34260f, #0f0d08); border-color: rgba(244,197,66,.4); }
.map-cell.park { background: linear-gradient(135deg, #102314, #0b110d); }
.map-cell.infected { background: linear-gradient(135deg, #331418, #0f0809); border-color: rgba(255,62,47,.35); }
.map-cell.safe { background: linear-gradient(135deg, #1e2d31, #0b1011); border-color: rgba(111,220,255,.35); }
.map-cell.blocked { background: repeating-linear-gradient(45deg, #101010 0 8px, #201516 8px 16px); opacity: .55; }
.map-cell.barricade { background: linear-gradient(135deg, #3b260d, #110c05); }
.map-cell.player::after {
  content: '▲';
  color: var(--accent-2);
  text-shadow: 0 0 10px var(--accent-2);
  font-size: 22px;
}
.map-cell.other-human::before,
.map-cell.other-infected::before {
  content: '';
  position: absolute;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  right: 5px;
  top: 5px;
  background: var(--good);
  box-shadow: 0 0 8px var(--good);
}
.map-cell.other-infected::before { background: var(--bad); box-shadow: 0 0 8px var(--bad); }
.map-hint { color: var(--muted); font-size: 12px; letter-spacing: .08em; }
.map-controls { display: flex; gap: 8px; flex-wrap: wrap; }

.z-btn {
  border: 1px solid rgba(217,154,20,.55);
  background: rgba(0,0,0,.45);
  color: var(--text);
  padding: 9px 13px;
  text-transform: uppercase;
  letter-spacing: .08em;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.z-btn:hover { border-color: var(--accent-2); background: rgba(217,154,20,.14); transform: translateY(-1px); }
.z-btn-primary { background: rgba(217,154,20,.18); color: var(--accent-2); }

.inventory-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-bottom: 1px solid var(--line-soft); padding-bottom: 10px; }
.inventory-head h2 { margin: 0; font-size: 24px; font-weight: 500; letter-spacing: .04em; }
.filter { color: var(--text); }
.filter-btn { border: 1px solid var(--accent); background: transparent; color: var(--text); padding: 8px 18px; text-transform: uppercase; }
.inventory-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(48px, 1fr));
  grid-auto-rows: minmax(58px, 1fr);
  overflow: auto;
  border-left: 1px solid var(--line-soft);
  border-top: 1px solid var(--line-soft);
}
.inv-slot {
  min-height: 58px;
  border-right: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
  display: grid;
  place-items: center;
  position: relative;
  background: rgba(0,0,0,.32);
}
.inv-slot.has-item:hover { background: rgba(217,154,20,.08); }
.inv-slot.wide { grid-column: span 2; }
.inv-slot img { max-width: 78%; max-height: 48px; object-fit: contain; }
.inv-slot .amount { position: absolute; right: 7px; bottom: 4px; font-weight: 900; }
.inv-slot .inv-title { position: absolute; left: 5px; top: 4px; font-size: 9px; color: rgba(255,255,255,.55); text-transform: uppercase; max-width: 90%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-slot button { all: unset; cursor: pointer; width: 100%; height: 100%; display: grid; place-items: center; }
.players-near { border-top: 1px solid var(--line-soft); padding-top: 12px; }
.player-row { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; color: var(--muted); border-bottom: 1px solid rgba(255,255,255,0.05); }
.player-row.same { color: var(--accent-2); }

.bottom-layout { display: grid; grid-template-columns: 1.25fr .75fr; gap: 16px; min-height: 0; }
.chat-panel,
.messages-panel { min-height: 0; padding: 12px; display: grid; grid-template-rows: auto 1fr auto; gap: 10px; }
.messages-panel { grid-template-rows: auto 1fr; }
.chat-log,
.system-messages { overflow: auto; display: flex; flex-direction: column; gap: 7px; padding-right: 6px; }
.chat-msg,
.sys-msg { font-size: 13px; line-height: 1.35; color: #d6d6d6; }
.chat-msg b { color: var(--accent-2); }
.msg-time { color: var(--muted); font-size: 11px; }
.chat-form { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.chat-form input,
.login-form input {
  border: 1px solid var(--line-soft);
  background: rgba(0,0,0,.54);
  color: var(--text);
  padding: 10px 12px;
  outline: none;
}
.chat-form input:focus,
.login-form input:focus { border-color: var(--accent); }

.login-screen { min-height: 100vh; display: grid; place-items: center; padding: 20px; }
.login-card { width: min(520px, 100%); padding: 28px; }
.brand-line { color: var(--accent-2); letter-spacing: .22em; font-weight: 900; text-transform: uppercase; }
.login-card h1 { margin: 10px 0; font-size: clamp(28px, 5vw, 48px); text-transform: uppercase; }
.login-card p { color: var(--muted); line-height: 1.55; }
.login-form { display: grid; gap: 10px; margin-top: 18px; }
.login-hint { color: var(--muted); font-size: 12px; margin-top: 18px; line-height: 1.5; }
code { color: var(--accent-2); }

::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-track { background: rgba(255,255,255,.04); }
::-webkit-scrollbar-thumb { background: rgba(217,154,20,.65); }

/* Screen routing: HOME is clean map + chat/logs; EQUIP/STATS hold character, vitals and inventory. */
.game-body[data-screen="home"] .screen-panel:not(.screen-home),
.game-body[data-screen="map"] .screen-panel:not(.screen-map),
.game-body[data-screen="equip"] .screen-panel:not(.screen-equip),
.game-body[data-screen="stats"] .screen-panel:not(.screen-stats) { display: none !important; }
.game-body[data-screen="quests"] .main-layout,
.game-body[data-screen="shop"] .main-layout,
.game-body[data-screen="quests"] .bottom-layout,
.game-body[data-screen="shop"] .bottom-layout { display: none !important; }
.game-body[data-screen="home"] .game-shell,
.game-body[data-screen="map"] .game-shell { grid-template-rows: auto auto minmax(220px, 1fr); }
.game-body[data-screen="home"] .main-layout,
.game-body[data-screen="map"] .main-layout { grid-template-columns: minmax(0, 980px); justify-content: center; }
.game-body[data-screen="home"] .center-column,
.game-body[data-screen="map"] .center-column { grid-template-rows: auto; }
.game-body[data-screen="equip"] .bottom-layout,
.game-body[data-screen="stats"] .bottom-layout { display: none !important; }

@media (max-width: 1280px) {
  .topbar { grid-template-columns: auto 1fr auto; }
  .profile-strip { grid-column: 1 / -1; justify-self: stretch; justify-content: end; }
  .main-layout { grid-template-columns: minmax(280px, .9fr) minmax(420px, 1.1fr); }
  .right-column { grid-column: 1 / -1; min-height: 420px; }
}

@media (max-width: 860px) {
  .game-shell { padding: 10px; grid-template-rows: auto auto auto; }
  .topbar { grid-template-columns: 1fr; gap: 8px; padding: 12px; }
  .pad-key { display: none; }
  .nav-tabs { grid-template-columns: repeat(3, 1fr); min-height: 92px; }
  .profile-strip { grid-template-columns: auto auto 1fr auto; justify-content: stretch; white-space: normal; }
  .rank-chevron { display: none; }
  .main-layout,
  .bottom-layout { grid-template-columns: 1fr; }
  .center-column { grid-template-rows: auto auto; }
  .paperdoll { grid-template-columns: 70px 1fr 70px; }
  .operator-silhouette { height: 250px; transform: scale(.82); }
  .inventory-grid { grid-template-columns: repeat(4, minmax(54px, 1fr)); max-height: 420px; }
  .vitals { grid-template-columns: 1fr; }
}

/* Legacy 3x3 Z-WAR map tiles */
.world-map.legacy-world-map {
  grid-template-rows: none;
  gap: 0;
  background: rgba(0, 0, 0, .55);
  border: 1px solid rgba(217,154,20,.22);
  padding: 8px;
  align-content: start;
}
.map-cell.legacy-tile {
  min-height: 0;
  aspect-ratio: 135 / 100;
  border: 1px solid rgba(0,0,0,.75);
  background: #050606;
  padding: 0;
  overflow: hidden;
  isolation: isolate;
}
.map-cell.legacy-tile::after { content: none; }
.legacy-tile-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  opacity: .96;
  filter: saturate(.95) contrast(1.04) brightness(.82);
  transition: transform .15s ease, filter .15s ease;
}
.map-cell.legacy-tile:hover .legacy-tile-img,
.map-cell.legacy-tile.player .legacy-tile-img {
  filter: saturate(1) contrast(1.08) brightness(1);
  transform: scale(1.025);
}
.map-cell.legacy-tile.player { outline: 2px solid rgba(244,197,66,.85); outline-offset: -3px; }
.legacy-tile-title,
.legacy-tile-coord {
  position: absolute;
  left: 5px;
  right: 5px;
  color: rgba(255,255,255,.82);
  text-shadow: 0 1px 5px #000, 0 0 4px #000;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: none;
}
.legacy-tile-title {
  bottom: 0;
  left: 0;
  right: 0;
  padding: 12px 5px 4px;
  font-size: 11px;
  text-align: center;
  text-transform: uppercase;
  background: linear-gradient(0deg, rgba(0,0,0,.72), rgba(0,0,0,0));
  z-index: 3;
}
.legacy-tile-coord { top: 4px; font-size: 10px; color: var(--accent-2); z-index: 3; }
.legacy-icons {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
}
.map-icon.flag {
  position: absolute;
  left: 50%;
  top: 48%;
  width: 26px;
  height: 26px;
  object-fit: contain;
  transform: translate(-50%, -50%);
  filter: drop-shadow(0 0 8px rgba(244,197,66,.9));
}
.map-icon:not(.flag) {
  position: absolute;
  right: 5px;
  top: 5px;
  width: 22px;
  height: 22px;
}
.map-badge {
  position: relative;
  display: inline-grid;
  place-items: center;
  min-width: 22px;
  height: 22px;
  margin: 4px;
  padding: 0 4px;
  border: 1px solid rgba(255,255,255,.25);
  background: rgba(0,0,0,.72);
  font-size: 10px;
  font-weight: 900;
  color: #fff;
  text-shadow: 0 1px 3px #000;
}
.map-badge.barricade { color: var(--accent-2); }
.map-badge.infection { color: var(--bad); }
.map-badge.protected { color: #9cecff; }
.map-badge.light { color: var(--good); }

/* Admin legacy map editor */
.admin-map-shell { min-height: 100vh; padding: clamp(12px, 2vw, 26px); display: grid; gap: 16px; }
.admin-header { padding: 18px 22px; display: flex; justify-content: space-between; gap: 16px; align-items: center; }
.admin-header h1 { margin: 4px 0 0; font-size: clamp(24px, 4vw, 40px); text-transform: uppercase; letter-spacing: .12em; }
.admin-links { display: flex; gap: 10px; }
.admin-map-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 380px); gap: 16px; align-items: start; }
.admin-map-board { padding: 14px; display: grid; gap: 12px; }
.admin-map-grid {
  display: grid;
  grid-template-columns: repeat(21, minmax(34px, 1fr));
  overflow: auto;
  max-height: calc(100vh - 190px);
  border-left: 1px solid rgba(255,255,255,.08);
  border-top: 1px solid rgba(255,255,255,.08);
  background: #050606;
}
.admin-cell {
  min-width: 34px;
  aspect-ratio: 4 / 3;
  border: 0;
  border-right: 1px solid rgba(255,255,255,.08);
  border-bottom: 1px solid rgba(255,255,255,.08);
  background: #000;
  padding: 0;
  position: relative;
  cursor: pointer;
}
.admin-cell > img:first-child,
.admin-cell img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .88; }
.admin-cell.selected { outline: 2px solid var(--accent-2); outline-offset: -2px; z-index: 2; }
.admin-cell .xy { position: absolute; inset: auto 2px 1px 2px; color: #fff; font-size: 8px; text-shadow: 0 1px 3px #000; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.admin-side { padding: 14px; display: grid; gap: 14px; position: sticky; top: 12px; }
.admin-form { display: grid; gap: 10px; }
.admin-form label { display: grid; gap: 4px; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .12em; }
.admin-form input,
.admin-form select {
  width: 100%;
  border: 1px solid var(--line-soft);
  background: rgba(0,0,0,.54);
  color: var(--text);
  padding: 9px 10px;
}
.admin-form .check-row { grid-template-columns: auto 1fr; align-items: center; justify-content: start; }
.admin-form .check-row input { width: auto; }
.tile-catalog { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; max-height: 320px; overflow: auto; }
.tile-card { border: 1px solid var(--line-soft); background: rgba(0,0,0,.35); padding: 4px; cursor: pointer; position: relative; }
.tile-card:hover { border-color: var(--accent); }
.tile-card > img:first-child,
.tile-card img { width: 100%; aspect-ratio: 135/100; object-fit: cover; display: block; }
.tile-card span { display: block; margin-top: 4px; font-size: 10px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

@media (max-width: 860px) {
  .world-map.legacy-world-map { grid-template-rows: none; padding: 4px; }
  .map-cell.legacy-tile { aspect-ratio: 135 / 100; }
  .admin-map-layout { grid-template-columns: 1fr; }
  .admin-side { position: static; }
  .admin-map-grid { grid-template-columns: repeat(21, 48px); }
}
.nav-link { display: grid; place-items: center; text-decoration: none; }


.world-map.legacy-world-map { position: relative; --night-opacity: 0; }
.world-map.legacy-world-map::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(circle at 50% 45%, rgba(0,0,0,0), rgba(0,0,0,.58)), linear-gradient(rgba(6,12,22,.88), rgba(0,0,0,.72));
  opacity: var(--night-opacity);
  mix-blend-mode: multiply;
}
.map-badge.npc { color: var(--accent-2); border-color: rgba(244,197,66,.38); box-shadow: 0 0 8px rgba(0,255,102,.25); }
.cell-enemies { border: 1px solid var(--line-soft); background: rgba(0,0,0,.28); padding: 10px; display: grid; gap: 8px; }
.empty-line { color: var(--muted); font-size: 12px; }
.enemy-row { display: grid; grid-template-columns: 1fr auto auto; gap: 8px; align-items: center; color: var(--text); border-bottom: 1px solid rgba(255,255,255,.06); padding-bottom: 6px; }
.enemy-row span { color: var(--muted); margin-left: 6px; font-size: 11px; }
.battle-panel { border: 2px solid var(--accent); color: var(--accent-2); background: rgba(0,0,0,.72); padding: 12px; font-family: 'Courier New', monospace; font-weight: 700; text-shadow: 0 0 4px rgba(244,197,66,.38); box-shadow: inset 0 0 10px rgba(217,154,20,.16), 0 0 10px rgba(217,154,20,.14); }
.battle-header { text-align: center; border-bottom: 2px double var(--accent); padding-bottom: 6px; margin-bottom: 10px; font-size: 13px; }
.fighters-status { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.fighter-card { border: 1px dashed var(--accent); padding: 7px; font-size: 12px; }
.fighter-card.enemy-card { border-color: #ff3333; color: #ff5555; text-shadow: 0 0 4px rgba(255,51,51,.35); }
.fighter-name { text-transform: uppercase; margin-bottom: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.terminal-bar { height: 10px; border: 1px solid currentColor; background: rgba(0,0,0,.45); margin: 4px 0 6px; }
.terminal-bar > div { height: 100%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.combat-log { height: 124px; overflow: auto; border: 1px solid var(--accent); background: rgba(0,0,0,.32); padding: 7px; font-size: 11px; line-height: 1.35; margin-bottom: 10px; }
.vats-title { text-align: center; font-size: 12px; text-transform: uppercase; margin-bottom: 7px; }
.vats-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.vats-btn { border: 1px solid var(--accent); color: var(--accent-2); background: transparent; font-family: inherit; font-weight: 800; padding: 8px; text-transform: uppercase; cursor: pointer; }
.vats-btn:hover, .vats-btn.selected { background: var(--accent-2); color: #090806; box-shadow: 0 0 10px rgba(244,197,66,.38); }
@media (max-width: 860px) {
  .fighters-status { grid-template-columns: 1fr; }
  .enemy-row { grid-template-columns: 1fr; }
}

.world-map.legacy-world-map[data-phase="night"] .legacy-tile-img { filter: saturate(.8) contrast(1.05) brightness(.48); }
.world-map.legacy-world-map[data-phase="dusk"] .legacy-tile-img,
.world-map.legacy-world-map[data-phase="dawn"] .legacy-tile-img { filter: saturate(.88) contrast(1.04) brightness(.68); }

/* v10: stable edge map + WAP/Stalker inventory layout */
.game-body[data-screen="equip"] .game-shell,
.game-body[data-screen="stats"] .game-shell {
  grid-template-rows: auto minmax(0, 1fr);
}

.game-body[data-screen="equip"] .main-layout {
  grid-template-columns: minmax(320px, 420px) minmax(520px, 1fr);
  grid-template-rows: auto auto;
  align-items: start;
}

.game-body[data-screen="equip"] .center-column {
  grid-column: 1;
  grid-row: 1;
  grid-template-rows: auto;
}

.game-body[data-screen="equip"] .left-column {
  grid-column: 1;
  grid-row: 2;
  grid-template-rows: auto auto;
}

.game-body[data-screen="equip"] .right-column {
  grid-column: 2;
  grid-row: 1 / span 2;
  min-height: 720px;
  grid-template-rows: auto auto auto minmax(360px, 1fr) auto auto;
  overflow: hidden;
}

.game-body[data-screen="equip"] .paperdoll {
  min-height: 430px;
  grid-template-columns: 88px minmax(160px, 1fr) 88px;
  background:
    linear-gradient(90deg, rgba(0,0,0,.78), rgba(10,18,16,.72), rgba(0,0,0,.78)),
    radial-gradient(circle at 50% 58%, rgba(217,154,20,.20), transparent 31%),
    radial-gradient(circle at 50% 20%, rgba(125, 155, 143, .22), transparent 38%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.025), rgba(255,255,255,.025) 1px, transparent 1px, transparent 5px),
    var(--panel-2);
}

.game-body[data-screen="equip"] .paperdoll::before {
  content: 'PROFILE SKIN // DEFAULT';
  position: absolute;
  left: 14px;
  top: 12px;
  color: rgba(244,197,66,.52);
  font-size: 10px;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.game-body[data-screen="equip"] .paperdoll::after {
  content: 'фон персонажа можно заменить покупным скином';
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 10px;
  color: rgba(228,226,221,.38);
  font-size: 10px;
  letter-spacing: .1em;
  text-align: center;
}

.game-body[data-screen="equip"] .operator-silhouette {
  width: min(260px, 46vw);
  height: 380px;
  opacity: .78;
  transform: none;
  filter: drop-shadow(0 28px 32px rgba(0,0,0,.94));
}

.game-body[data-screen="equip"] .operator-head { top: 20px; left: 100px; }
.game-body[data-screen="equip"] .operator-body { top: 78px; left: 64px; width: 130px; height: 188px; }
.game-body[data-screen="equip"] .operator-gun { top: 124px; left: 30px; height: 220px; }
.game-body[data-screen="equip"] .operator-leg { top: 257px; height: 114px; }
.game-body[data-screen="equip"] .operator-leg.left { left: 84px; }
.game-body[data-screen="equip"] .operator-leg.right { left: 142px; }

.game-body[data-screen="equip"] .armor-slot {
  width: 72px;
  height: 72px;
  background:
    radial-gradient(circle at 50% 45%, rgba(255,255,255,.08), transparent 58%),
    rgba(0,0,0,.62);
  border-color: rgba(217,154,20,.54);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}

.game-body[data-screen="equip"] .armor-slot img { max-width: 60px; max-height: 60px; }

.inventory-terminal {
  background:
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 35%),
    radial-gradient(circle at 50% 15%, rgba(217,154,20,.08), transparent 42%),
    rgba(6, 9, 9, .92);
}

.inventory-head-tactical {
  border-bottom: 1px solid rgba(217,154,20,.28);
}

.inventory-head-tactical h2 {
  text-transform: uppercase;
  color: var(--text);
  font-size: clamp(24px, 2.4vw, 34px);
  letter-spacing: .12em;
}

.inventory-tabs {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  border: 1px solid rgba(217,154,20,.36);
  background: rgba(0,0,0,.38);
}

.inv-tab {
  border: 0;
  border-right: 1px solid rgba(217,154,20,.24);
  background: rgba(255,255,255,.025);
  color: var(--muted);
  padding: 10px 6px;
  text-transform: uppercase;
  letter-spacing: .08em;
  cursor: pointer;
  font-weight: 800;
}

.inv-tab:last-child { border-right: 0; }
.inv-tab:hover,
.inv-tab.active {
  color: #090806;
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  box-shadow: 0 0 16px rgba(217,154,20,.24);
}

.inventory-weight-line {
  display: grid;
  grid-template-columns: auto minmax(120px, 1fr) auto;
  gap: 12px;
  align-items: center;
  color: var(--muted);
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: .12em;
}

.inventory-weight-bar {
  height: 12px;
  border: 1px solid rgba(217,154,20,.38);
  background: rgba(0,0,0,.55);
  overflow: hidden;
}

.inventory-weight-bar > div {
  width: 0%;
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
  box-shadow: 0 0 12px rgba(244,197,66,.38);
  transition: width .16s ease;
}

.inventory-weight-line b { color: var(--text); font-weight: 700; }

.inventory-grid.inventory-grid-tactical {
  grid-template-columns: repeat(8, minmax(54px, 1fr));
  grid-auto-rows: 74px;
  align-content: start;
  max-height: none;
  min-height: 360px;
  background:
    linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px),
    rgba(0,0,0,.34);
  background-size: calc(100% / 8) 74px, calc(100% / 8) 74px, auto;
  border-color: rgba(217,154,20,.2);
}

.inventory-grid-tactical .inv-slot {
  min-height: 74px;
  background: rgba(7,10,10,.48);
  border-color: rgba(255,255,255,.07);
}

.inventory-grid-tactical .inv-slot.has-item {
  background:
    radial-gradient(circle at 50% 42%, rgba(255,255,255,.12), transparent 62%),
    linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.28)),
    rgba(11,15,15,.74);
}

.inventory-grid-tactical .inv-slot.has-item:hover {
  outline: 1px solid rgba(244,197,66,.82);
  outline-offset: -1px;
  background:
    radial-gradient(circle at 50% 42%, rgba(244,197,66,.14), transparent 62%),
    rgba(22,18,8,.88);
}

.inventory-grid-tactical .inv-slot.wide { grid-column: span 2; }
.inventory-grid-tactical .inv-slot.type-weapon { border-bottom-color: rgba(255,88,88,.35); }
.inventory-grid-tactical .inv-slot.type-armor { border-bottom-color: rgba(128,190,255,.35); }
.inventory-grid-tactical .inv-slot.type-ammo { border-bottom-color: rgba(244,197,66,.42); }
.inventory-grid-tactical .inv-slot.type-usable { border-bottom-color: rgba(56,246,108,.34); }

.inventory-grid-tactical .inv-slot img {
  max-width: 84%;
  max-height: 52px;
  filter: drop-shadow(0 8px 10px rgba(0,0,0,.75));
}

.inventory-grid-tactical .inv-slot .inv-title {
  color: rgba(228,226,221,.58);
  font-size: 9px;
  letter-spacing: .08em;
}

.inventory-grid-tactical .inv-slot .item-class {
  position: absolute;
  left: 6px;
  bottom: 4px;
  color: rgba(244,197,66,.42);
  font-size: 8px;
  text-transform: uppercase;
}

.inventory-grid-tactical .inv-slot .amount {
  right: 7px;
  bottom: 3px;
  color: var(--text);
  font-size: 18px;
  text-shadow: 0 0 8px #000;
}

.tactical-quick-access {
  display: grid;
  gap: 8px;
  border-top: 1px solid rgba(217,154,20,.24);
  padding-top: 12px;
}

.quick-access-mirror {
  display: grid;
  grid-template-columns: repeat(6, minmax(46px, 1fr));
  gap: 6px;
}

.quick-access-cell {
  min-height: 54px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(217,154,20,.26);
  background: rgba(0,0,0,.36);
  position: relative;
  color: rgba(228,226,221,.34);
}

.quick-access-cell.has-item {
  background: radial-gradient(circle at 50% 50%, rgba(217,154,20,.12), rgba(0,0,0,.55));
}

.quick-access-cell button,
.quick-access-cell > div {
  all: unset;
  cursor: pointer;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
}

.quick-access-cell b {
  position: absolute;
  left: 5px;
  top: 3px;
  color: var(--accent-2);
  font-size: 10px;
}

.quick-access-cell img { max-width: 34px; max-height: 34px; object-fit: contain; }
.quick-access-cell span { position: absolute; right: 5px; bottom: 3px; color: var(--text); font-size: 11px; }

@media (max-width: 1280px) {
  .game-body[data-screen="equip"] .main-layout {
    grid-template-columns: minmax(300px, 380px) minmax(420px, 1fr);
  }
  .inventory-grid.inventory-grid-tactical {
    grid-template-columns: repeat(6, minmax(54px, 1fr));
    background-size: calc(100% / 6) 74px, calc(100% / 6) 74px, auto;
  }
}

@media (max-width: 860px) {
  .game-body[data-screen="equip"] .main-layout {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .game-body[data-screen="equip"] .center-column,
  .game-body[data-screen="equip"] .left-column,
  .game-body[data-screen="equip"] .right-column {
    grid-column: auto;
    grid-row: auto;
  }
  .game-body[data-screen="equip"] .right-column {
    min-height: auto;
    overflow: visible;
  }
  .game-body[data-screen="equip"] .paperdoll {
    min-height: 360px;
    grid-template-columns: 72px 1fr 72px;
  }
  .game-body[data-screen="equip"] .operator-silhouette {
    width: 220px;
    transform: scale(.9);
  }
  .inventory-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inventory-grid.inventory-grid-tactical {
    grid-template-columns: repeat(4, minmax(54px, 1fr));
    background-size: calc(100% / 4) 72px, calc(100% / 4) 72px, auto;
    grid-auto-rows: 72px;
    min-height: 360px;
  }
  .quick-access-mirror { grid-template-columns: repeat(3, minmax(54px, 1fr)); }
}

/* v11: inventory rewrite closer to legacy WAP/Stalker screen */
.game-body[data-screen="equip"] .main-layout {
  grid-template-columns: minmax(360px, 440px) minmax(560px, 1fr) !important;
  grid-template-rows: auto auto !important;
  align-items: start;
}

.game-body[data-screen="equip"] .center-column {
  grid-column: 1 !important;
  grid-row: 1 !important;
  order: 1;
}

.game-body[data-screen="equip"] .left-column {
  grid-column: 1 !important;
  grid-row: 2 !important;
  order: 2;
  grid-template-rows: auto auto !important;
}

.game-body[data-screen="equip"] .right-column {
  grid-column: 2 !important;
  grid-row: 1 / span 2 !important;
  order: 3;
  min-height: 0 !important;
  grid-template-rows: auto auto auto minmax(420px, auto) auto auto !important;
}

.game-body[data-screen="equip"] .equipment-list {
  padding: 12px;
}

.game-body[data-screen="equip"] .weapon-slots {
  gap: 7px;
}

.game-body[data-screen="equip"] .weapon-slot {
  min-height: 58px;
  grid-template-columns: 24px 62px 1fr auto;
  padding: 6px 8px;
}

.game-body[data-screen="equip"] .weapon-slot .slot-num {
  width: 20px;
  height: 20px;
  font-size: 11px;
}

.game-body[data-screen="equip"] .item-icon {
  max-width: 60px;
  max-height: 42px;
}

.game-body[data-screen="equip"] .ammo {
  font-size: 18px;
}

.game-body[data-screen="equip"] .quickbar {
  grid-template-columns: repeat(8, minmax(34px, 1fr));
  margin-top: 8px;
}

.game-body[data-screen="equip"] .quick-slot {
  min-height: 38px;
}

.game-body[data-screen="equip"] .quick-slot img {
  max-width: 26px;
  max-height: 26px;
}

.game-body[data-screen="equip"] .vitals {
  grid-template-columns: 1fr !important;
  gap: 7px;
  padding: 10px 12px;
}

.game-body[data-screen="equip"] .vital-extra {
  display: none !important;
}

.game-body[data-screen="equip"] .vital-row {
  grid-template-columns: 54px 1fr auto;
  gap: 8px;
  min-height: 30px;
  align-items: center;
}

.game-body[data-screen="equip"] .vital-icon {
  font-size: 18px;
  color: var(--accent-2);
  opacity: .72;
}

.game-body[data-screen="equip"] .vital-name {
  text-transform: uppercase;
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .12em;
}

.game-body[data-screen="equip"] .vital-percent {
  font-size: 12px;
}

.game-body[data-screen="equip"] .vital-bar {
  height: 5px;
  grid-column: 2 / 4;
  background: rgba(255,255,255,.18);
}

.game-body[data-screen="equip"] .paperdoll {
  min-height: 360px;
  grid-template-columns: 74px minmax(160px, 1fr) 74px;
}

.game-body[data-screen="equip"] .operator-silhouette {
  width: min(218px, 44vw);
  height: 315px;
}

.game-body[data-screen="equip"] .operator-head { top: 16px; left: 83px; width: 56px; height: 52px; }
.game-body[data-screen="equip"] .operator-body { top: 68px; left: 52px; width: 116px; height: 156px; }
.game-body[data-screen="equip"] .operator-gun { top: 96px; left: 25px; height: 182px; }
.game-body[data-screen="equip"] .operator-leg { top: 216px; height: 94px; }
.game-body[data-screen="equip"] .operator-leg.left { left: 69px; }
.game-body[data-screen="equip"] .operator-leg.right { left: 119px; }

.game-body[data-screen="equip"] .armor-slot {
  width: 58px;
  height: 58px;
}

.game-body[data-screen="equip"] .armor-slot img {
  max-width: 48px;
  max-height: 48px;
}

.game-body[data-screen="equip"] .inventory-terminal {
  padding: 12px;
}

.game-body[data-screen="equip"] .inventory-head-tactical {
  padding-bottom: 8px;
}

.game-body[data-screen="equip"] .inventory-head-tactical h2 {
  font-size: clamp(24px, 3vw, 30px);
  letter-spacing: .18em;
}

.game-body[data-screen="equip"] .filter {
  font-size: 14px;
  color: var(--muted);
}

.game-body[data-screen="equip"] .filter-btn {
  padding: 8px 20px;
}

.game-body[data-screen="equip"] .inventory-tabs {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  background: rgba(0,0,0,.42);
}

.game-body[data-screen="equip"] .inv-tab {
  min-height: 34px;
  padding: 7px 4px;
  font-size: 11px;
  line-height: 1;
  color: var(--muted);
  background: rgba(255,255,255,.025);
  box-shadow: none;
}

.game-body[data-screen="equip"] .inv-tab:hover {
  color: var(--muted);
  background: rgba(255,255,255,.025);
  box-shadow: none;
}

.game-body[data-screen="equip"] .inv-tab.active {
  color: #0c0a05;
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  box-shadow: 0 0 12px rgba(217,154,20,.22);
}

@media (hover:hover) and (pointer:fine) {
  .game-body[data-screen="equip"] .inv-tab:hover {
    color: var(--accent-2);
    background: rgba(217,154,20,.12);
  }
  .game-body[data-screen="equip"] .inv-tab.active:hover {
    color: #0c0a05;
    background: linear-gradient(180deg, var(--accent-2), var(--accent));
  }
}

.game-body[data-screen="equip"] .inventory-weight-line {
  grid-template-columns: 52px minmax(120px, 1fr) auto;
  gap: 10px;
  font-size: 11px;
}

.game-body[data-screen="equip"] .inventory-weight-bar {
  height: 8px;
}

.game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
  grid-template-columns: repeat(5, minmax(58px, 1fr)) !important;
  grid-auto-rows: 70px !important;
  min-height: 0 !important;
  max-height: 520px;
  overflow: auto;
  background-size: calc(100% / 5) 70px, calc(100% / 5) 70px, auto !important;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot {
  min-height: 70px;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot.wide {
  grid-column: span 2;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot img {
  max-height: 48px;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot .inv-title {
  font-size: 9px;
  top: 5px;
  left: 6px;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot .item-class {
  font-size: 8px;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot .amount {
  font-size: 16px;
}

.game-body[data-screen="equip"] .tactical-quick-access {
  margin-top: 2px;
}

.game-body[data-screen="equip"] .quick-access-mirror {
  grid-template-columns: repeat(6, minmax(46px, 1fr));
}

.game-body[data-screen="equip"] .players-near {
  padding-top: 10px;
}

@media (max-width: 860px) {
  .game-body[data-screen="equip"] .main-layout {
    display: flex !important;
    flex-direction: column;
    gap: 12px;
  }
  .game-body[data-screen="equip"] .center-column { order: 1; width: 100%; }
  .game-body[data-screen="equip"] .left-column { order: 2; width: 100%; }
  .game-body[data-screen="equip"] .right-column { order: 3; width: 100%; }

  .game-body[data-screen="equip"] .paperdoll {
    min-height: 338px;
    grid-template-columns: 58px 1fr 58px;
  }

  .game-body[data-screen="equip"] .paperdoll::after {
    display: none;
  }

  .game-body[data-screen="equip"] .operator-silhouette {
    width: 185px;
    height: 292px;
    transform: none;
  }

  .game-body[data-screen="equip"] .operator-head { top: 14px; left: 72px; width: 48px; height: 46px; }
  .game-body[data-screen="equip"] .operator-body { top: 60px; left: 45px; width: 100px; height: 142px; }
  .game-body[data-screen="equip"] .operator-gun { top: 88px; left: 22px; height: 166px; }
  .game-body[data-screen="equip"] .operator-leg { top: 194px; height: 88px; }
  .game-body[data-screen="equip"] .operator-leg.left { left: 59px; }
  .game-body[data-screen="equip"] .operator-leg.right { left: 103px; }

  .game-body[data-screen="equip"] .armor-slot {
    width: 48px;
    height: 48px;
  }
  .game-body[data-screen="equip"] .armor-slot img {
    max-width: 40px;
    max-height: 40px;
  }

  .game-body[data-screen="equip"] .weapon-slot {
    min-height: 54px;
    grid-template-columns: 22px 58px 1fr auto;
  }

  .game-body[data-screen="equip"] .vitals {
    border-color: rgba(217,154,20,.28);
  }

  .game-body[data-screen="equip"] .inventory-tabs {
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  }

  .game-body[data-screen="equip"] .inv-tab {
    font-size: 9px;
    letter-spacing: .04em;
    padding: 8px 2px;
  }

  .game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
    grid-template-columns: repeat(4, minmax(58px, 1fr)) !important;
    grid-auto-rows: 68px !important;
    background-size: calc(100% / 4) 68px, calc(100% / 4) 68px, auto !important;
    max-height: 470px;
  }

  .game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot {
    min-height: 68px;
  }

  .game-body[data-screen="equip"] .quick-access-mirror {
    grid-template-columns: repeat(3, minmax(54px, 1fr));
  }
}

/* v12: legacy show_char.php 11-slot profile, no quick panels */
.game-body[data-screen="equip"] .main-layout {
  grid-template-columns: minmax(330px, 380px) minmax(560px, 1fr) !important;
  grid-template-rows: auto auto !important;
}

.game-body[data-screen="equip"] .equipment-list {
  display: none !important;
}

.game-body[data-screen="equip"] .quickbar,
.game-body[data-screen="equip"] .tactical-quick-access {
  display: none !important;
}

.game-body[data-screen="equip"] .center-column {
  grid-column: 1 !important;
  grid-row: 1 !important;
  display: block;
}

.game-body[data-screen="equip"] .left-column {
  grid-column: 1 !important;
  grid-row: 2 !important;
  display: block;
}

.game-body[data-screen="equip"] .right-column {
  grid-column: 2 !important;
  grid-row: 1 / span 2 !important;
}

.game-body[data-screen="equip"] .paperdoll {
  min-height: 335px !important;
  display: grid !important;
  place-items: center;
  padding: 14px;
  overflow: hidden;
  background:
    radial-gradient(circle at 52% 48%, rgba(217,154,20,.09), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.04), rgba(0,0,0,.14)),
    rgba(7,10,10,.9);
}

.game-body[data-screen="equip"] .paperdoll::before,
.game-body[data-screen="equip"] .paperdoll::after {
  display: none !important;
}

.legacy-profile {
  width: 292px;
  max-width: 100%;
  display: grid;
  grid-template-columns: 70px 130px 70px;
  grid-template-rows: 50px 40px 70px 60px 35px;
  gap: 4px;
  justify-content: center;
  align-content: center;
  position: relative;
}

.legacy-equip-slot {
  border: 1px solid rgba(217,154,20,.38);
  background:
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(0,0,0,.22)),
    var(--slot-bg) center / contain no-repeat,
    rgba(0,0,0,.54);
  padding: 0;
  display: grid;
  place-items: center;
  cursor: pointer;
  min-width: 0;
  min-height: 0;
  opacity: .92;
}

.legacy-equip-slot.empty {
  opacity: .62;
  filter: grayscale(.45);
}

.legacy-equip-slot.filled {
  background:
    radial-gradient(circle at 50% 45%, rgba(244,197,66,.12), transparent 65%),
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(0,0,0,.32)),
    rgba(0,0,0,.7);
  border-color: rgba(244,197,66,.66);
}

.legacy-equip-slot:hover {
  border-color: var(--accent-2);
  box-shadow: inset 0 0 14px rgba(217,154,20,.12), 0 0 10px rgba(217,154,20,.12);
}

.legacy-equip-slot img {
  max-width: 96%;
  max-height: 96%;
  object-fit: contain;
  filter: drop-shadow(0 6px 8px rgba(0,0,0,.75));
}

.legacy-slot-ammo1 { grid-column: 1; grid-row: 1; }
.legacy-slot-ammo2 { grid-column: 1; grid-row: 2; }
.legacy-slot-ammo3 { grid-column: 1; grid-row: 3; }
.legacy-slot-ammo4 { grid-column: 1; grid-row: 4; }
.legacy-slot-ammo5 { grid-column: 1; grid-row: 5; }
.legacy-slot-weapon { grid-column: 2; grid-row: 1; }
.legacy-slot-head { grid-column: 3; grid-row: 1; }
.legacy-slot-gloves { grid-column: 3; grid-row: 2; }
.legacy-slot-body { grid-column: 3; grid-row: 3; }
.legacy-slot-legs { grid-column: 3; grid-row: 4; }
.legacy-slot-boots { grid-column: 3; grid-row: 5; }

.legacy-avatar {
  grid-column: 2;
  grid-row: 2 / 6;
  border: 1px solid rgba(217,154,20,.35);
  background:
    radial-gradient(circle at 50% 58%, rgba(217,154,20,.12), transparent 62%),
    rgba(0,0,0,.52);
  display: grid;
  place-items: end center;
  overflow: hidden;
}

.legacy-avatar img {
  width: 130px;
  height: 211px;
  object-fit: contain;
  object-position: center bottom;
  display: block;
  opacity: .96;
}

.game-body[data-screen="equip"] .vitals {
  margin-top: 12px;
  grid-template-columns: 1fr !important;
  padding: 10px 12px !important;
  gap: 8px !important;
}

.game-body[data-screen="equip"] .right-column {
  grid-template-rows: auto auto auto minmax(360px, auto) auto !important;
}

.game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
  grid-template-columns: repeat(6, minmax(54px, 1fr)) !important;
  background-size: calc(100% / 6) 66px, calc(100% / 6) 66px, auto !important;
  grid-auto-rows: 66px !important;
  max-height: 500px;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot {
  min-height: 66px;
}

.game-body[data-screen="equip"] .players-near {
  margin-top: 10px;
}

@media (max-width: 860px) {
  .game-body[data-screen="equip"] .main-layout {
    display: flex !important;
    flex-direction: column;
    gap: 12px;
  }
  .game-body[data-screen="equip"] .paperdoll {
    min-height: 326px !important;
    padding: 12px 8px;
  }
  .legacy-profile {
    width: min(292px, 100%);
    transform-origin: center top;
  }
  .game-body[data-screen="equip"] .right-column {
    grid-template-rows: auto auto auto minmax(360px, auto) auto !important;
  }
  .game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
    grid-template-columns: repeat(4, minmax(58px, 1fr)) !important;
    background-size: calc(100% / 4) 66px, calc(100% / 4) 66px, auto !important;
    grid-auto-rows: 66px !important;
    max-height: 430px;
  }
}

/* v13: fix legacy profile centering after old paperdoll 3-column rules */
.game-body[data-screen="equip"] .paperdoll {
  grid-template-columns: 1fr !important;
  grid-template-rows: 1fr !important;
  justify-items: center !important;
  align-items: center !important;
}

.game-body[data-screen="equip"] .legacy-profile {
  justify-self: center !important;
  align-self: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

@media (max-width: 860px) {
  .game-body[data-screen="equip"] .paperdoll {
    grid-template-columns: 1fr !important;
    grid-template-rows: 1fr !important;
    justify-items: center !important;
    align-items: center !important;
  }
  .game-body[data-screen="equip"] .legacy-profile {
    margin-inline: auto !important;
  }
}

/* v14: legacy DB item catalog from dump */
.catalog-layout {
  margin: 0 auto;
  width: min(1180px, calc(100vw - 28px));
  min-height: min(760px, calc(100vh - 150px));
  padding: 14px;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: 12px;
}

.game-body:not([data-screen="shop"]) .catalog-layout,
.game-body[data-screen="quests"] .catalog-layout {
  display: none !important;
}

.game-body[data-screen="shop"] .game-shell {
  grid-template-rows: auto auto;
}

.game-body[data-screen="shop"] .bottom-layout,
.game-body[data-screen="shop"] .main-layout {
  display: none !important;
}

.catalog-tabs {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  border: 1px solid rgba(217,154,20,.36);
  background: rgba(0,0,0,.42);
}

.catalog-tab {
  border: 0;
  border-right: 1px solid rgba(217,154,20,.22);
  background: rgba(255,255,255,.025);
  color: var(--muted);
  padding: 9px 6px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 800;
  cursor: pointer;
}
.catalog-tab:last-child { border-right: 0; }
.catalog-tab.active {
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #0c0a05;
}
@media (hover:hover) and (pointer:fine) {
  .catalog-tab:hover { color: var(--accent-2); background: rgba(217,154,20,.12); }
  .catalog-tab.active:hover { color: #0c0a05; background: linear-gradient(180deg, var(--accent-2), var(--accent)); }
}

.legacy-catalog-grid {
  min-height: 0;
  overflow: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  align-content: start;
  gap: 8px;
  padding: 2px 4px 8px 0;
}

.catalog-item-card {
  min-height: 154px;
  border: 1px solid rgba(255,255,255,.1);
  background:
    radial-gradient(circle at 50% 30%, rgba(255,255,255,.08), transparent 58%),
    rgba(0,0,0,.44);
  padding: 8px;
  display: grid;
  grid-template-rows: 70px auto auto auto;
  gap: 5px;
}
.catalog-item-card.type-weapon { border-bottom-color: rgba(255,88,88,.42); }
.catalog-item-card.type-armor { border-bottom-color: rgba(128,190,255,.42); }
.catalog-item-card.type-ammo { border-bottom-color: rgba(244,197,66,.42); }
.catalog-item-card.type-gear { border-bottom-color: rgba(180,180,180,.32); }
.catalog-item-card.type-medicine { border-bottom-color: rgba(56,246,108,.42); }

.catalog-icon {
  display: grid;
  place-items: center;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
}
.catalog-icon img { max-width: 96%; max-height: 64px; object-fit: contain; filter: drop-shadow(0 7px 8px rgba(0,0,0,.7)); }
.catalog-name { color: var(--text); font-size: 12px; font-weight: 800; text-transform: uppercase; line-height: 1.2; }
.catalog-meta { color: rgba(244,197,66,.56); font-size: 10px; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.catalog-stats { display: flex; flex-wrap: wrap; gap: 4px; }
.catalog-stats span {
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.32);
  color: var(--muted);
  font-size: 9px;
  padding: 2px 4px;
}

@media (max-width: 860px) {
  .catalog-layout { width: calc(100vw - 20px); padding: 10px; }
  .catalog-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .catalog-tab { font-size: 10px; padding: 8px 3px; }
  .legacy-catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-item-card { min-height: 142px; grid-template-rows: 62px auto auto auto; }
  .catalog-icon img { max-height: 56px; }
}

/* v19: server-authoritative inventory actions */
.inventory-grid-tactical .inv-slot {
  overflow: hidden;
}

.inventory-grid-tactical .inv-slot .inv-item-inner {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  position: relative;
  padding: 14px 4px 16px;
  pointer-events: none;
}

.inventory-grid-tactical .inv-slot .item-actions {
  position: absolute;
  inset: auto 3px 3px 3px;
  display: flex;
  gap: 3px;
  justify-content: center;
  opacity: 0;
  transform: translateY(5px);
  transition: opacity .12s ease, transform .12s ease;
  z-index: 4;
}

.inventory-grid-tactical .inv-slot:hover .item-actions,
.inventory-grid-tactical .inv-slot:focus-within .item-actions {
  opacity: 1;
  transform: none;
}

.mini-action {
  border: 1px solid rgba(244,197,66,.48);
  background: rgba(0,0,0,.72);
  color: var(--accent-2);
  font-size: 8px;
  line-height: 1;
  padding: 4px 5px;
  text-transform: uppercase;
  letter-spacing: .05em;
  cursor: pointer;
}

.mini-action:hover,
.mini-action:active {
  background: var(--accent-2);
  color: #0c0a05;
}

.mini-action.danger {
  border-color: rgba(255,88,88,.45);
  color: #ff7b64;
}

.mini-action.danger:hover,
.mini-action.danger:active {
  background: #ff7b64;
  color: #0c0a05;
}

.slot-action-hint {
  position: absolute;
  left: 2px;
  right: 2px;
  bottom: 2px;
  padding: 2px 0;
  background: rgba(0,0,0,.78);
  color: var(--accent-2);
  font-size: 8px;
  line-height: 1;
  text-transform: uppercase;
  opacity: 0;
  transition: opacity .12s ease;
  pointer-events: none;
}

.legacy-equip-slot:hover .slot-action-hint,
.legacy-equip-slot:focus .slot-action-hint {
  opacity: 1;
}

@media (hover: none), (pointer: coarse) {
  .inventory-grid-tactical .inv-slot .item-actions {
    opacity: 1;
    transform: none;
  }
  .mini-action {
    font-size: 7px;
    padding: 3px 4px;
  }
  .inventory-grid-tactical .inv-slot img {
    max-height: 42px;
  }
}

/* v20: contextual item menu instead of inline buttons */
.inventory-grid-tactical .inv-slot .item-actions {
  display: none !important;
}

.inventory-grid-tactical .inv-item-button {
  all: unset;
  cursor: pointer;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  position: relative;
  padding: 14px 4px 16px;
  box-sizing: border-box;
}

.inventory-grid-tactical .inv-item-button:focus-visible,
.inventory-grid-tactical .inv-slot.inv-selected,
.legacy-equip-slot.inv-selected {
  outline: 1px solid var(--accent-2);
  outline-offset: -1px;
  box-shadow: inset 0 0 16px rgba(217,154,20,.18), 0 0 12px rgba(217,154,20,.18);
}

.item-context-menu {
  position: fixed;
  z-index: 5000;
  width: min(270px, calc(100vw - 16px));
  border: 1px solid rgba(244,197,66,.72);
  background:
    linear-gradient(180deg, rgba(255,255,255,.045), transparent 36%),
    radial-gradient(circle at 50% 0%, rgba(217,154,20,.18), transparent 56%),
    rgba(5,7,7,.98);
  box-shadow: 0 18px 36px rgba(0,0,0,.72), inset 0 0 0 1px rgba(255,255,255,.035);
  color: var(--text);
  padding: 8px;
  backdrop-filter: blur(8px);
}

.item-menu-head {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(217,154,20,.24);
}

.item-menu-head img {
  width: 44px;
  height: 44px;
  object-fit: contain;
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.1);
}

.item-menu-head b {
  display: block;
  color: var(--accent-2);
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.item-menu-head span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.25;
}

.item-menu-close {
  border: 1px solid rgba(217,154,20,.38);
  background: rgba(0,0,0,.45);
  color: var(--text);
  width: 28px;
  height: 28px;
  cursor: pointer;
}

.item-menu-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  margin-top: 8px;
}

.item-menu-actions button {
  border: 1px solid rgba(217,154,20,.44);
  background: rgba(0,0,0,.55);
  color: var(--accent-2);
  min-height: 34px;
  padding: 7px 6px;
  text-transform: uppercase;
  letter-spacing: .07em;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}

.item-menu-actions button:hover,
.item-menu-actions button:active {
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #0c0a05;
}

.item-menu-actions button.danger {
  color: #ff7b64;
  border-color: rgba(255,88,88,.46);
}

.item-menu-actions button.danger:hover,
.item-menu-actions button.danger:active {
  background: #ff7b64;
  color: #0c0a05;
}

.item-menu-actions button:disabled {
  opacity: .35;
  cursor: not-allowed;
  color: var(--muted);
}

@media (max-width: 520px) {
  .item-context-menu {
    width: min(250px, calc(100vw - 14px));
    padding: 7px;
  }
  .item-menu-actions button {
    min-height: 32px;
    font-size: 9px;
  }
}

/* v21: item menu icon and ammo/usable polish */
.item-menu-head {
  grid-template-columns: 86px minmax(0, 1fr) auto;
}

.item-menu-head img {
  width: 80px !important;
  height: 50px !important;
  object-fit: contain !important;
  object-position: center !important;
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.08), rgba(0,0,0,.82)) !important;
  filter: none !important;
  -webkit-filter: none !important;
  mix-blend-mode: normal !important;
}

@media (max-width: 520px) {
  .item-menu-head {
    grid-template-columns: 72px minmax(0, 1fr) auto;
  }
  .item-menu-head img {
    width: 66px !important;
    height: 46px !important;
  }
}

/* v22: jobs/search/loot panel */
.jobs-panel {
  margin-top: 12px;
}
.jobs-panel[hidden] { display: none !important; }
.job-card {
  border: 1px solid rgba(217,154,20,.34);
  background:
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 45%),
    rgba(0,0,0,.48);
  padding: 10px;
  display: grid;
  gap: 8px;
}
.job-card.completed {
  border-color: rgba(244,197,66,.78);
  box-shadow: inset 0 0 16px rgba(217,154,20,.12);
}
.job-top {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--text);
  font-size: 12px;
}
.job-top b { color: var(--accent-2); }
.job-progress {
  height: 8px;
  border: 1px solid rgba(217,154,20,.34);
  background: rgba(255,255,255,.1);
  overflow: hidden;
}
.job-progress > div {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
  box-shadow: 0 0 12px rgba(244,197,66,.3);
  transition: width .2s ease;
}
.job-meta {
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .08em;
}
.job-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.job-actions .z-btn { padding: 7px 10px; font-size: 11px; }

/* v23: map action busy overlay */
.map-panel { position: relative; }
.map-busy-overlay {
  position: absolute;
  inset: 12px;
  z-index: 80;
  display: grid;
  place-items: center;
  background: rgba(0,0,0,.62);
  backdrop-filter: blur(2px);
  border: 1px solid rgba(217,154,20,.28);
}
.map-busy-overlay[hidden] { display: none !important; }
.map-busy-card {
  width: min(340px, calc(100% - 24px));
  border: 1px solid rgba(244,197,66,.72);
  background:
    radial-gradient(circle at 50% 0%, rgba(217,154,20,.16), transparent 60%),
    rgba(5,7,7,.96);
  box-shadow: 0 18px 34px rgba(0,0,0,.7), inset 0 0 0 1px rgba(255,255,255,.04);
  padding: 18px;
  text-align: center;
}
.busy-title {
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: 22px;
  font-weight: 800;
}
.busy-subtitle {
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: .08em;
}
.busy-progress {
  height: 10px;
  margin-top: 16px;
  border: 1px solid rgba(217,154,20,.42);
  background: rgba(255,255,255,.09);
  overflow: hidden;
}
.busy-progress > div {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
  box-shadow: 0 0 14px rgba(244,197,66,.42);
  transition: width .16s ease;
}
.busy-label {
  margin-top: 9px;
  color: var(--text);
  font-size: 12px;
  letter-spacing: .12em;
}
@media (max-width: 520px) {
  .map-busy-overlay { inset: 8px; }
  .map-busy-card { padding: 14px; }
  .busy-title { font-size: 18px; }
}

/* v24: overlay belongs to map only, not whole map panel */
.world-map-wrap {
  position: relative;
}
.world-map-wrap .map-busy-overlay {
  inset: 0 !important;
  border: 1px solid rgba(217,154,20,.35);
}
.map-panel > .map-busy-overlay {
  display: none !important;
}

/* v26: desktop tactical map layout + live job progress readability */
.job-progress-label {
  margin-top: 4px;
  color: var(--accent-2);
  font-size: 10px;
  letter-spacing: .14em;
  text-align: right;
}
.job-progress > div,
.busy-progress > div {
  transition: width .65s linear;
}

@media (min-width: 1180px) {
  .game-body[data-screen="home"] .game-shell,
  .game-body[data-screen="map"] .game-shell {
    max-width: 1360px;
    margin: 0 auto;
    grid-template-rows: auto auto minmax(210px, 1fr) !important;
    gap: 14px;
  }

  .game-body[data-screen="home"] .main-layout,
  .game-body[data-screen="map"] .main-layout {
    width: min(1120px, 100%);
    justify-self: center;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .game-body[data-screen="home"] .center-column,
  .game-body[data-screen="map"] .center-column {
    display: block !important;
    width: 100%;
  }

  .game-body[data-screen="home"] .map-panel,
  .game-body[data-screen="map"] .map-panel {
    display: grid;
    grid-template-columns: minmax(560px, 740px) minmax(290px, 1fr);
    grid-auto-rows: auto;
    align-items: start;
    gap: 10px 14px;
    padding: 12px;
  }

  .game-body[data-screen="home"] .map-header,
  .game-body[data-screen="map"] .map-header {
    grid-column: 1 / -1;
  }

  .game-body[data-screen="home"] .world-map-wrap,
  .game-body[data-screen="map"] .world-map-wrap {
    grid-column: 1;
    grid-row: 2 / span 6;
    width: 100%;
  }

  .game-body[data-screen="home"] .world-map.legacy-world-map,
  .game-body[data-screen="map"] .world-map.legacy-world-map {
    width: 100%;
    max-width: 740px;
    margin: 0;
    padding: 4px;
  }

  .game-body[data-screen="home"] .cell-enemies,
  .game-body[data-screen="map"] .cell-enemies,
  .game-body[data-screen="home"] .battle-panel,
  .game-body[data-screen="map"] .battle-panel,
  .game-body[data-screen="home"] .jobs-panel,
  .game-body[data-screen="map"] .jobs-panel,
  .game-body[data-screen="home"] .map-hint,
  .game-body[data-screen="map"] .map-hint,
  .game-body[data-screen="home"] .map-controls,
  .game-body[data-screen="map"] .map-controls {
    grid-column: 2;
    min-width: 0;
  }

  .game-body[data-screen="home"] .cell-enemies,
  .game-body[data-screen="map"] .cell-enemies {
    min-height: 92px;
  }

  .game-body[data-screen="home"] .battle-panel,
  .game-body[data-screen="map"] .battle-panel {
    max-height: 520px;
    overflow: auto;
  }

  .game-body[data-screen="home"] .map-controls,
  .game-body[data-screen="map"] .map-controls {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .game-body[data-screen="home"] .map-controls .z-btn,
  .game-body[data-screen="map"] .map-controls .z-btn {
    min-width: 0;
    padding: 10px 8px;
    font-size: 12px;
  }

  .game-body[data-screen="home"] .legacy-tile-title,
  .game-body[data-screen="map"] .legacy-tile-title {
    font-size: 10px;
    letter-spacing: .04em;
  }

  .game-body[data-screen="home"] .legacy-tile-coord,
  .game-body[data-screen="map"] .legacy-tile-coord {
    font-size: 9px;
  }

  .game-body[data-screen="home"] .bottom-layout,
  .game-body[data-screen="map"] .bottom-layout {
    width: min(1120px, 100%);
    justify-self: center;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px;
    min-height: 210px;
  }

  .game-body[data-screen="home"] .chat-panel,
  .game-body[data-screen="map"] .chat-panel,
  .game-body[data-screen="home"] .messages-panel,
  .game-body[data-screen="map"] .messages-panel {
    min-height: 210px;
    max-height: 300px;
  }
}

@media (min-width: 1500px) {
  .game-body[data-screen="home"] .game-shell,
  .game-body[data-screen="map"] .game-shell {
    max-width: 1480px;
  }

  .game-body[data-screen="home"] .main-layout,
  .game-body[data-screen="map"] .main-layout,
  .game-body[data-screen="home"] .bottom-layout,
  .game-body[data-screen="map"] .bottom-layout {
    width: min(1280px, 100%);
  }

  .game-body[data-screen="home"] .map-panel,
  .game-body[data-screen="map"] .map-panel {
    grid-template-columns: minmax(620px, 800px) minmax(330px, 1fr);
  }

  .game-body[data-screen="home"] .world-map.legacy-world-map,
  .game-body[data-screen="map"] .world-map.legacy-world-map {
    max-width: 800px;
  }
}

/* v28: keep legacy map tiles at native size on desktop */
.world-map.legacy-world-map.legacy-native-size {
  width: max-content !important;
  max-width: none !important;
}
.world-map.legacy-world-map.legacy-native-size .map-cell.legacy-tile {
  width: 135px;
  height: 100px;
  aspect-ratio: auto;
}
.world-map.legacy-world-map.legacy-native-size .legacy-tile-img {
  width: 135px;
  height: 100px;
}

@media (min-width: 1180px) {
  .game-body[data-screen="home"] .map-panel,
  .game-body[data-screen="map"] .map-panel {
    grid-template-columns: 430px minmax(360px, 1fr) !important;
  }

  .game-body[data-screen="home"] .world-map-wrap,
  .game-body[data-screen="map"] .world-map-wrap {
    width: 417px;
    justify-self: start;
  }

  .game-body[data-screen="home"] .world-map.legacy-world-map.legacy-native-size,
  .game-body[data-screen="map"] .world-map.legacy-world-map.legacy-native-size {
    margin: 0;
  }

  .game-body[data-screen="home"] .map-panel,
  .game-body[data-screen="map"] .map-panel,
  .game-body[data-screen="home"] .bottom-layout,
  .game-body[data-screen="map"] .bottom-layout,
  .game-body[data-screen="home"] .main-layout,
  .game-body[data-screen="map"] .main-layout {
    width: min(1040px, 100%) !important;
  }
}

@media (min-width: 1500px) {
  .game-body[data-screen="home"] .map-panel,
  .game-body[data-screen="map"] .map-panel {
    grid-template-columns: 430px minmax(380px, 1fr) !important;
  }

  .game-body[data-screen="home"] .world-map.legacy-world-map,
  .game-body[data-screen="map"] .world-map.legacy-world-map {
    max-width: none;
  }
}

/* v29: inventory compact polish, no ghost hover action blocks */
.slot-action-hint,
.inventory-grid-tactical .inv-slot .item-actions {
  display: none !important;
}

.game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
  grid-auto-rows: 86px !important;
  background-size: calc(100% / 5) 86px, calc(100% / 5) 86px, auto !important;
}

.game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot {
  min-height: 86px !important;
}

.inventory-grid-tactical .inv-item-button {
  padding: 18px 5px 22px !important;
  overflow: hidden;
}

.inventory-grid-tactical .inv-slot .inv-title {
  top: 5px;
  left: 6px;
  right: 6px;
  max-width: none;
  font-size: 8px;
}

.inventory-grid-tactical .inv-slot .item-class {
  left: 6px;
  bottom: 6px;
  font-size: 7px;
}

.inventory-grid-tactical .inv-slot .amount {
  right: 5px !important;
  bottom: 5px !important;
  z-index: 6;
  min-width: 22px;
  padding: 1px 4px;
  text-align: right;
  border-radius: 2px;
  background: rgba(0,0,0,.82);
  color: #fff;
  font-size: 14px !important;
  line-height: 1.05;
  text-shadow: 0 1px 4px #000;
}

.inventory-grid-tactical .inv-slot img {
  max-height: 46px !important;
  max-width: 72% !important;
}

@media (min-width: 1180px) {
  .game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
    grid-template-columns: repeat(6, minmax(74px, 1fr)) !important;
    background-size: calc(100% / 6) 86px, calc(100% / 6) 86px, auto !important;
  }
}

@media (max-width: 860px) {
  .game-body[data-screen="equip"] .inventory-grid.inventory-grid-tactical {
    grid-auto-rows: 78px !important;
    background-size: calc(100% / 4) 78px, calc(100% / 4) 78px, auto !important;
  }
  .game-body[data-screen="equip"] .inventory-grid-tactical .inv-slot {
    min-height: 78px !important;
  }
  .inventory-grid-tactical .inv-slot img {
    max-height: 42px !important;
  }
}

/* v29: interior room screen */
.room-view-map {
  display: block !important;
  padding: 0 !important;
  min-height: 300px;
  border: 1px solid rgba(217,154,20,.28);
  background: rgba(0,0,0,.62);
}
.room-view-card {
  position: relative;
  min-height: 300px;
  overflow: hidden;
  background: #050606;
}
.room-bg {
  width: 100%;
  height: 100%;
  min-height: 300px;
  object-fit: cover;
  display: block;
  filter: saturate(.86) contrast(1.05) brightness(.68);
}
.room-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,.72), rgba(0,0,0,.24) 55%, rgba(0,0,0,.7)), radial-gradient(circle at 50% 45%, rgba(217,154,20,.08), transparent 50%);
  pointer-events: none;
}
.room-info {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 14px;
  border: 1px solid rgba(217,154,20,.38);
  background: rgba(5,7,7,.86);
  padding: 12px;
  display: grid;
  gap: 8px;
}
.room-info h3 {
  margin: 0;
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: 18px;
}
.room-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 12px;
  color: var(--muted);
  font-size: 12px;
}
.room-stats b { color: var(--text); }
.room-writing {
  color: var(--accent-2);
  border-left: 2px solid rgba(244,197,66,.55);
  padding-left: 8px;
  font-size: 12px;
}
.room-outside {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}
.room-outside b { color: var(--accent-2); }

@media (min-width: 1180px) {
  .room-view-map,
  .room-view-card,
  .room-bg {
    min-height: 300px;
  }
}

/* v34: skills/mods/stats screen */
.skills-terminal { display: none; }
.game-body[data-screen="stats"] .right-column {
  padding: 14px;
  overflow: auto;
  display: block !important;
}
.game-body[data-screen="stats"] .right-column > :not(.skills-terminal) {
  display: none !important;
}
.game-body[data-screen="stats"] .skills-terminal {
  display: grid;
  gap: 12px;
}
.skills-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  border-top: 1px solid rgba(217,154,20,.22);
  border-bottom: 1px solid rgba(217,154,20,.22);
  padding: 10px 0;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
}
.skills-summary b { color: var(--accent-2); }
.skills-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.skill-tab {
  border: 1px solid rgba(217,154,20,.3);
  background: rgba(0,0,0,.45);
  color: var(--muted);
  padding: 7px 10px;
  text-transform: uppercase;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}
.skill-tab.active {
  color: #090806;
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
}
.skills-list {
  display: grid;
  gap: 10px;
  max-height: 620px;
  overflow: auto;
  padding-right: 4px;
}
.skill-card {
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.42);
  padding: 10px;
  display: grid;
  gap: 8px;
}
.skill-card.available { border-color: rgba(244,197,66,.45); }
.skill-card.learned { background: linear-gradient(90deg, rgba(56,246,108,.06), rgba(0,0,0,.42)); }
.skill-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: start;
}
.skill-head b {
  display: block;
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: .08em;
}
.skill-head span,
.skill-head strong {
  color: var(--muted);
  font-size: 10px;
  text-transform: uppercase;
}
.skill-card p {
  margin: 0;
  color: #d4d0c7;
  font-size: 12px;
  line-height: 1.35;
}
.skill-reasons {
  color: #ff8d75;
  font-size: 10px;
  line-height: 1.35;
}
.skill-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.skill-actions .z-btn:disabled {
  opacity: .35;
  cursor: not-allowed;
}
@media (max-width: 860px) {
  .skills-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .skills-list { max-height: none; }
}

/* v35: clean STATS screen layout */
.game-body[data-screen="stats"] .game-shell {
  grid-template-rows: auto minmax(0, 1fr) !important;
}

.game-body[data-screen="stats"] .main-layout {
  width: min(1180px, 100%) !important;
  justify-self: center;
  grid-template-columns: minmax(0, 1fr) !important;
  grid-template-rows: auto !important;
}

.game-body[data-screen="stats"] .left-column,
.game-body[data-screen="stats"] .center-column {
  display: none !important;
}

.game-body[data-screen="stats"] .right-column {
  grid-column: 1 !important;
  width: 100%;
  min-height: min(760px, calc(100vh - 150px));
  padding: 18px;
  overflow: hidden;
  display: block !important;
}

.game-body[data-screen="stats"] .skills-terminal {
  height: 100%;
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr);
  gap: 14px;
}

.game-body[data-screen="stats"] .skills-terminal .inventory-head {
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(217,154,20,.28);
}

.game-body[data-screen="stats"] .skills-terminal h2 {
  margin: 2px 0 0;
  font-size: clamp(30px, 4vw, 52px);
  letter-spacing: .22em;
}

.game-body[data-screen="stats"] .skills-summary {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  padding: 10px;
  border: 1px solid rgba(217,154,20,.22);
  background: rgba(0,0,0,.32);
}

.game-body[data-screen="stats"] .skills-summary span {
  display: grid;
  gap: 4px;
}

.game-body[data-screen="stats"] .skills-summary b {
  font-size: 18px;
}

.game-body[data-screen="stats"] .skills-tabs {
  display: grid;
  grid-template-columns: repeat(8, minmax(90px, 1fr));
  gap: 6px;
}

.game-body[data-screen="stats"] .skill-tab {
  min-height: 34px;
  padding: 8px 6px;
  font-size: 10px;
  letter-spacing: .08em;
}

.game-body[data-screen="stats"] .skills-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: 10px;
  max-height: none;
  overflow: auto;
  padding-right: 6px;
}

.game-body[data-screen="stats"] .skill-card {
  min-height: 148px;
  padding: 12px;
  border-color: rgba(217,154,20,.24);
}

.game-body[data-screen="stats"] .skill-head b {
  font-size: 16px;
}

.game-body[data-screen="stats"] .skill-card p {
  font-size: 12px;
  min-height: 34px;
}

.game-body[data-screen="stats"] .skill-actions .z-btn {
  min-height: 36px;
  padding: 8px 10px;
}

@media (min-width: 1500px) {
  .game-body[data-screen="stats"] .main-layout {
    width: min(1320px, 100%) !important;
  }
  .game-body[data-screen="stats"] .skills-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 980px) {
  .game-body[data-screen="stats"] .skills-tabs {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .game-body[data-screen="stats"] .skills-list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 860px) {
  .game-body[data-screen="stats"] .main-layout {
    width: 100% !important;
  }
  .game-body[data-screen="stats"] .right-column {
    min-height: auto;
    padding: 12px;
    overflow: visible;
  }
  .game-body[data-screen="stats"] .skills-terminal {
    height: auto;
  }
  .game-body[data-screen="stats"] .skills-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .game-body[data-screen="stats"] .skills-tabs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* v37: economy shop/trade */
.shop-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.shop-item-card { grid-template-rows: 70px auto auto auto 34px; min-height: 190px; }
.shop-action { width: 100%; min-height: 32px; }
.shop-empty-card {
  grid-column: 1 / -1;
  border: 1px solid rgba(217,154,20,.35);
  background: rgba(0,0,0,.42);
  padding: 16px;
  display: grid;
  gap: 8px;
  color: var(--muted);
}
.shop-empty-card b { color: var(--accent-2); text-transform: uppercase; letter-spacing: .12em; }
@media (max-width: 860px) {
  .shop-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .shop-item-card { min-height: 178px; grid-template-rows: 60px auto auto auto 36px; }
}

/* v38: mobile icon de-bleach + trade orders */
@media (max-width: 860px) {
  .inventory-grid-tactical .inv-slot.has-item,
  .catalog-item-card .catalog-icon,
  .trade-order-card .catalog-icon {
    background: radial-gradient(circle at 50% 45%, rgba(244,197,66,.05), transparent 58%), rgba(0,0,0,.68) !important;
  }
  .inventory-grid-tactical .inv-slot img,
  .catalog-icon img,
  .item-menu-head img {
    filter: saturate(.9) contrast(1.08) brightness(.72) drop-shadow(0 5px 8px rgba(0,0,0,.8)) !important;
    -webkit-filter: saturate(.9) contrast(1.08) brightness(.72) drop-shadow(0 5px 8px rgba(0,0,0,.8)) !important;
    mix-blend-mode: normal !important;
  }
}

.trade-order-create {
  grid-column: 1 / -1;
  border: 1px solid rgba(217,154,20,.38);
  background: rgba(0,0,0,.48);
  padding: 12px;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1.2fr) 120px 150px;
  gap: 8px;
  align-items: end;
}
.trade-order-create b,
.trade-order-card b { color: var(--accent-2); text-transform: uppercase; letter-spacing: .1em; }
.trade-order-create span,
.trade-order-card span { display: block; color: var(--muted); font-size: 11px; margin-top: 4px; }
.trade-order-create select,
.trade-order-create input {
  min-height: 38px;
  border: 1px solid rgba(217,154,20,.34);
  background: rgba(0,0,0,.62);
  color: var(--text);
  padding: 0 10px;
  font: inherit;
}
.trade-order-card {
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(0,0,0,.48);
  min-height: 78px;
  padding: 8px;
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr) auto 112px;
  gap: 10px;
  align-items: center;
}
.trade-order-card.mine { border-color: rgba(244,197,66,.45); }
.trade-order-card .catalog-icon { height: 58px; }
.trade-order-card strong { color: var(--accent-2); font-size: 16px; }
@media (max-width: 860px) {
  .trade-order-create { grid-template-columns: 1fr; }
  .trade-order-card { grid-template-columns: 58px minmax(0, 1fr); }
  .trade-order-card strong,
  .trade-order-card button { grid-column: 1 / -1; }
}

/* v40: Telegram WebApp login */
.tg-login-box {
  border: 1px solid rgba(217,154,20,.38);
  background: rgba(0,0,0,.42);
  padding: 12px;
  display: grid;
  gap: 10px;
  margin: 14px 0;
}
.tg-login-box b {
  display: block;
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: .12em;
  margin-bottom: 4px;
}
.tg-login-box span {
  display: block;
  color: var(--muted);
  line-height: 1.4;
}
.tg-login-box .z-btn { width: 100%; }

/* Telegram WebApp hardening / safe-area */
:root {
  --tg-viewport-height: 100vh;
  --tg-viewport-stable-height: 100vh;
  --zwar-safe-top: env(safe-area-inset-top, 0px);
  --zwar-safe-right: env(safe-area-inset-right, 0px);
  --zwar-safe-bottom: env(safe-area-inset-bottom, 0px);
  --zwar-safe-left: env(safe-area-inset-left, 0px);
}

body.tg-webapp {
  min-height: var(--tg-viewport-stable-height);
  padding-top: var(--zwar-safe-top);
  padding-right: var(--zwar-safe-right);
  padding-bottom: var(--zwar-safe-bottom);
  padding-left: var(--zwar-safe-left);
  overscroll-behavior: none;
}

body.tg-webapp .game-shell,
body.tg-webapp .login-card {
  max-height: calc(var(--tg-viewport-stable-height) - var(--zwar-safe-top) - var(--zwar-safe-bottom));
}

body.tg-webapp input,
body.tg-webapp button,
body.tg-webapp select,
body.tg-webapp textarea {
  -webkit-tap-highlight-color: transparent;
}

/* Region Graph / Global Map 1.1.0-1.1.1 */
.travel-options-panel,
.global-map-panel {
  margin-top: 10px;
  border: 1px solid rgba(255, 198, 91, .22);
  background: rgba(9, 10, 8, .82);
  padding: 10px;
  clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}

.travel-options-list { display: grid; gap: 8px; }
.travel-option {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.035);
  padding: 8px;
}
.travel-option b,
.travel-option span,
.travel-option small { display: block; }
.travel-option span { color: rgba(235,235,210,.72); font-size: 12px; }
.travel-option small { color: #ff6961; font-size: 11px; margin-top: 3px; }
.travel-option.blocked { opacity: .62; }

.global-map-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  margin-bottom: 10px;
}
.global-map-head b { display: block; color: #ffd38a; }
.global-map-grid {
  display: grid;
  grid-template-columns: repeat(var(--gm-cols, 6), minmax(92px, 1fr));
  grid-template-rows: repeat(var(--gm-rows, 3), minmax(76px, auto));
  gap: 10px;
  overflow-x: auto;
  padding-bottom: 4px;
}
.global-region-node {
  min-width: 92px;
  text-align: left;
  border: 1px solid rgba(255, 198, 91, .24);
  background: linear-gradient(135deg, rgba(255,198,91,.08), rgba(0,0,0,.35));
  color: #f1ead2;
  padding: 8px;
  cursor: pointer;
}
.global-region-node b,
.global-region-node span,
.global-region-node small,
.global-region-node em { display: block; }
.global-region-node b { color: #ffd38a; font-size: 12px; }
.global-region-node span,
.global-region-node small { color: rgba(235,235,210,.68); font-size: 10px; line-height: 1.35; }
.global-region-node.current { border-color: rgba(116, 255, 172, .82); box-shadow: 0 0 0 1px rgba(116,255,172,.18) inset; }
.global-region-node.locked { filter: grayscale(.7); opacity: .48; }
.global-region-node.locked em { color: rgba(255,255,255,.38); font-size: 10px; }
.global-region-node.danger-5,
.global-region-node.danger-6,
.global-region-node.danger-7 { border-color: rgba(255,105,97,.36); }
.global-region-summary {
  margin-top: 10px;
  padding: 8px;
  border: 1px dashed rgba(255,255,255,.12);
  color: rgba(235,235,210,.72);
  font-size: 12px;
}
.global-region-summary b,
.global-region-summary span,
.global-region-summary p { display: block; margin: 2px 0; }

.admin-link-editor {
  display: grid;
  gap: 8px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,.08);
}
.admin-link-editor .grid-two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.admin-cell.has-transition { box-shadow: inset 0 0 0 1px rgba(116,255,172,.58), 0 0 10px rgba(116,255,172,.12); }
.admin-cell .transition-mark {
  position: absolute;
  right: 2px;
  top: 1px;
  min-width: 14px;
  padding: 1px 3px;
  border: 1px solid rgba(116,255,172,.56);
  background: rgba(0,0,0,.74);
  color: #74ffac;
  font-size: 9px;
  line-height: 1.1;
  text-shadow: 0 0 4px rgba(116,255,172,.4);
}
.admin-link-list { display: grid; gap: 6px; }
.admin-link-empty { color: var(--muted); font-size: 12px; border: 1px dashed rgba(255,255,255,.12); padding: 8px; }
.admin-link-row {
  width: 100%;
  text-align: left;
  border: 1px solid rgba(255,198,91,.18);
  background: rgba(255,255,255,.035);
  color: var(--text);
  display: grid;
  gap: 2px;
  padding: 8px;
  cursor: pointer;
}
.admin-link-row:hover { border-color: rgba(255,198,91,.42); }
.admin-link-row b { color: #ffd38a; font-size: 12px; }
.admin-link-row span { color: rgba(235,235,210,.72); font-size: 11px; }
.admin-link-row small { color: rgba(235,235,210,.52); font-size: 10px; }
.tg-status.error {
  margin: 12px 0;
  border: 1px solid rgba(255,105,97,.42);
  background: rgba(255,105,97,.08);
  color: #ff8a80;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.45;
}
.admin-links form { margin: 0; }
.login-form label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: .08em;
}
.admin-region-select {
  display: block;
  margin-top: 8px;
  min-width: 260px;
  border: 1px solid var(--line-soft);
  background: rgba(0,0,0,.54);
  color: var(--text);
  padding: 8px 10px;
  text-transform: none;
  letter-spacing: .04em;
}
@media (max-width: 860px) {
  .admin-region-select { min-width: 0; width: 100%; }
}

.admin-region-editor {
  border-bottom: 1px solid rgba(255,255,255,.08);
  margin-bottom: 18px;
  padding-bottom: 18px;
}
.admin-form textarea {
  width: 100%;
  min-height: 70px;
  resize: vertical;
  background: rgba(0,0,0,.35);
  color: var(--text);
  border: 1px solid rgba(255,255,255,.16);
  padding: 8px 10px;
  font-family: inherit;
}
.z-btn-danger {
  border-color: rgba(255,105,97,.55);
  color: #ff918a;
}
.z-btn-danger:hover { border-color: rgba(255,105,97,.9); color: #ffd0cc; }

/* 1.1.4-r2 admin layout polish */
.admin-map-shell-v2 { max-width: 1880px; }
.admin-map-layout-v2 {
  display: grid;
  grid-template-columns: minmax(760px, 1fr) 410px;
  gap: 18px;
  align-items: start;
}
.admin-main-column { display: grid; gap: 14px; min-width: 0; }
.admin-map-header-v2 {
  display: grid;
  grid-template-columns: minmax(180px, auto) minmax(220px, 360px) auto;
  gap: 12px;
  align-items: end;
}
.admin-cell-dock { padding: 18px; }
.admin-cell-form-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
}
.admin-cell-form-grid .cell-wide { grid-column: span 2; }
.admin-cell-form-grid .admin-cell-actions { grid-column: span 2; display: flex; align-items: end; }
.admin-cell-form-grid .admin-cell-actions .z-btn { width: 100%; }
.admin-side-tabs { position: sticky; top: 12px; max-height: calc(100vh - 24px); overflow: auto; padding: 14px; }
.admin-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-bottom: 14px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  padding-bottom: 10px;
}
.admin-tab {
  background: rgba(0,0,0,.28);
  border: 1px solid rgba(255,255,255,.12);
  color: rgba(235,235,210,.64);
  font-family: inherit;
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  padding: 10px 8px;
  cursor: pointer;
}
.admin-tab.active {
  border-color: rgba(255,205,74,.75);
  color: #ffe08a;
  background: rgba(255,205,74,.08);
}
.admin-tab-panel { display: none; }
.admin-tab-panel.active { display: block; }
.admin-side-tabs .admin-form { gap: 9px; }
.admin-side-tabs .panel-title { margin-bottom: 10px; }
.admin-region-editor { border: 0; margin: 0; padding: 0; }

@media (max-width: 1180px) {
  .admin-map-layout-v2 { grid-template-columns: 1fr; }
  .admin-side-tabs { position: static; max-height: none; }
  .admin-cell-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-map-header-v2 { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .admin-cell-form-grid { grid-template-columns: 1fr; }
  .admin-cell-form-grid .cell-wide,
  .admin-cell-form-grid .admin-cell-actions { grid-column: auto; }
}

.admin-link-row-grid {
  display: grid;
  grid-template-columns: 1fr 34px;
  gap: 8px;
  align-items: stretch;
  padding: 0;
  border: 0;
  background: transparent;
}
.admin-link-main {
  display: grid;
  gap: 3px;
  text-align: left;
  padding: 8px 10px;
  background: rgba(0,0,0,.26);
  border: 1px solid rgba(255,255,255,.11);
  color: inherit;
  font-family: inherit;
  cursor: pointer;
}
.admin-link-main:hover { border-color: rgba(255,198,91,.42); }
.admin-link-delete {
  background: rgba(120,20,20,.25);
  border: 1px solid rgba(255,105,97,.55);
  color: #ff918a;
  font-family: inherit;
  font-size: 18px;
  cursor: pointer;
}
.admin-link-delete:hover {
  background: rgba(170,30,30,.35);
  border-color: rgba(255,105,97,.95);
  color: #ffd0cc;
}
