/* Оформление документа — общее для печатной страницы кабинета, предпросмотра на
   публичной странице образца и того, что уходит в .docx.
 
   Вынесено из печатного лейаута (web/templates/docs/_print_base.html), где эти
   правила жили инлайном и потому кончались на границе кабинета: тот же документ,
   показанный на публичной странице, набирался фирменным экранным шрифтом и выглядел
   веб-страницей, а не документом, который человек получит файлом.
 
   Правила привязаны к .doc-paper, а не к body: на печатной странице класс стоит на
   body, на публичной — на блоке предпросмотра, и оба получают одно оформление.
 
   Гарнитура — Times New Roman: печатная гарнитура организационно-распорядительных
   документов. К брендбуку она отношения не имеет и меняться вместе с ним не должна.
   Поля страницы и формат заданы там, где документ становится страницей или файлом:
   в @media print печатного лейаута и в w:sectPr конвертера .docx (ГОСТ Р 7.0.97-2025,
   пункт 6.1: левое 30 мм, правое 15 мм, верхнее и нижнее по 20 мм). */
.doc-paper {
    font-family: "Times New Roman", Georgia, serif;
    /* Кегль и интервал по ГОСТ Р 7.0.97-2025: 14 пт — верхний из рекомендованных
       пунктом 3.3 размеров (12, 13, 14), межстрочный 1,5 — верхняя граница пункта 3.4
       («через 1–1,5 интервала»). Размеры в пунктах, а не в пикселях: документ меряется
       кеглем печати, и «14px» на бумаге давало примерно 10,5 пт — мельче стандарта.
       Те же величины держит выгрузка в .docx (internal/docx). */
    font-size: 14pt; line-height: 1.5; color: #000;
}

.doc-paper h1 { font-size: 16pt; font-weight: bold; text-align: center; margin: 4px 0 20px; }
.doc-paper h2 { font-size: 15pt; font-weight: bold; margin: 18px 0 8px; text-align: justify; }
/* Абзацный отступ 1,25 см и выключка по ширине — пункты 3.4 и 3.5. Отступ отменяется
   там, где абзац не является текстом документа: реквизиты, центрированные и правые
   строки, подписи, пояснения под графой (см. правила ниже). */
.doc-paper p { margin: 8px 0; text-align: justify; text-indent: 1.25cm; }
.doc-paper p.center, .doc-paper p.right, .doc-paper p.muted, .doc-paper p.approve-stamp, .doc-paper .req p,
.doc-paper .sign p, .doc-paper .sign-row p, .doc-paper td p, .doc-paper th p,
.doc-paper p.place-date, .doc-paper .title-page p { text-indent: 0; }
/* Место составления, дата и регистрационный номер — реквизиты (пункт 3.4: составные
   части реквизитов отделяются дополнительным интервалом). Без него текст приказа
   начинался сразу под строкой города, будто продолжает её. */
.doc-paper p.place-date { margin: 8px 0 24px; }
/* Распорядительное слово ставится отдельной строкой от границы левого поля и
   отбивается сверху и снизу. Сам ГОСТ Р 7.0.97-2025 требует только формы изложения
   («В приказах текст излагается от первого лица единственного числа "приказываю"»,
   пункт 5.18); отдельная строка без абзацного отступа — правило Методических
   рекомендаций ВНИИДАД по применению стандарта и общий вид приказа, по которому его
   читают. Слитый с преамбулой, он теряется в середине абзаца. */
.doc-paper h2.order-word { text-align: left; margin: 20px 0; }
/* Многострочные реквизиты (пункт 3.4): печатаются через один межстрочный интервал, а
   составные части отделяются дополнительным. Одинарный интервал Word для Times New
   Roman — это около 1,15 высоты строки, отсюда и величина: набор на экране и в файле
   должен совпадать. Ту же величину ставит выгрузка (internal/docx, requisiteClasses). */
.doc-paper .req,
.doc-paper .doc-mark,
.doc-paper .approve-stamp,
.doc-paper .sign-row,
.doc-paper .title-page { line-height: 1.15; }

/* Реквизиты бланка: длина строки ограничена пунктом 3.5 — 8 см при угловом
   расположении, 12 см при продольном (оно центрировано). */
