/*
   Мини-карта маршрута рядом с ценой (задача заказчика от 14.08.2026).

   Отдельный файл, а не site.less: тот давно не компилируется (ParseError на
   EOF), правки в него не попадают. Так же вынесены city-choice, calc-redirect
   и calc-promo. Рядом лежит скомпилированный calc-mini-map.css — правите одно,
   правьте и второе.
*/
/* Ширина карточки: минимум, ниже которого не опускаемся без нужды, и он же
   исходный размер. Карта РАСТЯГИВАЕТСЯ на всё свободное место по ширине
   (правка 15.08.2026: «карта в калькуляторе должна быть по ширине блока
   незаполненного» и «должна так же заполнять неиспользованное по ширине
   пространство»), а сжимается ровно настолько, насколько ей оставили места. */
/* ── Про узкие экраны и кнопку «Открыть в Картах» ──────────────────────────
   Замерено по шагам 250…320 (карточке принудительно задавалась ширина):

       карточка 320, 310, 305 px → кнопка «В Карты» 34×32 — есть;
       карточка 300, 290, 270 px → кнопка 0×32 — Яндекс убирает её САМ;
       карточка 250 px           → плюс копирайт обрезается многоточием;
       логотип 134×24 и ссылка «Условия» 46×13 — целы на любой ширине.

   То есть порог — между 300 и 305 px, и это поведение самого API: на узкой
   карте он прячет свою кнопку. Какое-то время карточка ýже 360 px экрана у нас
   не показывалась вовсе — чтобы кнопка не пропадала. Заказчик 15.08.2026 решил
   иначе, и решение осознанное: «пусть сжимается, как сжимает сам Яндекс, мы
   ведь сами ничего не убираем». Условия использования (п. 4.1.3.1) запрещают
   ДВИГАТЬ, СКРЫВАТЬ, ВИДОИЗМЕНЯТЬ и ПЕРЕКРЫВАТЬ кнопку и копирайты — ничего из
   этого мы не делаем: свои элементы на чужие не кладём (см. правило про
   --bare ниже), размеров чужой атрибуции не трогаем.
   Поэтому нижней границы ширины у карточки больше нет — на телефоне она равна
   ширине блока калькулятора. */
/* Минимальная высота при подгонке — абсолютный низ, где атрибуция ещё
   помещается целиком (замерено). До него дело не доходит: блок цены заведомо
   выше, но пусть будет пол на всякий случай. */
/* Начальная высота карты на десктопе при включённой подгонке — правка
   16.08.2026: «начальный размер высоты Яндекс-карты в desktop-версии должен
   быть 120 px, дальше — в зависимости от размера блока с ценой».
   Число то же, что у рамки расчёта (min-height в css/calc-price-box.less):
   карта равняется на неё, поэтому оба значения обязаны совпадать. */
/* Высоту задаёт админка (Настройки → Калькулятор → «Высота карты»), поэтому
   числом её здесь не зашить: значение приходит css-переменной, которую ставит
   виджет калькулятора (modules/calc/widgets/Calc.php). Число ниже — запасное,
   на случай если переменной почему-то не окажется: карта нулевой высоты
   выглядела бы как исчезнувшая.

   По высоте ограничений со стороны Яндекса нет — замерено на шагах 40…300 px,
   логотип, копирайт и «Открыть в Картах» остаются целыми на любой. Ограничена
   только ШИРИНА, см. выше. */
