/* ==========================================================================
   Лист договора A4 (.paper / .d-*) — «Стол документа», текстовый движок.
   ⚠ Фиксированные цвета бумаги ОСОЗНАННО без var(--*): лист = физический
   носитель А4, в тёмной теме остаётся белым (исключение из правила
   CSS-переменных — прецедент paper_schet.css / paper_akt.css).
   База .paper — как у акта; типографика договора (.d-head/.d-sec/.d-signs)
   — по утверждённому прототипу ui_prototype_dogovorsam.html (47/47).
   Печать листа A4 — шаг 4 (наследует правила из document_base.html).
   ========================================================================== */

/* ===== Масштаб и сам лист ===== */
.paper-scale { transform-origin: top center; transition: transform .15s; }
.paper {
    width: 794px;              /* A4 = 210mm @96dpi */
    min-height: 1123px;        /* A4 = 297mm @96dpi */
    background: #fdfbf5;
    color: #1a1a1a;
    font-family: 'Times New Roman', Georgia, serif;
    font-size: 13px;
    line-height: 1.45;
    padding: 48px 52px;
    box-shadow: var(--paper-shadow, 0 8px 32px rgba(15, 23, 42, .14));
    position: relative;
}

/* ===== Click-to-edit подсветка (только на экране) ===== */
.paper [data-doc-field] { cursor: pointer; border-radius: 2px; transition: background .15s; }
.paper [data-doc-field]:hover { background: rgba(90, 82, 224, .05); }
.paper [data-focused="true"] { outline: 2px solid var(--primary); outline-offset: 2px; animation: paperPulse .6s; }
@keyframes paperPulse { 0% { box-shadow: 0 0 0 0 rgba(90, 82, 224, .4); } 100% { box-shadow: 0 0 0 8px rgba(90, 82, 224, 0); } }

