:root{--ink:#16181A;--muted:#5C6066;--line:#E4E3DD;--bg:#F4F3EF;--card:#fff;--accent:#E39A2D;--accent-ink:#6B4200;
--ok:#14594A;--ok-bg:#D8EFE7;--warn:#6B4200;--warn-bg:#FBE9C8;--bad:#7A1A14;--bad-bg:#FBE3E1;--info:#1D4A8F;--info-bg:#DCE6F7}
*{box-sizing:border-box}html,body{margin:0}
body{font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:inherit}a:hover{color:var(--accent-ink)}
.layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
.side{background:var(--ink);color:#EDEBE5;padding:20px 14px;display:flex;flex-direction:column;gap:4px}
.brand{font-weight:700;font-size:17px;letter-spacing:.2px;margin:0 8px 18px}.brand span{color:var(--accent)}
.side a{display:block;padding:9px 10px;border-radius:8px;text-decoration:none;color:#D6D3CB}
.side a:hover{background:#25282B;color:#fff}.side a.on{background:#2E3236;color:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.side .grow{flex:1}.side form button{width:100%;text-align:left;background:none;border:0;color:#9A978F;padding:9px 10px;cursor:pointer;font:inherit}
.who{color:#9A978F;font-size:13px;padding:0 10px 6px}
main{padding:24px 28px;max-width:1400px;width:100%}
h1{font-size:22px;margin:0 0 4px}.sub{color:var(--muted);margin:0 0 20px}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));margin-bottom:16px}
.grid.wide{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr))}
main{min-width:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.card h2{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 10px;font-weight:600}
.kpi{font-size:28px;font-weight:700;line-height:1.1}.kpi small{font-size:14px;color:var(--muted);font-weight:500}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid #EFEDE7;vertical-align:top}tr:last-child td{border-bottom:0}
td.r,th.r{text-align:right;white-space:nowrap}.nowrap{white-space:nowrap}
.tablewrap{overflow-x:auto}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:#EFEDE7;color:var(--muted)}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.work{background:var(--warn-bg);color:var(--warn)}
.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.info{background:var(--info-bg);color:var(--info)}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}
input,select,button{font:inherit}
.filters input,.filters select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;min-width:200px}
.btn{padding:8px 14px;border-radius:8px;border:0;background:var(--accent);color:var(--ink);font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}
.btn.ghost{background:#fff;border:1px solid var(--line);font-weight:500}
.muted{color:var(--muted)}.small{font-size:13px}.note{color:var(--bad);font-size:12px}
.bar{height:8px;background:#EFEDE7;border-radius:4px;overflow:hidden;min-width:80px}.bar i{display:block;height:100%;background:var(--accent)}
.pager{display:flex;gap:8px;align-items:center;margin-top:12px}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login form{background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}
.login input{padding:10px 12px;border:1px solid var(--line);border-radius:8px}.login .err{color:var(--bad);font-size:14px}
@media (max-width:820px){.layout{grid-template-columns:1fr}.side{flex-direction:row;flex-wrap:wrap;padding:10px}
.brand{width:100%;margin:4px 8px 6px}.side .grow,.who{display:none}main{padding:16px}}
.form label{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:14px;color:var(--muted)}
.form input:not([type=checkbox]),.form select{padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;color:var(--ink);background:#fff}
.form label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);margin-bottom:8px}
.err{color:var(--bad);margin-bottom:10px}.flash{margin-bottom:16px;border-color:var(--accent)}
code{background:#FFF6E6;padding:2px 6px;border-radius:6px;font-size:15px}tr.off td{opacity:.55}
.qr svg{width:220px;height:220px;display:block;margin:8px 0;background:#fff}
img.thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;display:block;background:#EFEDE7}
.shoot{max-width:620px;margin-bottom:16px}
.camera{display:block!important;border:2px dashed var(--accent);border-radius:12px;padding:22px;text-align:center;cursor:pointer;color:var(--ink)!important;font-weight:600;font-size:16px!important;background:#FFF8EC}
.camera input{display:block;margin:0 auto 8px;max-width:100%}
.photos{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.ph{padding:10px;display:flex;flex-direction:column;gap:4px}.ph img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:block;background:#EFEDE7}
.linkbtn{background:none;border:0;padding:0;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:13px}
.badge{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--ink);font-size:12px;font-weight:700;text-align:center}
.bad-t{color:var(--bad)}
.porders{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr))}
.porder{text-decoration:none;display:flex;flex-direction:column;gap:4px}.porder:hover{border-color:var(--accent)}.porder.late{border-left:4px solid var(--bad)}
.ph1{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.clamp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tracks{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.tr{font-size:11px;padding:3px 7px;border-radius:7px;background:#EFEDE7;color:var(--muted);line-height:1.2}.tr i{display:block;font-style:normal;font-size:10px;opacity:.75}
.tr.ok{background:var(--ok-bg);color:var(--ok)}.tr.work{background:var(--warn-bg);color:var(--warn)}.tr.bad{background:var(--bad-bg);color:var(--bad)}.tr.lt{outline:2px solid var(--bad)}
h2.sec{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:18px 0 10px}
.tracksgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr))}
.track{display:flex;flex-direction:column;gap:6px}.track.na{opacity:.6}.track.done{border-color:#B8DCCF}.track.blk{border-color:#F0B7B2;background:#FFFBFA}.track.late{border-left:4px solid var(--bad)}
.th{display:flex;justify-content:space-between;gap:8px;align-items:center}
.sbtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.sbtn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;font-weight:600;cursor:pointer;min-height:44px}
.sbtn.cur{background:var(--ink);color:#fff;border-color:var(--ink)}.sbtn.b:not(.cur){border-color:#F0B7B2;color:var(--bad)}
.tform details{margin-top:4px}.tform label{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--muted);margin:6px 0}
.tform input,.tform select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;width:100%;margin-top:4px;background:#fff}
.nlist{display:flex;flex-direction:column;gap:8px;max-width:760px}.nitem{text-decoration:none;padding:12px 14px}.nitem.new{border-left:4px solid var(--accent)}
.nitem.k-delay.new,.nitem.k-blocker.new{border-left-color:var(--bad)}
@media (max-width:820px){.side{flex-wrap:nowrap;overflow-x:auto;gap:2px;position:sticky;top:0;z-index:5;-webkit-overflow-scrolling:touch}
.side .brand{display:none}.side a{white-space:nowrap;padding:8px 10px;font-size:14px}.side form{flex:none}.side form button{white-space:nowrap;padding:8px 10px}}
.form textarea{padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;color:var(--ink);width:100%}
.cmt{padding:8px 0;border-bottom:1px solid #EFEDE7}.cmt:last-of-type{border-bottom:0}
.gantt{overflow-x:auto}.gh,.gr{display:grid;grid-template-columns:240px minmax(480px,1fr);gap:10px;align-items:center}
.gr{padding:6px 0;border-top:1px solid #EFEDE7}.gl{font-size:14px;min-width:0}.gl a{text-decoration:none}
.gt{position:relative;height:22px}.gh .gt span{position:absolute;font-size:11px;color:var(--muted);border-left:1px solid var(--line);padding-left:3px}
.gt .bar{position:absolute;top:4px;height:14px;border-radius:7px;background:var(--accent)}.gt .bar.done{background:#9CCFBE}.gt .bar.late{background:#D9574C}
.gt .today{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--info);opacity:.5}
.chat{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start}
.chlist{display:flex;flex-direction:column;gap:2px}.chlist a{padding:8px 10px;border-radius:8px;text-decoration:none}.chlist a.on{background:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.chlist .form select{width:100%}
.chmain{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;height:calc(100vh - 60px)}
.msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px}
.msg{max-width:78%;background:#F4F3EF;border-radius:12px;padding:8px 11px;align-self:flex-start}.msg.mine{align-self:flex-end;background:#FFF1DA}
.msg .mb{white-space:pre-wrap;word-wrap:break-word}.msg .d{display:none}
.send{display:flex;gap:8px;margin-top:10px}.send textarea{flex:1;padding:9px 11px;border:1px solid var(--line);border-radius:10px;font:inherit;resize:vertical}
@media (max-width:820px){.chat{grid-template-columns:1fr}.chmain{height:70vh}}
.steps{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px}.step{font-size:12px;padding:4px 9px;border-radius:999px;background:#EFEDE7;color:var(--muted)}
.step.cur{background:var(--ink);color:#fff;font-weight:600}
.act{border-top:1px solid #EFEDE7;padding-top:10px;margin-top:10px}.act:first-of-type{border-top:0;margin-top:0;padding-top:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tabs a{padding:7px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;font-size:14px}.tabs a.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.ab-vacation,.ab-unpaid{background:#4F86C6!important}.ab-sick{background:#D9574C!important}.ab-business_trip{background:#8E6BBF!important}.ab-day_off{background:var(--accent)!important}.bar.pend{opacity:.45}
.lg{display:inline-block;width:12px;height:8px;border-radius:4px;margin:0 3px 0 8px}
.pline{display:grid;grid-template-columns:1fr 110px 80px;gap:6px;margin-bottom:6px}.pline input{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;min-width:0}
tr.unseen td{font-weight:600}tr.unseen td .muted{font-weight:400}
pre.log{white-space:pre-wrap;word-break:break-word;font-size:12px;background:#F4F3EF;padding:8px;border-radius:8px;max-height:320px;overflow:auto}
/* Диаграмма Ганта (задачи) */
.gx{padding:12px}.gx-tools{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.gx-zoom{display:flex;gap:6px}.gx-wrap{overflow:auto;max-height:75vh;border:1px solid var(--line);border-radius:8px}
.gx-grid{position:relative;width:max-content;min-width:100%}
.gx-row{display:flex;border-top:1px solid #EFEDE7;min-height:40px}.gx-row.closed .gx-left a{color:var(--muted);text-decoration:line-through}
.gx-left{position:sticky;left:0;z-index:2;background:#fff;width:300px;min-width:300px;padding:6px 10px;border-right:1px solid var(--line);font-size:14px}
.gx-left a{text-decoration:none}.gx-left .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-track{position:relative;background-image:linear-gradient(to right,#F1EFE9 1px,transparent 1px)}
.gx-head{position:sticky;top:0;z-index:3;background:#F7F5F0;min-height:34px}.gx-head .gx-left{background:#F7F5F0;font-weight:600}
.gx-day{position:absolute;top:0;bottom:0;font-size:11px;text-align:center;line-height:1.2;padding-top:4px;color:var(--muted);border-left:1px solid #E6E3DB}
.gx-day b{display:block;font-size:10px;color:var(--ink)}.gx-day.we{background:#EFEDE7}.gx-day.td{background:#FFF3D6;color:var(--ink);font-weight:600}
.gx-today{position:absolute;top:0;bottom:0;width:2px;background:#F0B429;opacity:.6;pointer-events:none}
.gx-bar{position:absolute;top:9px;height:22px;border-radius:5px;background:#4FB3E0;color:#fff;font-size:11px;line-height:22px;padding:0 6px;
  white-space:nowrap;overflow:hidden;box-sizing:border-box;margin-left:2px;touch-action:none;user-select:none}
.gx-bar.late{background:#4FB3E0}.gx-bar.done{background:#9CCFBE}.gx-bar.edit{cursor:grab}.gx-bar.drag{cursor:grabbing;opacity:.85;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.gx-bar .h{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize}.gx-bar .h.l{left:0}.gx-bar .h.r{right:0}
.gx-bar span{pointer-events:none}
.gx-over{position:absolute;top:9px;height:22px;background:#E5534B;border-radius:0 5px 5px 0;pointer-events:none;opacity:.9}
.gx-msg{min-height:18px;margin-top:6px}.gx-msg.ok{color:#2E7D5B}.gx-msg.bad{color:#C0392B}
@media (max-width:700px){.gx-left{width:160px;min-width:160px}}
/* Мессенджер */
.cx{display:grid;grid-template-columns:320px 1fr;gap:14px;align-items:start}
.cx-side{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;height:calc(100vh - 60px);display:flex;flex-direction:column}
.cx-sidehead{display:flex;justify-content:space-between;align-items:center;gap:8px}.cx-sidehead h1{margin:0;font-size:22px}
.cx-search input{width:100%;margin:8px 0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit}
.cx-new{border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;max-height:50vh;overflow:auto}
.cx-people{display:flex;flex-direction:column;gap:2px;max-height:180px;overflow:auto;font-size:14px;margin:6px 0}
.cx-list{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:2px}
.cx-ch{display:flex;gap:10px;padding:8px;border-radius:10px;text-decoration:none;color:inherit;align-items:center}.cx-ch:hover{background:#F7F5F0}.cx-ch.on{background:#FFF3D6}
.cx-av{width:40px;height:40px;min-width:40px;border-radius:50%;background:#EFEDE7;display:flex;align-items:center;justify-content:center;font-size:18px}
.cx-chb{flex:1;min-width:0}.cx-cht{display:flex;justify-content:space-between;gap:6px}.cx-cht b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.cx-time{font-size:12px;color:var(--muted);white-space:nowrap}
.cx-prev{display:flex;justify-content:space-between;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cx-main{position:relative;background:#E9E6DE;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden}
.cx-empty{align-items:center;justify-content:center;background:#fff}
.cx-head{display:flex;align-items:center;gap:12px;background:#fff;padding:10px 14px;border-bottom:1px solid var(--line)}.cx-head>div{flex:1}
.cx-back{display:none;text-decoration:none;font-size:20px}
.cx-gset{position:relative}.cx-gbox{position:absolute;right:0;top:26px;z-index:20;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;width:300px;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.cx-pin{background:#fff;border-bottom:1px solid var(--line);padding:6px 14px;font-size:13px;display:flex;justify-content:space-between;gap:8px}.cx-pin a{text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-msgs{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.cx-day{text-align:center;margin:6px 0}.cx-day span{background:rgba(0,0,0,.08);color:#444;font-size:12px;padding:2px 10px;border-radius:10px}
.cx-sys{text-align:center;font-size:12px;color:var(--muted)}
.cx-msg{position:relative;max-width:min(78%,640px);background:#fff;border-radius:12px 12px 12px 4px;padding:6px 10px 4px;align-self:flex-start;box-shadow:0 1px 1px rgba(0,0,0,.06)}
.cx-msg.mine{align-self:flex-end;background:#FFF1DA;border-radius:12px 12px 4px 12px}.cx-msg.flash{outline:2px solid var(--accent)}
.cx-who{font-size:13px;font-weight:600;color:#B66A00}.cx-fwd{font-size:12px;color:var(--muted);font-style:italic}
.cx-reply{display:block;border-left:3px solid var(--accent);background:rgba(0,0,0,.04);padding:3px 8px;border-radius:4px;margin:2px 0 4px;text-decoration:none;font-size:13px;color:inherit}
.cx-reply span{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cx-body{white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.cx-img{display:block;max-width:100%;max-height:320px;border-radius:8px;margin:4px 0}
.cx-file{display:block;padding:6px 8px;background:rgba(0,0,0,.04);border-radius:8px;margin:4px 0;text-decoration:none;font-size:14px}
.cx-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.cx-tags .pill{text-decoration:none}
.cx-reacts{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.cx-react{border:1px solid var(--line);background:#fff;border-radius:12px;padding:1px 7px;font-size:13px;cursor:pointer}.cx-react.on{background:#FFE7B8;border-color:var(--accent)}
.cx-meta{text-align:right;font-size:11px;color:var(--muted);margin-top:2px}.cx-read{color:#3A9BD5}
.cx-menu-btn{position:absolute;top:2px;right:4px;border:0;background:transparent;font-size:16px;cursor:pointer;opacity:0;color:var(--muted)}
.cx-msg:hover .cx-menu-btn{opacity:1}@media (hover:none){.cx-menu-btn{opacity:.6}}
.cx-send{background:#fff;border-top:1px solid var(--line);padding:8px 10px}
.cx-row{display:flex;gap:6px;align-items:flex-end}.cx-row textarea{flex:1;padding:9px 11px;border:1px solid var(--line);border-radius:18px;font:inherit;resize:none;max-height:200px}
.cx-ico{border:0;background:transparent;font-size:20px;cursor:pointer;padding:6px;border-radius:8px;line-height:1}.cx-ico.on{background:#FFE7B8}
.cx-bar{display:flex;justify-content:space-between;gap:8px;font-size:13px;background:#F7F5F0;border-left:3px solid var(--accent);padding:4px 8px;margin-bottom:6px;border-radius:4px}
.cx-bar span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-task{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px;font-size:13px;background:#EEF7F2;padding:6px 8px;border-radius:8px}.cx-task label{display:flex;flex-direction:column}
.cx-link{position:relative;margin-bottom:6px}.cx-link input{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}
.cx-sugg{display:flex;flex-direction:column;max-height:220px;overflow:auto}.cx-sugg button{text-align:left;border:0;background:#fff;padding:6px 8px;cursor:pointer;border-bottom:1px solid #F1EFE9}.cx-sugg button:hover{background:#FFF3D6}
.cx-pop{position:absolute;z-index:30;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:6px;display:flex;flex-direction:column;min-width:240px}
.cx-pop>button{border:0;background:transparent;text-align:left;padding:7px 10px;border-radius:8px;cursor:pointer;font:inherit}.cx-pop>button:hover{background:#F7F5F0}
.cx-emo{display:flex;gap:2px;padding:2px 2px 6px;border-bottom:1px solid #F1EFE9;margin-bottom:4px}.cx-emo button{border:0;background:transparent;font-size:20px;cursor:pointer;border-radius:8px;padding:3px}.cx-emo button:hover{background:#F7F5F0}
.cx-dlg{border:1px solid var(--line);border-radius:12px;padding:16px;min-width:300px;max-width:92vw}.cx-dlg textarea{width:100%;font:inherit}
.cx-toast{position:absolute;bottom:80px;left:50%;transform:translateX(-50%);background:#2E7D5B;color:#fff;padding:6px 14px;border-radius:16px;font-size:14px;z-index:40}.cx-toast.bad{background:#C0392B}
@media (max-width:820px){.cx{grid-template-columns:1fr}.cx.has-cur .cx-side{display:none}.cx:not(.has-cur) .cx-main{display:none}
  .cx-side,.cx-main{height:calc(100vh - 90px)}.cx-back{display:block}.cx-msg{max-width:88%}}
[hidden]{display:none!important}
.pw-wrap{position:relative;display:block}.pw-wrap input{width:100%;padding-right:42px;box-sizing:border-box}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;font-size:18px;cursor:pointer;padding:4px;line-height:1}
.ok-t{color:#2E7D5B}