/* ── Про внешний вид самой карты ───────────────────────────────────────────
   Плитки НЕ трогаем ничем: ни фильтром, ни притушиванием. Карта выглядит
   ровно так, как её отдаёт Яндекс — это решение заказчика от 14.08.2026.

   Предыстория, чтобы её не пришлось выяснять заново. Тёмная тема у мини-карты
   была: сначала мягкое притушивание, потом полноценный «ночной» фильтр. Но
   сайт работает на JS API 2.1 (Яндекс отдаёт 2.1.79), а своей тёмной темы там
   нет — проверено и по справочнику, и опытом: в реестре типов карт только
   yandex#map, yandex#satellite и yandex#hybrid, а options.set('theme','dark')
   карта молча игнорирует. Настоящая тёмная тема появилась в JS API 3.0
   (YMapDefaultSchemeLayer с theme:'dark'), и ключ сайта для неё не подходит —
   на запрос v3 Яндекс отвечает 403 «Invalid api key». Заказчик выбрал не
   изображать тёмную тему подручными средствами, а оставить карту как есть.

   Тёмной остаётся ОПРАВА карточки — фон, рамка, подпись и кнопки. Это наши
   собственные элементы, к карте они отношения не имеют. */
/* У переезда рамка «Предварительный расчет» лежит во flex-строке без переноса
   (стиль прописан прямо в разметке). На узком экране туда добавляется ещё и
   карта, поэтому перенос строке нужен — иначе всё сплющится. */
