/* SitePilot CRM — светлая и тёмная темы в стиле кабинета клиента OparinLab (lk.oparinlab.ru).
   Дизайн-токены: те же имена и значения светлой темы, что в кабинете (--ink, --mut, --line, --blue, --ok-bg…).
   Тема: <html data-theme="light|dark">, ставит theme.js (выбор в localStorage «crm-theme», по умолчанию — системная). */
@font-face{font-family:"Inter Tight";src:url(InterTight.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{color-scheme:light;
  --f:"Inter Tight",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,Arial,sans-serif;--r:18px;--r2:12px;
  --page:#f5f5f7;--card:#fff;--g:#f5f5f7;--g2:#e8e8ed;--ink:#1d1d1f;--mut:#5f5f64;--line:#d2d2d7;--line2:#e5e5ea;
  --field:#fff;--field-bd:#86868b;--blue:#0071e3;--blue-h:#0064c8;--on-blue:#fff;--link:#0066cc;
  --ok:#116b2e;--ok-bg:#e6f6ea;--warn:#7a4a00;--warn-bg:#fdf1dc;--bad:#b3261e;--bad-bg:#fdeceb;--info:#0058b0;--info-bg:#e7f1fc;--on-solid:#fff;
  --side:#fff;--top:rgba(255,255,255,.9);--msg:#f0f0f3;--msg-me:#e7f1fc;--row-hl:#fafafc;
  --sh:0 1px 2px rgba(0,0,0,.04);--sh-pop:0 20px 60px rgba(0,0,0,.3);--scrim:rgba(0,0,0,.45);--focus:#0071e3}
:root[data-theme=dark]{color-scheme:dark;
  --page:#111113;--card:#1c1c1f;--g:#26262a;--g2:#323237;--ink:#f5f5f7;--mut:#a8a8ae;--line:#3a3a40;--line2:#2c2c31;
  --field:#141416;--field-bd:#6e6e76;--blue:#0071e3;--blue-h:#0064c8;--on-blue:#fff;--link:#5eaaff;
  --ok:#6fd58e;--ok-bg:#12301c;--warn:#f2c25c;--warn-bg:#33270c;--bad:#ff8f86;--bad-bg:#3b1816;--info:#8fc3ff;--info-bg:#132b4b;--on-solid:#111113;
  --side:#161618;--top:rgba(22,22,24,.88);--msg:#26262a;--msg-me:#132b4b;--row-hl:#212125;
  --sh:0 0 0 1px #26262a;--sh-pop:0 20px 60px rgba(0,0,0,.6);--scrim:rgba(0,0,0,.6);--focus:#5eaaff}
*{box-sizing:border-box}
html,body{margin:0}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}
body{font:15px/1.45 var(--f);letter-spacing:-.005em;color:var(--ink);background:var(--page);-webkit-font-smoothing:antialiased}
a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
h1,h2,h3{margin:0;letter-spacing:-.015em;line-height:1.2}h1{font-size:24px;font-weight:600}h2{font-size:17px;font-weight:600}h3{font-size:15px;font-weight:600}
small{display:block;color:var(--mut);font-size:12.5px}
code{background:var(--g);color:var(--ink);padding:2px 6px;border-radius:6px;font-size:13px}
.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
/* боковое меню — как в кабинете: светлое, тонкая граница, активный пункт голубой */
.side{background:var(--side);color:var(--ink);border-right:1px solid var(--line2);display:flex;flex-direction:column;padding:18px 12px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:baseline;gap:6px;color:var(--ink);padding:4px 10px 18px;text-decoration:none!important}
.brand b{font-size:19px;font-weight:700;letter-spacing:-.02em}.brand span{font-size:12px;color:var(--info);font-weight:600;letter-spacing:.06em}
.brand.big{justify-content:center;padding-bottom:6px}.brand.big b{font-size:28px;color:var(--ink)}.brand.big span{color:var(--info)}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a{display:flex;align-items:center;gap:10px;min-height:40px;padding:8px 10px;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:400}
.side nav a .ic{color:var(--mut)}
.side nav a:hover{background:var(--g)}.side nav a.on{background:var(--info-bg);color:var(--info);font-weight:500}.side nav a.on .ic{color:var(--info)}
/* группы меню (13.11): мелкий спокойный заголовок-кнопка, свёрнутость из localStorage → <html data-nav-closed> (theme.js) */
.side nav{gap:0}.nav-g{display:flex;flex-direction:column;gap:1px}.nav-g+.nav-g{margin-top:8px}
.nav-gh{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;background:none;border:0;cursor:pointer;padding:5px 10px 3px;border-radius:8px;
  color:var(--mut);font:inherit;font-size:11.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;text-align:left}
.nav-gh:hover{color:var(--ink);background:var(--g)}.nav-gh:focus-visible{outline:2px solid var(--info);outline-offset:-2px}
.nav-gh .ic{width:14px;height:14px;opacity:.55;transition:transform .15s ease}.nav-gh[aria-expanded=false] .ic{transform:rotate(-90deg)}
.nav-g.has-on .nav-gh{cursor:default}.nav-g.has-on .nav-gh .ic{opacity:0}.nav-g.has-on .nav-gh:hover{background:none;color:var(--mut)}
.side nav .nav-gl a{min-height:36px;padding:7px 10px}
html[data-nav-closed~="work"] .nav-g[data-g="work"]:not(.has-on) .nav-gl,html[data-nav-closed~="sales"] .nav-g[data-g="sales"]:not(.has-on) .nav-gl,
html[data-nav-closed~="marketing"] .nav-g[data-g="marketing"]:not(.has-on) .nav-gl,html[data-nav-closed~="money"] .nav-g[data-g="money"]:not(.has-on) .nav-gl,
html[data-nav-closed~="team"] .nav-g[data-g="team"]:not(.has-on) .nav-gl,html[data-nav-closed~="system"] .nav-g[data-g="system"]:not(.has-on) .nav-gl{display:none}
@media (max-width:800px){.side nav .nav-gl a{min-height:42px}.nav-gh{min-height:32px}}
.side-me{margin-top:auto;display:flex;align-items:center;gap:4px;border-top:1px solid var(--line2);padding-top:12px}
.side-me a{display:flex;gap:10px;align-items:center;color:var(--ink);flex:1;min-width:0;text-decoration:none;padding:4px 6px;border-radius:10px}.side-me a:hover{background:var(--g)}.side-me small{color:var(--mut)}
.side-me b{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-me form{margin:0}
.lnk{background:none;border:0;color:var(--mut);cursor:pointer;padding:8px;border-radius:10px;display:inline-grid;place-items:center}.lnk:hover{color:var(--ink);background:var(--g)}
/* переключатель темы */
.theme-t{background:none;border:0;color:var(--mut);cursor:pointer;padding:8px;border-radius:10px;display:inline-grid;place-items:center;flex:none}
.theme-t:hover{color:var(--ink);background:var(--g)}
.theme-t .i-sun{display:none}:root[data-theme=dark] .theme-t .i-sun{display:block}:root[data-theme=dark] .theme-t .i-moon{display:none}
.main{min-width:0}
.top{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 28px;background:var(--top);-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--line2);position:sticky;top:0;z-index:5}
.top h1{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acts{display:flex;gap:8px}
.burger{display:none;background:none;border:0;padding:8px;margin-left:-8px;cursor:pointer;color:var(--ink);border-radius:10px}
.content{padding:24px 28px 48px;max-width:1440px}
/* блоки */
.card{background:var(--card);border-radius:var(--r);padding:20px 22px;box-shadow:var(--sh)}
.card+.card{margin-top:16px}.col>.card+.card{margin-top:16px}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.grid2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;align-items:start}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--card);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh);color:var(--mut);font-size:13px}
.kpi b{display:block;font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:4px;color:var(--ink)}.kpi.bad b{color:var(--bad)}
/* таблицы */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font-size:13px;font-weight:500;color:var(--mut);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px;border-bottom:1px solid var(--line2);vertical-align:top}.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:var(--row-hl)}
.tbl .r{text-align:right;white-space:nowrap}.tbl tr.late td{background:var(--bad-bg)}.tbl tr.soon td{background:var(--warn-bg)}.tbl tr.off td{opacity:.55}
/* бейджи статусов */
.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:13px;font-weight:500;background:var(--info-bg);color:var(--info);white-space:nowrap}
.st-active,.ps-published{background:var(--ok-bg);color:var(--ok)}.st-pause,.st-review,.ps-review{background:var(--warn-bg);color:var(--warn)}
.st-lost,.ps-failed{background:var(--bad-bg);color:var(--bad)}.st-done{background:var(--g2);color:var(--mut)}
.badge{display:inline-block;min-width:20px;padding:1px 7px;border-radius:99px;background:var(--blue);color:var(--on-blue);font-size:12px;font-weight:600;text-align:center}
/* кнопки — капсулы, как в кабинете */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;border:0;border-radius:980px;padding:9px 18px;background:var(--blue);color:var(--on-blue);font:500 15px/1.15 var(--f);cursor:pointer;text-decoration:none!important;transition:background-color .15s,color .15s,box-shadow .15s}
.btn:hover{background:var(--blue-h)}.btn:active{transform:translateY(1px)}
.btn:disabled{background:var(--g2);color:var(--mut);cursor:not-allowed}
.btn-o{background:transparent;color:var(--info);box-shadow:inset 0 0 0 1px var(--info)}.btn-o:hover{background:var(--info);color:var(--on-solid);box-shadow:inset 0 0 0 1px var(--info)}
.btn-sm{min-height:32px;padding:6px 12px;font-size:13.5px}
/* поля */
input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--field-bd);border-radius:10px;padding:9px 11px;background:var(--field);width:100%;min-height:42px}
input::placeholder,textarea::placeholder{color:var(--mut);opacity:1}
input[type=checkbox],input[type=radio]{min-height:0;accent-color:var(--blue)}
input[type=file]{border:0;padding:4px 0;background:none;min-height:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}
input:disabled,select:disabled,textarea:disabled{background:var(--g);color:var(--mut)}
textarea{resize:vertical}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 14px;align-items:end}
.form label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;font-weight:500;color:var(--ink)}
.form .wide{grid-column:1/-1}.form .cb,.cb{flex-direction:row!important;align-items:center;gap:8px;font-weight:400}.cb input{width:auto}
fieldset{border:0;padding:0;margin:0;min-width:0}legend{font-size:13.5px;font-weight:500;color:var(--ink);margin-bottom:6px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:99px;font-weight:400!important;cursor:pointer}.chip:hover{background:var(--g)}.chip input{width:auto}
.chip:has(input:checked){background:var(--info-bg);border-color:var(--info);color:var(--info)}
.filters{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;align-items:center}.filters input{max-width:340px}.filters select{max-width:200px}
.inline{display:inline-flex;gap:6px;align-items:center;margin:0}.inline select{width:auto;padding:5px 8px;min-height:34px}
.empty{color:var(--mut);padding:18px 0;text-align:center}
.mut{color:var(--mut)}.err{color:var(--bad)}
.alert{background:var(--bad-bg);color:var(--bad);padding:12px 16px;border-radius:var(--r2);margin-bottom:14px}.alert.ok{background:var(--ok-bg);color:var(--ok)}
/* вкладки — сегменты, как переключатель в кабинете */
.tabs{display:inline-flex;gap:2px;margin-bottom:14px;flex-wrap:wrap;background:var(--g2);border-radius:12px;padding:3px;max-width:100%}
.tabs a{padding:7px 14px;border-radius:9px;color:var(--mut);font-weight:500;text-decoration:none}.tabs a:hover{color:var(--ink)}
.tabs a.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.proj{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.info dl{margin:10px 0 0;display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px 10px}.info dt{color:var(--mut);font-size:13px}.info dd{margin:0;min-width:0;overflow-wrap:anywhere}
.desc{margin-top:12px;padding-top:12px;border-top:1px solid var(--line2);font-size:14px}
.tasks{list-style:none;margin:0;padding:0}.tasks li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line2)}.tasks li:last-child{border:0}
.tasks li.late b{color:var(--bad)}.tk{margin:0}
.chk{width:22px;height:22px;border-radius:7px;border:1.5px solid var(--field-bd);background:var(--field);cursor:pointer;padding:0;display:grid;place-items:center;color:transparent}
.chk:hover{border-color:var(--ok)}.chk .ic{width:14px;height:14px}.chk.on{background:var(--ok);border-color:var(--ok);color:var(--on-solid)}
.task-new{margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line2)}
/* чат */
.chat{display:flex;flex-direction:column;height:min(70vh,720px)}
.chat-log{flex:1;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:4px 2px 12px}
.msg{max-width:78%;align-self:flex-start;background:var(--msg);border-radius:16px 16px 16px 4px;padding:8px 12px}
.msg.me{align-self:flex-end;background:var(--msg-me);border-radius:16px 16px 4px 16px}
.msg .who{font-size:12.5px;font-weight:600;color:var(--info)}.msg .t{white-space:pre-wrap;word-wrap:break-word}.msg time{font-size:11.5px;color:var(--mut);margin-left:6px;font-weight:400}
.msg img{max-width:260px;max-height:220px;border-radius:10px;display:block;margin-top:6px}
.day{align-self:center;font-size:12px;color:var(--mut);background:var(--card);padding:2px 10px;border-radius:99px;box-shadow:0 0 0 1px var(--line2)}
.chat-form{display:flex;gap:8px;align-items:flex-end;border-top:1px solid var(--line2);padding-top:10px}
.chat-form textarea{min-height:42px;max-height:160px}.att{cursor:pointer;color:var(--mut);padding:10px 4px}.att:hover{color:var(--link)}
.cats{display:flex;flex-wrap:wrap;gap:8px 18px;margin:-4px 0 14px;color:var(--mut);font-size:14px}.cats b{color:var(--ink)}
details.sub{margin-bottom:14px}details.sub summary{cursor:pointer;font-weight:500;margin-bottom:8px}
.plain{list-style:none;padding:0;margin:0 0 10px}.plain li{padding:4px 0}
.pager{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
/* своё окно подтверждения */
.modal{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal[hidden]{display:none}
.modal-box{background:var(--card);color:var(--ink);border-radius:var(--r);padding:22px;max-width:440px;width:100%;position:relative;box-shadow:var(--sh-pop)}
.modal-x{position:absolute;right:10px;top:10px;background:none;border:0;cursor:pointer;color:var(--mut);padding:6px;border-radius:8px}.modal-x:hover{color:var(--ink);background:var(--g)}.modal-body p{margin:0 18px 16px 0}
.modal-acts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.tg-code{margin:4px 0 10px}.tg-code code{font-size:17px;padding:6px 12px;letter-spacing:.04em;user-select:all}
.tg-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tg-off{margin-top:12px}
/* вход */
body.auth{display:grid;place-items:center;min-height:100vh;background:var(--page)}
.login{background:var(--card);padding:32px;border-radius:var(--r);width:min(380px,92vw);display:flex;flex-direction:column;gap:14px;box-shadow:var(--sh)}
.login label{display:flex;flex-direction:column;gap:6px;font-size:13.5px;font-weight:500}.login .btn{justify-content:center;min-height:44px}.hint{font-size:12.5px;color:var(--mut);margin:0;text-align:center}
@media (max-width:1100px){.grid2,.proj{grid-template-columns:minmax(0,1fr)}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:800px){.app{grid-template-columns:minmax(0,1fr)}.side{position:fixed;left:0;top:0;bottom:0;width:min(280px,86vw);transform:translateX(-102%);transition:transform .2s ease;z-index:40;visibility:hidden}
  body.nav-open .side{transform:none;visibility:visible;box-shadow:var(--sh-pop)}.burger{display:inline-grid;place-items:center}.top{padding:10px 16px;min-height:56px;gap:8px}.content{padding:16px}.top h1{font-size:19px}
  .card{padding:16px}.tbl{display:block;overflow-x:auto}.msg{max-width:92%}}
/* ---------- Демо: список, анкета, сводка ---------- */
.mt{margin-top:16px}
.acts .btn span,.acts-cell .btn span{white-space:nowrap}
.acts-cell{white-space:nowrap}.acts-cell .btn{margin:2px 0}
.score{display:inline-block;min-width:38px;padding:2px 8px;border-radius:8px;font-weight:600;text-align:center;background:var(--g2);color:var(--mut)}
.sc-hi{background:var(--ok-bg);color:var(--ok)}.sc-mid{background:var(--warn-bg);color:var(--warn)}.sc-lo{background:var(--bad-bg);color:var(--bad)}
.v-ok{background:var(--ok-bg);color:var(--ok)}.v-warn{background:var(--warn-bg);color:var(--warn)}.v-bad{background:var(--bad-bg);color:var(--bad)}
.ds-review{background:var(--warn-bg);color:var(--warn)}.ds-accepted,.ds-approved,.ds-published,.ds-catalog{background:var(--ok-bg);color:var(--ok)}
.demo-page{display:grid;grid-template-columns:minmax(360px,520px) minmax(0,1fr);gap:16px;align-items:start}
.demo-view{position:sticky;top:84px}
.frame-wrap{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;height:calc(100vh - 110px)}
.frame-wrap iframe{width:100%;height:100%;border:0;display:block;background:#fff}
.demo-info .pill{margin-right:4px}.demo-info p{margin:8px 0}
.feat{display:flex;flex-wrap:wrap;gap:6px}.feat span{font-size:12.5px;padding:2px 9px;border-radius:99px;background:var(--g);color:var(--ink)}
.open-demo{width:100%;justify-content:center}
.hint-top{margin:0 0 12px;font-size:13.5px}
.qgroup{margin:0 0 6px}.qgroup legend{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--info);font-weight:600;padding:14px 0 4px}
.q{padding:12px 0;border-bottom:1px solid var(--line2)}.qgroup:last-of-type .q:last-child{border-bottom:0}
.q-t{display:flex;gap:10px;align-items:flex-start;font-weight:500;margin-bottom:10px}
.qn{flex:none;display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 4px;border-radius:7px;background:var(--g);color:var(--mut);font-size:12.5px;font-weight:600}
.q.done .qn{background:var(--blue);color:var(--on-blue)}
.scale{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px}
.scale button,.verdict button{font:inherit;font-weight:600;font-size:16px;min-height:44px;border:1px solid var(--field-bd);background:var(--field);color:var(--ink);border-radius:10px;cursor:pointer;padding:0;touch-action:manipulation;transition:background .12s,border-color .12s,color .12s}
.scale button:hover,.verdict button:hover{border-color:var(--blue)}
.scale button.on{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
.q-more{margin-top:6px}
.lnk2{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 2px;color:var(--mut);font:inherit;font-size:13.5px;cursor:pointer}
.lnk2 .ic{width:17px;height:17px}.lnk2:hover,.lnk2.has{color:var(--link)}.lnk2.has span::after{content:" · есть"}
.q-c{margin-top:6px}
.verdict{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:6px}
.verdict button{font-size:15px;min-height:50px}
.verdict button.v-ok.on{background:var(--ok);border-color:var(--ok);color:var(--on-solid)}
.verdict button.v-warn.on{background:var(--warn);border-color:var(--warn);color:var(--on-solid)}
.verdict button.v-bad.on{background:var(--bad);border-color:var(--bad);color:var(--on-solid)}
.savebar{position:sticky;bottom:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;justify-content:flex-end;background:var(--card);margin:8px -22px -20px;padding:12px 22px;border-top:1px solid var(--line2);box-shadow:0 -6px 16px -10px rgba(0,0,0,.18);z-index:2;border-radius:0 0 var(--r) var(--r)}
.progress{margin-right:auto;font-size:13px;font-weight:600}
.save-st{font-size:13px;color:var(--mut)}.save-st.ok{color:var(--ok)}.save-st.bad{color:var(--bad)}
.grid2.eq{grid-template-columns:repeat(2,minmax(0,1fr))}
.toplist{margin:8px 0 0;padding:0;list-style:none}
.toplist li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line2)}.toplist li:last-child{border:0}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl.sum td,.tbl.sum th{padding:8px}.tbl.sum th{white-space:nowrap}.tbl.sum td:first-child{min-width:240px}
.tbl.sum td small{display:inline;margin-left:4px}.tbl.sum tr.grp td{background:var(--g);font-weight:600;color:var(--info);font-size:13px}
.tbl.sum tr.tot td{background:var(--info-bg)}
.comments{list-style:none;margin:8px 0 0;padding:0}.comments li{padding:10px 0;border-bottom:1px solid var(--line2)}.comments li:last-child{border:0}
.c-h{font-size:13px;color:var(--mut)}.c-q{font-size:13.5px;font-weight:600;margin:2px 0}.c-t{white-space:pre-wrap;word-wrap:break-word}
@media (max-width:1100px){.demo-page{grid-template-columns:minmax(0,1fr)}.demo-view{display:none}.grid2.eq{grid-template-columns:minmax(0,1fr)}}
@media (max-width:800px){
  .acts .btn span{display:none}.acts .btn{padding:10px}
  .tbl.cards{display:block;overflow:visible}.tbl.cards thead{display:none}.tbl.cards tbody,.tbl.cards tr{display:block}
  .tbl.cards tr{padding:12px 0;border-bottom:1px solid var(--line2)}.tbl.cards tr:last-child{border:0}
  .tbl.cards tbody tr:hover td{background:none}
  .tbl.cards td{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border:0;text-align:right}
  .tbl.cards td[data-l]::before{content:attr(data-l);color:var(--mut);font-size:13px;text-align:left}
  .tbl.cards td:first-child{display:block;text-align:left;padding-bottom:6px}.tbl.cards td:first-child::before{display:none}
  .tbl.cards td.acts-cell{justify-content:flex-start;gap:8px;padding-top:8px}.tbl.cards td.acts-cell .btn{flex:1;justify-content:center;padding:10px}
  .filters select{max-width:none;flex:1 1 140px}
  .scale{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.scale button{min-height:48px;font-size:17px}
  .card .savebar{margin:8px -16px -16px;padding:8px 16px 10px;gap:2px 10px}.progress{flex-basis:100%;font-size:12.5px}.save-st{flex:1;font-size:12.5px}.savebar .btn{padding:9px 14px}
}
.ds-rework{background:var(--warn-bg);color:var(--warn)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{.side,.top,.theme-t{display:none!important}.app{display:block}body{background:#fff;color:#000}.card{box-shadow:none}}
.grid2>.card+.card,.proj>.card+.card,.grid2>section+section{margin-top:0}
.wide>.btn+.mut{margin-left:8px}
/* ===== Палитра «Графит» (шаг 0, на согласовании; docs/design.md). Включается <html data-palette="graphite">.
   После «да» Артёма значения переносятся в основные :root, атрибут убирается. Имена переменных прежние. ===== */
:root[data-palette=graphite]{
  --page:#f3f3f3;--side:#fafafa;--card:#fff;--field:#fff;--g:#ececec;--g2:#e1e1e1;--line:#d0d0d0;--line2:#e4e4e4;
  --ink:#1a1a1a;--mut:#5a5a5a;--field-bd:#808080;
  --acc:#1f1f1f;--acc-h:#000;--on-acc:#fff;--blue:var(--acc);--blue-h:var(--acc-h);--on-blue:var(--on-acc);--link:var(--ink);
  --ok:#116b2e;--ok-bg:#e5f3e8;--warn:#7a4a00;--warn-bg:#f9eedb;--bad:#b3261e;--bad-bg:#fbeae8;--info:#383838;--info-bg:#ebebeb;--on-solid:#fff;
  --unread:#c8322d;--on-unread:#fff;--top:rgba(250,250,250,.9);--msg:#ececec;--msg-me:#e1e1e1;--row-hl:#f7f7f7;
  --sh:0 0 0 1px var(--line2);--focus:#1a1a1a}
:root[data-palette=graphite][data-theme=dark]{
  --page:#141414;--side:#171717;--card:#1c1c1c;--field:#232323;--g:#262626;--g2:#303030;--line:#3d3d3d;--line2:#2a2a2a;
  --ink:#ececec;--mut:#a6a6a6;--field-bd:#7a7a7a;
  --acc:#ececec;--acc-h:#fff;--on-acc:#141414;
  --ok:#6cd08a;--ok-bg:#15261a;--warn:#e6b85c;--warn-bg:#2c2414;--bad:#f2928a;--bad-bg:#301b19;--info:#cfcfcf;--info-bg:#2b2b2b;--on-solid:#141414;
  --unread:#c8322d;--on-unread:#fff;--top:rgba(23,23,23,.88);--msg:#262626;--msg-me:#313131;--row-hl:#202020;
  --sh:0 0 0 1px var(--line2);--sh-pop:0 20px 60px rgba(0,0,0,.6);--focus:#ececec}
/* ссылки в тексте — цвет текста с подчёркиванием (отличимы без цвета); счётчик непрочитанного — красный */
:root[data-palette=graphite] .content a:not([class]),:root[data-palette=graphite] .modal-body a:not([class]){text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
:root[data-palette=graphite] .content a:not([class]):hover{text-decoration-thickness:2px}
:root[data-palette=graphite] .badge{background:var(--unread);color:var(--on-unread)}
:root[data-palette=graphite] .tabs a{text-decoration:none}
/* «Графит», правки по снимкам (Бруклин 12.11): вкладки не похожи на ссылки; в таблицах название — без подчёркивания, жирнее, подчёркивание при наведении и фокусе */
:root[data-palette=graphite] .content .tabs a,:root[data-palette=graphite] .content .tabs a:hover{text-decoration:none}
:root[data-palette=graphite] .content .tbl a:not([class]){text-decoration:none;font-weight:500}
:root[data-palette=graphite] .content .tbl a:not([class]):hover,:root[data-palette=graphite] .content .tbl a:not([class]):focus-visible{text-decoration:underline;text-underline-offset:2px}
/* телефон: широкая таблица прокручивается вбок, справа тень-подсказка «есть ещё» (только CSS, разметку не меняем) */
@media (max-width:700px){
  .tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;
    background:linear-gradient(to right,var(--card) 30%,transparent) left/40px 100% no-repeat local,linear-gradient(to left,var(--card) 30%,transparent) right/40px 100% no-repeat local,
      radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.35),transparent) left/14px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.35),transparent) right/14px 100% no-repeat scroll}
  .tbl td small{white-space:normal}
}
/* название в шапке меню длинное («Сайты по подписке CRM», решение Артёма 12.11): переносится в две строки, не вылезает за меню */
.brand{flex-wrap:wrap;row-gap:0}.brand b{line-height:1.15;overflow-wrap:anywhere}
/* заготовка шага 1: логотип проекта-заглушка — буква названия на плашке */
.logo-stub{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--g2);color:var(--ink);font-weight:600;font-size:16px;flex:none;text-transform:uppercase}
/* ===== Б6: экраны А шага 0 — заглушки разделов, карточка сотрудника, таблица прав ===== */
/* заглушка раздела: одна строка «что здесь будет», приглушённо, без действий */
.stub{text-align:center;padding:48px 24px;border:1px dashed var(--line);box-shadow:none;background:transparent}
.stub p{margin:0 0 6px;font-size:16px}.stub p.mut{font-size:13.5px;margin:0}
/* карточка сотрудника: подписи слева, значения справа */
.staff-card dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 18px;margin:0 0 18px}
.staff-card dt{color:var(--mut);font-size:13.5px}.staff-card dd{margin:0;overflow-wrap:anywhere}
.staff-card .form{border-top:1px solid var(--line2);padding-top:16px;margin-bottom:12px}
/* таблица прав (роль и исключения): компактные строки, выпадающие списки по ширине содержимого */
.role-grid td{padding:6px 10px;vertical-align:middle}.role-grid td:first-child{font-weight:500;white-space:nowrap}
.role-grid{grid-column:1/-1;table-layout:fixed}.role-grid td:first-child{width:36%}
.role-grid select{width:100%;min-width:0;min-height:34px;padding:5px 6px;font-size:13.5px;text-overflow:ellipsis}
.role-grid tbody tr:hover td{background:var(--row-hl)}
.role-grid.wide{width:100%}
@media (max-width:700px){
  .staff-card dl{grid-template-columns:1fr;gap:2px}.staff-card dd{margin-bottom:8px}
  .role-grid{display:table;table-layout:fixed;white-space:normal;background:none}.role-grid td{padding:6px 4px}.role-grid td:first-child{width:38%;white-space:normal;position:static}.role-grid select{padding:5px 4px}
}
/* таблицы партнёрки (перенесено из встроенного <style>, CSP без unsafe-inline — запрос А, 12.11) */
.ptbl{overflow-x:auto}.ptbl .n{text-align:right;white-space:nowrap}.ptbl td{vertical-align:top}

/* 2FA: настройка входа с кодом (порядок: QR → ключ → поле кода → кнопка). Разметка — docs/design.md «2FA».
   QR всегда на белой подложке с полем: в тёмной теме без неё камера не читает код. */
.totp-setup{display:grid;gap:14px;justify-items:start;margin:4px 0 14px}
.totp-qr{background:#fff;padding:14px;border-radius:var(--r2);border:1px solid var(--line2);line-height:0}
.totp-qr svg{display:block;width:200px;height:200px;min-width:180px;shape-rendering:crispEdges}
.totp-key{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.totp-key code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:15px;letter-spacing:.06em;padding:6px 10px;user-select:all;word-spacing:.2em}
.totp-key .btn.done{color:var(--ok);border-color:var(--ok)}
.totp-open{font-size:14px;color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.totp-hint{color:var(--mut);font-size:13.5px;margin:0}
/* Активные входы: устройство крупно («Chrome на Mac»), под ним адрес и время */
.sess-dev{font-weight:600}
.sess-dev small{font-weight:400}
@media (max-width:800px){.totp-setup{justify-items:center;text-align:center}.totp-key{justify-content:center}}
/* Профиль: карточка, к которой привели (need_email / need2fa) — первой во всю ширину над .grid2, рамка цвета акцента (запрос А 12.11) */
.card-focus{border:2px solid var(--blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--blue) 14%,transparent);margin-bottom:16px;scroll-margin-top:16px}
/* Подсказка «внимание» — янтарная; красный .alert остаётся для ошибок */
.alert.note{background:var(--warn-bg);color:var(--warn);border-left:4px solid var(--warn)}

/* ===== шаг 1: стили утверждённых макетов (gleb/s1-mockups, ui-step1.html; docs/design.md «Шаг 1»). Перенесены как есть,
   кроме макетных .pf/.pf-rest/.mk-cap и карточек .plist — они ниже, в блоке «шаг 1, разметка А». Цвет — только статусы. ===== */
.grow{flex:1;min-width:0}.t-warn{color:var(--warn)}.t-ok{color:var(--ok)}
.screen{scroll-margin-top:80px;padding-top:8px}
.screen+.screen{margin-top:40px;padding-top:32px;border-top:1px solid var(--line)}
.screen-h{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 16px;margin-bottom:16px}
.screen-h h2{font-size:22px}.screen-h small{margin-top:4px;font-size:13.5px}
.tabs-x{display:flex;flex-wrap:nowrap;overflow-x:auto;width:max-content;max-width:100%;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tabs-x::-webkit-scrollbar{display:none}.tabs-x a{flex:none;white-space:nowrap}
/* «Требует внимания» */
.attn{list-style:none;margin:0;padding:0}
.attn li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line2)}.attn li:first-child{border-top:0;padding-top:0}
.attn b{font-weight:500}.attn .btn{flex:none}
.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--mut)}.dot.bad{background:var(--bad)}.dot.warn{background:var(--warn)}.dot.ok{background:var(--ok)}
/* плитки дашборда */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px;align-items:start}
.tiles>.card+.card,.tiles>.col>.card+.card{margin-top:0}.tiles>.col{display:grid;gap:16px;align-content:start}
.span2{grid-column:span 2}
.card-h small{display:inline;margin-left:6px}
.num{font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}
.delta{display:block;margin-top:6px;font-size:13px;font-weight:500;color:var(--mut)}.delta.up{color:var(--ok)}.delta.down{color:var(--bad)}
.kv{margin:14px 0 0;display:grid;gap:0}
.kv div{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:7px 0;border-top:1px solid var(--line2)}
.kv dt{color:var(--mut)}.kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin-top:12px}
.stat{display:block;background:var(--g);border-radius:var(--r2);padding:10px 12px;color:var(--mut);font-size:13px;text-decoration:none!important}
a.stat:hover{background:var(--g2)}
.stat b{display:block;font-size:22px;font-weight:600;color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat.bad b{color:var(--bad)}.stat.warn b{color:var(--warn)}
/* полоса работ «сделано / план» — элемент <progress>, без встроенных стилей */
progress.bar{-webkit-appearance:none;appearance:none;display:block;width:100%;height:6px;border:0;border-radius:99px;background:var(--g2);overflow:hidden}
progress.bar::-webkit-progress-bar{background:var(--g2);border-radius:99px}
progress.bar::-webkit-progress-value{background:var(--mut);border-radius:99px}progress.bar::-moz-progress-bar{background:var(--mut);border-radius:99px}
progress.bar.ok::-webkit-progress-value{background:var(--ok)}progress.bar.ok::-moz-progress-bar{background:var(--ok)}
progress.bar.lag::-webkit-progress-value{background:var(--warn)}progress.bar.lag::-moz-progress-bar{background:var(--warn)}
progress.bar.bad::-webkit-progress-value{background:var(--bad)}progress.bar.bad::-moz-progress-bar{background:var(--bad)}
.meter{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:6px 12px;padding:10px 0;border-top:1px solid var(--line2);font-size:14px}
.meter:first-of-type{border-top:0}.meter progress{grid-column:1/-1}.meter .v{font-variant-numeric:tabular-nums;color:var(--mut)}.meter .v b{color:var(--ink);font-weight:600}
.mbar{display:flex;align-items:center;gap:8px;min-width:130px;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.mbar progress{flex:1;min-width:56px}
/* список проектов: панель группировки + таблица */
.split{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;align-items:start}.split>.card:last-child{padding:16px}
.grp-side{padding:14px 12px}.grp-side select{min-height:36px;padding:6px 10px;font-size:14px;margin-bottom:8px}
.grp-list{list-style:none;margin:0;padding:0}
.grp-list a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;color:var(--ink);text-decoration:none!important}
.grp-list a:hover{background:var(--g)}.grp-list a.on{background:var(--info-bg);font-weight:500}
.stats.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cnt{color:var(--mut);font-size:13px;font-variant-numeric:tabular-nums}.cnt.bad{color:var(--bad);font-weight:600}
.grp-sel{display:none}
.tbl.plist{font-size:14px}.tbl.plist th{padding:8px 8px;white-space:nowrap}.tbl.plist td{padding:10px 8px;vertical-align:middle}.tbl.plist td>small{white-space:nowrap;margin-top:3px}
.tbl.plist .mbar{min-width:112px}.tbl.plist .mbar progress{min-width:48px}
.pn{display:flex;gap:10px;align-items:center;min-width:0}.pn small{white-space:nowrap}.pn .nm{white-space:nowrap}.pn .badge{margin-left:4px}
.nm{color:var(--ink);font-weight:500}.nm:hover,.nm:focus-visible{text-decoration:underline;text-underline-offset:2px}
.filters select.sort-sel{max-width:290px}
/* страница проекта */
.proj-h{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:start}
.logo-stub.lg{width:56px;height:56px;border-radius:14px;font-size:24px}
.proj-t{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.proj-t h2{font-size:22px}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 20px;margin:16px 0 0;padding-top:16px;border-top:1px solid var(--line2)}
.facts dt{color:var(--mut);font-size:12.5px}.facts dd{margin:3px 0 0;font-weight:500;font-variant-numeric:tabular-nums}.facts dd small{display:block;font-weight:400}
.facts .w2{grid-column:span 2}
.qlinks{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.qlinks .ic{width:16px;height:16px}
.need{list-style:none;margin:0;padding:0}
.need li{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line2)}.need li:first-child{border-top:0;padding-top:0}
.days{flex:none;min-width:66px;text-align:center;padding:3px 8px;border-radius:8px;font-size:13px;font-weight:600;background:var(--g2);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.days.warn{background:var(--warn-bg);color:var(--warn)}.days.bad{background:var(--bad-bg);color:var(--bad)}
.feed{list-style:none;margin:0;padding:0}
.feed li{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;padding:9px 0;border-top:1px solid var(--line2);font-size:14px}.feed li:first-child{border-top:0;padding-top:0}
.feed time{color:var(--mut);font-size:13px;font-variant-numeric:tabular-nums}
.wsum{display:flex;flex-wrap:wrap;gap:6px 22px;color:var(--mut);font-size:14px;margin:0 0 14px}.wsum b{color:var(--ink);font-weight:600}
.wsum .err b,.wsum .t-warn b{color:inherit}
.wgrp{margin-top:20px}.wgrp h3{display:flex;justify-content:space-between;gap:10px;font-size:13.5px;color:var(--mut);font-weight:500;padding-bottom:6px;border-bottom:1px solid var(--line)}
.wrow{display:grid;grid-template-columns:128px minmax(0,1fr) 150px 52px 132px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line2);font-size:14px}
.wrow .wd{color:var(--mut);font-variant-numeric:tabular-nums}.wrow .wl{text-align:right;white-space:nowrap}
.msw{display:flex;align-items:center;gap:12px}.msw .btn{width:36px;padding:0;font-size:18px}.msw b{font-weight:600}.msw small{display:block;margin:1px 0 0}
.card-h:has(>.msw){flex-wrap:wrap}
.ex{display:inline-block;padding:1px 9px;border-radius:99px;font-size:12.5px;border:1px solid var(--line);color:var(--ink);white-space:nowrap}.ex.ag{background:var(--g2);border-color:var(--g2)}
/* «Мой день» */
.sub-h{font-size:13px;font-weight:500;color:var(--mut);margin:16px 0 2px}.sub-h:first-child{margin-top:0}.sub-h.err{color:var(--bad)}
.tasks .go{margin-left:auto;flex:none;white-space:nowrap;font-size:13.5px;color:var(--mut);text-decoration:underline;text-underline-offset:2px}.tasks .go:hover{color:var(--ink)}.tasks small{margin-top:1px}
.mp{list-style:none;margin:0;padding:0}
.mp .mbar{min-width:0}
.mp li{display:grid;grid-template-columns:36px minmax(0,1fr) 150px;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line2)}.mp li:first-child{border-top:0;padding-top:0}
@media (max-width:1100px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:800px){
  .tiles{grid-template-columns:minmax(0,1fr)}.span2{grid-column:auto}
  .screen-h h2,.proj-t h2{font-size:20px}
  .proj-h{gap:12px}.logo-stub.lg{width:44px;height:44px;border-radius:12px;font-size:20px}
  .facts .w2{grid-column:1/-1}
  .wrow{display:flex;flex-wrap:wrap;gap:6px 10px}.wrow .wt{flex-basis:100%;order:-1}.wrow .wl{margin-left:auto}
  .mp li{grid-template-columns:36px minmax(0,1fr) 124px}.mp .mbar progress{min-width:36px}
  .feed li{grid-template-columns:64px minmax(0,1fr)}
  .card-h:has(>small){flex-wrap:wrap;justify-content:flex-start;row-gap:2px}.card-h>small{flex-basis:100%;margin:0}
}
.pn small.pm{display:none}
/* пункт меню со счётчиком (неяркий, не путать с красным непрочитанным) */
.nav-cnt{margin-left:auto;min-width:24px;padding:1px 7px;border-radius:99px;background:var(--g2);color:var(--ink);font-size:12px;font-weight:600;text-align:center;font-variant-numeric:tabular-nums}
.nav-open{color:var(--mut);font-size:15px;line-height:1;margin-left:-2px}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--mut)}.legend>span{display:inline-flex;align-items:center;gap:6px}
/* быстрая панель проектов: макет (меню + выдвинутая панель + затемнённая страница) */
.qp{background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;box-shadow:var(--sh-pop);position:relative;z-index:1}
.qp-h{display:flex;align-items:center;gap:10px;padding:16px 10px 12px 16px}.qp-h h2{flex:1}.qp-h .ic{color:var(--mut)}
.qp-s{padding:0 12px 10px}.qp-s input{min-height:38px;padding:7px 11px;font-size:14px}
.qp-body{flex:1;overflow-y:auto;padding:0 8px 8px}
.qp-g{border-top:1px solid var(--line2);padding:4px 0}
.qp-g summary{display:flex;align-items:center;gap:10px;padding:8px;cursor:pointer;list-style:none;font-weight:500;font-size:14px;border-radius:10px}
.qp-g summary::-webkit-details-marker{display:none}.qp-g summary:hover{background:var(--g)}
.qp-g summary::before{content:"";flex:none;border-left:5px solid var(--mut);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s}
.qp-g[open] summary::before{transform:rotate(90deg)}
.ava{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--g2);color:var(--ink);font-size:12.5px;font-weight:600;flex:none}
.qp-list{list-style:none;margin:0;padding:0}
.qp-list a{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:7px 8px 7px 22px;border-radius:10px;color:var(--ink);text-decoration:none!important}
.qp-list a:hover{background:var(--g)}
.qp-list .logo-stub{width:32px;height:32px;border-radius:9px;font-size:14px}
.qp-n{min-width:0}.qp-n b{display:block;font-weight:500;font-size:14px;line-height:1.25}.qp-n progress{margin-top:6px;height:4px}
.qp-v{font-size:12.5px;color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;min-width:36px}
.qp-more{display:inline-block;margin:2px 0 6px 64px;font-size:13px;color:var(--mut);text-decoration:underline;text-underline-offset:2px}.qp-more:hover{color:var(--ink)}
.qp-f{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line2);padding:14px 16px;color:var(--ink);font-weight:500;text-decoration:none!important}.qp-f:hover{background:var(--g)}.qp-f .ic{color:var(--mut)}
.nw{white-space:nowrap}
/* ===== шаг 1, разметка А (src/projects.js, src/view.js cabBanner, app.js .qp-wrap): запросы А 12.11, docs/requests.md строки 14–16 ===== */
/* статусы проекта из кабинета (projectStatus → класс cs-<ключ>): красный — просрочка/отказ, жёлтый — ждём (оплату, запуск, пауза),
   зелёный — идёт продвижение/выкуплен, серый — завершён/архив; «Анкета» — обычная плашка */
