/* GAME_CLIENT: облегчённые RTS-действия со срезами 45°. */
.voxel-dwarf-command-hud {
  position: absolute;
  left: 16px;
  bottom: 16px;
  left: max(16px, env(safe-area-inset-left));
  bottom: max(16px, env(safe-area-inset-bottom));
  z-index: 18;
  pointer-events: none;
}
.voxel-dwarf-command-hud[hidden], .voxel-dwarf-context-menu[hidden] { display: none; }
.voxel-dwarf-command-buttons { display: flex; gap: 8px; }
.voxel-dwarf-command-button {
  --cut: 6px;
  --frame-width: 1px;
  --fill-inset: 4px;
  /* Точное параллельное смещение диагонали x+y=cut: расстояние измеряется по нормали. */
  --frame-joint: calc(var(--cut) + var(--frame-width) * 0.4142135623730951);
  --fill-cut: calc(var(--cut) - var(--fill-inset) * 0.5857864376269049);
  --shape: polygon(var(--cut) 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, var(--cut) 100%, 0 calc(100% - var(--cut)), 0 var(--cut));
  position: relative;
  isolation: isolate;
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  padding: 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #eee5d0;
  cursor: pointer;
  pointer-events: auto;
  touch-action: manipulation;
}
.voxel-dwarf-command-button::before, .voxel-dwarf-command-button::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -2;
  clip-path: var(--shape);
  background: rgba(217, 172, 89, .30);
  transition: background 120ms;
}
.voxel-dwarf-command-button::before {
  clip-path: polygon(evenodd, var(--cut) 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, var(--cut) 100%, 0 calc(100% - var(--cut)), 0 var(--cut), var(--cut) 0,
    var(--frame-joint) var(--frame-width), var(--frame-width) var(--frame-joint), var(--frame-width) calc(100% - var(--frame-joint)), var(--frame-joint) calc(100% - var(--frame-width)), calc(100% - var(--frame-joint)) calc(100% - var(--frame-width)), calc(100% - var(--frame-width)) calc(100% - var(--frame-joint)), calc(100% - var(--frame-width)) var(--frame-joint), calc(100% - var(--frame-joint)) var(--frame-width), var(--frame-joint) var(--frame-width));
}
.voxel-dwarf-command-button::after {
  inset: var(--fill-inset);
  z-index: -1;
  clip-path: polygon(var(--fill-cut) 0, calc(100% - var(--fill-cut)) 0, 100% var(--fill-cut), 100% calc(100% - var(--fill-cut)), calc(100% - var(--fill-cut)) 100%, var(--fill-cut) 100%, 0 calc(100% - var(--fill-cut)), 0 var(--fill-cut));
  background: rgba(85, 76, 56, .46);
}
.voxel-rts-visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.voxel-rts-icon { display: block; width: 100%; height: 100%; opacity: .5; transition: opacity 120ms; pointer-events: none; }
.voxel-rts-icon { background-repeat: no-repeat; }
.voxel-dwarf-command-button:hover:not(:disabled) .voxel-rts-icon,
.voxel-dwarf-command-button:focus-visible .voxel-rts-icon { opacity: .9; }
.voxel-dwarf-command-button:hover:not(:disabled)::before { background: rgba(217, 172, 89, .65); }
.voxel-dwarf-command-button:focus-visible { outline: 2px solid #d9ac59; outline-offset: 3px; }
.voxel-dwarf-command-button:active:not(:disabled)::after { background: #596139; }
.voxel-dwarf-command-button:disabled { cursor: default; }
.voxel-dwarf-command-button:disabled .voxel-rts-icon { opacity: .25; }
.voxel-dwarf-command-buttons > [data-command="control"] { margin-left: 8px; }
.voxel-dwarf-context-menu { position: fixed; z-index: 20; width: 216px; height: 216px; margin: 0; padding: 0; list-style: none; pointer-events: none; }
.voxel-dwarf-context-action { position: absolute; transform: translate(-50%, -50%); }
/* Переносится только представление существующих служебных действий в RTS. */
.voxel-rts-active > .voxel-telemetry-control,
.voxel-rts-active > .voxel-reset-progress {
  position: fixed !important;
  left: auto !important;
  right: max(16px, env(safe-area-inset-right)) !important;
  bottom: auto !important;
  top: calc(max(16px, env(safe-area-inset-top)) + 32px) !important;
  z-index: 21 !important;
  min-height: 36px;
  max-width: calc(100vw - 32px);
  margin: 0 !important;
  padding: 8px 12px !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: #eee5d0 !important;
  background: rgba(23, 21, 14, .75) !important;
  clip-path: polygon(6px 0, calc(100% - 6px) 0, 100% 6px, 100% calc(100% - 6px), calc(100% - 6px) 100%, 6px 100%, 0 calc(100% - 6px), 0 6px);
}
.voxel-rts-active > .voxel-reset-progress { top: calc(max(16px, env(safe-area-inset-top)) + 76px) !important; }
.voxel-rts-active .voxel-inventory-hud { display: none; }
.voxel-rts-active .voxel-room-panel { top: 116px !important; backdrop-filter: none !important; }
@media (pointer: coarse) {
  .voxel-dwarf-command-button { --cut: 7px; width: 56px; height: 56px; padding: 12px; }
  .voxel-rts-active > .voxel-telemetry-control,
  .voxel-rts-active > .voxel-reset-progress { min-height: 44px; }
  .voxel-rts-active > .voxel-reset-progress { top: calc(max(16px, env(safe-area-inset-top)) + 84px) !important; }
}
@media (min-width: 1280px) and (min-height: 700px) {
  .voxel-dwarf-command-hud .voxel-dwarf-command-button { --cut: 7px; width: 56px; height: 56px; padding: 12px; }
}
@media (min-width: 1920px) and (min-height: 900px) {
  .voxel-dwarf-command-hud .voxel-dwarf-command-button { --cut: 7.5px; width: 60px; height: 60px; padding: 13px; }
}
@media (min-width: 2560px) and (min-height: 1200px) {
  .voxel-dwarf-command-hud .voxel-dwarf-command-button { --cut: 9px; width: 72px; height: 72px; padding: 15px; }
}
@media (max-width: 420px) {
  .voxel-dwarf-command-buttons { display: grid; grid-template-columns: repeat(3, max-content); }
  .voxel-dwarf-command-buttons > [data-command="control"] { grid-column: 1; grid-row: 1; margin: 0; }
  .voxel-dwarf-command-buttons > [data-command="inventory"] { grid-column: 2; grid-row: 1; }
  .voxel-dwarf-command-buttons > :nth-child(-n+3) { grid-row: 2; }
}
@media (max-width: 620px) { .voxel-rts-active .voxel-room-panel { top: 248px !important; } .voxel-rts-active .voxel-room-panel[open] { max-height: calc(100dvh - 296px); overflow: auto; } }
@media (prefers-reduced-motion: reduce) {
  .voxel-rts-icon, .voxel-dwarf-command-button::before, .voxel-dwarf-command-button::after { transition: none; }
}
