/* ============================================================
   css/tables.css — таблицы: закреплённые столбцы и шапка, журнал, многоколоночные отчёты.
   С 26.10.2026 стили разнесены по файлам без правок.
   ============================================================ */
  /* ===== ТАБЛИЦЫ ===== */
  .table-wrapper{ overflow-x:auto; margin:0 -4px; }
  /* Столбец с кнопками прилипает к правому краю: на экране ноутбука
     журнал шире окна, и «Апелляция» уезжала за край — у РГО она
     «пропала». Теперь кнопки на виду при любой ширине и прокрутке вбок. */
  .col-actions{ position:sticky; right:0; z-index:1; background:var(--surface);
    box-shadow:-10px 0 10px -10px rgba(15,23,42,.25); }
  /* закреплённая копия шапки таблицы — под шапкой сайта (у той z-index 50) */
  .sticky-head{ position:fixed; z-index:45; overflow:hidden; background:var(--surface);
    box-shadow:0 8px 12px -10px rgba(15,23,42,.35); }
  .sticky-head table{ border-collapse:collapse; background:var(--surface); }
  @media print{ .sticky-head{ display:none !important; } }
  /* Кнопки в последней колонке не рвём по словам: лучше прокрутка, чем
     обрезанное «Изменит». */
  .table-wrapper td:last-child{ white-space:nowrap; }
  /* Журнал: ошибкам — место. Ячейку сжимало до ~110px, на живых данных
     таблица вылезала за экран, и правый край ошибок уходил под закреплённые
     кнопки (19.10). Кнопки переносятся в две строки, но сами не рвутся. */
  .table-wrapper td.col-errs{ min-width:220px; max-width:420px; }
  .table-wrapper td.col-wrap{ white-space:normal; min-width:96px; }
  .col-wrap .btn-small{ white-space:nowrap; margin:2px; }
  /* Многоколоночные отчёты набираем плотнее — иначе на ноутбуке они
     не влезают и приходится возить таблицу вбок. */
  .table-dense table{ font-size:13px; }
  .table-dense th, .table-dense td{ padding:8px 10px; }
  /* На экране ноутбука журнал в 12 столбцов не влезал на ~70px, и
     прилипший столбец кнопок закрывал «Ошибки». Уже поля — влезает. */
  @media (max-width:1440px){ .table-dense th, .table-dense td{ padding:7px 6px; } }
  /* длинные заголовки вроде «Необоснованные от заказчика» переносим:
     в одну строку они распирают таблицу шире экрана */
  .table-dense th{ white-space:normal; }
  /* Там, где таблицу всё равно приходится прокручивать, «Группа» и
     «Оператор» остаются на месте: иначе непонятно, чья это строка.
     Ширины закреплённых колонок фиксированы — от них считается отступ. */
  .table-pinned th:nth-child(1), .table-pinned td:nth-child(1),
  .table-pinned th:nth-child(2), .table-pinned td:nth-child(2){
    position:sticky; z-index:2; background:var(--surface);
    box-shadow:1px 0 0 var(--border);
  }
  .table-pinned th:nth-child(1), .table-pinned td:nth-child(1){ left:0; width:88px; min-width:88px; }
  .table-pinned th:nth-child(2), .table-pinned td:nth-child(2){ left:88px; width:210px; min-width:210px; }
  .table-pinned tr:hover td:nth-child(1), .table-pinned tr:hover td:nth-child(2){ background:var(--surface-2); }
  .table-pinned .pr-total td:nth-child(1), .table-pinned .pr-total td:nth-child(2){ background:var(--surface-2); }
  table{ width:100%; border-collapse:collapse; font-size:14px; }
  table th{ background:transparent; padding:10px 14px; text-align:left; font-weight:600; color:var(--muted); border-bottom:1.5px solid var(--border); white-space:nowrap; font-size:11px; text-transform:uppercase; letter-spacing:.5px; }
  table td{ padding:12px 14px; border-bottom:1px solid var(--border); color:var(--ink-2); font-variant-numeric:tabular-nums; }
  table td strong{ color:var(--ink); font-weight:600; }
  table tr:hover td{ background:var(--surface-2); }
  .status-badge{ padding:4px 11px; border-radius:20px; font-size:12px; font-weight:600; display:inline-block; letter-spacing:.1px; }
  .status-badge.Новая{ background:var(--new-bg); color:var(--new); }
  .status-badge.В_работе{ background:var(--mid-bg); color:#9a6206; }
  .status-badge.Проверена{ background:var(--good-bg); color:#0a6e3d; }
  .status-badge.Отклонена{ background:var(--bad-bg); color:#a52020; }
  .ev-addcmt{ display:block; margin:2px 0 6px auto; padding:2px 8px; border:0; background:none;
    color:var(--muted); font-size:12px; cursor:pointer; border-radius:6px; }
  .ev-addcmt:hover{ color:var(--accent-ink); background:var(--accent-soft); }
  .ev-src{ display:flex; align-items:center; gap:10px; margin:2px 0 8px; padding:8px 12px;
    background:var(--bad-bg); border:1px solid var(--bad); border-radius:8px; }
  .ev-src label, .ev-src .ev-src-label{ font-size:13px; font-weight:600; color:#a52020; margin:0; }
  /* выбрали — строка успокаивается: красная рамка только пока не отвечено */
  .ev-src.done{ background:var(--surface-2); border-color:var(--border); }
  .ev-src.done .ev-src-label{ color:var(--ink-2); }
  .ev-src .ev-src-opts{ display:flex; gap:6px; }
  .ev-opt.on-src{ background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink); }
  .ev-editbar{ display:flex; align-items:center; justify-content:space-between; gap:16px;
    background:var(--mid-bg); border:1px solid var(--mid); color:#8a5600; }
  .ev-editbar .hint{ color:#8a5600; opacity:.8; margin-top:2px; }
  .ev-linkbar{ display:flex; align-items:center; justify-content:space-between; gap:16px;
    background:var(--accent-soft); border:1px solid var(--accent); color:var(--accent-ink); }
  .ev-linkbar .hint{ color:var(--accent-ink); opacity:.75; margin-top:2px; }
  .staff-audit{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
  .staff-chip{ border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 14px; background:var(--surface-2); }
  .staff-chip .n{ font-family:var(--display); font-size:22px; font-weight:600; }
  .staff-chip .t{ color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.4px; margin-top:2px; }
  .staff-chip.bad .n{ color:var(--bad-ink); }
  .staff-chip.ok  .n{ color:var(--good-ink); }
  .staff-note{ margin-top:12px; font-size:13px; color:var(--ink-2); }
  .staff-note b{ color:var(--bad-ink); }
  .role-badge{ display:inline-block; padding:3px 9px; border-radius:20px; font-size:12px;
    background:var(--accent-soft); color:var(--accent-ink); white-space:nowrap; }
  .no-pass{ color:var(--bad-ink); font-size:12px; }
  .hist-line{ display:flex; gap:12px; padding:11px 0; border-bottom:1px solid var(--border); }
  .hist-line:last-child{ border-bottom:none; }
  .hist-dot{ flex:0 0 auto; width:9px; height:9px; border-radius:50%; background:var(--accent); margin-top:6px; }
  .hist-main{ flex:1 1 auto; min-width:0; }
  .hist-what{ font-weight:600; font-size:14px; color:var(--ink); }
  .hist-meta{ color:var(--muted); font-size:12.5px; margin-top:2px; }
  .hist-det{ color:var(--ink-2); font-size:13px; margin-top:3px; }
  .ev-row.ev-missing{ background:var(--bad-bg); border-radius:8px; box-shadow:inset 3px 0 0 var(--bad); }
  .empty-state{ text-align:center; padding:40px; color:var(--muted); min-height:190px;
    display:flex; flex-direction:column; align-items:center; justify-content:center; }
  .empty-state i{ font-size:40px; margin-bottom:14px; display:block; color:var(--border-strong); }

  .filter-bar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
  .filter-bar select, .filter-bar input{ padding:10px 13px; border:1.5px solid var(--border-strong); border-radius:var(--radius-sm); font-size:14px; outline:none; color:var(--ink); background:var(--surface); transition:border-color .2s, box-shadow .2s; }
  .filter-bar select:focus, .filter-bar input:focus{ border-color:var(--accent); box-shadow:0 0 0 3px rgba(43,89,240,.14); }
  .btn-filter{ padding:10px 18px; background:var(--accent); color:#fff; border:none; border-radius:var(--radius-sm); cursor:pointer; font-weight:600; font-size:14px; transition:background .18s var(--ease-out), transform .16s var(--ease-out); }
  .btn-filter:hover{ background:var(--accent-ink); }