.cs-overdue,.cs-refused{background:var(--bad-bg);color:var(--bad)}
.cs-launch,.cs-wait_pay,.cs-pause{background:var(--warn-bg);color:var(--warn)}
.cs-promo,.cs-bought{background:var(--ok-bg);color:var(--ok)}
.cs-done,.cs-archived{background:var(--g2);color:var(--mut)}
/* фильтры-ссылки: выбранный — как выбранный чекбокс-фильтр */
a.chip{color:var(--ink);text-decoration:none!important}
.chip.on{background:var(--info-bg);border-color:var(--info);color:var(--info)}
/* боковая группировка: три способа столбиком, ниже — группы */
.split{grid-template-columns:176px minmax(0,1fr)}
.grp-side{position:sticky;top:80px}
.grp-side .tabs{display:grid;width:100%;margin-bottom:10px}.grp-side .tabs a{padding:6px 10px;font-size:14px}
.grp-list a>span:first-child{min-width:0;overflow-wrap:anywhere}
.grp-sel select{max-width:340px;min-height:38px;padding:7px 11px;font-size:14px}
/* таблица проектов: ширину решает не экран, а место под таблицей (контейнер) — справа от группировки или без неё */
.split>.card:last-child{container-type:inline-size;min-width:0}
.tbl.plist th{white-space:normal;line-height:1.25;vertical-align:bottom}
.tbl.plist .pn>div{min-width:0}.tbl.plist .pn .nm{white-space:normal}
.tbl.plist .pn small.pill{display:inline-block;margin-left:4px;padding:0 8px;font-size:12px;vertical-align:1px}
.tbl.plist td.bad{color:var(--bad)}
.tbl.plist td .pill{white-space:normal;line-height:1.3}
.tbl.plist td>progress.bar{width:100%;min-width:72px;max-width:130px}.tbl.plist td>progress.bar+small{margin-top:4px;white-space:nowrap}
.tbl.plist td[data-l="Работы месяца"]{min-width:96px}
/* узкое место (≈ 1100–1280 px с группировкой): без колонок «Клиент» и «Тариф» — они на странице проекта */
@container (max-width:780px){
  .tbl.plist th:nth-child(2),.tbl.plist th:nth-child(3),.tbl.plist.cards td:nth-child(2),.tbl.plist.cards td:nth-child(3){display:none}
}
/* совсем впритык (≈ 1100 px с группировкой): плотнее ячейки, логотип меньше */
@container (max-width:620px){
  .tbl.plist th,.tbl.plist td{padding-left:5px;padding-right:5px}.tbl.plist td{font-size:13.5px}
  .tbl.plist .pn{gap:8px}.tbl.plist .pn .logo-stub{width:30px;height:30px;font-size:14px;border-radius:8px}
  .tbl.plist td .pill{font-size:12px;padding:2px 8px}.tbl.plist td>progress.bar{min-width:60px}.tbl.plist td[data-l="Работы месяца"]{min-width:72px}
}
/* экран уже 1100 px: группировка — выпадающим списком над таблицей */
@media (max-width:1099px){.split{grid-template-columns:minmax(0,1fr)}.grp-side{display:none}.grp-sel{display:block;margin-bottom:12px}}
@media (max-width:800px){.grp-sel select{max-width:none}
  /* общие правила .tbl/.tbl.cards для телефона (выше в файле) — у списка проектов таблица остаётся таблицей, пока помещается */
  .tbl.plist.cards{display:table;white-space:normal;background:none;overflow:visible}
  .tbl.plist.cards thead{display:table-header-group}.tbl.plist.cards tbody{display:table-row-group}
  .tbl.plist.cards tr{display:table-row;padding:0}.tbl.plist.cards tbody tr:hover td{background:var(--row-hl)}
  .tbl.plist.cards td{display:table-cell;padding:10px 8px;border-bottom:1px solid var(--line2);text-align:left}.tbl.plist.cards tr:last-child td{border-bottom:0}
  .tbl.plist.cards td.r{text-align:right}.tbl.plist.cards td[data-l]::before{display:none}
}
/* мало места (телефон): карточка — (1) логотип, название, статус справа; (2) клиент; (3) оплачено до и полоса работ; (4) ждём и менеджер */
@container (max-width:470px){
  .tbl.plist.cards,.tbl.plist.cards tbody{display:block}.tbl.plist.cards thead{display:none}
  .tbl.plist.cards tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"p s" "c c" "d w" "k m";gap:6px 12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line2)}
  .tbl.plist.cards tr:last-child{border-bottom:0}.tbl.plist.cards tbody tr:hover td{background:none}
  .tbl.plist.cards td,.tbl.plist.cards td:nth-child(2){display:block;padding:0;border:0;text-align:left;font-size:13.5px;min-width:0}
  .tbl.plist.cards td[data-l]::before{display:none}.tbl.plist.cards td.r{text-align:left}
  .tbl.plist.cards td:nth-child(1){grid-area:p}.tbl.plist.cards td:nth-child(4){grid-area:s;align-self:start;justify-self:end}
  .tbl.plist.cards td:nth-child(2){grid-area:c;color:var(--mut);font-size:13px;padding-left:38px}.tbl.plist.cards td:nth-child(3){display:none}
  .tbl.plist.cards .pn{align-items:flex-start}.tbl.plist.cards .pn small.ps{display:none}
  .tbl.plist.cards td:nth-child(4) .pill{white-space:nowrap;font-size:12.5px}
  .tbl.plist.cards td:nth-child(5){grid-area:d;white-space:nowrap}.tbl.plist.cards td:nth-child(6){grid-area:w;justify-self:end;display:flex;align-items:center;gap:8px}
  .tbl.plist.cards td:nth-child(6)>progress.bar{width:80px;min-width:0}.tbl.plist.cards td:nth-child(6)>small{margin:0;font-size:13px}
  .tbl.plist.cards td:nth-child(7){grid-area:k}.tbl.plist.cards td:nth-child(8){grid-area:m;justify-self:end;color:var(--mut);font-size:13px}
  .tbl.plist.cards td:nth-child(5)::before,.tbl.plist.cards td:nth-child(7)::before{display:inline;color:var(--mut);font-size:13px}
  .tbl.plist.cards td:nth-child(5)::before{content:"Оплачено до "}.tbl.plist.cards td:nth-child(7)::before{content:"Ждём: "}
}
/* быстрая панель проектов (app.js кладёт .qp-wrap в body): справа от меню, 380 px, остальное — затемнение, клик по нему закрывает */
.qp-wrap{position:fixed;inset:0 0 0 240px;z-index:45;background:var(--scrim);display:flex;animation:qp-in .15s ease-out}
.qp-wrap>.qp{width:min(380px,100%);height:100%;border-right:1px solid var(--line2)}
.qp-wrap .qp-h .cnt{margin-right:2px}
.qp-wrap .qp-list li[hidden]{display:none}
body:has(>.qp-wrap){overflow:hidden}
body:has(>.qp-wrap) .side nav a[data-qp]{background:var(--info-bg);color:var(--info);font-weight:500}
body:has(>.qp-wrap) .side nav a[data-qp] .ic{color:var(--info)}
@keyframes qp-in{from{opacity:0}to{opacity:1}}
/* телефон: панель на весь экран поверх меню */
@media (max-width:800px){.qp-wrap{left:0;background:var(--side)}.qp-wrap>.qp{width:100%;border:0;box-shadow:none}}
/* ===== шаг 1: закреплённая панель проектов и запросы А 17–19 (gleb/s1-panel-styles, замечание Артёма 12.11) ===== */
/* имя в подвале меню — в одну строку с многоточием */
.side-me a>span{flex:1;min-width:0}.side-me small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* панель: домен или клиент мелко под названием */
.qp-n small.qp-sub{margin-top:1px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* текущий проект в панели: подложка --g2, полоса цвета текста слева, название жирнее (не путать с наведением --g) */
.qp-list li.on>a{background:var(--g2);box-shadow:inset 3px 0 0 var(--ink)}
.qp-list li.on>a:hover{background:var(--g2)}
.qp-list li.on .qp-n b{font-weight:600}.qp-list li.on .logo-stub{background:var(--card)}
.qp-list li.on progress.bar{background:var(--card)}.qp-list li.on progress.bar::-webkit-progress-bar{background:var(--card)}
/* панель открыта в разделе «Проекты» (body.qp-open): уже 1280 px — поверх, страница под ней не прокручивается */
@media (max-width:1279px){body.qp-open{overflow:hidden}}
/* от 1280 px — колонка между меню и страницей: сдвигает содержимое, без затемнения; 320 px, от 1440 — 380 px */
@media (min-width:1280px){
  body.qp-open .app{grid-template-columns:240px 320px minmax(0,1fr)}
  .qp-wrap.qp-pinned{position:sticky;inset:auto;top:0;z-index:auto;height:100vh;background:none;animation:none;min-width:0}
  .qp-wrap.qp-pinned>.qp{width:100%;box-shadow:none;border-right:1px solid var(--line2);z-index:auto}
  body.qp-open .content{padding-left:24px;padding-right:24px}
  /* страница проекта и прочие двухколоночные блоки рядом с панелью — в одну колонку, пока места мало */
  body.qp-open .proj,body.qp-open .grid2{grid-template-columns:minmax(0,1fr)}
  body.qp-open .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* список проектов рядом с панелью: до 1700 px группировка — выпадающим списком, вся ширина под таблицу */
@media (min-width:1280px) and (max-width:1699px){body.qp-open .split{grid-template-columns:minmax(0,1fr)}body.qp-open .grp-side{display:none}body.qp-open .grp-sel{display:block;margin-bottom:12px}}
@media (min-width:1440px){body.qp-open .app{grid-template-columns:240px 380px minmax(0,1fr)}}
@media (min-width:1700px){body.qp-open .proj{grid-template-columns:minmax(0,1fr) 320px}body.qp-open .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* фильтры списка проектов (details.flt): на телефоне свёрнуты — строка-кнопка «Фильтры · N»; от 801 px открыты, строка скрыта */
details.flt>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:9px 14px;margin-bottom:12px;border:1px solid var(--field-bd);border-radius:10px;background:var(--field);color:var(--ink);font-weight:500;cursor:pointer;list-style:none}
details.flt>summary::-webkit-details-marker{display:none}
details.flt>summary::after{content:"";width:7px;height:7px;border-right:1.8px solid var(--mut);border-bottom:1.8px solid var(--mut);transform:rotate(45deg) translate(-2px,-2px);transition:transform .15s}
details.flt[open]>summary::after{transform:rotate(-135deg) translate(-2px,-2px)}
@media (min-width:801px){details.flt>summary{display:none}}
/* таблица проектов: подпись «клиент · сайт · тариф» (.pm) — в карточке на телефоне вместо отдельной строки клиента */
@container (max-width:470px){
  .tbl.plist.cards tr{grid-template-areas:"p s" "d w" "k m"}
  .tbl.plist.cards td:nth-child(2){display:none}
  .tbl.plist .pn small.pm{display:block;white-space:normal;margin-top:2px;font-size:12.5px}
  .tbl.plist.cards td:nth-child(4)>small{display:none}
}
/* ===== шаг 1: страница проекта (А1.3–А1.4, gleb/s1-project-styles) ===== */
/* рядом с закреплённой панелью (1280–1699) места мало: факты шапки — два в ряд, работы месяца и команда — во всю ширину */
@media (min-width:1280px) and (max-width:1699px){
  body.qp-open .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.qp-open .wrow{grid-template-columns:112px minmax(0,1fr) auto 44px auto;gap:10px}
}
/* быстрые кнопки: «+ Метрика» и т. п. (ql-add) — приглушённые, пунктир и цвет --mut: заметно слабее ссылок */
.qlinks .ql-add{box-shadow:none;border:1px dashed var(--field-bd);color:var(--mut);background:transparent;font-weight:400}
.qlinks .ql-add:hover,.qlinks .ql-add:focus-visible{color:var(--ink);border-style:solid;background:var(--g)}
/* вкладки страницы проекта (содержимое идёт после nav.tabs-x): заголовки, таблицы в карточках вровень с текстом */
.tabs-x~.card .card-h>h2+small,.tabs-x~* .card .card-h>h2+small{margin-right:auto}
.tabs-x~.card>h3{margin:20px 0 4px}.tabs-x~.card>h3+p{margin-top:0}
.tabs-x~.card>.tbl td:first-child,.tabs-x~* .card>.tbl td:first-child{padding-left:0}
.tabs-x~.card>.tbl td:last-child,.tabs-x~* .card>.tbl td:last-child{padding-right:0}
.tabs-x~* .card>h2+.tbl{margin-top:6px}.tabs-x~* .card>h2+.facts{margin-top:12px}
.facts dd .plain{margin:0}.facts dd .plain li{padding:1px 0}
p.small{font-size:13px;margin:12px 0 0}
.wgrp:first-of-type{margin-top:12px}
@media (max-width:800px){
  /* быстрые кнопки проекта на телефоне — одной строкой с прокруткой вбок, как вкладки */
  .qlinks{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin-left:-16px;margin-right:-16px;padding:0 16px}
  .qlinks::-webkit-scrollbar{display:none}.qlinks .btn{flex:none}
  .proj-t small{display:inline}
}
@media (max-width:700px){
  /* этапы запуска, списания, расходы: короткие таблицы — без прокрутки вбок, текст переносится */
  .tabs-x~.card>.tbl,.tabs-x~* .card>.tbl{display:table;white-space:normal;background:none}
}
/* ===== шаг 1: главная, «Мой день», поиск, настройка плиток (А1.5, gleb/s1-dash-styles; src/widgets.js) ===== */
/* плитки: крупное число-ссылка — цвет текста; плашки-числа всегда по 3 (c2 — по 2) */
a.num{display:block;color:var(--ink);text-decoration:none}a.num:hover,a.num:focus-visible{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.stats.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.stat{min-width:0;overflow-wrap:break-word}
/* узкая плитка (1280 и рядом): плашки-числа по 2, чтобы подписи («просрочено») не рвались */
.tiles>.card{container-type:inline-size}
@container (max-width:290px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tiles .card>p.mut:last-child{margin-bottom:0}
.screen-h:has(>div>small:only-child){align-items:center}
/* «Мои проекты» в плитке: полоса под названием во всю ширину (в узкой плитке название не сжимается) */
.tiles .mp li{grid-template-columns:36px minmax(0,1fr);row-gap:6px}.tiles .mp .mbar{grid-column:2;min-width:0}
.mp li:not(:has(>.logo-stub)){grid-template-columns:minmax(0,1fr)}.mp li:not(:has(>.logo-stub)) .mbar{grid-column:auto}
/* KPI «Мой день»: три в ряд, если их три */
.kpis:has(>.kpi:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
/* поиск: группа — карточка, число рядом с заголовком, строки с разделителями */
.content h2>small{display:inline;margin-left:6px;font-weight:400}
.search-res{margin:10px 0 0}.search-res li{padding:9px 0;border-top:1px solid var(--line2)}.search-res li:first-child{border-top:0;padding-top:0}
.search-res a{font-weight:500}
/* выбор плиток (главная «Настроить главную» и /settings/dashboard): строка — галочка, название, номер порядка справа; снятая — приглушена */
.cb:has(>input.pos){display:flex!important;align-items:center;gap:8px;min-height:44px;padding:4px 6px 4px 12px;border:1px solid var(--line2);border-radius:10px;font-size:14px}
.cb:has(>input[type=checkbox]:not(:checked)){color:var(--mut)}
.cb>input.pos{width:64px;min-height:34px;padding:5px 8px;margin-left:auto;flex:none;text-align:center;font-size:14px}
.form:has(.cb>input.pos){grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;align-items:stretch}
.form:has(.cb>input.pos)>p.wide{margin:6px 0 0;font-size:13.5px}
.dash-cfg{margin-top:20px}
.dash-cfg>summary{display:inline-flex;align-items:center;gap:8px;color:var(--mut);font-size:14px;font-weight:500;list-style:none;padding:6px 2px}
.dash-cfg>summary::-webkit-details-marker{display:none}
.dash-cfg>summary::before{content:"";width:6px;height:6px;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(-45deg);transition:transform .15s}
.dash-cfg[open]>summary::before{transform:rotate(45deg)}.dash-cfg>summary:hover{color:var(--ink)}
.dash-cfg>form{background:var(--card);border-radius:var(--r);padding:18px 20px;box-shadow:var(--sh);margin-top:8px}
.dash-cfg>form>.wide .mut{font-size:13.5px;margin-left:8px}
@media (max-width:800px){.kpis:has(>.kpi:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.kpis .kpi{padding:12px}
  .stat{padding:8px 10px}.stat b{font-size:20px}.dash-cfg>form{padding:14px}}
.form .cb.wide:has(>input.pos){grid-column:auto}
/* шаг 2: продажи — доска, список, «Воронка по статусам», карточка заявки (docs/design.md п. 10, docs/sales-funnel.md) */
.sales-nav{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-start}.sales-nav .tabs{margin-bottom:12px}
.sales-late a{color:inherit;font-weight:600}
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(156px,1fr));gap:12px;align-items:start}
.bcol{background:var(--g);border-radius:var(--r);padding:10px;min-width:0;border:1px solid transparent;transition:border-color .12s,background-color .12s}
.bcol.over{border-color:var(--focus);background:var(--g2)}
.bcol>header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 8px;padding:2px 4px 10px}
.bcol>header a{color:var(--ink);text-decoration:none}.bcol>header a:hover{text-decoration:underline}
.bcol>header .cnt{color:var(--mut);font-weight:500;font-variant-numeric:tabular-nums}
.bcol>header .bnn{font-size:12.5px;color:var(--warn)}
.bcol-list{display:grid;gap:8px;min-height:40px}
.bcard{background:var(--card);border-radius:var(--r2);padding:10px 11px;box-shadow:var(--sh);display:grid;gap:4px;min-width:0;cursor:grab}
.bcard[draggable=false],.board:not([data-edit]) .bcard{cursor:default}
.bcard.drag{opacity:.5}.bcard.late{box-shadow:0 0 0 1px var(--bad)}
.bcard .nm{font-weight:500;font-size:14px;overflow-wrap:anywhere}.bcard small{color:var(--mut);font-size:12.5px;overflow-wrap:anywhere}
.bmeta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:2px}.bmeta .days{min-width:0;font-size:12px;padding:2px 7px}
.ava.free{color:var(--mut);background:none;box-shadow:inset 0 0 0 1px var(--line)}
.bempty{margin:4px;font-size:13px}.bmore{display:block;font-size:13px;padding:4px}
.bfoot{font-size:13px;margin-top:12px}
.bm{display:none}
.bm-list{list-style:none;margin:0;padding:0}
.bm-list li{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line2)}.bm-list li:first-child{border-top:0;padding-top:0}
.bm-list .nm{font-weight:500}.bm-list small{display:block;color:var(--mut);font-size:12.5px}
.bm-st{margin:0;flex:none}.bm-st select{width:132px;min-height:36px;padding:5px 8px;font-size:13.5px}
@media (max-width:800px){.board,.bfoot{display:none}.bm{display:block}.bm .card-h h2 small{margin-left:4px}}
/* список */
.lfilters input[type=search]{max-width:220px}.ldate{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--mut)}.ldate input{width:auto;min-height:40px}
.lfilters .chips{align-items:center}.lextra{margin:-6px 0 12px;align-items:center}.lextra a{font-size:13.5px}
.lfound{margin:0 0 10px;font-size:13.5px}
.ltbl td small{display:block;color:var(--mut);font-size:12.5px;margin-top:2px}.ltbl td small .days{margin-top:4px}
@media (max-width:700px){
  .ltbl thead{display:none}.ltbl,.ltbl tbody{display:block}
  .ltbl tr{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:2px 10px;padding:10px 0;border-bottom:1px solid var(--line2)}
  .ltbl tr:last-child{border-bottom:0}.ltbl td{display:block;padding:0;border:0;min-width:0;overflow-wrap:anywhere}
  .ltbl tbody tr:hover td,.ltbl tr.late td{background:none}.ltbl tr.late{box-shadow:inset 3px 0 0 var(--bad)}
  .ltbl td:nth-child(1){grid-row:1;grid-column:1}.ltbl td:nth-child(3){grid-row:1;grid-column:2}.ltbl td:nth-child(6){grid-row:1;grid-column:3;text-align:right}
  .ltbl td:nth-child(2){grid-row:2;grid-column:2/-1;font-size:13px;color:var(--mut)}.ltbl td:nth-child(4){grid-row:3;grid-column:2/-1;font-size:14px}
  .ltbl td:nth-child(7){grid-row:4;grid-column:2/-1;font-size:13px}.ltbl td:nth-child(8){grid-row:5;grid-column:2/-1;font-size:13px}.ltbl td:nth-child(5){display:none}
  .ltbl td:nth-child(4) small,.ltbl td:nth-child(2) small{display:inline;margin-left:6px}
  .lfilters select,.lfilters input[type=search]{max-width:none;flex:1 1 140px}
}
/* «Воронка по статусам» */
.fperiod{align-items:center}.fperiod .chips{margin-left:4px}
.ftbl td progress.bar{margin-top:6px;max-width:220px}.ftbl .r a{font-weight:600}
@media (min-width:1101px){.fgrid{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}
.ftbl .r a{text-decoration:underline;text-decoration-color:var(--mut);text-underline-offset:3px}
@media (max-width:700px){.tbl.ftbl{display:table;white-space:normal;overflow:visible}.ftbl .fopt{display:none}.ftbl th,.ftbl td{padding:8px 5px;font-size:13px}.ftbl th{white-space:normal}.ftbl td progress.bar{max-width:90px}.fperiod .chips{margin-left:0}}
/* карточка заявки */
.lead-h h2{margin:8px 0 4px}.lead .card>h2+.form{margin-top:12px}.lead-h>p{margin:0 0 4px}
.lead-t{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.lead-acts{margin:16px 0 4px}.lead-acts form{margin:0}
.lost-box{margin:12px 0 0;padding:12px 14px;border:1px solid var(--line2);border-radius:var(--r2)}.lost-box[open]{border-color:var(--bad)}
.touch-form{margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line2)}
.lead-feed li{grid-template-columns:96px minmax(0,1fr)}.lead-feed .k-cabinet b{color:var(--ok)}.lead-feed .k-dup b,.lead-feed .k-system b{color:var(--mut)}
.lead-links{margin-top:6px}.lead-links dd{text-align:right;overflow-wrap:anywhere}
.lost-form p{margin:0}
.rtbl td{padding:6px}.rtbl input[type=number]{width:64px}.rtbl input[type=checkbox]{width:auto}
@media (max-width:700px){.lead-feed li{grid-template-columns:minmax(0,1fr);gap:2px}.rtbl th:first-child,.rtbl td:first-child{display:none}}
/* шаг 2, доработка 13.11: карточка на доске, боковая панель заявки, компактная карточка (docs/design.md п. 10a) */
.bc-top{display:flex;align-items:flex-start;gap:6px;min-width:0}.bc-top .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.bc-top .ava{width:22px;height:22px;font-size:11px}
.bc-l{font-size:12.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.bc-c{color:var(--ink)}.bc-m{color:var(--mut)}.bc-s{color:var(--ink)}.bc-s.bad{color:var(--bad)}
.bm-list .bc-top .nm{font-weight:500}
.bm-list li>.grow{min-width:0}
body.drawer-on{overflow:hidden}
.drawer-wrap{position:fixed;inset:0;z-index:45;background:rgba(0,0,0,.28)}
.drawer{position:absolute;top:0;right:0;bottom:0;width:min(640px,calc(100vw - 260px));background:var(--card);border-left:1px solid var(--line);box-shadow:var(--sh-pop);display:flex;flex-direction:column}
.drawer-h{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line2);flex:none}
.drawer-h b{flex:1;min-width:0;font-size:15px}.drawer-full{font-size:13.5px;white-space:nowrap}
.drawer-x{background:none;border:0;color:var(--mut);cursor:pointer;padding:6px;border-radius:8px;display:inline-flex;align-items:center;gap:4px;font:500 14px/1 var(--f);order:3}
.drawer-x:hover{color:var(--ink);background:var(--g)}.drawer-x .dx-back{display:none}
.drawer-b{flex:1;overflow:auto;padding:14px 18px 28px;overscroll-behavior:contain}
@media (max-width:800px){
  .drawer-wrap{background:var(--page)}.drawer{width:100%;border:0;box-shadow:none}
  .drawer-x{order:0;color:var(--ink);padding:8px 6px}.drawer-x .dx-back{display:inline}.drawer-x .dx-x{display:none}
  .drawer-b{padding:12px 14px 28px}
}
/* компактная карточка */
.lv-h h2{margin:0 0 2px;font-size:19px}.lv-h p{margin:0;font-size:13px}
.lv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:12px 0 8px;padding:10px 0;border-top:1px solid var(--line2);border-bottom:1px solid var(--line2)}
.lv-who{display:inline-flex;align-items:center;gap:6px;font-size:14px}.lv-who .ava{width:24px;height:24px;font-size:11.5px}
.lv-step{font-size:13.5px;min-width:0;overflow-wrap:anywhere}.lv-step.bad{color:var(--bad)}
.lv-acts{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}.lv-acts form{margin:0}
.lv-reason{margin:4px 0 8px;font-size:14px}
.lv .lost-box{margin:8px 0}
.lv-2{display:grid;grid-template-columns:minmax(0,1fr);gap:4px 24px}
@media (min-width:1100px){.card>.lv .lv-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (min-width:1280px){.lv-panel .lv-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.lv-sec{min-width:0;margin-top:10px}.lv-sec h3{font-size:14px;font-weight:600;margin:0 0 4px}.lv-sec h3 small{font-weight:400;margin-left:4px}
.lv-sec .kv{margin:0}.lv-sec .kv div{padding:6px 0;font-size:13.5px}.lv-sec .kv dd{overflow-wrap:anywhere;max-width:70%}
.lv-sec>h3+form,.lv-sec .kv+h3{margin-top:14px}
.lv-form{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 10px}.lv-form input,.lv-form select{min-height:38px;padding:7px 10px}
.lv-form details.sub{margin:0}.lv-form details summary{font-size:13.5px;color:var(--mut)}
.touch-row{display:flex;gap:6px;margin:6px 0 10px}.touch-row select{width:130px;flex:none;min-height:38px;padding:6px 8px}.touch-row input{min-height:38px;padding:7px 10px}.touch-row .btn{flex:none}
.lv .lead-feed li{grid-template-columns:118px minmax(0,1fr);padding:7px 0;font-size:13.5px}
.feed-more>summary{cursor:pointer;font-size:13.5px;color:var(--mut);padding:6px 0;list-style:none}.feed-more>summary:hover{color:var(--ink)}
.feed-more>summary::-webkit-details-marker{display:none}.feed-more[open]>summary{display:none}
.lv-del{margin-top:14px;font-size:13.5px}.lv-del summary{color:var(--mut)}
.lv-backrow{margin:0 0 10px}.lv-back{font-weight:500}
@media (max-width:700px){.lv-acts{margin-left:0;width:100%}.touch-row{flex-wrap:wrap}.touch-row input{flex:1 1 100%;order:3}.lv .lead-feed li{grid-template-columns:minmax(0,1fr);gap:1px}.lv-sec .kv dd{max-width:62%}}
.lv-sec h3 small{display:inline}.lv .lost-box{padding:6px 12px}.lv .lost-box>summary{font-size:13.5px}
/* шаг 2, доработка 2 (13.11): «Главное», метки тревог, «Работа с заявкой», «Подробности» (docs/design.md п. 10b) */
.alarm{display:inline-flex;align-items:center;gap:4px;padding:2px 8px 2px 6px;border-radius:8px;font-size:12.5px;font-weight:600;line-height:1.5;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.alarm .ic{width:14px;height:14px;stroke-width:2.2}
.alarm.bad{background:var(--bad-bg);color:var(--bad)}.alarm.warn{background:var(--warn-bg);color:var(--warn)}
.bmeta .alarm{font-size:12px;padding:1px 7px 1px 5px}
@media (min-width:1280px){.lv-panel .lv-2{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1100px){.card>.lv .lv-2{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}
.lv-col{min-width:0}
@media (min-width:801px){.drawer{width:min(680px,calc(100vw - 260px))}}
.lv-main{margin-top:12px;padding:14px 16px 12px;background:var(--g);border:1px solid var(--line);border-left:3px solid var(--ink);border-radius:var(--r2)}
.lv-main h3,.lv-work h3{margin:0 0 6px;font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--mut)}
.lv-name{font-size:20px;font-weight:600;line-height:1.25;overflow-wrap:anywhere}.lv-nc{color:var(--mut);font-size:14px;margin-top:2px}
.lv-contact{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-top:10px}.lv-phone{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.lv-cbtn{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.lv-hint{font-size:13px;align-self:center}
.lv-want{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 14px;margin:12px 0 0;padding-top:10px;border-top:1px solid var(--line)}
.lv-want dt{color:var(--mut);font-size:12.5px}.lv-want dd{margin:2px 0 0;font-size:15px;font-weight:500;overflow-wrap:anywhere}
.lv-comment{margin:10px 0 0;font-size:14px;overflow-wrap:anywhere}
.lv-work{margin-top:12px;padding:14px 16px;border:1px solid var(--field-bd);border-radius:var(--r2);background:var(--card)}
.lv-work .lv-form{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 12px}
.lv-quick{display:flex;flex-wrap:wrap;gap:6px;align-self:end}.lv-quick .chip{font:inherit;font-size:13px;background:none;color:var(--ink);padding:5px 10px}
.lv-need{display:flex;align-items:center;gap:6px;margin:0;color:var(--warn);font-size:13.5px;font-weight:500}.lv-need .ic{width:16px;height:16px}
.lv-save{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lv-save .btn{min-width:150px}
.lv-more{margin-top:12px}.lv-more>summary{font-weight:500}.lv-more .kv div{font-size:13px}
@media (max-width:700px){.lv-name{font-size:18px}.lv-phone{font-size:17px}.lv-save .btn{flex:1}.lv-main,.lv-work{padding:12px}}
/* «Данные клиента» */
.lv-contact2{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:6px;font-size:14px}.lv-contact2 b{font-weight:600;overflow-wrap:anywhere}
.lv-cdata{margin-top:10px;padding:12px 16px;border:1px solid var(--line2);border-radius:var(--r2)}
.lv-cdata h3{margin:0;font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--mut)}
.lv-cdata .lv-want{border-top:0;padding-top:0;margin-top:8px}
.cd-edit{margin:8px 0 0}.cd-edit>summary{font-size:13.5px;font-weight:500}
.cd-form{margin-top:10px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 10px}.cd-form input{min-height:38px;padding:7px 10px}
.cd-custom{display:grid;gap:6px}.cd-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:6px}.cd-custom .btn{justify-self:start}
.cd-hint{margin:0;font-size:12.5px}
@media (max-width:700px){.cd-row{grid-template-columns:minmax(0,1fr)}.lv-cdata{padding:12px}}
.bmeta .alarm{white-space:normal;text-align:left}
.lv-when{display:grid;gap:6px;align-content:start}.lv-when label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;font-weight:500}
.lv-work .lv-form{align-items:start}.lv-cdata .cd-edit{margin-bottom:0}
@media (max-width:700px){.cd-row{padding:6px 0;border-top:1px solid var(--line2)}.cd-row:first-of-type{border-top:0}}
/* шаг 2.3: чаты команды (docs/design.md п. 11) */
.badge.unread{background:var(--unread);color:var(--on-unread)}
.side nav a .badge.unread{margin-left:auto;font-size:11.5px;min-width:20px}
.tchats{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}
.tc-side{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:14px 12px;position:sticky;top:80px;max-height:calc(100vh - 100px);overflow:auto}
.tc-side h3{font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--mut);margin:14px 6px 6px}
.tc-list{list-style:none;margin:0;padding:0}
.tc-list li{border-radius:10px}.tc-list li.on{background:var(--g2)}
.tc-list a{display:flex;align-items:center;gap:8px;padding:8px 8px 2px;color:var(--ink);text-decoration:none;font-size:14px;font-weight:500}.tc-list a .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-list small{display:block;padding:0 8px 7px;color:var(--mut);font-size:12px}.tc-list li:hover{background:var(--g)}
.tc-empty{font-size:13px;margin:2px 6px}
.tc-new{margin:0 0 8px}.tc-new>summary{font-weight:500;font-size:14px;padding:4px 6px}.tc-new .form{margin-top:8px}
.tc-direct{display:flex;gap:6px;margin:4px 0}.tc-direct select{min-height:36px;padding:5px 8px;font-size:13.5px}
.tc-pane{min-width:0}.tc-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}.tc-h h2{margin:0 0 2px}
.tc-back{display:none;margin-bottom:8px;font-weight:500}
.tc-manage{margin:0 0 10px}.tc-people{list-style:none;padding:0;margin:10px 0 0}.tc-people li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--line2)}.tc-people form{margin:0}
.tc-who{margin:0 0 8px;font-size:13.5px}
.chat-note{margin:0 0 8px;font-size:13px}
.tchat .msg .who{display:flex;align-items:baseline;gap:6px}.tchat .msg time{margin-left:0}
.msg-del{margin-left:auto;background:none;border:0;color:var(--mut);cursor:pointer;font-size:16px;line-height:1;padding:0 2px;border-radius:6px}.msg-del:hover{color:var(--bad);background:var(--g)}
.msg.gone{opacity:.7}.t.del{font-style:italic;color:var(--mut)}
.tchat .at{font-weight:600}.tchat .file a{overflow-wrap:anywhere}
.chat-at{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px;font-size:13px}.chat-at .chip{font:inherit;font-size:12.5px;background:none;color:var(--ink);padding:3px 9px}
.kpi-chat{text-decoration:none!important}
@media (max-width:800px){
  .tchats{grid-template-columns:minmax(0,1fr)}.tc-side{position:static;max-height:none}
  .tchats.has-c .tc-side{display:none}.tchats:not(.has-c) .tc-pane{display:none}.tc-back{display:inline-block}
  .tchat.chat{height:calc(100vh - 230px)}
}
/* шаг 2.2: чат с клиентом (docs/design.md п. 12) — отличается от «Чата команды»: янтарная шапка и «видит клиент» */
.cc{padding:0;overflow:hidden}
.cc-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;padding:12px 20px;background:var(--warn-bg);color:var(--ink);border-bottom:1px solid var(--line)}
.cc-h b{font-size:15px}.cc-sees{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:99px;border:1px solid var(--warn);color:var(--warn);font-size:12.5px;font-weight:600}
.cc-count{font-size:13.5px}.cc-count b{font-variant-numeric:tabular-nums}
.cc-body{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:420px}
.cc-side{border-right:1px solid var(--line2);padding:12px;min-width:0}
.cc-list{list-style:none;margin:0;padding:0}.cc-list li{border-radius:10px}.cc-list li.on{background:var(--g2)}.cc-list li:hover{background:var(--g)}
.cc-list a{display:grid;gap:3px;padding:9px 10px;color:var(--ink);text-decoration:none}
.cc-list b{font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-k{font-size:12px;color:var(--mut)}.cc-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.cc-meta .days{min-width:0;font-size:12px;padding:2px 7px}
.cc-new{margin:0 0 10px}.cc-new>summary{font-weight:500;font-size:14px}.cc-new .form{margin-top:8px}
.cc-pane{padding:14px 20px 18px;min-width:0;display:flex;flex-direction:column}
.cc-th{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;border-bottom:1px solid var(--line2);padding-bottom:10px;margin-bottom:10px}
.cc-th h3{margin:0 0 2px;font-size:16px}.cc-th p{margin:0;font-size:13px}.cc-th form{margin:0}
.cc-log{max-height:min(56vh,620px);overflow:auto;flex:none;padding:4px 2px 12px}
.cc-log .msg img{max-width:220px}.cc-log .file a{overflow-wrap:anywhere}
.cc-marks{font-size:12px;margin-top:4px}.cc-edit{margin:6px 0 0}.cc-why{display:block;margin-top:4px;font-size:12px}
.cc-staff .who{color:var(--ink)}
.cc-reply{display:grid;gap:8px;border-top:1px solid var(--line2);padding-top:10px}
.cc-tpl{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:500}.cc-tpl select{max-width:260px;min-height:36px;padding:5px 8px}
.cc-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end}.cc-row label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500}
.cc-row select{min-height:38px;padding:6px 8px}.cc-row .btn{margin-left:auto}.cc-files input{max-width:240px}
.cc-warn{margin:0;font-size:12.5px}.cc-ro{margin:10px 0 0}
.cc-lead{margin:0 0 10px;font-size:13.5px}.cc-sla{margin:12px 0}.cc-sla input{width:80px}
.cc-tpls{margin-top:12px}.cc-tplf{margin-top:10px;padding:10px 0;border-top:1px solid var(--line2)}.cc-tplf.off{opacity:.6}
.cc-queue td small{display:block;color:var(--mut);font-size:12.5px}
@media (max-width:800px){
  .cc-h{padding:10px 14px}.cc-body{grid-template-columns:minmax(0,1fr)}.cc-side{border-right:0}
  .cc-body.has-t .cc-side{display:none}.cc-body:not(.has-t) .cc-pane{display:none}.cc-pane{padding:12px 14px}.cc-pane .tc-back{display:inline-block}
  .cc-row .btn{margin-left:0;flex:1}.cc-files input{max-width:100%}
}
/* доработка чатов (замечание Артёма 13.11, docs/design.md п. 13): участники, «Сотрудники в диалоге», заметки */
.tc-acts{display:flex;gap:8px;flex-wrap:wrap;flex:none}
.tc-newbtn{width:100%;margin-bottom:10px}
.tc-members h3{font-size:14px;margin:12px 0 6px}.tc-members h3:first-child{margin-top:0}
.tc-people{list-style:none;margin:0;padding:0}.tc-people li{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--line2)}.tc-people li:first-child{border-top:0}.tc-people form{margin:0}
.tc-rename{display:flex;gap:6px;margin:10px 0 0}.tc-rename input{min-height:36px;padding:6px 10px}
.tc-inline{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r2)}
.tc-create .tc-checks{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;max-height:46vh;overflow:auto}
.pp-q{margin:0 0 8px;min-height:38px}.pp-list{list-style:none;margin:0;padding:0;max-height:46vh;overflow:auto}
.pp-list li{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line2)}.pp-list li:first-child{border-top:0}
.pp-list .grow{min-width:0}.pp-list small{display:block;color:var(--mut);font-size:12.5px}.pp-list form{margin:0;display:flex;gap:6px;align-items:center}
.pp-note{font-size:12.5px;margin:6px 0 0}
.modal-box.wide{max-width:520px}.modal-wide{max-height:calc(100vh - 120px);overflow:auto;padding-right:4px}
.msg-sys{align-self:center;font-size:12.5px;color:var(--mut);background:var(--g);padding:3px 10px;border-radius:99px;text-align:center;max-width:90%}
.cc-note{align-self:stretch;max-width:100%;background:var(--warn-bg);border:1px dashed var(--warn);border-radius:12px}
.cc-note .who{color:var(--ink)}.cc-only{display:inline-block;margin-left:6px;padding:0 7px;border-radius:99px;border:1px solid var(--warn);color:var(--warn);font-size:11.5px;font-weight:600;line-height:1.6}
.cc-noteform{display:grid;gap:6px;margin-top:10px;padding:10px 12px;background:var(--warn-bg);border-radius:var(--r2)}
.cc-noteform label{display:flex;flex-direction:column;gap:6px;font-size:13.5px;font-weight:500}.cc-noteform .btn{justify-self:start}
.cc-members small{display:block;font-size:12.5px}.cc-members .tc-people li{flex-wrap:wrap}
.pp-cr{font-size:12.5px;font-weight:400;white-space:nowrap}.cc-one{grid-template-columns:minmax(0,1fr)}.cc-mine li{padding:6px 0}
@media (max-width:700px){.pp-list li{flex-wrap:wrap}.pp-list form{width:100%;justify-content:flex-end}}
.cc-noteform .cc-only{align-self:flex-start;margin-left:0}
/* ===== плотный режим (замечание Артёма 13.11: «крупновато»; docs/design.md п. 14) =====
   Все размеры плотного режима — здесь: поменять плотность = поменять эти переменные. Применяется к .dense:
   панель и полная карточка заявки (.lv), чат с клиентом (.cc), чаты команды (.tchats, .tchat). */
