/* ================================================================
   KRASIVA — фирменные документы: договор, приложения, акт, счёт, бриф, ТЗ.
   Один стиль на всё. Корень — .kd; на сайте файл подключается только для печати,
   договоры собирает ~/krasiva_work/docs/make.py из той же разметки, что и раньше.

   Почти всё печатают на ч/б принтере, поэтому иерархия держится без цвета:
   толщина линии, моноширинные подписи, место на листе. Красный — только точка:
   в знаке «K.», после заголовка, у номеров разделов и там, где от человека нужно
   действие (подпись, отметка). На ч/б точка становится серой и остаётся точкой.
   Серого текста и тонированных плашек нет: заливку принтер печатает пятнами,
   а мелкий серый текст — пунктиром.
   ================================================================ */

@page{size:A4;margin:15mm 14mm 19mm 20mm}

.kd{
  --red:#FF4031;
  --col:31mm;      /* колонка заголовков разделов */
  --num:9mm;       /* номера пунктов */
  --gap:3mm;
  --main:calc(var(--col) + var(--num) + var(--gap));   /* отсюда начинается текст */
  --thick:1.3pt solid #000;
  --thin:.4pt solid #000;
  color:#000;background:#fff;
  font:400 9.2pt/1.43 Inter,'Helvetica Neue',Arial,sans-serif;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;
  text-wrap:pretty;orphans:3;widows:3;
  hyphens:auto;-webkit-hyphens:auto;hyphenate-limit-chars:9 4 4;
}
/* номера, суммы, реквизиты и подписи не переносятся */
.kd-cap,.kd-meta,.kd-req,.kd-table .r,.kd-sig,.kd-date,.kd-contacts,.kd-title,.kd-sub{hyphens:manual;-webkit-hyphens:manual}
/* у договоров .kd — сам body: без этого браузерный отступ 8px сдвигал бланк относительно брифа и ТЗ */
body.kd{margin:0}
.kd *,.kd *::before,.kd *::after{box-sizing:border-box}
/* сброс без веса селектора — иначе он перебивал бы классы ниже */
.kd :where(p,h1,h2,h3,dl,dt,dd,ul,ol,li){margin:0;padding:0}
.kd b,.kd strong{font-weight:600}
.kd a{color:inherit;text-decoration:none}
.kd-cap{font:500 6.2pt/1.3 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.09em;text-transform:uppercase}
.kd-mono{font-family:'JetBrains Mono',ui-monospace,monospace}

/* точка — как в знаке: ровный круг, а не глиф шрифта */
.kd-dot{display:inline-block;width:.22em;height:.22em;border-radius:50%;background:var(--red);margin-left:.05em;vertical-align:baseline}

/* ---------- бланк: первая страница ---------- */
.kd-head{display:flex;align-items:flex-end;gap:4mm;padding-bottom:3mm;border-bottom:var(--thick);margin-bottom:11mm}
.kd-mark{height:8.6mm;width:auto;display:block;flex:none}
.kd-org{display:flex;flex-direction:column;gap:1mm;padding-bottom:.2mm}
.kd-org b{font:600 10pt/1 'Inter Tight',Inter,sans-serif;letter-spacing:-.01em}
.kd-org .kd-dot{margin:0 .07em 0 .06em}   /* Krasiva●tech — точка из знака вместо обычной */
.kd-contacts{margin-left:auto;text-align:right;font:500 6.8pt/1.6 'JetBrains Mono',monospace;letter-spacing:.02em}
.kd-contacts span{display:block}

.kd-kicker{margin-bottom:3mm}
.kd-title{font:600 30pt/1 'Inter Tight',Inter,sans-serif;letter-spacing:-.028em}
.kd-sub{font:400 14pt/1.22 'Inter Tight',Inter,sans-serif;letter-spacing:-.012em;margin-top:2mm;max-width:125mm}

/* шапка-реквизиты документа: место, дата, ключевые условия — как графы бланка */
.kd-meta{display:grid;grid-template-columns:repeat(var(--n,4),auto);margin-top:8mm;border-top:var(--thick);border-bottom:var(--thin);break-inside:avoid}
.kd-meta>div{padding:1.7mm 2.6mm 2.1mm;border-left:var(--thin);min-width:0}
.kd-meta>div:first-child{border-left:0;padding-left:0}
.kd-meta .kd-cap{display:block;margin-bottom:1mm}
.kd-meta b{display:block;font:600 9.2pt/1.25 Inter,sans-serif;letter-spacing:-.005em}
.kd-note{margin-top:1.4mm;font-size:5.8pt}

