/* Пеленг ЦУП — Tailwind (vendor/tailwind.js) несёт основную стилизацию.
   Здесь только то, что Tailwind не покрывает: контейнер карты и попап MapLibre. */

#map { width: 100%; height: 100%; }
#map canvas { outline: none; }

/* MapLibre popup под светлую тему Outpost */
.maplibregl-popup-content {
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.15);
  padding: 10px 12px;
}
.maplibregl-popup-close-button { font-size: 16px; color: #64748b; padding: 0 6px; }

/* Узловые маркеры-светофоры: точка всегда, плашка — при зуме (#map.show-labels) */
.nmk { display: flex; align-items: center; cursor: pointer; }
.nmk-dot {
  width: 13px; height: 13px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(15,23,42,.25);
  flex: 0 0 auto;
}
.nmk-green  { background: #10b981; }
.nmk-yellow { background: #f59e0b; }
.nmk-red    { background: #ef4444; }
.nmk-gray   { background: #94a3b8; }
.nmk-demo   { background: #f97316; }   /* виртуальный пост демо-сети */

/* Пульсация поста, который сейчас пеленгует цель (сектор мерцает синхронно):
   оранжевый — требует проверки оператором, красный — подтверждено. */
@keyframes nmkPulseO {
  0%, 100% { box-shadow: 0 0 0 2px rgba(249,115,22,.55), 0 0 0 1px rgba(15,23,42,.25); }
  50%      { box-shadow: 0 0 0 9px rgba(249,115,22,0),   0 0 0 1px rgba(15,23,42,.25); }
}
@keyframes nmkPulseR {
  0%, 100% { box-shadow: 0 0 0 2px rgba(239,68,68,.65), 0 0 0 1px rgba(15,23,42,.25); }
  50%      { box-shadow: 0 0 0 10px rgba(239,68,68,0),  0 0 0 1px rgba(15,23,42,.25); }
}
.nmk-dot.brg-orange { animation: nmkPulseO 1s infinite; }
.nmk-dot.brg-red    { animation: nmkPulseR .8s infinite; }

.nmk-chip {
  display: none;                     /* показывается при #map.show-labels */
  margin-left: 5px; background: rgba(255,255,255,.94);
  border: 1px solid #e2e8f0; border-radius: 5px;
  padding: 2px 6px; box-shadow: 0 1px 2px rgba(15,23,42,.12);
  white-space: nowrap; line-height: 1.25;
}
#map.show-labels .nmk-chip { display: block; }
.nmk-name { font-size: 12px; font-weight: 600; color: #0f172a; }
.nmk-meta { font-size: 10px; color: #64748b; font-family: ui-monospace, monospace; }
.nmk-st   { font-size: 10px; font-weight: 500; }
.nmk-st-green  { color: #059669; }
.nmk-st-yellow { color: #b45309; }
.nmk-st-red    { color: #b91c1c; }
.nmk-st-gray   { color: #94a3b8; }
.nmk-st-demo   { color: #c2410c; }

/* Маркеры вкладки «Мадагаскар». Плашки показываем всегда, без привязки к зуму:
   станций и вышек единицы, а частота подсветки и отметка вышки нужны оператору
   постоянно – по ним он проверяет, тот ли мультиплекс принимает станция.
   Размеры шрифта берутся из переменных секции (см. блок типографики ниже);
   запасные значения нужны только на случай, если маркер окажется вне секции. */
.madg-mk { display: flex; align-items: center; cursor: pointer; }
.madg-dot {
  width: 13px; height: 13px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(15,23,42,.25);
  flex: 0 0 auto;
}
/* Светофор станции. Цвет берётся из переменной действующей темы: те же четыре
   цвета стоят образцами в меню «Слои» и в списке станций, и расходиться им
   нельзя. Запасное значение нужно только маркеру вне секции вкладки. */
.madg-green { background: var(--madg-ok, #22c55e); }
.madg-red   { background: var(--madg-bad, #ef4444); }
.madg-amber { background: var(--madg-warn, #f59e0b); }
.madg-gray  { background: var(--madg-neiz, #94a3b8); }
/* Вышка – треугольник, а не точка: её ни при каком зуме нельзя спутать со
   станцией, потому что роли у них разные (излучает одна, принимают другие). */
.madg-tw { color: var(--madg-vyshka, #dc2626); font-size: 17px; line-height: 1;
           flex: 0 0 auto; text-shadow: 0 0 3px #fff, 0 0 2px #fff; }
.madg-tw-sosed { font-size: 14px; opacity: 0.85; }  /* сосед одночастотной сети (16.22.0-madg) */
.madg-chip {
  margin-left: 5px; background: rgba(255,255,255,.94);
  border: 1px solid #e2e8f0; border-radius: 5px;
  padding: 2px 6px; box-shadow: 0 1px 2px rgba(15,23,42,.12);
  white-space: nowrap; line-height: 1.25;
}
.madg-name { font-size: var(--madg-fs-2, 12px); font-weight: 600; color: #0f172a; }
.madg-meta { font-size: var(--madg-fs-1, 11px); color: #64748b; font-family: ui-monospace, monospace; }
/* Красным пишется то, из-за чего станция выпадает из расчёта засечки. */
.madg-bad  { font-size: var(--madg-fs-1, 11px); font-weight: 600; color: #b91c1c; }

/* Баллон сопровождения цели в демо-налёте: небольшая тёмная плашка над маркером
   цели с классом, скоростью, курсом и удалением до объекта. */
.tmk {
  background: rgba(15,23,42,.9); color: #e5e7eb;
  border-left: 3px solid #dc2626; border-radius: 6px;
  padding: 3px 7px; white-space: nowrap; line-height: 1.25;
  box-shadow: 0 1px 4px rgba(0,0,0,.45); pointer-events: none;
  font-family: system-ui, -apple-system, sans-serif;
}
.tmk-cls { font-size: 11px; font-weight: 700; letter-spacing: .02em; }
.tmk-row { font-size: 10px; font-weight: 500; color: #cbd5e1; }
.tmk-kin { color: #f1f5f9; }

/* ==========================================================================
   Радарная тема вкладки «Мадагаскар» (16.09.2026, переработка 16.18.0-madg).

   Что это и зачем. В остальном ЦУП тема светлая, и общей тёмной темы в
   проекте нет: ни dark:-классов Tailwind, ни prefers-color-scheme. Вкладка
   радара живёт на тёмной векторной подложке (OpenFreeMap dark), и светлые
   панели рядом с ней слепят и режут глаз. Поэтому тема сделана обычным CSS
   одной секции: свои классы madg-* для новой разметки и перекраска штатных
   цветовых классов Tailwind, которыми размечены прежние панели
   («Расхождения», «Привязка», «Калибровка») и HTML, порождаемый скриптом.
   Селектор с идентификатором секции старше любого utility-класса Tailwind
   (их специфичность 0-1-0), поэтому перекраска действует и на классы,
   сгенерированные позже. Tailwind остаётся для сетки и отступов. Остальные
   вкладки не меняются.

   Схема темы. Все цвета вкладки заданы переменными --madg-* в двух местах и
   только в них: блок #view-madagascar – тёмная тема (умолчание, класс на
   секции не нужен), блок #view-madagascar.madg-light – светлая. Наборы имён
   в обоих блоках совпадают, поэтому переключение класса меняет всю вкладку
   целиком, а правила ниже цветовых литералов не содержат. Переключатель –
   кнопка «тема» в углу карты, выбор хранится в localStorage madg.tema.v1.
   Скрипт читает те же переменные через getComputedStyle (madgPalitra) и
   красит ими слои карты и холст дальность-доплер.

   Типографика. Размеров текста ровно три: --madg-fs-1 (11 px – подписи,
   метаданные, плашки, меню слоёв, оси холста), --madg-fs-2 (12 px –
   таблицы, лента, тексты панелей, кнопки и поля), --madg-fs-3 (13 px –
   заголовки панелей и значения плиток). Разметка пользуется классами
   madg-fs-1 / madg-fs-2 / madg-fs-3; для HTML, который порождает скрипт
   старым кодом, внизу блока стоят страховочные правила, переводящие
   размерные классы Tailwind на те же три переменные.

   Контраст светлой палитры по формуле WCAG (расчёт 16.09.2026): текст
   #0f172a на #f8fafc – 17,1:1; приглушённый #475569 на #ffffff – 7,6:1;
   акцент #0369a1 – 5,9:1; предупреждение #b45309 – 5,0:1; норма #15803d –
   5,0:1; тревога #b91c1c – 6,5:1. Тёмная: #e2e8f0 на #0b1220 – 15,2:1,
   #8194ad на #111a2b – 5,6:1. Порог AA – 4,5:1.
   ========================================================================== */
#view-madagascar {
  /* --- тёмная тема: значения по умолчанию --- */
  --madg-bg: #0b1220; --madg-bg2: #111a2b; --madg-bg3: #182338;
  --madg-line: #1f2a3d; --madg-line2: #2b3a52;
  --madg-text: #e2e8f0; --madg-muted: #8194ad; --madg-accent: #38bdf8;
  --madg-ok: #22c55e; --madg-warn: #f59e0b; --madg-bad: #ef4444;
  --madg-peleng: #f472b6; --madg-uzel: #a78bfa; --madg-bez: #f97316;
  --madg-neiz: #94a3b8; --madg-slepo: #e11d48; --madg-setka: #22d3ee;
  --madg-lead: #ff4081; --madg-baza: #8ecae6; --madg-mayachok: #16a34a;
  --madg-vyshka: #dc2626;
  /* наземная цель (класс ground, 22.09.2026): слой по умолчанию выключен,
     цвет приглушённый – он не должен спорить с оранжевым «без маячка» */
  --madg-nazem: #64748b;
  /* полупрозрачные заливки слоёв карты: сектор обзора станции и лента цепочки.
     Ими же красятся образцы в меню «Слои», чтобы легенда и карта не разошлись
     цветом при переключении темы. */
  --madg-sektor-fon: rgba(56, 189, 248, .25);
  --madg-lenta-fon: rgba(148, 163, 184, .35);
  /* фоны плашек, кнопок и попапов */
  --madg-plashka-bg: rgba(17, 26, 43, .92);
  --madg-btn-hover: #21304a;
  --madg-primary: #0369a1; --madg-primary-hover: #0284c7;
  --madg-primary-kant: #0ea5e9; --madg-primary-text: #ffffff;
  --madg-btn-akt-text: #0b1220;
  --madg-knopka-tv: #243247; --madg-knopka-tv-hover: #2e405a;
  --madg-popup-bg: #111a2b; --madg-popup-line: #2b3a52; --madg-popup-text: #e2e8f0;
  --madg-ctrl-invert: .85;
  --madg-zatuh-min: .15;
  /* подсветки строк и тени */
  --madg-hover: rgba(255, 255, 255, .04);
  --madg-vydelenie: rgba(56, 189, 248, .12);
  --madg-ten: rgba(0, 0, 0, .5); --madg-ten2: rgba(0, 0, 0, .6);
  --madg-mk-kant: #0b1220; --madg-mk-obvodka: rgba(255, 255, 255, .25);
  --madg-tw-ten: #000000;
  /* полупрозрачные заливки и канты состояний */
  --madg-ok-fon: rgba(34, 197, 94, .12); --madg-ok-kant: rgba(34, 197, 94, .5);
  --madg-warn-fon: rgba(245, 158, 11, .12); --madg-warn-kant: rgba(245, 158, 11, .6);
  --madg-bad-fon: rgba(239, 68, 68, .12); --madg-bad-kant: rgba(239, 68, 68, .7);
  --madg-bez-fon: rgba(249, 115, 22, .14); --madg-bez-kant: rgba(249, 115, 22, .6);
  --madg-peleng-kant: rgba(244, 114, 182, .5);
  --madg-slepo-fon: rgba(225, 29, 72, .18); --madg-slepo-fon2: rgba(225, 29, 72, .35);
  --madg-tekst-warn: #fde68a; --madg-tekst-bad: #fecdd3;
  /* перекраска штатных цветовых классов Tailwind */
  --madg-rose: #f87171; --madg-amber: #fbbf24; --madg-emerald: #4ade80;
  --madg-sky: #7dd3fc; --madg-orange: #fb923c; --madg-slabyy: #6b7c94;
  --madg-placeholder: #5f7089;
  --madg-scheme: dark;
  /* холст карты дальность-доплер */
  --madg-rd-fon: #0f172a; --madg-rd-ramka: #334155; --madg-rd-osi: #475569;
  --madg-rd-nol: rgba(226, 232, 240, .45); --madg-rd-otmetka: #f8fafc;
  --madg-rd-zatemn: rgba(11, 18, 32, .45);
  /* клетки маячков на холсте (обычная и совпавшая с отметкой), заливка и
     кант правил узла, след борта на карте – прежде литералы в скрипте, в
     светлой теме не читались (ревью 4, пункты 28 и 51) */
  --madg-rd-mayachok: #a5f3fc; --madg-rd-mayachok-fon: rgba(34, 211, 238, .25);
  --madg-rd-sovpal: #22d3ee; --madg-rd-pravila: rgba(148, 163, 184, .14);
  --madg-rd-pravila-kant: rgba(148, 163, 184, .5);
  /* остальные знаки поверх миниатюры: подписи правил узла, перекрестия
     отметок, совпавших с маячком, и отметок с пеленгом, выделенная клетка,
     цепочки по классу. Свои имена, а не --madg-ok, --madg-peleng, --madg-accent
     и цвета классов панелей: поле под ними – картинка с постоянной палитрой,
     и в светлой теме цвета панелей на ней не читались (проверка 18.09.2026) */
  --madg-rd-tekst: #cbd5e1; --madg-rd-ok: #4ade80; --madg-rd-peleng: #f472b6;
  --madg-rd-accent: #38bdf8; --madg-rd-klass-mayachok: #16a34a;
  --madg-rd-klass-bez: #f97316; --madg-rd-klass-neiz: #94a3b8;
  --madg-bort-sled: #7dd3fc;
  /* типографика: три размера на всю вкладку */
  --madg-fs-1: 11px; --madg-fs-2: 12px; --madg-fs-3: 13px; --madg-lh: 1.35;
  background: var(--madg-bg); color: var(--madg-text);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size: var(--madg-fs-2); line-height: var(--madg-lh);
}
#view-madagascar.madg-light {
  /* --- светлая тема: тот же набор имён --- */
  --madg-bg: #f8fafc; --madg-bg2: #ffffff; --madg-bg3: #f1f5f9;
  --madg-line: #e2e8f0; --madg-line2: #cbd5e1;
  --madg-text: #0f172a; --madg-muted: #475569; --madg-accent: #0369a1;
  --madg-ok: #15803d; --madg-warn: #b45309; --madg-bad: #b91c1c;
  --madg-peleng: #be185d; --madg-uzel: #6d28d9; --madg-bez: #c2410c;
  --madg-neiz: #64748b; --madg-slepo: #be123c; --madg-setka: #0e7490;
  --madg-lead: #db2777; --madg-baza: #0369a1; --madg-mayachok: #15803d;
  --madg-vyshka: #b91c1c;
  --madg-nazem: #475569;
  --madg-sektor-fon: rgba(3, 105, 161, .18);
  --madg-lenta-fon: rgba(100, 116, 139, .30);
  --madg-plashka-bg: rgba(255, 255, 255, .92);
  --madg-btn-hover: #e2e8f0;
  --madg-primary: #0369a1; --madg-primary-hover: #0284c7;
  --madg-primary-kant: #0369a1; --madg-primary-text: #ffffff;
  --madg-btn-akt-text: #ffffff;
  --madg-knopka-tv: #1e293b; --madg-knopka-tv-hover: #334155;
  --madg-popup-bg: #ffffff; --madg-popup-line: #cbd5e1; --madg-popup-text: #0f172a;
  --madg-ctrl-invert: 0;
  --madg-zatuh-min: .3;
  --madg-hover: rgba(15, 23, 42, .05);
  --madg-vydelenie: rgba(3, 105, 161, .12);
  --madg-ten: rgba(15, 23, 42, .15); --madg-ten2: rgba(15, 23, 42, .25);
  --madg-mk-kant: #ffffff; --madg-mk-obvodka: rgba(15, 23, 42, .25);
  --madg-tw-ten: #ffffff;
  --madg-ok-fon: rgba(21, 128, 61, .10); --madg-ok-kant: rgba(21, 128, 61, .5);
  --madg-warn-fon: rgba(180, 83, 9, .10); --madg-warn-kant: rgba(180, 83, 9, .6);
  --madg-bad-fon: rgba(185, 28, 28, .10); --madg-bad-kant: rgba(185, 28, 28, .6);
  --madg-bez-fon: rgba(194, 65, 12, .12); --madg-bez-kant: rgba(194, 65, 12, .6);
  --madg-peleng-kant: rgba(190, 24, 93, .5);
  --madg-slepo-fon: rgba(190, 18, 60, .10); --madg-slepo-fon2: rgba(190, 18, 60, .25);
  --madg-tekst-warn: #92400e; --madg-tekst-bad: #9f1239;
  --madg-rose: #b91c1c; --madg-amber: #b45309; --madg-emerald: #15803d;
  --madg-sky: #0369a1; --madg-orange: #c2410c; --madg-slabyy: #94a3b8;
  --madg-placeholder: #94a3b8;
  --madg-scheme: light;
  --madg-rd-fon: #e2e8f0; --madg-rd-ramka: #cbd5e1; --madg-rd-osi: #94a3b8;
  /* знаки поверх миниатюры – те же, что в тёмной теме: поле под ними –
     картинка inferno с постоянной палитрой, тёмная в обеих темах, а вуаль
     устаревшего кадра затемняющая. Тёмные знаки (#0f172a, #0e7490) на ней не
     читались – независимая проверка 18.09.2026, снимки 03 и 18 (перекрестия,
     клетка «SDM6446», подпись «за краем карты»). Светлым остаётся только поле
     вокруг миниатюры: --madg-rd-fon, --madg-rd-ramka, --madg-rd-osi. */
  --madg-rd-nol: rgba(226, 232, 240, .45); --madg-rd-otmetka: #f8fafc;
  /* вуаль устаревшего кадра и в светлой теме затемняющая: светлая вымывала
     палитру inferno до неразличимости (ревью 4, пункт 29) */
  --madg-rd-zatemn: rgba(15, 23, 42, .25);
  --madg-rd-mayachok: #a5f3fc; --madg-rd-mayachok-fon: rgba(34, 211, 238, .25);
  --madg-rd-sovpal: #22d3ee; --madg-rd-pravila: rgba(148, 163, 184, .14);
  --madg-rd-pravila-kant: rgba(148, 163, 184, .5);
  --madg-rd-tekst: #cbd5e1; --madg-rd-ok: #4ade80; --madg-rd-peleng: #f472b6;
  --madg-rd-accent: #38bdf8; --madg-rd-klass-mayachok: #16a34a;
  --madg-rd-klass-bez: #f97316; --madg-rd-klass-neiz: #94a3b8;
  --madg-bort-sled: #0369a1;
  --madg-fs-1: 11px; --madg-fs-2: 12px; --madg-fs-3: 13px; --madg-lh: 1.35;
}
#view-madagascar .madg-mono,
#view-madagascar .font-mono { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; }

/* Три размера текста разметки. */
#view-madagascar .madg-fs-1 { font-size: var(--madg-fs-1); }
#view-madagascar .madg-fs-2 { font-size: var(--madg-fs-2); }
#view-madagascar .madg-fs-3 { font-size: var(--madg-fs-3); }

/* --- перекраска штатных классов Tailwind внутри секции --- */
#view-madagascar .bg-white,
#view-madagascar .bg-white\/90,
#view-madagascar .bg-white\/95,
#view-madagascar .hover\:bg-white:hover { background-color: var(--madg-bg2); }
#view-madagascar .bg-slate-50,
#view-madagascar .hover\:bg-slate-50:hover { background-color: var(--madg-bg3); }
#view-madagascar .bg-slate-100 { background-color: var(--madg-bg3); }
#view-madagascar .bg-slate-800 { background-color: var(--madg-knopka-tv); }
#view-madagascar .hover\:bg-slate-700:hover { background-color: var(--madg-knopka-tv-hover); }
#view-madagascar .bg-blue-600 { background-color: var(--madg-primary); }
#view-madagascar .hover\:bg-blue-700:hover { background-color: var(--madg-primary-hover); }
#view-madagascar .bg-amber-600 { background-color: var(--madg-warn); }
#view-madagascar .hover\:bg-amber-700:hover { background-color: var(--madg-warn); }
#view-madagascar .bg-amber-50,
#view-madagascar .hover\:bg-amber-50:hover { background-color: var(--madg-warn-fon); }
#view-madagascar .bg-rose-50,
#view-madagascar .hover\:bg-rose-50:hover { background-color: var(--madg-bad-fon); }
#view-madagascar .bg-rose-200 { background-color: var(--madg-slepo-fon2); }
#view-madagascar .text-white { color: var(--madg-primary-text); }
#view-madagascar .text-slate-900,
#view-madagascar .text-slate-800,
#view-madagascar .text-slate-700 { color: var(--madg-text); }
#view-madagascar .text-slate-600,
#view-madagascar .text-slate-500 { color: var(--madg-muted); }
#view-madagascar .text-slate-400 { color: var(--madg-slabyy); }
#view-madagascar .text-rose-800,
#view-madagascar .text-rose-700,
#view-madagascar .text-rose-600 { color: var(--madg-rose); }
#view-madagascar .text-amber-800,
#view-madagascar .text-amber-700,
#view-madagascar .text-amber-600 { color: var(--madg-amber); }
#view-madagascar .text-emerald-700,
#view-madagascar .text-green-700 { color: var(--madg-emerald); }
#view-madagascar .text-sky-700 { color: var(--madg-sky); }
#view-madagascar .text-orange-700 { color: var(--madg-orange); }
#view-madagascar .border-slate-100,
#view-madagascar .border-slate-200,
#view-madagascar .border-slate-300 { border-color: var(--madg-line); }
#view-madagascar .divide-slate-100 > :not([hidden]) ~ :not([hidden]),
#view-madagascar .divide-slate-200 > :not([hidden]) ~ :not([hidden]) { border-color: var(--madg-line); }
#view-madagascar .border-amber-300,
#view-madagascar .border-amber-400,
#view-madagascar .border-amber-500 { border-color: var(--madg-warn-kant); }
#view-madagascar .border-rose-300,
#view-madagascar .border-rose-400,
#view-madagascar .border-rose-500,
#view-madagascar .border-rose-600 { border-color: var(--madg-bad-kant); }
#view-madagascar .border-sky-500 { border-color: var(--madg-accent); }
#view-madagascar .shadow,
#view-madagascar .shadow-sm { box-shadow: 0 1px 3px var(--madg-ten); }

/* Поля ввода и списки: штатные классы задают только рамку и отступы, фон и
   цвет текста у них по умолчанию белые. */
#view-madagascar input:not([type="checkbox"]):not([type="radio"]),
#view-madagascar select,
#view-madagascar textarea {
  background-color: var(--madg-bg3); color: var(--madg-text);
  border-color: var(--madg-line2); color-scheme: var(--madg-scheme);
  font-size: var(--madg-fs-2);
}
#view-madagascar input::placeholder { color: var(--madg-placeholder); }
#view-madagascar input[type="checkbox"] { accent-color: var(--madg-accent); }
#view-madagascar button:disabled { opacity: .5; }
#view-madagascar button { font-size: var(--madg-fs-2); }
#view-madagascar code { color: var(--madg-text); }
#view-madagascar details > summary { color: var(--madg-text); }
#view-madagascar thead.bg-slate-50,
#view-madagascar thead.sticky { background-color: var(--madg-bg2); }

/* --- свои классы --- */
#view-madagascar .madg-card { background: var(--madg-bg2); border: 1px solid var(--madg-line); border-radius: 6px; }
#view-madagascar .madg-text { color: var(--madg-text); }
#view-madagascar .madg-muted { color: var(--madg-muted); }
#view-madagascar .madg-line { border-color: var(--madg-line); }
#view-madagascar .madg-line-b { border-bottom: 1px solid var(--madg-line); }
#view-madagascar .madg-line-t { border-top: 1px solid var(--madg-line); }
#view-madagascar .madg-aside { background: var(--madg-bg2); border-color: var(--madg-line); }
#view-madagascar .madg-zag {
  font-size: var(--madg-fs-1); text-transform: uppercase; letter-spacing: .06em;
  color: var(--madg-muted); font-weight: 600;
}
#view-madagascar .madg-input {
  background: var(--madg-bg3); color: var(--madg-text); border: 1px solid var(--madg-line2);
  border-radius: 4px; padding: 3px 8px; font-size: var(--madg-fs-2);
}
#view-madagascar .madg-btn {
  background: var(--madg-bg3); color: var(--madg-text); border: 1px solid var(--madg-line2);
  border-radius: 4px; padding: 3px 8px; font-size: var(--madg-fs-2); line-height: 1.3; cursor: pointer;
}
#view-madagascar .madg-btn:hover { background: var(--madg-btn-hover); }
#view-madagascar .madg-btn-primary { background: var(--madg-primary); border-color: var(--madg-primary-kant); color: var(--madg-primary-text); }
#view-madagascar .madg-btn-primary:hover { background: var(--madg-primary-hover); }
#view-madagascar .madg-btn-danger { background: transparent; border-color: var(--madg-bad-kant); color: var(--madg-rose); }
#view-madagascar .madg-btn-danger:hover { background: var(--madg-bad-fon); }
#view-madagascar .madg-btn-akt { background: var(--madg-accent) !important; color: var(--madg-btn-akt-text) !important; border-color: var(--madg-accent) !important; }
#view-madagascar .madg-status { font-size: var(--madg-fs-1); color: var(--madg-muted); }
#view-madagascar .madg-ok { color: var(--madg-ok); }
#view-madagascar .madg-warn { color: var(--madg-warn); }
#view-madagascar .madg-bad2 { color: var(--madg-bad); }
/* Число целей без маячка наземного класса в плитке: цвет наземного слоя, чтобы
   оператор одним взглядом отделял тревогу по борту от тревоги по цели,
   неотличимой от машины (22.09.2026). Тревога поднимается по обеим. */
#view-madagascar .madg-nazem-cifra { color: var(--madg-nazem); font-weight: 500; }
/* Место под значок типа цели в панели условных знаков (22.09.2026): размер
   закреплён, чтобы строка легенды не прыгала, пока рисунок не встал. */
#view-madagascar .madg-leg-znak {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; flex: 0 0 20px; line-height: 0;
}
#view-madagascar .madg-leg-znak img { width: 20px; height: 20px; display: block; }

/* Плитки сводки над картой: ответ на четыре вопроса оператора за две секунды.

   Размер плитки закреплён (владелец 20.09.2026: «Страница опять скачет.
   Сделай фиксированные поля в верхней панели»). Прежде ряд был резиновым:
   плитка росла по содержимому (замер 20.09: «станции» 193,06…262,69 px,
   ширина ряда 1907…1989 px), а при нехватке места ряд листался вбок и полоса
   прокрутки добавляла себе высоту – карта под рядом уезжала вниз и обратно.

   Теперь ряд – сетка равных долей: сколько плиток показано, на столько равных
   колонок и делится ширина (grid-auto-columns: 1fr). Строк в плитке ровно три,
   каждая в одну линию с обрезкой многоточием, поэтому высота считается
   арифметикой, а не содержимым: две подписи размера fs-1, значение размера
   fs-3, отступы 4+4 и рамки 1+1. Полную строку несёт подсказка при наведении
   (title ставит madgUzelTekst). */
#view-madagascar .madg-shapka {
  background: var(--madg-bg2); border-bottom: 1px solid var(--madg-line);
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr);
}
#view-madagascar .madg-tile {
  --madg-tile-h: calc(10px + 2 * var(--madg-lh) * var(--madg-fs-1)
                           + var(--madg-lh) * var(--madg-fs-3));
  background: var(--madg-bg3); border: 1px solid var(--madg-line); border-radius: 6px;
  padding: 4px 10px; min-width: 0; white-space: nowrap; overflow: hidden;
  height: var(--madg-tile-h); min-height: var(--madg-tile-h);
  font-variant-numeric: tabular-nums;
}
/* Строка плитки: одна линия, лишнее – многоточием. Пустая подпись держит свою
   линию (min-height), иначе плитка без подписи подняла бы значение вверх. */
#view-madagascar .madg-tile-zag,
#view-madagascar .madg-tile-znach,
#view-madagascar .madg-tile-pod {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  line-height: var(--madg-lh);
}
#view-madagascar .madg-tile-zag { font-size: var(--madg-fs-1); color: var(--madg-muted); text-transform: uppercase; letter-spacing: .05em; }
#view-madagascar .madg-tile-znach { font-size: var(--madg-fs-3); font-weight: 600; color: var(--madg-text); }
#view-madagascar .madg-tile-pod { font-size: var(--madg-fs-1); color: var(--madg-muted); min-height: calc(var(--madg-lh) * var(--madg-fs-1)); }
#view-madagascar .madg-tile-ok { border-color: var(--madg-ok-kant); }
#view-madagascar .madg-tile-warn { border-color: var(--madg-warn-kant); }
#view-madagascar .madg-tile-warn .madg-tile-znach { color: var(--madg-warn); }
#view-madagascar .madg-tile-bad { border-color: var(--madg-bad-kant); }
#view-madagascar .madg-tile-bad .madg-tile-znach { color: var(--madg-bad); }
#view-madagascar .madg-tile-alert {
  border-color: var(--madg-bez); background: var(--madg-bez-fon);
  animation: madgTilePulse 1.2s ease-in-out infinite;
}
#view-madagascar .madg-tile-alert .madg-tile-znach { color: var(--madg-bez); }
@keyframes madgTilePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(249, 115, 22, .55); }
  50%      { box-shadow: 0 0 0 6px rgba(249, 115, 22, 0); }
}

/* Меню «Слои»: одна кнопка в углу карты, выпадающая панель под ней.
   Прежняя развёрнутая легенда занимала половину узкой карты дюжиной флажков
   (замечание владельца 16.09.2026: «куча галочек-флажков»), поэтому она
   свёрнута в кнопку и при входе закрыта. */
#view-madagascar .madg-sloi-menu { position: relative; }
/* Панель выпадает от левого края кнопки вправо; класс madg-legenda-sprava
   (ставит madgSloiMenu, когда справа места нет) прижимает её к правому краю. */
#view-madagascar .madg-legenda {
  position: absolute; top: calc(100% + 4px); left: 0; right: auto; z-index: 20;
  background: var(--madg-plashka-bg); border: 1px solid var(--madg-line); border-radius: 6px;
  color: var(--madg-text); font-size: var(--madg-fs-1); width: 17rem; max-width: 80vw;
  max-height: 70vh; overflow-y: auto; box-shadow: 0 2px 8px var(--madg-ten);
}
#view-madagascar .madg-legenda.madg-legenda-sprava { left: auto; right: 0; }
#view-madagascar .madg-leg-gruppa { padding: 5px 10px 1px; font-size: var(--madg-fs-1); text-transform: uppercase; letter-spacing: .05em; color: var(--madg-muted); }
#view-madagascar .madg-leg { display: flex; align-items: center; gap: 6px; padding: 2px 10px; cursor: pointer; line-height: 1.3; }
#view-madagascar .madg-leg:hover { background: var(--madg-hover); }
#view-madagascar .madg-leg input { margin: 0; }
/* Текст пункта – один флекс-элемент, который переносится по словам; пара
   «образец + слово» не рвётся. Прежде текстовые узлы и точки внутри фразы
   были отдельными флекс-элементами, и пункт ломался посреди слова
   (ревью 4, пункт 50). */
#view-madagascar .madg-leg-txt { flex: 1 1 auto; min-width: 0; }
#view-madagascar .madg-leg-para { white-space: nowrap; }
#view-madagascar .madg-leg-txt .madg-leg-dot { vertical-align: middle; }
#view-madagascar .madg-leg-info { cursor: default; padding-left: 26px; }
#view-madagascar .madg-leg-sw { display: inline-block; width: 14px; height: 10px; flex: 0 0 auto; border-radius: 2px; }
#view-madagascar .madg-leg-dot { display: inline-block; width: 10px; height: 10px; flex: 0 0 auto; border-radius: 50%; }
#view-madagascar .madg-leg-liniya { display: inline-block; width: 16px; height: 0; flex: 0 0 auto; border-top: 2px solid; }
#view-madagascar .madg-leg-punktir { border-top-style: dashed; }
#view-madagascar .madg-leg-pod { padding: 4px 10px 6px; font-size: var(--madg-fs-1); color: var(--madg-muted); line-height: 1.3; border-top: 1px solid var(--madg-line); }
/* Легенда: панель условных знаков у левого края карты (16.18.2-madg). Прежняя
   справка «Знаки ?» выпадала из верхней полосы и закрывала правый верх карты;
   владелец 17.09.2026 попросил легенду слева и отключаемую. Верхний отступ
   107 px – под кнопками масштаба MapLibre в левом верхнем углу: отступ группы
   10 px, три кнопки по 29 px, рамка группы 2 px и зазор 8 px; панель их не
   закрывает. По высоте панель ограничена картой (снизу тот же отступ 10 px) и
   листается внутри, шапка с крестиком при прокрутке остаётся сверху. Снизу
   панель не доходит до края на 44 px: там стоит линейка масштаба MapLibre
   (слева внизу с 16.19.0-madg, отступ 10 px и высота около 24 px). Ширина
   17 rem (272 px при шрифте 16 px), на узкой карте – не шире карты без
   отступов. Образец линии рисуется полосой, а не границей: border-style:
   dashed рисует один и тот же пунктир для всех слоёв, а оператору надо
   различать рисунки. Доли повторяющегося градиента взяты ровно те же, что
   line-dasharray слоя карты (6 и 4, 4 и 3, 4 и 2, 3 и 1,5, 2 и 4, 2 и 1,5),
   поэтому образец и линия на карте совпадают. Цвет берётся из currentColor:
   он задан в разметке переменной темы. */
#view-madagascar .madg-znaki {
  position: absolute; left: 10px; top: 107px; z-index: 10; box-sizing: border-box;
  width: 17rem; max-width: calc(100% - 20px); max-height: calc(100% - 151px);
  overflow-y: auto; background: var(--madg-plashka-bg); border: 1px solid var(--madg-line);
  border-radius: 6px; color: var(--madg-text); font-size: var(--madg-fs-1);
  box-shadow: 0 2px 8px var(--madg-ten);
}
/* Шапка непрозрачная (--madg-bg2, а не полупрозрачный фон плашки): иначе при
   прокрутке сквозь неё просвечивают уходящие под неё строки. */
#view-madagascar .madg-znaki-shapka {
  position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between;
  padding: 4px 4px 4px 10px; background: var(--madg-bg2); border-bottom: 1px solid var(--madg-line);
}
#view-madagascar .madg-znaki-zakryt {
  background: transparent; border: 0; border-radius: 4px; color: var(--madg-muted);
  font-size: var(--madg-fs-3); line-height: 1; padding: 2px 7px; cursor: pointer;
}
#view-madagascar .madg-znaki-zakryt:hover { background: var(--madg-hover); color: var(--madg-text); }
#view-madagascar .madg-leg-punkt {
  display: inline-block; width: 22px; height: 2px; flex: 0 0 auto; align-self: flex-start;
  margin-top: 6px; background-repeat: repeat-x;
}
#view-madagascar .madg-p-splosh { background-image: linear-gradient(currentColor, currentColor); }
#view-madagascar .madg-p-6-4 { background-image: repeating-linear-gradient(90deg, currentColor 0 6px, transparent 6px 10px); }
#view-madagascar .madg-p-4-3 { background-image: repeating-linear-gradient(90deg, currentColor 0 4px, transparent 4px 7px); }
#view-madagascar .madg-p-4-2 { background-image: repeating-linear-gradient(90deg, currentColor 0 4px, transparent 4px 6px); }
#view-madagascar .madg-p-3-15 { background-image: repeating-linear-gradient(90deg, currentColor 0 3px, transparent 3px 4.5px); }
#view-madagascar .madg-p-2-4 { background-image: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 6px); }
#view-madagascar .madg-p-2-15 { background-image: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 3.5px); }
/* Образец вертикального пунктира высоты цели (25.09.2026): штрих 4, пропуск 3,
   как у пунктира на карте. */
#view-madagascar .madg-leg-vert {
  display: inline-block; width: 2px; height: 14px; flex: 0 0 auto; align-self: flex-start;
  margin: 0 10px; background-image: repeating-linear-gradient(180deg, currentColor 0 4px, transparent 4px 7px);
}
/* Пояснения в легенде идут в несколько строк, поэтому образец прижат к верху,
   а сама строка не центрируется по вертикали. */
#view-madagascar .madg-znaki .madg-leg-info { align-items: flex-start; padding-left: 10px; }
#view-madagascar .madg-znaki .madg-leg-info > span:last-child { flex: 1 1 auto; min-width: 0; }
#view-madagascar .madg-znaki .madg-leg-info > span .madg-leg-dot { vertical-align: middle; }
#view-madagascar .madg-leg-nizh { display: flex; gap: 6px; padding: 6px 10px; border-top: 1px solid var(--madg-line); }

/* Плашки на карте (счётчики, откат подложки, ослепление). */
#view-madagascar .madg-plashka {
  background: var(--madg-plashka-bg); border: 1px solid var(--madg-line); border-radius: 4px;
  color: var(--madg-text); font-size: var(--madg-fs-1); padding: 3px 8px; box-shadow: 0 1px 3px var(--madg-ten);
}
/* Баннер «Наблюдения нет»: непрозрачный фон панели с красным кантом –
   полупрозрачная красноватая заливка над спутником не читалась, а чип станции
   просвечивал сквозь неё (ревью 4, пункт 30). Заголовок – цветом тревоги. */
#view-madagascar .madg-banner-bad {
  background: var(--madg-bg2); border: 1px solid var(--madg-slepo); border-radius: 6px;
  color: var(--madg-text); font-size: var(--madg-fs-2); padding: 6px 10px; box-shadow: 0 1px 4px var(--madg-ten2);
}
#view-madagascar .madg-banner-bad b { color: var(--madg-bad); }
/* Плашка, которая обрезается многоточием (ADS-B): подробность – в подсказке. */
#view-madagascar .madg-obrez {
  max-width: 18rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
#view-madagascar .madg-banner-warn {
  background: var(--madg-warn-fon); border: 1px solid var(--madg-warn-kant); border-radius: 4px;
  color: var(--madg-tekst-warn); font-size: var(--madg-fs-1); padding: 3px 8px;
}

/* Вкладки правой колонки. */
#view-madagascar .madg-pane-btn {
  position: relative; background: transparent; color: var(--madg-muted);
  border: 1px solid transparent; border-bottom: 0; border-radius: 4px 4px 0 0;
  padding: 5px 10px; font-size: var(--madg-fs-2); cursor: pointer;
}
#view-madagascar .madg-pane-btn:hover { color: var(--madg-text); }
#view-madagascar .madg-pane-btn.madg-pane-akt { background: var(--madg-bg3); color: var(--madg-text); border-color: var(--madg-line); }
#view-madagascar .madg-badge {
  display: inline-block; min-width: 16px; padding: 0 4px; margin-left: 4px; border-radius: 8px;
  background: var(--madg-bad); color: var(--madg-primary-text); font-size: var(--madg-fs-1); line-height: 16px; text-align: center; font-weight: 600;
}
#view-madagascar .madg-badge:empty { display: none; }

/* Чипы-выключатели наложений и фильтров. */
#view-madagascar .madg-chip-btn {
  display: inline-flex; align-items: center; gap: 4px; padding: 2px 7px; border-radius: 10px;
  border: 1px solid var(--madg-line2); background: var(--madg-bg3); color: var(--madg-muted);
  font-size: var(--madg-fs-1); cursor: pointer; user-select: none; line-height: 1.3;
}
#view-madagascar .madg-chip-btn.madg-chip-akt { color: var(--madg-text); border-color: var(--madg-accent); }
#view-madagascar .madg-chip-btn input { margin: 0; }
#view-madagascar .madg-priznak {
  display: inline-block; padding: 0 5px; border-radius: 3px; font-size: var(--madg-fs-1); line-height: 15px;
  border: 1px solid var(--madg-line2); color: var(--madg-muted); white-space: nowrap; margin-right: 3px;
}
#view-madagascar .madg-priznak-ok { color: var(--madg-ok); border-color: var(--madg-ok-kant); }
#view-madagascar .madg-priznak-peleng { color: var(--madg-peleng); border-color: var(--madg-peleng-kant); }
#view-madagascar .madg-priznak-bez { color: var(--madg-bez); border-color: var(--madg-bez-kant); }
#view-madagascar .madg-priznak-warn { color: var(--madg-warn); border-color: var(--madg-warn-kant); }
#view-madagascar .madg-priznak-bad { color: var(--madg-bad); border-color: var(--madg-bad-kant); }

/* Таблицы. */
#view-madagascar table { font-size: var(--madg-fs-2); }
#view-madagascar table thead th { color: var(--madg-muted); font-weight: 500; background: var(--madg-bg2); }
#view-madagascar table tbody tr { border-bottom: 1px solid var(--madg-line); height: 24px; }
#view-madagascar table tbody tr.madg-stroka-kn { cursor: pointer; }
#view-madagascar table tbody tr.madg-stroka-kn:hover { background: var(--madg-hover); }
#view-madagascar table tbody tr.madg-stroka-vyd { background: var(--madg-vydelenie); }

/* Картинка дальность-доплер и модальное окно. */
#view-madagascar .madg-rd { display: block; width: 100%; background: var(--madg-rd-fon); border-radius: 4px; cursor: crosshair; }
#view-madagascar .madg-rd-kursor { min-height: 16px; font-size: var(--madg-fs-1); color: var(--madg-text); font-family: ui-monospace, monospace; }
/* Подпись под картинкой. Сводка кадра – длинная строка, которая от смены чисел
   переносится по-разному: замер 20.09.2026 показал 15,13 px разницы (одна
   строка) на 22 ширинах колонки из 111 в диапазоне 284…704 px. Цифры
   моноширинные, а на колонке постоянной ширины (lg и шире правая колонка –
   27rem) под сводку отведены четыре строки: перенос внутри отведённого места
   ничего ниже не двигает. На узком экране колонка тянется во всю ширину,
   сводка укладывается в две строки, и место под четыре там ни к чему.
   Предупреждения – по строке на каждое, в одну линию с обрезкой многоточием;
   полный текст даёт подсказка при наведении (madgRdTekst). */
#view-madagascar .madg-rd-svodka {
  font-variant-numeric: tabular-nums; line-height: var(--madg-lh);
}
@media (min-width: 1024px) {
  #view-madagascar .madg-rd-svodka {
    min-height: calc(4 * var(--madg-lh) * var(--madg-fs-1));
  }
}
#view-madagascar .madg-rd-predupr {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  line-height: var(--madg-lh);
}
#view-madagascar .madg-modal { position: fixed; inset: 0; z-index: 60; background: var(--madg-bg); display: flex; flex-direction: column; padding: 12px; }
/* Своё display: flex старше utility-класса hidden Tailwind, поэтому скрытие
   модального окна прописано здесь же с той же специфичностью. */