:root{
  --d-fs:14px;      /* основной текст */
  --d-fs-s:12px;    /* подписи, мета, метки */
  --d-fs-h:18px;    /* имя и телефон в «Главном» */
  --d-fs-t:17px;    /* заголовок карточки (имя в шапке) */
  --d-field:36px;   /* высота полей и select */
  --d-btn:32px;     /* высота кнопок */
  --d-btn-s:28px;   /* малые кнопки и «таблетки» */
  --d-pad:14px;     /* внутренний отступ блоков */
  --d-gap:10px;     /* промежуток между блоками и полями */
  --d-touch:36px;   /* минимальная высота касания на телефоне */
}
.dense{font-size:var(--d-fs);line-height:1.4}
.dense input:not([type=checkbox]):not([type=radio]):not([type=file]),.dense select{min-height:var(--d-field);height:var(--d-field);padding:5px 10px;font-size:var(--d-fs);border-radius:9px}
.dense textarea{min-height:var(--d-field);padding:7px 10px;font-size:var(--d-fs);border-radius:9px}
.dense input[type=file]{font-size:var(--d-fs-s);min-height:0;height:auto}
.dense .btn{min-height:var(--d-btn);padding:5px 13px;font-size:13.5px}
.dense .btn-sm{min-height:var(--d-btn);padding:4px 11px;font-size:13px}
.dense .chip{padding:3px 10px;font-size:var(--d-fs-s)}
.dense .form{gap:var(--d-gap) 12px}
.dense .form label,.dense .cc-row label,.dense .cc-noteform label{font-size:var(--d-fs-s);gap:4px}
.dense legend{font-size:var(--d-fs-s)}
.dense details.sub{margin-bottom:var(--d-gap)}.dense details.sub>summary{font-size:13px}
.dense .days,.dense .pill,.dense .alarm{font-size:var(--d-fs-s)}
.dense .kv div{padding:5px 0;font-size:13px}
.dense .msg{padding:6px 10px;border-radius:14px 14px 14px 4px}.dense .msg.me{border-radius:14px 14px 4px 14px}
.dense .msg .t{font-size:var(--d-fs);line-height:1.4}.dense .msg .who{font-size:var(--d-fs-s)}.dense .msg time{font-size:11px}
.dense .chat-log{gap:7px}.dense .day,.dense .msg-sys{font-size:11.5px}
/* карточка заявки */
.lv.dense{container-type:inline-size}
.dense .lv-h h2{font-size:var(--d-fs-t);margin:0 0 2px}.dense .lv-h p{font-size:var(--d-fs-s)}
.dense .lv-bar{gap:6px 8px;margin:var(--d-gap) 0 6px;padding:7px 0;flex-wrap:wrap}
.dense .lv-who{font-size:13px}.dense .lv-who .ava{width:22px;height:22px;font-size:11px}
.dense .lv-acts{gap:5px;margin-left:auto}
.dense .lv-acts .btn-sm{min-height:var(--d-btn);padding:3px 10px;font-size:12.5px}
.dense .lv-main,.dense .lv-work,.dense .lv-cdata{padding:var(--d-pad);margin-top:var(--d-gap)}
.dense .lv-main h3,.dense .lv-work h3,.dense .lv-cdata h3{font-size:11.5px;margin-bottom:4px}
.dense .lv-name{font-size:var(--d-fs-h)}.dense .lv-nc{font-size:13px}
.dense .lv-contact{margin-top:6px}.dense .lv-phone{font-size:var(--d-fs-h)}
.dense .lv-cbtn{margin-top:6px;gap:5px}
.dense .lv-contact2{font-size:13px;margin-top:4px}
.dense .lv-want{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px 12px;margin-top:var(--d-gap);padding-top:8px}
.dense .lv-want dt{font-size:var(--d-fs-s)}.dense .lv-want dd{font-size:var(--d-fs);margin-top:1px}
.dense .lv-comment{font-size:13px;margin-top:8px}
.dense .lv-form{grid-template-columns:minmax(0,1fr);gap:var(--d-gap) 12px}
.dense .lv-when label{display:block;font-size:var(--d-fs-s);font-weight:500;margin-bottom:4px}
.dense .lv-when-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.dense .lv-when-row input{flex:1 1 150px;min-width:0}
.dense .lv-quick{display:flex;flex-wrap:nowrap;gap:4px}.dense .lv-quick[hidden]{display:none}
.dense .lv-quick .chip{min-height:24px;padding:2px 8px;font-size:11.5px;white-space:nowrap;border-radius:99px}
.dense .lv-need{font-size:12.5px}.dense .lv-save .btn{min-width:130px}
.dense .lv-sec{margin-top:var(--d-gap)}.dense .lv-sec h3{font-size:13px;margin-bottom:2px}
.dense .touch-row{margin:4px 0 8px}.dense .touch-row select{width:118px}
.dense .lead-feed li{grid-template-columns:104px minmax(0,1fr);padding:5px 0;font-size:13px}
.dense .lost-box{padding:5px 10px;margin:6px 0}
.dense .cc-noteform{padding:8px 10px;margin-top:8px}
@container (min-width:700px){.dense .lv-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.drawer-b{padding:12px 16px 24px}
@media (min-width:801px){.drawer{width:min(780px,calc(100vw - 260px))}}
/* чат с клиентом */
.cc.dense .cc-h{padding:9px 16px}.cc.dense .cc-h b{font-size:14px}.cc.dense .cc-sees{font-size:11.5px;padding:1px 8px}.cc.dense .cc-count{font-size:13px}
.cc.dense .cc-side{padding:10px}.cc.dense .cc-list a{padding:7px 8px;gap:2px}.cc.dense .cc-list b{font-size:13.5px}.cc.dense .cc-k{font-size:11.5px}
.cc.dense .cc-pane{padding:var(--d-pad) 16px}.cc.dense .cc-th{padding-bottom:8px;margin-bottom:8px}.cc.dense .cc-th h3{font-size:15px}.cc.dense .cc-th p{font-size:var(--d-fs-s)}
.cc.dense .cc-marks{font-size:11.5px}.cc.dense .cc-reply{gap:6px;padding-top:8px}
.cc.dense .cc-reply textarea{min-height:60px}
.cc.dense .cc-row{gap:6px 10px;align-items:flex-end;flex-wrap:wrap}
.cc.dense .cc-row label{flex-direction:column;gap:3px}
.cc.dense .cc-tpl{flex-direction:column!important;align-items:stretch}.cc.dense .cc-tpl select{max-width:200px}
.cc.dense .cc-files input{max-width:210px}.cc.dense .cc-row .btn{margin-left:auto}
.cc.dense .cc-warn{font-size:11.5px}
/* чаты команды */
.tchats.dense .tc-side{padding:10px}.tchats.dense .tc-side h3{font-size:11.5px;margin:10px 6px 4px}
.tchats.dense .tc-list a{padding:6px 8px 1px;font-size:13.5px}.tchats.dense .tc-list small{font-size:11.5px;padding-bottom:5px}
.tchats.dense .tc-h{margin-bottom:6px}.tchats.dense .tc-h h2{font-size:16px}
.tchat.dense .chat-form{gap:6px;padding-top:8px}.tchat.dense .chat-form textarea{min-height:var(--d-field);max-height:140px}
.tchat.dense .chat-form .btn{min-height:var(--d-field);padding:5px 12px}.tchat.dense .chat-at{margin-top:6px}.tchat.dense .chat-at .chip{padding:2px 8px;font-size:11.5px}
/* телефон: плотнее, но касание не меньше --d-touch */
@media (max-width:800px){
  .dense .btn,.dense .btn-sm,.dense .lv-acts .btn-sm{min-height:var(--d-touch)}
  .dense .lv-quick .chip,.dense .chip{min-height:var(--d-touch)}
  .dense .lv-quick{flex-wrap:wrap}.dense .lv-when-row input{flex-basis:100%}
  .cc.dense .cc-tpl select,.cc.dense .cc-files input{max-width:100%}.cc.dense .cc-row label{flex:1 1 140px}
  .dense .lv-acts{margin-left:0}
}
.dense .lv-when-row input{flex:1 1 130px}
.dense .lv-cdata details.sub{margin-bottom:0}
.dense .lead-feed li{grid-template-columns:118px minmax(0,1fr)}.dense .lead-feed time{white-space:nowrap}
/* «Контент» → Telegram и MAX (src/social.js) */
.sm-empty h2{margin:0 0 6px}.steps{margin:14px 0 0;padding-left:22px;display:grid;gap:10px;line-height:1.5;max-width:860px}
.steps code,.sm-empty code{background:var(--g);padding:1px 6px;border-radius:6px;font-size:.92em}
.sm-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.sm-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sm-img{display:flex;align-items:center;gap:12px;margin-top:6px;font-weight:400}.sm-img img{width:96px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line2)}
.sm-add{margin-top:14px;grid-template-columns:minmax(0,1fr) auto}
.sm-posts{list-style:none;margin:0;padding:0}.sm-posts li{padding:12px 0;border-top:1px solid var(--line2);display:grid;gap:6px}.sm-posts li:first-child{border-top:0;padding-top:4px}
.sm-p-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.sm-p-t{white-space:pre-line;overflow-wrap:anywhere;line-height:1.45}
.sm-p-f{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}.sm-p-a{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.sm-p-e{font-size:13.5px}
.sm-chart{margin:14px 0 12px}.sm-chart small{display:block;margin-bottom:6px}
.sm-bars{display:block;width:100%;height:90px;fill:var(--info);opacity:.85}
.sm-bars rect:hover{opacity:.6}
@media (max-width:1100px){.sm-grid{grid-template-columns:minmax(0,1fr)}.sm-grid>section:last-child{order:-1}}
@media (max-width:600px){.sm-add{grid-template-columns:minmax(0,1fr)}.sm-acts .btn{flex:1 1 100%}}
.sm-topics-row td{border-top:0;padding-top:0}.sm-topics-box{margin:0}.sm-topics-box summary{font-size:13.5px;color:var(--mut)}
.sm-topics{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:2px}.sm-topics li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--line2)}
.sm-topic-add{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto}.sm-topic-add small{font-weight:400}
.form label[hidden]{display:none}
.sm-chs{border:1px solid var(--line2);border-radius:var(--r2);padding:10px 12px 8px;margin:0;display:grid;gap:8px;min-width:0}.sm-chs legend{font-size:13.5px;font-weight:500;padding:0 4px}
.sm-chg{display:grid;gap:4px}.sm-chg>small{font-weight:500;letter-spacing:.03em;text-transform:uppercase;font-size:11.5px}
.sm-chrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}.sm-chrow label{font-size:14px}.sm-chrow label small{display:inline}
.sm-ch-th{width:auto;max-width:100%;min-width:180px}.sm-chrow:not(:has(input:checked)) .sm-ch-th{display:none}
.sm-cnt{display:inline;font-variant-numeric:tabular-nums}.sm-cnt.over{color:var(--bad);font-weight:600}textarea.over{border-color:var(--bad)}
.sm-p-chs{list-style:none;margin:0;padding:0;display:grid;gap:4px}.sm-posts .sm-p-chs li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:0;border:0;font-size:13.5px}.sm-p-chs li small.err{flex-basis:100%}
/* предпросмотр поста: пузырь канала в стиле Telegram / MAX, светлая и тёмная тема CRM */
.sm-pv-wrap{display:grid;gap:8px;border-top:1px solid var(--line2);padding-top:12px}.sm-pv-wrap[hidden]{display:none}
.sm-pv-h{display:flex;align-items:center;justify-content:space-between;gap:8px}.sm-pv-sw{display:inline-flex;gap:6px}.sm-pv-sw .btn.on{background:var(--info-bg);color:var(--info);border-color:var(--info)}
.sm-pv{--pv-bg:#dfe7ee;--pv-b:#fff;--pv-ink:#000;--pv-mut:#8a9aa9;--pv-acc:#3390ec;--pv-btn:rgba(48,72,96,.55);--pv-btn-ink:#fff;border-radius:var(--r2);padding:14px 12px;background:var(--pv-bg);font-size:14.5px;line-height:1.38}
.sm-pv-max{--pv-bg:#eef0f4;--pv-b:#fff;--pv-ink:#16171a;--pv-mut:#8b8e98;--pv-acc:#5b5bf0;--pv-btn:#eef0ff;--pv-btn-ink:#4646d8}
:root[data-theme=dark] .sm-pv{--pv-bg:#0e1621;--pv-b:#182533;--pv-ink:#f5f5f5;--pv-mut:#6d8299;--pv-acc:#6ab3f3;--pv-btn:rgba(255,255,255,.12);--pv-btn-ink:#fff}
:root[data-theme=dark] .sm-pv-max{--pv-bg:#141417;--pv-b:#232328;--pv-ink:#f2f2f5;--pv-mut:#8c8c96;--pv-acc:#8f8fff;--pv-btn:#2e2e45;--pv-btn-ink:#c9c9ff}
.sm-pv-0{margin:6px 4px}.sm-pv-topic{font-size:12.5px;color:var(--pv-mut);margin:0 0 8px 46px}
.sm-pv-row{display:flex;align-items:flex-end;gap:8px}.sm-pv-col{display:grid;gap:4px;max-width:min(420px,100%);min-width:0;flex:0 1 420px}
.sm-pv-ava{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--pv-acc);color:#fff;font-weight:600;font-size:16px}
.sm-pv-b{background:var(--pv-b);color:var(--pv-ink);border-radius:14px 14px 14px 4px;overflow:hidden;box-shadow:0 1px 1px rgba(0,0,0,.12);display:grid}
.sm-pv-max .sm-pv-b{border-radius:16px}
.sm-pv-name{font-weight:600;color:var(--pv-acc);padding:8px 12px 0;font-size:14px}.sm-pv-name small{display:inline;color:var(--pv-mut);font-weight:400;margin-left:4px}
.sm-pv-img{display:block;width:100%;max-height:320px;object-fit:cover;margin-top:6px}
.sm-pv-t{padding:6px 12px 0;white-space:pre-wrap;overflow-wrap:anywhere}.sm-pv-t a{color:var(--pv-acc)}
.sm-pv-over{background:var(--bad-bg);color:var(--bad);border-radius:3px}
.sm-pv-time{justify-self:end;font-size:11.5px;color:var(--pv-mut);padding:2px 10px 6px}
.sm-pv-btn{display:block;text-align:center;padding:9px 12px;border-radius:10px;background:var(--pv-btn);color:var(--pv-btn-ink);font-weight:500;font-size:14px}
.sm-pv-kb{margin:4px 0 0 46px;max-width:min(420px,calc(100% - 46px))}.sm-pv-max .sm-pv-btn{margin:8px 10px 0}.sm-pv-btn.bad{outline:2px dashed var(--bad);outline-offset:-2px}
.sm-pv-e{margin:8px 0 0;font-size:13px}
@media (max-width:600px){.sm-topic-add{grid-template-columns:minmax(0,1fr)}}
.sm-n{font-variant-numeric:tabular-nums}.lnk.sm-l{display:inline;padding:4px 6px;font:inherit;font-size:13.5px;color:var(--link)}.lnk.sm-l.err{color:var(--bad)}
/* приглашения и роли (13.11) */
.link-notice .link-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0}.link-notice code.sel{word-break:break-all;user-select:all}
.setup-hi{margin:0 0 4px;line-height:1.5}
.role-grid td small{display:block;font-size:12px;color:var(--mut);font-weight:400;max-width:520px}.role-grid tr.exc-on td{background:var(--warn-bg)}
.inv-form{grid-template-columns:minmax(0,160px) 1fr;align-items:end}.role-copy{display:inline-flex;gap:8px;align-items:center;margin-left:8px}.role-copy input{width:220px}
@media (max-width:600px){.inv-form{grid-template-columns:minmax(0,1fr)}.role-copy{display:flex;margin:8px 0 0}.role-copy input{width:auto;flex:1;min-width:0}.role-copy .btn{white-space:nowrap;flex:none}}
/* «Регламенты»: список, документ с оглавлением, рисунки с подписями */
.regl-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.regl-list{list-style:none;margin:0;padding:0}.regl-list li{display:grid;gap:3px;padding:12px 0;border-top:1px solid var(--line2)}.regl-list li:first-child{border-top:0;padding-top:2px}.regl-list b{font-size:16px}
.regl-wrap{display:grid;grid-template-columns:240px minmax(0,1fr);gap:20px;align-items:start}.regl-wrap.no-toc{grid-template-columns:minmax(0,1fr)}
.regl-toc{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto;background:var(--card);border:1px solid var(--line2);border-radius:var(--r2);padding:12px 14px;font-size:13.5px}
.regl-toc ol{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:1px}.regl-toc li.t3{padding-left:12px;font-size:13px}.regl-toc a{display:block;padding:4px 8px;border-radius:8px;color:var(--ink);text-decoration:none!important}.regl-toc a:hover{background:var(--g);color:var(--ink)}.regl-toc a.on{background:var(--info-bg);color:var(--info);font-weight:500}
.regl{max-width:980px;line-height:1.6;font-size:15.5px}.regl h2{font-size:21px;margin:30px 0 10px;padding-top:6px;scroll-margin-top:80px}.regl h3{font-size:17px;margin:22px 0 8px;scroll-margin-top:80px}.regl h4{margin:16px 0 6px}
.regl>h2:first-child{margin-top:0}.regl p{margin:0 0 12px}.regl ul,.regl ol{margin:0 0 14px;padding-left:24px;display:grid;gap:5px}
.regl figure{margin:16px 0 22px}.regl figure img{display:block;max-width:100%;height:auto;border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh)}
.regl figcaption{font-size:13.5px;color:var(--mut);margin-top:8px;line-height:1.45}.regl img{max-width:100%}
.regl blockquote{margin:0 0 14px;padding:10px 14px;border-left:4px solid var(--info);background:var(--info-bg);border-radius:0 10px 10px 0}.regl blockquote p:last-child{margin:0}
.regl pre{background:var(--g);padding:10px 12px;border-radius:10px;overflow:auto}.regl-tw{overflow-x:auto;margin:0 0 14px}.regl hr{border:0;border-top:1px solid var(--line2);margin:24px 0}
.regl-go{margin:24px 0 8px}.regl-upd{font-size:12.5px;margin-top:20px}
.regl-files{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px}.regl-files li{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:10px;align-items:center}.regl-files img{width:96px;height:60px;object-fit:cover;border-radius:6px;border:1px solid var(--line2)}
.regl-files code{word-break:break-all;font-size:12px}textarea.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13.5px;line-height:1.5}
@media (max-width:1000px){.regl-wrap{grid-template-columns:minmax(0,1fr)}.regl-toc{position:static;max-height:none}.regl-grid{grid-template-columns:minmax(0,1fr)}}
.regl-ptitle{display:none}.regl figure img[src*="mobile"]{max-width:min(380px,100%)}
@media print{.side,.top,.regl-go,.regl-upd,.modal{display:none!important}.app,.regl-wrap{display:block}.main{margin:0}.content{padding:0}.regl-toc{position:static;max-height:none;border:0;padding:0 0 12px;font-size:12px}.regl-toc ol{columns:2}.regl{max-width:none;border:0;box-shadow:none;padding:0;font-size:12.5px}.regl-ptitle{display:block;font-size:24px;margin:0 0 12px}.regl figure{break-inside:avoid}.regl h2,.regl h3{break-after:avoid}.regl figure img{box-shadow:none}}
.exc-card .role-grid td:first-child{min-width:260px}.exc-card .role-grid select{min-width:130px}
.role-grid td{white-space:normal}.exc-card .role-grid td:first-child{width:46%}
.role-grid td small{white-space:normal!important;overflow-wrap:anywhere}
/* ===== «Финансы» (шаг 3, docs/finance.md). Тёмная «Графит» основная: цвет только у статусов, суммы табличными цифрами ===== */
.fin-tabs{margin-bottom:12px}
.fin-period{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 16px}
.fin-period input,.fin-period select{width:auto;min-height:36px;padding:6px 10px;font-size:14px}
.fin-period .cb{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--mut)}.fin-period .cb input{min-height:0}
.fin-plabel{font-size:14px}
.seg{display:inline-flex;gap:2px;background:var(--g2);border-radius:10px;padding:3px;flex-wrap:wrap}
.seg a{padding:6px 12px;border-radius:8px;color:var(--mut);font-size:14px;font-weight:500;text-decoration:none!important;white-space:nowrap}
.seg a:hover{color:var(--ink)}.seg a.on{background:var(--card);color:var(--ink)}.seg .cnt{margin-left:4px}
.fin-subtabs{margin:0 0 14px}
.fin-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px;align-items:start}
.fin-cards>.card+.card{margin-top:0}
.fin-card h2{font-size:15px;font-weight:600;margin:0 0 8px}.fin-card h2 small{font-weight:400}
.fin-n{color:var(--ink);font-variant-numeric:tabular-nums;text-decoration:none!important;font-weight:500}
.fin-n:hover,.fin-n:focus-visible{text-decoration:underline!important;text-underline-offset:2px}
.fin-n.big{display:block;font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.15}
.fin-n.err{color:var(--bad)}
.fin-hint{font-size:12px;line-height:1.4;margin:10px 0 0}
.fin-kpi b{font-size:22px;font-variant-numeric:tabular-nums}.fin-sub{font-size:12px;margin-top:4px}
.fin-tbl td,.fin-wide td,.fin-debt td{font-variant-numeric:tabular-nums}
.tbl tfoot td{border-top:1px solid var(--line);border-bottom:0;font-weight:600}
.tbl tr.tot td{background:var(--g)}
.fin-wide{font-size:14px}.fin-wide th,.fin-wide td{padding:8px 7px}
.fin-act{display:inline-block}.fin-act>summary{list-style:none;cursor:pointer}.fin-act>summary::-webkit-details-marker{display:none}
.fin-act[open]{display:block;width:100%;margin-bottom:8px}.fin-act .form{margin-top:10px;padding:12px;background:var(--g);border-radius:var(--r2)}
.acts-cell{white-space:nowrap}.acts-cell .btn+.btn,.acts-cell details+.btn{margin-left:6px}
/* график: две серии нейтральными тонами, легенда всегда, подсказка на столбце, таблица ниже */
.fin-chart{margin:4px 0 10px}.fin-chart svg{display:block;width:100%;height:auto;max-height:240px}
.fin-chart .bar-a{fill:var(--mut)}.fin-chart .bar-b{fill:var(--ink)}.fin-chart rect:hover{opacity:.8}
.fin-chart .base{stroke:var(--line);stroke-width:1}.fin-chart .ax{fill:var(--mut);font-size:11px}
.legend{display:flex;gap:16px;font-size:13px;color:var(--mut);margin-bottom:6px}.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px}.sw.a{background:var(--mut)}.sw.b{background:var(--ink)}
/* календарь платежей */
.fin-cal{list-style:none;margin:0;padding:0}
.fin-cal li{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;padding:10px 0;border-top:1px solid var(--line2)}.fin-cal li:first-child{border-top:0;padding-top:0}
.fin-cal .d{color:var(--mut);font-size:13px;padding-top:2px}
.fin-cal .row{display:flex;justify-content:space-between;gap:10px;font-size:14px;padding:2px 0}
.fin-cal .row b{font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.fin-cal .row.in b{color:var(--ok)}.fin-cal .row.warn b,.fin-cal .row.warn a{color:var(--warn)}
@media (max-width:1100px){.fin-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){
  .fin-cards{grid-template-columns:minmax(0,1fr)}
  .fin-period{gap:6px}.fin-period .seg{width:100%}.fin-period .seg a{flex:1;text-align:center;padding:6px 4px}
  .fin-period input[type=month],.fin-period select,.fin-period input[type=date]{flex:1 1 140px}
  .fin-tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}.fin-tabs a{white-space:nowrap}
  .fin-subtabs{display:flex;flex-wrap:nowrap;overflow-x:auto;max-width:100%}
  .fin-cal li{grid-template-columns:minmax(0,1fr);gap:4px}
  .acts-cell{white-space:normal}.tbl.cards td.acts-cell{flex-wrap:wrap}
  .tbl.cards tfoot{display:block}.tbl.cards tfoot tr{display:block;padding:12px 0}.tbl.cards tfoot td{display:flex;justify-content:space-between;border:0;padding:3px 0}
  .tbl.cards tfoot td[data-l]::before{content:attr(data-l);color:var(--mut);font-size:13px}.tbl.cards tfoot td:empty{display:none}
  .fin .tbl.cards td{flex-wrap:wrap}.fin .tbl.cards td>small{flex-basis:100%;text-align:right;margin-top:0}.fin .tbl.cards td:first-child>small{text-align:left}
}
.fin-card .kv dd,.fin .kv dd{white-space:nowrap}
/* регистрация по ссылке (perms.md п. 7.9) */
.join .hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.join small{color:var(--mut);font-weight:400}
.signup-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:end;padding:12px 0;border-top:1px solid var(--line2)}.signup-list li:first-child{border-top:0}
.signup-list .grow small{display:block}.signup-ph{width:44px;height:44px;border-radius:50%;object-fit:cover;float:left;margin-right:10px}
.signup-ok{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:0}.signup-ok label{margin:0}
@media (max-width:700px){.signup-list li{grid-template-columns:minmax(0,1fr)}}
/* ---------- шаг 5 «Контент»: календарь публикаций, клиенты по тарифу, цепочка (src/content-plan.js) ---------- */
.ps-plan{background:var(--info-bg);color:var(--info)}.ps-mute{background:var(--g2);color:var(--mut)}
.cal-kpis{margin-bottom:16px}
.cal-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cal-h h2{margin:0;min-width:150px;text-align:center;font-size:18px}
.cal-f{display:flex;gap:10px 14px;flex-wrap:wrap;align-items:end;margin:12px 0}.cal-f label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--mut);min-width:0}.cal-f select{max-width:320px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:8px}
.cal-w{display:contents}.cal-w span{font-size:12px;color:var(--mut);padding:0 6px}
.cal-d{min-height:108px;border:1px solid var(--line2);border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:4px;min-width:0;background:var(--card)}
.cal-d.out{border-color:transparent;background:transparent}.cal-d.past{background:var(--g)}.cal-d.today{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.cal-n{display:flex;align-items:baseline;gap:6px;font-size:13px}.cal-n b{font-weight:600}.cal-n small{color:var(--mut);font-size:11px}.cal-n .cal-c{margin-left:auto;display:none}
.cal-e{display:flex;flex-direction:column;gap:1px;padding:4px 6px;border-radius:6px;font-size:12px;line-height:1.25;text-decoration:none;color:inherit;min-width:0;background:var(--info-bg)}
.cal-e b{font-weight:600;font-size:11px}.cal-e span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.cal-e.ps-published{background:var(--ok-bg)}.cal-e.ps-published b{color:var(--ok)}.cal-e.ps-failed{background:var(--bad-bg)}.cal-e.ps-failed b{color:var(--bad)}
.cal-e.ps-review{background:var(--warn-bg)}.cal-e.ps-review b{color:var(--warn)}.cal-e.ps-mute{background:var(--g2)}.cal-e.ps-mute b{color:var(--mut)}.cal-e.ps-plan b{color:var(--info)}
.cal-e.own{border-left:3px solid var(--ink)}.cal-e:hover{filter:brightness(.97)}
.cal-more summary{font-size:12px;color:var(--mut);cursor:pointer}.cal-more[open]{display:flex;flex-direction:column;gap:4px}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:14px 0 6px}.cal-legend small{flex-basis:100%}
.chain{display:inline-flex;flex-wrap:wrap;gap:2px 4px;align-items:center;font-size:12px;color:var(--mut)}.chain i{font-style:normal;opacity:.6}
.chain .ok{color:var(--ok)}.chain .on{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.cp-tbl td small{display:block;color:var(--mut)}.cp-tbl td small.err{color:var(--bad)}.cp-tbl progress.bar{margin-top:6px;max-width:160px}
.tabs-sm a{padding:4px 10px;font-size:13px}
@media (max-width:800px){
  .cal{grid-template-columns:minmax(0,1fr);gap:8px}.cal-w,.cal-d.out,.cal-d.none{display:none}
  .cal-d{min-height:0;padding:10px}.cal-n{font-size:14px}.cal-n .cal-c{display:inline}
  .cal-e{flex-direction:row;gap:8px;align-items:baseline;font-size:13px;padding:6px 8px}.cal-e b{font-size:12px;flex:none}
  .cal-h h2{min-width:0;flex:1}.cal-f select{max-width:none;width:100%}.cal-f label{flex:1 1 100%}
}
/* ---------- шаг 4: регламенты (прочитал, версии) и команда (доступы, отпуск, загрузка) ---------- */
.regl-read{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-top:18px;padding-top:14px;border-top:1px solid var(--line2)}
.regl-ver{margin:10px 0 0}.regl-who{margin-top:10px}.regl-who p{margin:6px 0}
.regl-wt{display:inline-block;margin-left:6px;font-size:12px;padding:1px 8px;border:1px solid var(--line);border-radius:99px;color:var(--mut);text-decoration:none;white-space:nowrap}.regl-wt:hover{color:var(--ink)}
.regl-set{border:1px solid var(--line2);border-radius:12px;padding:10px 14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.regl-set legend{font-size:13px;color:var(--mut);padding:0 4px}
.regl-list .pill{font-size:12px;padding:1px 8px;vertical-align:1px}
.acc-list{list-style:none;margin:0;padding:0}.acc-list li{display:flex;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--line2)}.acc-list li:first-child{border-top:0}
.acc-list li.off{opacity:.6}.acc-list small{display:block;color:var(--mut)}.acc-list .grow{min-width:0;flex:1}
.fire-cl{border:1px solid var(--line2);border-radius:12px;padding:10px 14px}.fire-cl legend{font-size:13px;color:var(--mut);padding:0 4px}.fire-cl .cb{display:flex;gap:8px;align-items:center;margin:6px 0}
.team-load small{display:block;color:var(--mut)}.team-load small .err{color:var(--bad)}
@media (max-width:800px){.regl-set{grid-template-columns:minmax(0,1fr)}.acc-list li{flex-wrap:wrap}}
@media (max-width:700px){.exc-card .role-grid td:first-child{min-width:0}.exc-card .role-grid select{min-width:0}} /* карточка сотрудника на телефоне: исключения прав без прокрутки вбок */
/* ===== «Чаты»: вид мессенджера (вкладки «Команда» и «Клиенты», docs/chats.md «Вид раздела»).
   Слева список: поиск, кнопки, разделы, строки с аватаром, названием, превью, временем и счётчиком. Справа чат на всю высоту:
   шапка, лента, поле ввода внизу; без выбранного чата — пустой экран с кнопками. Телефон: список и чат — отдельные экраны. */
.msgr{display:grid;grid-template-columns:340px minmax(0,1fr);height:calc(100dvh - 170px);min-height:500px;background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.m-side{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line2)}
.m-top{display:grid;gap:10px;padding:14px 14px 10px;border-bottom:1px solid var(--line2)}
.m-search{position:relative;display:block}.m-search .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--mut);pointer-events:none}
.msgr .m-search input[type=search]{padding-left:38px!important;height:38px;min-height:38px;border-radius:10px;width:100%}
.m-row{display:flex;gap:8px;align-items:center}.m-row .m-search{flex:1;min-width:0}.m-ibtn{flex:none;width:38px;min-width:38px;height:38px;padding:0!important}
.m-btns{display:flex;gap:8px;flex-wrap:wrap}.m-btns .btn{flex:1 1 0;white-space:nowrap}
.m-act .ic{width:17px;height:17px}.btn.on{background:var(--g2);color:var(--ink)}
.m-chips{display:flex;flex-wrap:wrap;gap:6px}.m-chips::-webkit-scrollbar{display:none}.m-chips .chip{flex:none;white-space:nowrap}.msgr.dense .m-chips .chip{padding:4px 11px;font-size:12.5px;min-height:28px}
.m-scroll{flex:1;min-height:0;overflow:auto;padding:4px 8px 12px;position:relative}
.m-sec{margin-top:10px}.m-sec h3{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink);margin:6px 8px 4px;letter-spacing:0}
.m-sec h3 span{font-weight:500;color:var(--mut);font-size:12px}
.m-list{list-style:none;margin:0;padding:0}
.mrow>a,.m-link{display:flex;align-items:center;gap:11px;width:100%;padding:8px;border-radius:12px;color:var(--ink);text-decoration:none!important;background:none;border:0;font:inherit;text-align:left;cursor:pointer}
.mrow>a:hover,.m-link:hover{background:var(--g)}.mrow.on>a{background:var(--g2)}
.mrow form{margin:0}
.mav{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--g2);color:var(--ink);font-size:14.5px;font-weight:600;flex:none;letter-spacing:.02em}
.mav .ic{width:20px;height:20px}.mav-all{background:var(--acc,var(--ink));color:var(--on-acc,var(--card))}
.mav-project,.mav-client{border-radius:12px}
.mrow.on .mav:not(.mav-all){background:var(--line)}
.m-main{display:grid;gap:2px;min-width:0;flex:1}
.m-l1,.m-l2{display:flex;align-items:center;gap:6px;min-width:0}
.m-l1 b{font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.m-l1 time{margin-left:auto;font-size:12px;color:var(--mut);white-space:nowrap;flex:none;padding-left:6px}
.mrow.new .m-l1 time{color:var(--ink);font-weight:600}
.m-pin{display:inline-flex;color:var(--mut)}.m-pin .ic{width:14px;height:14px}
.m-pv{font-size:13px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1;display:flex;align-items:center;gap:6px}
.mrow.new .m-pv{color:var(--ink)}
.m-pvt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.m-pv .days,.m-pv .pill{flex:none;min-width:0;font-size:11.5px;padding:1px 7px}
.m-l2 .badge{flex:none;margin-left:auto;font-size:11.5px;min-width:20px;padding:1px 6px}
.mrow.late .mav{box-shadow:0 0 0 2px var(--bad)}
.m-closed .mrow{opacity:.75}
.m-sempty{margin:2px 8px 6px;font-size:13px;color:var(--mut)}.m-note{margin:12px 8px 0;font-size:12.5px;color:var(--mut)}
.m-pane{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}
.m-head{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line2);min-height:66px;flex:none}
.m-ttl{min-width:0;flex:1}.m-ttl h2{font-size:16px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-ttl small{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-head .tc-acts{flex:none}
.m-back{display:none;align-items:center;gap:2px;color:var(--ink);font-weight:500;text-decoration:none!important;padding:6px 8px 6px 2px;margin-left:-4px;border-radius:10px;flex:none}.m-back:hover{background:var(--g)}
.m-back .ic{width:20px;height:20px}
.m-pane>.chat{flex:1;min-height:0;height:auto;padding:0}
.m-pane .chat-log{padding:16px 18px;background:var(--page);gap:8px}
.m-pane .msg{background:var(--card);box-shadow:0 0 0 1px var(--line2);max-width:min(78%,640px)}.m-pane .msg.me{background:var(--msg-me);box-shadow:none}
.m-pane .day{align-self:center;font-size:12px;color:var(--mut);background:var(--card);padding:2px 10px;border-radius:99px;box-shadow:0 0 0 1px var(--line2)}
.m-pane .chat-form{padding:10px 14px;border-top:1px solid var(--line2);background:var(--card)}
.m-pane .chat-form textarea{flex:1;border-radius:20px;padding:9px 14px;resize:none}
.m-pane .chat-form .btn{border-radius:50%;width:40px;min-width:40px;padding:0;min-height:40px}
.m-pane .att-name{padding:0 18px}.m-pane .att-name:empty{display:none}
.m-pane .chat-at{padding:0 14px 10px;margin-top:0;background:var(--card);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.m-pane .chat-at>*{flex:none}.m-pane .chat-ro{padding:10px 18px;margin:0;border-top:1px solid var(--line2)}
.m-pad{padding:16px 18px;overflow:auto;min-height:0;flex:1}
.m-pad h3{font-size:14px;margin:14px 0 6px}.m-pad h3:first-child{margin-top:0}
.m-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px 24px;gap:10px}
.m-empty-ic{display:grid;place-items:center;width:76px;height:76px;border-radius:50%;background:var(--g2);color:var(--ink);margin-bottom:6px}.m-empty-ic .ic{width:34px;height:34px;stroke-width:1.5}
.m-empty h2{font-size:20px;margin:0}.m-empty p{margin:0;max-width:440px;color:var(--mut);font-size:14px}
.m-empty-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:8px}
.m-empty-acts .ic{width:17px;height:17px}
/* новый общий чат: участники строками с аватаром и галочкой */
.m-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px;margin-top:8px;max-height:46vh;overflow:auto}
.m-pick{display:flex!important;flex-direction:row!important;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line2);border-radius:12px;cursor:pointer;font-weight:400!important}
.m-pick:hover{background:var(--g)}.m-pick:has(input:checked){border-color:var(--info);background:var(--info-bg)}
.m-pick input{width:auto;margin:0}.m-pick .mav{width:32px;height:32px;font-size:12.5px}.m-pick small{display:block}
.m-formacts{display:flex;gap:8px}
/* окна «Написать коллеге», «Участники»: строки с аватаром */
.pp-list .mav,.tc-people .mav{width:34px;height:34px;font-size:13px}
.tc-people li{gap:10px}
/* «Клиенты»: ветка внутри мессенджера */
.cc-in{display:flex;flex-direction:column;flex:1;min-height:0}
.cc-in .cc-th{display:flex;align-items:center;gap:12px;padding:12px 18px;margin:0;border-bottom:1px solid var(--line2);flex:none}
.cc-in .cc-ttl{flex:1;min-width:0}.cc-in .cc-th h3{font-size:16px;margin:0}.cc-in .cc-th p{margin:2px 0 0}
.cc-in .cc-proj{font-size:12.5px}.cc-in .cc-sees{vertical-align:2px;margin-left:6px}
.cc-in .tc-inline{margin:10px 18px}
.cc-in .cc-log{flex:1;max-height:none;min-height:120px;padding:16px 18px;background:var(--page);gap:8px}
.cc-in .cc-log .msg.cc-client{background:var(--card);box-shadow:0 0 0 1px var(--line2)}
.cc-in .cc-reply{padding:10px 18px;border-top:1px solid var(--line2);flex:none}
.cc-in .cc-ro{padding:10px 18px;margin:0;border-top:1px solid var(--line2)}
.cc-in>.alert{margin:12px 18px}
.cc-in .cc-noteform{margin:0 18px 12px}
.cc-notebox{flex:none;padding:0 18px 10px}.cc-notebox>summary{cursor:pointer;font-size:13px;font-weight:500;color:var(--mut);padding:4px 0}
.cc-notebox[open]>summary{margin-bottom:6px}.cc-notebox .cc-noteform{margin:0}.cc-notebox .cc-noteform label>.cc-only{display:none}
.ccm .m-pad .cc-tplf:first-of-type{border-top:0}
@media (max-width:1100px) and (min-width:801px){.msgr{grid-template-columns:290px minmax(0,1fr)}.m-btns .btn span{font-size:12.5px}}
@media (max-width:800px){
  .msgr{grid-template-columns:minmax(0,1fr);height:calc(100dvh - 142px);min-height:420px;border-radius:14px}
  .msgr.has-c .m-side{display:none}.msgr:not(.has-c) .m-pane{display:none}.m-side{border-right:0}
  .content:has(.msgr.has-c)>.tabs{display:none}.msgr.has-c{height:calc(100dvh - 92px)}
  .m-back{display:inline-flex}.m-back span{display:none}
  .m-head{padding:8px 10px;gap:8px;min-height:58px}.m-head .mav{width:36px;height:36px;font-size:13px}
  .m-head .tc-acts .btn span{display:none}.m-head .tc-acts .btn{padding:0;width:var(--d-touch);min-width:var(--d-touch)}
  .m-pane .chat-log,.cc-in .cc-log{padding:12px 10px}.m-pane .msg{max-width:88%}
  .m-pane .chat-form{padding:8px 10px}.cc-in .cc-th{padding:8px 10px;gap:8px}.cc-in .cc-th>.mav{display:none}
  .cc-in .cc-reply,.cc-notebox{padding-left:10px;padding-right:10px}.cc-in .cc-th .tc-acts .btn{font-size:12px}
  .m-top{padding:12px 10px 8px}.m-scroll{padding:2px 4px 10px}
  .mrow>a,.m-link{min-height:60px}
  .m-empty h2{font-size:18px}.m-pad{padding:12px}
  .m-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -10px;padding:0 10px}
  /* клиент на телефоне: ветка листается целиком (шапка, переписка, ответ), без вложенной прокрутки */
  .ccm.has-c{height:auto;min-height:0;overflow:visible}.ccm .m-pane,.ccm .cc-in{display:block}
  .cc-in .cc-th{flex-wrap:wrap}.cc-in .cc-ttl{flex:1 1 0}.cc-in .cc-th .tc-acts{width:100%;justify-content:flex-start}
  .cc-in .cc-log{max-height:none;overflow:visible}
}
.pp-list li[hidden],.m-pick[hidden],.m-sec[hidden],.mrow[hidden],.tc-checks [hidden]{display:none!important}
@media (max-width:700px){.pp-list li:not(:has(.pp-cr)){flex-wrap:nowrap}.pp-list li:not(:has(.pp-cr)) form{width:auto}}
.tc-create.m-pad{align-content:start}
.msgr.searching .m-note{display:none}
/* упоминания: подсказка «@» над полем ввода, полоса имён участников одной строкой с прокруткой */
.tchat .chat-form{position:relative}
.at-pop{position:absolute;left:0;right:0;bottom:calc(100% + 6px);z-index:6;list-style:none;margin:0;padding:6px;background:var(--card);border-radius:14px;box-shadow:var(--sh-pop),0 0 0 1px var(--line);max-height:300px;overflow:auto}
.at-pop[hidden]{display:none}
.at-pop li{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:10px;cursor:pointer;min-height:44px}
.at-pop li:hover,.at-pop li.on{background:var(--g2)}
.at-pop .mav{width:32px;height:32px;font-size:12.5px}.at-pop .grow{min-width:0}.at-pop b{font-weight:600;font-size:14px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.at-pop small{font-size:12px}
.tchat .chat-at{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.tchat .chat-at>*{flex:none}
.msg b.at{font-weight:600;color:var(--ink);background:var(--g2);padding:0 4px;border-radius:5px}
.at-pop{right:auto;left:40px;width:min(360px,calc(100% - 50px))}.at-pop li.on .mav,.at-pop li:hover .mav{background:var(--line)}
@media (max-width:800px){.at-pop{left:6px;width:calc(100% - 12px)}}

/* ---------- профиль сотрудника: аватар, фото с кадрированием, темы (src/profile.js, docs/team.md «Профиль») ---------- */
.uav{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;flex:none;object-fit:cover;background:var(--g2);color:var(--ink);font-size:14px;font-weight:600;letter-spacing:.02em}
.uav-s{width:32px;height:32px;font-size:12px}.uav-l{width:96px;height:96px;font-size:30px}.uav-xl{width:128px;height:128px;font-size:40px}
.side-me .uav{width:28px;height:28px;font-size:11px}
.tm-who{display:flex;gap:12px;align-items:flex-start}.tm-txt{min-width:0}.tm-txt small{display:block}
.tm-search{display:flex;gap:8px;align-items:center;margin:0 0 12px;flex-wrap:wrap}.tm-search input{flex:1;min-width:200px}
.tm-found{margin:-4px 0 10px}
.tchips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.tchip{display:inline-block;padding:2px 9px;border-radius:99px;background:var(--g);border:1px solid var(--line2);color:var(--ink);font-size:12.5px;line-height:1.5}
.tchip.on{background:var(--info-bg);border-color:var(--info);color:var(--info)}.tchip.more{color:var(--mut)}
.pf-head{display:flex;gap:16px;align-items:center;margin-bottom:14px}.pf-head h2{margin:0}.pf-pos{margin:2px 0 0;color:var(--mut)}
.pf-dl dd{overflow-wrap:anywhere}.pf-about{white-space:pre-line}
.pf-duties{margin:0;padding-left:18px}.pf-duties li{margin:2px 0}
.pf-links{display:flex;gap:14px;flex-wrap:wrap;font-size:13.5px}
.pf-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start}
.pf-photo{display:grid;gap:10px;justify-items:start}.pf-photo p{margin:0;font-size:12.5px}.pf-photo form{margin:0}
.pf-pick{position:relative;overflow:hidden;cursor:pointer}.pf-pick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.pf-pick:focus-within{outline:2px solid var(--focus);outline-offset:2px}
.pf-crop{display:grid;gap:10px;width:100%}.pf-crop[hidden],.pf-photo-form[hidden]{display:none}
.pf-form{align-items:start}
.pf-crop-frame{position:relative;width:min(220px,100%);aspect-ratio:1;overflow:hidden;border-radius:var(--r2);background:var(--g);touch-action:none;cursor:grab;box-shadow:inset 0 0 0 1px var(--line)}
.pf-crop-frame:active{cursor:grabbing}
.pf-crop-frame img{position:absolute;left:0;top:0;max-width:none;user-select:none;-webkit-user-drag:none;transform-origin:0 0}
.pf-crop-frame::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.35);pointer-events:none}
.pf-zoom{display:grid;gap:4px;font-size:13px;width:min(220px,100%)}.pf-zoom input{width:100%}
.pf-crop.only-err>:not([data-crop-err]):not(.sm-acts),.pf-crop.only-err [data-crop-save]{display:none}
.pf-crop [data-crop-err]{color:var(--bad)}
.staff-card h3{margin:18px 0 8px}
@media (max-width:800px){.pf-grid{grid-template-columns:minmax(0,1fr)}.pf-photo{justify-items:center;text-align:center}.pf-crop{justify-items:center}.pf-head .uav-l{width:72px;height:72px;font-size:24px}}
.at-pop img.mav,img.mav{object-fit:cover;padding:0}
.ppl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;margin:0;padding:0}
.ppl-row a{padding:10px;border-radius:var(--r2);color:var(--ink);text-decoration:none;border:1px solid var(--line2)}.ppl-row a:hover{background:var(--g)}
.ppl-card .sm-acts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
/* меню «⋯» в шапке чата */
.m-menu{position:relative}.m-menu>summary{list-style:none;cursor:pointer;width:34px;min-width:34px;padding:0!important}.m-menu>summary::-webkit-details-marker{display:none}
.m-menu-list{position:absolute;right:0;top:calc(100% + 6px);z-index:7;min-width:220px;padding:6px;background:var(--card);border-radius:12px;box-shadow:var(--sh-pop),0 0 0 1px var(--line);display:grid}
.m-menu-list form{margin:0}
.m-mi{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:9px;border:0;background:none;color:var(--ink);font:inherit;font-size:14px;cursor:pointer;text-decoration:none!important;min-height:40px}
.m-mi:hover,.m-mi:focus-visible{background:var(--g2)}.m-mi.bad{color:var(--bad)}
@media (max-width:800px){.m-menu>summary{width:var(--d-touch);min-width:var(--d-touch)}}
/* шаг 6 «Серверы и домены» (docs/infra.md) */
.site-block dl.kv+dl.kv{margin-top:12px;padding-top:12px;border-top:1px solid var(--line2)}
.disk-cats{margin:8px 0 12px}
.disk-cats .meter progress{grid-column:1/-1;width:100%}
/* «Вне проекта» (docs/infra.md п. 9): флажки, массовое действие, пометка строк — только у Артёма */
.priv-bar{margin:0 0 10px}.priv-bar .chip small{color:var(--mut);margin-left:2px}
th.sel,td.sel{width:34px;text-align:center}th.sel input,td.sel input{width:18px;height:18px;margin:0;cursor:pointer}
tr.priv td{background:var(--g)}
.priv-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end;margin:10px 0 4px}.priv-acts button:disabled{opacity:.5;cursor:default}
.card-h form.inline{margin-left:8px}
.card-h form.inline button{white-space:nowrap}
@media (max-width:700px){.tbl.cards td.sel{width:auto;text-align:right}th.sel{display:none}.priv-acts{justify-content:stretch}.priv-acts button{flex:1}.card-h:has(form.inline){flex-wrap:wrap;gap:8px}.card-h form.inline{margin-left:0}}
td form.inline input{min-width:0;width:9em;max-width:100%}
@media (max-width:640px){td form.inline{flex-wrap:wrap}td form.inline input{width:100%}}
/* Шаг 6 «Отчёты клиенту»: вкладка проекта и свод (src/reports-routes.js) */
.rep-list .rep-m{align-items:center;gap:10px}.rep-list .rep-m.on{background:var(--g);margin:0 -10px;padding-left:10px;padding-right:10px;border-radius:var(--r2)}
.rep-m a.grow{color:inherit;text-decoration:none;display:flex;flex-direction:column}.rep-m a.grow small,.rep-m .grow small{color:var(--mut);font-size:12.5px}
.rep-st{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right}.rep-st small{color:var(--mut);font-size:12px}
.rep-b{padding:12px 0;border-top:1px solid var(--line2)}.rep-b:first-child{border-top:0;padding-top:0}.rep-b h3{font-size:14px;font-weight:600;margin:0 0 6px}.rep-b p{margin:0}
.rep-ol{margin:0;padding-left:22px;display:grid;gap:3px}.rep-big{font-size:16px}.rep-t td{padding:5px 8px}.rep-note{margin-top:12px;font-size:13px}
.rep-form{margin-top:14px}.rep-form textarea[readonly]{background:var(--g);color:var(--mut)}.rep-chk ul,.card .alert ul{margin:6px 0 0;padding-left:20px}.rep-chk{font-size:13.5px;color:var(--warn)}
.rep-acts{display:flex;gap:8px;flex-wrap:wrap}.rep-links{margin:10px 0 0;font-size:13.5px}.rep-kv dd small{margin-left:4px}
.rep-mon{display:flex;align-items:center;gap:10px}.rep-mon b{min-width:130px;text-align:center;font-weight:600}
.rep-g{margin:18px 0 6px;font-size:15px;font-weight:600}.rep-g small{font-weight:400;font-size:12.5px;display:block;margin-top:2px}
.rep-sum td small{display:block;color:var(--mut);font-size:12px}.rep-sum td .pill{margin-top:3px}
@media (max-width:640px){.rep-mon b{min-width:0}.rep-acts .btn{flex:1}}
.rep-filt{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin:0 0 12px}.rep-filt label{display:flex;flex-direction:column;gap:4px;font-size:13px;min-width:0}
@media (max-width:640px){.rep-filt label{flex:1 1 140px}.rep-filt select{width:100%}}
/* шаг 6 «Агенты» (src/agents-routes.js): карточки реестра, полоса расхода недели, график 4 недель, «Вернуть агенту» раскрывающейся формой */
.ag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-bottom:16px}
.ag-grid>.card{margin:0}.ag-card .card-h{align-items:flex-start}.ag-card .card-h small{margin-top:2px}
.ag-z{margin:4px 0 2px;font-size:14px}.ag-u{margin-top:12px}.ag-u small{margin-top:6px}
.ag-ul{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:14px}.ag-ul b{font-size:17px;font-variant-numeric:tabular-nums}
.stats.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.ag-n{margin-top:12px}.ag-n+small{margin-top:6px}
.ag-n .stat{padding:8px 10px;font-size:12.5px}.ag-n .stat b{font-size:19px}
.ag-ch{display:block;width:100%;height:auto;margin:14px 0 4px}
.ag-ch polyline{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linejoin:round}
.ag-ch line{stroke-width:1.5;stroke-dasharray:6 6}.ag-ch line.l85{stroke:var(--warn)}.ag-ch line.l95{stroke:var(--bad)}
.ag-ch text{font-size:13px;fill:var(--mut);font-family:var(--f)}
.tbl.ag-t{margin-top:12px}.tbl.ag-t td,.tbl.ag-t th{padding:7px 8px;font-size:14px}
.ag-det{margin-top:12px}.ag-det>summary{cursor:pointer;color:var(--link);font-size:14px}
.ag-ret{margin-top:6px}.ag-ret>summary{cursor:pointer;list-style:none;color:var(--link);font-size:13.5px;white-space:nowrap}.ag-ret>summary::-webkit-details-marker{display:none}
.ag-ret[open]>summary{color:var(--mut)}.ag-ret-f{margin-top:8px;grid-template-columns:minmax(0,1fr);min-width:220px}
.ag-ret-f textarea{width:100%}
.wrow:has(+.wrow-ret){border-bottom:0;padding-bottom:2px}.wrow-ret{display:flex;justify-content:flex-end;padding:0 0 10px;border-bottom:1px solid var(--line2)}.wrow-ret .ag-ret{margin:0;text-align:right}.wrow-ret .ag-ret-f{width:min(100%,420px);text-align:left;margin-left:auto}
@media (max-width:640px){.tbl.ag-t td,.tbl.ag-t th{padding:6px 4px;font-size:13px}.ag-grid{grid-template-columns:minmax(0,1fr)}.ag-ret-f{min-width:0}.tbl.cards td.acts-cell .ag-ret{width:100%}}

