/* НИИСТРОМ — отчёт коммерческого отдела. Шрифты локальные/системные, без внешних запросов. */
:root{
  --orange:#FF552B; --orange-soft:#FFEDE7;
  --ink:#17150F; --muted:#73706A; --faint:#A6A29A;
  --paper:#F4F2EC; --surface:#FFFFFF; --line:#E5E1D8; --line-strong:#D2CDC1;
  --good:#1F8A4C; --f-oper:#FF552B; --f-hunt:#1F6F78; --f-tend:#3D5A80;
  --shadow:0 1px 0 rgba(23,21,15,.04), 0 8px 24px -16px rgba(23,21,15,.18);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:'Montserrat','Segoe UI',system-ui,sans-serif;background:var(--paper);color:var(--ink);
  -webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}
.num,input.cell,.mono{font-family:'JetBrains Mono','SFMono-Regular',ui-monospace,monospace;font-variant-numeric:tabular-nums}
.hidden{display:none !important}

/* логотип */
.logo{display:inline-flex;align-items:center;font-weight:800;letter-spacing:.06em;line-height:1}
.logo .sq{display:inline-flex;width:.78em;height:.78em;border:2.5px solid var(--orange);background:#fff;margin:0 .02em;transform:translateY(.04em)}

/* ── логин ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:30px 28px}
.login-card .logo{font-size:27px;margin-bottom:4px}
.login-card .sub{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:24px}
.field{margin-bottom:14px}
.field label{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:6px}
.field input{width:100%;font-family:inherit;font-size:15px;padding:11px 13px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink);outline:none}
.field input:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}
.login-btn{width:100%;margin-top:6px;appearance:none;border:0;background:var(--orange);color:#fff;font-family:inherit;font-weight:700;font-size:15px;padding:12px;border-radius:10px;cursor:pointer}
.login-btn:disabled{opacity:.6;cursor:default}
.login-err{margin-top:12px;font-size:12.5px;color:#C0392B;font-weight:600;min-height:1em}
.login-hint{margin-top:18px;font-size:11px;color:var(--faint);line-height:1.6}

/* ── оболочка ── */
.wrap{max-width:1180px;margin:0 auto;padding:22px 20px 80px}
header.top{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-bottom:18px;border-bottom:1.5px solid var(--ink)}
header.top .logo{font-size:24px}
header.top .sub{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-top:5px}
.userbox{display:flex;align-items:center;gap:12px;font-size:13px}
.userbox .who{font-weight:700}
.userbox .role{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#fff;background:var(--ink);padding:3px 8px;border-radius:5px}
.userbox .role.mgr{background:var(--orange)}
.lnk{appearance:none;border:0;background:none;color:var(--muted);font-family:inherit;font-weight:600;font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 6px}
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px}
.seg button{appearance:none;border:0;background:transparent;font-family:inherit;font-weight:600;font-size:13px;color:var(--muted);padding:7px 15px;border-radius:6px;cursor:pointer}
.seg.ghost button.on{background:var(--orange);color:#fff}
select.sel{appearance:none;font-family:inherit;font-weight:700;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:9px;padding:8px 34px 8px 14px;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%2317150F' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 13px center}
.spacer{flex:1 1 auto}
.saved{font-size:11.5px;color:var(--faint);font-weight:600;letter-spacing:.04em;min-width:96px;text-align:right}
.saved b{color:var(--good)}

.rail{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 4px}
.fbtn{appearance:none;font-family:inherit;border:1.5px solid var(--line-strong);background:var(--surface);border-radius:9px;padding:9px 16px;font-weight:700;font-size:13px;letter-spacing:.02em;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:9px}
.fbtn .sqm{width:11px;height:11px;border:2px solid currentColor;background:#fff;display:inline-block}
.fbtn.on{color:#fff}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);overflow:hidden;margin-top:14px}
.panel .head{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--line)}
.panel .head .sqm{width:13px;height:13px;border:2.5px solid currentColor;background:#fff}
.panel .head h2{margin:0;font-size:14px;letter-spacing:.04em;text-transform:uppercase;font-weight:800}
.panel .head .who{font-size:12px;color:var(--muted);font-weight:600;margin-left:auto}

.scroller{overflow-x:auto}
table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}
table.grid th,table.grid td{padding:0}
table.grid th:not(.mcol),table.grid td:not(.mcol){white-space:nowrap}
.mcol{position:sticky;left:0;z-index:3;background:var(--surface);text-align:left;padding:9px 14px 9px 18px !important;min-width:230px;max-width:230px;border-right:1px solid var(--line);font-weight:600;color:var(--ink);font-size:12.5px;line-height:1.25;white-space:normal;overflow-wrap:break-word}
.mcol.sub{color:var(--muted)}
.mcol .u{display:block;font-size:10px;color:var(--faint);font-weight:600;margin-top:1px}
.dhead{padding:8px 0 !important;text-align:center;min-width:42px;color:var(--muted);font-weight:600;font-size:11px;border-bottom:1px solid var(--line);background:var(--paper)}
.dhead.we{color:var(--faint)}
.dhead .dow{display:block;font-size:9px;color:var(--faint);font-weight:600;text-transform:uppercase}
.tcol{position:sticky;right:0;z-index:3;background:var(--paper);text-align:right;padding:9px 18px 9px 12px !important;min-width:120px;border-left:1.5px solid var(--line-strong);font-weight:700;font-size:13px}
.thead-t{position:sticky;right:0;z-index:4;background:var(--ink);color:#fff;text-align:right;padding:8px 18px !important;min-width:120px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;border-bottom:1px solid var(--line)}
tr.row td{border-bottom:1px solid var(--line)}
tr.row.alt td:not(.mcol):not(.tcol){background:#FCFBF8}
td.daycell{text-align:center;padding:0 !important}
td.daycell.we{background:#FBFAF6}
input.cell{width:42px;height:34px;border:0;background:transparent;text-align:center;font-size:12.5px;color:var(--ink);outline:none;padding:0}
input.cell.money{width:84px}            /* денежные строки — широкие ячейки, чтобы суммы не накладывались */
input.cell::placeholder{color:#D9D5CC}
input.cell:focus{background:var(--orange-soft);box-shadow:inset 0 0 0 1.5px var(--orange)}
input.cell:disabled{color:var(--muted)}
input.cell::-webkit-outer-spin-button,input.cell::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
tr.calc td:not(.mcol){background:#FFF8F4}
tr.calc .mcol{background:#FFF8F4;color:var(--orange);font-weight:700}
tr.calc .tcol{background:#FFF1EA;color:var(--orange)}
tr.calc .dash{color:#E7C7BB;text-align:center;font-size:12px}
tr.sec td{background:var(--paper);border-bottom:1px solid var(--line)}
tr.sec .mcol{background:var(--paper);text-transform:uppercase;letter-spacing:.1em;font-size:10px;color:var(--muted);font-weight:800;padding-top:11px !important;padding-bottom:7px !important}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.fcard{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--c);border-radius:13px;box-shadow:var(--shadow);overflow:hidden}
.fcard .fh{display:flex;align-items:center;gap:9px;padding:13px 16px 10px}
.fcard .fh .sqm{width:12px;height:12px;border:2.5px solid var(--c);background:#fff}
.fcard .fh h3{margin:0;font-size:13px;letter-spacing:.05em;text-transform:uppercase;font-weight:800}
.kpi{padding:0 16px 8px}
.kpi .big{font-size:26px;font-weight:700;letter-spacing:-.01em;line-height:1.1}
.kpi .lab{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:2px}
.statrow{display:flex;border-top:1px solid var(--line)}
.statrow .st{flex:1;padding:10px 16px;border-right:1px solid var(--line)}
.statrow .st:last-child{border-right:0}
.statrow .st .v{font-size:16px;font-weight:700}
.statrow .st .l{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:600}
.funnel{padding:12px 16px 16px;border-top:1px solid var(--line)}
.funnel .ft{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:9px}
.stage{display:flex;align-items:center;gap:10px;margin-bottom:7px}
.stage .nm{font-size:11px;color:var(--ink);font-weight:600;min-width:104px}
.stage .bar{height:9px;border-radius:3px;background:var(--c);opacity:.9;min-width:2px}
.stage .vv{font-size:11px;color:var(--muted);font-weight:600;margin-left:auto}
.stage .cv{font-size:10px;color:var(--faint);font-weight:600;min-width:38px;text-align:right}

.byEmp{background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);margin-top:14px;overflow:hidden}
.byEmp h3{margin:0;padding:14px 18px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;border-bottom:1px solid var(--line)}
table.emp{width:100%;border-collapse:collapse;font-size:13px}
table.emp th{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;text-align:right;padding:9px 18px;border-bottom:1px solid var(--line)}
table.emp th:first-child{text-align:left}
table.emp td{padding:11px 18px;border-bottom:1px solid var(--line);text-align:right;font-weight:600}
table.emp td:first-child{text-align:left;font-weight:700}
table.emp tr.tot td{background:var(--ink);color:#fff;border:0}
.barcell{position:relative}
.barcell .mini{position:absolute;left:18px;right:18px;bottom:6px;height:3px;background:var(--orange);opacity:.25;border-radius:2px}

.deptplan{background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);padding:16px 18px;margin-top:14px}
.dp-top{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}
.dp-l{font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:var(--muted)}
.dp-r{font-size:13px;font-weight:700;color:var(--ink)}
.dp-r b{font-size:21px;color:var(--orange);margin-right:4px}
.dp-track{margin-top:11px;height:14px;background:#F0EDE6;border-radius:7px;overflow:hidden}
.dp-bar{height:100%;border-radius:7px;transition:width .3s}
.empty{padding:34px 20px;text-align:center;color:var(--muted)}
.empty b{color:var(--ink)}
.note{font-size:11.5px;color:var(--faint);margin-top:16px;line-height:1.6}
@media(max-width:820px){
  .cards{grid-template-columns:1fr}
  .mcol{min-width:172px;max-width:172px}
  table.emp th:nth-child(3),table.emp td:nth-child(3){display:none}
}
