/* ОБЩИЙ СЛОЙ ТАБЛИЦ — СТИЛИ (пара к таблица.js). Источник один — src/Shared.Ui;
   в wwwroot служб кладёт сборка. Цвета и отступы — только токенами ui-tokens.css:
   свой цвет здесь означал бы вторую палитру. */

/* Окно прокрутки одной таблицы: липкая шапка и первая колонка работают только внутри
   своего контейнера прокрутки, поэтому он один и он здесь. */
.таблица-окно {
  overflow: auto;
  max-height: var(--таблица-высота, 72vh);
  border: 1px solid var(--цвет-граница);
  border-radius: var(--скругление-крупное, 6px);
  background: var(--цвет-поверхность);
}
.таблица-окно table.таблица { width: 100%; border-collapse: separate; border-spacing: 0; }
.таблица-окно table.таблица thead th,
.таблица-окно table.таблица > tr:first-child > th,
.таблица-окно table.таблица > tbody > tr:first-child > th {
  position: sticky; top: 0; z-index: 3;
  background: var(--цвет-поверхность-утопленная);
  box-shadow: 0 1px 0 var(--цвет-граница);
}
.таблица-липкая-колонка table.таблица th:first-child,
.таблица-липкая-колонка table.таблица td:first-child {
  position: sticky; left: 0; z-index: 2;
  background: var(--цвет-поверхность);
  box-shadow: 1px 0 0 var(--цвет-граница);
}
.таблица-липкая-колонка table.таблица thead th:first-child { z-index: 4; background: var(--цвет-поверхность-утопленная); }

/* Родитель окна: контейнер экрана (`.scroll`, `.panel`) прежде прокручивал таблицу сам.
   Два вложенных контейнера прокрутки — две полосы и мёртвая липкая шапка (ревью 18.09),
   поэтому у родителя прокрутка снимается: окно таблицы прокручивает себя само. */
.таблица-родитель { overflow: visible !important; max-height: none !important; }

/* Заголовок, по которому можно щёлкнуть, выглядит нажимаемым и показывает направление. */
table.таблица th[role="button"] { cursor: pointer; user-select: none; }
table.таблица th[role="button"]:hover { color: var(--цвет-текст); text-decoration: underline; text-decoration-color: var(--цвет-граница); }
table.таблица th[role="button"]:focus-visible { outline: 2px solid var(--цвет-акцент, currentColor); outline-offset: -2px; }
/* Под флагом оболочки фокус шапки — кольцо фокуса системы: 3 px цветом фокуса (ui-tokens.css).
   Правило выше (2 px цветом акцента) под флагом совпало бы с подчёркиванием выбранной вкладки —
   та же толщина, тот же цвет. Кольцо внутри клетки (отступ минус толщина): снаружи его срезало бы
   окно прокрутки у липкой шапки. Без флага (откат WebShell) — прежние 2 px. Вес этого правила
   больше, чем у правила выше, и от порядка не зависит (сторож ФокусНеПодчёркиваниеTests:
   литеральное кольцо фокуса без парного правила под флагом — нарушение). */
:root[data-оболочка="2"] table.таблица th[role="button"]:focus-visible {
  outline: var(--обводка-фокуса) solid var(--цвет-фокус);
  outline-offset: calc(-1 * var(--обводка-фокуса));
}
table.таблица th[aria-sort="ascending"],
table.таблица th[aria-sort="descending"] { color: var(--цвет-текст); }
table.таблица .таблица-стрелка { font-weight: var(--начертание-обычное); }

/* Строка под указателем — чтобы глаз не терял её в широкой таблице. */
.таблица-окно table.таблица tbody tr:hover > td { background: var(--цвет-фон-наведение); }
.таблица-окно table.таблица tbody tr[hidden] { display: none; }
table.таблица tr.таблица-пусто td {
  color: var(--цвет-текст-3); font-style: italic; text-align: left;
  padding: var(--отступ-средний) var(--поле-клетки-по-горизонтали);
}

