/*
 * ВАЖНО (анти-дуп): классы u-hidden / u-flex-1 / u-m-0 / u-w-full /
 * u-text-sm|xs|lg|muted|danger определены в КАНОНЕ components/utilities.css
 * (грузится в _base_dashboard ПОСЛЕ этого файла) — здесь их НЕ переопределять.
 * Урок 2026-07-16: локальный u-text-sm (0.85rem) молча проигрывал канону
 * (0.8125rem) — tests/test_utility_collisions.py держит инвариант.
 *
 * shared/inline-utilities.css — утилиты для миграции статических inline-styles
 * (ТЗ F-07/§12: в мигрированных шаблонах статических style="..." быть не должно).
 *
 * Подключается в _base_dashboard.html ПОСЛЕ dashboard-base.css.
 * Классы намеренно узкие и соответствуют самым частым inline-паттернам
 * (аудит 2026-07-16: топ-12 паттернов Урбаниста покрывают ~70 вхождений).
 *
 * Видимость: .u-hidden вместо style="display:none". JS-переключение —
 * el.classList.toggle('u-hidden'); НЕ el.style.display (см. uVisible()
 * в shared/ui-utils.js — устойчив к обоим механизмам).
 */


/* Вертикальные стеки (flex-column + gap) */
.u-stack-3 { display: flex; flex-direction: column; gap: 3px; }
.u-stack-4 { display: flex; flex-direction: column; gap: 4px; }
.u-stack-6 { display: flex; flex-direction: column; gap: 6px; }

/* Горизонтальные ряды */
.u-row-between { display: flex; justify-content: space-between; align-items: center; }
.u-row-center { display: inline-flex; align-items: center; gap: 4px; }

/* Типографика (в связке со шрифтовым полом ≥12px) */
.u-title-sm { font-weight: 700; font-size: 0.95rem; margin-bottom: 4px; }
.u-mb-8 { margin-bottom: 8px; }
.u-mt-8 { margin-top: 8px; }

/* Частые паттерны Девелопера / Инженера данных (F-07 часть 3) */
.u-mt-2 { margin-top: 0.5rem; }
.u-mt-3 { margin-top: 0.75rem; }
.u-mt-neg-1 { margin-top: -0.25rem; }
.u-row-icon-sm { font-size: 0.8rem; display: flex; align-items: center; gap: 0.3rem; }
.u-h4-compact { margin: 0 0 0.5rem 0; font-size: 1rem; }

/* Частые паттерны Соц-архитектора (F-07 часть 4) */
.u-icon-lg { font-size: 1.2rem; }
.u-caption-muted { font-size: 0.82rem; color: var(--text-muted, #94a3b8); }
.u-label-block { display: block; margin-bottom: 3px; color: var(--text-secondary, #6b7280); }

/* Частые паттерны Горожанина / Куратора (F-07 часть 5) */
.u-mt-0 { margin-top: 0; }
.u-mb-06 { margin-bottom: 0.6rem; }
.u-mb-07 { margin-bottom: 0.7rem; }
.u-mr-auto { margin-right: auto; }
.u-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.u-chip-input { padding: 6px 10px; border: 1px solid var(--border-color, #e2e8f0); border-radius: 8px; font-size: 0.85rem; }
.u-card-plain { border: 1px solid var(--border-color, #e2e8f0); border-radius: 10px; padding: 14px; }
/* .78rem/.72rem подняты до пола 12px (F-04) — визуально идентичны post-sweep */
.u-caption { font-size: 0.78rem; }
.u-caption-mb { font-size: 0.78rem; margin-bottom: 0.4rem; }
.u-overline { font-size: 0.75rem; text-transform: uppercase; color: var(--text-muted); }

/* Кликабельная карточка-кнопка (частый паттерн списков Урбаниста) */
.u-card-btn {
    text-align: left;
    border: 1px solid var(--border, #D9D3C5);
    border-radius: 12px;
    padding: 14px 16px;
    background: var(--bg-elevated, #fff);
    cursor: pointer;
}

/* Частые паттерны ОКЦ-менеджера / Исследователя (F-07 часть 6) */
.u-form-label { display: block; margin-bottom: 4px; font-size: 13px; font-weight: 600; }
.u-form-label-sm { display: block; margin-bottom: 4px; font-size: 12px; font-weight: 600; }
.u-input-full { width: 100%; padding: 8px; border: 1px solid var(--border, #CFCFC4); border-radius: 5px; }
.u-mb-10 { margin-bottom: 10px; }
.u-mb-14 { margin-bottom: 14px; }
.u-my-6 { margin: 6px 0; }
.u-ml-auto { margin-left: auto; }
.u-grid-2-form { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
/* Оверлей модалки: display:none остаётся INLINE (контракт style.display в JS),
   класс даёт остальное; JS ставит display:flex — flex-выравнивание из класса. */
.u-modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, .5); z-index: 9999; justify-content: center; align-items: center; }
.u-modal-panel { background: var(--bg-elevated, #fff); padding: 24px; border-radius: 8px; width: 94%; max-height: 90vh; overflow-y: auto; }
.u-mw-420 { max-width: 420px; }
.u-mw-500 { max-width: 500px; }
.u-mw-520 { max-width: 520px; }
.u-mw-560 { max-width: 560px; }
.u-actions-end { display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px; }

/* F-07 часть 7 — хвост частотных паттернов (Урбанист/Девелопер/ИД/Архитектор/Куратор) */
.u-mb-3 { margin-bottom: 0.75rem; }
.u-mb-4 { margin-bottom: 1rem; }
.u-mt-4 { margin-top: 1rem; }
.u-p-3 { padding: 0.75rem; }
.u-row-3 { display: flex; align-items: center; gap: 0.75rem; }
.u-card-soft { background: var(--bg-secondary, #f8fafc); border: 1px solid var(--border, #e2e8f0); border-radius: 10px; padding: 1rem; margin-bottom: 1rem; }
.u-progress-track { background: var(--border, #e2e8f0); border-radius: 4px; height: 6px; overflow: hidden; }
.u-check-row { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; cursor: pointer; }
/* .72rem поднят до пола 12px (F-04) */
.u-half-btn { flex: 1; min-width: 46%; font-size: 0.75rem; padding: 4px; border: 1px solid var(--border, #e2e8f0); border-radius: 6px; background: transparent; cursor: pointer; }