#view-madagascar .madg-modal.hidden { display: none; }
#view-madagascar .madg-modal canvas { flex: 1 1 auto; min-height: 0; width: 100%; background: var(--madg-rd-fon); border-radius: 6px; cursor: crosshair; }

/* Лента событий. */
#view-madagascar .madg-lenta-row {
  display: grid; grid-template-columns: 4px 1fr; gap: 8px; padding: 5px 12px;
  border-bottom: 1px solid var(--madg-line); font-size: var(--madg-fs-2); line-height: var(--madg-lh);
}
#view-madagascar .madg-lenta-row.madg-kn { cursor: pointer; }
#view-madagascar .madg-lenta-row.madg-kn:hover { background: var(--madg-hover); }
#view-madagascar .madg-lenta-ur { border-radius: 2px; background: var(--madg-muted); }
#view-madagascar .madg-lenta-ur.trevoga { background: var(--madg-bad); }
#view-madagascar .madg-lenta-ur.vnimanie { background: var(--madg-warn); }
#view-madagascar .madg-lenta-ur.svedeniya { background: var(--madg-accent); }
#view-madagascar .madg-lenta-meta { font-size: var(--madg-fs-1); color: var(--madg-muted); font-family: ui-monospace, monospace; }
#view-madagascar .madg-fade { animation: madgFadeIn .3s ease-out; }
@keyframes madgFadeIn { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
#view-madagascar .madg-polosa { background: var(--madg-bg2); border-top: 1px solid var(--madg-line); font-size: var(--madg-fs-1); color: var(--madg-muted); min-height: 24px; }
#view-madagascar .madg-polosa .madg-polosa-el { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#view-madagascar .madg-polosa .trevoga { color: var(--madg-rose); }
#view-madagascar .madg-polosa .vnimanie { color: var(--madg-amber); }

/* Спарклайны в панели «Станции». */
#view-madagascar .madg-spark { display: grid; grid-template-columns: 7.5rem 1fr 4.5rem; align-items: center; gap: 6px; font-size: var(--madg-fs-1); }
#view-madagascar .madg-spark svg { width: 100%; height: 26px; display: block; color: var(--madg-accent); }
#view-madagascar .madg-spark-zn { text-align: right; font-family: ui-monospace, monospace; color: var(--madg-text); }

/* Маркеры станций и вышек, попапы и контролы MapLibre. */
#view-madagascar .madg-chip { background: var(--madg-plashka-bg); border-color: var(--madg-line2); box-shadow: 0 1px 3px var(--madg-ten2); }
#view-madagascar .madg-name { color: var(--madg-text); }
#view-madagascar .madg-meta { color: var(--madg-muted); }
#view-madagascar .madg-bad { color: var(--madg-rose); }
#view-madagascar .madg-dot { border-color: var(--madg-mk-kant); box-shadow: 0 0 0 1px var(--madg-mk-obvodka); }
#view-madagascar .madg-tw { text-shadow: 0 0 3px var(--madg-tw-ten), 0 0 2px var(--madg-tw-ten); }
#view-madagascar .madg-tmk {
  background: var(--madg-plashka-bg); color: var(--madg-text); border-left: 3px solid var(--madg-accent);
  border-radius: 6px; padding: 3px 7px; white-space: nowrap; line-height: 1.25; font-size: var(--madg-fs-1);
  box-shadow: 0 1px 4px var(--madg-ten2); pointer-events: none;
}
#madgMap .maplibregl-popup-content { background: var(--madg-popup-bg); color: var(--madg-popup-text); border: 1px solid var(--madg-popup-line); box-shadow: 0 2px 8px var(--madg-ten2); font-size: var(--madg-fs-2); }
#madgMap .maplibregl-popup-close-button { color: var(--madg-muted); }
#madgMap .maplibregl-popup-anchor-bottom .maplibregl-popup-tip,
#madgMap .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip,
#madgMap .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip { border-top-color: var(--madg-popup-bg); }
#madgMap .maplibregl-popup-anchor-top .maplibregl-popup-tip,
#madgMap .maplibregl-popup-anchor-top-left .maplibregl-popup-tip,
#madgMap .maplibregl-popup-anchor-top-right .maplibregl-popup-tip { border-bottom-color: var(--madg-popup-bg); }
#madgMap .maplibregl-popup-anchor-left .maplibregl-popup-tip { border-right-color: var(--madg-popup-bg); }
#madgMap .maplibregl-popup-anchor-right .maplibregl-popup-tip { border-left-color: var(--madg-popup-bg); }
#madgMap .madg-popup .maplibregl-popup-content { padding: 6px 9px; pointer-events: none; }
/* Закреплённая подсказка (16.20.8): крестик нажимается и пальцем, текст не
   ложится под крестик. Подсказка наведения курсор по-прежнему пропускает.
   Подсказка встаёт над панелью кнопок карты (#madgUpravlenie, z-30): у объекта
   под верхним краем карты крестик иначе уходил под кнопки (проверка стенда
   25.09.2026). */