@media (max-width: 991px) {
  .calc .budget-calc-row {
    flex-wrap: wrap;
  }
}
.calc-minimap {
  position: relative;
  /* Карта занимает ВСЁ свободное место по ширине и сжимается, если места
       мало: width 100 % плюс разрешённое сжатие. Рядом стоит рамка расчёта с
       flex: 0 0 auto, поэтому карте достаётся ровно остаток строки — это и
       есть «по ширине незаполненного блока». min-width: 0 обязателен: без него
       flex-элемент не может стать ýже своего содержимого, и на узком экране
       появилась бы горизонтальная прокрутка.

       flex-basis именно auto, а не число: у грузоперевозок карточка лежит в
       КОЛОНКЕ (flex-direction: column), а там basis задаёт не ширину, а высоту —
       с числом карточка вымахивала на 320 px в высоту вместо заданных в админке
       150 (замерено на 768 px). С auto высоту берёт height, как и задумано. */
  flex: 0 1 auto;
  align-self: center;
  width: 100%;
  height: var(--calc-mini-map-h, 150px);
  max-width: 100%;
  min-width: 0;
  border-radius: 10px;
  overflow: hidden;
  background: #1B3A28;
  border: 1px solid rgba(174, 203, 24, 0.35);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
  cursor: pointer;
  /* Пока карта не переехала внутрь, карточки на экране нет: пустая рамка
       выглядела бы поломкой. */
  display: none;
  /* Вкладка «Город и область»: карта там не нужна (правка 15.08.2026).
       Класс вешает скрипт по активной вкладке. Правило идёт ПОСЛЕ .is-on и
       перебивает его — карточку не видно, но из страницы она не исчезает:
       внутри неё живёт контейнер #map самого калькулятора. */
  /* Отступы задаёт РЕАЛЬНОЕ расположение, а не выбранное в админке: класс
       вешает скрипт уже после того, как решил, куда карточка физически влезла.
       В грузоперевозках «слева» невозможно (колонка «Итого» ~367 px, а карте
       нужно минимум 310 плюс сама рамка цены) — там карточка получает класс
       «над ценой», и подгонка размера считается по ширине, как и положено
       верхнему расположению. */
  /* Низкая карта: убираем СВОИ подпись и кнопку разворота. Замерено, что на
       высоте до 60 px включительно они наезжают на копирайт и логотип Яндекса
       (с 66 px — уже нет), а перекрывать их запрещают условия использования.
       Прячем именно своё: чужое трогать нельзя. Разворот не теряется — вся
       карточка кликабельна. В развёрнутом виде места хватает, там возвращаем.
       Класс вешает скрипт по ЗАМЕРЕННОЙ высоте карточки, а не по настройке:
       при подгонке под блок цены высоту задаёт сосед, и на сервере она
       неизвестна. */
  /* В маленьком виде элементы управления картой (масштаб, пробки, слои,
       поиск) только мешают. Копирайт и логотип НЕ трогаем. */
  /* Крестик нужен только в развёрнутом виде. */
  /* ── Развёрнутый вид ───────────────────────────────────────────────── */
}
.calc-minimap.is-on {
  display: block;
}
.calc-minimap--off-tab,
.calc-minimap--off-tab.is-on {
  display: none !important;
}
.calc-minimap--side {
  margin: 0 14px 14px 0;
}
.calc-minimap--above {
  margin: 0 0 14px;
}
.calc-minimap--under {
  margin: 14px 0 0;
}
.calc-minimap--bare:not(.is-full) .calc-minimap__label,
.calc-minimap--bare:not(.is-full) .calc-minimap__expand {
  display: none;
}
.calc-minimap__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  /* Контейнер #map приезжает сюда из разметки калькулятора. */
}
.calc-minimap__frame > #map {
  width: 100% !important;
  height: 100% !important;
}
.calc-minimap:not(.is-full) [class*="controls__control"] {
  display: none !important;
}
.calc-minimap__label {
  position: absolute;
  left: 8px;
  top: 8px;
  z-index: 3;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(27, 58, 40, 0.82);
  color: #fff;
  font-family: Montserrat, sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  pointer-events: none;
}
.calc-minimap__expand,
.calc-minimap__close {
  position: absolute;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: rgba(27, 58, 40, 0.82);
  color: #AECB18;
  cursor: pointer;
  transition: background 0.2s ease;
}
.calc-minimap__expand:hover,
.calc-minimap__close:hover,
.calc-minimap__expand:focus,
.calc-minimap__close:focus {
  background: #235C33;
  outline: none;
}
.calc-minimap__expand {
  right: 8px;
  top: 8px;
  width: 28px;
  height: 28px;
}
.calc-minimap__close {
  right: 12px;
  top: 12px;
  width: 44px;
  height: 44px;
  display: none;
}
.calc-minimap.is-full {
  position: fixed;
  inset: 12px;
  z-index: 100500;
  /* !important здесь не украшательство. В разметке калькулятора переезда
           есть мобильное правило «.budget-calc-row > div > div{width:100%!important}»
           (calc_pereezd_new.php), и карточка попадает под него ровно тем, что
           лежит в обёртке цены. В маленьком виде это как раз то, что нужно, а в
           развёрнутом оно перебивало width:auto: ширина становилась во весь
           экран поверх заданных left/right, и карта вылезала за правый край на
           8 px (замерено на 375 px). Чужое правило не трогаем — оно нужно
           самому калькулятору. */
  width: auto !important;
  height: auto;
  flex: none;
  /* Оба сброса обязательны, и второй не косметический: при
           align-self:center у элемента с position:fixed Chrome считает высоту
           по содержимому, а не по top/bottom, и развёрнутая карта схлопывалась
           в полоску 2 px (замерено). Отступы в развёрнутом виде тоже лишние —
           они отъедали 14 px от высоты. */
  align-self: auto;
  margin: 0;
  min-height: 0;
  cursor: default;
  border-radius: 14px;
  box-shadow: 0 10px 60px rgba(0, 0, 0, 0.55);
  /* Развёрнутой карте нужна своя полоска сверху. Если оставить подпись и
           крестик поверх карты, они садятся на элементы управления Яндекса:
           крестик наезжал на «Слои», подпись — на строку поиска (проверено на
           снимке). Полоска убирает наложение и заодно даёт понятную «шапку»
           окна с названием и выходом. */
  /* Полоску даёт смещение рамки (см. ниже), а не padding: при
           position:fixed с заданными top/bottom и height:auto padding
           прибавляется к высоте, и низ карты вместе с копирайтом уезжал за
           край экрана (замерено на снимке). */
  background: #1B3A28;
}
.calc-minimap.is-full .calc-minimap__frame {
  top: 44px;
  /* height:100% из основного правила надо снять явно, иначе рамка
               остаётся во всю высоту карточки и, сдвинутая на 44 px вниз,
               свешивается за нижний край — вместе с копирайтом Яндекса
               (замерено: низ рамки 931 при высоте окна 900). */
  height: auto;
  width: auto;
  bottom: 0;
  border-radius: 0 0 14px 14px;
  overflow: hidden;
}
.calc-minimap.is-full .calc-minimap__expand {
  display: none;
}
.calc-minimap.is-full .calc-minimap__close {
  display: flex;
  top: 0;
  right: 4px;
  width: 44px;
  height: 44px;
  background: none;
}
.calc-minimap.is-full .calc-minimap__close:hover,
.calc-minimap.is-full .calc-minimap__close:focus {
  background: rgba(255, 255, 255, 0.08);
}
.calc-minimap.is-full .calc-minimap__label {
  top: 11px;
  left: 16px;
  background: none;
  font-size: 14px;
  padding: 0;
}
/* Затемнение страницы под развёрнутой картой. Отдельным слоем, а не тенью
   карточки: так клик мимо карты закрывать нечему — карта занимает почти весь
   экран, а фон просто не отвлекает. */