/* ---------- разделы: заголовок в левой колонке, номера пунктов висят у текста ---------- */
.kd-lead{margin-top:9mm}
.kd-sec{position:relative;margin-top:4.4mm;padding-top:2.4mm;border-top:var(--thin)}
.kd-sec::before{content:'';position:absolute;left:0;top:-.85pt;width:var(--col);border-top:1.7pt solid #000}
.kd-sec::after{content:'';display:block;clear:both}
.kd-sec.bare{border-top:0;padding-top:0;margin-top:3mm}
.kd-sec.bare::before{content:none}
.kd-h{float:left;width:calc(var(--col) - 3mm);font:600 9.3pt/1.24 'Inter Tight',Inter,sans-serif;letter-spacing:-.004em;break-after:avoid}
.kd-h .n{display:block;font:500 7pt/1 'JetBrains Mono',monospace;letter-spacing:.04em;margin-bottom:1.7mm}
.kd-h .n .kd-dot{width:1.5mm;height:1.5mm;margin-left:.4mm}
/* раздел только с подписями: заголовок над ними, колонки сторон во всю ширину */
.kd-sec.wide>.kd-keep>.kd-h{float:none;width:auto;display:flex;align-items:baseline;gap:3mm;margin-bottom:3.4mm}
.kd-sec.wide>.kd-keep>.kd-h .n{margin:0}
.kd-h.lbl{font:500 6.2pt/1.3 'JetBrains Mono',monospace;letter-spacing:.09em;text-transform:uppercase;padding-top:.6mm}

.kd-cl,.kd-p{margin-left:var(--main);margin-bottom:1.3mm}
.kd-cl .n{display:inline-block;width:var(--num);margin-left:calc(-1 * (var(--num) + var(--gap)));margin-right:var(--gap);
  text-align:right;font:500 7.2pt/1 'JetBrains Mono',monospace;letter-spacing:-.01em;white-space:nowrap}
.kd-cl.long .n{font-size:6.6pt}
.kd-p.c{text-align:center}
.kd-p.r{text-align:right}
.kd-gap{height:3.5mm}
.kd-keep{break-inside:avoid}

/* ---------- приложение: ярлык на чёрном — единственная заливка, мелкая и чёткая ---------- */
.kd-part+.kd-part{break-before:page}
.kd-annex{display:flex;align-items:center;gap:3mm;padding-bottom:3mm;border-bottom:var(--thick);margin-bottom:9mm}
.kd-tab{background:#000;color:#fff;font:600 6.6pt/1 'JetBrains Mono',monospace;letter-spacing:.1em;text-transform:uppercase;padding:1.3mm 2.2mm 1.2mm}
.kd-annex .kd-mark{height:4.6mm;margin-left:auto}
.kd-part .kd-title.s{font-size:21pt;line-height:1.05;letter-spacing:-.022em;max-width:150mm}

/* ---------- таблица (акт, счёт, смета) ---------- */
.kd-table{width:100%;border-collapse:collapse;margin:3.5mm 0 4mm;font-size:8.8pt;line-height:1.38;break-inside:auto}
.kd-table th{font:500 6.2pt/1.3 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;text-align:left;vertical-align:bottom;
  border-top:var(--thick);border-bottom:var(--thin);padding:1.6mm 2mm 1.4mm}
.kd-table td{border-bottom:var(--thin);padding:1.9mm 2mm;vertical-align:top}
.kd-table th:first-child,.kd-table td:first-child{padding-left:0}
.kd-table th:last-child,.kd-table td:last-child{padding-right:0}
.kd-table .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.kd-table .i{font:500 7.2pt/1.6 'JetBrains Mono',monospace}
.kd-table tr.sum td{border-bottom:var(--thick);font-weight:600}
.kd-table tr{break-inside:avoid}

/* ---------- стороны: реквизиты и подписи ---------- */
.kd-sign{display:grid;grid-template-columns:1fr 1fr;column-gap:7mm;margin-left:var(--main);break-inside:avoid}
.kd-sec.wide .kd-sign,.kd-sign.wide{margin-left:0}
.kd-party{border-top:var(--thick);padding-top:1.8mm;min-width:0;display:flex;flex-direction:column}
.kd-party .kd-cap{margin-bottom:1.6mm}
.kd-party .nm{font:600 9.6pt/1.25 Inter,sans-serif;margin-bottom:2mm}
.kd-req{display:grid;grid-template-columns:15mm minmax(0,1fr);column-gap:2mm;font-size:7.9pt;line-height:1.42}
.kd-req dt{font:500 5.9pt/2.15 'JetBrains Mono',monospace;letter-spacing:.07em;text-transform:uppercase;border-top:.3pt dotted #000}
.kd-req dd{border-top:.3pt dotted #000;padding:.55mm 0 .65mm;overflow-wrap:anywhere}
.kd-req .w{grid-column:1/-1}
.kd-sig{display:flex;align-items:flex-end;gap:2mm;margin-top:auto;padding-top:9mm;font-size:8.6pt}
.kd-sig .ln{flex:1;border-bottom:.6pt solid #000;height:5mm;position:relative}
.kd-sig .ln .kd-dot{position:absolute;left:-.4mm;bottom:-1.05mm;width:2.1mm;height:2.1mm}
.kd-sig .who{white-space:nowrap}
.kd-sig-cap{display:flex;justify-content:space-between;margin-top:1mm}
.kd-date{margin-top:2.4mm;font-size:8.6pt}

/* ---------- анкета (бриф, ТЗ): вопрос — ответ ---------- */
.kd-qa{margin-left:var(--main);display:grid;grid-template-columns:36mm minmax(0,1fr);column-gap:4mm;border-top:.3pt dotted #000;break-inside:avoid}
.kd-qa.first{border-top:0}
.kd-qa dt{font:500 6.2pt/1.3 'JetBrains Mono',monospace;letter-spacing:.07em;text-transform:uppercase;padding:1.35mm 0 1.2mm;margin:0}
.kd-qa dd{padding:.85mm 0 1.15mm;margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.kd-qa.long{grid-template-columns:minmax(0,1fr)}
.kd-qa.long dt{padding-bottom:0}
.kd-opt{display:inline-block;margin:0 3.6mm .5mm 0}
.kd-scale{display:grid;grid-template-columns:minmax(0,1fr) 24mm minmax(0,1fr);align-items:center;column-gap:2.4mm;white-space:normal;margin:.3mm 0}
.kd-scale>span:first-child{text-align:right}
.kd-scale b{position:relative;height:2.6mm;border-left:.6pt solid #000;border-right:.6pt solid #000;
  background:linear-gradient(#000,#000) center/100% .5pt no-repeat,linear-gradient(#000,#000) center/.5pt 1.4mm no-repeat}
.kd-scale i{position:absolute;top:50%;width:2.4mm;height:2.4mm;border-radius:50%;background:var(--red);border:.6pt solid #000;transform:translate(-50%,-50%)}
.kd-swt{display:block;margin-top:.4mm}
.kd-sh{margin:3.4mm 0 1.4mm var(--main);font:600 6.4pt/1.3 'JetBrains Mono',monospace;letter-spacing:.09em;text-transform:uppercase;break-after:avoid}
.kd-sec>.kd-sh:first-of-type{margin-top:.3mm}
.kd-text{margin-left:var(--main);white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:1.5mm}
.kd-list{margin-left:var(--main);list-style:none}
.kd-list li{position:relative;padding-left:4.2mm;margin-bottom:1mm;overflow-wrap:anywhere;break-inside:avoid}
.kd-list li::before{content:'';position:absolute;left:.2mm;top:.68em;width:2.2mm;border-top:.6pt solid #000}

/* приоритет требований — сколько закрашено, столько и важно: ● обязательно, ◐ желательно, ○ если успеем.
   На ч/б красный становится серым, а доля заливки остаётся */
.kd-pr{display:inline-block;width:2.3mm;height:2.3mm;border-radius:50%;border:.6pt solid #000;vertical-align:-.05em;margin:0 1.6mm 0 0;flex:none}
.kd-pr.must{background:var(--red);border-color:#000}
.kd-pr.should{background:linear-gradient(90deg,var(--red) 50%,transparent 50%)}
.kd-legend{margin:.4mm 0 2mm var(--main);display:flex;gap:4.5mm}
.kd-legend span{display:inline-flex;align-items:center}

/* отметки (что выбрано): квадрат с галочкой печатается одинаково на любом принтере */
.kd-chk{display:inline-block;width:2.4mm;height:2.4mm;border:.6pt solid #000;vertical-align:-.1mm;margin-right:1.2mm;position:relative}
.kd-chk.on::after{content:'';position:absolute;left:.55mm;top:.05mm;width:.75mm;height:1.45mm;border:solid #000;border-width:0 .7pt .7pt 0;transform:rotate(45deg)}

/* цвета из брифа: образец + код — на ч/б остаётся код */
.kd-sw{display:inline-flex;align-items:center;gap:1.4mm;margin:0 3.4mm .8mm 0;font:500 7pt 'JetBrains Mono',monospace}
.kd-sw i{width:4.2mm;height:4.2mm;border:.4pt solid #000;display:inline-block}

/* согласование вверху ТЗ — как гриф «Утверждаю / Согласовано» */
.kd-grif{display:grid;grid-template-columns:1fr 1fr;column-gap:12mm;margin:0 0 9mm}
.kd-grif>div{font-size:8.4pt;line-height:1.5;display:flex;flex-direction:column}
.kd-grif .kd-cap{display:block;font-weight:600;margin-bottom:1.3mm}
.kd-grif .kd-sig{padding-top:7mm}

/* концевая подпись документа с сайта: где и когда составлен */
.kd-end{margin-top:7mm;padding-top:2mm;border-top:var(--thin);display:flex;justify-content:space-between;gap:6mm;break-inside:avoid}

/* графа бланка в тексте: «Исполнитель: …», «Основание: …» — подпись слева, как у разделов */
.kd-row{display:flow-root;margin-bottom:1.3mm}
.kd-row .kd-lab{float:left;width:calc(var(--col) - 3mm);padding-top:.75mm}
.kd-row .kd-p{margin-bottom:0}
.kd-mp{align-self:flex-end;padding-bottom:.4mm}
/* названия в кавычках («Заказчик», «Налог на профессиональный доход») не рвутся переносом */
.kd .nh{hyphens:manual;-webkit-hyphens:manual}

/* на сайте: при печати от страницы остаётся только документ */
body:has(> #kdPrint) > :not(#kdPrint){display:none!important}
#kdPrint{display:block!important;margin:0;padding:0}
html:has(#kdPrint),body:has(> #kdPrint){background:#fff!important}