/* ===== Маркеры страниц (приблизительные границы А4, no-print) ===== */
.page-mark { position: relative; height: 0; overflow: visible; }
.page-mark::before { content: ''; position: absolute; left: -52px; right: -52px; top: 0; border-top: 2px dashed #bbb; }
.page-mark span { position: absolute; right: -44px; top: -9px; background: #fdfbf5; padding: 0 8px; font-size: 10px; color: #999; font-family: 'Manrope', sans-serif; white-space: nowrap; }

/* ===== Вспышка нового раздела (при включении модуля; JS, шаг 3) ===== */
.d-sec.flash-new { animation: flashNew 1.8s ease; }
@keyframes flashNew { 0% { background: rgba(90, 82, 224, .16); } 100% { background: transparent; } }

/* ===== Шапка договора ===== */
.d-head { text-align: center; margin-bottom: 18px; }
.d-head h1 { font-size: 17px; font-weight: 700; letter-spacing: .5px; margin: 0 0 4px; overflow-wrap: anywhere; }
.d-head .d-num { font-size: 14px; margin-bottom: 8px; }
.d-placedate { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 16px; }
.d-preamble { text-align: justify; margin-bottom: 16px; text-indent: 1.25cm; }

/* ===== Разделы и пункты (текучие; разрывы — правила печати в шаге 4) ===== */
.d-sec { margin-bottom: 14px; }
.d-sec h3 { font-size: 13.5px; font-weight: 700; margin: 0 0 6px; letter-spacing: .2px; }
.d-sec p { text-align: justify; margin: 0 0 6px; text-indent: 1.25cm; overflow-wrap: anywhere; }
.d-sec p.no-indent { text-indent: 0; }
.d-sub { margin: 2px 0 2px 0.6cm; text-align: justify; overflow-wrap: anywhere; }

/* ===== Реквизиты и подписи сторон (2 колонки) ===== */
.d-req { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 18px; }
.d-req h4 { font-size: 12px; text-transform: uppercase; color: #444; border-bottom: 1px solid #999; padding-bottom: 3px; margin: 0 0 6px; }
.d-req .p-line { font-size: 12px; margin-bottom: 2px; overflow-wrap: anywhere; }
.d-req .p-line .d-na { color: #999; }  /* пустой реквизит — серое «—» (прототип reqLine) */
.d-signs { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 22px; }
.d-sign-line { margin-top: 26px; display: flex; align-items: flex-end; gap: 8px; }
.d-sign-line .dash { flex: 1; border-bottom: 1px solid #1a1a1a; height: 1px; }
.d-sign-name { white-space: nowrap; }
.d-sign-role { font-size: 11px; color: #555; margin-top: 2px; }
.d-mp { width: 34mm; height: 22mm; border: 1.5px dashed #888; display: flex; align-items: center; justify-content: center; font-size: 11px; color: #666; margin-top: 8px; }
.d-self-hint { margin-top: 14px; font-size: 10.5px; color: #555; font-style: italic; border-top: 1px solid #ccc; padding-top: 8px; text-align: justify; }

/* ===== Печать: ТОЛЬКО лист (ноль UI/дисклеймеров).
   ⛔ Свой @page НЕ писать — наследуется от document_base.html (post_print_css:
   @page A4 margin 0 + колонтитулы none; каскад base.html:55-57 — extra_css
   раньше print.css, любой @page из CSS-файла будет перебит);
   Скрытие UI (.doc-panel/.doc-action-bar/.doc-desk-toolbar/…) и сброс
   .doc-studio/.doc-desk/.doc-paper-wrap (включая inline-height от applyZoom)
   — в print.css. Здесь — специфика листа договора (.paper / .d-*). ===== */
@media print {
    .paper-scale {
        transform: none !important;
        /* transition тоже убить: иначе при emulate print computed transform
           отдаёт интерполированный matrix до конца анимации (флейк проверок) */
        transition: none !important;
        width: 100% !important;
        height: auto !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    .doc-paper-wrap {
        height: auto !important;
        overflow: visible !important;
    }
    .paper {
        box-shadow: none !important;
        border: none !important;
        outline: none !important;
        width: 100% !important;
        max-width: 100% !important;
        min-height: auto !important;
        margin: 0 !important;
        padding: 0 !important;
        background: #ffffff !important;
        color: #1a1a1a !important;
        overflow: visible !important;
        font-size: 12.5px !important;
        line-height: 1.35 !important;
    }
    .paper [data-doc-field] { cursor: default !important; }
    .paper [data-doc-field]:hover { background: transparent !important; }
    .paper [data-focused="true"] { outline: none !important; animation: none !important; }

    /* Маркеры страниц на физической печати скрыты полностью */
    .page-mark { display: none !important; }

    /* Деловая печатная типографика: строгие интервалы, защита от дыр между листами */
    .d-head {
        margin-bottom: 10px !important;
    }
    .d-head h1 {
        font-size: 16px !important;
        margin: 0 0 2px !important;
    }
    .d-head .d-num {
        font-size: 13px !important;
        margin-bottom: 4px !important;
    }
    .d-placedate {
        margin-bottom: 8px !important;
    }
    .d-preamble {
        margin-bottom: 8px !important;
    }
    .d-sec {
        margin-bottom: 8px !important;
    }
    .d-sec p {
        margin: 0 0 3px !important;
    }

    /* Разрывы страниц: разделы текучие (.d-sec не блокируем),
       но заголовки h3 не отрываются от своих пунктов */
    .d-sec h3 {
        font-size: 13px !important;
        margin: 0 0 3px !important;
        break-after: avoid;
        page-break-after: avoid;
    }

    /* Шапка, место/дата и НПД-сноска не рвутся */
    .d-head, .d-placedate, .d-self-hint {
        break-inside: avoid;
        page-break-inside: avoid;
    }
    .d-self-hint {
        margin-top: 8px !important;
        padding-top: 4px !important;
    }

    /* Железобетон: на печати подписи и реквизиты сторон ВСЕГДА в 2 колонки
       и не рвутся (мобильный @media <=768px НЕ должен сжимать в 1 колонку) */
    .d-req, .d-signs {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        break-inside: avoid;
        page-break-inside: avoid;
    }
    .d-req {
        margin-top: 10px !important;
        gap: 14px !important;
    }
    .d-signs {
        margin-top: 12px !important;
        gap: 14px !important;
    }
    .d-sign-line {
        margin-top: 14px !important;
    }

    /* Рамка печати М.П. */
    .d-mp {
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact;
    }
}

/* Мобильный экран: тап-таргеты кнопок тулбара стола >= 38px */
@media (max-width: 768px) {
    .doc-desk-toolbar .doc-btn--sm {
        min-height: 38px;
    }
}

