*{box-sizing:border-box}

@font-face{
  font-family:'Gotham Pro';
  src:url('/fonts/gothampronarrow-bold.woff2') format('woff2'),url('/fonts/gothampronarrow-bold.ttf') format('truetype');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

:root{
  color-scheme:dark;
  --bg:#0c1118;
  --top:#141c27e8;
  --panel:#141c27;
  --panel-2:#0f1620;
  --border:#263447;
  --border-strong:#3a4b61;
  --text:#eef2f7;
  --muted:#91a0b2;
  --accent:#2e76d0;
  --input:#202b39;
  --secondary:#1c2938;
  --stock:#0e1620;
  --map-bg:#080b10;
  --map-fill:#101824;
  --badge-bg:#0a1018c9;
  --badge-text:#95a5b8;
  --modal:#202b39;
  --danger-border:#8d5555;
  --danger-bg:#3b2025;
  --danger-text:#ffb4b4;
  --shadow:0 14px 40px #0006;
}

:root[data-theme="light"]{
  color-scheme:light;
  --bg:#eef2f7;
  --top:#ffffffee;
  --panel:#fff;
  --panel-2:#f5f7fa;
  --border:#d8e0ea;
  --border-strong:#b7c3d1;
  --text:#17202b;
  --muted:#627084;
  --accent:#236dcc;
  --input:#f7f9fc;
  --secondary:#e9eff7;
  --stock:#f2f7fd;
  --map-bg:#e4eaf2;
  --map-fill:#fff;
  --badge-bg:#ffffffdb;
  --badge-text:#52647a;
  --modal:#fff;
  --danger-border:#d58b8b;
  --danger-bg:#fff0f0;
  --danger-text:#a12626;
  --shadow:0 14px 40px #26344725;
}

html,body{
  width:100%;
  height:100%;
  margin:0;
  overflow:hidden;
  background:var(--bg);
  color:var(--text);
  font:14px 'Gotham Pro',system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

button,input{font:inherit}
button{cursor:pointer;border:1px solid var(--border-strong);border-radius:8px;background:var(--input);color:var(--text);padding:7px 10px;box-shadow:none;transition:background-color .15s ease,color .15s ease,border-color .15s ease}
button:hover{background:var(--secondary);filter:none}
button:disabled{opacity:.45;cursor:not-allowed;filter:none}

/* верхняя строка: логотип слева, zoom рядом с ним, служебные кнопки справа */
.topbar{
  height:58px;
  padding:10px 16px;
  display:flex;
  align-items:center;
  gap:16px;
  position:fixed;
  inset:0 0 auto;
  z-index:10;
  pointer-events:none;
  background:var(--top);
  border:0;
  transition:transform .2s ease,opacity .2s ease;
}
.topbar>*{pointer-events:auto}

/* в режиме рисования верхняя панель не закрывает первые ряды canvas */
body.paint-focus .topbar{
  transform:translateY(-100%);
  opacity:0;
  pointer-events:none;
}

.brand{
  flex:0 0 clamp(105px,18vw,220px);
  width:clamp(105px,18vw,220px);
  min-width:0;
  height:36px;
  display:flex;
  align-items:center;
  text-decoration:none;
}

.site-logo{
  display:block;
  width:100%;
  height:auto;
  max-height:36px;
  object-fit:contain;
  object-position:left center;
  filter:none;
}
:root[data-theme="dark"] .site-logo{filter:invert(1)}


.topbar-actions{
  margin-left:auto;
  min-width:0;
  display:flex;
  align-items:center;
  gap:12px;
}
.timer{
  color:#d39a00;
  font-variant-numeric:tabular-nums;
  font-size:13px;
  text-shadow:0 1px 4px #0008;
  white-space:nowrap;
}

/* zoom остаётся в старом index.html, но визуально переезжает в верхнюю строку */
.map-toolbar{
  position:fixed;
  top:10px;
  left:calc(16px + clamp(105px,18vw,220px) + 16px);
  z-index:10;
  display:flex;
  align-items:center;
  gap:7px;
}
.zoom-controls{
  display:flex;
  align-items:center;
  gap:5px;
  background:var(--panel);
  border:1px solid var(--border);
  padding:4px;
  border-radius:9px;
  box-shadow:none;
}
.zoom-controls span{
  min-width:48px;
  text-align:center;
  color:var(--muted);
  font-size:12px;
}

.icon-button,.tool-button,button,input{font:inherit}
.icon-button{
  display:block;
  border:1px solid var(--border-strong);
  border-radius:8px;
  background:var(--panel);
  color:var(--text);
  width:36px;
  height:34px;
  font-size:20px;
  cursor:pointer;
  box-shadow:none;
}
.tool-button{
  border:1px solid var(--border-strong);
  border-radius:8px;
  background:var(--input);
  color:var(--text);
  padding:7px 10px;
  cursor:pointer;
}
.tool-button.reset{font-size:12px}
.secondary{background:var(--secondary)}
.theme-toggle{white-space:nowrap}

.layout{width:100%;height:100%;display:block;padding:0;margin:0}
.board-panel{
  width:100%;
  height:100%;
  min-width:0;
  padding:0;
  display:block;
  background:var(--map-bg);
  border:0;
  border-radius:0;
}
.map-viewport{
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  border:0;
  border-radius:0;
  background:var(--map-bg);
  touch-action:none;
  user-select:none;
}
.map-viewport canvas{
  display:block;
  width:100%;
  height:100%;
  cursor:grab;
  touch-action:none;
}
.map-viewport canvas:active{cursor:grabbing}
.map-badge{
  position:absolute;
  left:16px;
  bottom:80px;
  padding:5px 8px;
  border-radius:6px;
  background:var(--badge-bg);
  color:var(--badge-text);
  font-size:11px;
  pointer-events:none;
}
.status{
  position:fixed;
  left:50%;
  bottom:20px;
  transform:translateX(-50%);
  z-index:5;
  margin:0;
  padding:7px 12px;
  border-radius:999px;
  background:var(--badge-bg);
  color:var(--badge-text);
  font-size:12px;
  pointer-events:none;
  box-shadow:0 4px 18px #0003;
}

/* нижняя панель палитры */
.sidebar{
  position:fixed;
  z-index:12;
  left:50%;
  bottom:72px;
  width:min(760px,calc(100vw - 20px));
  max-height:min(74vh,680px);
  overflow:auto;
  padding:10px 2px 2px;
  display:block;
  transform:translate(-50%,calc(100% + 100px));
  transition:transform .22s ease;
  pointer-events:none;
}
.sidebar.open{
  transform:translate(-50%,0);
  pointer-events:auto;
}
.card{
  padding:13px;
  margin-bottom:10px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:14px;
  box-shadow:var(--shadow);
}
.card h2{margin:0 0 10px;font-size:16px}
.tools-card{margin-top:0}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.mode-badge{padding:4px 8px;border-radius:999px;background:var(--secondary);color:var(--muted);font-size:11px}
.mode-switch{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
  padding:4px;
  margin-bottom:10px;
  background:var(--panel-2);
  border:1px solid var(--border);
  border-radius:10px;
}
.mode-button{
  min-height:40px;
  border:1px solid transparent;
  border-radius:8px;
  background:transparent;
  color:var(--muted);
  padding:8px 10px;
}
.mode-button.active{background:var(--text);color:var(--bg);box-shadow:none}
.palette{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(34px,1fr));
  gap:7px;
  padding:2px 0 12px;
}
.palette button{
  width:100%;
  height:34px;
  min-width:34px;
  padding:0;
  border:2px solid var(--border-strong);
  border-radius:8px;
  box-shadow:none;
  transition:border-color .12s ease,outline-color .12s ease;
  touch-action:manipulation;
  user-select:none;
  -webkit-user-select:none;
}
.palette button:hover{filter:none}
.palette button[aria-pressed="true"]{outline:2px solid var(--text);outline-offset:2px;box-shadow:none}
.palette-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}
.palette-stat{display:flex;flex-direction:column;gap:3px;padding:9px 10px;background:var(--stock);border:1px solid var(--border);border-radius:10px}
.palette-stat span,.palette-stat small{color:var(--muted);font-size:11px}
.palette-stat strong{font-size:18px;line-height:1;font-variant-numeric:tabular-nums}
.palette-stat small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tool-row{display:flex;gap:7px;flex-wrap:wrap}
.tool-help{line-height:1.4;margin:9px 0 0}
.form{display:grid;gap:7px;margin-bottom:9px}
.form input{width:100%}
input{border:1px solid var(--border-strong);border-radius:8px;background:var(--input);color:var(--text);padding:8px 9px}
.emoji-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px}
.emoji-row small,.muted{color:var(--muted);font-size:12px}
.user{display:flex;align-items:center;gap:9px}
.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--border)}
.stock{margin-top:7px;padding:7px 8px;background:var(--stock);border:1px solid var(--border);border-radius:8px;color:var(--text)}
.stock strong{color:#1680b2}
.shop-help{line-height:1.4;margin:0 0 8px}
.shop-item,.clan{border-top:1px solid var(--border);padding:9px 0}
.shop-item{display:flex;justify-content:space-between;gap:8px;align-items:center}
.shop-item small{display:block;color:var(--muted);font-size:12px}
.clan{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}
.clan-name{display:flex;gap:7px;align-items:center;min-width:0}
.clan-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clan-actions{display:flex;gap:5px;align-items:center}
.clan-actions button{padding:6px 8px;font-size:12px}
.clan code{font-size:11px;color:#3974c6;word-break:break-all}
.clan-current{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;margin-bottom:8px;border-radius:8px;background:var(--secondary);color:var(--text)}
.clan-current button{padding:5px 8px;font-size:12px}
.join-form{border-top:1px solid var(--border);padding-top:9px}
.admin{border-color:var(--danger-border)}
.admin-help{line-height:1.45;margin:0 0 9px}
.admin-list-title{font-size:13px;margin:12px 0 0;color:var(--muted)}
.ban-notice{margin-top:8px;padding:8px;border:1px solid var(--danger-border);border-radius:8px;background:var(--danger-bg);color:var(--danger-text);line-height:1.4}
.pixel-modal{position:fixed;z-index:20;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--modal);border:1px solid var(--border-strong);padding:15px;border-radius:14px;min-width:270px;max-width:calc(100vw - 28px);box-shadow:0 8px 40px #0005}
.pixel-modal .close{float:right;padding:2px 8px}
.pixel-modal .user{margin-top:4px}
.backdrop{position:fixed;inset:0;background:#0008;z-index:19}
.hidden{display:none!important}

.palette-launch{
  position:fixed;
  z-index:14;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  gap:8px;
  min-width:150px;
  justify-content:center;
  min-height:48px;
  padding:10px 16px;
  border:1px solid var(--border-strong);
  border-radius:999px;
  background:var(--text);
  color:var(--bg);
  box-shadow:none;
  font-weight:700;
}
.palette-launch-icon{font-size:18px}
.palette-launch-mode{padding-left:7px;border-left:1px solid #ffffff55;font-size:11px;font-weight:400;opacity:.9}
#sheetBackdrop{position:fixed;inset:0;z-index:11;background:#0007}
#sheetBackdrop:not([hidden]){display:block}

@media(max-width:600px){
  .topbar{height:56px;padding:9px 11px;gap:8px}
  .brand{flex-basis:clamp(82px,27vw,150px);width:clamp(82px,27vw,150px);height:31px}
  .site-logo{max-height:27px}
  .map-toolbar{top:9px;left:calc(11px + clamp(82px,27vw,150px) + 8px)}
  .zoom-controls{gap:2px;padding:3px}
  .zoom-controls span{min-width:38px;font-size:11px}
  .zoom-controls .tool-button{min-width:31px;min-height:32px;padding:5px 7px}
  .zoom-controls .reset{display:none}
  .map-badge{left:10px;bottom:76px;font-size:10px}
  .status{bottom:72px;font-size:11px}
  .timer{max-width:58px;overflow:hidden;text-overflow:ellipsis;font-size:10px}
  .topbar-actions{gap:5px}
  .theme-toggle{width:32px;min-width:32px;height:32px;padding:0;overflow:hidden;font-size:0}
  .theme-toggle::before{content:'◐';font-size:16px}
  .sidebar{bottom:69px;width:calc(100vw - 12px);max-height:78vh}
  .palette-launch{bottom:9px;min-height:46px}
  .palette{grid-template-columns:repeat(auto-fit,minmax(30px,1fr));gap:6px}
  .palette button{height:32px;min-width:30px}
}

@media(prefers-reduced-motion:reduce){
  .sidebar,.palette button{transition:none}
}
