.map { height: auto; width: min(100%, calc(100vh - 420px), 860px); aspect-ratio: 1 / 1; margin: 0 auto; border-radius: 9px; overflow: hidden; background: #eef1ed; }
.map-scale { display: grid; grid-template-columns: max-content minmax(80px,1fr) max-content; align-items: center; gap: 12px; color: #244d3b; font-size: 12px; font-weight: 700; margin-top: 10px; }
.map-scale i { height: 13px; flex: 1; border-radius: 3px; background: linear-gradient(90deg, #d93434 0%, #ffd33e 50%, #1aa448 100%); }
.map-scale-labels { display:flex; justify-content:space-between; margin-top:4px; color:#68786f; font-size:10px; }
.leaflet-control-attribution { font-size: 9px !important; }
@media (max-width: 560px) { .map { width: 100%; } }

.filters select, #hybridSearch { display: none; }
.multi-filter { position: relative; margin-top: 5px; }
.multi-trigger { width: 100%; min-height: 37px; padding: 9px 32px 9px 10px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border: 1px solid #cedbd1; border-radius: 8px; background: #fff; color: #00261b; font: 12px Inter, sans-serif; cursor: pointer; position: relative; }
.multi-trigger::after { content: '⌄'; position: absolute; right: 11px; color: #0a4a35; font-weight: 700; }
.multi-panel { display: none; position: absolute; z-index: 30; top: calc(100% + 4px); left: 0; right: 0; background: #fff; border: 1px solid #b8cbbd; border-radius: 9px; padding: 8px; box-shadow: 0 14px 28px rgba(0,38,27,.18); }
.multi-filter.open .multi-panel { display: block; }
.multi-filter.open-up .multi-panel { top: auto; bottom: calc(100% + 4px); }
.multi-panel input[type='search'] { width: 100%; margin: 0 0 7px; border: 1px solid #cedbd1; border-radius: 6px; padding: 8px; font: 12px Inter, sans-serif; }
.multi-options { max-height: 220px; overflow: auto; }
.multi-options label { display: flex; gap: 8px; align-items: center; padding: 7px 4px; margin: 0; color: #00261b; font-size: 12px; cursor: pointer; }
.multi-options label:hover { background: #edf4ed; }
.multi-options input { width: auto; margin: 0; }
.multi-options p { margin: 8px 4px; color: #68786f; font-size: 11px; }

.boxplots { overflow-x: auto; }
.boxplots svg { display: block; min-width: 900px; width: 100%; height: 500px; }
.boxplots .grid { stroke: #e5e2e1; stroke-width: 1; }
.boxplots .axis-label { fill: #68786f; font: 11px Inter, sans-serif; }
.boxplots .hybrid-label { fill: #00261b; font: 600 11px Inter, sans-serif; }
.boxplots .brand-label { fill:#68786f; font:10px Inter,sans-serif; }.boxplots .box-label{fill:#506057;font:10px Inter,sans-serif}.boxplots .box-label.median{fill:#00261b;font-weight:800}
.boxplots [data-hybrid] { cursor: pointer; }
.boxplots .box-label{font-size:9px}.boxplots .hybrid-label{font-size:10px}.boxplots .brand-label{font-size:9px}
.boxplots .box-value{fill:#00261b;font:700 11px Inter,Arial,sans-serif}

.presentation-controls { display:grid; grid-template-columns: minmax(180px,1fr) minmax(220px,1.4fr) auto; gap:12px; align-items:end; margin:18px 0; }
.presentation-controls:has(>button:only-child){display:flex;justify-content:flex-end}
.presentation-controls label { color:#68786f; font-size:11px; }.presentation-controls input,.presentation-controls select { display:block; width:100%; margin-top:5px; padding:9px; border:1px solid #cedbd1; border-radius:7px; background:#fff; color:#00261b; font:12px Inter,sans-serif; }
.presentation-controls .primary { margin:0; height:37px; }
.presentation-layout { display:grid; grid-template-columns:210px minmax(0,1fr); gap:16px; align-items:start; }.slide-list { display:grid; gap:6px; }.slide-list button { border:1px solid #d6e2d7; border-radius:7px; padding:10px; text-align:left; background:#fff; color:#063b2b; font:700 12px Manrope,sans-serif; cursor:pointer; }.slide-list button.active { background:#0a4a35; color:#fff; border-color:#0a4a35; }
.slide-preview { aspect-ratio:16/9; min-height:480px; overflow:hidden; background:#fff; border:1px solid #d7dfd8; box-shadow:0 14px 30px rgba(0,38,27,.12); display:flex; flex-direction:column; }.slide-head { display:flex; justify-content:space-between; align-items:flex-start; padding:28px 34px 18px; }.slide-head h1 { margin:0; font:800 32px Manrope,sans-serif; color:#00261b; }.slide-head p { margin:7px 0 0; color:#68786f; font-size:13px; }.slide-brand { color:#0a4a35; font:800 15px Manrope,sans-serif; }.slide-body { flex:1; padding:10px 34px 22px; min-height:0; }.slide-footer { background:#00261b; color:#fff; padding:12px 34px; font:700 12px Manrope,sans-serif; display:flex; justify-content:space-between; }.slide-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }.slide-kpis div { padding:15px; background:#f3f5ee; border-radius:8px; }.slide-kpis span { display:block; color:#68786f; font-size:11px; }.slide-kpis b { display:block; margin-top:5px; font:800 23px Manrope,sans-serif; }.slide-bars { display:grid; gap:13px; margin-top:12px; }.slide-bar { display:grid; grid-template-columns:170px 1fr 58px; align-items:center; gap:10px; font-size:12px; }.slide-bar i { display:block; height:22px; background:#0a4a35; border-radius:3px; }.slide-table { width:100%; border-collapse:collapse; font-size:12px; }.slide-table th,.slide-table td { border-bottom:1px solid #e5e2e1; padding:9px 6px; text-align:left; }.slide-table th { color:#68786f; font-size:10px; text-transform:uppercase; }.slide-note { margin-top:18px; padding:13px 15px; border-left:4px solid #ffd95a; background:#fcf7e8; font-size:13px; line-height:1.45; }
@media(max-width:900px){.presentation-layout{grid-template-columns:1fr}.slide-list{grid-template-columns:repeat(3,1fr)}.slide-preview{min-height:0}.presentation-controls{grid-template-columns:1fr 1fr}.presentation-controls .primary{grid-column:1/-1}}@media(max-width:560px){.presentation-controls,.slide-list{grid-template-columns:1fr}.slide-head{padding:16px}.slide-head h1{font-size:20px}.slide-body{padding:8px 16px}.slide-kpis{grid-template-columns:1fr 1fr}.slide-bar{grid-template-columns:85px 1fr 42px}.slide-footer{padding:10px 16px;font-size:10px}}
@media print { .presentation-controls,.slide-list{display:none!important}.presentation-layout{display:block}.slide-preview{width:100%;min-height:0;box-shadow:none;border:0}.slide-head{padding:28px 34px 18px}.slide-body{padding:10px 34px 22px} }

.slide-list { max-height: 680px; overflow: auto; padding-right: 3px; }
.presentation-chart-title { margin: 18px 0 6px; font: 700 15px Manrope, sans-serif; }
.presentation-line { display: block; width: 100%; height: 180px; margin-bottom: 10px; }
.presentation-line text { fill: #5f6f66; font: 11px Inter, sans-serif; }
.presentation-distribution { display:block; width:100%; height:150px; margin-bottom:12px; }.presentation-distribution text { fill:#5f6f66; font:11px Inter,sans-serif; }

.presentation-map{height:315px;border:1px solid #d7dfd8;border-radius:8px;overflow:hidden;background:#eef1ed}.presentation-year-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:22px}.presentation-year-grid .presentation-map{height:235px}.slide-kpis.compact{grid-template-columns:1fr 1fr}.slide-kpis.compact div{padding:10px}.slide-kpis.compact b{font-size:19px}@media(max-width:700px){.presentation-year-grid{grid-template-columns:1fr}.presentation-map,.presentation-year-grid .presentation-map{height:210px}}
.presentation-comparison{display:block;width:100%;height:260px;margin-top:3px}.slide-conclusion{border:2px solid;border-radius:8px;padding:8px 12px;line-height:1.3;font-size:12px;max-height:72px;overflow:hidden}.slide-conclusion span{font-size:10px;color:#68786f}.slide-conclusion.negative{border-color:#e6504c;background:#fff3f2;color:#b62e2a}.slide-conclusion.positive{border-color:#16803c;background:#f1f8f0;color:#0d6330}.presentation-page .slide-kpis.compact div{padding:6px 8px}.presentation-page .slide-kpis.compact b{font-size:16px}.presentation-page .slide-kpis.compact span{font-size:10px}@media(max-width:700px){.presentation-comparison{height:215px}}
.presentation-bars{display:block;width:100%;height:290px;margin-top:0}

/* Сезонный слайд заполняет рабочее поле: карта и распределение не остаются в верхней половине. */
.presentation-page .slide-body:has(.presentation-year-grid){display:flex;flex-direction:column}.presentation-year-grid{flex:1;min-height:370px;align-items:stretch}.presentation-year-grid>div{display:flex;min-height:0;flex-direction:column}.presentation-year-grid .presentation-map{height:auto;min-height:360px;flex:1}.presentation-year-grid .presentation-distribution{height:225px;flex:1;margin-top:8px;margin-bottom:0}.presentation-year-grid .slide-kpis{flex:0 0 auto}.presentation-year-grid+.slide-note{margin-top:14px;margin-bottom:0}@media(max-width:700px){.presentation-year-grid{min-height:0}.presentation-year-grid .presentation-map{min-height:210px}.presentation-year-grid .presentation-distribution{height:150px;flex:none}}

.presentation-page{display:none}.presentation-page.active-slide{display:flex}.slide-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}.slide-pager .secondary{width:auto;margin:0}.slide-pager .secondary:disabled{opacity:.45;cursor:not-allowed}.slide-pager span{color:#68786f;font:700 12px Manrope,sans-serif}@media print{.presentation-page{display:flex!important}.slide-pager{display:none!important}}

.table-tools{display:flex;align-items:end;gap:8px;margin:14px 0}.table-tools label{margin:0;min-width:280px}.table-tools .secondary{width:auto;margin:0;white-space:nowrap}.table-tools .secondary.active{background:#0a4a35;color:#fff}@media(max-width:700px){.table-tools{display:grid;grid-template-columns:1fr 1fr}.table-tools label{grid-column:1/-1;min-width:0}.table-tools .secondary{width:100%}}
.table-sort{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 0;border:0;background:transparent;color:#68786f;font:700 10px Inter,sans-serif;text-transform:uppercase;white-space:nowrap;cursor:pointer}.table-sort:hover,.table-sort.active{color:#0a4a35}.table-sort::after{content:'↕';font-size:12px;line-height:1;color:#9aaa9f}.table-sort.active[data-direction='asc']::after{content:'↑';color:#0a4a35}.table-sort.active[data-direction='desc']::after{content:'↓';color:#0a4a35}

.podium-note{padding:10px 12px;margin-bottom:8px;background:#f4f7ef;border-left:3px solid #ffd95a;color:#415149;font-size:12px}.podium-table{overflow:auto}.podium-table table{border-collapse:collapse;min-width:680px}.podium-table th,.podium-table td{padding:10px 8px;border-bottom:1px solid #e5e2e1;text-align:left}.podium-table th{color:#68786f;font-size:10px;text-transform:uppercase}.podium-table tr.selected{background:#eef7ee}.brand-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}

.slide-preview { aspect-ratio: auto; min-height: 0; display: block; overflow: visible; background: transparent; border: 0; box-shadow: none; }
.presentation-page { aspect-ratio: 16 / 9; min-height: 0; overflow: hidden; background: #fff; border: 1px solid #d7dfd8; box-shadow: 0 14px 30px rgba(0,38,27,.12); display: flex; flex-direction: column; margin-bottom: 24px; }
.presentation-page .slide-head { flex: 0 0 auto; }.presentation-page .slide-body { overflow: hidden; }.presentation-page .slide-footer { flex: 0 0 auto; }
@media print { .slide-preview { display:block!important; }.presentation-page { width: 100%; margin: 0; border: 0; box-shadow: none; break-after: page; page-break-after: always; }.presentation-page:last-child { break-after: auto; page-break-after: auto; } }

/* Экранный просмотр отчёта: строго один слайд; все остальные остаются только в печати/PDF. */
#slidePreview .presentation-page { display: none !important; }
#slidePreview .presentation-page.active-slide { display: flex !important; }
#slidePreview { aspect-ratio: 16 / 9; min-height: 480px; overflow: hidden; }
#slidePreview .presentation-page { width: 100%; height: 100%; min-height: 0; margin: 0; }
#slidePreview .presentation-page .slide-body:has(.presentation-year-grid) { flex: 1 1 auto; min-height: 0; }
#slidePreview .presentation-year-grid { min-height: 0; height: 100%; }
#slidePreview .presentation-year-grid .presentation-map { min-height: 0; height: 100%; }
#slidePreview .presentation-year-grid .presentation-distribution { min-height: 0; height: 100%; }
@media print {
  #slidePreview .presentation-page { display: flex !important; }
  .single-slide-print #slidePreview .presentation-page { display:none!important; }
  .single-slide-print #slidePreview .presentation-page.active-slide { display:flex!important; }
}

/* Навигация презентации всегда доступна, независимо от высоты слайда и прокрутки. */
#report .slide-pager {
  position: fixed;
  z-index: 1000;
  left: 338px;
  right: 24px;
  bottom: 18px;
  min-height: 52px;
  margin: 0;
  padding: 8px 12px;
  border: 1px solid #d7dfd8;
  border-radius: 12px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 8px 24px rgba(0,38,27,.18);
  backdrop-filter: blur(8px);
}
@media (max-width: 900px) {
  #report .slide-pager { left: 14px; right: 14px; bottom: 12px; }
}
@media print {
  #report .slide-pager { display: none !important; }
}

/* Компактный экранный слайд: диаграммы и подписи полностью помещаются в кадр. */
#slidePreview .presentation-page .slide-head{padding:18px 26px 10px}
#slidePreview .presentation-page .slide-head h1{font-size:26px}
#slidePreview .presentation-page .slide-head p{margin-top:4px;font-size:11px}
#slidePreview .presentation-page .slide-body{padding:8px 26px 12px}
#slidePreview .presentation-page .slide-footer{padding:8px 26px}
#slidePreview .presentation-page .slide-kpis.compact div{padding:8px 10px}
#slidePreview .presentation-page .slide-kpis.compact b{font-size:17px}
#slidePreview .presentation-page .presentation-comparison{height:205px}
#slidePreview .presentation-page .slide-conclusion{padding:8px 10px;font-size:11px}
#slidePreview .presentation-page .slide-conclusion span{font-size:10px}
#slidePreview .presentation-page .slide-table th,#slidePreview .presentation-page .slide-table td{padding:6px 5px;font-size:10px}

/* Полноэкранный просмотр графиков: карточка занимает весь viewport,
   управляющие кнопки остаются доступными, а холст растягивается после resize. */
body.visual-lock { overflow: hidden; }
.card.visual-fullscreen {
  position: fixed !important;
  inset: 0 !important;
  z-index: 10000 !important;
  width: 100vw !important;
  height: 100vh !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 24px !important;
  border-radius: 0 !important;
  overflow: auto !important;
  background: #fff !important;
  box-sizing: border-box !important;
}
.card.visual-fullscreen .visual-tools {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 0 0 12px;
  background: #fff;
}
.card.visual-fullscreen .chart,
.card.visual-fullscreen .chart.tall,
.card.visual-fullscreen .chart.strip {
  height: calc(100vh - 170px) !important;
  min-height: 520px !important;
}
.card.visual-fullscreen canvas,
.card.visual-fullscreen svg {
  max-width: 100%;
}
.card.visual-fullscreen .map {
  height: calc(100vh - 170px) !important;
  min-height: 520px !important;
}
.card.visual-fullscreen .matrix {
  max-height: none !important;
}
@media (max-width: 700px) {
  .card.visual-fullscreen { padding: 14px !important; }
  .card.visual-fullscreen .chart,
  .card.visual-fullscreen .chart.tall,
  .card.visual-fullscreen .chart.strip,
  .card.visual-fullscreen .map {
    height: calc(100vh - 145px) !important;
    min-height: 360px !important;
  }
}

/* Матрицы не растягиваются на пустое поле: столбцы сохраняют читаемую
   ширину, а границы ячеек дают явные линии сравнения. */
.matrix table,
.card.visual-fullscreen .matrix table {
  width: max-content !important;
  min-width: 760px;
  table-layout: auto;
}
.matrix th,
.matrix td {
  border: 1px solid #d8e2dc;
}
.matrix th:first-child,
.matrix td:first-child {
  min-width: 190px;
  border-left: 0;
  border-right: 2px solid #c5d5ca;
}
.matrix th:not(:first-child),
.matrix td:not(:first-child) {
  min-width: 96px;
}
.matrix td {
  border-radius: 3px;
}
#registryRows tr { cursor: pointer; }
#registryRows tr:hover { background: #eef7ee; }

/* В полноэкранном режиме заголовок карточки и шапка таблицы не теряются
   при прокрутке длинной матрицы. */
.card.visual-fullscreen .visual-tools {
  position: fixed;
  top: 12px;
  right: 24px;
  padding: 0;
  background: transparent;
}
.card.visual-fullscreen > h3 {
  position: sticky;
  top: 0;
  z-index: 4;
  padding: 2px 190px 6px 0;
  margin: 0;
  background: #fff;
}
.card.visual-fullscreen > h3 + p {
  position: sticky;
  top: 28px;
  z-index: 4;
  padding: 0 190px 10px 0;
  margin: 0;
  background: #fff;
}
.card.visual-fullscreen .matrix thead th {
  position: sticky;
  top: 61px;
  z-index: 3;
  background: #f7faf7;
  box-shadow: 0 1px 0 #c5d5ca;
}
@media (max-width: 700px) {
  .card.visual-fullscreen .visual-tools { top: 8px; right: 14px; }
  .card.visual-fullscreen > h3 { padding-right: 125px; }
  .card.visual-fullscreen > h3 + p { padding-right: 125px; }
  .card.visual-fullscreen .matrix thead th { top: 57px; }
}
