:root{
  --bg:#f4f6f8; --card:#fff; --ink:#1c2430; --muted:#6b7684; --line:#e3e8ee;
  --accent:#1f3864; --ok:#2e7d32; --warn:#b26a00; --stop:#c0392b; --wip:#1565c0;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.5 -apple-system,"Segoe UI",Roboto,Arial,sans-serif;-webkit-text-size-adjust:100%}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px}
.top{background:var(--accent);color:#fff}
.top-in{display:flex;align-items:center;justify-content:space-between;min-height:52px;gap:12px}
.brand{color:#fff;text-decoration:none;font-weight:700;letter-spacing:.3px}
.logout{display:flex;align-items:center;gap:10px;margin:0}
.who{opacity:.85;font-size:13px}
.btn-link{background:none;border:0;color:#fff;text-decoration:underline;cursor:pointer;font-size:13px;padding:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin:16px 0}
h1{font-size:21px;margin:0 0 12px}
h2{font-size:17px;margin:0 0 12px}
h3{font-size:14px;margin:0 0 8px}
p{margin:0 0 10px}
.muted{color:var(--muted)}
.small{font-size:13px}
.notice{background:#e8f4ea;border-left:3px solid var(--ok);padding:10px 12px;border-radius:4px}
.err{background:#fdecea;border-left:3px solid var(--stop);padding:10px 12px;border-radius:4px}
.tag{display:inline-block;background:var(--accent);color:#fff;font-size:11px;
  text-transform:uppercase;letter-spacing:.5px;padding:2px 7px;border-radius:3px;margin-right:6px}
.tag-ghost{background:#eef1f6;color:var(--accent)}
.stage-now strong{font-size:17px}
.stages{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.stages li{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}
.st-code{font-weight:700;color:var(--muted);min-width:28px}
.st-title{flex:1}
.st-state{font-size:12px;color:var(--muted)}
.stages .st-done .st-title{color:var(--muted)}
.stages .st-done .st-state{color:var(--ok)}
.stages .st-active{background:#f7fafc}
.stages .st-active .st-title{font-weight:600}
.stages .st-active .st-state{color:var(--wip)}
.blockers{border-left:3px solid var(--stop)}
.blocker{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}
.blocker:first-of-type{border-top:0;padding-top:0;margin-top:0}
.blocker h3{font-size:15px}
.need{background:#fff8e6;padding:8px 10px;border-radius:4px}
.meta{font-size:12px;color:var(--muted);margin:0}
.cols{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.col{background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:10px}
.col h3{display:flex;justify-content:space-between;align-items:center;font-size:13px;
  text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.count{background:#eef1f6;color:var(--accent);border-radius:10px;padding:1px 7px;font-size:12px}
.col ul{list-style:none;margin:0;padding:0}
.col li{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px;margin-bottom:8px;font-size:13px}
.col-in_progress{border-color:#c5d9f2}
.col-needs_data{border-color:#f0d9a8}
.col-done h3{color:var(--ok)}
.t-title{display:block}
.t-stage{display:inline-block;font-size:11px;color:var(--muted);margin-top:4px}
.t-note{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.t-verified{display:block;color:var(--ok);font-size:12px;margin-top:4px}
.mods{list-style:none;margin:0;padding:0}
.mods li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.badge{font-size:11px;padding:2px 7px;border-radius:3px;background:#eef1f6;color:var(--muted)}
.badge-testable{background:#e8f4ea;color:var(--ok)}
.badge-live{background:#e7f0fb;color:var(--wip)}
.m-note{font-size:12px;color:var(--muted);flex:1 1 100%}
.log table{width:100%;border-collapse:collapse}
.log td{padding:7px 0;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}
.log-date{width:92px;color:var(--muted);font-size:13px;white-space:nowrap}
.log-detail{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.auth{max-width:420px;margin:28px auto}
.auth label{display:block;margin:0 0 12px;font-size:13px;color:var(--muted)}
.auth input{display:block;width:100%;margin-top:4px;padding:10px;font-size:16px;
  border:1px solid #c7ced8;border-radius:6px;background:#fff;color:var(--ink)}
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:6px;
  padding:11px 18px;font-size:15px;cursor:pointer}
.steps{padding-left:20px;font-size:14px}
.steps li{margin-bottom:10px}
.secret{display:block;background:#f4f6f8;border:1px dashed #c7ced8;border-radius:6px;
  padding:10px;margin:8px 0 4px;font:16px/1.4 "SFMono-Regular",Consolas,monospace;word-break:break-all}
.alt{margin-top:12px}
.alt .btn-link{color:var(--muted)}
.foot{color:var(--muted);font-size:12px;padding:8px 16px 28px}
@media(max-width:860px){.cols{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.cols{grid-template-columns:1fr}.card{padding:14px}}

/* ── Реєстр ─────────────────────────────────────────── */
.nav{display:flex;gap:14px;margin-left:auto;margin-right:16px}
.nav a{color:#fff;opacity:.85;text-decoration:none;font-size:14px}
.nav a:hover{opacity:1;text-decoration:underline}
.grid{width:100%;border-collapse:collapse;font-size:13px}
.grid th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;
  color:var(--muted);border-bottom:2px solid var(--line);padding:6px 8px;white-space:nowrap}
.grid td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.grid tr:hover td{background:#fafbfc}
.grid .right{text-align:right}
.grid .nowrap{white-space:nowrap}
.row-active td{background:#fcfdff}
.row-off td{opacity:.6}
.row-overdue td{background:#fdf3f2}
.hint{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.pill{display:inline-block;font-size:11px;padding:2px 7px;border-radius:3px;background:#eef1f6;color:var(--muted);white-space:nowrap}
.pill-ok{background:#e8f4ea;color:var(--ok)}
.pill-warn{background:#fdf2e0;color:var(--warn)}
.pill-bad{background:#fdecea;color:var(--stop);margin-left:6px}
.pill-none{background:#eef1f6;color:var(--muted)}
.pill-tax{background:#e7f0fb;color:var(--wip);margin-left:6px}
.pill-st-paid{background:#e8f4ea;color:var(--ok)}
.pill-st-partially_paid{background:#fdf2e0;color:var(--warn)}
.pill-st-ready_to_pay{background:#e7f0fb;color:var(--wip)}
.pill-st-disputed{background:#fdecea;color:var(--stop)}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.filters select{padding:7px;border:1px solid #c7ced8;border-radius:6px;background:#fff;font-size:13px}
.btn-sm{display:inline-block;padding:5px 10px;font-size:12px;border:1px solid #c7ced8;border-radius:5px;
  background:#fff;color:var(--ink);text-decoration:none;cursor:pointer}
.btn-sm:hover{background:#f4f6f8}
.btn-sm.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.inline{display:inline-block;margin:0}
.form label{display:block;margin:0 0 12px;font-size:13px;color:var(--muted)}
.form input[type=text],.form input[type=date],.form input[type=number],.form select{
  display:block;width:100%;margin-top:4px;padding:9px;font-size:14px;
  border:1px solid #c7ced8;border-radius:6px;background:#fff;color:var(--ink)}
.form .f2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form .f3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.form .chk{display:flex;gap:8px;align-items:flex-start;color:var(--ink);font-size:14px}
.form .chk input{margin-top:3px}
.form .chk.mt{margin-top:22px}
.fs{border:1px solid var(--line);border-radius:8px;padding:12px;margin:0 0 14px}
.fs legend{font-size:13px;color:var(--muted);padding:0 6px}
.req{color:var(--warn);font-size:11px;margin-left:4px}
.stats{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}
.stat{flex:1;min-width:110px;background:#fafbfc;border:1px solid var(--line);border-radius:8px;
  padding:10px;font-size:12px;color:var(--muted);text-align:center}
.stat .n{display:block;font-size:22px;font-weight:700;color:var(--ink)}
.stat-bad{border-color:#f3c9c4}.stat-bad .n{color:var(--stop)}
.stat-warn{border-color:#f0d9a8}.stat-warn .n{color:var(--warn)}
.kv{width:100%;border-collapse:collapse;font-size:14px}
.kv td{padding:7px 0;border-bottom:1px solid var(--line)}
.kv td:first-child{color:var(--muted);width:200px}
.inline-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.inline-form label{margin:0}
@media(max-width:620px){.form .f2,.form .f3{grid-template-columns:1fr}.nav{gap:10px;font-size:13px}}

.preview{background:#f4f6f8;border:1px solid var(--line);border-radius:6px;padding:12px;
  font:13px/1.6 "SFMono-Regular",Consolas,monospace;white-space:pre-wrap;margin:0}
.code-in{width:70px;padding:5px;border:1px solid #c7ced8;border-radius:5px;font-size:13px}
.mt{margin-top:18px}
.warn-box{background:#fff8e6;border-left:3px solid var(--warn);padding:10px 12px;border-radius:4px;margin:0 0 14px}
.dates{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0}
.dates td,.dates th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.dates .wknd{color:var(--stop)}

.recon{background:#f4f6f8;border-left:3px solid var(--accent);padding:10px 12px;border-radius:4px;font-size:13px}
.alias-name{font-weight:600;font-size:14px}
.inline-form select{padding:8px;border:1px solid #c7ced8;border-radius:6px;font-size:14px;margin-top:4px}
