/* Компактная тема рабочих экранов (27.08.2026).
 *
 * Владелец: «максимально компактно, максимально меньше воздуха. Очень воздушные интерфейсы
 * обычно делаются нейронкой, и это всегда стрёмно: кнопка, а надпись занимает процентов 50
 * от её размера; строки огромной высоты; списки, растянутые во всю ширину экрана».
 * Марина (администратор, 27.08): «как будто для слепых сделана… чтобы посмотреть состав
 * группы, мне нужно уменьшать шрифт страницы».
 *
 * Значения взяты НЕ на глаз, а из работающих проектов владельца:
 *   • ERP «Лукин Мебель» (скилл erp-ui-etalon): строки списка padding 2px 6px, шрифт 13.5px,
 *     мелкая кнопка 5px 10px / 13px, чипы-табы 4px 9px / 12px, радиусы 6–9–13px.
 *   • ERP клининга, пульт менеджера (`erp-service/app/static/css/style.css`):
 *     html font-size 14px, ячейки таблиц padding 10px 12px / 13px, .btn 8px 16px,
 *     .btn-sm 4px 10px / 12px, фильтры-кнопки 6px 14px / 13px, панели radius 10px.
 *
 * Файл — ОТДЕЛЬНЫЙ СЛОЙ поверх Bootstrap: разметка шаблонов не трогается, поэтому
 * откат = снять флаг UI_COMPACT (одна переменная), и всё возвращается к прежнему виду.
 */

/* ── Базовый кегль. В клининге html = 14px, от него пляшет весь интерфейс ── */
body { font-size: 14px; }

/* ── Заголовки: были крупные «презентационные», стали рабочие ── */
h1, .h1 { font-size: 22px; }
h2, .h2 { font-size: 20px; }
h3, .h3 { font-size: 18px; }
h4, .h4 { font-size: 16px; }
h5, .h5 { font-size: 15px; }
h6, .h6 { font-size: 14px; }
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 { font-size: 24px; }
.fs-1 { font-size: 22px !important; }
.fs-2 { font-size: 20px !important; }
.fs-3 { font-size: 18px !important; }
.fs-4 { font-size: 16px !important; }
.fs-5 { font-size: 15px !important; }
.fs-6 { font-size: 14px !important; }
.lead { font-size: 15px; }

/* ── Кнопки. Главное место «дутости»: btn-lg по всему проекту ── */
.btn { padding: 5px 12px; font-size: 13px; border-radius: 7px; }
.btn-lg { padding: 6px 14px; font-size: 13.5px; border-radius: 7px; }
.btn-sm { padding: 3px 9px; font-size: 12px; border-radius: 6px; }
.btn-group-lg > .btn { padding: 6px 14px; font-size: 13.5px; }

/* ── Поля ввода по содержимому, а не во всю ширину «просто так» ── */
.form-control, .form-select { padding: 4px 9px; font-size: 13px; border-radius: 7px; }
.form-control-lg, .form-select-lg { padding: 5px 10px; font-size: 13.5px; border-radius: 7px; }
.form-control-sm, .form-select-sm { padding: 3px 8px; font-size: 12px; }
.form-label { font-size: 12.5px; margin-bottom: 2px; }
.form-text { font-size: 11.5px; }
.input-group-text { padding: 4px 9px; font-size: 13px; }

/* ── Таблицы: плотная строка — ключевой элемент эталона ── */
.table > :not(caption) > * > * { padding: 6px 10px; }
.table { font-size: 13px; margin-bottom: 0; }
.table thead th { font-size: 12px; font-weight: 600; white-space: nowrap; }
.table-sm > :not(caption) > * > * { padding: 4px 8px; font-size: 12.5px; }

/* ── Карточки и панели ── */
.card { border-radius: 10px; }
.card-header { padding: 7px 12px; font-size: 14px; font-weight: 600; }
.card-header h5, .card-header h6 { font-size: 14px; margin: 0; }
.card-body { padding: 12px; }
.card-footer { padding: 6px 12px; font-size: 12px; }
.card + .card, .card.mb-3, .card.mb-4 { margin-bottom: 12px !important; }

/* ── Бейджи, метки, подсказки ── */
.badge { font-size: 11.5px; padding: 3px 6px; font-weight: 600; }
.alert { padding: 8px 12px; font-size: 13px; border-radius: 8px; margin-bottom: 10px; }
.small, small { font-size: 12px; }

/* ── Модалки: содержимое, а не воздух ── */
.modal-header { padding: 10px 14px; }
.modal-title { font-size: 16px; }
.modal-body { padding: 12px 14px; }
.modal-footer { padding: 8px 12px; }
.modal-body .btn { padding: 4px 10px; font-size: 12.5px; }

/* ── Боковое меню ── */
.sidebar .nav-link { padding: 4px 12px; font-size: 13px; gap: 8px; }
.sidebar .nav-link i { width: 17px; font-size: 14px; }
.sidebar-group { font-size: 11.5px; }
.sidebar { min-height: calc(100vh - 48px); }

/* ── Шапка ── */
.navbar { padding-top: 4px; padding-bottom: 4px; }
.navbar-brand { font-size: 15px; }
.navbar .nav-link { font-size: 13px; padding: 3px 8px; }

/* ── Рабочая область: меньше полей по краям ── */
main.col-md-9, main.col-lg-10 { padding: 12px 16px !important; }

/* ── Отступы блоков: убираем «воздух» между секциями ── */
.mb-4 { margin-bottom: 12px !important; }
.mb-3 { margin-bottom: 10px !important; }
.py-4 { padding-top: 12px !important; padding-bottom: 12px !important; }
.g-3 { --bs-gutter-y: .5rem; --bs-gutter-x: .5rem; }

/* ── Крупные цифры сводок: были display-6 во весь экран ── */
.stat-value, .h5.mb-0, .h6.mb-0 { font-size: 15px; }

/* ── Списки-«плитки» кнопок (выбор учеников, дни недели, фильтры) ──
 * Правило проекта — не выпадающие списки, а ряды кнопок. Оставляем кнопками,
 * но размером как фильтры в пульте менеджера: 6px 14px / 13px. */
.btn-toggle, .opt-calc, .filter-btn { padding: 5px 12px; font-size: 13px; }

/* Плотность таблиц не должна ломать читаемость на телефоне */
@media (max-width: 767.98px) {
    body { font-size: 15px; }
    .table { font-size: 13.5px; }
    .btn, .btn-lg { padding: 7px 14px; font-size: 14px; }
}

/* ── Строки одной высоты: числа не переносятся, длинный текст обрезается ──
 * После первой примерки владелец увидел «рваные» строки: LTV переносился на две строки,
 * а длинный список групп растягивал ячейку. Строка списка должна быть ровной. */
.table td.num, .table th.num { white-space: nowrap; }
.table td.trunc {
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
