/* ═══════════════════════════════════════════════════════════════════
   Вкладка «Договор» (тест) — таблица позиций, итоги и печатные документы.
   Использует токены из /shov.css (var(--text), var(--border) и т.д.).
   ═══════════════════════════════════════════════════════════════════ */

/* Мини-вкладки «Создание» / «Мои договора» — 21.08.2026, вместо двух
   карточек подряд одну над другой. */
.dg-subtabs { display:flex; gap:8px; margin-bottom:16px; }
.dg-subtab {
    font-family:inherit; font-size:14px; font-weight:600; cursor:pointer;
    padding:10px 18px; border-radius:10px; border:1px solid var(--border);
    background:var(--surface-2); color:var(--text-2);
}
.dg-subtab:hover { background:var(--field); }
.dg-subtab.active { background:var(--accent); color:#fff; border-color:var(--accent); }

/* Редактирование сохранённого договора («Открыть» в «Моих договорах») —
   окно поверх страницы с затемнением, а не переключение вкладок.
   #dgPanelCreate — та же форма, что и у обычного создания, только с классом
   .dg-modal-open превращается в плавающую панель; двух копий формы нет.
   21.08.2026. */
/* Цвета/тени — те же, что у .modal-overlay/.modal-content в shov.css, чтобы
   выглядело как остальные модалки сайта; сам .modal-header/.modal-close
   переиспользуются как есть (см. index.html), только делаем бар «липким». */
.dg-modal-backdrop { position:fixed; inset:0; background:rgba(20,22,28,.55); z-index:1000; }
#dgPanelCreate.dg-modal-open {
    position:fixed; top:3vh; left:50%; transform:translateX(-50%);
    width:min(1100px, 94vw); max-height:94vh; overflow-y:auto;
    background:var(--holst); z-index:1001; border-radius:16px;
    box-shadow:0 30px 70px -30px rgba(0,0,0,.6); padding-bottom:20px;
}
#dgPanelCreate.dg-modal-open #dgCreateModalBar {
    position:sticky; top:0; z-index:2; border-radius:16px 16px 0 0; margin-bottom:16px;
}

/* Файлы договора (сканы, чек) — список в модалке «📎 Файлы договора». 21.08.2026. */
.dg-file-row {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:8px 10px; border:1px solid var(--border); border-radius:8px; margin-bottom:6px;
}
.dg-file-row a { color:var(--accent); text-decoration:none; word-break:break-all; }
.dg-file-row a:hover { text-decoration:underline; }
.dg-file-del { background:none; border:none; color:var(--crit); cursor:pointer; font-size:15px; padding:2px 6px; flex-shrink:0; }

.dg-wrap table.dg-items { width:100%; border-collapse:collapse; font-size:12.5px; }
.dg-wrap table.dg-items th {
    background:var(--surface-2); color:var(--muted); font-weight:600; text-align:left;
    padding:6px; border:1px solid var(--border); font-size:11px;
}
.dg-wrap table.dg-items td { border:1px solid var(--border); padding:3px; }
.dg-wrap table.dg-items input {
    width:100%; border:none; padding:6px 5px; font-size:12.5px; font-family:inherit;
    background:transparent; color:var(--text);
}
.dg-wrap table.dg-items input:focus { outline:2px solid var(--accent); background:var(--field); }
.dg-wrap table.dg-items td.dg-rowtotal { font-weight:600; text-align:right; padding-right:8px; white-space:nowrap; }
.dg-wrap table.dg-items .dg-rm-btn { background:none; border:none; color:var(--crit); cursor:pointer; font-size:16px; line-height:1; padding:4px 8px; }
/* Подсказки каталога у полей «Модель»/«Материал» — .suggestions/.suggestion-item
   берутся из shov.css (та же вёрстка, что у поиска ткани и модалки «добавить
   позицию» в script.js), но там блок растягивается left:0;right:0 на ширину
   родителя — а колонки в этой таблице узкие, подсказку было не видно.
   .dg-catalog-suggest вместо этого — крупный плавающий блок с фиксированной
   шириной, координаты (left/top) выставляет JS через getBoundingClientRect,
   так что он не зависит от ширины колонки. 21.08.2026. */
.dg-wrap table.dg-items .dg-catalog-suggest {
    position:fixed; left:auto; right:auto; top:auto; margin-top:0;
    width:420px; max-width:92vw; font-size:14px;
}
/* Цвет дерева/опор — выпадающий список (OPORY_COLORS из script.js) + поле
   ручного ввода под «Другое», как в форме обычного заказа. 21.08.2026. */
.dg-wrap table.dg-items select.dg-color-select {
    width:100%; border:none; padding:6px 5px; font-size:12.5px; font-family:inherit;
    background:transparent; color:var(--text);
}
.dg-wrap table.dg-items select.dg-color-select:focus { outline:2px solid var(--accent); background:var(--field); }
.dg-wrap table.dg-items input.dg-color-custom { margin-top:2px; }

