/* Экран выбора квартиры: план этажа слева, таблица лотов справа, селектор этажа снизу.
   Токены темы (--bt-*), своих цветов только два: строка «продано» и строка «бронь».
   Их просил заказчик отдельно, и в песочной палитре раздела их нет.
   Всё на классах .fl-, инлайновых стилей нет: мобильный блок общего styles.css
   живёт на !important и перебил бы их. */

:root {
  --fl-sold:   #B5654F;
  --fl-sold-s: rgba(181,101,79,.13);
  --fl-book:   #C99A5B;
  --fl-book-s: rgba(201,154,91,.13);
}
:root[data-theme="light"] {
  --fl-sold:   #9C4E38;
  --fl-sold-s: rgba(156,78,56,.09);
  --fl-book:   #9A6F35;
  --fl-book-s: rgba(154,111,53,.10);
}

.fl { --fl-gap: 14px; }

/* ── верхняя полоса: переключатель корпуса ──
   Кнопки-табы, а не выпадающий список: выбранный корпус виден без раскрытия, и рядом
   видно, где сколько свободно. Ряд один и прижат влево, как в приложении застройщика. */
.fl__top {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin: 0 0 14px;
}

.fl__blocks { display: flex; gap: 6px; flex-wrap: wrap; }
.fl__blk {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  min-width: 78px; min-height: 44px; padding: 7px 14px; border-radius: 12px; cursor: pointer;
  background: transparent; border: 1px solid var(--bt-line); color: var(--bt-text-2);
  font: inherit; text-align: left;
  transition: border-color .15s, background .15s, color .15s;
}
.fl__blk b { font: 800 14px/1.2 var(--bt-font-display); white-space: nowrap; }
.fl__blk span { font-size: 10.5px; color: var(--bt-text-3); white-space: nowrap; }
.fl__blk:hover { border-color: var(--bt-text-3); color: var(--bt-text); }
.fl__blk:focus-visible { outline: 2px solid var(--bt-primary); outline-offset: 2px; }
.fl__blk.is-on { background: var(--bt-primary); border-color: var(--bt-primary); color: #16150F; }
.fl__blk.is-on span { color: rgba(22,21,15,.72); }
/* Корпус без продаж: кнопка живая, но в квартиры не ведёт: открывает карточку корпуса */
.fl__blk--soon { border-style: dashed; opacity: .78; }
.fl__blk--soon.is-on { background: var(--bt-surface-2); border-color: var(--bt-line-2); color: var(--bt-text); }
.fl__blk--soon.is-on span { color: var(--bt-text-3); }

/* ── две панели ──
   Колонки почти равны: в таблице шесть колонок, и цена метра отдельной колонкой
   требует места. Чертёж от этого не страдает, он всё равно шире по высоте. */
.fl__grid {
  display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr);
  gap: var(--fl-gap); align-items: stretch;
}
.fl-plan, .fl-side {
  min-width: 0;
  background: var(--bt-surface); border: 1px solid var(--bt-line); border-radius: var(--bt-r-card);
}
.fl-plan { display: flex; flex-direction: column; }
.fl-plan__hd {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 11px 14px; border-bottom: 1px solid var(--bt-line);
  font-size: 12px; font-weight: 600; color: var(--bt-text-2);
}
.fl-plan__zoom { background: none; border: 0; cursor: pointer; color: var(--bt-primary); font: 600 12px/1 var(--bt-font-body); }
.fl-plan__box { position: relative; flex: 1; padding: 14px; min-height: 300px; }
.fl-plan__scr { position: relative; }
.fl-plan__img { display: block; width: 100%; height: auto; }
.fl-plan__svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.fl-plan__badge {
  position: absolute; right: 18px; bottom: 18px;
  padding: 5px 11px; border-radius: 6px;
  background: var(--bt-primary); color: #16150F;
  font: 800 11px/1 var(--bt-font-display); letter-spacing: .06em;
}
.fl-plan__note {
  padding: 10px 14px; border-top: 1px solid var(--bt-line);
  font-size: 11.5px; line-height: 1.55; color: var(--bt-text-3);
}
/* Чертежа нет: честная строка вместо него. Серый прямоугольник-заглушку не рисуем,
   он делает вид, что картинка не догрузилась. Часть 4 промта 09. */