/* ---------- колокольчик и «Уведомления» (docs/notify.md п. 9) ---------- */
.bell{position:relative;display:inline-grid;place-items:center;padding:8px;border-radius:10px;color:var(--mut);flex:none;text-decoration:none}
.bell:hover,.bell[aria-expanded=true],.bell.on{color:var(--ink);background:var(--g)}
.bell-n{position:absolute;top:0;right:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--unread);color:var(--on-unread);font-size:11px;font-weight:600;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--page)}
.bell-n[hidden]{display:none}
.bell-pop{position:fixed;top:60px;right:20px;z-index:45;width:min(400px,calc(100vw - 24px));max-height:min(560px,calc(100vh - 80px));display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--sh-pop);overflow:hidden}
.bp-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px 10px;border-bottom:1px solid var(--line2)}
.bp-h .lnk{padding:4px 8px;font-size:13.5px;color:var(--link)}
.bp-list{list-style:none;margin:0;padding:4px 0;overflow-y:auto}
.bp-list a{display:flex;gap:10px;align-items:flex-start;padding:9px 14px;color:var(--ink);text-decoration:none}
.bp-list a:hover,.bp-list a:focus-visible{background:var(--g)}
.bp-list b{display:block;font-weight:400;line-height:1.35}.bp-list li.unread b{font-weight:600}
.bp-list small{display:block;color:var(--mut);font-size:12.5px;margin-top:2px}
.bp-empty{padding:18px 14px;color:var(--mut);margin:0}
.bp-foot{display:block;padding:11px 14px;border-top:1px solid var(--line2);text-align:center;font-size:14px}
.nt-ic{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--g);color:var(--mut);flex:none}
.nt-ic .ic{width:18px;height:18px}
.nt-ic.t-sales,.nt-ic.t-clients{background:var(--info-bg);color:var(--info)}
.nt-ic.t-money,.nt-ic.t-infra,.nt-ic.t-system{background:var(--warn-bg);color:var(--warn)}
.nt-ic.t-work,.nt-ic.t-projects{background:var(--ok-bg);color:var(--ok)}
.nt-dot{display:inline-block;width:9px;height:9px;border-radius:99px;background:var(--unread);flex:none;margin-top:6px}
.nt-dot.off{background:none;border:1.5px solid var(--line)}
.nt-page{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.nt-page>.card+.card{margin-top:0}
.nt-chips{margin:4px 0 10px}.nt-c{display:inline-block;min-width:18px;padding:0 6px;border-radius:99px;background:var(--unread);color:var(--on-unread);font-size:11.5px;font-weight:600;text-align:center;line-height:18px}
.nt-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin-bottom:6px}
.nt-list{list-style:none;margin:0;padding:0}
.nt{display:flex;gap:12px;align-items:flex-start;padding:12px 4px;border-top:1px solid var(--line2)}
.nt .grow{flex:1;min-width:0}
.nt-t{color:var(--ink);text-decoration:none;display:block;line-height:1.4;overflow-wrap:anywhere}.nt-t:hover{text-decoration:underline}
.nt.unread .nt-t{font-weight:600}
.nt small{display:flex;flex-wrap:wrap;gap:4px 10px;color:var(--mut);margin-top:3px;font-size:13px}
.nt-new{color:var(--unread);font-weight:600}
.nt-mark{padding:8px;min-width:36px;min-height:36px}
.nt-more{text-align:center;margin:12px 0 0}
.nt-types{display:grid;gap:6px}.nt-types .cb{display:flex;gap:8px;align-items:center}.nt-types p{margin:6px 0}
@media (max-width:1100px){.nt-page{grid-template-columns:minmax(0,1fr)}}
@media (max-width:800px){.bell-pop{top:56px;right:8px;left:8px;width:auto}.bell{padding:7px}
  .nav-shade{position:fixed;inset:0;background:var(--scrim);z-index:39;opacity:0;visibility:hidden;transition:opacity .2s ease}
  body.nav-open .nav-shade{opacity:1;visibility:visible}}