/* «Мои договора» — список сохранённых договоров менеджера. 21.08.2026. */
.dg-my-table { width:100%; border-collapse:collapse; font-size:13px; }
.dg-my-table th {
    background:var(--surface-2); color:var(--muted); font-weight:600; text-align:left;
    padding:6px 8px; border:1px solid var(--border); font-size:11px;
}
.dg-my-table td { border:1px solid var(--border); padding:6px 8px; vertical-align:middle; }
.dg-my-table td.num { text-align:right; font-weight:600; white-space:nowrap; }
.dg-my-table select.dg-my-status {
    padding:5px 8px; font-size:12.5px; border-radius:6px; border:1px solid var(--border);
    background:var(--surface); color:var(--text); font-family:inherit;
}
.dg-my-table tr.dg-my-current td { background:var(--accent-soft); }

.dg-totals { display:flex; gap:16px; flex-wrap:wrap; margin-bottom:12px; font-size:13px; }
.dg-totals .dg-box { background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:8px 14px; color:var(--text-2); }
.dg-totals .dg-box b { font-size:15px; color:var(--text); }
.dg-paycol { display:block; font-size:11px; color:var(--muted); margin-top:4px; }

.dg-doc-tabs { display:flex; gap:8px; align-items:center; margin-bottom:14px; }
.dg-doc-tab { background:var(--surface-2); border:none; padding:8px 14px; border-radius:8px 8px 0 0; cursor:pointer; font-size:13px; font-weight:600; color:var(--text-2); }
.dg-doc-tab.active { background:var(--accent); color:#fff; }
/* Печать/пакет/экспорт используют стандартные .btn-* из shov.css —
   тут только выравнивание группы в правый край панели вкладок. */
#dgPrintBtn { margin-left:auto; }
.dg-xlsx-btn:disabled { opacity:.6; cursor:default; }

.dg-doc-preview { background:var(--surface-2); padding:20px; border-radius:0 10px 10px 10px; }
.dg-doc-preview .doc, #dgPrintArea .doc {
    background:#fff; color:#111; max-width:210mm; margin:0 auto; padding:20mm;
    font-family:"Times New Roman", Georgia, serif; font-size:13px; line-height:1.4;
    box-shadow:0 2px 10px rgba(0,0,0,.15);
}
.dg-doc-preview .doc h3, #dgPrintArea .doc h3 { font-size:14px; margin:16px 0 6px; }
.dg-doc-preview .doc p, #dgPrintArea .doc p { margin:3px 0; text-align:justify; }
.dg-doc-preview .doc table, #dgPrintArea .doc table { border-collapse:collapse; width:100%; margin:5px 0; }
.dg-doc-preview .doc table.items th, .dg-doc-preview .doc table.items td,
#dgPrintArea .doc table.items th, #dgPrintArea .doc table.items td { border:1px solid #999; padding:3px 6px; font-size:12px; vertical-align:top; }
.dg-doc-preview .doc table.items th, #dgPrintArea .doc table.items th { background:#f0f0f0; text-align:center; }
.dg-doc-preview .doc td.num, #dgPrintArea .doc td.num { text-align:right; white-space:nowrap; }
.dg-doc-preview .doc table.totals-table td, #dgPrintArea .doc table.totals-table td { padding:2px 6px; }
.dg-doc-preview .doc table.totals-table td.num, #dgPrintArea .doc table.totals-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.dg-doc-preview .doc table.payment-table td, #dgPrintArea .doc table.payment-table td { padding:3px 6px; border:1px solid #ccc; font-size:12px; }
.dg-doc-preview .doc table.signblock td, #dgPrintArea .doc table.signblock td { vertical-align:top; padding:6px 6px 3px; width:50%; }
.dg-doc-preview .doc table.signblock .mp, #dgPrintArea .doc table.signblock .mp { text-align:right; padding-top:14px; color:#666; }
.dg-doc-preview .doc .small, #dgPrintArea .doc .small { font-size:12px; color:#444; }
.dg-doc-preview .doc .page-break, #dgPrintArea .doc .page-break { page-break-before:always; margin:20px 0; }
/* Пунктирная линия — только подсказка для интерактивного просмотра на
   экране (где идёт разрыв), в реальный документ (печать/PDF/офф-скрин
   рендер для PDF) попадать не должна — на бумаге ей взяться неоткуда,
   выглядит как случайный дефект («что за линия»). */