html.calc-minimap-open {
  overflow: hidden;
}
html.calc-minimap-open body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 100499;
  background: rgba(10, 20, 14, 0.75);
}
/* ── Галочка «Подгонять размер под блок цены» ──────────────────────────────
   Только десктоп: на телефоне карта и так во всю ширину, и подгонять там
   нечего — заказчик просил ничего на мобильной не сжимать.

   Что к чему подгоняется, зависит от того, с какой стороны карта стоит:
     • слева от цены  → берём ВЫСОТУ блока цены (ширина остаётся 320);
     • над/под ценой  → берём ШИРИНУ блока цены (высота остаётся заданной).
   Логично: подгоняем по той стороне, вдоль которой блоки соприкасаются. */
@media (min-width: 992px) {
  /* Слева: высоту числом не задаём — карточка растягивается по своей
       flex-строке, а высоту строке задаёт блок цены. height:auto обязателен,
       иначе карточка сама стала бы самым высоким элементом строки и высоту
       подстраивала бы уже цена под карту, а не наоборот. */
  .calc-minimap--fit.calc-minimap--side:not(.is-full) {
    align-self: stretch;
    height: auto;
    min-height: 40px;
    margin-bottom: 0;
  }
  /* В грузоперевозках карточка лежит не прямо во flex-строке, а внутри
       колонки слева от расчёта, и align-self там уже про горизонталь. Высоту
       ей даёт flex-элемент: колонка тянется по строке, карточка — по колонке.
       Расти можно, сжиматься нельзя (1 0 auto) — см. соседнее правило. */
  .calc-lead-col > .calc-minimap--fit.calc-minimap--side:not(.is-full) {
    flex: 1 0 auto;
    /* Нижний предел — та же начальная высота, что у рамки расчёта. Общее
           правило подгонки снимает height (height:auto), чтобы карточка
           тянулась по соседу; в колонке это значит «высота по содержимому», то
           есть ноль, и с включённой промо-строкой карта сплющивалась до 67 px
           (замерено). Так что подгонка здесь работает «не ниже начальной»:
           карта тянется под блок цены, если он выше, и держит 120 px, если нет. */
    min-height: 120px;
  }
  /* Над и под: ширину тоже не задаём числом — карточка растягивается на
       ширину контейнера цены (у переезда это колонка с рамкой «Предварительный
       расчет», у грузоперевозок — колонка расчёта). */
  .calc-minimap--fit.calc-minimap--above:not(.is-full),
  .calc-minimap--fit.calc-minimap--under:not(.is-full) {
    flex: 0 0 auto;
    width: 100%;
  }
}
/* Планшет 768…991: в грузоперевозках карта и расчёт УЖЕ стоят бок о бок —
   ширины колонок заданы классами bootstrap col-sm-8 / col-sm-4, а у bootstrap 3
   предел col-sm начинается с 768 px. Значит и подгонять высоту надо уже здесь,
   а не с 992.

   Найдено критик-проходом 16.08.2026: на 768 px карта была 150 px (высота из
   админки), а рамка расчёта — 120, и рядом они выглядели разными. С 992 px обе
   были 120, как и задумано.

   Правило нарочно узкое — только карточка в колонке с картой у грузоперевозок.
   Общий вариант «слева» с 992 px сюда пускать нельзя: у переезда на этой
   ширине карта стоит НАД рамкой, на своей строке, и height: auto схлопнул бы
   её по содержимому, то есть в ноль. */