@media (min-width:801px){.nav-shade{display:none}}
/* шапка: поиск не съедает заголовок; на телефоне — значок поиска, заголовок страницы виден (аудит 14.11) */
.top-search{flex:0 1 300px;min-width:140px;margin:0}.top-search input{width:100%}
.top-sbtn{display:none;padding:8px;border-radius:10px;color:var(--mut);flex:none}.top-sbtn:hover{color:var(--ink);background:var(--g)}
@media (max-width:800px){.top-search{display:none}.top-sbtn{display:inline-grid;place-items:center}.top h1{min-width:80px}.top .acts:empty{display:none}}
/* карточки таблиц на телефоне (Демо, Партнёры): длинные названия переносятся, страница не уезжает вбок (аудит 14.11) */
@media (max-width:800px){.tbl.cards{white-space:normal;background:none}.tbl.cards td{min-width:0}.tbl.cards td:first-child a,.tbl.cards td:first-child b{overflow-wrap:anywhere}
  .tbl.cards td[data-l]>*:not(.pill){min-width:0;overflow-wrap:anywhere}.tbl.cards td small{display:block}.ptbl .tbl.cards .n{white-space:normal}}
/* «Мой день» → «Клиенты ждут ответа»: таймер ожидания слева, кнопка «Ответить» справа */
.cw .cw-t{display:inline-flex;align-items:center;gap:4px;min-width:84px;padding:3px 8px;border-radius:99px;background:var(--g);color:var(--mut);font-size:13px;font-weight:600;white-space:nowrap;flex:none}
.cw .cw-t .ic{width:15px;height:15px}.cw .cw-t.warn{background:var(--warn-bg);color:var(--warn)}.cw .cw-t.bad{background:var(--bad-bg);color:var(--bad)}
.cw li .grow{min-width:0}.cw li b{display:block;overflow-wrap:anywhere}.cw li .btn{flex:none}
.cw-card>small{display:block;margin-top:10px}
.near-late{margin:0 0 8px}
@media (max-width:700px){.cw li{flex-wrap:wrap}.cw li .grow{flex:1 1 calc(100% - 100px)}.cw li .btn{margin-left:96px}}
@media (min-width:1101px){.kpis:has(>.kpi:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}}
/* ---------- задачи CRM: карточка, лента комментариев, повтор (docs/tasks.md) ---------- */
.crumbs{margin:0 0 10px;font-size:13.5px;color:var(--mut)}.crumbs a{color:var(--mut)}.crumbs a:hover{color:var(--ink)}
.facts.v{grid-template-columns:minmax(0,1fr);gap:10px;margin:0;padding:0;border:0}
.facts.v dd{overflow-wrap:anywhere;white-space:pre-line}
.task-card .card-h h2{overflow-wrap:anywhere}
.task-desc{white-space:normal;overflow-wrap:anywhere;line-height:1.55;margin-top:12px}
.task-st{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 4px}.task-st .chip{background:none;font:inherit;font-size:13.5px;color:var(--ink)}
.task-st .chip.on{cursor:default;opacity:1}
.task-edit>summary{cursor:pointer;list-style:none}.task-edit>summary::-webkit-details-marker{display:none}.task-edit[open]>summary{margin-bottom:12px}
.task-edit>summary b::after{content:" ▾";color:var(--mut);font-weight:400}.task-edit[open]>summary b::after{content:" ▴"}
.task-recur{border:1px solid var(--line2);border-radius:var(--r2);padding:10px 14px 12px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-items:end}
.task-recur legend{font-size:13.5px;font-weight:500;padding:0 4px}.task-recur .wd{grid-column:1/-1}.task-recur p{margin:0}
.task-recur [hidden]{display:none!important}
.task-more{border-top:1px solid var(--line2);padding-top:8px}.task-more>summary{cursor:pointer;font-size:13.5px;color:var(--link)}.task-more[open]>summary{margin-bottom:10px}
.task-note{font-size:13px;margin:12px 0 0}
.tk-t{color:inherit}.tk-t:hover b{text-decoration:underline}
.tk-rec,.tk-cm{display:inline-flex;align-items:center;gap:2px;color:var(--mut);font-size:12.5px;vertical-align:middle;margin-left:4px}.tk-rec .ic,.tk-cm .ic{width:14px;height:14px}
.tcomm.chat{height:auto;min-height:220px;max-height:min(60vh,640px)}
.tcomm .chat-log{min-height:120px}
.tchat .msg.flash{outline:2px solid var(--focus);outline-offset:2px;border-radius:12px;transition:outline-color 1.5s}