.dg-doc-preview .doc .page-break { border-top:1px dashed #ccc; }
.dg-export-render .doc .page-break { border-top:none; }
.dg-doc-preview .spec-header, #dgPrintArea .spec-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:6px; }
.dg-doc-preview .spec-header .logo, #dgPrintArea .spec-header .logo { height:32px; width:auto; }
.dg-doc-preview .spec-header .spec-title, #dgPrintArea .spec-header .spec-title { text-align:center; font-weight:700; font-size:16px; }
.dg-doc-preview .spec-header .spec-title .small, #dgPrintArea .spec-header .spec-title .small { font-weight:400; font-size:12px; }
.dg-doc-preview .spec-header .appendix, #dgPrintArea .spec-header .appendix { font-size:12px; color:#555; }
.dg-doc-preview .seller-name, #dgPrintArea .seller-name { font-weight:700; margin-bottom:8px; }
.dg-doc-preview table.buyer-info td, #dgPrintArea table.buyer-info td { padding:2px 4px; font-size:12px; }
.dg-doc-preview table.buyer-info td:first-child, #dgPrintArea table.buyer-info td:first-child { color:#555; width:80px; }
.dg-doc-preview .doc-title-block, #dgPrintArea .doc-title-block { text-align:center; margin-bottom:6px; }
.dg-doc-preview .doc-title, #dgPrintArea .doc-title { font-weight:700; font-size:16px; }
.dg-doc-preview .doc-subtitle, #dgPrintArea .doc-subtitle { font-size:13px; }
.dg-doc-preview .doc-place-date, #dgPrintArea .doc-place-date { display:flex; justify-content:space-between; margin-bottom:10px; }
.dg-doc-preview .invoice-title, #dgPrintArea .invoice-title { text-align:center; font-weight:700; font-size:16px; margin:10px 0; }
.dg-doc-preview .req-block, #dgPrintArea .req-block { font-size:12px; margin-bottom:6px; }
.dg-doc-preview .req-table td, #dgPrintArea .req-table td { padding:3px 6px; font-size:12px; border:1px solid #999; }
.dg-doc-preview .req-table td:first-child, #dgPrintArea .req-table td:first-child { background:#f0f0f0; color:#333; width:150px; }
/* padding-bottom (НЕ margin!) резервирует место в обычном потоке документа
   под печать — она наложена через position:absolute и сама по себе высоту
   .doc не увеличивает; если это последняя строка документа, офф-скрин
   рендер для PDF обрезает всё, что торчит ниже собственной высоты .doc
   («печать обрезана» — печать директора на последней строке счёта).
   Именно padding, а не margin: margin последнего дочернего элемента
   схлопывается с нижним краем родителя (тем более что для офф-скрин
   рендера .doc сам лишён своего нижнего паддинга, см. appendDocToPdf) —
   первая попытка через margin-bottom поэтому не сработала. */
.dg-doc-preview .sign, #dgPrintArea .sign { margin-top:14px; padding-bottom:14mm; }

/* Скан подписи и печати продавца — уже готовы, накладываются поверх
   линии подписи/«м.п.», без ручного подписания продавцом. */
.seal-cell { position:relative; display:inline-block; }
.seal-cell .seal-imgs { position:absolute; left:0; top:0; width:0; height:0; overflow:visible; }
.seal-cell .stamp-img { position:absolute; left:22mm; top:-6mm; width:20mm; height:auto; opacity:.88; z-index:1; }
.seal-cell .sig-img { position:absolute; left:32mm; top:-7mm; width:18mm; height:auto; z-index:2; }

#dgPrintArea { display:none; }
#dgPrintArea .page-break { page-break-before:always; }
/* Реальные размеры страниц A4 — используются и офлайн-рендером для
   PDF (html2canvas снимает эту обёртку как один лист), и печатью ниже. */
.dg-page-portrait { width:210mm; }
.dg-page-landscape { width:297mm; }
.dg-page-landscape .doc { max-width:100%; }
@media print {
    /* Договор и Счёт печатаются книжно (сплошной текст/узкие таблицы),
       Спецификация — альбомно (широкая таблица позиций). Ориентация
       задаётся именованной страницей через class="dg-page-landscape"/
       "dg-page-portrait" на обёртке. margin:0 у @page — иначе браузер
       рисует в поле свой служебный заголовок/футер (дата, название
       вкладки); отступ страницы вместо этого делаем padding'ом самого
       документа (см. #dgPrintArea .doc). */
    @page { margin: 0; }
    @page dg-landscape { size: landscape; margin: 0; }
    @page dg-portrait { size: portrait; margin: 0; }
    .dg-page-landscape { page: dg-landscape; }
    .dg-page-portrait { page: dg-portrait; }
    body.dg-printing > *:not(#dgPrintArea) { visibility:hidden; }
    #dgPrintArea, #dgPrintArea * { visibility:visible; }
    #dgPrintArea { display:block !important; position:absolute; left:0; top:0; width:100%; }
    #dgPrintArea .doc { box-shadow:none; max-width:100%; padding:20mm; }
}