.fl-plan__empty {
  margin: 0; display: flex; align-items: center; min-height: 260px;
  padding: 18px 4px; max-width: 44ch;
  font-size: 13px; line-height: 1.6; color: var(--bt-text-3);
}

/* зоны на настоящем чертеже */
.fl-zone { fill: transparent; stroke: transparent; stroke-width: .4; cursor: pointer; }
.fl-zone--free { fill: var(--bt-success); fill-opacity: .16; stroke: var(--bt-success); }
.fl-zone--booked { fill: var(--fl-book); fill-opacity: .16; stroke: var(--fl-book); }
.fl-zone--sold { fill: var(--fl-sold); fill-opacity: .16; stroke: var(--fl-sold); }
.fl-zone--unlisted { fill: var(--bt-text-3); fill-opacity: .10; stroke: var(--bt-line-2); }
.fl-zone.is-hot, .fl-zone.is-sel { fill-opacity: .42; stroke-width: .9; }
.fl-zone:focus-visible { outline: 2px solid var(--bt-primary); outline-offset: 2px; }

/* схема из данных, пока чертежей нет */
.fl-scheme {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 7px;
}
.fl-cell {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  padding: 8px 9px; border-radius: 9px; cursor: pointer; text-align: left;
  background: var(--bt-surface-2); border: 1px solid var(--bt-line); color: var(--bt-text);
  font: inherit; transition: border-color .12s, transform .12s;
}
.fl-cell b { font: 700 13px/1 var(--bt-font-display); }
.fl-cell span { font-size: 10.5px; color: var(--bt-text-3); }
.fl-cell em { font-size: 9.5px; font-style: normal; color: var(--bt-text-3); opacity: .85; }
.fl-plan__pick { padding: 0 14px 14px; }
.fl-cell--free { border-left: 3px solid var(--bt-success); }
.fl-cell--booked { border-left: 3px solid var(--fl-book); }
.fl-cell--sold { border-left: 3px solid var(--fl-sold); opacity: .72; }
.fl-cell--unlisted { border-left: 3px dashed var(--bt-line-2); opacity: .62; }
.fl-cell.is-hot { border-color: var(--bt-primary); }
.fl-cell.is-sel { border-color: var(--bt-primary); background: var(--bt-primary-soft); }
.fl-cell:focus-visible { outline: 2px solid var(--bt-primary); outline-offset: 2px; }

/* ── таблица лотов этажа ── */
.fl-side { display: flex; flex-direction: column; min-height: 0; }
/* Таблица тянется на всю высоту панели, а не до фиксированных 520 px: иначе под ней
   оставалась пустая полоса в треть чертежа, а строки при этом были спрятаны в прокрутку. */
.fl-tbl { flex: 1 1 auto; overflow: auto; min-height: 260px; max-height: 640px; }
.fl-tbl table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
/* Шесть колонок в одну ширину: числа жмутся, номер и статус не жмутся. */
.fl-tbl th, .fl-tbl td { padding-left: 9px; padding-right: 9px; }
.fl-tbl th:first-child, .fl-tbl td:first-child { padding-left: 12px; }
.fl-tbl th:last-child, .fl-tbl td:last-child { padding-right: 12px; }
.fl-tbl thead th {
  position: sticky; top: 0; z-index: 2;
  padding: 10px 11px; text-align: left; white-space: nowrap;
  background: var(--bt-surface-2); border-bottom: 1px solid var(--bt-line);
  font-size: 10.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--bt-text-3);
}
.fl-tbl th[data-fl-sort] { cursor: pointer; }
.fl-tbl th[aria-sort="ascending"]::after { content: ' ↑'; color: var(--bt-text); }
.fl-tbl th[aria-sort="descending"]::after { content: ' ↓'; color: var(--bt-text); }
.fl-tbl td { padding: 8px 11px; border-top: 1px solid var(--bt-line); white-space: nowrap; }
.fl-row { cursor: pointer; }
.fl-row--sold { background: var(--fl-sold-s); }
.fl-row--booked { background: var(--fl-book-s); }
.fl-row--unlisted { opacity: .62; }
.fl-row.is-hot { background: var(--bt-primary-soft); }
.fl-row.is-sel { background: var(--bt-primary-soft); box-shadow: inset 3px 0 0 var(--bt-primary); }