/* ---------- карточка клиента (docs/clients.md) ---------- */
.cl-h1{display:flex;gap:8px 12px;align-items:flex-start;flex-wrap:wrap}.cl-h1 .grow{min-width:min(100%,260px)}.cl-h1 h2{font-size:20px;overflow-wrap:break-word;hyphens:auto}
.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tag{display:inline-flex;align-items:center;gap:4px;padding:1px 9px;border-radius:99px;background:var(--g2);color:var(--ink);font-size:12.5px;font-weight:500;text-decoration:none!important;white-space:nowrap}
a.tag:hover{background:var(--info-bg);color:var(--info)}.tag.on{background:var(--info-bg);color:var(--info);padding:4px 10px}.tag.on a{color:inherit;font-weight:600}
.filters .tag.on{align-self:center}
.cl-feed .ev-k{display:block;color:var(--mut);font-size:12px;line-height:1.3;margin-bottom:1px}
.cl-feed li>div small{display:inline;margin-left:4px}
.cl-seg{margin:0 0 12px}
.cl-cab{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.cl-req label.bad input{border-color:var(--bad)}.cl-req label small.err{font-weight:400}
.cl-contacts li .lnk{margin:-6px -6px 0 0}
.nps{display:flex;gap:14px;align-items:flex-start}.nps p{margin:6px 0 0}.nps small{display:block}
.nps-n{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;font-size:24px;flex:none;background:var(--info-bg);color:var(--info)}
.nps-n.st-done{background:var(--ok-bg);color:var(--ok)}.nps-n.st-review{background:var(--warn-bg);color:var(--warn)}.nps-n.st-lost{background:var(--bad-bg);color:var(--bad)}

/* ---------- поиск: группы, подсветка, быстрый переход из шапки (docs/search.md) ---------- */
mark{background:var(--warn-bg);color:inherit;border-radius:3px;padding:0 1px}
.srch-nav{margin:0 0 14px}.srch-total{margin:0 0 8px}
.srch-g{scroll-margin-top:84px}
.search-res small mark{font-weight:600}
.top-search{position:relative;width:min(340px,40vw)}
.ts-pop{position:absolute;top:calc(100% + 6px);right:0;width:min(520px,92vw);max-height:min(70vh,560px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh-pop);padding:6px;z-index:30;list-style:none;margin:0}
.ts-pop .ts-h{padding:8px 10px 4px;color:var(--mut);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.ts-pop a{display:block;padding:7px 10px;border-radius:8px;color:var(--ink);text-decoration:none!important}
.ts-pop a small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-pop a.on,.ts-pop a:hover{background:var(--g)}
.ts-pop .ts-all{color:var(--link);font-weight:500;border-top:1px solid var(--line2);margin-top:4px;border-radius:0 0 8px 8px}
.ts-pop .ts-none{padding:10px;color:var(--mut)}
@media (max-width:800px){.top-search{width:auto;flex:0 1 150px}.ts-pop{position:fixed;left:8px;right:8px;top:60px;width:auto}
  .task-st .chip{padding:8px 12px}}
/* карточка задачи: заголовок, свойства, правка, комментарии; на узком — свойства сразу под заголовком */
.task-card{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-template-areas:"main side" "edit side" "comm side";grid-template-rows:auto auto 1fr;gap:16px;align-items:start}
.task-card>.card{margin:0}.tcard-main{grid-area:main}.tcard-side{grid-area:side}.tcard-edit{grid-area:edit}.tcard-comm{grid-area:comm}
.task-card:not(:has(.tcard-edit)){grid-template-areas:"main side" "comm side";grid-template-rows:auto 1fr}
.facts.v{grid-template-columns:minmax(0,120px) minmax(0,1fr);gap:10px 14px}.facts.v dd{margin:0}
@media (max-width:1100px){.task-card,.task-card:not(:has(.tcard-edit)){grid-template-columns:minmax(0,1fr);grid-template-areas:"main" "side" "edit" "comm";grid-template-rows:auto}}
/* решения 14.11: «Доска запусков» (src/launches.js), история этапа во вкладке «Запуск», «Оценки и уход» */
.lstats{margin:0 0 14px}
.lboard{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;align-items:start}
.lboard .bcard{cursor:pointer;color:var(--ink);text-decoration:none}.lboard .bcard:hover{box-shadow:0 0 0 1px var(--line),var(--sh)}.lboard .bcard.late{box-shadow:0 0 0 1px var(--bad)}
.lboard .bcol>header b{font-size:13.5px;overflow-wrap:anywhere}.lboard .bmeta .days{white-space:normal;text-align:left}
@media (max-width:1280px){.lboard{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:900px){.lboard{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.lboard{grid-template-columns:minmax(0,1fr)}.lboard .bcol.empty{display:none}}
.shist{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font-size:13px;color:var(--mut)}.shist li{overflow-wrap:anywhere}.shist time{font-variant-numeric:tabular-nums;margin-right:4px}
/* «Команды» (редакция «Агентство», docs/agency.md): карточки команд и состав */
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:12px 0 16px}
.team-card{display:flex;flex-direction:column;gap:12px;color:var(--ink);text-decoration:none!important;transition:box-shadow .15s ease,border-color .15s ease;border:1px solid transparent}
.team-card:hover{border-color:var(--line)}.team-card.mine{border-color:var(--info)}
.team-h{display:flex;align-items:center;justify-content:space-between;gap:8px}.team-h b{font-size:16px;font-weight:600}
.team-lead{display:flex;align-items:center;gap:10px}.team-lead span{display:flex;flex-direction:column;font-weight:500}.team-lead small{font-weight:400}
.team-ms{display:flex;align-items:center;gap:0;min-height:32px}.team-ms .uav{margin-right:-6px;box-shadow:0 0 0 2px var(--card)}.team-ms .mut{margin-left:12px;font-size:13px}
.team-f{display:flex;justify-content:space-between;gap:8px;color:var(--mut);font-size:13px;border-top:1px solid var(--line2);padding-top:10px}
.team-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.team-list li{display:flex;align-items:center;gap:10px}.team-list li span{display:flex;flex-direction:column}
.brand b{overflow-wrap:anywhere}
.team-grid>.card,.team-grid>.card+.card{margin:0}
