/* Карта королевств. Общая для всех экранов: зал, пульт ведущего, планшет
   команды — все должны видеть одну картину, кто где стоит и как держится.
   Слои: сцена на холсте → линии атак → замки с подписями → эффекты боя. */
.map-wrap { position: relative; min-width: 0; min-height: 0;
  display: flex; align-items: center; justify-content: center; overflow: visible; padding: 14px; }
/* Пропорции держим жёстко: растянутая карта врёт про расстояния между замками */
.map { position: relative; width: 100%; aspect-ratio: 16 / 10; max-height: 100%;
  container-type: inline-size; border-radius: 14px; overflow: hidden; }
.ru-scene { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.ru-wind { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 280; pointer-events: none; }

.ru-lines-slot, .ru-lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.ru-lines g { opacity: 1; transition: opacity .35s ease; }
.ru-lines g.ru-wait { opacity: 0; }
.ru-lines-slot { z-index: 200; pointer-events: none; }
.ru-line { fill: none; stroke-width: 3; color: #fff; }
.ru-line.ru-flight { stroke: rgba(255,249,235,.55); stroke-dasharray: 7 7; color: rgba(255,249,235,.55); stroke-width: 2; }
.ru-line.ru-blocked { stroke: var(--good); color: var(--good); }
.ru-line.ru-shield { stroke: var(--brass); color: var(--brass); }
.ru-line.ru-breach { stroke: var(--rust); color: var(--rust); stroke-width: 4; }
.ru-traveler { fill: var(--brass); filter: drop-shadow(0 0 4px rgba(246,209,82,.85)); }
.ru-traveler.ru-div { fill: var(--rust); filter: drop-shadow(0 0 4px rgba(240,113,90,.85)); }
.ru-pins { position: absolute; inset: 0; z-index: 250; }
/* Слой эффектов поверх замков, но кликов не перехватывает */
.fx-layer { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 300; pointer-events: none; }

/* Замки нарисованы на самой сцене (scene.js), поверх — только линии атак
   и эффекты боя. Отдельных карточек поверх карты больше нет. */
.ru-scene.hit { animation: jolt .45s; }

/* Размер карты считает MapView.fitBox: доли мест привязаны к холсту, поэтому
   форма холста обязана совпадать на всех экранах — иначе башня с поляны на
   проекторе уезжает в реку на планшете. CSS здесь только страхует до первой
   отрисовки. */

/* Компактная карта для планшета и пульта: там она справочная, а не главная */
.map-wrap.compact { padding: 6px; }