/* Цена и цена метра стоят разными колонками: по цене метра сравнивают квартиры.
   У проданных и забронированных это цена сделки, а не предложение: приглушаем
   и подписываем, иначе покупатель принимает её за текущую. */
.fl-price b { display: block; font-weight: 600; }
.fl-price span { display: block; font-size: 10.5px; color: var(--bt-text-3); }
.fl-price--deal b { font-weight: 400; color: var(--bt-text-3); }
.fl-price--deal span { color: var(--bt-text-3); opacity: .8; }
.fl-sqm { color: var(--bt-text-2); }
.fl-sqm--deal { color: var(--bt-text-3); }

/* Статус словом у всех трёх состояний, а не только у свободных: цветная точка без
   подписи это ребус, а «свободно / бронь / продано» покупатель читает сразу. */
.fl-st { white-space: nowrap; }
.fl-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; vertical-align: middle; }
.fl-dot--free { background: var(--bt-success); }
.fl-dot--booked { background: var(--fl-book); }
.fl-dot--sold { background: var(--fl-sold); }
.fl-dot--unlisted { background: transparent; border: 1.5px dashed var(--bt-line-2); }
.fl-st__w { margin-left: 7px; font-size: 11.5px; color: var(--bt-text-3); }
.fl-st__w--free { color: var(--bt-success); }
.fl-st__w--booked { color: var(--fl-book); }
.fl-st__w--sold { color: var(--fl-sold); }
/* Проданное не кликается: курсор не должен обещать переход */
.fl-row--flat { cursor: default; }
/* Абсолютно спозиционированный элемент не обрезается прокручиваемым предком, если тот
   не relative: он вылезал за экран и тянул горизонтальный скролл всей страницы.
   Поэтому подпись статуса для скринридера теперь в aria-label ячейки, а не отдельным
   спаном, а самой таблице на всякий случай задан relative. */
.fl-tbl { position: relative; }
.fl-row:focus-visible { outline: 2px solid var(--bt-primary); outline-offset: -2px; }
.fl-side__note {
  padding: 10px 14px; border-top: 1px solid var(--bt-line);
  font-size: 11.5px; line-height: 1.55; color: var(--bt-text-3);
}
/* Источник и дата прайса. Стоит последней строкой панели и прижата к её низу:
   цифры в таблице действительны ровно на эту дату, и прятать её нельзя. */
.fl-side__src {
  margin-top: auto;
  padding: 10px 14px; border-top: 1px solid var(--bt-line);
  font-size: 11px; line-height: 1.5; color: var(--bt-text-3);
}
/* Этаж без свободных лотов не выкидывается из списка, а приглушается и подписывается */
.fl__fpick option.is-empty { color: var(--bt-text-3); }