@media (min-width: 768px) and (max-width: 991px) {
  .calc .calc-minimap-row > .calc-lead-col > .calc-minimap--fit.calc-minimap--side:not(.is-full) {
    align-self: stretch;
    height: auto;
    flex: 1 0 auto;
    min-height: 120px;
    margin-bottom: 0;
  }
}
/* Обёртка, в которую карточка встала рядом с расчётом, должна занять всю
   строку — иначе растягиваться карте некуда: обёртка сама по себе шириной по
   содержимому (flex: 0 0 auto прописан в стилях калькулятора). Класс вешает
   скрипт, и только когда карточка действительно там оказалась, — без
   мини-карты расчёт стоит справа ровно как раньше. */
.calc.calc-has-minimap .calc-minimap-host {
  flex: 1 1 auto;
}
/* Грузоперевозки: карточка лежит в КОЛОНКЕ, а не в строке, и сжатие там
   означает не ширину, а высоту. Разрешать его нельзя: с включённой промо-строкой
   «Закажи на сайте со скидкой 5%» колонка отдавала карте остаток высоты, и та
   сплющивалась до 62 px (замерено) — карта нечитаемая, атрибуция впритык.
   Поэтому в колонке карточка держит заданную высоту, а колонка растёт под неё. */
.calc-lead-col > .calc-minimap {
  flex: 0 0 auto;
}
/* ── Грузоперевозки: строка с картой и расчётом ────────────────────────────
   Карточка стоит в колонке слева от расчёта (.calc-lead-col) — там, где раньше
   был заголовок формы. Чтобы карта могла подгоняться под высоту блока цены,
   строка должна быть flex-контейнером: колонки bootstrap 3 плавающие, и
   растянуть одну по высоте другой иначе нельзя — ни height:100%, ни
   vertical-align на float не действуют. Ширины колонок заданы процентами и
   работают как есть, а float при этом просто не нужен.

   Псевдоэлементы .row::before/::after (клирфикс bootstrap) в flex-контейнере
   превратились бы в лишние колонки — гасим их, тем же приёмом, что уже
   применён к строке расчёта в переезде.

   Только для строки с карточкой: класс вешает скрипт, и при выключенной
   мини-карте вёрстка калькулятора остаётся прежней. Ниже 601 px ничего не
   трогаем — там колонки складываются в столбик сами, и вёрстка калькулятора
   сама ставит расчёт перед колонкой с картой. */
@media (min-width: 601px) {
  .calc .calc-minimap-row {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
  }
  .calc .calc-minimap-row::before,
  .calc .calc-minimap-row::after {
    display: none !important;
  }
  .calc .calc-minimap-row > div {
    float: none;
  }
  /* Колонка с картой: карточка прижата к низу — так она стоит вровень с
       рамкой расчёта, даже если сверху осталась промо-строка «Закажи на сайте
       со скидкой 5%». */
  .calc .calc-minimap-row > .calc-lead-col {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
  }
}
/* Нижний отступ колонки с картой — ровно такой же, как у колонки расчёта (он
   задан в css/calc-redirect.less и держит место под кнопками «Есть предложение
   дешевле» / «другой тариф»). Без него колонка с картой выше соседней на эти
   самые 28 px, и карта, растянутая по колонке, оказывалась на 28 px выше рамки
   расчёта — вместо обещанных «в зависимости от размера блока с ценой»
   получалось «плюс отступ соседа».

   ОТ 768 px, а не от 601. Отступ выравнивает две колонки, стоящие ПЛЕЧОМ К
   ПЛЕЧУ, а рядом они становятся только с 768 px: ширины заданы классами
   bootstrap col-sm-8 / col-sm-4, а у bootstrap 3 предел col-sm — 768 px. Ниже
   колонки идут друг под другом, выравнивать нечего, и отступ превращался в
   лишний зазор между картой и ценой — замерено 40 px на 601 px вместо
   ожидаемых 12. */
