:root { --c: #2b4a6f; --bg: #f6f8fa; --line: #d5dce3; --err: #b3261e; --ok: #2e7d32; --warn: #c26a00; }
* { box-sizing: border-box; }
body { margin: 0; font: 15px/1.5 "Segoe UI", Arial, sans-serif; color: #1a1a1a; background: var(--bg); }
header.top { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; padding: 10px 24px; background: var(--c); }
header.top a, header.top button.link { color: #fff; text-decoration: none; }
.brand { font-weight: 700; font-size: 17px; }
nav { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; }
main { max-width: 1100px; margin: 24px auto; padding: 0 16px; }
footer { max-width: 1100px; margin: 32px auto; padding: 0 16px; color: #666; font-size: 13px; }
h1 { font-size: 24px; color: var(--c); margin: 0 0 12px; }
h2 { font-size: 18px; color: var(--c); }
a { color: var(--c); }
section.narrow { max-width: 460px; }
.card { background: #fff; border: 1px solid var(--line); border-radius: 6px; padding: 8px 18px 14px; margin: 16px 0; }
.card.operator { border-color: var(--warn); }
form label { display: block; margin: 10px 0; }
form label input:not([type=checkbox]), form label textarea { display: block; width: 100%; margin-top: 4px; padding: 7px 9px;
  border: 1px solid var(--line); border-radius: 4px; font: inherit; background: #fff; }
form label.check { display: flex; gap: 8px; align-items: flex-start; }
form.inline { display: inline; }
form.inline label { display: inline; }
form.inline label input { display: inline; width: auto; }
button, .button { display: inline-block; padding: 8px 16px; border: 0; border-radius: 4px; background: var(--c); color: #fff;
  font: inherit; cursor: pointer; text-decoration: none; }
button.secondary { background: #fff; color: var(--err); border: 1px solid var(--err); }
button.link { background: none; padding: 0; }
button.small { padding: 3px 8px; font-size: 13px; }
.error { color: var(--err); background: #fdecea; border-radius: 4px; padding: 6px 10px; }
.notice { background: #fff4e5; border-left: 4px solid var(--warn); padding: 8px 12px; }
.muted { color: #666; }
table.list { width: 100%; border-collapse: collapse; background: #fff; }
table.list th, table.list td { border-bottom: 1px solid var(--line); padding: 6px 8px; text-align: left; vertical-align: top; }
table.list th { background: #e8eef5; }
table.small, ul.small { font-size: 13px; }
.st { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 13px; background: #e8eef5; }
.st-done { background: #e3f2e5; color: var(--ok); }
.st-error, .st-cancelled { background: #fdecea; color: var(--err); }
.st-needs_answer, .st-awaiting_normatives, .st-budget { background: #fff4e5; color: var(--warn); }
.questions { background: #fafbfc; border: 1px solid var(--line); padding: 4px 14px; border-radius: 4px; }
/* отчёт — классы make_report_pdf.py */
article.report { background: #fff; border: 1px solid var(--line); padding: 16px 28px; font-size: 14px; }
article.report h1 { text-align: center; }
article.report table { border-collapse: collapse; width: 100%; margin: 6px 0; font-size: 13px; }
article.report th, article.report td { border: 1px solid #9aa5b1; padding: 3px 5px; vertical-align: top; text-align: left; }
article.report th { background: #e8eef5; }
strong.lbl { color: #12304f; }
.cat { display: inline-block; font-weight: 700; font-size: 12px; padding: 0 5px; border-radius: 3px; color: #fff; }
.cb { background: #b3261e; } .cs { background: #c26a00; } .cn { background: #5f6b76; } .cr { background: #2e7d32; }
code.p { font-family: Consolas, monospace; background: #f1f3f5; padding: 0 2px; }
