/* dashboard.css — Дашборд/аналитика, история, глазок у паролей, внутренние вкладки, кисть КТГ, программа: год и редактор клетки. Порядок подключения файлов задан в app/web.py (CSS_FILES) и важен для каскада. */
/* ---- дашборд ---- */
.db-sub{font-size:13px;color:var(--ink3)}
.db-top{margin-bottom:16px}
.db-blk{margin-bottom:16px}
.db-blk .bd{padding:8px 20px 0}
table.dbt{font-size:13px;white-space:nowrap}
table.dbt th{font-size:11.5px;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em;padding:8px 8px;text-align:center;border-bottom:1px solid var(--line)}
table.dbt th.sub{font-size:11px;padding:4px 6px 8px;color:var(--ink3);text-transform:none;letter-spacing:0}
table.dbt th:first-child,table.dbt td:first-child{text-align:left;font-weight:600;padding-left:20px}
table.dbt td{padding:7px 8px;border-bottom:1px solid var(--line2);font-variant-numeric:tabular-nums}
table.dbt td.num{text-align:center}
table.dbt td.p{color:var(--ink3)}
table.dbt td.f{font-weight:700;color:var(--ink)}
table.dbt .z{color:var(--line);font-weight:400}
table.dbt tr.tot td{font-weight:800;background:var(--surface2);border-top:2px solid var(--line)}
table.dbt tr.pct td{font-weight:700;font-size:12.5px;color:var(--ink2);background:var(--surface2)}
table.dbt .cur{background:var(--brand-soft)}
table.dbt .yr{background:var(--surface2);font-weight:700}
table.dbt td.ok{color:var(--ok)}table.dbt td.warn{color:var(--warn)}table.dbt td.bad{color:var(--bad)}
table.dbt.month td:last-child,table.dbt.month th:last-child{padding-right:20px}
table.dbt .sticky{position:sticky;left:0;background:var(--surface);z-index:1}
table.dbt tr.tot .sticky,table.dbt tr.pct .sticky{background:var(--surface2)}
.pbar{display:inline-block;width:44px;height:7px;border-radius:4px;background:var(--muted-soft);vertical-align:middle;margin-right:8px;overflow:hidden}
.pbar i{display:block;height:100%;background:var(--brand)}.pbar i.ok{background:var(--ok)}.pbar i.warn{background:var(--warn)}.pbar i.bad{background:var(--bad)}
.ctl{margin:10px 20px 16px;font-size:13px;color:var(--ink2)}.ctl.bad{color:var(--bad)}.ctl.ok{color:var(--ok)}
.db-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mini{border:1px solid var(--line2);border-radius:12px;padding:12px 14px;cursor:pointer;transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.mini:hover{box-shadow:0 6px 20px rgba(11,18,32,.10);transform:translateY(-1px);border-color:var(--brand)}
.mini h4{margin:0 0 2px;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.mini h4 .ic{width:26px;height:26px;border-radius:7px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:13px;flex:none}
.mini h4 .arr{margin-left:auto;color:var(--ink3);font-weight:400}
.mini .own{font-size:11.5px;color:var(--ink3);margin-bottom:6px}
.mini .rows div{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--ink2);padding:3px 0;border-bottom:1px dashed var(--line2)}
.mini .rows div:last-child{border-bottom:0}
.mini .rows b{font-variant-numeric:tabular-nums;color:var(--ink)}
.mini .rows b.ok{color:var(--ok)}.mini .rows b.warn{color:var(--warn)}.mini .rows b.bad{color:var(--bad)}
.chart svg{width:100%;height:200px;display:block}
.chart .gl{stroke:var(--line2);stroke-width:1}
.chart .ay{font-size:11px;fill:var(--ink3);text-anchor:end}
.chart .ax{font-size:12px;fill:var(--ink2);text-anchor:middle}.chart .ax.cur{fill:var(--brand);font-weight:700}
.chart .bv{font-size:11px;fill:var(--ink2);text-anchor:middle;font-weight:600}
.chart .curbg{fill:var(--brand-soft)}
.chart .bar.p{fill:#93A8D6}.chart .bar.f{fill:var(--brand)}.chart .bar.npv{fill:var(--bad)}.chart .bar.duty{fill:var(--warn)}
.clg{display:flex;gap:16px;font-size:12.5px;color:var(--ink2);padding:6px 0 10px}
.clg i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.clg i.p{background:#93A8D6}.clg i.f{background:var(--brand)}.clg i.npv{background:var(--bad)}.clg i.duty{background:var(--warn)}
@media (max-width:1100px){.db-mini{grid-template-columns:repeat(2,1fr)}.db-top{grid-template-columns:1fr}}
@media (max-width:640px){.db-mini{grid-template-columns:1fr}}

/* ---- история изменений ---- */
table.hist td{vertical-align:top}
table.hist td.wrap{white-space:normal;max-width:620px}
.hch{display:inline-block;background:var(--surface2);border-radius:7px;padding:3px 8px;margin:2px 4px 2px 0;font-size:12.5px;color:var(--ink2)}
.hch b{color:var(--ink3);font-weight:600}
.hch .arr{color:var(--brand);font-weight:700;margin:0 2px}
.hl.go{cursor:pointer;color:var(--brand);text-decoration:underline dotted;text-underline-offset:3px}
.lbl{font-size:13px;color:var(--ink3);display:inline-flex;align-items:center;gap:6px}
.dact{display:flex;gap:8px;flex-wrap:wrap}

/* ---- глазок у паролей ---- */
.pwrap{position:relative;display:block}
.pwrap input{width:100%;padding-right:40px;box-sizing:border-box}
.eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;cursor:pointer;color:var(--ink3);font-size:16px;line-height:1;padding:4px 6px;border-radius:6px}
.eye:hover{color:var(--ink);background:var(--surface2)}
.eye.on{color:var(--brand)}

/* ---- вкладки внутри экрана и полоска КТГ в карточке ---- */
.seg.tabs{margin-bottom:16px}
.kbar{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--muted-soft);margin:8px 0 6px}
.kbar i{display:block;height:100%}.kbar i.ok{background:var(--ok)}.kbar i.warn{background:var(--warn)}.kbar i.bad{background:var(--bad)}.kbar i.brand{background:var(--brand)}
.dnote .ok{color:var(--ok)}.dnote .warn{color:var(--warn)}.dnote .bad{color:var(--bad)}

/* ---- КТГ: кисть и редактирование ---- */
.brushbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:-6px 0 14px}
.seg.brush .lb{padding:0 10px;font-size:13px;color:var(--ink3);align-self:center}
.seg.brush button.on.L{background:var(--ok)}.seg.brush button.on.TR{background:var(--warn)}.seg.brush button.on.R{background:var(--bad)}.seg.brush button.on.TO{background:var(--brand)}.seg.brush button.on.none{background:var(--ink3)}
.brushbar .hint{font-size:12.5px;color:var(--ink2);line-height:1.45;flex:1;min-width:280px}
table.ktg.edit td.kc.ed{cursor:crosshair}
table.ktg.edit td.kc.ed:hover{outline:2px solid var(--ink);outline-offset:-2px;z-index:1;position:relative}
table.ktg th.dn.ed{cursor:pointer}table.ktg th.dn.ed:hover{background:var(--brand-soft);color:var(--brand)}
table.ktg{user-select:none}
/* ---- программа: год ---- */