@media (min-width: 768px) {
  .calc .calc-minimap-row > .calc-lead-col {
    padding-bottom: 28px;
  }
}
/* На узком экране обёртке цены в переезде нужен перенос: display:flex у неё
   прописан прямо в разметке, а flex-wrap там не задан, поэтому обычного
   правила достаточно — !important не нужен. */
@media (max-width: 991px) {
  .calc-minimap-host {
    flex-wrap: wrap;
  }
  /* Рамка расчёта у переезда — во всю ширину, раз над ней встала карта.

       Найдено критик-проходом 16.08.2026. Обёртка цены (.budget-calc-right) —
       это grid с колонкой по содержимому (grid-template-columns: max-content,
       прописано в <style> самого калькулятора). Пока рамка стояла одна, ширина
       по содержимому была незаметна. Теперь над ней лежит карта во всю ширину,
       и разница бросается в глаза: замерено на 375 px — карта занимает 25…335,
       а рамка 47…313, то есть она уже на 22 px с каждой стороны и выглядит
       вставленной внутрь. У грузоперевозок обе одинаковые (310 и 310) — значит
       и здесь должно быть так же.

       Только вместе с картой (класс вешает мини-карта по факту) и только там,
       где карта стоит НАД рамкой, то есть до 991 px: с 992 они идут бок о бок,
       и рамке ширина по содержимому как раз нужна. */
  .calc.calc-has-minimap .budget-calc-right {
    /* Одной колонки 1fr мало: сама рамка лежит внутри flex-обёртки и как
           flex-элемент по умолчанию шириной по содержимому. Пока не разрешить
           ей расти, «во всю ширину» остаётся теми же 266 px — замерено. */
    flex: 1 1 auto;
    grid-template-columns: 1fr;
  }
  /* Правый отступ карточки нужен только когда она стоит СЛЕВА от рамки. Здесь
       она стоит НАД ней, и эти 14 px делают карту уже рамки — замерено на
       768 px: карта 52…688, рамка 52…702. Убираем. */
  .calc.calc-has-minimap .calc-minimap--side {
    margin-right: 0;
  }
  /* Одной колонки мало: обёртка расчёта в разметке помечена flex: 0 0 auto,
       то есть шириной по содержимому, и колонка «во всю ширину» получалась во
       всю ширину ОБЁРТКИ — те же 266 px. Замерено на 768 px: карта 52…688,
       рамка 52…318. Отдаём обёртке всю строку — она и так стоит на своей
       строке, потому что карта перед ней занимает всю ширину. */
  .calc.calc-has-minimap .budget-calc-right-wrap {
    flex: 1 1 100%;
  }
}
/* ── Телефон: карта НАД ценой, а не под ней ───────────────────────────────
   Замечание заказчика от 16.08.2026: «Карта слепляется с блоком расчёта, и
   если есть — с блоком "есть предложения дешевле". Карта должна быть над
   блоком расчётной цены (как в калькуляторе переездов), а она по факту под
   ней и слипшаяся».

   ПОЧЕМУ БЫЛО ТАК. Строка расчёта в грузоперевозках на узком экране развёрнута
   задом наперёд — site.css:
       @media (max-width:600px){#calc-new .calc #gruz .row:nth-child(3){
           display:flex;flex-wrap:wrap-reverse}}
   Это наследство прежней вёрстки: в левой колонке лежал текст «Чтобы оформить
   заявку…», и его хотели видеть ПОД ценой. Заголовок оттуда уехал к полям
   (правка 15.08.2026), а разворот остался — и утащил вниз мини-карту, которая
   встала в ту же колонку. Замерено на 375 px: низ колонки цены 3345, верх
   карты 3345 — то самое слипание, а с кнопкой «Есть предложение дешевле»
   карта прилипала уже к ней.

   ЧТО ДЕЛАЕМ. Только для строки, где реально стоит карта (класс вешает
   js/calc/mini-map.js), возвращаем обычный перенос: колонка с картой идёт
   первой, колонка расчёта — под ней. Это ровно поведение калькулятора
   переезда, где .budget-calc-row на узком экране переносится обычным wrap.
   Без мини-карты строка остаётся ровно такой, какой была.

   ПРО СЕЛЕКТОР. Повторяем цепочку из site.css и добавляем свой класс, а не
   бьём !important: специфичность выходит равной (2 id + 3 класса), а
   calc-mini-map.css подключается ПОСЛЕ site.css — проверено в браузере
   (порядок таблиц: site.css → … → calc-mini-map.css). */