/* ── полоса выбора этажа ── */
.fl__bar {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  margin-top: var(--fl-gap); padding: 10px 14px;
  background: var(--bt-surface); border: 1px solid var(--bt-line); border-radius: var(--bt-r-card);
}
.fl__fsel { display: flex; align-items: center; gap: 7px; margin: 0 auto; }
.fl__fsel__l { font-size: 12px; font-weight: 600; color: var(--bt-text-3); }
.fl__fpick { width: auto; min-width: 130px; }
.fl__step {
  width: 32px; height: 32px; border-radius: 8px; cursor: pointer;
  background: var(--bt-surface-2); border: 1px solid var(--bt-line);
  color: var(--bt-text); font-size: 13px; line-height: 1;
}
.fl__step:hover:not(:disabled) { border-color: var(--bt-primary); color: var(--bt-primary); }
.fl__step:disabled { opacity: .35; cursor: default; }
.fl__fcount { font-size: 12px; color: var(--bt-text-3); }
.fl__about { background: none; border: 0; cursor: pointer; color: var(--bt-primary); font: 600 13px/1 var(--bt-font-body); }

/* ── карточка корпуса ── */
.fl__soon, .fl__bcard { margin-top: var(--fl-gap); }
.fl-bc {
  display: grid; grid-template-columns: minmax(0, 260px) minmax(0, 1fr); gap: 18px;
  padding: 16px; background: var(--bt-surface); border: 1px solid var(--bt-line); border-radius: var(--bt-r-card);
}
.fl-bc--soon { border-style: dashed; }
.fl-bc__pic { border-radius: 10px; overflow: hidden; background: var(--bt-surface-2); }
.fl-bc__pic img { display: block; width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.fl-bc__b { min-width: 0; }
.fl-bc__hd { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.fl-bc__hd b { font: 800 18px/1.25 var(--bt-font-display); }
.fl-bc__first {
  padding: 3px 9px; border-radius: 20px; font-size: 11px; font-weight: 600;
  background: var(--bt-success-soft); color: var(--bt-success);
}
.fl-bc__p { font-size: 13px; color: var(--bt-text-2); margin-bottom: 12px; }
.fl-bc__rows { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 2px 18px; margin-bottom: 12px; }
.fl-bc__r { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 13px; border-bottom: 1px solid var(--bt-line); }
.fl-bc__r span { color: var(--bt-text-3); }
.fl-bc__r b { font-weight: 600; text-align: right; }
.fl-bc__brk { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.fl-bc__brki {
  flex: 1 1 190px; padding: 10px 12px; border-radius: 10px;
  background: var(--bt-surface-2); border: 1px solid var(--bt-line);
}
.fl-bc__brki b { display: block; font: 800 17px/1.2 var(--bt-font-display); }
.fl-bc__brki span { display: block; font-size: 12px; color: var(--bt-text-2); }
.fl-bc__brki em { font-size: 11.5px; color: var(--bt-text-3); font-style: normal; }
.fl-bc__note { font-size: 12px; line-height: 1.6; color: var(--bt-text-3); margin-bottom: 12px; }
.fl-bc__gal { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; margin-bottom: 12px; }
.fl-bc__gal img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; cursor: zoom-in; }

/* планировки корпуса внутри его карточки */
.fl-bt { margin-top: 12px; padding: 14px 16px; background: var(--bt-surface); border: 1px solid var(--bt-line); border-radius: var(--bt-r-card); }
.fl-bt__t { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--bt-text-3); margin-bottom: 10px; }
.fl-bt__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.fl-bt__i { padding: 10px; border-radius: 10px; background: var(--bt-surface-2); border: 1px solid var(--bt-line); }
.fl-bt__pic { height: 108px; display: flex; align-items: center; justify-content: center; margin-bottom: 8px; }
.fl-bt__pic img { max-width: 100%; max-height: 108px; object-fit: contain; }
.fl-bt__n { font-size: 12.5px; font-weight: 600; }
.fl-bt__a { font-size: 11.5px; color: var(--bt-text-3); }
.fl-bt__f { font-size: 11.5px; color: var(--bt-success); font-weight: 600; }

/* ── карточка лота ── */
/* Карточка разворачивается ПОД планом этажа и списком лотов, на всю ширину, а не
   вместо плана: этаж и соседние квартиры остаются перед глазами (правка 27.08).
   Внутри две колонки: планировка квартиры слева, характеристики и отделка справа. */
.fl-lot {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--fl-gap); align-items: start; min-width: 0;
  margin-top: var(--fl-gap); padding: 14px 16px 16px;
  background: var(--bt-surface); border: 1px solid var(--bt-primary-line); border-radius: var(--bt-r-card);
}
.fl-lot__hd { grid-column: 1 / -1; }
.fl-lot__plan {
  display: flex; align-items: center; justify-content: center;
  background: var(--bt-surface-2); border-radius: 10px; min-height: 220px; padding: 10px;
}
.fl-lot__plan img { max-width: 100%; max-height: 420px; object-fit: contain; cursor: zoom-in; }
/* правая колонка карточки собирается из нескольких блоков подряд */
.fl-lot__rows, .fl-lot .fl-fin, .fl-lot__cta, .fl-lot > .fl-lot__note { grid-column: 2; }
.fl-lot .fl-fin { margin-top: 4px; }
.fl-lot__cta { margin-top: 10px; }
.fl-lot__noplan { margin: 0; font-size: 12.5px; line-height: 1.55; color: var(--bt-text-3); padding: 16px; text-align: center; max-width: 34ch; }
.fl-lot__hd { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.fl-lot__hd b { font: 800 19px/1.2 var(--bt-font-display); }
.fl-lot__back {
  padding: 6px 12px; border-radius: 20px; cursor: pointer;
  background: transparent; border: 1px solid var(--bt-line); color: var(--bt-text-2);
  font: 600 12px/1 var(--bt-font-body);
}
.fl-lot__back:hover { border-color: var(--bt-text-3); color: var(--bt-text); }
.fl-lot__r--deal b, .fl-lot__r--deal span { color: var(--bt-text-3); }
.fl-lot__rows { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 2px 18px; }
.fl-lot__r { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 13px; border-bottom: 1px solid var(--bt-line); }
.fl-lot__r span { color: var(--bt-text-3); }
.fl-lot__r b { font-weight: 600; text-align: right; }
.fl-fin { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--bt-line); }
.fl-fin__t { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--bt-text-3); margin-bottom: 7px; }
.fl-fin__i { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; font-size: 12.5px; }
.fl-fin__i span { color: var(--bt-text-3); text-align: right; }
.fl-lot__cta { margin-top: 14px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.fl-lot__note { font-size: 12.5px; color: var(--bt-text-3); }

/* ── телефон ──
   Отдельный проход, а не проверка на отсутствие горизонтальной прокрутки.
   Половина покупателей смотрит с телефона, а раздел продаёт продукт, где надо
   сравнивать цифры: на узком экране это ломается первым. */

@media (max-width: 900px) {
  .fl__grid { grid-template-columns: 1fr; }
  .fl-bc, .fl-lot { grid-template-columns: 1fr; }
  /* на узком карточка снова в один столбец: планировка, характеристики, отделка */
  .fl-lot__rows, .fl-lot .fl-fin, .fl-lot__cta, .fl-lot > .fl-lot__note { grid-column: 1; }
  .fl-bc__pic img { aspect-ratio: 16 / 9; }
}

@media (max-width: 700px) {
  .fl__top { gap: 8px; }
  /* Пять корпусов в ряд на 390 px не встанут: ряд листается внутри себя,
     а не тянет горизонтальную прокрутку всей страницы. */
  .fl__blocks {
    width: 100%; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none;
    padding-bottom: 2px; -webkit-overflow-scrolling: touch;
  }
  .fl__blocks::-webkit-scrollbar { display: none; }
  .fl__blk { flex: 0 0 auto; }

  /* Чертёж и таблица идут друг под другом, а не вкладками: сверху план, под ним лоты.
     Ужимать чертёж до 390 px бессмысленно, номера квартир становятся нечитаемы,
     поэтому он листается по горизонтали внутри своей рамки. Прокрутка своя, страницу
     она не тянет: у рамки overflow-x, а не у body. */
  .fl-plan__box { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .fl-plan__scr { min-width: 640px; }
  .fl-plan__badge { right: 14px; bottom: 14px; }

  /* Шесть колонок на 390 px не помещаются никак, а горизонтальная прокрутка таблицы
     на телефоне это способ потерять покупателя. Поэтому строка становится карточкой. */
  .fl-tbl { max-height: none; overflow: visible; }
  .fl-tbl table, .fl-tbl tbody, .fl-tbl tr, .fl-tbl td { display: block; width: auto; }
  .fl-tbl thead { display: none; }
  .fl-tbl tr {
    position: relative; margin: 0 10px 8px; padding: 10px 12px;
    border: 1px solid var(--bt-line); border-radius: 12px; background: var(--bt-surface-2);
  }
  .fl-tbl td { border: 0; padding: 2px 0; white-space: normal; }
  .fl-tbl td::before {
    content: attr(data-l) ' '; color: var(--bt-text-3); font-size: 11px;
  }
  .fl-tbl td:first-child { font: 800 17px/1.2 var(--bt-font-display); padding-bottom: 4px; }
  .fl-tbl td:first-child::before { content: none; }
  .fl-tbl .fl-st { position: absolute; right: 12px; top: 10px; padding: 0; }
  .fl-tbl .fl-price { margin-top: 4px; }
  .fl-tbl .fl-price b { display: inline; font-size: 15px; }
  .fl-tbl .fl-price span { display: inline; margin-left: 8px; }
  .fl-row { min-height: 44px; }

  /* Селектор этажа нужен постоянно, листать до него никто не станет */
  .fl__bar {
    position: sticky; bottom: 0; z-index: 12; gap: 8px;
    box-shadow: 0 -10px 24px rgba(0,0,0,.22);
  }
  .fl__fsel { margin: 0; flex: 1 1 100%; min-width: 0; }
  .fl__fsel__l { display: none; }
  .fl__fpick { flex: 1; min-width: 0; min-height: 44px; }
  .fl__step { width: 44px; height: 44px; }
  .fl__about { margin-left: auto; min-height: 44px; }

  /* Зона нажатия не меньше 44 px: по шесть плиток в ряд на телефоне не встанет */
  .fl-scheme { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
  .fl-cell { min-height: 58px; padding: 9px 10px; }

  /* Карточка лота на телефоне открывается на весь экран, а не панелью сбоку */
  .fl-lot {
    position: fixed; inset: 0; z-index: 60; margin: 0; border-radius: 0;
    overflow: auto; -webkit-overflow-scrolling: touch;
    padding: 14px 16px 28px;
  }
  .fl-lot__hd { position: sticky; top: -14px; z-index: 2; background: var(--bt-surface); padding: 8px 0; margin: -8px 0 10px; }
  .fl-lot__plan img { max-height: 46vh; }
  .fl-lot__rows { grid-template-columns: 1fr; }

  /* Ничего мельче 12 px на телефоне: на десктопе подписи в 9–11 px читаются,
     на 390 px это уже нечитаемо. Кегль поднимаем, а не прячем текст. */
  .fl-cell span, .fl-cell em, .fl__blk span, .fl-price span, .fl-st__w,
  .fl-plan__note, .fl-side__note, .fl-side__src, .fl-lot__note,
  .fl-bc__note, .fl-bc__brki em, .fl-bt__a, .fl-bt__f, .fl__fcount,
  .fl-fin__t, .fl-fin__i, .fl-tbl thead th { font-size: 12px; }
  .fl-tbl td::before { font-size: 12px; }
  .fl-plan__badge, .fl-bc__first, .fl-lot__r span, .fl-bc__r span { font-size: 12px; }
  .fl-lot__r, .fl-bc__r { font-size: 13px; }

  /* Цифры не должны прыгать при листании этажей */
  .fl-tbl, .fl-lot__rows, .fl-bc__rows { font-variant-numeric: tabular-nums; }
}

@media (max-width: 380px) {
  .fl-scheme { grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); }
}