.doc-paper .req { margin-bottom: 16px; font-size: 12pt; max-width: 8cm; }
.doc-paper .req.center { max-width: 12cm; margin-left: auto; margin-right: auto; }
.doc-paper .right { text-align: right; }
/* Гриф утверждения (пункт 5.16): блок в правом верхнем углу первого листа, а строки
   внутри выравниваются по левому краю занимаемой зоны. Прежде весь гриф был прижат
   вправо, и «УТВЕРЖДАЮ», должность и дата шли рваной лесенкой по правому краю. */
.doc-paper .approve-stamp {
    width: max-content;
    max-width: 8cm;
    margin-left: auto;
    text-align: left;
}
.doc-paper .center { text-align: center; }
.doc-paper .muted { color: #555; }
/* Пояснение под строкой бланка («(фамилия, имя, отчество)») — своей строкой по центру и
   мельче: так его и читают под линией, а не сбоку от неё. Тем же абзацем это печатает
   выгрузка в .docx (internal/docx, docxParaWithHint). */
.doc-paper p > br + .muted, .doc-paper td > br + .muted {
    display: block;
    text-align: center;
    font-size: 12pt;
}
/* Перечни. Пункты нумеруются арабскими цифрами по уровням — «1.», «1.2.», «1.2.3.»
   (пункт 5.18; уровней рубрикации не более четырёх). Вложенный список средствами
   браузера начинал бы нумерацию заново, поэтому номер собирается счётчиками. Маркер
   ненумерованного перечня — дефис: им перечисляют и в самом стандарте. */
.doc-paper ul { margin: 8px 0 8px 22px; }
.doc-paper ol { list-style: none; counter-reset: gost; padding-left: 0; margin: 8px 0 8px 1.25cm; }
.doc-paper ol > li { counter-increment: gost; }
.doc-paper ol > li::before { content: counters(gost, ".") ". "; }
.doc-paper ol ol > li::before { content: counters(gost, ".") " "; }
.doc-paper ul { list-style-type: "–  "; }
.doc-paper li { margin: 4px 0; text-align: justify; }
.doc-paper li.order-responsible { text-align: justify; }
.doc-paper table { border-collapse: collapse; width: 100%; margin: 12px 0; }
/* Таблицы — 12 пт: пункт 3.3 допускает в таблицах меньший кегль, и он там нужен —
   таблица мер приказа ФСТЭК России в 14 пт не помещается по ширине листа. */
/* Графы — одинарным интервалом, как в .docx и PDF: ГОСТ Р 7.0.97-2025 п. 3.3 даёт 1–1,5, а полуторный в узкой графе растягивает строку выше листа. */
.doc-paper th, .doc-paper td { border: 1px solid #000; padding: 6px 8px; font-size: 12pt; line-height: 1.15; vertical-align: top; }
.doc-paper th { background: #f0f0f0; font-weight: bold; }
/* Строка номеров граф под шапкой: на продолжении таблицы графы называют номерами. */
.doc-paper tr.colnums td { text-align: center; padding: 1px 4px; font-size: 9pt; color: #444; }
.doc-paper .appendix table { table-layout: fixed; }
.doc-paper .appendix th, .doc-paper .appendix td { word-break: break-word; }
/* Шапка счёта-фактуры в универсальном передаточном документе: слева наименование
   строки с её номером, справа значение. Ячейки уже и плотнее обычных табличных —
   строк в шапке тринадцать, и обычными отступами она занимает страницу. */
.doc-paper .upd-head { margin: 6px 0; }
.doc-paper .upd-head td { padding: 3px 6px; font-size: 9pt; }
.doc-paper .upd-head td:first-child { color: #555; width: 34%; }
/* Счёт печатается по привычной бухгалтеру форме: заголовок строкой слева, реквизиты
   сторон абзацами, банковский блок и позиции — таблицами с рамкой, итоги справа под
   таблицей. */
.doc-paper .invoice-title { text-align: left; font-size: 15pt; margin: 0 0 18px; }
.doc-paper .doc-compact .invoice-title { font-size: 13pt; }
.doc-paper .party { margin: 8px 0; }
/* Реквизиты сторон и условия — по левому краю: выключка по ширине разгоняет пробелы в
   строке с наименованием и адресом, и реквизит читается рвано. */
.doc-paper .left { text-align: left; }
.doc-paper .bank { margin: 12px 0; }
/* Подпись под клеткой («Банк получателя», «Получатель») стоит у нижнего края, как в
   бланке платёжного поручения, а сама клетка держит высоту: пустая рамка в счёте
   читается как незаполненный реквизит. */
.doc-paper .cell-note { font-size: 8pt; color: #444; }
.doc-paper .bank td { vertical-align: top; }
.doc-paper .bank .bank-name { height: 2.6em; }
.doc-paper .items { margin-top: 14px; }
.doc-paper .totals { width: 55%; margin: 0 0 12px auto; border: 0; }
.doc-paper .totals td { border: 0; padding: 1px 8px; }
.doc-paper .totals tr td:last-child { border-bottom: 1px solid #000; width: 30%; }

/* Расчётные формы (счёт) набираются плотнее ОРД: 11 пт вместо 14. Счёт не
   организационно-распорядительный документ, набор ГОСТ Р 7.0.97-2025 для него избыточен,
   а лишние строки сносят подпись с печатью на второй лист.

   Кегли перечислены по одному, а не наследованием от корня: у таблиц и зоны реквизитов
   свой размер (12 пт ниже), и он перебил бы наследование — на экране осталось бы 12 пт
   там, где в файле 9,4. Конвертер PDF умножает КАЖДЫЙ кегль на ту же долю 11/14
   (internal/pdf, compactScale), поэтому здесь те же доли, а межстрочный остаётся
   полуторным — его конвертер не трогает. */
.doc-paper .doc-compact { font-size: 11pt; }
.doc-paper .doc-compact h1 { font-size: 12.5pt; }
.doc-paper .doc-compact h2 { font-size: 11.8pt; }
.doc-paper .doc-compact h3 { font-size: 11pt; }
.doc-paper .doc-compact th, .doc-paper .doc-compact td { font-size: 9.5pt; }
.doc-paper .doc-compact .req { font-size: 9.5pt; }
.doc-paper .sign { margin-top: 28px; }
/* Оттиск печати с подписью: стоит под строками подписи и слегка на них наезжает —
   так печать и ставят на бумаге. Смещение отрицательным отступом, а не абсолютным
   позиционированием: страница уходит в .doc, а Word позиционирование не понимает. */
/* Оттиск печати: поднимается на строки подписи (столько же, сколько data-lift читает
   конвертер PDF) и стоит посередине. Размеры картинки — в атрибутах width/height самой
   разметки: их уважают и браузер, и конвертер, и второго объявления быть не должно. */
.doc-paper .stamp { margin: -140px 0 0 0; text-align: center; }
.doc-paper .sign-row { display: flex; justify-content: space-between; margin-top: 22px; }
.doc-paper .blank { display: inline-block; min-width: 240px; border-bottom: 1px solid #000; }
.doc-paper .blank-lg { min-width: 420px; }
.doc-paper .blank-sm { min-width: 2.5em; }
.doc-paper .blank-mon { min-width: 7em; }
/* В графе таблицы поле — это место под запись, а не подчёркивание: клетку ограничивают
   её же линии, и черта внутри читается как уже вписанное значение. Ширину столбца поле
   тоже раздувать не должно. */
.doc-paper td .blank, .doc-paper th .blank { min-width: 4em; border-bottom: none; }
.doc-paper td .blank-sm, .doc-paper th .blank-sm { min-width: 2.5em; }
.doc-paper .page-break { page-break-before: always; }
/* Диаграмма в документе: по центру и целиком на одной странице — разрыв
посреди фигуры делает её нечитаемой, а в отчёте она обязательна
(методика оценки зрелости, пункт 35, подпункт «л»). */
.doc-paper .chart { text-align: center; margin: 12px 0; page-break-inside: avoid; break-inside: avoid; }
.doc-paper .chart svg { max-width: 100%; height: auto; }
.doc-paper h3 { font-size: 14pt; font-weight: bold; margin: 12px 0 6px; text-align: justify; }
/* Титульный лист */
.doc-paper .title-page { min-height: 250mm; display: flex; flex-direction: column; text-align: center; }
.doc-paper .title-page .spacer { flex: 1 1 auto; }
.doc-paper .title-main { font-size: 18pt; font-weight: bold; margin: 0; }
.doc-paper .title-sub { font-size: 14pt; margin-top: 18px; }
.doc-paper .title-foot { font-size: 14pt; }
/* Строки «Начат»/«Окончен» — ярусом ниже заголовка, тем же кеглем, что подзаголовок. */
.doc-paper .title-dates p { margin: 4px 0; font-size: 14pt; }
.doc-paper .title-dates { margin-top: 26px; }
/* Строка под запись — размеченная строка журнала и любая строка с полем для заполнения:
   клетки пустые, поэтому высоту задаёт строка — иначе писать в ней будет негде.
   Значение — высота содержимого: вместе с полями ячейки строка
   получается около 8 мм, и тридцать строк бланка укладываются в лист. Ту же высоту
   выставляет экспорт в .docx (internal/docx, trHeight). */
.doc-paper tr.journal-row td, .doc-paper tr:has(.blank) td { height: 4.5mm; }
/* Оглавление */
.doc-paper .toc { list-style: none; margin-left: 0; padding-left: 0; }
.doc-paper .toc li { margin: 5px 0; }
.doc-paper .toc li.sub { margin-left: 24px; }
.doc-paper .toc li.app { margin-top: 4px; }
.doc-paper dl.terms dt { font-weight: bold; margin-top: 8px; }
.doc-paper dl.terms dd { margin: 2px 0 0 22px; text-align: justify; }

/* Витрина неполного документа — одна на оба места, где она бывает: закрытый тарифом
   документ в кабинете и сборка по образцу до оплаты. Раньше каждое рисовало витрину
   по-своему — надпись поверх текста в одном месте и фирменный знак фоном в другом, —
   и один и тот же документ выглядел двумя разными продуктами.

   Знак — фоном, а не элементом поверх: текст остаётся выделяемым, а марка не попадает
   ни в печать, ни в разбор страницы. Изображение вшито в стиль — отдельный запрос за
   картинкой ради фона не нужен. Затухание книзу говорит то же, что и обрезка: текст
   продолжается, но здесь не показан. */
.doc-preview { position: relative; }
.doc-preview::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMjAwIj48dGV4dCB4PSIwIiB5PSIxNTAiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAxNjAgMTAwKSIgZm9udC1mYW1pbHk9Ik1hbnJvcGUsIEFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjM0IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjMjQxZjJiIiBmaWxsLW9wYWNpdHk9IjAuMDYiPtCT0YDQsNC80L7RgtCw0JjQkTwvdGV4dD48L3N2Zz4=");
    background-repeat: repeat;
}
.doc-preview::after {
    content: "";
    position: absolute; left: 0; right: 0; bottom: 0; height: 180px;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 88%);
    pointer-events: none;
}
@media print {
    .doc-preview::before, .doc-preview::after { display: none; }
}

/* Гриф (пометка) об ограничении доступа — реквизит 14 по ГОСТ Р 7.0.97-2025: правый
   верхний угол первого листа, на границе верхнего поля. Печатается по выбору оператора
   (см. web.DocMark), поэтому это обычный блок в потоке, а не абсолютное позиционирование:
   в .docx абсолютные координаты Word не переносит, и гриф уехал бы поверх заголовка. */
/* Пометка об ограничении доступа с номером экземпляра (пункт 5.14) — зона в правом
   верхнем углу, а строки внутри выравниваются по левому краю зоны (пункт 3.4), как и
   гриф утверждения. Прижатые вправо, они шли рваной лесенкой. */
.doc-paper .doc-mark {
    width: max-content;
    max-width: 8cm;
    margin-left: auto;
    margin-bottom: 12px;
    text-align: left;
    font-size: 12pt;
}

/* Служебные листы — лист ознакомления и лист регистрации изменений. Начинаются с новой
   страницы: разрыв ставит элемент .page-break перед листом (он же переносится в .docx),
   поэтому своего page-break-before здесь нет — два разрыва подряд дают пустой лист.
   Высоту строк для записи от руки задаёт общая tr.journal-row. */
.doc-paper .doc-sheet {
    margin-top: 28px;
}
.doc-paper .doc-sheet h2 { text-align: center; }
