/* Печатный лист раздела «Расчёты технолога»: шапка с логотипом и подвал с
   QR-кодом. Разметку строит общий модуль assets/js/raschety-sheet.js, и
   стили к ней лежат здесь — рядом с модулем, а не в CSS одной из страниц.

   Файл заведён 2026-09-28, когда листом начала пользоваться вторая страница
   раздела (/raschety/shov/). До этого правила жили в raschety-naplavka.css;
   они перенесены сюда без единого изменения. Второй копии у них быть не
   должно: модуль один, вид листа у всех расчётов обязан быть один.

   Классы с префиксом rn- — имена самого модуля; переименование их сломало бы
   страницу наплавки и ничего не дало бы взамен.

   Правила только печатные. На экране шапку и подвал листа скрывает CSS
   страницы: у каждой свой набор узлов, который прячется вместе с ними. */

@media print {
  /* --- шапка листа --------------------------------------------------- */

  .rn-sheet-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 8mm;
    margin: 0 0 5mm;
    padding-bottom: 2.5mm;
    border-bottom: 0.5pt solid var(--line);
  }

  /* 8 мм — решение владельца 2026-09-23. Бренд-книга требует от печатных
     материалов минимум 12 мм; здесь лист расчёта, а не рекламный материал, и
     крупный знак делал бы из него листовку. Отклонение согласовано и записано
     в docs/PROJECT_LOG.md и docs/brand/README.md. Высота задана явно, ширина
     идёт за пропорциями 697 × 175 из атрибутов тега: лист не зависит от
     того, успел ли браузер прочитать сам SVG. */
  .rn-sheet-logo {
    height: 8mm;
    width: auto;
  }

  .rn-sheet-head-meta {
    text-align: right;
    font-size: 8.5pt;
    line-height: 1.35;
    color: var(--muted);
  }

  .rn-sheet-head-meta span {
    display: block;
  }

  /* --- подвал листа с QR-кодом ----------------------------------------- */

  /* Обычный блок в конце листа, а не position: fixed: фиксированный подвал
     печать либо повторяет на каждой странице, либо теряет вовсе. */
  .rn-sheet-foot {
    display: flex;
    /* nowrap явно: текст обязан остаться СПРАВА от кода и не переноситься под
       него, как бы ни вырос код на длинном расчёте. */
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 5mm;
    margin-top: 6mm;
    padding-top: 3mm;
    border-top: 0.5pt solid var(--line);
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* Размер поля кода считает модуль печатного листа и кладёт в --rn-qr-size:
     он зависит от длины адреса расчёта (плотность модуля не ниже 0,33 мм,
     поле от 22 до 35 мм — см. raschety-sheet.js). 22 мм здесь — запасное
     значение на те доли секунды, пока код ещё не посчитан. */
  .rn-sheet-qr {
    flex: 0 0 var(--rn-qr-size, 22mm);
    width: var(--rn-qr-size, 22mm);
    height: var(--rn-qr-size, 22mm);
  }

  .rn-sheet-qr-svg {
    display: block;
    width: 100%;
    height: 100%;
  }

  /* Тёмные модули — цветом текста, светлое поле — белым. Это заливки SVG, а
     не фон CSS: выключенная «печать фонов» их не снимает, и код остаётся
     читаемым сканером при любых настройках драйвера. */
  .rn-sheet-qr-dark {
    fill: var(--ink);
  }

  .rn-sheet-qr-field {
    fill: #ffffff;
  }

  /* min-width: 0 — иначе flex-элемент не сжимается меньше своего содержимого
     и длинная строка выдавливает код за поле листа. */
  .rn-sheet-foot-text {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 8.5pt;
    line-height: 1.45;
    color: var(--muted);
  }

  .rn-sheet-foot-text p {
    margin: 0 0 1mm;
  }

  .rn-sheet-foot-text p:last-child {
    margin-bottom: 0;
  }
}
