/* xml-check.css — стили страницы «Проверка XML» (/xml-check).
   Дополняет style.css; использует общие дизайн-токены (--sage/--clay/--sand/
   --steel, --ink-*, --border-*, --r-*, --space-*). */

.input-row-grid--cols2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-4, 16px);
    align-items: stretch;
}

@media (max-width: 900px) {
    .input-row-grid--cols2 { grid-template-columns: 1fr; }
}

/* --- Превью XML --- */
.xc-xml-preview {
    display: flex;
    align-items: center;
    gap: var(--space-2, 8px);
    margin-top: var(--space-3, 12px);
    padding: var(--space-3, 12px);
    border-radius: var(--r-md, 10px);
    background: var(--sage-50, #eef6f0);
    color: var(--ink-secondary, #4a5568);
    font-size: 0.9rem;
}
.xc-xml-preview i { width: 18px; height: 18px; color: var(--sage-500, #4f9d69); }
/* Плашка «числа с запятой в XML» — под карточкой файла, а не над таблицей. */
.xc-xml-comma-warn { margin: var(--space-3, 12px) 0 0; }

/* --- Список загруженных файлов --- */
/* Построчный стек (как .tep-files-list на вкладке ТЭП): карточки .tep-file-card
   стоят полноширинными строками, а не плывут чипами в ряд. Правило контейнера
   читает только модуль XML — на другие страницы и на ТЭП не влияет. */
.xc-files-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, 8px);
    margin-top: var(--space-3, 12px);
}

/* --- Шапка-сводка результата --- */
.xc-summary {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2, 8px);
    margin-bottom: var(--space-4, 16px);
}
.xc-summary__chip {
    display: inline-flex;
    align-items: baseline;
    gap: var(--space-2, 8px);
    padding: var(--space-2, 8px) var(--space-4, 16px);
    border-radius: var(--r-md, 10px);
    background: var(--steel-50, #EDF0F5);
    border: 1px solid var(--border-subtle, #e5e7eb);
}
.xc-summary__k { color: var(--ink-tertiary, #718096); font-size: 0.82rem; }
.xc-summary__v { color: var(--ink-primary, #1a202c); font-size: 1.05rem; }

/* --- Таблица результата --- */
.xc-results-wrap { overflow-x: auto; }
/* table-layout: fixed + colgroup-доли: столбцы фиксированной ширины (таблица
   ровно по контейнеру, без переполнения экрана и пустот), а длинный текст
   честно обрезается ellipsis'ом (в auto-раскладке max-width на ячейке
   игнорируется — текст распирал таблицу). Полное значение — в детали по клику. */
.xc-results-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.xc-col-label { width: 30%; }
.xc-col-unit  { width: 5%; }
.xc-col-elems { width: 14%; }
.xc-col-value { width: 18%; }
.xc-col-dev   { width: 15%; }
.xc-results-table th {
    text-align: left;
    padding: var(--space-2, 8px) var(--space-3, 12px);
    font-size: 0.8rem;
    color: var(--ink-tertiary, #718096);
    border-bottom: 2px solid var(--border-default, #d1d5db);
    white-space: normal;             /* перенос заголовка вместо обрезки */
    overflow-wrap: anywhere;         /* длинное «ЭЛЕМЕНТОВ» перенесёт, а не вылезет */
    background: var(--bg-surface, #fff);
    text-transform: uppercase; letter-spacing: 0.04em;
    vertical-align: bottom;
}
.xc-results-table td {
    padding: var(--space-2, 8px) var(--space-3, 12px);
    border-bottom: 1px solid var(--border-subtle, #eef0f2);
    font-size: 0.9rem;
    color: var(--ink-primary, #1a202c);
    vertical-align: middle;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.xc-results-table tbody tr:hover { background: var(--bg-subtle, #f6f8fa); }
.xc-results-table th.xc-num,
.xc-results-table td.xc-num { text-align: right; font-variant-numeric: tabular-nums; }
/* Подпись показателя: текст обрезается, иконка-заметка всегда видна (flex). */
.xc-label { font-weight: 500; cursor: pointer; }
/* Отступ подпункта: --xc-depth (4.1 → 1, 4.1.2.1 → 3, …) ставит rowHtml; без потолка. */
.xc-label__wrap { display: flex; align-items: center; gap: 4px; padding-left: calc(var(--xc-depth, 0) * 20px); }
.xc-label__text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1 1 auto; min-width: 0; }
.xc-label:hover .xc-label__text { text-decoration: underline dotted; }
.xc-unit { color: var(--ink-tertiary, #718096); font-size: 0.82rem; }
.xc-muted { color: var(--ink-tertiary, #718096); }
/* Подпись под нулём без элементов («не найдено») — как .tep-cell-notfound в ТЭП. */
.xc-notfound { font-size: 0.72rem; color: var(--ink-tertiary, #718096); white-space: nowrap; }
.xc-dev { font-weight: 600; }
.xc-note {
    display: inline-flex; align-items: center; flex: 0 0 auto;
    color: var(--ink-tertiary, #a0aec0); cursor: help;
}
.xc-note svg, .xc-note i { width: 14px; height: 14px; }

/* Статусы строк: mismatch — крупное (красный), warn — мелкое (жёлтый),
   match — совпадает (зелёный акцент на расхождении). */
.xc-row--mismatch { background: var(--clay-50, #fdf1ef); }
.xc-row--mismatch .xc-dev { color: var(--clay-700, #b3402f); }
.xc-row--warn { background: var(--sand-50, #fdf7ec); }
.xc-row--warn .xc-dev { color: var(--sand-700, #8a6d1f); }
.xc-row--match .xc-dev { color: var(--sage-700, #2f7d4f); }
.xc-row--info td, .xc-row--no_xml .xc-dev { color: var(--ink-tertiary, #718096); }
.xc-row--missing { background: var(--steel-50, #EDF0F5); }

.xc-ok { color: var(--sage-700, #2f7d4f); font-weight: 600; }
.xc-bad { color: var(--clay-700, #b3402f); font-weight: 600; }

/* Текстовые ячейки (имя/адрес/кадастр): обрезаются как остальные (nowrap +
   ellipsis наследуются от td), подсветка отличий видна в пределах ячейки. */
.xc-cell-text { color: var(--ink-primary, #1a202c); font-size: 0.9rem; }
.xc-diff {
    background: var(--clay-100, #f8dcd6); color: var(--clay-700, #b3402f);
    border-radius: 3px; padding: 0 3px; font-weight: 600;
}
.xc-detail-grid dd .xc-diff { padding: 1px 4px; }

/* Бейджи ФНО на чипах файлов. badge-ok/badge-warn заданы в style.css
   (sage-50/sand-50) — тона едины с .tep-fno-badge на вкладке ТЭП, здесь
   их не переопределяем (0.38.1). */
.upl-chip__extra.badge-error { background: var(--clay-100, #f8dcd6); color: var(--clay-700, #b3402f); }
.upl-chip__extra.badge-muted { background: var(--bg-subtle, #f1f3f5); color: var(--ink-tertiary, #718096); }

/* Пофайловая разбивка текстового атрибута в модалке детали строки:
   «✓/✗ · файл · значение» — видно, в каком файле значение разошлось с XML. */
/* Одна сетка на весь список: имена файлов — ровной колонкой по ширине самого
   длинного (но не шире 18em), перенос — только когда места не хватает. */
.xc-filecheck-list {
    display: grid; grid-template-columns: auto fit-content(18em) minmax(0, 1fr);
    gap: 6px var(--space-2, 8px); align-items: baseline;
    font-size: 0.85rem; line-height: 1.35;
}
.xc-filecheck { display: contents; }
.xc-filecheck__mark { font-weight: 700; }
.xc-filecheck--ok .xc-filecheck__mark { color: var(--sage-700, #4A6B3E); }
.xc-filecheck--bad .xc-filecheck__mark { color: var(--clay-700, #b3402f); }
.xc-filecheck__file { color: var(--ink-secondary, #4a5568); overflow-wrap: anywhere; }
.xc-filecheck__value { color: var(--ink-primary, #1a202c); }
.xc-filecheck--bad .xc-filecheck__value {
    background: var(--clay-50, #FBEFEB); padding: 0 4px; border-radius: 4px;
}
/* Справочные значения (этажность по файлам): без ✓/✗; файл, давший итог
   строки, выделен и подписан «наибольший». */
.xc-filecheck--info .xc-filecheck__mark { color: var(--ink-tertiary, #718096); }
.xc-filecheck--max .xc-filecheck__mark,
.xc-filecheck--max .xc-filecheck__value { color: var(--steel-700, #2f4a66); font-weight: 600; }
.xc-filecheck__max {
    margin-left: var(--space-1, 4px); padding: 0 6px; border-radius: var(--r-sm, 4px);
    background: var(--steel-50, #eef3f8); font-size: 0.75rem; font-weight: 500;
}

.xc-export-buttons { display: flex; gap: var(--space-2, 8px); align-items: center; }
.xc-summary { margin-top: var(--space-3, 12px); }

/* --- Модалка «деталь строки» (полное имя по клику) --- */
.xc-detail-grid {
    display: grid; grid-template-columns: auto 1fr;
    gap: var(--space-2, 8px) var(--space-4, 16px);
    margin-bottom: var(--space-4, 16px);
}
.xc-detail-grid dt { color: var(--ink-tertiary, #718096); font-size: 0.85rem; }
.xc-detail-grid dd { margin: 0; color: var(--ink-primary, #1a202c); font-variant-numeric: tabular-nums; }
#xc-detail-title { margin: 0; font-size: 1.05rem; line-height: 1.35; }
/* Текстовые строки (наименование, адрес): окно по ширине экрана до 960px —
   ширину ограничивает поле подложки, так что на любом экране влезает. */
.fx-modal.xc-detail--wide { max-width: 960px; max-height: 88vh; }

@media (max-width: 640px) {
    .xc-label__text { max-width: 180px; }
    /* Телефон: подпись над значением, текст файла — под его именем. */
    .xc-detail-grid { grid-template-columns: 1fr; gap: 2px; }
    .xc-detail-grid dd { margin-bottom: var(--space-2, 8px); }
    .xc-filecheck-list { grid-template-columns: auto minmax(0, 1fr); }
    .xc-filecheck__value { grid-column: 2; }
}