@media (max-width: 600px) {
  #calc-new .calc #gruz .row.calc-minimap-row {
    flex-wrap: wrap;
  }
  /* Промо-строка «Закажи на сайте со скидкой 5%» на узком экране вынута из
       потока: site.css ставит ей position:absolute; bottom:-165px — так её
       уводили вниз, когда в колонке лежал ещё и заголовок «Чтобы оформить
       заявку…». Теперь в колонке карта, и «минус 165 px» уронили бы промо
       поверх рамки расчёта. Возвращаем строку в поток — она встаёт НАД картой,
       то есть так же, как на десктопе. Правило действует только при включённой
       в админке скидке и только вместе с картой. */
  #calc-new .calc #gruz .row.calc-minimap-row .text-block p:nth-child(1) {
    position: static;
    bottom: auto;
  }
}
/* Телефон: карта во всю ширину. Высота остаётся той, что задана в админке —
   одно число на все экраны, чтобы настройка вела себя предсказуемо и заказчик
   видел ровно то, что выставил. */
@media (max-width: 767px) {
  .calc-minimap {
    /* basis auto по той же причине, что и в основном правиле: в колонке
           число задавало бы высоту, а не ширину. */
    flex: 0 1 auto;
    width: 100%;
    margin: 0 0 12px;
  }
  /* Блок «Предварительный расчет» у переезда — grid с колонкой по содержимому
       (grid-template-columns: max-content). Карточка, поставленная над или под
       ценой, оказывается внутри него, и на телефоне ширину ей задавала бы рамка
       расчёта — замерено 266 px при доступных 325. Это ровно то сжатие, которого
       быть не должно. Класс вешает скрипт, только когда карточка действительно
       попала внутрь, поэтому чужой блок в остальных случаях не трогаем.

       Селектор из ДВУХ классов не для красоты: «grid-template-columns:max-content»
       живёт в <style> самого калькулятора, у него та же специфичность (один
       класс), и он идёт позже — одиночный .calc-minimap-inside он перебивал,
       замерено (карточка так и оставалась 266 px). */
  .budget-calc-right.calc-minimap-inside {
    grid-template-columns: 1fr;
  }
  .calc-minimap--under {
    margin: 12px 0 0;
  }
  .calc-minimap.is-full {
    inset: 8px;
  }
}
/* ── Очень узкий экран ─────────────────────────────────────────────────────
   Здесь стояло правило, которое прятало карточку на экранах уже 360 px: там
   ей достаётся 270 px, а на такой ширине Яндекс сам убирает свою кнопку
   «Открыть в Картах».

   Правило снято 15.08.2026 по решению заказчика: «На малой ширине экрана карты
   нет и не работает построение маршрута» — то есть спрятанная карта читается
   как поломка. Разобрались подробно (замеры и разбор условий — у @mm-width в
   начале файла): кнопку убирает сам API, мы её не скрываем и ничем не
   перекрываем, а логотип и ссылка на условия остаются на месте при любой
   ширине. Решение заказчика: «пусть сжимается, как сжимает сам Яндекс».

   Карта теперь показывается на всех экранах и занимает ширину блока
   калькулятора: 270 px на экране 320, 310 на 360, 325 на 375. */