/* ---- программа: редактор клетки, перетаскивание, заявки ---- */
.pop{position:absolute;z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(11,18,32,.18);padding:10px 12px;width:360px;animation:dlg-in var(--dur) var(--ease)}
.pop .ph{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:13.5px}
.pop .ph .x{margin-left:auto;border:0;background:none;font-size:18px;cursor:pointer;color:var(--ink3)}
.pop .pr{display:flex;gap:6px;align-items:center;margin-bottom:8px}
.pop .pr input{flex:1;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font:inherit;font-size:14px;min-width:0}
.pop .pr input#pop-code{font-family:"JetBrains Mono",monospace;font-weight:600}
.pop .pr input:focus{outline:2px solid var(--brand);border-color:transparent}
.pop .ps{font-size:13px;color:var(--ink2);margin-bottom:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pop .ps .ok{color:var(--ok);font-weight:600}.pop .ps .bad{color:var(--bad)}.pop .ps .brand{color:var(--brand);font-weight:600}
.pop .pk{font-size:11.5px;color:var(--ink3)}
.btn.sm{padding:5px 10px;font-size:12.5px}


/* пропуска техники по категориям: строка-группа сворачивается */
table.docs-tbl tr.grp td{background:var(--brand-band);cursor:pointer;user-select:none;padding:9px 12px;border-top:1px solid var(--line2)}
table.docs-tbl tr.grp .arr{display:inline-block;width:14px;color:var(--ink3);font-weight:700}
table.docs-tbl tr.grp b{color:var(--brand);margin-right:8px}
table.docs-tbl tr.grp .pill{margin-right:6px}
