/* Спецпроект «Закрытые школы эрзянских сёл, 2010–2026». Стили из исходника страницы, приведённые к сайту:
   шрифты и фон — сайтовые, всё под .zs (чтобы не задеть остальной сайт). Цвета категорий и границы
   Эрзянь Мастор НЕ менять: они совпадают со статичными картами и иллюстрацией. */
body.zs main{max-width:68rem}
/* текстовые блоки — в колонке статьи (46rem, как .art на странице материала),
   график, карта и реестр — на всю ширину 68rem */
.zs>header,.zs>.method,.zs>.nojs,.zs>.keywrap{width:100%;max-width:46rem;justify-self:center}
.zs{
  --panel:#ffffff; --fg:var(--ink); --rule:var(--line);
  --accent:#9b2d20; --zpaper:#f3f1ea; --em:#6b3fa0; --reliefop:1; --likv:#9b2d20; --isk:#5e3a33; --fil:#c98a1b; --pon:#4f6d8a;
  --display:var(--serif); --body:var(--sans); --mono:ui-monospace,Consolas,"Courier New",monospace;
  display:grid;gap:28px;font:15px/1.5 var(--body);color:var(--fg)}
.zs *{box-sizing:border-box}
.zs h1{font:700 clamp(26px,4vw,38px)/1.15 var(--display);margin:6px 0 0;text-wrap:balance}
.zs h2{font:700 20px/1.3 var(--display);margin:0 0 10px}
.zs .lede{margin:12px 0 0;font:17.5px/1.7 var(--serif)}
.zs .lede a{color:var(--red-dark);text-decoration:underline}
.zs .big{color:var(--accent)}
.zs .key{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;color:var(--muted)}
.zs .key span{display:inline-flex;align-items:center;gap:6px}
.zs .dot{width:11px;height:11px;border-radius:50%;display:inline-block;flex:none}
.zs .dot.likv{background:var(--likv)} .zs .dot.isk{background:var(--isk)} .zs .dot.fil{background:var(--fil)} .zs .dot.pon{background:var(--pon)}
.zs .dot.ghost{opacity:.28}
.zs .cat{font:inherit;font-size:13px;color:var(--fg);background:var(--panel);border:1px solid var(--rule);border-radius:999px;padding:4px 11px 4px 8px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.zs .cat[aria-pressed="false"]{color:var(--muted);background:transparent;text-decoration:line-through}
.zs .cat[aria-pressed="false"] .dot{opacity:.25}
.zs .cat:focus-visible{outline:2px solid var(--fg);outline-offset:2px}
.zs .keyhint{font-size:12px;color:var(--muted);margin:0 0 6px}
.zs .grid2{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;align-items:start}
.zs .grid2>section:nth-child(2){order:-1}
.zs .panel{background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:16px;min-width:0}
.zs svg text{fill:var(--muted);font:12px var(--body)}
.zs .yearctl{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}
.zs .yearctl input{flex:1;min-width:160px;accent-color:var(--accent)}
.zs .yearctl output{font:700 22px var(--mono);font-variant-numeric:tabular-nums;min-width:4ch}
.zs .mapwrap{position:relative;border:1px solid var(--rule);border-radius:4px;overflow:hidden;background:var(--zpaper)}
.zs .mapwrap{margin:0 auto}
/* высоту карты ограничиваем через ширину обёртки (JS: max-width = 72vh × пропорция), а не max-height у svg:
   иначе svg становится шире своего viewBox и браузер центрирует карту с пустыми полями по бокам */
.zs #map{display:block;width:100%;touch-action:none;cursor:grab;user-select:none}
.zs #map.drag{cursor:grabbing}
.zs #relief,.zs .relief2{opacity:var(--reliefop)}
.zs .zoomctl{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;gap:4px}
.zs .zoomctl button{width:34px;height:34px;font:600 18px/1 var(--body);background:var(--panel);color:var(--fg);border:1px solid var(--rule);border-radius:4px;cursor:pointer}
.zs .zoomctl button:hover{border-color:var(--fg)}
.zs .b-reg{fill:none;stroke:var(--muted);stroke-opacity:.85;stroke-width:1}
.zs .b-ray{fill:none;stroke:var(--muted);stroke-opacity:.6;stroke-width:.6;stroke-dasharray:3 2}
.zs .town-lbl{fill:var(--fg);font-family:var(--body);font-weight:700;paint-order:stroke;stroke:var(--zpaper);stroke-linejoin:round}
.zs .town-sq{fill:var(--fg)}
.zs .em-terr{fill:var(--em);fill-opacity:.13;stroke:none}
.zs .em-line{fill:none;stroke:var(--em);stroke-opacity:.95;stroke-width:2.2;stroke-linejoin:round}
.zs #map.noterr #emterr,.zs #map.noterr #emline{display:none}
.zs .swg{display:inline-block;width:16px;height:0;border-top:1px solid var(--muted);vertical-align:middle;margin-right:2px}
.zs .sw{display:inline-block;width:16px;height:11px;border:2px solid var(--em);background:color-mix(in srgb,var(--em) 18%,transparent);border-radius:2px}
.zs .byline{font:700 13px var(--body);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:14px 0 4px}
.zs .datanote{font-size:13px;color:var(--muted);margin:14px 0 0}
.zs .mapopts{display:block;font-size:13px;line-height:1.45;color:var(--muted);margin-top:8px}
.zs .mapopts input{vertical-align:-2px;margin:0 6px 0 0}
.zs .mapopts a{color:var(--red-dark);text-decoration:underline}
.zs .reg-lbl{fill:var(--muted);font-family:var(--body);font-weight:700;opacity:.55;pointer-events:none}
.zs .mapdot{cursor:pointer}
.zs #towns text,.zs #towns rect{pointer-events:none}   /* подписи городов лежат поверх точек и перехватывали клик */
.zs button:focus-visible,.zs select:focus-visible,.zs input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.zs .note{font-size:12px;color:var(--muted);margin:8px 0 0}
.zs .filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px;font-size:13px}
.zs select{font:inherit;padding:4px 6px;background:var(--panel);color:var(--fg);border:1px solid var(--rule);border-radius:4px;max-width:100%}
.zs .tbl{overflow-x:auto}
.zs table{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}
.zs th,.zs td{text-align:left;vertical-align:top;padding:7px 8px;border-bottom:1px solid var(--rule)}
.zs th{font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--panel)}
.zs td.y{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.zs td a{color:var(--fg);text-decoration:underline}
.zs .pill{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.zs .conf{font-size:11px;color:var(--muted)}
.zs details summary{cursor:pointer;color:var(--muted);font-size:12px}
.zs details p{margin:4px 0;font-size:12px}
.zs .csv{font-size:13px;margin:12px 0 0}
.zs .csv a{color:var(--red-dark);text-decoration:underline}
.zs .method{font-size:14px;color:var(--muted)}
.zs .method p{margin:0 0 8px}
.zs .nojs img{display:block;max-width:100%;height:auto;border:1px solid var(--rule)}
@media (prefers-reduced-motion:no-preference){.zs .dot{transition:opacity .2s}}
.zs .zs-pop{position:absolute;z-index:3;max-width:min(300px,80%);background:var(--panel);border:1px solid var(--rule);border-radius:6px;
  padding:10px 30px 10px 12px;font-size:13px;line-height:1.4;box-shadow:0 2px 10px rgba(0,0,0,.08);display:flex;flex-direction:column;gap:3px}
.zs .zs-pop b{font:700 14px/1.3 var(--display)}
.zs .zs-pop-v{display:inline-flex;align-items:center;gap:6px}
.zs .zs-pop-x{position:absolute;top:4px;right:4px;width:24px;height:24px;border:0;background:transparent;color:var(--muted);font:18px/1 var(--body);cursor:pointer}
.zs .zs-pop-x:hover{color:var(--fg)}
/* системная рамка фокуса у svg-круга масштабируется вместе с картой и закрывает точку чёрным — свой признак фокуса обводкой */
.zs .mapdot:focus{outline:none}
.zs .mapdot:focus-visible{stroke:var(--fg)}