#madgMap .maplibregl-popup { z-index: 35; }
#madgMap .madg-popup-pin .maplibregl-popup-content { pointer-events: auto; padding-right: 28px; }
#madgMap .madg-popup-pin .maplibregl-popup-close-button { font-size: 20px; line-height: 20px; padding: 3px 8px; }
/* Высота цели над картой (25.09.2026): холст слоя высоты лежит поверх холста
   карты и события мыши пропускает. */
#madgMap .madg-height-canvas { position: absolute; left: 0; top: 0; pointer-events: none; }
#madgMap .maplibregl-ctrl-group { background: var(--madg-popup-bg); border: 1px solid var(--madg-popup-line); }
#madgMap .maplibregl-ctrl-group button + button { border-top-color: var(--madg-popup-line); }
#madgMap .maplibregl-ctrl-group button .maplibregl-ctrl-icon { filter: invert(var(--madg-ctrl-invert)); }
#madgMap .maplibregl-ctrl-attrib { background: var(--madg-plashka-bg); color: var(--madg-muted); font-size: var(--madg-fs-1); }
#madgMap .maplibregl-ctrl-attrib a { color: var(--madg-muted); }
#madgMap .maplibregl-ctrl-scale { background: var(--madg-plashka-bg); color: var(--madg-text); border-color: var(--madg-muted); font-size: var(--madg-fs-1); }

/* Страховка для разметки, которую порождает скрипт штатными классами Tailwind:
   тем же приёмом специфичности размерные классы сводятся к трём переменным. */
#view-madagascar .text-\[10px\],
#view-madagascar .text-\[11px\],
#view-madagascar .text-xs { font-size: var(--madg-fs-1); }
#view-madagascar .text-\[12px\],
#view-madagascar .text-sm { font-size: var(--madg-fs-2); }
#view-madagascar .text-\[13px\],
#view-madagascar .text-base { font-size: var(--madg-fs-3); }