/* Панель над таблицей: поле отбора и счёт строк. */
.таблица-панель {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--отступ-малый);
  margin: 0 0 var(--отступ-малый);
  font-size: var(--кегль-служебный); color: var(--цвет-текст-3);
}
.таблица-панель .таблица-отбор {
  font: inherit; font-size: var(--кегль-таблица); color: var(--цвет-текст);
  min-width: 14em; height: var(--высота-органа);
  padding: 0 var(--отступ-малый);
  border: 1px solid var(--цвет-граница); border-radius: var(--скругление);
  background: var(--цвет-поверхность);
}
.таблица-панель .таблица-счёт:empty { display: none; }

/* ─── БАЗОВАЯ ТАБЛИЦА ЭКРАНА `table.tbl` (волна 0, §4 Б2) ───
   Семнадцать таблиц планировщика и список писем института несли класс `tbl`, у которого
   не было НИ ОДНОГО правила: каждая рисовалась умолчанием браузера. Правило одно на
   четыре контура и лежит здесь, в общем слое, — рядом со слоем сортировки/отбора;
   цвета и отступы только токенами. Числа — вправо табличными цифрами (правило системы).
   ⛔ `white-space: nowrap` — только КЛЕТКЕ (общее `td.num` ниже), не шапке: план волны 2 §2.4 —
   контракт. Шапка `th.num` переносится словами; неразрывная шапка раздвигала столбец по длине
   подписи («Перегрузка, чел.-дн.», «Свободно до горизонта, ч») и вместе с числом в клетке уводила
   таблицу вбок (ревью волны 2, E-3; хвосты волны 2, 27.09.2026). */
table.tbl { width: 100%; border-collapse: collapse; font-size: var(--кегль-таблица); background: var(--цвет-поверхность); }
table.tbl th, table.tbl td {
  padding: var(--поле-клетки-по-вертикали) var(--поле-клетки-по-горизонтали);
  border-bottom: 1px solid var(--цвет-граница); text-align: left; vertical-align: top;
}
table.tbl th {
  background: var(--цвет-поверхность-утопленная); color: var(--цвет-текст-2);
  font-weight: var(--начертание-выделенное); font-size: var(--кегль-служебный);
}
table.tbl th.num, table.tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }

/* ─── ЧИСЛА ВПРАВО В ЛЮБОЙ ТАБЛИЦЕ (веб-пакет «один продукт», волна 2) ───
   ⛔ БЕЗ ФЛАГА ОБОЛОЧКИ — это починка, а не вид: как починки волны 0, она действует и в откате
   (WebShell). Число — вправо табличными цифрами, и шапка столбца вместе с ним (правило системы,
   ui-tokens.css «ЧИСЛА»). Прежде (4a91565) правило было у каждого контура своё и неполное:
   глобальное `th.num, td.num` — у института и финконтура; у писем — `td.num` (шапки — номером графы
   `#grid`/`#archiveGrid`); у планировщика — только по контейнерам (`.scrtab`, `#prTable`,
   `.deskcard`, `.exday`; у `table.rep` вправо стоит вся таблица) и у `table.tbl`. Без правила
   оставались клетки `.num` планировщика вне этих
   контейнеров — «Числа графика» (chart.js), «Табель периода» (#rpPeriodSheet) и «Нормативы по
   истории факта» (#rpNormLearning) в отчётах: там число стояло влево, шапка — по центру.
   ⛔ ТОЛЬКО td/th: голый `.num` задел бы `.tile .num`, `input.num` и `.wbsrow .f.num`.
   Вес (0,1,1) и место ДО файла контура: уточнённые правила контура (`.rep td`, `#x td.num`)
   по-прежнему решают сами. `white-space: nowrap` — только клетке: число не рвётся по разрядам,
   а шапка столбца переносится словами. */
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
td.num { white-space: nowrap; }

/* ─── ШАПКА `table.tbl` ПОД ФЛАГОМ — 12/600 (спека веб-пакета §3.1). Под флагом служебный кегль
   стал 13 и сравнялся с клеткой; шапка берёт подпись (12), начертание — выделенное (выше). */
:root[data-оболочка="2"] table.tbl th { font-size: var(--кегль-подпись); }

@media print {
  .таблица-окно { max-height: none; overflow: visible; border: 0; }
  .таблица-панель .таблица-отбор { display: none; }
  table.таблица th[role="button"] { cursor: auto; }
}
