/* ===== PRINT.CSS — КАК ПОРТАЛ ВЫГЛЯДИТ НА БУМАГЕ =====
 *
 * ТЗ владельца 17.08.2026. В портале не было НИ ОДНОГО правила печати: во всём
 * style.css (238 КБ) ноль блоков @media print. Значит, до сегодня Cmd+P давал
 * лист с боковым меню на полстраницы, кнопками, тёмной заливкой при тёмной теме
 * и — главное — ОБРЕЗАННОЙ таблицей: на бумагу попадало только то, что видно на
 * экране, потому что таблицы и окна прокручиваются внутри себя.
 *
 * Кадровику лист нужен регулярно: положить на стол, отдать руководителю, подшить
 * в дело. Поэтому правила печати — не украшение, а недостающая функция.
 *
 * ОТДЕЛЬНЫМ ФАЙЛОМ, а не строками в style.css: печать — своя среда со своими
 * правилами, и держать её отдельно честнее, чем растворять в 238 КБ. Файл
 * подключается в index.html последним, чтобы перебивать всё остальное.
 *
 * ЧТО ЗДЕСЬ НЕ ДЕЛАЕТСЯ: не выдумывается «печатная вёрстка» с другими
 * колонками и порядком. На бумагу идёт то же, что на экране, — иначе человек
 * получит лист, не похожий на то, что он видел, и не поверит ни одному.
 *
 * Зависимости: theme.css (переменные), style.css (классы оболочки).
 */

/* Поля страницы. 12 мм — обычные поля документа: подшивается и не режется. */
@page { margin: 12mm; }

@media print {

  /* ── 1. БУМАГА ВСЕГДА СВЕТЛАЯ ────────────────────────────────────────────
   * Портал умеет тёмную тему, и печатать её нельзя: лист выйдет залитым, а
   * светлый текст на нём — белым по белому, то есть пустым. Переопределяем
   * только сами токены — так весь портал светлеет разом, без правки экранов.
   * Палитра theme.css при этом не меняется (ОФОРМЛЕНИЕ.md): здесь она просто
   * подменена для одной среды — бумаги. */
  :root, :root[data-theme="dark"], :root[data-theme="light"] {
    --bg: #FFFFFF; --card: #FFFFFF; --panel: #FFFFFF;
    --text: #000000; --text2: #333333; --text3: #555555;
    --border: #BBBBBB;
  }
  html, body { background: #FFFFFF !important; color: #000000 !important; }

  /* Тени и подсветки на бумаге превращаются в серую грязь. */
  * { box-shadow: none !important; text-shadow: none !important; }

  /* Цветные метки статусов ПЕЧАТАЕМ. По умолчанию браузер выбрасывает фоны, и
   * зелёная строка «Исполнено» стала бы неотличима от обычной — то есть с листа
   * пропал бы смысл, а не оформление. Чёрно-белый принтер сам сведёт их в
   * оттенки серого. */
  body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* ── 2. НИЧЕГО, ЧТО НЕЛЬЗЯ НАЖАТЬ ────────────────────────────────────────
   * Меню, шапка, кнопки, уведомления и переключатель темы на бумаге — мусор,
   * съедающий треть листа. */
  .sidebar, .app-topbar, .tw, .ctx-menu, .sidebar-toggle,
  .theme-seg, .global-search-wrap, .global-search-drop,
  .btn, .ec-btn, .app-tb-btn, .thd-b, .thd-x { display: none !important; }

  /* Кнопки действий в строках (правка, удаление, история) — по одной на каждую
   * из 1439 строк. Перечислять их классы по всем 68 модулям бессмысленно:
   * завтра появится шестьдесят девятый. Ловим по общему признаку имени —
   * в портале такие кнопки называются *-btn, *-act, *-ico.
   * ПРОВЕРЕНО НА СТЕНДЕ (17.08.2026): без этого правила на листе оставались
   * 24 «Редактировать», 24 «Удалить» и 24 значка истории. */
  [class*="-btn"], [class*="-act"], [class*="-ico"] { display: none !important; }

  /* А вот вкладки-переключатели ОСТАВЛЯЕМ: активная подсвечена, и по листу
   * видно, что именно распечатано — «Учёт», «График 1С», какой год. Без них
   * лист теряет собственную подпись. */
  .sgm-i, .sgm-i.on { display: inline-flex !important; }

  /* ── 3. РАЗВЕРНУТЬ ПРОКРУТКУ — ГЛАВНОЕ ПРАВИЛО ───────────────────────────
   * Из-за него печать и была бесполезной. Портал построен на областях с
   * собственной прокруткой (в style.css их больше сорока: .mc, .reg-body,
   * .sc-body, .och-body, .hub-body, .uic-list, календарные списки…). На бумагу
   * такая область отдаёт РОВНО ТО, ЧТО ВИДНО, — остальное молча отрезается.
   * Поэтому снимаем ограничения по высоте и прокрутку у всего разом: перечислять
   * сорок классов значит завтра забыть сорок первый. */
  * { overflow: visible !important; max-height: none !important; }
  .app-layout, .app-main, .app-body, .mc {
    height: auto !important; min-height: 0 !important; display: block !important;
  }

  /* Прилипшие шапки на бумаге прилипать некуда — иначе они наезжают на строки. */
  [style*="position:sticky"], [style*="position: sticky"],
  thead th, .tbl-sticky, .thd-pop { position: static !important; }

  /* ── 4. ТАБЛИЦЫ ПЕРЕНОСЯТСЯ ПО-ЧЕЛОВЕЧЕСКИ ───────────────────────────────
   * Шапка повторяется на каждом листе (иначе со второго листа непонятно, что за
   * колонки), строка не разрывается между листами. */
  table { width: 100% !important; border-collapse: collapse; }
  thead { display: table-header-group; }
  tr, .chk-row, .card, .tb-card { break-inside: avoid; page-break-inside: avoid; }
  h1, h2, h3 { break-after: avoid; page-break-after: avoid; }

  /* ── 5. ОТКРЫТОЕ ОКНО ПЕЧАТАЕТСЯ ВМЕСТО СТРАНИЦЫ ─────────────────────────
   * Половина того, что кадровику нужно на бумаге, живёт в модальных окнах:
   * список проверки, карточка отпуска, сводная сверка по человеку. Печатать их
   * вместе со страницей, которая осталась позади, — значит печатать два экрана
   * на одном листе. Поэтому: окно открыто — печатаем окно.
   * :has() поддерживают все браузеры с 2022 года; если он вдруг не сработает,
   * лист выйдет как раньше — с фоном страницы, но не пустым. */
  body:has(.mo.show) .app-layout { display: none !important; }
  .mo:not(.show) { display: none !important; }
  .mo.show {
    position: static !important; display: block !important;
    background: none !important; inset: auto !important;
  }
  .mc {
    max-width: none !important; width: auto !important;
    padding: 0 !important; border: 0 !important; border-radius: 0 !important;
  }

  /* ── 6. ССЫЛКИ ───────────────────────────────────────────────────────────
   * Синее подчёркивание и адреса в скобках на бумаге не нужны: перейти по ним
   * всё равно нельзя, а читать мешают. */
  a { color: inherit !important; text-decoration: none !important; }
}
