/* Панель «Дровосеки» - тёмная тема кабинета на каноне (tokens.css).
   Только var(--drv-*), без хардкода цветов. Шрифт Geologica. */

body {
  margin: 0;
  background: var(--drv-bg);
  color: var(--drv-text);
  font-family: var(--drv-font);
  font-weight: var(--drv-w-light);
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
code { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 13px; color: var(--drv-red-light); }

/* ---------- иконки lucide: единый базовый размер ----------
   lucide заменяет <i data-lucide> на <svg class="lucide">, поэтому
   размер задаём через svg, а не через i. Более конкретные правила
   ниже (.sidebar svg, .stab svg, .soon-icon svg) переопределяют базу. */
/* inline-block (а не block из components.css) - иначе иконка встаёт на свою строку НАД текстом в
   нефлексовых контекстах (карточки счетов, распределение и т.п.). В флекс-контейнерах поведение не меняется. */
svg.lucide { display: inline-block; width: 16px; height: 16px; flex: none; vertical-align: -0.18em; stroke-width: 2; }
.btn svg { width: 15px; height: 15px; }

.layout { display: flex; min-height: 100vh; }

/* ---------- сайдбар ----------
   База .sidebar теперь в components.css (дизайн-система handoff). Здесь оставлены только
   старые descendant-правила (.brand, .navlink…), которые новая разметка не использует, и
   мобильный drawer ниже (≤760px) - он переопределяет .sidebar под выезжающее меню. */
.sidebar .brand {
  display: flex; align-items: center; gap: 10px;
  font-weight: var(--drv-w-bold); font-size: 22px; letter-spacing: var(--drv-ls-tight);
  margin-bottom: 12px; padding: 6px 10px;
}
.sidebar .brand span { color: var(--drv-red); }

/* собственный скролл меню */
.nav-scroll { flex: 1; overflow-y: auto; overflow-x: hidden; padding-right: 4px; margin: 0 -4px 0 0; }
.nav-scroll::-webkit-scrollbar { width: 7px; }
.nav-scroll::-webkit-scrollbar-thumb { background: var(--drv-k-12); border-radius: 8px; }
.nav-scroll::-webkit-scrollbar-track { background: transparent; }

.sidebar-footer { border-top: 1px solid var(--drv-k-06); padding-top: 8px; margin-top: 6px; }

/* сворачиваемые группы */
.navg { margin-bottom: 1px; }
.navg-h {
  display: flex; align-items: center; padding: 10px 8px 10px 14px;
  border-radius: var(--drv-radius-btn); color: var(--drv-text-muted);
  transition: background var(--drv-transition-fast), color var(--drv-transition-fast);
}
.navg-h:hover { background: var(--drv-k-06); color: var(--drv-text); }
.navg-h.active { background: var(--drv-red); color: #fff; }
.navg-title {
  display: flex; align-items: center; gap: 11px; flex: 1;
  color: inherit; font-size: 14.5px; cursor: pointer;
}
.navg-toggle {
  background: transparent; border: none; cursor: pointer; display: flex;
  color: inherit; opacity: .55; padding: 4px 6px; border-radius: 6px;
}
.navg-toggle:hover { opacity: 1; }
.navg-chev { width: 15px !important; height: 15px !important; transition: transform var(--drv-transition-fast); }
.navg.collapsed .navg-chev { transform: rotate(-90deg); }
.navg.collapsed .navg-items { display: none; }
.navg-items { margin: 1px 0 4px; }
.navlink.sub { padding-left: 40px; font-size: 14px; }   /* подпункты с отступом под заголовком */
.navlink.solo { margin: 1px 0; }
.module-title { font-size: 12px; text-transform: uppercase; letter-spacing: var(--drv-ls-wide); color: var(--drv-text-faint); font-weight: var(--drv-w-medium); margin-bottom: 10px; }

/* Логотип через CSS-маску: цвет = текущий цвет текста, адаптируется под тему. */
.brand-logo {
  display: inline-block; width: 26px; height: 30px; flex-shrink: 0;
  background-color: var(--drv-text);
  -webkit-mask: url(/static/logo.svg) center / contain no-repeat;
  mask: url(/static/logo.svg) center / contain no-repeat;
}
.brand-logo--lg { width: 56px; height: 64px; background-color: var(--drv-red); }
.sidebar a.navlink {
  display: flex; align-items: center; gap: 11px;
  padding: 10px 14px; border-radius: var(--drv-radius-btn);
  color: var(--drv-text-muted); font-size: 14.5px;
  transition: background var(--drv-transition-fast), color var(--drv-transition-fast);
}
.sidebar a.navlink:hover { background: var(--drv-k-06); color: var(--drv-text); }
.sidebar a.navlink.active { background: var(--drv-red); color: #fff; }
/* бейдж счётчика в пункте меню (напр. «Входящие» на Сделках) */
.nav-badge { margin-left: auto; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--drv-red);
  color: #fff; font-size: 11px; font-weight: var(--drv-w-semibold); display: inline-flex; align-items: center; justify-content: center; }
.navlink.active .nav-badge { background: rgba(255,255,255,.28); }
html.nav-rail .navg > .navg-h .nav-badge { display: none; }
.sidebar svg { width: 18px; height: 18px; stroke-width: 2; flex-shrink: 0; }
.sidebar .theme-toggle {
  display: flex; align-items: center; gap: 11px; width: 100%;
  background: transparent; border: none; cursor: pointer; font-family: inherit;
  color: var(--drv-text-muted); font-size: 14px; padding: 10px 14px; border-radius: var(--drv-radius-btn);
}
.sidebar .theme-toggle:hover { background: var(--drv-k-06); color: var(--drv-text); }
.sidebar .role-tag { display: flex; align-items: center; gap: 8px; color: var(--drv-text-faint); font-size: 12px; padding: 6px 14px; }
.sidebar .logout { display: flex; align-items: center; gap: 11px; color: var(--drv-text-faint); font-size: 13px; padding: 10px 14px; }
.sidebar .logout:hover { color: var(--drv-red); }

/* кнопка свернуть меню */
.rail-toggle {
  display: flex; align-items: center; gap: 11px; width: 100%;
  background: transparent; border: none; cursor: pointer; font-family: inherit;
  color: var(--drv-text-faint); font-size: 13px; padding: 10px 14px; border-radius: var(--drv-radius-btn);
}
.rail-toggle:hover { background: var(--drv-k-06); color: var(--drv-text); }
.rail-chev { transition: transform var(--drv-transition-fast); }
.navg-flyout-title { display: none; }   /* виден только во флайауте свёрнутого меню */

/* ---------- свёрнутое меню (icon-rail, как в ASPRO, в нашем стиле) ---------- */
/* padding-top тут раньше был 18px и сдвигал бренд/логотип вниз ровно на эти 18px (в развёрнутом
   виде такого паддинга нет - потому там логотип попадал на уровень заголовка, а в рельсе нет).
   Верхний паддинг убираем: логотип центрируется по высоте топбара самим брендом. */
html.nav-rail .sidebar { width: 66px; padding: 0 8px 18px; }
html.nav-rail .nav-label { display: none; }
html.nav-rail .brand { justify-content: center; padding: 6px 0; gap: 0; }
html.nav-rail .nav-scroll { overflow: visible; }   /* чтобы флайаут не обрезался */
html.nav-rail .navlink, html.nav-rail .navg-title { justify-content: center; gap: 0; padding: 11px 0; }
html.nav-rail .navlink.sub { padding-left: 0; }
html.nav-rail .navg-toggle { display: none; }
html.nav-rail .navg-h { padding: 0; }
html.nav-rail .navg-h .navg-title { padding: 11px 0; width: 100%; border-radius: var(--drv-radius-btn); }
html.nav-rail .rail-toggle, html.nav-rail .theme-toggle, html.nav-rail .logout { justify-content: center; gap: 0; padding: 11px 0; }
html.nav-rail .role-tag { justify-content: center; padding: 6px 0; }
html.nav-rail .rail-chev { transform: rotate(180deg); }   /* стрелка наружу = развернуть */

/* флайаут подменю при наведении на свёрнутую группу */
html.nav-rail .navg { position: relative; }
html.nav-rail .navg-items {
  display: none; position: absolute; left: calc(100% + 8px); top: 0; z-index: 200;
  min-width: 210px; background: var(--surface); border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-card); box-shadow: var(--drv-shadow-card-hover); padding: 8px;
}
html.nav-rail .navg:hover .navg-items { display: block; }
html.nav-rail .navg-items .nav-label { display: inline; }
html.nav-rail .navg-items .navlink.sub { justify-content: flex-start; gap: 11px; padding: 9px 12px; }
html.nav-rail .navg-flyout-title { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: var(--drv-ls-wide); color: var(--drv-text-faint); padding: 4px 12px 8px; }

/* тултип с подписью для одиночных пунктов и кнопок подвала */
html.nav-rail .navlink.solo, html.nav-rail .rail-toggle,
html.nav-rail .theme-toggle, html.nav-rail .logout { position: relative; }
html.nav-rail .navlink.solo:hover::after,
html.nav-rail .rail-toggle:hover::after,
html.nav-rail .theme-toggle:hover::after,
html.nav-rail .logout:hover::after {
  content: attr(data-label); position: absolute; left: calc(100% + 8px); top: 50%; transform: translateY(-50%);
  white-space: nowrap; background: var(--drv-text); color: var(--drv-bg); font-size: 12px;
  padding: 5px 9px; border-radius: 6px; z-index: 200; pointer-events: none;
}

/* ---------- контент ---------- */
.content { flex: 1; min-width: 0; height: 100vh; overflow-y: auto; padding: 32px 40px; }
/* контент всегда занимает доступную ширину (важно при сворачивании меню);
   на сверхшироких экранах держим разумный потолок, но не оставляем пустоту на обычных. */
.content > * { max-width: min(100%, 2200px); }
/* формы держим узкими для читаемости (см. .kb-form), таблицы/канбан - во всю ширину */
h1 { font-weight: var(--drv-w-semibold); font-size: 28px; letter-spacing: var(--drv-ls-tight); margin: 0 0 24px; }
h2 { font-weight: var(--drv-w-medium); font-size: 19px; margin: 30px 0 14px; }

/* ---------- модальное окно ---------- */
.modal-backdrop {
  position: fixed; inset: 0; width: 100vw; height: 100vh; max-width: none !important;
  background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); display: none;
  align-items: center; justify-content: center; z-index: 1000; padding: 24px; overflow-y: auto;
}
.modal-backdrop.open { display: flex; animation: modal-fade .14s ease; }
@keyframes modal-fade { from { opacity: 0; } to { opacity: 1; } }
.modal {
  background: var(--surface); border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-modal); width: 560px; max-width: 100%;
  box-shadow: 0 24px 70px rgba(0,0,0,.45); margin: auto; overflow: hidden;
  animation: modal-pop .16s ease;
}
/* крупные информативные окна (сделка/задача) - шире, чтобы больше помещалось */
.modal.wide { width: min(96vw, 980px); }
/* окна с комбобоксами: padding + выпадашка поиска не должна обрезаться overflow:hidden */
.modal.modal--combos { overflow: visible; padding: 22px 24px; }
.modal.modal--combos .sec-title { margin-top: 0; }
@keyframes modal-pop { from { transform: translateY(8px) scale(.99); } to { transform: none; } }
@media (max-width: 560px) {
  .modal-backdrop { padding: 0; align-items: stretch; }
  .modal { width: 100%; min-height: 100vh; border-radius: 0; border: none; box-shadow: none; margin: 0; }
}
.modal-h { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid var(--drv-k-06); font-weight: var(--drv-w-medium); font-size: 16px; }
.modal-x { background: transparent; border: none; cursor: pointer; color: var(--drv-text-faint); display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: var(--drv-radius-btn); transition: background var(--drv-transition-fast), color var(--drv-transition-fast); }
.modal-x:hover { color: var(--drv-red); background: var(--drv-red-08); }
.modal-body { padding: 20px 22px !important; }
.modal-body[id="deal-card-host"] { padding: 20px 22px !important; max-height: calc(100vh - 140px); overflow-y: auto; }
.modal-foot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 6px; }
.form-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-2col > div { display: flex; flex-direction: column; }
.form-2col label { display: block; margin-bottom: 6px; }
@media (max-width: 560px) { .form-2col { grid-template-columns: 1fr; } }

/* ---------- канбан сделок (drag-n-drop) ---------- */
/* мягкие цвета по стадиям: точка в шапке + цветной левый кант карточки */
.kcol[data-stage="new"]        { --st: #9aa0a6; }
.kcol[data-stage="qualify"]    { --st: #5b9bd5; }
.kcol[data-stage="kp"]         { --st: #8e7cc3; }
.kcol[data-stage="approve"]    { --st: #e0b341; }
.kcol[data-stage="contract"]   { --st: #e08a3c; }
.kcol[data-stage="paid"]       { --st: #57a86b; }
.kcol[data-stage="production"] { --st: #3fb6b0; }
.kdot { width: 9px; height: 9px; border-radius: 50%; background: var(--st, var(--drv-text-faint)); display: inline-block; flex-shrink: 0; }
.kcol[data-stage] .kcard { border-left: 3px solid var(--st, transparent); }
.ksum { margin-left: auto; font-size: 12px; color: var(--drv-text-faint); font-weight: var(--drv-w-regular); }

/* «Входящие» CRM - триаж лидов и запросов связи в воронку */
.inbox-lane { background: var(--drv-bg-secondary); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 14px 16px; margin: 4px 0 16px; }
.inbox-h { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.inbox-title { display: inline-flex; align-items: center; gap: 7px; font-weight: var(--drv-w-semibold); font-size: 15px; }
.inbox-title i { width: 17px; height: 17px; color: var(--drv-red); }
.inbox-c { background: var(--drv-red); color: #fff; border-radius: 999px; padding: 1px 8px; font-size: 12px; font-weight: var(--drv-w-semibold); }
.inbox-hint { font-size: 12.5px; }
.inbox-cards { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 4px; }
.inbox-card { flex: 0 0 250px; background: var(--surface); border: 1px solid var(--drv-k-06); border-left: 3px solid var(--drv-text-faint); border-radius: var(--drv-radius-sm); padding: 12px 13px; box-shadow: var(--drv-shadow-sm); display: flex; flex-direction: column; gap: 6px; }
.inbox-card.kind-contact { border-left-color: var(--drv-info, #5b9bd5); }
.inbox-card.kind-lead { border-left-color: var(--drv-success, #57a86b); }
.ic-top { display: flex; align-items: center; justify-content: space-between; }
.ic-tag { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--drv-text-muted); font-weight: var(--drv-w-medium); }
.ic-when { font-size: 11.5px; }
.ic-title { font-weight: var(--drv-w-semibold); font-size: 14px; line-height: 1.25; }
.ic-who, .ic-line { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.ic-who i, .ic-line i { width: 13px; height: 13px; flex: none; color: var(--drv-text-faint); }
.ic-plat { background: var(--drv-k-06); border-radius: 999px; padding: 0 7px; font-size: 11px; color: var(--drv-text-muted); }
.ic-acts { display: flex; gap: 6px; margin-top: 6px; }
.ic-acts .inline { margin: 0; }

.kanban { display: flex; gap: 14px; overflow-x: auto; padding-bottom: 12px; align-items: flex-start; }
.kcol {
  flex: 0 0 240px; background: var(--drv-bg-secondary); border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-card); padding: 12px; min-height: 120px;
}
.kcol.kover { border-color: var(--drv-red); background: var(--drv-red-08); }
.kcol-h { font-weight: var(--drv-w-medium); font-size: 14px; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.kcount { background: var(--drv-k-06); color: var(--drv-text-faint); border-radius: 999px; padding: 1px 8px; font-size: 12px; }
.kcol-body { display: flex; flex-direction: column; gap: 8px; min-height: 40px; }
.kcard {
  background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm);
  padding: 11px 13px; cursor: grab; box-shadow: var(--drv-shadow-sm);
}
.kcard:active { cursor: grabbing; }
.kcard:hover { border-color: var(--drv-k-12); }
.kcard-t { font-size: 14px; font-weight: var(--drv-w-medium); display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.kcard-open { color: var(--drv-text-faint); flex: none; line-height: 1; opacity: 0; transition: opacity .12s, color .12s; }
.kcard:hover .kcard-open { opacity: 1; }
.kcard-open:hover { color: var(--drv-red); }
.kcard-open svg { width: 15px; height: 15px; }
.kcard-m { font-size: 13px; color: var(--drv-text-muted); margin-top: 3px; }
.kcard-s { font-size: 12px; margin-top: 4px; }
.kempty { color: var(--drv-text-disabled); font-size: 12px; text-align: center; padding: 8px; }

/* ---------- вкладки настроек (drill-in как в ASPRO) ---------- */
.settings-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 24px; }
.stab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px; border-radius: var(--drv-radius-btn);
  color: var(--drv-text-muted); font-size: 14px;
  background: var(--surface); border: 1px solid var(--drv-k-06);
  transition: color var(--drv-transition-fast), border-color var(--drv-transition-fast);
}
.stab:hover { color: var(--drv-text); border-color: var(--drv-text-faint); }
.stab.active { background: var(--drv-red); color: #fff; border-color: var(--drv-red); }
.stab svg { width: 16px; height: 16px; }

/* ---------- дашборд: блоки и заголовки панелей ---------- */
.dash-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--drv-gap-card); margin-top: 18px; }
.dash-col { overflow: hidden; }
.panel-h { padding: 16px 20px; font-weight: var(--drv-w-medium); font-size: 16px; border-bottom: 1px solid var(--drv-k-06); }
/* .empty - пустая строка таблиц (в td colspan): по центру, единообразно */
.empty { padding: 22px 20px; color: var(--drv-text-faint); font-size: 13.5px; text-align: center; }
@media (max-width: 760px) { .dash-row { grid-template-columns: 1fr; } }

/* ---------- KPI-плитки ---------- */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: var(--drv-gap-card); }
.card {
  background: var(--surface);
  border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-card);
  padding: 24px 26px;
}
/* плоские карточки без hover-подъёма (редизайн). Кликабельным карточкам - отдельный модификатор. */
.card .num { font-size: 32px; font-weight: var(--drv-w-bold); letter-spacing: var(--drv-ls-tight); line-height: 1.1; white-space: nowrap; }
.card .num.accent { color: var(--drv-red); }
.card .num.warn { color: var(--drv-red); }
.card .num.money { font-size: 26px; }
.card .num.money-in { color: var(--drv-success); }
.card .label { color: var(--drv-text-faint); font-size: var(--drv-fs-small); margin-top: 6px; }
/* статкарточки дашборда: компактнее и ровнее */
.stat-cards { grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); }
.stat-cards .card { padding: 18px 20px; }

/* ---------- панель/таблицы ---------- */
.panel {
  background: var(--surface);
  border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-card);
  overflow: hidden;
}
/* Таблицы (легаси-страницы) - под дизайн-систему: шапка мягким фоном + КАПС, тонкие границы, ховер строк. */
table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
th, td { text-align: left; padding: 12px 18px; border-bottom: 1px solid var(--ln2); vertical-align: top; }
th { background: var(--soft); color: var(--f); font-weight: var(--fw-semibold); font-size: var(--fs-2xs);
  text-transform: uppercase; letter-spacing: var(--ls-caps); border-bottom: 1px solid var(--ln); }
tr:last-child td { border-bottom: none; }
tbody tr:hover td, table tr:hover td { background: var(--soft); }

/* заглушка раздела «в разработке» */
.soon-wrap { display: flex; align-items: center; justify-content: center; min-height: 70vh; }
.soon-card { text-align: center; background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 48px 56px; }
.soon-icon { width: 64px; height: 64px; margin: 0 auto 18px; border-radius: var(--drv-radius-icon); background: var(--drv-red-08); color: var(--drv-red); display: flex; align-items: center; justify-content: center; }
.soon-icon svg { width: 30px; height: 30px; }
.soon-card h1 { margin-bottom: 8px; }
.soon-card .btn { margin-top: 18px; }

/* ---------- бейджи (канон статусов, мягкие чипы как .status-badge) ---------- */
.badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: var(--r-sm);
  font-size: var(--fs-2xs); font-weight: var(--fw-medium); background: var(--slate-s); color: var(--slate); }
.badge.red { background: var(--r08); color: var(--r); }
.badge.green { background: var(--ok-s); color: var(--ok); }
.badge.gray { background: var(--slate-s); color: var(--slate); }
.badge.blue { background: var(--info-s); color: var(--info); }
.badge.amber, .badge.warn { background: var(--warn-s); color: var(--warn); }

/* ---------- кнопки ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  padding: 9px 18px; border-radius: var(--drv-radius-btn);
  background: var(--drv-red); color: #fff; border: none; cursor: pointer;
  font-family: inherit; font-size: 13px; font-weight: var(--drv-w-medium);
  transition: background var(--drv-transition-fast), transform var(--drv-transition-fast);
}
.btn:hover { background: var(--drv-red-hover); transform: var(--drv-lift-sm); }
.btn.ghost { background: transparent; color: var(--drv-text-muted); border: 1px solid var(--drv-k-06); }
.btn.ghost:hover { background: var(--drv-red-08); color: var(--drv-red); border-color: var(--drv-red); }
.btn.accent { background: var(--drv-red); }

.muted { color: var(--drv-text-faint); }
.back-link { display: inline-block; margin: 0 0 16px; font-size: 14px; color: var(--drv-text-muted); }
.back-link:hover { color: var(--drv-red); }
.page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.page-head h1 { margin: 0; }
.prow { padding: 3px 0; }
/* правка комментария: индикатор «изм.», кнопки, инлайн-редактор, лог версий */
.cmt-edited { color: var(--drv-text-faint); font-size: 11px; }
.cmt-editbtn, .cmt-hist { background: none; border: none; cursor: pointer; color: var(--drv-text-faint); font-size: 11.5px; padding: 0 2px; font-family: inherit; }
.cmt-editbtn:hover, .cmt-hist:hover { color: var(--drv-red); }
.cmt-hist { text-decoration: underline dotted; }
.cmt-edit { margin: 4px 0 2px; }
.cmt-edit__ta { width: 100%; box-sizing: border-box; min-height: 54px; resize: vertical; padding: 8px 10px; border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-btn); background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 13.5px; line-height: 1.5; }
.cmt-edit__ta:focus { outline: none; border-color: var(--drv-red); }
.cmt-edit__act { display: flex; gap: 6px; margin-top: 6px; }
.cmt-vers { margin: 6px 0 2px; padding: 8px 10px; background: var(--drv-bg); border: 1px solid var(--drv-k-08); border-radius: 8px;
  font-size: 12.5px; color: var(--drv-text-muted); display: flex; flex-direction: column; gap: 6px; }
.cmt-ver { line-height: 1.45; }
.cmt-ver__at { color: var(--drv-text-faint); font-size: 11px; margin-right: 6px; font-family: ui-monospace, monospace; }
.prow--msg { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.prow--msg .msg-chips { margin-top: 0; }
.prow--msg .prow__k { flex: none; }
.copy-mini { background: transparent; border: none; color: var(--drv-text-faint); font-size: 12px; cursor: pointer; font-family: inherit; text-decoration: underline; padding: 0 4px; }
.copy-mini:hover { color: var(--drv-red); }
/* ссылки в контенте кликабельны и заметны */
.panel a:not(.btn), .prow a, td a { color: var(--drv-red); }
.panel a:not(.btn):hover, td a:hover { text-decoration: underline; }
.hint { background: var(--drv-warning-soft); border-left: 3px solid var(--drv-warning); padding: 11px 16px; border-radius: var(--drv-radius-sm); margin: 8px 0; font-size: var(--drv-fs-small); }

/* диалоги в карточке клиента */
.dialog-row { padding: 9px 0; border-bottom: 1px solid var(--drv-k-06); font-size: var(--drv-fs-small); }
.dialog-row .who { font-size: var(--drv-fs-tiny); color: var(--drv-text-faint); margin-bottom: 2px; }
.role-user { color: var(--drv-text); }
.role-ai { color: var(--drv-info); }
.role-bot { color: var(--drv-text-faint); }

/* ---------- поиск + пагинация ---------- */
.searchbar { display: flex; gap: 8px; margin-bottom: 18px; max-width: 540px; }
.searchbar input[type=text] { flex: 1; padding: 10px 14px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 14px; background: var(--surface); color: var(--drv-text); }
.pager { display: flex; align-items: center; gap: 14px; margin-top: 18px; }
.toolbar { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
.filters { display: flex; gap: 8px; }
select {
  font-family: inherit; font-size: 13px; color: var(--drv-text);
  padding: 6px 28px 6px 10px; border-radius: var(--drv-radius-btn);
  border: 1px solid var(--drv-k-06); background: var(--surface);
  width: auto; max-width: 100%; cursor: pointer;
}
.kb-form select { width: 100%; max-width: 100%; }   /* в формах - на всю ширину поля */
form.inline { display: inline; }
/* компактный select в таблицах (напр. тип партнёра) */
td form.inline select, td select { font-size: 12.5px; padding: 5px 24px 5px 9px; max-width: 130px; vertical-align: middle; }

/* ---------- формы: единый вертикальный ритм ----------
   16px между группами, 6px между подписью и её полем. Подпись и поле -
   соседние прямые потомки, поэтому «поле после label» сбрасываем до 6px. */
.kb-form { padding: 24px; margin-top: 8px; max-width: 680px; }
.kb-form > * { margin-top: 16px; }
.kb-form > *:first-child { margin-top: 0; }
.kb-form > label + input,
.kb-form > label + select,
.kb-form > label + textarea,
.kb-form > label + .checks,
.kb-form > label + .combo,
.kb-form > label + .form-2col { margin-top: 6px; }
/* NB: не задаём здесь margin - иначе (спец. 0,1,1) перебьёт «.kb-form > * {16px}» (0,1,0)
   и подписи прилипнут к полю сверху. Вертикальный ритм держит только «.kb-form > *». */
.kb-form label { display: block; font-size: var(--drv-fs-tiny); color: var(--drv-text-faint); text-transform: uppercase; letter-spacing: var(--drv-ls-wide); }
.kb-form input, .kb-form textarea, .kb-form select { width: 100%; padding: 11px 14px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); }
.kb-form input:focus, .kb-form textarea:focus, .kb-form select:focus { outline: none; border-color: var(--drv-red); }
.kb-form textarea { resize: vertical; }
.kb-form .btn { margin-top: 20px; }
.kb-form .modal-foot { margin-top: 18px; }
.kb-form .modal-foot .btn { margin-top: 0; }
/* подсказка под полем (мелкий серый текст) */
.kb-form .hint-text { margin-top: 6px; font-size: 13px; color: var(--drv-text-faint); }

/* поиск-выпадашка (combobox) */
.combo { position: relative; }
/* базовый стиль поля-комбобокса (чтобы выглядел нормально и ВНЕ kb-form: напр. «Добавить
   специалиста» в карточке задачи). Внутри kb-form/спец-вариантов перебивается более точными правилами. */
.combo-input { width: 100%; padding: 10px 13px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); }
.combo-input:focus { outline: none; border-color: var(--drv-red); }
.combo-input::placeholder { color: var(--drv-text-faint); }
.combo-list {
  position: absolute; left: 0; right: 0; top: 100%; z-index: 20; margin-top: 4px;
  background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  max-height: 230px; overflow-y: auto; display: none; box-shadow: var(--drv-shadow-card-hover);
}
.combo-list.open { display: block; }
.combo-opt { padding: 8px 12px; cursor: pointer; font-size: 14px; }
.combo-opt:hover { background: var(--drv-k-06); }
.combo-mclose { display: none; }
/* Мобайл: выпадашка комбо = полноэкранная модалка с поиском сверху */
@media (max-width: 600px) {
  .combo--open { position: fixed; inset: 0; z-index: 4000; background: var(--surface); padding: 16px 14px; display: flex; flex-direction: column; }
  .combo--open .combo-input { width: 100%; height: 48px; font-size: 16px; padding-right: 46px; }
  .combo--open .combo-list { position: static; display: block; max-height: none; flex: 1; margin: 12px 0 0; border: none; box-shadow: none; border-radius: 0; overflow-y: auto; }
  .combo--open .combo-list .combo-opt { padding: 14px 12px; font-size: 15px; border-bottom: 1px solid var(--drv-k-06); }
  .combo--open .combo-mclose { display: flex; align-items: center; justify-content: center; position: absolute; top: 16px; right: 12px;
    width: 42px; height: 48px; border: none; background: transparent; font-size: 30px; line-height: 1; color: var(--drv-text-muted); cursor: pointer; z-index: 2; }
  body.combo-modal-open { overflow: hidden; }
}

/* редактор прайса */
.price-row { display: flex; align-items: center; gap: 14px; padding: 6px 0; border-bottom: 1px solid var(--drv-k-06); }
.price-row:last-child { border-bottom: none; }
.price-label { flex: 1; font-size: 14px; }
.price-row input { width: 180px; padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font-family: inherit; font-size: 14px; }

/* редактор текстов */
.field { margin-bottom: 14px; }
.field label { display: block; font-size: var(--drv-fs-tiny); color: var(--drv-text-faint); margin-bottom: 5px; font-family: ui-monospace, monospace; }
.field input, .field textarea { width: 100%; padding: 10px 13px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); }
.field textarea { resize: vertical; }

/* ---------- вход ---------- */
.login-wrap { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 20px; }
.login-card { background: var(--surface); padding: 44px 40px; border-radius: var(--drv-radius-modal); border: 1px solid var(--drv-k-06); box-shadow: var(--drv-shadow-card-hover); width: 360px; }
.login-card .logo-mark { display: flex; justify-content: center; margin-bottom: 18px; }
.login-card .logo-mark img { height: 64px; filter: brightness(0) invert(1); opacity: .92; }
.login-card h1 { text-align: center; font-size: 26px; margin-bottom: 6px; }
.login-card .sub { text-align: center; color: var(--drv-text-faint); font-size: 14px; margin-bottom: 24px; }
.login-card input { width: 100%; padding: 13px 15px; margin-bottom: 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 15px; background: var(--drv-bg); color: var(--drv-text); }
.login-card .btn { width: 100%; padding: 14px; font-size: 14px; }
.login-card .alt { text-align: center; margin-top: 16px; font-size: 14px; }
.login-card .alt a { color: var(--drv-red); }
.err { color: var(--drv-red); font-size: 14px; margin-bottom: 12px; text-align: center; }

/* связки мессенджеров */
.linkrow { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--drv-k-06); }
.linkrow img { width: 28px; height: 28px; }
.code-box { font-size: 22px; font-weight: var(--drv-w-bold); letter-spacing: .1em; background: var(--drv-bg); padding: 14px 20px; border-radius: var(--drv-radius-sm); display: inline-block; }

/* ---------- адаптив ---------- */
/* ---------- продукты-чекбоксы (в окнах сделки) ---------- */
.checks { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; }
.kb-form .checks label, .check { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: var(--drv-w-regular); color: var(--drv-text); cursor: pointer; text-transform: none; letter-spacing: normal; }
.check input { width: auto; margin: 0; flex: none; accent-color: var(--drv-red); }

/* ---------- карточка сделки ---------- */
.deal-view h2 { font-size: 20px; }
.deal-view .prow { font-size: 14px; padding: 4px 0; color: var(--drv-text-muted); }
.deal-view .prow b { color: var(--drv-text); font-weight: var(--drv-w-medium); }
.deal-view .panel { padding: 14px 18px !important; }
.deal-stats { grid-template-columns: repeat(3, 1fr); }
.deal-stats .card { padding: 15px 17px; border-radius: var(--drv-radius-sm); }
.deal-stats .num { font-size: 24px; }
.deal-stats .num.money { font-size: 22px; }
.deal-stats .num.sm { font-size: 16px; white-space: normal; font-weight: var(--drv-w-medium); }
@media (max-width: 560px) { .deal-stats { grid-template-columns: 1fr; } }
.hdr-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* воронка-степпер в карточке */
/* Воронка-степпер сделки (свой неймспейс - чтобы не пересекаться с другими степперами). */
.deal-pipe { display: flex; gap: 5px; margin: 6px 0 18px; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
.deal-pipe::-webkit-scrollbar { display: none; }
.dp-step { flex: 1; min-width: 84px; display: flex; flex-direction: column; align-items: center; gap: 8px;
  background: transparent; border: none; cursor: pointer; font-family: inherit; padding: 2px 2px 4px; }
.dp-dot { width: 100%; height: 6px; border-radius: 999px; background: var(--drv-k-08); transition: background var(--drv-transition-fast); }
.dp-lbl { font-size: 11.5px; color: var(--drv-text-faint); text-align: center; line-height: 1.2; transition: color var(--drv-transition-fast); }
.dp-step.done .dp-dot { background: #2faa63; }
.dp-step.done .dp-lbl { color: var(--drv-text-muted); }
.dp-step.cur .dp-dot { background: var(--drv-red); box-shadow: 0 0 0 3px var(--drv-red-08); }
.dp-step.cur .dp-lbl { color: var(--drv-red); font-weight: var(--drv-w-medium); }
.dp-step:hover .dp-dot { background: var(--drv-red-hover); }
.dp-step.done:hover .dp-dot { background: #2faa63; }

/* закрытие сделки (выиграна/отказ) */
.deal-close { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 14px; padding: 12px 14px; background: var(--drv-bg); border-radius: var(--drv-radius-sm); }
.deal-lost { display: flex; gap: 8px; align-items: center; }
.deal-lost input { padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 13px; background: var(--surface); color: var(--drv-text); }

/* вкладки и фильтры воронки */
.deal-tabs { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.dtab { padding: 7px 14px; border-radius: var(--drv-radius-pill); font-size: 14px; color: var(--drv-text-muted); background: var(--drv-k-06); }
.dtab:hover { color: var(--drv-text); }
.dtab.active { background: var(--drv-red); color: #fff; }
.dtab-c { font-size: 12px; opacity: .8; margin-left: 3px; }
.dtab-filter { margin-left: auto; }
.dtab-filter.on { border-color: var(--drv-red); color: var(--drv-red); }
.deal-filters { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 14px; padding: 12px 14px; background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); }
.deal-filters select, .deal-filters input { padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); }
.deal-filters input { width: 130px; }
/* Заголовки разделов - единый стиль дизайн-системы (мелкий КАПС, как .dcsec__t в карточке сделки).
   Раньше был 15px medium Title Case - расходился с эталоном. Теперь одинаково на ВСЕХ страницах. */
.sec-title { margin: 22px 0 12px; font-size: var(--fs-2xs); font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-caps); text-transform: uppercase; color: var(--f); }
/* deal-edit-inline наследует единый ритм .kb-form; чекбоксы продуктов - без отступа */
.deal-edit-inline .checks label { margin: 0; }

/* ---------- квиз генерации документа ---------- */
.quiz-info { display: flex; gap: 28px; flex-wrap: wrap; padding: 14px 16px; background: var(--drv-bg); border-radius: var(--drv-radius-sm); }
.quiz-info > div { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.quiz-info .muted { font-size: 12px; }
.warn-mini { color: var(--drv-red); font-size: 13px; }
.quiz-hint { font-size: 13px; color: var(--drv-text-muted); margin-top: 4px; }
.quiz-hint.warn { color: var(--drv-red); }
.pay-row { display: flex; gap: 8px; margin-bottom: 8px; }
.pay-row input { flex: 1; }
.pay-row input[type=date] { flex: none; width: 160px; }
.pay-row .pay-cond { flex: 1.4; }
@media (max-width: 560px) { .pay-row { flex-wrap: wrap; } .pay-row input[type=date] { width: 100%; } }
/* карточки этапов работ */
.stage-card { border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); padding: 12px 14px; margin-bottom: 10px; }
.stage-head { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.stage-head input[name=stage_name] { flex: 1; }
.stage-head .stage-days { flex: none; width: 80px; }
.stage-card textarea { margin-bottom: 8px; }
.stage-card textarea:last-child { margin-bottom: 0; }

/* ---------- документы по сделке ---------- */
.doc-create { display: flex; gap: 6px; flex-wrap: wrap; }
.doc-list { display: flex; flex-direction: column; gap: 7px; }
.doc-row { display: flex; align-items: center; gap: 11px; padding: 9px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); }
.doc-row > svg { color: var(--drv-text-faint); flex: none; }
.doc-main { flex: 1; min-width: 0; }
.doc-main a { font-size: 14px; font-weight: var(--drv-w-medium); color: var(--drv-text); }
.doc-main a:hover { color: var(--drv-red); }
.doc-meta { font-size: 12px; color: var(--drv-text-faint); }
.doc-actions { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; white-space: nowrap; flex: none; }
.doc-row { flex-wrap: wrap; }
.doc-actions .copy-mini, .doc-actions .inline { flex: none; }
.copy-mini.danger { color: var(--drv-text-disabled); font-size: 15px; text-decoration: none; line-height: 1; }
.copy-mini.danger:hover { color: var(--drv-red); }
.pay-doc { background: transparent; border: none; cursor: pointer; color: var(--drv-text-faint); display: flex; padding: 0; }
.pay-doc:hover { color: var(--drv-red); }

/* ---------- этапы оплаты сделки ---------- */
.sec-title-row { display: flex; align-items: center; justify-content: space-between; }
.btn-sm { padding: 5px 11px; font-size: 12px; }
.portrait-text { font-size: 14px; line-height: 1.55; white-space: pre-wrap; }
/* поиск проектов с подсказками */
.proj-search { position: relative; margin: 0 0 14px; max-width: 460px; }
.proj-search > svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--drv-text-faint); }
.proj-search input { width: 100%; padding: 11px 14px 11px 38px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 14px; background: var(--surface); color: var(--drv-text); }
.proj-search input:focus { outline: none; border-color: var(--drv-red); }
.proj-sugg { top: calc(100% + 4px); }
.proj-sugg a.combo-opt { display: block; color: var(--drv-text); }
.proj-sugg a.combo-opt:hover { background: var(--drv-k-06); color: var(--drv-red); }

/* ---------- задачи ---------- */
.view-switch { display: inline-flex; gap: 2px; background: var(--drv-k-06); border-radius: var(--drv-radius-btn); padding: 3px; }
.vbtn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: var(--drv-radius-sm); font-size: 13px; color: var(--drv-text-muted); }
.vbtn.on { background: var(--surface); color: var(--drv-text); box-shadow: var(--drv-shadow-sm); }
.vbtn svg { width: 15px; height: 15px; }
.prio { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--drv-text-disabled); flex: none; }
.prio-high { background: var(--drv-red); } .prio-normal { background: #e6a23c; } .prio-low { background: var(--drv-text-disabled); }
.kcard-s .overdue, td.overdue { color: var(--drv-red); }
.tcard .kcard-s { display: flex; align-items: center; gap: 6px; }

/* календарь задач */
.cal { display: flex; flex-direction: column; gap: 14px; }
.cal-day { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 12px 16px; }
.cal-date { font-weight: var(--drv-w-medium); font-size: 14px; margin-bottom: 8px; }
.cal-task { display: block; padding: 7px 10px; border-radius: var(--drv-radius-sm); border-left: 3px solid var(--drv-k-12); margin-bottom: 6px; font-size: 14px; color: var(--drv-text); background: var(--drv-bg); }
.cal-task:hover { border-left-color: var(--drv-red); }
.cal-task.prio-l-high { border-left-color: var(--drv-red); }
.cal-task.prio-l-normal { border-left-color: #e6a23c; }
.cal-time { font-size: 12px; color: var(--drv-text-faint); margin-right: 6px; }

/* карточка задачи: две колонки */
.task-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 18px; align-items: start; }
.task-main { min-width: 0; }
.task-rail { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 16px 18px; position: sticky; top: 0; }
.task-rail .prow { font-size: 13px; padding: 5px 0; }
@media (max-width: 860px) { .task-layout { grid-template-columns: 1fr; } }
.stepper { display: flex; flex-wrap: wrap; gap: 6px; }
.stepper .step { padding: 7px 14px; border-radius: var(--drv-radius-btn); border: 1px solid var(--drv-k-06); background: var(--surface); color: var(--drv-text-muted); cursor: pointer; font-family: inherit; font-size: 13px; }
.stepper .step:hover { border-color: var(--drv-red); color: var(--drv-red); }
.stepper .step.active { background: var(--drv-red); color: #fff; border-color: var(--drv-red); }

/* воронки (pipelines) */
.pipe-select { padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 13px; cursor: pointer; }
.pipe-stages { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; }
.pipe-stage { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: var(--drv-radius-pill); background: var(--drv-k-06); font-size: 13px; }
.pipe-stage.paid { background: var(--drv-success-soft); color: var(--drv-success); }
.pipe-x { background: transparent; border: none; cursor: pointer; color: var(--drv-text-faint); font-size: 14px; line-height: 1; padding: 0; }
.pipe-x:hover { color: var(--drv-red); }
.pipe-stage-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pipe-stage-form input { flex: 1; min-width: 160px; padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); }
.pipe-stage-form select { flex: none; }

.auto-toggle { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--drv-text-muted); cursor: pointer; }
.auto-toggle input { width: auto; margin: 0; }
.row-actions { text-align: right; white-space: nowrap; }
.row-actions .inline { display: inline-block; }
/* «...»-меню действий сотрудника (Настройки → Пользователи и доступы) */
.row-acts { display: inline-flex; align-items: center; gap: 6px; justify-content: flex-end; }
.row-acts .inline { margin: 0; }
.umenu { position: relative; display: inline-block; }
.umenu-trigger { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--drv-k-12); background: var(--surface); color: var(--drv-text-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; }
.umenu-trigger:hover { border-color: var(--drv-red); color: var(--drv-red); }
.umenu-trigger i, .umenu-trigger svg { width: 17px; height: 17px; }
.umenu-pop { position: fixed; display: none; min-width: 216px; background: var(--surface); border: 1px solid var(--drv-k-12); border-radius: 12px; box-shadow: 0 14px 36px rgba(0,0,0,.16); z-index: 200; padding: 6px; }
.umenu-pop.open { display: block; }
.umenu-pop form { margin: 0; }
.umenu-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 12px; border: 0; background: none; font: inherit; font-size: 13.5px; color: var(--drv-text); cursor: pointer; border-radius: 8px; text-align: left; white-space: nowrap; }
.umenu-item:hover { background: var(--drv-k-06); }
.umenu-item i, .umenu-item svg { width: 16px; height: 16px; color: var(--drv-text-faint); flex: none; }
.umenu-item.danger { color: var(--drv-red); }
.umenu-item.danger i, .umenu-item.danger svg { color: var(--drv-red); }
.umenu-sep { height: 1px; background: var(--drv-k-08); margin: 5px 6px; }
/* дашборд: мини-график динамики лидов (столбики) */
.dash-chart { display: flex; align-items: flex-end; gap: 3px; height: 130px; }
.dash-bar-wrap { flex: 1; height: 100%; display: flex; align-items: flex-end; min-width: 2px; cursor: default; }
.dash-bar { width: 100%; background: var(--drv-red); border-radius: 3px 3px 0 0; min-height: 3px; transition: opacity var(--drv-transition-fast); }
.dash-bar-wrap:hover .dash-bar { opacity: .7; }

/* ---------- автоцепочки ---------- */
.camp { padding: 18px 20px; margin-top: 16px; }
.camp-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.camp-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.camp-sent { margin-left: 4px; font-size: 13px; }
.camp-link { margin-top: 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.camp-steps { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.camp-step { display: flex; gap: 12px; align-items: flex-start; padding: 10px 12px; background: var(--drv-bg); border-radius: var(--drv-radius-sm); }
.camp-step-no { flex: none; width: 24px; height: 24px; border-radius: 50%; background: var(--drv-red-10); color: var(--drv-red); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: var(--drv-w-medium); }
.camp-step-body { flex: 1; min-width: 0; font-size: 14px; }
.camp-step-meta { font-size: 12px; color: var(--drv-text-faint); margin-bottom: 3px; display: flex; align-items: center; gap: 5px; }
.camp-step-meta svg { width: 13px; height: 13px; }
.camp-addstep { margin-top: 14px; }
.camp-step-form { max-width: 100% !important; }

/* пустое состояние (нет данных) */
.empty-card { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 30px 24px; text-align: center; margin-top: 14px;
  border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); background: var(--surface); }
.empty-card svg { width: 22px; height: 22px; color: var(--drv-text-muted); }
.empty-card p { margin: 0; color: var(--drv-text-faint); font-size: 13.5px; max-width: 440px; line-height: 1.5; }
/* компактное пустое состояние внутри панели/списка (вместо голого .muted-текста) */
.empty-note { display: flex; align-items: center; gap: 11px; padding: 16px 16px; color: var(--drv-text-faint);
  font-size: 13.5px; line-height: 1.5; background: var(--drv-bg); border: 1px dashed var(--drv-k-12); border-radius: var(--drv-radius-card); }
.empty-note > i { width: 19px; height: 19px; flex: none; opacity: .75; }
.empty-note b { color: var(--drv-text-muted); font-weight: var(--drv-w-semibold); }
.empty-note a { color: var(--drv-red); }
.empty-note--sm { padding: 12px 14px; font-size: 13px; }

/* ===== Настройки → Хранилище и очистка ===== */
.st-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); gap: 12px; margin: 18px 0 4px; }
.st-card { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 13px 16px; }
.st-card--warn { border-color: var(--drv-red); background: var(--drv-red-08); }
.st-k { font-size: 11px; color: var(--drv-text-faint); text-transform: uppercase; letter-spacing: .03em; }
.st-v { font-size: 26px; font-weight: var(--drv-w-semibold); line-height: 1.1; margin: 3px 0; }
.st-sub { font-size: 12px; color: var(--drv-text-muted); }
.st-block { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--drv-k-06); }
.st-block h3 { margin: 0 0 6px; font-size: 15px; }
.orphan-list { max-height: 300px; overflow-y: auto; margin: 8px 0 14px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); }
.orphan-row { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-bottom: 1px solid var(--drv-k-06); }
.orphan-row:last-child { border-bottom: none; }
.orphan-row img { width: 34px; height: 34px; border-radius: 6px; object-fit: cover; flex: none; background: var(--drv-k-06); }
.orphan-n { flex: 1; min-width: 0; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orphan-meta { flex: none; font-size: 12px; }
.orphan-ack { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; margin: 4px 0; cursor: pointer; line-height: 1.4; }
.orphan-ack input { margin-top: 2px; width: 16px; height: 16px; accent-color: var(--drv-red); flex: none; }

/* Карточки шаблонов брифов (/generator?kind=brief). */
/* Карточки черновиков/готовых аудитов-КП. Роёмче, заголовок переносится (не режется),
   мета - чипами, действия - в подвале с разделителем (в одном стиле с .tpl-card брифов). */
.gen-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; }
.gen-card { display: flex; flex-direction: column; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-card);
  background: var(--surface); transition: border-color var(--drv-transition-fast), transform var(--drv-transition-fast); }
.gen-card:hover { border-color: var(--drv-red); transform: translateY(-3px); }
.gen-card__top { display: flex; gap: 14px; align-items: flex-start; padding: 20px 20px 16px; }
.gen-card__icon { width: 46px; height: 46px; border-radius: 13px; background: var(--drv-red-08); color: var(--drv-red); display: flex; align-items: center; justify-content: center; flex: none; }
.gen-card__icon i { width: 22px; height: 22px; }
.gen-card__body { flex: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.gen-card__title { font-size: 15.5px; font-weight: var(--drv-w-semibold); line-height: 1.3; word-break: break-word;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gen-card__chips { display: flex; gap: 6px; flex-wrap: wrap; }
.gen-card__foot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between;
  padding: 12px 16px; border-top: 1px solid var(--drv-k-06); }
.gen-card__foot-l { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; min-width: 0; }
.gen-card__foot-r { display: flex; gap: 6px; align-items: center; flex: none; margin-left: auto; }

/* Фильтр генератора: активные/архив + ниши-пресеты. */
.gen-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-bottom: 16px; }
.gen-filter__sep { width: 1px; height: 18px; background: var(--drv-k-12); margin: 0 4px; }
.gen-chip { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border: 1px solid var(--drv-k-12); border-radius: 999px;
  font-size: 12.5px; color: var(--drv-text-muted); text-decoration: none; cursor: pointer; }
.gen-chip:hover { border-color: var(--drv-red); color: var(--drv-red); }
.gen-chip.on { background: var(--drv-red); border-color: var(--drv-red); color: #fff; }
.gen-chip i { width: 14px; height: 14px; }
.tpl-chip--niche { background: var(--drv-red-08); color: var(--drv-red); }

/* Карточки шаблонов брифов - явные, кликабельные, с панелью действий. */
.tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.tpl-card { display: flex; flex-direction: column; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-card);
  background: var(--surface); overflow: hidden; transition: border-color var(--drv-transition-fast), transform var(--drv-transition-fast); }
.tpl-card:hover { border-color: var(--drv-red); transform: translateY(-3px); }
.tpl-card__main { display: flex; gap: 15px; align-items: flex-start; padding: 22px 22px 18px; text-decoration: none; color: inherit; }
.tpl-card__icon { width: 48px; height: 48px; flex: none; border-radius: 14px; background: var(--drv-red-08); color: var(--drv-red);
  display: flex; align-items: center; justify-content: center; }
.tpl-card__icon i { width: 23px; height: 23px; }
.tpl-card__txt { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.tpl-card__title { font-size: 16px; font-weight: var(--drv-w-semibold); line-height: 1.25; }
.tpl-card__chips { display: flex; gap: 6px; flex-wrap: wrap; }
.tpl-chip { font-size: 11.5px; font-weight: var(--drv-w-medium); padding: 2px 9px; border-radius: 999px;
  background: var(--drv-k-06); color: var(--drv-text-muted); }
.tpl-card__date { font-size: 12px; }
.tpl-card__foot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; padding: 12px 14px; border-top: 1px solid var(--drv-k-06); }
.tpl-card__foot .btn { flex: none; }
.tpl-foot-l { display: flex; gap: 8px; align-items: center; }
.tpl-foot-r { display: flex; gap: 6px; align-items: center; }
.tpl-iconbtn { width: 34px; height: 34px; flex: none; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: transparent; color: var(--drv-text-faint); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.tpl-iconbtn:hover { color: var(--drv-text); border-color: var(--drv-red); }
.tpl-iconbtn.danger:hover { color: var(--drv-red); border-color: var(--drv-red); }
.tpl-iconbtn i { width: 16px; height: 16px; }

/* Лончер конструктора аудитов/КП - крупные карточки на всю ширину. */
.gen-launch { display: flex; flex-direction: column; gap: 12px; }
.gen-launch-card { display: flex; align-items: center; gap: 16px; padding: 20px 22px; border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-card); background: var(--surface); text-decoration: none; color: inherit;
  transition: border-color var(--drv-transition-fast), transform var(--drv-transition-fast); }
.gen-launch-card:hover { border-color: var(--drv-red); transform: translateY(-2px); }
.gen-launch-card__ic { width: 52px; height: 52px; flex: none; border-radius: 14px; background: var(--drv-red-08); color: var(--drv-red);
  display: flex; align-items: center; justify-content: center; }
.gen-launch-card__ic i { width: 26px; height: 26px; }
.gen-launch-card__tx { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.gen-launch-card__tx b { font-size: 17px; font-weight: var(--drv-w-semibold); }
.gen-launch-card__tx .muted { font-size: 13px; line-height: 1.45; }
.gen-launch-card__go { width: 22px; height: 22px; color: var(--drv-text-faint); flex: none; }
.gen-launch-card--ghost { background: var(--drv-bg); }
.gen-launch-card--ghost .gen-launch-card__ic { background: var(--drv-k-06); color: var(--drv-text-muted); width: 44px; height: 44px; }
.gen-launch-card--ghost .gen-launch-card__ic i { width: 21px; height: 21px; }
.gen-launch-card--ghost .gen-launch-card__tx b { font-size: 15px; font-weight: var(--drv-w-medium); }

/* Лента комментариев компании (карточка контрагента). */
.co-act { border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 11px 14px; margin-bottom: 9px; background: var(--surface); }
.co-act-h { display: flex; gap: 8px; align-items: baseline; margin-bottom: 5px; font-size: 13px; }
.co-act-h .muted { font-size: 11.5px; }
.co-act-t { font-size: 13.5px; line-height: 1.5; color: var(--drv-text); white-space: pre-wrap; word-break: break-word; }
.pay-progress { display: flex; flex-direction: column; gap: 7px; font-size: 13px; color: var(--drv-text-muted); margin-bottom: 10px; }
.pay-progress b { color: var(--drv-success); font-weight: var(--drv-w-medium); }
.pay-bar { height: 6px; border-radius: 999px; background: var(--drv-k-06); overflow: hidden; }
.pay-bar-fill { height: 100%; background: var(--drv-success); border-radius: 999px; transition: width .2s; }
.pay-list { display: flex; flex-direction: column; gap: 7px; }
.pay { display: flex; align-items: center; gap: 11px; padding: 9px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); }
.pay-done { background: var(--drv-success-soft); border-color: transparent; }
.pay-check { background: transparent; border: none; cursor: pointer; color: var(--drv-text-faint); display: flex; padding: 0; }
.pay-done .pay-check { color: var(--drv-success); }
.pay-check:hover { color: var(--drv-success); }
.pay-main { flex: 1; min-width: 0; }
.pay-label { font-size: 14px; font-weight: var(--drv-w-medium); }
.pay-done .pay-label { text-decoration: line-through; color: var(--drv-text-muted); }
.pay-meta { font-size: 12px; color: var(--drv-text-faint); }
.pay-amount { font-size: 14px; font-weight: var(--drv-w-medium); white-space: nowrap; }
.pay-del { background: transparent; border: none; cursor: pointer; color: var(--drv-text-disabled); display: flex; padding: 0; }
.pay-del:hover { color: var(--drv-red); }
.pay-empty { font-size: 13px; }
.pay-form { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.pay-form input { flex: 1; min-width: 120px; padding: 9px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); }
.pay-form input:focus { outline: none; border-color: var(--drv-red); }
.pay-form .btn { flex: none; }

/* ---------- подсказки по сделке (Этап 4) ---------- */
.hints { display: flex; flex-direction: column; gap: 7px; margin-top: 14px; }
.hint { display: flex; align-items: center; gap: 9px; padding: 9px 13px; border-radius: var(--drv-radius-sm); font-size: 13px; border: 1px solid transparent; }
.hint svg { width: 15px; height: 15px; flex: none; }
.hint span { min-width: 0; }
.hint-warn { background: var(--drv-red-08); color: var(--drv-red); border-color: var(--drv-red-08); }
.hint-info { background: var(--drv-k-06); color: var(--drv-text-muted); }
.hint-ok   { background: rgba(46, 160, 95, .12); color: #2ea05f; }
.hint-tip  { background: var(--drv-k-06); color: var(--drv-text); }

/* ---------- лента активности в карточке сделки ---------- */
.act-form { margin-bottom: 18px; }
.act-form textarea, .act-form select {
  width: 100%; padding: 11px 13px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); resize: vertical;
}
.act-form textarea { min-height: 58px; line-height: 1.4; }
.act-form textarea::placeholder { color: var(--drv-text-disabled); }
.act-form textarea:focus, .act-form select:focus { outline: none; border-color: var(--drv-red); }
.act-form-row { display: flex; gap: 8px; margin-top: 8px; align-items: center; }
.act-form-row select { width: auto; flex: none; min-width: 150px; }
.act-form-row .btn { margin-left: auto; }

.timeline { display: flex; flex-direction: column; gap: 14px; }
.act { display: flex; gap: 11px; align-items: flex-start; }
/* лента комментариев пузырями (как .cmt в карточке сделки): имя/время сверху, текст в мягком блоке */
.act-text { font-size: var(--fs-sm); margin-top: 4px; white-space: pre-wrap; line-height: var(--lh-base);
  background: var(--soft); border-radius: var(--r-md); padding: 10px 13px; }
.act-meta { display: flex; align-items: center; gap: 6px; font-size: var(--fs-2xs); color: var(--f); }
.act-meta b { color: var(--t); font-weight: var(--fw-medium); font-size: var(--fs-xs); }
.act-meta svg { width: 13px; height: 13px; }
.act-event .act-meta svg { color: var(--r); }
.act-system .act-text { color: var(--m); font-size: var(--fs-sm); }
.act-del { background: transparent; border: none; cursor: pointer; color: var(--drv-text-disabled); font-size: 15px; line-height: 1; padding: 0 2px; margin-left: 4px; }
.act-del:hover { color: var(--drv-red); }
.act-body { flex: 1; min-width: 0; }

/* аватарка (кружок с инициалом, единый стиль для всех пользователей) */
.avatar {
  flex: none; width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: var(--drv-w-medium); color: #fff; text-transform: uppercase;
  background: var(--drv-red); overflow: hidden;
}
.avatar img { width: 100%; height: 100%; object-fit: cover; }
.avatar.sm { width: 26px; height: 26px; font-size: 11px; }
.act-system .avatar { background: var(--drv-k-12); color: var(--drv-text-faint); }

@media (max-width: 860px) {
  .checks { grid-template-columns: 1fr; }
  .layout { flex-direction: column; }
  .sidebar { width: auto; height: auto; position: static; overflow: visible; }
  .nav-scroll { max-height: 50vh; }
  .content { height: auto; overflow: visible; padding: 22px 16px; }
  .content > * { max-width: 100%; }
  table { font-size: 13px; }
  th, td { padding: 9px 10px; }
  /* на мобиле icon-rail не применяем - меню всегда развёрнуто */
  html.nav-rail .sidebar { width: auto; padding: 18px 12px; }
  html.nav-rail .nav-label { display: inline; }
  html.nav-rail .navlink, html.nav-rail .navg-title,
  html.nav-rail .rail-toggle, html.nav-rail .theme-toggle, html.nav-rail .logout { justify-content: flex-start; gap: 11px; padding: 10px 14px; }
  html.nav-rail .navlink.solo:hover::after, html.nav-rail .rail-toggle:hover::after,
  html.nav-rail .theme-toggle:hover::after, html.nav-rail .logout:hover::after { display: none; }
}

/* ---------- карточка задачи: overhaul ---------- */
.avatar.xs { width: 22px; height: 22px; font-size: 10px; }
.rail-person { display: flex; align-items: center; gap: 7px; }
.task-toprow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* статус выпадашкой (цветной) */
.status-select {
  font-family: inherit; font-size: 13px; font-weight: var(--drv-w-medium);
  padding: 7px 30px 7px 13px; border-radius: 999px; border: 1px solid transparent;
  cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center;
}
.status-select:focus { outline: none; }
.stat-gray   { background-color: var(--drv-k-12); color: var(--drv-text-muted); }
.stat-blue   { background-color: rgba(56,132,255,.14); color: #3884ff; }
.stat-orange { background-color: rgba(230,162,60,.16); color: #c9821e; }
.stat-green  { background-color: rgba(46,160,95,.14); color: #2ea05f; }

/* описание в HTML */
.rt-content { font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; }
.rt-content a { word-break: break-all; }
.rt-content ul, .rt-content ol { padding-left: 22px; margin: 6px 0; }
.rt-content a { color: var(--drv-red); }
.rt-content p { margin: 6px 0; }

/* мини-редактор описания */
.rt-toolbar { display: flex; gap: 4px; margin-bottom: 0; }
.rt-toolbar button {
  border: 1px solid var(--drv-k-06); background: var(--surface); color: var(--drv-text-muted);
  border-radius: var(--drv-radius-sm); padding: 4px 10px; cursor: pointer; font-family: inherit; font-size: 13px;
}
.rt-toolbar button:hover { border-color: var(--drv-red); color: var(--drv-red); }
.rt-editor {
  min-height: 90px; border: 1px solid var(--drv-k-06); border-top: none; border-radius: 0 0 var(--drv-radius-btn) var(--drv-radius-btn);
  padding: 11px 13px; font-size: 14px; line-height: 1.5; background: var(--drv-bg); color: var(--drv-text); overflow-y: auto;
}
.rt-editor:focus { outline: none; border-color: var(--drv-red); }
.rt-editor ul { padding-left: 22px; }

/* комбобокс выбора специалиста (значение = текст) */
.combo-opt[onclick*="comboPickText"] { white-space: nowrap; }

/* срок-миниатюра на карточке */
.dl-mini { display: inline-flex; align-items: center; gap: 3px; color: var(--drv-text-faint); }
.dl-mini svg { width: 12px; height: 12px; }
.dl-mini.overdue { color: var(--drv-red); }

/* правая часть футера карточки: комментарии + аватар */
.kcard-right { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; }
.cc-badge { display: inline-flex; align-items: center; gap: 3px; color: var(--drv-text-faint); position: relative; }
.cc-badge svg { width: 13px; height: 13px; }
.cc-new { display: none; }
.cc-new.on {
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--drv-red); color: #fff; font-size: 9px; font-weight: var(--drv-w-medium);
  border-radius: 999px; padding: 0 5px; height: 14px; line-height: 14px; margin-left: 1px;
}

/* ---------- вложения задачи ---------- */
.files-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; margin: 4px 0 12px; }
.file-tile { position: relative; display: flex; flex-direction: column; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); overflow: hidden; background: var(--surface); }
.file-thumb { display: flex; align-items: center; justify-content: center; height: 110px; background: var(--drv-k-06); overflow: hidden; }
.file-thumb img { width: 100%; height: 100%; object-fit: cover; }
.file-ico { color: var(--drv-text-faint); }
.file-ico svg { width: 38px; height: 38px; }
.file-meta { padding: 8px 10px; min-width: 0; }
.file-name { display: block; font-size: 13px; font-weight: var(--drv-w-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--drv-text); }
.file-name:hover { color: var(--drv-red); }
.file-size { font-size: 11px; color: var(--drv-text-faint); }
.file-del { position: absolute; top: 6px; right: 6px; background: rgba(0,0,0,.45); border: none; color: #fff; border-radius: 6px; padding: 4px; cursor: pointer; display: flex; opacity: 0; transition: opacity .15s; }
.file-del svg { width: 14px; height: 14px; }
.file-tile:hover .file-del { opacity: 1; }
.file-del:hover { background: var(--drv-red); }
.file-add { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; margin-bottom: 4px; }
.file-uploading { font-size: 12px; color: var(--drv-text-faint); }

/* ============ Задачи: статусы-тона, инлайн-правка, рейл, пикеры ============ */
/* мягкая палитра статусов */
.stat-slate  { background-color: rgba(100,116,139,.14); color: #5b6677; }
.stat-blue   { background-color: rgba(56,132,255,.14);  color: #2f6fd6; }
.stat-amber  { background-color: rgba(217,154,43,.16);  color: #b07d1d; }
.stat-violet { background-color: rgba(139,92,246,.15);  color: #7a52d8; }
.stat-green  { background-color: rgba(46,160,95,.15);   color: #258a51; }
.stat-gray   { background-color: var(--drv-k-12);       color: var(--drv-text-muted); }

/* подкраска карточек на доске по статусу (мягко, слева) */
.tcard { border-left: 3px solid transparent; }
.tcard.tone-slate  { border-left-color: #94a3b8; }
.tcard.tone-blue   { border-left-color: #6aa0ff; }
.tcard.tone-amber  { border-left-color: #e6b65a; }
.tcard.tone-violet { border-left-color: #a989f3; }
.tcard.tone-green  { border-left-color: #5cbd86; }
/* завершённая задача - в оттенках серого (приглушена, обесцвечена) */
.tcard.tone-gray   { border-left-color: var(--drv-k-12); background: var(--drv-k-06); opacity: .72; filter: grayscale(.75); }
.tcard.tone-gray .kcard-t, .tcard.tone-gray .kcard-m, .tcard.tone-gray .proj-badge { color: var(--drv-text-muted); }
.tcard.tone-gray:hover { opacity: .9; }

/* плашка проекта */
.proj-badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px;
  background: var(--drv-k-06); color: var(--drv-text-muted); font-size: 12px; cursor: pointer; max-width: 240px; }
.proj-badge i { width: 13px; height: 13px; flex: none; }
.proj-badge span, .proj-badge { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.proj-badge:hover { background: var(--drv-k-12); color: var(--drv-text); }
.proj-badge.sm { padding: 2px 8px; font-size: 11px; max-width: 100%; }
.proj-combo { position: relative; display: inline-block; }
.proj-combo .combo-list { min-width: 240px; }

/* рейл: подпись сверху, значение снизу */
.task-rail { display: flex; flex-direction: column; gap: 2px; }
.rfield { padding: 7px 0; border-bottom: 1px solid var(--drv-k-06); }
.rfield:last-child { border-bottom: none; }
.rlabel { font-size: 11px; text-transform: uppercase; letter-spacing: .03em; color: var(--drv-text-faint); margin-bottom: 3px; }
.rvalue { font-size: 14px; color: var(--drv-text); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rfield.muted-row { font-size: 12px; color: var(--drv-text-faint); border-bottom: none; }
.rvalue .pay-bar { flex: 1; min-width: 80px; }

/* инлайн-правка текста */
.ied { cursor: text; border-radius: 5px; padding: 1px 4px; margin: -1px -4px; transition: background .12s; }
.ied:hover { background: var(--drv-k-06); }
.ied-title { font-size: 20px; margin: 0; word-break: break-word; min-width: 0; flex: 1 1 100%; }
.ied-input { font: inherit; width: 100%; min-width: 60px; border: 1px solid var(--drv-red); border-radius: 5px;
  padding: 3px 6px; background: var(--drv-bg); color: var(--drv-text); }
textarea.ied-input { resize: vertical; }

/* мини-селекты в рейле */
.mini-select { font-family: inherit; font-size: 13px; padding: 4px 8px; border-radius: 7px; border: 1px solid var(--drv-k-06);
  background: var(--drv-bg); color: var(--drv-text); cursor: pointer; }
.mini-select:focus { outline: none; border-color: var(--drv-red); }
.prio-sel.prio-high { color: var(--drv-red); } .prio-sel.prio-normal { color: #c9821e; } .prio-sel.prio-low { color: var(--drv-text-muted); }

/* комбобокс выбора человека в рейле */
.combo-person { position: relative; flex: 1; min-width: 120px; }
.combo-person .combo-input { width: 100%; padding: 4px 8px; border: 1px solid transparent; border-radius: 7px;
  background: transparent; color: var(--drv-text); font-family: inherit; font-size: 14px; }
.combo-person .combo-input:hover { background: var(--drv-k-06); }
.combo-person .combo-input:focus { outline: none; border-color: var(--drv-red); background: var(--drv-bg); }

/* плашка даты (клик → календарь) */
.date-pill { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 7px;
  background: var(--drv-k-06); color: var(--drv-text); font-size: 13px; cursor: pointer; }
.date-pill:hover { background: var(--drv-k-12); }
.date-pill i { width: 13px; height: 13px; }
.date-pill.overdue { background: var(--drv-red-08); color: var(--drv-red); }

/* пустое описание - подсказка */
.rt-editor:empty:before { content: attr(data-placeholder); color: var(--drv-text-disabled); }
.rt-hint { font-size: 12px; margin-left: auto; }

/* ============ лайки ленты ============ */
.like-wrap { display: flex; align-items: center; gap: 8px; margin-top: 5px; }
.like-btn { display: inline-flex; align-items: center; gap: 4px; background: transparent; border: 1px solid var(--drv-k-06);
  border-radius: 999px; padding: 2px 9px; cursor: pointer; color: var(--drv-text-faint); font-size: 12px; }
.like-btn i { width: 13px; height: 13px; }
.like-btn:hover { border-color: var(--drv-red); color: var(--drv-red); }
.like-btn.on { background: var(--drv-red-08); border-color: transparent; color: var(--drv-red); }
.like-who { font-size: 11px; color: var(--drv-text-faint); }

/* ============ @-упоминания ============ */
.ment-pop { position: absolute; z-index: 1200; display: none; background: var(--surface); border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-sm); box-shadow: var(--drv-shadow, 0 8px 28px rgba(0,0,0,.16)); min-width: 180px; max-height: 230px; overflow-y: auto; padding: 4px; }
.ment-pop.open { display: block; }
.ment-opt { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 6px; cursor: pointer; font-size: 14px; }
.ment-opt:hover, .ment-opt.on { background: var(--drv-red-08); color: var(--drv-red); }
/* буквенная аватарка в выпадашках команды/спецов (@-упоминания и др.) */
.ment-ava { width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 11px; font-weight: var(--drv-w-semibold); flex: none; }

/* ============ кастомный календарь ============ */
.cal-pop { position: absolute; z-index: 1300; display: none; width: 276px; background: var(--surface);
  border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); box-shadow: 0 10px 34px rgba(0,0,0,.18); padding: 12px; }
.cal-pop.open { display: block; }
.cal-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.cal-h b { font-size: 14px; }
.cal-h button { background: transparent; border: none; font-size: 20px; line-height: 1; cursor: pointer; color: var(--drv-text-muted); padding: 0 8px; border-radius: 6px; }
.cal-h button:hover { background: var(--drv-k-06); color: var(--drv-red); }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-wd { text-align: center; font-size: 11px; color: var(--drv-text-faint); padding: 4px 0; }
.cal-d { background: transparent; border: none; cursor: pointer; font-family: inherit; font-size: 13px; color: var(--drv-text);
  padding: 6px 0; border-radius: 7px; }
.cal-d:hover { background: var(--drv-k-06); }
.cal-d.sel { background: var(--drv-red); color: #fff; }
#cal-pop .cal-time { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.cal-time-lbl { font-size: 12px; color: var(--drv-text-faint); margin-right: auto; }
.cal-colon { font-weight: var(--drv-w-medium); color: var(--drv-text-muted); }
.cal-hm { padding: 7px 10px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); cursor: pointer; min-width: 58px; text-align: center; }
.cal-hm:focus { outline: none; border-color: var(--drv-red); }
.cal-foot { display: flex; justify-content: space-between; gap: 8px; margin-top: 10px; }

/* регулярные задачи */
.rec-check { display: flex; align-items: center; gap: 8px; margin: 12px 0 4px; font-size: 13px; color: var(--drv-text-muted); cursor: pointer; }
.rec-check input { width: auto; }
.toggle-pill { border: 1px solid var(--drv-k-06); background: var(--drv-k-06); color: var(--drv-text-muted);
  border-radius: 999px; padding: 3px 12px; font-size: 12px; cursor: pointer; font-family: inherit; }
.toggle-pill.on { background: var(--drv-success-soft); color: var(--drv-success); border-color: transparent; }

/* всплывающее уведомление */
.toast { position: fixed; bottom: 22px; left: 50%; transform: translate(-50%, 20px); z-index: 2000;
  background: var(--drv-text); color: var(--drv-bg); padding: 12px 20px; border-radius: 999px; font-size: 14px;
  box-shadow: 0 8px 28px rgba(0,0,0,.22); opacity: 0; transition: opacity .25s, transform .25s; pointer-events: none; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ====== полировка карточки задачи (батч) ====== */
/* мелкие пустые состояния везде */
.empty-mini { font-size: 12px; color: var(--drv-text-disabled); padding: 6px 2px; }
.files-grid .empty-mini, .timeline .empty-mini { padding: 4px 2px; }

/* комментарий: выпадашка и кнопка одной высоты */
.act-form-row { display: flex; gap: 8px; align-items: center; }
.act-form-row select, .act-form-row .btn { height: 38px; box-sizing: border-box; }
.act-form-row .btn { display: inline-flex; align-items: center; gap: 6px; padding: 0 16px; }
.act-form-row .btn { margin-left: auto; }
.img-attach { display: inline-flex; align-items: center; gap: 5px; height: 38px; padding: 0 11px; border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-btn); cursor: pointer; color: var(--drv-text-faint); font-size: 12px; }
.img-attach:hover { border-color: var(--drv-red); color: var(--drv-red); }
.img-attach.has { border-color: var(--drv-red); color: var(--drv-red); }
.img-attach i { width: 16px; height: 16px; }

/* описание: отступы + действия + разделители тулбара */
.rt-toolbar { display: flex; align-items: center; gap: 3px; flex-wrap: wrap; padding: 6px 8px; border: 1px solid var(--drv-k-06);
  border-bottom: none; border-radius: var(--drv-radius-btn) var(--drv-radius-btn) 0 0; background: var(--drv-k-06); }
.rt-toolbar button { min-width: 28px; height: 26px; padding: 0 7px; }
.rt-sep { width: 1px; height: 18px; background: var(--drv-k-12); margin: 0 3px; }
.rt-editor { min-height: 96px; padding: 12px 14px; }
.rt-actions { display: flex; gap: 8px; margin-top: 8px; }

/* приоритет цветной выпадашкой с явной пометкой */
.prio-select { font-family: inherit; font-size: 13px; font-weight: var(--drv-w-medium); padding: 5px 12px 5px 24px;
  border-radius: 999px; border: 1px solid transparent; cursor: pointer; appearance: none; position: relative;
  background-repeat: no-repeat; background-position: left 9px center; background-size: 8px 8px; }
.prio-select.prio-high   { background-color: var(--drv-red-08); color: var(--drv-red);
  background-image: radial-gradient(circle, var(--drv-red) 50%, transparent 52%); }
.prio-select.prio-normal { background-color: rgba(217,154,43,.16); color: #b07d1d;
  background-image: radial-gradient(circle, #d99a2b 50%, transparent 52%); }
.prio-select.prio-low    { background-color: var(--drv-k-12); color: var(--drv-text-muted);
  background-image: radial-gradient(circle, #94a3b8 50%, transparent 52%); }
.prio-select:focus { outline: none; }

/* приоритет-точка на доске тоже по цветам (уже есть .prio-*) усилим high */
.kcard-t { overflow: hidden; }

/* картинка в комментарии */
.act-img { max-width: 220px; max-height: 160px; border-radius: var(--drv-radius-sm); margin-top: 6px; cursor: zoom-in;
  display: block; border: 1px solid var(--drv-k-06); object-fit: cover; }

/* плашка проекта - эллипсис при длинном имени */
.proj-badge { max-width: 220px; }
.task-toprow { min-width: 0; }

/* ====== лайтбокс ====== */
.lightbox { position: fixed; inset: 0; z-index: 1500; background: rgba(0,0,0,.78); display: none;
  flex-direction: column; padding: 28px; }
.lightbox.open { display: flex; }
.lb-top { display: flex; align-items: center; justify-content: space-between; color: #fff; margin-bottom: 14px; }
.lb-name { font-size: 14px; opacity: .9; }
.lb-actions { display: flex; align-items: center; gap: 14px; }
.lb-actions a, .lb-x { color: #fff; background: transparent; border: none; cursor: pointer; display: flex; opacity: .85; }
.lb-actions a:hover, .lb-x:hover { opacity: 1; }
.lb-body { flex: 1; display: flex; align-items: center; justify-content: center; min-height: 0; }
.lb-body img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; }
.lb-body iframe { width: 100%; height: 100%; border: none; background: #fff; border-radius: 6px; }

/* поиск по задачам */
.task-search { position: relative; margin: 0 0 16px; max-width: 520px; }
.task-search > i, .task-search > svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--drv-text-faint); pointer-events: none; z-index: 1; }
.task-search input { width: 100%; padding: 10px 14px 10px 36px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); box-sizing: border-box; }
.task-search input:focus { outline: none; border-color: var(--drv-red); }
.task-sugg { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 40; background: var(--surface);
  border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); box-shadow: 0 8px 28px rgba(0,0,0,.14);
  max-height: 280px; overflow-y: auto; display: none; padding: 4px; }
.task-sugg.open { display: block; }
.task-sugg-i { padding: 8px 12px; border-radius: 6px; cursor: pointer; font-size: 14px; }
.task-sugg-i:hover { background: var(--drv-red-08); color: var(--drv-red); }

/* опасная кнопка (удаление) */
.btn.danger { color: var(--drv-text-faint); }
.btn.danger:hover { color: #fff; background: var(--drv-red); border-color: var(--drv-red); }

/* компактная карточка компании */
.compact-form { max-width: 940px; }
.form-3col { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }
.form-3col > div { display: flex; flex-direction: column; }
.form-3col label { display: block; margin-bottom: 6px; }
@media (max-width: 720px){ .form-3col { grid-template-columns: 1fr; } }
.card-load { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; padding: 12px 16px;
  border: 1px dashed var(--drv-k-12); border-radius: var(--drv-radius-card); background: var(--drv-k-06); max-width: 940px; }
.card-load .inline { display: flex; align-items: center; gap: 12px; }
.card-load-btn { display: inline-flex; flex-direction: row; align-items: center; gap: 7px; cursor: pointer;
  padding: 8px 14px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  background: var(--surface); font-size: 13px; font-weight: var(--drv-w-medium); white-space: nowrap; }
.card-load-btn:hover { border-color: var(--drv-red); color: var(--drv-red); }
/* lucide заменяет <i> на <svg> (класс копируется, селектор `i` уже не матчит) - целимся в svg, чтобы
   иконка не разъезжалась на свою строку над текстом */
.card-load-btn i, .card-load-btn svg { width: 16px; height: 16px; flex: none; }

/* ====== батч 2: тулбар на фокус, активный формат, спиннер, лайки-ховер ====== */
/* описание: тулбар и кнопки скрыты, пока не кликнул в текст (чтобы можно было просто читать/копировать) */
.rt-wrap { position: relative; margin-bottom: 4px; }
.rt-wrap .rt-toolbar, .rt-wrap .rt-actions { display: none; }
.rt-wrap:focus-within .rt-toolbar { display: flex; }
.rt-wrap:focus-within .rt-actions { display: flex; }
.rt-wrap .rt-editor { border-radius: var(--drv-radius-btn); border: 1px solid var(--drv-k-06); }
.rt-wrap:focus-within .rt-editor { border-radius: 0 0 var(--drv-radius-btn) var(--drv-radius-btn); border-color: var(--drv-red); }
.rt-toolbar button.active { background: var(--drv-red-08); color: var(--drv-red); border-color: var(--drv-red); }

/* спиннер */
@keyframes spin { to { transform: rotate(360deg); } }
.spin { animation: spin .8s linear infinite; }

/* лайки: справа, ховер показывает кто лайкнул (аватарки) */
.like-wrap { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin-top: 6px; position: relative; }
.like-who-pop { display: none; position: absolute; right: 0; bottom: 100%; margin-bottom: 6px; background: var(--surface);
  border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-sm); box-shadow: 0 8px 24px rgba(0,0,0,.16);
  padding: 7px 10px; white-space: nowrap; z-index: 30; align-items: center; gap: 5px; }
.like-who-pop:empty { display: none !important; }
.like-wrap:hover .like-who-pop { display: flex; }
.like-ava { width: 22px; height: 22px; border-radius: 50%; background: var(--drv-red); color: #fff; display: inline-flex;
  align-items: center; justify-content: center; font-size: 10px; font-weight: var(--drv-w-medium); cursor: pointer; }
.like-who-names { font-size: 11px; color: var(--drv-text-muted); margin-left: 4px; }

/* комментарий-селект: не обрезается */
.act-form-row select { padding: 0 30px 0 12px; min-width: 150px; }

/* плашка проекта в карточке - кликабельна, размер как у статус-выпадашки */
.task-toprow .proj-badge { height: 32px; padding: 0 12px; box-sizing: border-box; }
.task-toprow .proj-badge.proj-none { cursor: default; }
.task-toprow .proj-badge.proj-none:hover { background: var(--drv-k-06); color: var(--drv-text-muted); }

/* кастомный календарь как поле формы */
.cal-field { margin-top: 2px; }
.cal-field .cal-disp { font-variant-numeric: tabular-nums; }
/* воздух в модалке создания */
.modal .kb-form .form-2col, .modal .kb-form .form-3col { margin-bottom: 12px; }
.modal .kb-form > label { display: block; margin-top: 4px; }

/* ====== календарь-вид (день/неделя/месяц/год) ====== */
.calx-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.calx-nav { display: flex; align-items: center; gap: 6px; }
.calx-nav .vbtn { padding: 6px 12px; }
.calx-title { font-size: 17px; font-weight: var(--drv-w-medium); margin-left: 8px; text-transform: capitalize; }
.calx-modes .vbtn { cursor: pointer; }
.calx-body { border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); overflow: hidden; background: var(--surface); }

/* месяц */
.cx-wdrow { display: grid; grid-template-columns: repeat(7, 1fr); background: var(--drv-k-06); }
.cx-wdrow span { padding: 8px 10px; font-size: 12px; color: var(--drv-text-faint); text-align: left; }
.cx-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.cx-cell { min-height: 104px; border-right: 1px solid var(--drv-k-06); border-bottom: 1px solid var(--drv-k-06); padding: 5px 6px; overflow: hidden; }
.cx-cell:nth-child(7n) { border-right: none; }
.cx-empty { background: repeating-linear-gradient(45deg, transparent, transparent 6px, var(--drv-k-06) 6px, var(--drv-k-06) 7px); opacity: .25; }
.cx-daynum { font-size: 12px; color: var(--drv-text-muted); margin-bottom: 3px; }
.cx-today .cx-daynum { background: var(--drv-red); color: #fff; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }
.cx-task { font-size: 12px; padding: 3px 7px; border-radius: 5px; margin-bottom: 3px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  border-left: 3px solid var(--drv-text-disabled); background: var(--drv-k-06); }
.cx-task:hover { filter: brightness(.97); }
.cx-task.tone-slate { border-left-color: #94a3b8; } .cx-task.tone-blue { border-left-color: #6aa0ff; }
.cx-task.tone-amber { border-left-color: #e6b65a; } .cx-task.tone-violet { border-left-color: #a989f3; }
.cx-task.tone-green { border-left-color: #5cbd86; } .cx-task.tone-gray { border-left-color: var(--drv-k-12); filter: grayscale(.75); opacity: .72; }
.cx-time { color: var(--drv-text-faint); font-variant-numeric: tabular-nums; }
.cx-more { font-size: 11px; color: var(--drv-red); cursor: pointer; padding: 1px 4px; }
.cx-more:hover { text-decoration: underline; }

/* неделя */
.cx-week { display: grid; grid-template-columns: repeat(7, 1fr); }
.cx-col { border-right: 1px solid var(--drv-k-06); min-height: 320px; padding: 0 6px 8px; }
.cx-col:last-child { border-right: none; }
.cx-colh { position: sticky; top: 0; background: var(--drv-k-06); padding: 8px 6px; font-size: 12px; color: var(--drv-text-muted); margin: 0 -6px 6px; text-align: center; }
.cx-today .cx-colh { color: var(--drv-red); font-weight: var(--drv-w-medium); }

/* день */
.cx-day { padding: 14px 18px; display: flex; flex-direction: column; gap: 8px; }
.cx-task.big { font-size: 14px; padding: 11px 14px; border-left-width: 4px; white-space: normal; display: flex; align-items: center; gap: 8px; }

/* год */
.cx-year { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; padding: 8px; }
@media (max-width: 900px){ .cx-year { grid-template-columns: repeat(2, 1fr); } }
.cx-ymonth { padding: 10px; }
.cx-ymon { font-size: 13px; font-weight: var(--drv-w-medium); margin-bottom: 6px; cursor: pointer; }
.cx-ymon:hover { color: var(--drv-red); }
.cx-ygrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.cx-ygrid span { font-size: 10px; text-align: center; padding: 3px 0; color: var(--drv-text-muted); border-radius: 4px; cursor: pointer; }
.cx-yd.cx-has { background: var(--drv-red-08); color: var(--drv-red); font-weight: var(--drv-w-medium); }
.cx-yd.cx-today { outline: 1px solid var(--drv-red); }
.cx-yd:hover { background: var(--drv-k-12); }

/* отправка отчёта клиенту */
.act-form-row { flex-wrap: wrap; }
.report-send { display: inline-flex; align-items: center; height: 38px; }
.report-btn { height: 38px; border-radius: var(--drv-radius-btn) 0 0 var(--drv-radius-btn); white-space: nowrap; }
.report-ch { height: 38px; border: 1px solid var(--drv-k-06); border-left: none; border-radius: 0 var(--drv-radius-btn) var(--drv-radius-btn) 0;
  background: var(--drv-bg); color: var(--drv-text); font-family: inherit; font-size: 12px; padding: 0 6px; cursor: pointer; max-width: 130px; }
.report-ch:focus { outline: none; border-color: var(--drv-red); }

/* ====== Приёмка работ ====== */
.acc-list { display: flex; flex-direction: column; gap: 14px; }
.acc-card { border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); background: var(--surface); padding: 16px 18px; border-left: 3px solid var(--drv-k-12); }
.acc-card.acc-pending { border-left-color: #e6b65a; }
.acc-card.acc-accepted { border-left-color: #5cbd86; }
.acc-card.acc-rework { border-left-color: var(--drv-red); }
.acc-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.acc-title { cursor: pointer; margin-left: 8px; }
.acc-title:hover { color: var(--drv-red); }
.acc-checklist { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 6px 16px; }
.acc-check { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--drv-text-muted); cursor: pointer; }
.acc-check input { width: auto; }
.acc-note { margin-top: 10px; font-size: 13px; color: var(--drv-text-muted); display: flex; align-items: center; gap: 7px; background: var(--drv-k-06); padding: 8px 12px; border-radius: var(--drv-radius-sm); }
.acc-note i { width: 14px; height: 14px; }
.acc-decide { display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.acc-decide textarea { flex: 1; min-width: 220px; padding: 9px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); resize: vertical; }
.acc-decide textarea:focus { outline: none; border-color: var(--drv-red); }
.acc-btns { display: flex; gap: 8px; }

/* ====== единый стиль всех выпадашек (нативных) ====== */
select { font-family: inherit; font-size: 14px; padding: 10px 12px; border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); cursor: pointer; }
select:focus { outline: none; border-color: var(--drv-red); }
select:hover { border-color: var(--drv-k-12); }
/* особые «пилюли»-селекты сохраняют свой вид (более специфичные правила выше их переопределяют) */

/* воздух в модалках: подписи с отступом сверху */
.modal .kb-form > label { display: block; margin-top: 16px; margin-bottom: 6px; }
.modal .kb-form > label:first-of-type, .modal .kb-form > label:first-child { margin-top: 0; }
.modal .kb-form .checks { margin-bottom: 4px; }
/* ряды полей держат тот же вертикальный ритм, что и одиночные подписи (16px),
   иначе «Номер документа / Примечание» прилипают к полю выше (см. скрин) */
.modal .kb-form .form-2col, .modal .kb-form .form-3col { margin-top: 16px; }
.modal .kb-form > .form-2col:first-child, .modal .kb-form > .form-3col:first-child { margin-top: 0; }
/* combo-список не должен растягивать ряд - подпись под ним держит дистанцию */
.modal .kb-form .combo + label, .modal .kb-form .form-2col + label { margin-top: 16px; }

/* карточка задачи: воздух между шапкой-плашками и описанием */
.task-toprow { margin-bottom: 14px; }
.rt-wrap { margin-top: 2px; }

/* ====== Приёмка: карточки приятнее ====== */
.acc-card { padding: 18px 20px; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.acc-head { align-items: flex-start; margin-bottom: 14px; }
.acc-head-l { display: flex; align-items: center; gap: 10px; min-width: 0; flex-wrap: wrap; }
.acc-status { font-size: 11px; font-weight: var(--drv-w-medium); padding: 4px 11px; border-radius: 999px; text-transform: uppercase; letter-spacing: .02em; white-space: nowrap; }
.acc-st-pending { background: rgba(217,154,43,.16); color: #b07d1d; }
.acc-st-accepted { background: rgba(46,160,95,.15); color: #258a51; }
.acc-st-rework { background: var(--drv-red-08); color: var(--drv-red); }
.acc-title { font-size: 16px; font-weight: var(--drv-w-medium); cursor: pointer; }
.acc-title:hover { color: var(--drv-red); }
.acc-num { font-size: 11px; color: var(--drv-text-faint); font-weight: 400; }
.acc-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 12px; color: var(--drv-text-faint); }
.acc-iter { background: var(--drv-red-08); color: var(--drv-red); padding: 2px 9px; border-radius: 999px; }
.acc-resp { display: inline-flex; align-items: center; gap: 6px; color: var(--drv-text-muted); }
.acc-sec-h { display: flex; align-items: center; gap: 7px; font-size: 12px; text-transform: uppercase; letter-spacing: .03em;
  color: var(--drv-text-faint); margin: 16px 0 9px; }
.acc-sec-h i { width: 14px; height: 14px; }
.acc-prog { margin-left: auto; text-transform: none; letter-spacing: 0; font-size: 12px; color: var(--drv-text-muted); background: var(--drv-k-06); padding: 1px 9px; border-radius: 999px; }
.acc-check { padding: 5px 0; }
.acc-check.on span { color: var(--drv-text); text-decoration: none; }
.acc-check.on { color: var(--drv-text); }
.acc-from-spec { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 12px; background: var(--drv-k-06); border-radius: var(--drv-radius-sm); }
.acc-decide { border-top: 1px solid var(--drv-k-06); padding-top: 14px; margin-top: 16px; }

/* футер карточки сделки на доске: дата слева, источник справа */
.kcard-s { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.kcard-s .kcard-right { margin-left: auto; }

/* приёмка: экономика */
.acc-econ { display: flex; gap: 14px; flex-wrap: wrap; width: 100%; margin: 4px 0 2px; }
.acc-econ label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--drv-text-faint); }
.acc-econ input { width: 150px; padding: 8px 11px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); }
.acc-econ input:focus { outline: none; border-color: var(--drv-red); }
.acc-hint { font-size: 11px; color: var(--drv-text-faint); margin: -2px 0 6px; line-height: 1.35; }
.rate-pill { padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: var(--drv-w-medium); }
.rate-pill.good { background: rgba(46,160,95,.15); color: #258a51; }
.rate-pill.mid { background: rgba(217,154,43,.16); color: #b07d1d; }
.rate-pill.bad { background: var(--drv-red-08); color: var(--drv-red); }

/* приёмка: ссылка результата + светофор автопроверки */
.acc-result { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.acc-result input { flex: 1; min-width: 220px; padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); }
.acc-result input:focus { outline: none; border-color: var(--drv-red); }
.acc-site:not(:empty) { margin-top: 10px; }
.acc-light { display: inline-flex; align-items: center; gap: 8px; padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: var(--drv-w-medium); }
.acc-light.green { background: rgba(46,160,95,.15); color: #258a51; }
.acc-light.yellow { background: rgba(217,154,43,.16); color: #b07d1d; }
.acc-light.red { background: var(--drv-red-08); color: var(--drv-red); }
.cp-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.cp-dot.green { background: #2ea05f; } .cp-dot.yellow { background: #d99a2b; } .cp-dot.red { background: var(--drv-red); }
.acc-checks { display: flex; flex-wrap: wrap; gap: 6px 12px; margin-top: 8px; }
.acc-chk { font-size: 12px; color: var(--drv-text-muted); }
.acc-chk.ok { color: #258a51; } .acc-chk.no { color: var(--drv-red); }

/* ====== календарь: выходные, сетка времени, перетаскивание ====== */
.cx-cell { cursor: pointer; }
.cx-cell.cx-weekend { background: rgba(214,77,77,.045); }
.cx-wdrow span.cx-weekend { color: var(--drv-red); }
.cx-yd.cx-weekend { color: var(--drv-red); }
.cx-over { outline: 2px dashed var(--drv-red); outline-offset: -2px; background: var(--drv-red-08) !important; }
.cx-task[draggable] { cursor: grab; }
.cx-task[draggable]:active { cursor: grabbing; }

/* сетка времени (неделя / день) */
.cx-tg { display: flex; flex-direction: column; }
.cx-tg-head { display: grid; grid-template-columns: 56px repeat(var(--cols), 1fr); border-bottom: 1px solid var(--drv-k-06);
  position: sticky; top: 0; background: var(--surface); z-index: 2; }
.cx-tg-dh { padding: 9px 6px; text-align: center; font-size: 12px; color: var(--drv-text-muted); border-left: 1px solid var(--drv-k-06); }
.cx-tg-dh.cx-today { color: var(--drv-red); font-weight: var(--drv-w-medium); }
.cx-tg-dh.cx-weekend { color: var(--drv-red); background: rgba(214,77,77,.045); }
.cx-tg-body { max-height: 62vh; overflow-y: auto; }
.cx-tg-row { display: grid; grid-template-columns: 56px repeat(var(--cols), 1fr); min-height: 44px; border-bottom: 1px solid var(--drv-k-06); }
.cx-hourlbl { font-size: 11px; color: var(--drv-text-faint); padding: 3px 8px 0 0; text-align: right; }
.cx-slot { border-left: 1px solid var(--drv-k-06); padding: 2px 3px; cursor: pointer; }
.cx-slot:hover { background: var(--drv-k-06); }
.cx-slot.cx-weekend { background: rgba(214,77,77,.035); }
.cx-slot.cx-weekend:hover { background: var(--drv-k-06); }
.cx-tg .cx-task { white-space: normal; margin-bottom: 2px; }

/* ====== чек-лист задачи ====== */
.sec-title-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.cl-prog { font-size: 12px; color: var(--drv-text-muted); background: var(--drv-k-06); padding: 1px 9px; border-radius: 999px; font-weight: 400; margin-left: 4px; }
.cl-tools { display: flex; align-items: center; gap: 6px; }
.cl-preset { font-size: 12px; padding: 5px 9px; border-radius: var(--drv-radius-btn); }
.cl-bar { height: 5px; border-radius: 999px; background: var(--drv-k-06); overflow: hidden; margin: 4px 0 10px; }
.cl-bar-fill { height: 100%; background: var(--drv-success); border-radius: 999px; transition: width .2s; }
.cl-list { display: flex; flex-direction: column; gap: 2px; }
.cl-item { display: flex; align-items: center; gap: 8px; padding: 5px 6px; border-radius: var(--drv-radius-sm); }
.cl-item:hover { background: var(--drv-k-06); }
.cl-check { display: flex; align-items: center; gap: 9px; cursor: pointer; flex: 1; font-size: 14px; }
.cl-check input { width: auto; }
.cl-item.on .cl-check span { text-decoration: line-through; color: var(--drv-text-faint); }
.cl-del { background: transparent; border: none; color: var(--drv-text-disabled); cursor: pointer; font-size: 18px; line-height: 1; padding: 0 4px; opacity: 0; }
.cl-item:hover .cl-del { opacity: 1; }
.cl-del:hover { color: var(--drv-red); }
.cl-add { display: flex; gap: 8px; margin-top: 8px; }
.cl-add input { flex: 1; padding: 8px 12px; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-btn);
  font-family: inherit; font-size: 13px; background: var(--drv-bg); color: var(--drv-text); }
.cl-add input:focus { outline: none; border-color: var(--drv-red); }

/* календарь: блоки-длительности (неделя/день) */
.cx-tg-cols { display: flex; position: relative; }
.cx-hourcol { width: 56px; flex: none; }
.cx-hrlbl { font-size: 11px; color: var(--drv-text-faint); text-align: right; padding: 0 8px 0 0; box-sizing: border-box;
  border-bottom: 1px solid transparent; }
.cx-daycol { flex: 1; position: relative; border-left: 1px solid var(--drv-k-06); cursor: pointer; }
.cx-daycol.cx-weekend { background-color: rgba(214,77,77,.03); }
.cx-hline { border-bottom: 1px solid var(--drv-k-06); box-sizing: border-box; pointer-events: none; }
.cx-ev { position: absolute; left: 3px; right: 3px; border-radius: 6px; padding: 3px 8px 3px 9px; overflow: hidden;
  background: var(--surface); border: 1px solid var(--drv-k-06); border-left: 3px solid var(--drv-text-disabled);
  cursor: grab; box-shadow: 0 1px 2px rgba(0,0,0,.05); }
.cx-ev:active { cursor: grabbing; }
.cx-ev.tone-slate { border-left-color: #94a3b8; } .cx-ev.tone-blue { border-left-color: #6aa0ff; }
.cx-ev.tone-amber { border-left-color: #e6b65a; } .cx-ev.tone-violet { border-left-color: #a989f3; }
.cx-ev.tone-green { border-left-color: #5cbd86; } .cx-ev.tone-gray { border-left-color: var(--drv-k-12); }
.cx-ev-t { font-size: 12px; font-weight: var(--drv-w-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cx-ev-tm { font-size: 10px; color: var(--drv-text-faint); }
.cx-rsz { position: absolute; left: 0; right: 0; bottom: 0; height: 8px; cursor: ns-resize; border-radius: 0 0 6px 6px; }
.cx-rsz:hover { background: var(--drv-red-08); }
.cx-daycol.cx-over { outline: 2px dashed var(--drv-red); outline-offset: -2px; }

/* ====== Финансы ====== */
.fin-accounts { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin-bottom: 16px; }
.fin-acc { background: var(--pane); border: 1px solid var(--ln); border-radius: var(--r-lg); padding: 16px 18px; box-shadow: var(--sh-card); }
.fin-acc-name { font-size: var(--fs-xs); color: var(--m); margin-bottom: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fin-acc-bal { font-size: var(--fs-h2); font-weight: var(--fw-semibold); font-variant-numeric: tabular-nums; color: var(--t); }
.fin-acc-bal.neg { color: var(--r); }
.fin-acc-kind { font-size: var(--fs-2xs); margin-top: 4px; }
.fin-acc-add { display: flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; border-style: dashed;
  color: var(--m); font-family: inherit; font-size: var(--fs-sm); box-shadow: none; }
.fin-acc-add:hover { border-color: var(--r); color: var(--r); }
.fin-totalbar { display: flex; flex-wrap: wrap; gap: 26px; padding: 14px 20px; background: var(--pane);
  border: 1px solid var(--ln); border-radius: var(--r-lg); margin-bottom: 16px; align-items: center; box-shadow: var(--sh-card); }
.fin-totalbar b { font-size: 17px; margin-left: 6px; }
.money.pos { color: #258a51; } .money.neg { color: var(--drv-red); }
.fin-filters { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.fin-table th { font-size: 12px; }
.fin-amt { font-weight: var(--drv-w-medium); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fin-amt.pos { color: #258a51; } .fin-amt.neg { color: var(--drv-red); } .fin-amt.tr { color: var(--drv-text-muted); }

/* ====== Команда ====== */
.team-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.team-card { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); padding: 18px; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.team-card:hover { border-color: var(--drv-red); box-shadow: 0 4px 16px rgba(0,0,0,.06); }
.team-top { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.team-name { font-size: 16px; font-weight: var(--drv-w-medium); }
.team-title { font-size: 12px; color: var(--drv-text-faint); }
.team-title.is-dir { color: var(--drv-red); font-weight: var(--drv-w-medium); }
.team-stats { display: flex; gap: 18px; padding: 12px 0; border-top: 1px solid var(--drv-k-06); border-bottom: 1px solid var(--drv-k-06); }
.team-stats > div { display: flex; flex-direction: column; }
.team-stats b { font-size: 18px; }
.team-stats span { font-size: 11px; color: var(--drv-text-faint); }
.team-money { margin-top: 12px; font-size: 13px; }
.team-money b { font-size: 14px; }

/* регулярные задачи: бейдж + баннер */
.recur-badge { display: inline-flex; color: var(--drv-red); vertical-align: middle; }
.recur-badge svg { width: 13px; height: 13px; }
.recur-banner { display: flex; align-items: center; gap: 10px; padding: 11px 16px; margin-bottom: 14px;
  background: var(--drv-red-08); border: 1px solid transparent; border-radius: var(--drv-radius-card); color: var(--drv-red);
  font-size: 13px; text-decoration: none; }
.recur-banner:hover { background: rgba(214,77,77,.14); }
.recur-banner svg { width: 16px; height: 16px; flex: none; }
.recur-banner span { flex: 1; }

/* финансы: аналитика + кастомный период */
.fin-analytics { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 16px; }
.fin-an-card { background: var(--pane); border: 1px solid var(--ln); border-radius: var(--r-lg); padding: 14px 16px; box-shadow: var(--sh-card); }
.fin-an-card.warn { border-left: 3px solid var(--r); }
.fin-an-card.pend { border-left: 3px solid var(--warn); }
.fin-an-l { font-size: var(--fs-2xs); color: var(--f); margin-bottom: 6px; }
.fin-an-v { font-size: var(--fs-h3); font-weight: var(--fw-semibold); font-variant-numeric: tabular-nums; color: var(--t); }
.fin-an-up { font-size: 12px; padding: 2px 0; }
.fin-custom { display: flex; align-items: center; gap: 6px; }

/* ====== приватность сумм ====== */
html.priv .money:not(.show), html.priv .fin-acc-bal:not(.show), html.priv .fin-an-v:not(.show),
html.priv .fin-amt:not(.show) { filter: blur(7px); cursor: pointer; user-select: none; transition: filter .15s; }
html.priv .money.show, html.priv .fin-acc-bal.show, html.priv .fin-an-v.show, html.priv .fin-amt.show { filter: none; }

/* профиль пользователя в сайдбаре */
.user-chip { display: flex; align-items: center; gap: 9px; width: 100%; background: transparent; border: none; cursor: pointer;
  padding: 9px 12px; border-radius: var(--drv-radius-btn); color: var(--drv-text); font-family: inherit; text-align: left; }
.user-chip:hover { background: var(--drv-k-06); }
.user-chip-txt { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.user-chip-txt b { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-chip-txt .muted { font-size: 11px; }

/* финансы: распределение */
.fin-alloc { background: var(--pane); border: 1px solid var(--ln); border-radius: var(--r-lg); padding: 16px 18px; margin-bottom: 16px; box-shadow: var(--sh-card); }
.fin-alloc-h { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--m); margin-bottom: 14px; }
.fin-alloc-h i { width: 15px; height: 15px; }
.fin-alloc-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
/* каждая статья распределения - аккуратная плитка (а не строка-россыпь) */
.fin-al { display: flex; flex-direction: column; gap: 5px; background: var(--bg); border: 1px solid var(--ln); border-radius: var(--r-md); padding: 12px 14px; }
.fin-al span { font-size: var(--fs-2xs); color: var(--f); line-height: 1.35; }
.fin-al b { font-size: var(--fs-h3); font-variant-numeric: tabular-nums; color: var(--t); }
.fin-al.free { background: var(--ok-s); border-color: transparent; }
.fin-al.free b { color: var(--ok); }

/* финансы: напоминалки */
.fin-reminders { background: var(--pane); border: 1px solid var(--ln); border-radius: var(--r-lg); padding: 12px 16px; margin-bottom: 16px; box-shadow: var(--sh-card); }
.fin-rem-h { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--m); margin-bottom: 10px; }
.fin-rem-h i { width: 15px; height: 15px; }
.fin-rem-count { background: var(--drv-red); color: #fff; font-size: 11px; font-weight: var(--drv-w-medium); border-radius: 10px; padding: 1px 8px; }
.fin-rem-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 8px; }
.fin-rem { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: var(--drv-radius-btn);
  background: var(--drv-bg); border: 1px solid var(--drv-k-06); border-left: 3px solid var(--drv-k-12); text-decoration: none; color: var(--drv-text); }
.fin-rem:hover { background: var(--drv-k-06); }
.fin-rem.overdue { border-left-color: var(--drv-red); }
.fin-rem.soon { border-left-color: #e6a23c; }
.fin-rem.info { border-left-color: #4a7bd0; }
.fin-rem i { width: 16px; height: 16px; flex: none; color: var(--drv-text-faint); }
.fin-rem-t { flex: 1; font-size: 13px; min-width: 0; }
.fin-rem b { font-variant-numeric: tabular-nums; white-space: nowrap; }
.fin-rem b.pos { color: #258a51; } .fin-rem b.neg { color: var(--drv-red); }

/* финансы: графики */
.fin-chart-panel { padding: 18px 20px; }
.fin-bars { display: flex; align-items: flex-end; gap: 10px; height: 220px; padding-top: 8px; }
.fin-bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; min-width: 0; }
.fin-bar-pair { flex: 1; display: flex; align-items: flex-end; justify-content: center; gap: 3px; width: 100%; }
.fin-bar { width: 42%; max-width: 22px; min-height: 2px; border-radius: 3px 3px 0 0; transition: height .25s; }
.fin-bar.inc { background: #2faa63; } .fin-bar.exp { background: var(--drv-red); }
.fin-bar-x { font-size: 11px; margin-top: 6px; white-space: nowrap; }
.fin-legend { display: flex; gap: 16px; margin-top: 12px; font-size: 12px; color: var(--drv-text-muted); }
.fin-legend .lg::before { content: ''; display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 6px; vertical-align: middle; }
.fin-legend .lg.inc::before { background: #2faa63; } .fin-legend .lg.exp::before { background: var(--drv-red); }
.fin-chart-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 8px; }
@media (max-width: 820px){ .fin-chart-2col { grid-template-columns: 1fr; } }
.fin-chart-2col .panel { padding: 14px 18px; }
.fin-hbar { display: grid; grid-template-columns: 150px 1fr auto; align-items: center; gap: 12px; padding: 7px 0; }
.fin-hbar + .fin-hbar { border-top: 1px solid var(--drv-k-06); }
.fin-hbar-l { font-size: 12px; color: var(--drv-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fin-hbar-track { background: var(--drv-k-06); border-radius: 5px; height: 16px; overflow: hidden; }
.fin-hbar-fill { height: 100%; border-radius: 5px; min-width: 2px; transition: width .25s; }
.fin-hbar-fill.inc { background: #2faa63; } .fin-hbar-fill.exp { background: var(--drv-red); }
.fin-hbar-v { font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* комбобокс: кнопка быстрого создания */
.combo { position: relative; }
.combo-add { position: absolute; top: 6px; right: 6px; width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--drv-k-12); background: var(--drv-bg); border-radius: 6px; cursor: pointer; color: var(--drv-text-muted); }
.combo-add:hover { border-color: var(--drv-red); color: var(--drv-red); }
.combo-add i { width: 15px; height: 15px; }
.combo:has(.combo-add) .combo-input { padding-right: 38px; }

/* клиентский портал (кабинет) */
.portal-bar { height: 8px; background: var(--drv-k-06); border-radius: 5px; overflow: hidden; margin: 12px 0; }
.portal-bar-fill { height: 100%; background: #2faa63; border-radius: 5px; transition: width .3s; }
.portal-wait { background: rgba(230,162,60,.10); border: 1px solid rgba(230,162,60,.35); border-radius: 10px; padding: 10px 14px; margin: 10px 0; font-size: 13px; }
.portal-wait-row { padding: 2px 0; }
.portal-pay { display: flex; align-items: center; gap: 12px; font-size: 14px; margin: 10px 0; }
.portal-docs { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 10px 0; }
.portal-doc { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 5px 10px; border: 1px solid var(--drv-k-12); border-radius: 8px; text-decoration: none; color: var(--drv-text); }
.portal-doc:hover { border-color: var(--drv-red); }
.portal-doc i { width: 14px; height: 14px; }
.portal-tasks { margin-top: 10px; border-top: 1px solid var(--drv-k-06); padding-top: 8px; }
.portal-task { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 13px; }
.ptask-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ptask-st { font-size: 12px; white-space: nowrap; }
.ptask-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--drv-k-12); flex: none; }
.ptask-dot.s-in_progress { background: #4a7bd0; } .ptask-dot.s-review { background: #e6a23c; }
.ptask-dot.s-waiting { background: #d98324; } .ptask-dot.s-done, .ptask-dot.s-completed { background: #2faa63; }

/* справочник специалистов */
.spec-table td { vertical-align: top; }
.spec-cmt { font-size: 12px; margin-top: 3px; max-width: 280px; white-space: normal; }
.spec-contact { max-width: 160px; word-break: break-all; font-size: 12px; }
.spec-prices { max-width: 220px; white-space: normal; font-size: 12px; }
.spec-profiles { display: flex; flex-wrap: wrap; gap: 10px 16px; }
.spec-plan-row { display: grid; grid-template-columns: 1fr auto auto auto; align-items: center; gap: 12px; padding: 9px 16px; border-bottom: 1px solid var(--drv-k-06); cursor: pointer; }
.sp-read { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; white-space: nowrap; }
.sp-read i { width: 13px; height: 13px; }
.sp-read.read { color: #258a51; }
.sp-read.unread { color: var(--drv-text-faint); }
.spec-plan-row:last-child { border-bottom: none; }
.spec-plan-row:hover { background: var(--drv-k-06); }
.spec-plan-row .sp-task { display: inline-flex; align-items: center; gap: 8px; min-width: 0; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.spec-plan-row .sp-st { font-size: 12px; white-space: nowrap; }
.spec-plan-row .sp-amt { white-space: nowrap; font-variant-numeric: tabular-nums; }
.spec-work { padding: 8px 0; border-bottom: 1px solid var(--drv-k-06); }
.spec-work:last-child { border-bottom: none; }
.spec-work-h { font-size: 14px; }
.spec-parts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.spec-part { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; padding: 3px 9px; border-radius: 7px; }
.spec-part i { width: 13px; height: 13px; }
.spec-part.paid { background: rgba(47,170,99,.12); color: #258a51; }
.spec-part.unpaid { background: rgba(214,77,77,.10); color: var(--drv-red); }
.spec-part-btn { border: none; background: rgba(47,170,99,.18); color: #258a51; font-family: inherit; font-size: 11px;
  padding: 2px 8px; border-radius: 6px; cursor: pointer; margin-left: 4px; display: inline-flex; align-items: center; gap: 4px; }
.spec-part-btn.pay:hover { background: #2faa63; color: #fff; }
.spec-part-btn:not(.pay) { background: transparent; color: var(--drv-text-faint); padding: 2px 4px; }
.spec-part-btn:not(.pay):hover { color: var(--drv-red); }
.spec-part-btn i { width: 12px; height: 12px; }

/* карточка спеца: шапка, быстрые ссылки, реквизиты, доступ */
.sublabel { display: block; font-size: 11px; color: var(--drv-text-faint); text-transform: uppercase; letter-spacing: var(--drv-ls-wide); margin-bottom: 5px; }
.spec-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.spec-head-l { min-width: 0; }
.spec-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.spec-actions { display: flex; gap: 6px; flex: none; }
.spec-act { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid var(--drv-k-12);
  border-radius: 9px; color: var(--drv-text-muted); text-decoration: none; background: var(--surface); cursor: pointer; }
.spec-act:hover { border-color: var(--drv-red); color: var(--drv-red); }
.spec-act i { width: 17px; height: 17px; }
.spec-act.chat { border-style: dashed; }
.spec-qlink { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 7px; color: var(--drv-text-muted); text-decoration: none; }
.spec-qlink:hover { background: var(--drv-k-06); color: var(--drv-red); }
.spec-qlink i { width: 16px; height: 16px; }
.spec-access { display: flex; gap: 8px; align-items: center; }
.spec-access input { flex: 1; padding: 10px 13px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font-family: inherit; font-size: 14px; }
.spec-access input:focus { outline: none; border-color: var(--drv-red); }
.spec-access .btn { flex: none; white-space: nowrap; }
.spec-invite { margin-top: 10px; font-size: 13px; word-break: break-all; }
.spec-invite a { color: var(--drv-red); }

/* панель инструментов справочника спецов: фильтр + поиск + пагинация */
.spec-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.spec-search { display: flex; align-items: center; gap: 8px; position: relative; background: var(--surface); border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-btn); padding: 0 10px; min-width: 280px; }
.spec-search:focus-within { border-color: var(--drv-red); }
.spec-search i { width: 16px; height: 16px; color: var(--drv-text-faint); flex: none; }
.spec-search input { border: none; outline: none; background: transparent; padding: 9px 4px; font-family: inherit; font-size: 14px; color: var(--drv-text); flex: 1; min-width: 0; }
.spec-search-clear { display: inline-flex; color: var(--drv-text-faint); }
.spec-search-clear:hover { color: var(--drv-red); }
.pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 16px 0 4px; }
.pager-btn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid var(--drv-k-12); border-radius: 9px; color: var(--drv-text); }
.pager-btn:hover { border-color: var(--drv-red); color: var(--drv-red); }
.pager-info { font-size: 13px; color: var(--drv-text-muted); }

/* специалисты на задаче */
.task-specs { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.spec-chip { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; padding: 5px 6px 5px 12px;
  background: var(--drv-k-06); border: 1px solid var(--drv-k-12); border-radius: 16px; cursor: pointer; }
.spec-chip:hover { border-color: var(--drv-red); }
.spec-chip.plain { padding: 5px 12px; cursor: default; }
.spec-chip button { border: none; background: var(--drv-k-12); color: var(--drv-text-muted); width: 18px; height: 18px;
  border-radius: 50%; cursor: pointer; line-height: 1; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; }
.spec-chip button:hover { background: var(--drv-red); color: #fff; }
.task-spec-add { min-width: 200px; }
.task-spec-add .combo-input { padding: 7px 12px; font-size: 13px; }
/* спецы на задаче: строка имя + персональная оплата */
.task-spec-rows { display: flex; flex-direction: column; gap: 7px; }
.task-spec-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px;
  border: 1px solid var(--drv-k-06); border-radius: 10px; }
.task-spec-row .ts-name { flex: 1 1 100%; }
.task-spec-row select, .task-spec-row .ts-scope, .task-spec-row .ts-pay input { height: 34px; box-sizing: border-box; }
.ts-name { flex: 1; min-width: 0; font-size: 14px; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ts-name:hover { color: var(--drv-red); }
.ts-pay { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--drv-text-muted); }
.ts-pay input { width: 96px; padding: 6px 9px; border: 1px solid var(--drv-k-12); border-radius: 7px; font-family: inherit; font-size: 13px;
  text-align: right; background: var(--drv-bg); color: var(--drv-text); font-variant-numeric: tabular-nums; }
.ts-pay input:focus { outline: none; border-color: var(--drv-red); }
.ts-del { border: none; background: var(--drv-k-06); color: var(--drv-text-muted); width: 22px; height: 22px; border-radius: 50%; cursor: pointer; flex: none; line-height: 1; }
.ts-del:hover { background: var(--drv-red); color: #fff; }

/* кабинет спеца: тул-нав + уведомления */
.spec-toolnav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; position: sticky; top: 8px; z-index: 5; }
.spec-toolnav a { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border: 1px solid var(--drv-k-12);
  border-radius: 999px; text-decoration: none; color: var(--drv-text); font-size: 13px; background: var(--surface); }
.spec-toolnav a:hover { border-color: var(--drv-red); color: var(--drv-red); }
.spec-toolnav a i { width: 15px; height: 15px; }
.tn-badge { background: var(--drv-red); color: #fff; font-size: 11px; border-radius: 9px; padding: 0 6px; }
.cab-notif { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 20px; border-bottom: 1px solid var(--drv-k-06); text-decoration: none; color: var(--drv-text); }
.cab-notif:last-child { border-bottom: none; }
.cab-notif:hover { background: var(--drv-k-06); }
.cab-notif.unread { background: rgba(214,77,77,.06); }
.cab-notif.unread .cab-notif-t::before { content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--drv-red); margin-right: 7px; vertical-align: middle; }
.cab-notif-t { font-size: 13px; flex: 1; }
.cab-notif-at { font-size: 11px; white-space: nowrap; }

/* скрытие системных записей в ленте */
html.hide-sys-acts .act-system { display: none; }
.sys-toggle-btn { border: none; background: transparent; color: var(--drv-text-faint); font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-family: inherit; }
.sys-toggle-btn:hover { color: var(--drv-red); }
.sys-toggle-btn i { width: 13px; height: 13px; }
.sys-toggle-btn .st-off { display: none; }
html.hide-sys-acts .sys-toggle-btn { color: var(--drv-red); }
html.hide-sys-acts .sys-toggle-btn .st-on { display: none; }
html.hide-sys-acts .sys-toggle-btn .st-off { display: inline; }
.notif-x { border: none; background: transparent; color: var(--drv-text-faint); cursor: pointer; display: inline-flex; padding: 0; }
.notif-x:hover { color: var(--drv-red); }
.notif-x i { width: 16px; height: 16px; }

/* верхнее меню (топбар): база .topbar теперь в components.css (handoff: высота 64, бордер снизу).
   Ниже оставлены старые классы (.topbar-search/.tb-btn) - новая разметка их не использует;
   мобильный блок (≤760px) переопределяет .topbar. */
.topbar-search { position: relative; flex: 1; max-width: 560px; display: flex; align-items: center; gap: 8px;
  background: var(--surface); border: 1px solid var(--drv-k-12); border-radius: 999px; padding: 0 14px; }
.topbar-search:focus-within { border-color: var(--drv-red); }
.topbar-search > i { width: 16px; height: 16px; color: var(--drv-text-faint); flex: none; }
.topbar-search input { flex: 1; border: none; outline: none; background: transparent; padding: 10px 2px; font-family: inherit; font-size: 14px; color: var(--drv-text); }
.topbar-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.tb-btn { position: relative; width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--drv-k-12);
  background: var(--surface); color: var(--drv-text-muted); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; text-decoration: none; }
.tb-btn:hover { border-color: var(--drv-red); color: var(--drv-red); }
.tb-btn i { width: 18px; height: 18px; }
.tb-profile { padding: 0; }
.tb-btn .notif-badge { top: -4px; right: -4px; }
.gsearch-drop { position: absolute; left: 0; right: 0; top: calc(100% + 8px); z-index: 300; background: var(--surface);
  border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-card); box-shadow: var(--drv-shadow-card-hover); max-height: 70vh; overflow-y: auto; }
.gsearch-drop[hidden] { display: none; }
.gs-group { padding: 6px 0; border-bottom: 1px solid var(--drv-k-06); }
.gs-group:last-child { border-bottom: none; }
.gs-group-h { display: flex; align-items: center; gap: 7px; font-size: 11px; text-transform: uppercase; letter-spacing: var(--drv-ls-wide); color: var(--drv-text-faint); padding: 6px 16px; }
.gs-group-h i { width: 13px; height: 13px; }
.gs-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 16px; cursor: pointer; }
.gs-item:hover { background: var(--drv-k-06); }
.gs-it-t { font-size: 14px; }
.gs-it-s { font-size: 12px; white-space: nowrap; }
.gs-empty { padding: 18px; text-align: center; color: var(--drv-text-faint); font-size: 13px; }
@media (max-width: 620px){ .topbar-search { max-width: none; } .topbar-search input::placeholder { font-size: 12px; } }

/* уведомления (колокольчик + центр) */
.notif-btn { position: relative; }
.notif-badge { position: absolute; top: 4px; right: 8px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px;
  background: var(--drv-red); color: #fff; font-size: 10px; font-weight: var(--drv-w-medium); display: inline-flex; align-items: center; justify-content: center; }
.notif-drop { position: fixed; left: 16px; bottom: 70px; z-index: 3500; width: 380px; max-width: 92vw; max-height: 72vh;
  background: var(--surface); border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-card); box-shadow: var(--drv-shadow-card-hover); overflow: hidden; display: flex; flex-direction: column; }
.notif-drop[hidden] { display: none; }   /* иначе display:flex перебивает атрибут hidden и центр всегда открыт */
.notif-drop { left: auto; right: 24px; top: 64px; bottom: auto; }   /* колокольчик теперь в топбаре справа */
.notif-drop-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 16px; border-bottom: 1px solid var(--drv-k-06); font-weight: var(--drv-w-medium); }
.notif-drop-h .nh-acts { display: flex; gap: 10px; }
.notif-link { border: none; background: transparent; color: var(--drv-red); cursor: pointer; font-size: 12px; font-family: inherit; padding: 0; }
.notif-link.muted { color: var(--drv-text-faint); }
.notif-filters { display: none; flex-wrap: wrap; gap: 6px; padding: 10px 12px; border-bottom: 1px solid var(--drv-k-06); background: var(--drv-k-06); }
.notif-filters.open { display: flex; }
.nf-toggle.on { color: var(--drv-red); }
.nf-toggle.on::after { content: ''; position: absolute; top: 3px; right: 3px; width: 6px; height: 6px; border-radius: 50%; background: var(--drv-red); }
.nf-toggle { position: relative; }
.nf-chip { display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border: 1px solid var(--drv-k-12); border-radius: 999px;
  font-size: 12px; cursor: pointer; white-space: nowrap; background: var(--surface); color: var(--drv-text-muted); }
.nf-chip.on { background: var(--drv-red); border-color: var(--drv-red); color: #fff; }
.nf-chip .nf-cnt { background: var(--drv-red); color: #fff; border-radius: 8px; padding: 0 5px; font-size: 10px; }
.nf-chip.on .nf-cnt { background: rgba(255,255,255,.3); }
.notif-list { overflow-y: auto; flex: 1; }
.notif-item { display: flex; gap: 10px; padding: 11px 16px; border-bottom: 1px solid var(--drv-k-06); text-decoration: none; color: var(--drv-text); cursor: pointer; }
.notif-item:hover { background: var(--drv-k-06); }
.notif-item.unread { background: rgba(214,77,77,.06); }
.notif-ic { width: 30px; height: 30px; border-radius: 8px; background: var(--drv-k-06); display: inline-flex; align-items: center; justify-content: center; flex: none; color: var(--drv-text-muted); }
.notif-ic i { width: 16px; height: 16px; }
.notif-item.unread .notif-ic { background: var(--drv-red-08); color: var(--drv-red); }
.notif-body { flex: 1; min-width: 0; }
.notif-t { font-size: 13px; line-height: 1.4; }
.notif-meta { font-size: 11px; margin-top: 3px; color: var(--drv-text-faint); }
.notif-empty { padding: 22px 16px; color: var(--drv-text-faint); font-size: 13px; text-align: center; }
/* центр уведомлений: цветные иконки по категориям + точка непрочитанного */
.notif-drop { border-radius: 14px; box-shadow: 0 16px 46px rgba(0,0,0,.24); overflow: hidden; }
.notif-item { position: relative; align-items: flex-start; }
.notif-item.unread { box-shadow: inset 3px 0 0 var(--drv-red); }
.notif-dot { position: absolute; right: 14px; top: 14px; width: 8px; height: 8px; border-radius: 50%; background: var(--drv-red); flex: none; }
.notif-list .notif-ic.kind-deal { background: rgba(74,123,208,.15); color: #4a7bd0; }
.notif-list .notif-ic.kind-payout { background: rgba(47,170,99,.15); color: #2faa63; }
.notif-list .notif-ic.kind-accept { background: rgba(47,157,151,.16); color: #2f9d97; }
.notif-list .notif-ic.kind-task { background: rgba(142,124,195,.16); color: #8e7cc3; }
.notif-list .notif-ic.kind-chat { background: rgba(200,136,31,.16); color: #c8881f; }
.notif-list .notif-ic.kind-system, .notif-list .notif-ic.kind-info { background: var(--drv-k-06); color: var(--drv-text-muted); }

/* чат (сквозной) */
.chat-box { display: flex; flex-direction: column; height: 60vh; max-height: 520px; }
.chat-msgs { flex: 1; overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.chat-msg { max-width: 78%; align-self: flex-start; background: var(--drv-k-06); border-radius: 12px; padding: 8px 12px; }
.chat-msg.mine { align-self: flex-end; background: var(--drv-red-08); }
.chat-msg-h { font-size: 11px; margin-bottom: 2px; }
.chat-msg-h .muted { font-weight: var(--drv-w-regular); }
.chat-msg-t { font-size: 14px; line-height: 1.4; white-space: pre-wrap; word-break: break-word; }
.chat-empty { color: var(--drv-text-faint); font-size: 13px; text-align: center; margin: auto; padding: 24px; }
/* карточка Робота (@бот): сводка задач списком-ссылками, тап открывает попап задачи */
.bot-brief { display: flex; flex-direction: column; gap: 6px; min-width: min(340px, 68vw); }
.bot-brief .bb-head { font-weight: var(--drv-w-semibold, 600); font-size: 14px; }
.bot-brief .bb-cnt { display: inline-block; background: var(--drv-red-08); color: var(--drv-red);
  border-radius: 10px; padding: 0 8px; font-size: 12px; font-weight: 700; }
.bot-brief .bb-item { display: flex; flex-direction: column; gap: 2px; padding: 7px 10px;
  background: var(--surface); border: 1px solid var(--drv-k-12); border-radius: 10px;
  text-decoration: none; color: inherit; transition: border-color .15s; }
.bot-brief .bb-item:hover { border-color: var(--drv-red); }
.bot-brief .bb-no { color: var(--drv-text-muted); font-size: 11px; font-weight: 600; margin-right: 6px; }
.bot-brief .bb-t { font-weight: var(--drv-w-semibold, 600); font-size: 13px; line-height: 1.35; }
.bot-brief .bb-meta { font-size: 12px; color: var(--drv-text-muted); }
.bot-brief .bb-over { color: var(--drv-error, #c0392b); }
.bot-brief .bb-sum { font-size: 13px; line-height: 1.45; }
.bot-brief .bb-hint { font-size: 12px; color: var(--drv-text-faint); }
.chat-send { display: flex; gap: 8px; padding: 12px 14px; border-top: 1px solid var(--drv-k-06); }
.chat-send input { flex: 1; min-width: 0; padding: 10px 13px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); font-family: inherit; font-size: 14px; background: var(--drv-bg); color: var(--drv-text); }
.chat-send input:focus { outline: none; border-color: var(--drv-red); }

/* короткое уведомление-плашка */
.ui-toast { position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(20px); z-index: 4000;
  background: var(--drv-text); color: var(--surface); padding: 11px 18px; border-radius: 10px; font-size: 13px;
  box-shadow: 0 8px 28px rgba(0,0,0,.25); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; max-width: 90vw; }
.ui-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ===== мобильная версия (актуальный layout: .app / .app__main / .topbar / .sidebar) ===== */
.mobnav, .mob-backdrop, .topbar__burger, .topbar__search-ic, .topbar__search-close, .mob-modal-x { display: none; }
/* плавающий крестик закрытия модалок на мобиле (показывается через :has, когда открыто любое окно) */
.mob-modal-x { position: fixed; top: 12px; right: 12px; z-index: 3000; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%; background: var(--surface); border: 1px solid var(--drv-k-12);
  color: var(--drv-text); box-shadow: 0 6px 20px rgba(0,0,0,.3); cursor: pointer; }
.mob-modal-x i { width: 22px; height: 22px; }
@media (max-width: 760px) {
  /* сайдбар - выезжающая слева шторка поверх контента */
  .sidebar { position: fixed; left: 0; top: 0; bottom: 0; z-index: 1500; width: min(84vw, 300px);
    transform: translateX(-100%); transition: transform .22s ease; box-shadow: 0 0 40px rgba(0,0,0,.32); }
  html.mob-nav-open .sidebar { transform: none; }
  /* на мобиле сайдбар ВСЕГДА полный (не рельс), с подписями пунктов */
  html.nav-rail .sidebar { width: min(84vw, 300px); padding: 0; }
  html.nav-rail .nav-txt { display: inline !important; }
  html.nav-rail .sidebar__brand { flex-direction: row; justify-content: flex-start; gap: var(--sp-3); padding: 0 16px; }
  html.nav-rail .sidebar__logo { cursor: default; }
  html.nav-rail .sidebar__collapse { display: none; }
  html.nav-rail .sidebar__search { display: flex; }
  html.nav-rail .sidebar__nav { align-items: stretch; padding: 8px 10px; }
  html.nav-rail .sidebar__group { display: block; }
  .mob-backdrop { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1400;
    opacity: 0; pointer-events: none; transition: opacity .22s; }
  html.mob-nav-open .mob-backdrop { opacity: 1; pointer-events: auto; }

  /* контент во всю ширину + место под нижний бар */
  .app__content { padding: 12px 12px 76px; }

  /* топбар: гамбургер + сжатый заголовок + поиск в иконку */
  .topbar { height: 54px; padding: 0 10px; gap: 6px; position: relative; }
  .topbar__burger { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; flex: none;
    border: none; background: transparent; color: var(--drv-text); cursor: pointer; margin-left: -6px; }
  .topbar__burger i { width: 22px; height: 22px; }
  .topbar__title { font-size: 17px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }
  .topbar__right { gap: 2px; margin-left: 0; flex: none; }
  .topbar__search-ic { display: inline-flex; }
  /* десктопное поле поиска прячем; по тапу иконки - разворачиваем поверх шапки */
  .topbar__search { display: none; }
  html.mob-search-open .topbar__search { display: flex; position: absolute; left: 8px; right: 8px; top: 8px; bottom: 8px; z-index: 30; width: auto; }
  html.mob-search-open .topbar__burger, html.mob-search-open .topbar__title,
  html.mob-search-open .topbar__right > *:not(.topbar__search) { visibility: hidden; }
  .topbar__search-close { align-items: center; justify-content: center; width: 30px; flex: none; border: none; background: transparent; color: var(--drv-text-faint); cursor: pointer; }
  html.mob-search-open .topbar__search-close { display: inline-flex; }
  /* второстепенные иконки - они есть в сайдбаре/профиле */
  .iconbtn--settings, .iconbtn--avatar { display: none; }
  .notif-drop, .gsearch-drop { max-height: 66vh; }

  /* нижняя навигация */
  .mobnav { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 1300; height: 60px;
    background: var(--surface); border-top: 1px solid var(--drv-k-12); box-shadow: 0 -4px 16px rgba(0,0,0,.10); }
  .mobnav a, .mobnav button { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 3px; font-size: 10px; color: var(--drv-text-muted); text-decoration: none; border: none; background: transparent; font-family: inherit; cursor: pointer; }
  .mobnav a.on { color: var(--drv-red); }
  .mobnav a:active, .mobnav button:active { background: var(--drv-k-06); }
  .mobnav i { width: 21px; height: 21px; }
  .mobnav span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* модалки на весь экран, БЕЗ отступов бэкдропа (иначе 96vw+padding вылезало за экран и крестик уезжал).
     Шапка с крестиком «прилипает» сверху - закрыть всегда видно и доступно; тело прокручивается.
     z-index 2000 > .mobnav(1300): полноэкранное окно ПЕРЕКРЫВАЕТ нижнее меню (иначе бар лежал поверх
     кнопок/композера в модалке). Плавающий крестик .mob-modal-x (3000) остаётся выше. */
  .modal-backdrop { padding: 0 !important; align-items: stretch; z-index: 2000; }
  .modal { width: 100% !important; max-width: 100% !important; min-height: 100dvh; max-height: 100dvh !important;
    border-radius: 0; border: none; margin: 0; }
  .modal:not(.modal-chats) { overflow-y: auto !important;
    /* запас снизу: нижняя панель браузера (Я.Браузер, Safari) наезжает на конец контента -
       без него последние поля/кнопки в длинных карточках обрезались */
    padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)); }
  .modal-h { position: sticky; top: 0; z-index: 6; background: var(--surface); }
  /* родные крестики прячем - вместо них ОДНА плавающая кнопка закрытия (многие окна крестика не имеют
     вообще: форма клиента/сделки/задачи закрывались тапом по фону, а на весь экран фона нет). */
  .modal-h .modal-x { display: none; }
  html:has(.modal-backdrop.open) .mob-modal-x { display: inline-flex; }
  /* открыта модалка = нижнее меню прячем совсем: на части мобильных браузеров mobnav рисовался
     ПОВЕРХ полноэкранного окна и съедал композер чата (поле ввода было под панелью меню) */
  html:has(.modal-backdrop.open) .mobnav { display: none; }
  /* композер чатов: запас под системную полосу браузера/home-индикатор */
  .modal-chats .chat-send, .chats-page .chat-send { padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px)); }

  /* широкие таблицы - горизонтальный скролл внутри панели */
  .panel { overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* типовые сетки - в одну колонку на мобиле */
  .dash-row, .dash-grid, .grid-2, .grid-3, .cards-2, .cards-3, .st-grid { grid-template-columns: 1fr; }
  /* рассылки: 2-колоночная сетка (композер + превью) в столбик, разделитель - снизу */
  .bc-grid { grid-template-columns: 1fr !important; }
  .bc-compose { border-right: none !important; border-bottom: 1px solid var(--ln); }

  /* .dtable--cards: широкая grid-таблица → карточки-строки (имя+статус сверху, канал+мета снизу).
     Фиксированные колонки не влезают в телефон, поэтому строку разворачиваем во flex-карточку. */
  .dtable--cards .dtable__head { display: none; }
  .dtable--cards .dtable__row { display: flex !important; flex-wrap: wrap; align-items: center; gap: 6px 8px; padding: 12px 14px !important; }
  .dtable--cards .dtable__row > span { min-width: 0; }
  .dtable--cards .dt-main { flex: 1 1 auto; order: 1; }            /* аватар+имя - заполняет 1-ю строку */
  .dtable--cards .dt-badge { order: 2; flex: none; }              /* статус справа в 1-й строке */
  .dtable--cards .dt-chan { order: 3; }                            /* канал - переносится на 2-ю строку */
  .dtable--cards .dt-msg { order: 4; font-size: 12px !important; color: var(--drv-text-muted); }
  .dtable--cards .dt-msg::after { content: " " attr(data-label); color: var(--drv-text-faint); }
  .dtable--cards .dt-seen { order: 5; font-size: 12px !important; color: var(--drv-text-faint); text-align: left !important; }
  .dtable--cards .dt-seen::before { content: "· "; }
  .dtable--cards .dt-sec { display: none; }                        /* источник - второстепенно, прячем */

  /* дашборд: инлайновые 2-3-колоночные сетки → 1 колонка (auto-fill/fit не трогаем, они и так переносятся) */
  .dash-page [style*="grid-template-columns"]:not([style*="auto-fill"]):not([style*="auto-fit"]) {
    grid-template-columns: 1fr !important; gap: 12px !important; }
  .dash-page .dash-chart { overflow-x: auto; }   /* график-бары - горизонтальный скролл, а не растяжка */

  /* ВСЕ обычные <table> (финансы, проекты, спецы, выплаты, приёмка, диалоги, база знаний, моя работа,
     настройки…) - горизонтальный скролл вместо разъезда. display:block на table сохраняет табличную
     разметку строк внутри, но даёт блok с overflow-x (стандартный приём для мобилки). */
  table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* generic-таблицы .tbl-row (профиль команды: задачи/выплаты) - фикс. колонки в инлайн-стиле не влезают,
     разворачиваем строку во flex-карточку (как .dtable--cards), шапку прячем */
  .tbl-row.tbl-head { display: none !important; }
  .tbl-row { display: flex !important; flex-wrap: wrap; gap: 4px 12px; }
  .tbl-row > span { min-width: 0; }

  /* контентные H1 внутри страниц - компактнее (заголовок раздела уже в топбаре) */
  .page-head h1, .content h1, .app__content h1 { font-size: 20px; }
}
@media (max-width: 460px) {
  .topbar__title { font-size: 16px; }
}

/* ===== система чатов: страница ===== */
/* grid-template-rows: minmax(0,1fr) - иначе неявный ряд auto тянется под высоту контента (длинный
   список спецов) и внутренний overflow не срабатывает: список рос, а не скроллился. */
.chats-layout { display: grid; grid-template-columns: 320px 1fr; grid-template-rows: minmax(0, 1fr); gap: 16px; height: calc(100vh - 140px); }
.chats-side { display: flex; flex-direction: column; min-height: 0; background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); overflow: hidden; }
.chats-tabs { padding: 10px; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--drv-k-06); }
.chats-list { overflow-y: auto; flex: 1; padding-bottom: 8px; }
.chat-conv { position: relative; display: flex; align-items: center; gap: 11px; padding: 9px 14px; cursor: pointer; }
.chat-conv:hover { background: var(--drv-k-06); }
.chat-conv.on { background: var(--drv-red-08); }
.chat-conv.on::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--drv-red); }
/* непрочитанная беседа: подсветка + жирный заголовок + счётчик */
.chat-conv.unread { background: var(--drv-red-08); }
.chat-conv.unread .conv-title { font-weight: var(--drv-w-semibold); color: var(--drv-text); }
.chat-conv.unread .conv-last { color: var(--drv-text); }
.conv-unread { flex: none; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--drv-red); color: #fff;
  font-size: 11px; font-weight: var(--drv-w-semibold); display: inline-flex; align-items: center; justify-content: center; align-self: center; }
.tb-btn.chat-btn { position: relative; }
/* шапка треда: ответственный + меню передачи */
.cth-assignee { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--drv-text-muted); background: var(--drv-k-06); padding: 3px 9px; border-radius: 999px; }
.cth-assignee i { width: 13px; height: 13px; }
.cth-assign { position: relative; flex: none; }
.cth-assign-menu { position: absolute; right: 0; top: calc(100% + 6px); width: 248px; z-index: 50; background: var(--surface);
  border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-card); box-shadow: var(--drv-shadow-lg); padding: 8px; }
.cam-title { font-size: 11px; text-transform: uppercase; letter-spacing: .03em; color: var(--drv-text-faint); padding: 4px 6px 8px; }
.cam-list { max-height: 260px; overflow-y: auto; }
.cam-item { display: flex; align-items: center; gap: 9px; width: 100%; border: none; background: transparent; cursor: pointer; padding: 7px 6px; border-radius: var(--drv-radius-btn); font: inherit; font-size: 13.5px; color: var(--drv-text); text-align: left; }
.cam-item:hover { background: var(--drv-k-06); }
.cam-id { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.cam-id .muted { font-size: 12px; }
.cam-clear { color: var(--drv-red); margin-top: 4px; border-top: 1px solid var(--drv-k-06); border-radius: 0; }
.cam-clear i { width: 15px; height: 15px; }
.conv-ava { width: 42px; height: 42px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: var(--drv-w-semibold); font-size: 15px; flex: none; background: var(--drv-text-faint); text-transform: uppercase; }
.conv-ava.clr-red { background: var(--drv-red); } .conv-ava.clr-green { background: #2faa63; } .conv-ava.clr-blue { background: #4a7bd0; }
.conv-ava.clr-amber { background: #e6a23c; } .conv-ava.clr-violet { background: #a989f3; } .conv-ava.clr-gray { background: var(--drv-text-faint); }
.conv-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.conv-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.conv-title { font-size: 14px; font-weight: var(--drv-w-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conv-at { font-size: 11px; color: var(--drv-text-faint); flex: none; }
.conv-last { font-size: 12.5px; color: var(--drv-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.chat-conv.is-contact .conv-last { color: var(--drv-text-faint); }
.chats-main { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); overflow: hidden; min-height: 0; display: flex; }
.chats-main .chat-box { flex: 1; max-height: none; min-height: 0; }
/* тред = основная колонка + (опц.) инфо-панель собеседника */
.chat-wrap { flex: 1; display: flex; min-width: 0; min-height: 0; }
.chat-main-col { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }
/* шапка открытой беседы (имя + роль) */
.chats-thread-head { display: flex; align-items: center; gap: 11px; padding: 10px 16px; border-bottom: 1px solid var(--drv-k-06); flex: none; background: var(--surface); }
.cth-id { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; flex: 1; }
.cth-id b { font-size: 15px; }
.cth-id .muted { font-size: 12px; }
.cth-paused { font-size: 11.5px; color: #c9821f; background: rgba(230,162,60,.14); padding: 3px 9px; border-radius: 999px; display: inline-flex; align-items: center; gap: 4px; }
.cth-paused i { width: 13px; height: 13px; }
.cth-info-btn { flex: none; width: 32px; height: 32px; border: none; background: transparent; color: var(--drv-text-faint); border-radius: var(--drv-radius-btn); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.cth-info-btn:hover, .cth-info-btn.on { background: var(--drv-k-06); color: var(--drv-red); }
/* баннер бота в клиентском чате */
.bot-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 16px; font-size: 12.5px; color: var(--drv-text-muted); background: var(--drv-bg-secondary); border-bottom: 1px solid var(--drv-k-06); }
.bot-banner.paused { background: rgba(230,162,60,.10); color: #b5781b; }
.bot-banner i { width: 15px; height: 15px; vertical-align: -3px; margin-right: 5px; }
.bot-banner span { min-width: 0; }
/* разделитель дат */
.chat-day { text-align: center; margin: 6px 0; }
.chat-day span { display: inline-block; font-size: 11.5px; color: var(--drv-text-muted); background: var(--drv-k-06); padding: 3px 12px; border-radius: 999px; }
/* правая инфо-панель собеседника */
.chat-info { width: 280px; flex: none; border-left: 1px solid var(--drv-k-06); background: var(--surface); overflow-y: auto; padding: 20px 16px; }
.ci-head { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding-bottom: 16px; border-bottom: 1px solid var(--drv-k-06); }
.conv-ava.lg { width: 64px; height: 64px; font-size: 24px; margin-bottom: 6px; }
.ci-name { font-size: 16px; }
.ci-sub { font-size: 12.5px; }
.ci-fields { display: flex; flex-direction: column; gap: 12px; padding: 16px 0; }
.ci-field { display: flex; gap: 11px; align-items: flex-start; }
.ci-field i { width: 16px; height: 16px; color: var(--drv-text-faint); margin-top: 2px; flex: none; }
.ci-f-body { display: flex; flex-direction: column; min-width: 0; }
.ci-f-l { font-size: 11px; color: var(--drv-text-faint); text-transform: uppercase; letter-spacing: .03em; }
.ci-f-v { font-size: 13.5px; word-break: break-word; }
.ci-links { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 12px; }
.ci-link { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; padding: 5px 10px; border-radius: 999px; background: var(--drv-k-06); color: var(--drv-text); }
.ci-link i { width: 13px; height: 13px; }
.ci-note { font-size: 13px; padding: 10px 0; display: flex; flex-direction: column; gap: 4px; border-top: 1px solid var(--drv-k-06); }
.ci-sec { font-size: 11px; font-weight: var(--drv-w-semibold); letter-spacing: .04em; text-transform: uppercase; color: var(--drv-text-faint); padding: 12px 0 8px; border-top: 1px solid var(--drv-k-06); }
.ci-common { display: flex; flex-direction: column; gap: 4px; }
.ci-cm { display: flex; align-items: center; gap: 9px; border: none; background: transparent; cursor: pointer; padding: 6px; border-radius: var(--drv-radius-btn); font: inherit; font-size: 13px; color: var(--drv-text); text-align: left; }
.ci-cm:hover { background: var(--drv-k-06); }
.ci-open { width: 100%; justify-content: center; margin-top: 16px; }
.btn.btn-icon { padding: 0; width: 40px; height: 40px; justify-content: center; flex: none; }
.chats-placeholder { margin: auto; text-align: center; color: var(--drv-text-faint); }
/* мобилка: инфо-панель собеседника - полноэкранный оверлей (сбоку не помещается; раньше был display:none
   и кнопка «Панель информации» была мёртвой). Закрытие - крестик .ci-close-mob внутри панели. */
@media (max-width: 760px){
  .chat-info { display: none; }
  .chat-info:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 2600; width: auto;
    border-left: none; padding: 20px 16px 30px; }
  /* :not([hidden]) в селекторе не только логика, но и специфичность: базовый .ci-close-mob{display:none}
     стоит в файле ниже этого @media и иначе перебивал бы flex (одинаковый вес, позже = сильнее) */
  .chat-info:not([hidden]) .ci-close-mob { display: flex; position: absolute; top: 10px; right: 10px; width: 36px; height: 36px;
    align-items: center; justify-content: center; border: 1px solid var(--drv-k-12); border-radius: 50%;
    background: var(--surface); color: var(--drv-text); cursor: pointer; }
  .ci-close-mob i { width: 18px; height: 18px; }
}
.chats-placeholder i { width: 40px; height: 40px; }
/* мобилка: либо список на весь экран, либо открытый тред на весь экран (как в мессенджере) */
.cth-back { display: none; flex: none; width: 34px; height: 34px; margin-left: -4px; border: none; background: transparent; color: var(--drv-text); border-radius: var(--drv-radius-btn); cursor: pointer; align-items: center; justify-content: center; }
.cth-back i { width: 20px; height: 20px; }
.ci-close-mob { display: none; }
/* заголовок треда не переносится на 2 строки («Командный чат» ломал шапку на мобиле) */
.cth-id b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 760px){
  .chats-intro { display: none; }   /* интро-текст и «Открыть в окне» - место нужнее списку/треду */
  /* высота ровно под экран: 100dvh - топбар(54) - паддинг контента(12) - нижний бар с запасом(76).
     Раньше было -128px и композер уезжал ПОД нижнее меню - поле ввода было не видно. */
  .chats-layout { grid-template-columns: 1fr; grid-template-rows: 1fr; height: calc(100dvh - 142px); }
  .chats-side { max-height: none; border-radius: var(--drv-radius-card); }
  /* по умолчанию виден список; при открытом чате (.chat-open) - только тред */
  .chats-layout:not(.chat-open) .chats-main { display: none; }
  .chats-layout.chat-open .chats-side { display: none; }
  .cth-back { display: inline-flex; }
  /* в модалке чатов: модалка на весь экран, тело = экран минус прилипшая шапка */
  .modal.modal-chats .modal-body.chats-panel { height: calc(100dvh - 56px); }
}

/* недописанное сообщение в списке бесед: «Черновик: текст» вместо последнего сообщения */
.conv-draft { color: var(--drv-red); font-weight: var(--drv-w-semibold); }

/* чат: цитаты, вложения, реакции, инструменты */
.chat-quote { font-size: 12px; border-left: 2px solid var(--drv-red); padding: 2px 8px; margin-bottom: 4px; color: var(--drv-text-muted); background: var(--drv-k-06); border-radius: 4px; }
.chat-att { display: block; margin-top: 6px; }
.chat-att img { max-width: 220px; max-height: 220px; border-radius: 8px; display: block; }
/* фото-вложение - кнопка-лайтбокс: снимаем дефолтную обёртку кнопки */
button.chat-att-img { background: none; border: 0; padding: 0; cursor: zoom-in; font: inherit; text-align: left; }

/* умный контроль ответственных: флаги на карточках задач + фильтр «На контроле» */
.tflag { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-2xs); font-weight: var(--fw-semibold); padding: 2px 8px; border-radius: var(--r-sm); line-height: 1.5; }
.tflag--red { background: var(--r08); color: var(--r); }
.tflag--amber { background: var(--warn-s); color: var(--warn); }
.kanban-card--alert { box-shadow: inset 3px 0 0 var(--r); }   /* красная грань у задач «На контроле» */
.ctrl-chip { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: var(--fw-semibold); padding: 6px 12px; border-radius: var(--r-pill); border: 1px solid var(--r); color: var(--r); background: transparent; text-decoration: none; line-height: 1; }
.ctrl-chip i { width: 14px; height: 14px; }
.ctrl-chip b { background: var(--r); color: #fff; border-radius: var(--r-pill); padding: 1px 7px; font-size: var(--fs-2xs); }
.ctrl-chip:hover { background: var(--r08); }
.ctrl-chip.on { background: var(--r); color: #fff; }
.ctrl-chip.on b { background: rgba(255,255,255,.25); color: #fff; }
/* баннер контроля внутри карточки задачи */
.t-attn { display: flex; gap: 8px; align-items: center; padding: 9px 12px; border-radius: var(--r-md); margin-bottom: 12px; font-size: var(--fs-sm); }
.t-attn i { width: 16px; height: 16px; flex: none; }
.t-attn--red { background: var(--r08); color: var(--r); }
.t-attn--amber { background: var(--warn-s); color: var(--warn); }

/* бэклог проекта (карточка проекта + кабинет спеца) */
.bl-add { display: flex; gap: 8px; margin-bottom: 12px; }
.bl-add input[type=text] { flex: 1; min-width: 0; padding: 10px 13px; border: 1px solid var(--ln); border-radius: var(--r-md); font-family: inherit; font-size: var(--fs-sm); background: var(--pane); color: var(--t); box-sizing: border-box; }
.bl-add input[type=text]:focus { outline: none; border-color: var(--r); box-shadow: 0 0 0 3px var(--r08); }
.bl-prio-sel { flex: none; width: auto; }
.bl-list { display: flex; flex-direction: column; gap: 6px; }
.bl-item { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border: 1px solid var(--ln); border-radius: var(--r-md); background: var(--pane); }
.bl-check { flex: none; display: flex; align-items: center; }
.bl-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--slate); }
.bl-prio-high .bl-dot { background: var(--r); }
.bl-prio-normal .bl-dot { background: var(--warn); }
.bl-prio-low .bl-dot { background: var(--slate); }
.bl-text { flex: 1; min-width: 0; font-size: var(--fs-sm); }
.bl-author { flex: none; font-size: var(--fs-2xs); color: var(--m); white-space: nowrap; }
.bl-actions { flex: none; display: flex; gap: 2px; }
.bl-mini { background: none; border: 0; cursor: pointer; color: var(--m); padding: 4px; border-radius: 6px; display: inline-flex; }
.bl-mini:hover { background: var(--soft); color: var(--t); }
.bl-mini.danger:hover { background: var(--r08); color: var(--r); }
.bl-mini i { width: 15px; height: 15px; }
.bl-foot { display: flex; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--ln2); }
.bl-foot input[type=text] { flex: 1; }

/* чипы каналов в списке клиентов (по handoff full): цветные квадраты с иконкой площадки */
.ch-chips { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.ch-chip { width: 20px; height: 20px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.ch-chip img { width: 12px; height: 12px; filter: brightness(0) invert(1); }
.ch-chip--tg { background: var(--c-tg); }
.ch-chip--max { background: var(--c-max); }
.ch-chip--vk { background: var(--c-vk); }
.ch-chip--wa { background: var(--c-wa); }

/* нативный input[type=file] под дизайн-систему: кнопка как у нас, подпись приглушена (а не «Выберите файл / Файл не выбран») */
input[type=file] { font-family: inherit; font-size: var(--fs-xs); color: var(--m); max-width: 100%; }
input[type=file]::file-selector-button {
  font-family: inherit; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--t);
  background: var(--bg); border: 1px solid var(--ln); border-radius: var(--r-sm);
  padding: 8px 14px; margin-right: 10px; cursor: pointer; transition: border-color .12s, color .12s; }
input[type=file]::file-selector-button:hover { border-color: var(--r); color: var(--r); }

/* рассылки: чип канала + поля формы создания под дизайн-систему */
.bc-chan { display: inline-flex; align-items: center; gap: 7px; font-size: var(--fs-xs); color: var(--m); background: var(--bg); border: 1px solid var(--ln); border-radius: 9px; padding: 6px 11px; }
.bc-compose input[type=text], .bc-compose textarea { width: 100%; padding: 10px 13px; border: 1px solid var(--ln); border-radius: var(--r-md); font-family: inherit; font-size: var(--fs-sm); background: var(--pane); color: var(--t); box-sizing: border-box; }
.bc-compose textarea { resize: vertical; }
.bc-compose input:focus, .bc-compose textarea:focus { outline: none; border-color: var(--r); box-shadow: 0 0 0 3px var(--r08); }

/* автоцепочки: визуальная цепочка Старт → шаги с соединителями (по handoff) */
.chain { display: flex; flex-direction: column; align-items: center; }
.chain-node { width: 340px; max-width: 100%; display: flex; align-items: center; gap: 10px; background: var(--pane); border: 1px solid var(--ln); border-radius: 13px; padding: 13px 14px; box-sizing: border-box; }
.chain-ic { width: 32px; height: 32px; border-radius: 9px; display: flex; align-items: center; justify-content: center; flex: none; }
.chain-ic i, .chain-ic svg { width: 16px; height: 16px; }
.chain-conn { width: 2px; height: 18px; background: var(--ln); }
.chain-add { width: 340px; max-width: 100%; border: 1.5px dashed var(--r); background: var(--r08); border-radius: 13px; padding: 12px; display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--r); font-family: inherit; font-size: var(--fs-sm); font-weight: var(--fw-medium); cursor: pointer; box-sizing: border-box; }
.chain-add:hover { background: var(--r10); }
.camp-collapse { background: none; border: 0; cursor: pointer; color: var(--m); display: inline-flex; padding: 2px; border-radius: 6px; flex: none; }
.camp-collapse:hover { background: var(--ln2); color: var(--t); }
.camp-collapse i, .camp-collapse svg { width: 16px; height: 16px; transition: transform .15s; }
.camp-collapse.collapsed i, .camp-collapse.collapsed svg { transform: rotate(-90deg); }

/* специалисты: имя + бейджи (основной / в работе) в один ряд, по центру - не на разных уровнях */
.spec-name-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.spec-name-row .badge { display: inline-flex; align-items: center; gap: 3px; }
.spec-name-row .badge svg, .spec-name-row .badge i { width: 11px; height: 11px; }

/* Карточка-редактирование сделки: единый вид полей (инпут/комбо/выпадашка одной высоты и стиля).
   Перебиваем легаси .kb-form/.combo-input (у них разный паддинг/бордер - размеры разъезжались) и
   возвращаем выпадашкам chevron (стадия/источник были без стиля). Идёт ПОСЛЕ .kb-form - выигрывает порядком. */
.deal-edit-inline { max-width: 100%; }   /* заполняем всю ширину модалки, без пустого поля справа */
.deal-edit-inline input[type=text], .deal-edit-inline input:not([type]),
.deal-edit-inline textarea, .deal-edit-inline .combo-input {
  width: 100%; padding: 11px 14px; border: 1px solid var(--ln); border-radius: var(--r-md);
  font-family: inherit; font-size: var(--fs-sm); background: var(--pane); color: var(--t); box-sizing: border-box; }
.deal-edit-inline textarea { min-height: 64px; resize: vertical; }
.deal-edit-inline input:focus, .deal-edit-inline textarea:focus, .deal-edit-inline .combo-input:focus {
  outline: none; border-color: var(--r); box-shadow: 0 0 0 3px var(--r08); }
.deal-edit-inline select {
  width: 100%; height: 46px; appearance: none; -webkit-appearance: none; -moz-appearance: none;
  padding: 0 36px 0 14px; border: 1px solid var(--ln); border-radius: var(--r-md);
  font-family: inherit; font-size: var(--fs-sm); color: var(--t); background-color: var(--pane); cursor: pointer;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="%238a8a8a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>');
  background-repeat: no-repeat; background-position: right 12px center; }
.deal-edit-inline select:focus { outline: none; border-color: var(--r); box-shadow: 0 0 0 3px var(--r08); }

/* резервный фонд («баланс конторы») - выделенная карточка счёта */
.fin-acc--reserve { border-color: var(--r); box-shadow: inset 0 0 0 1px var(--r); }
.fin-acc--reserve .fin-acc-name { color: var(--r); }
.chat-rx { display: flex; align-items: center; gap: 4px; margin-top: 4px; flex-wrap: wrap; }
.chat-rx-b { border: 1px solid var(--drv-k-12); background: var(--surface); border-radius: 12px; padding: 1px 8px; font-size: 12px; cursor: pointer; }
.chat-rx-b.on { background: var(--drv-red-08); border-color: var(--drv-red); }
.chat-tools { display: none; gap: 2px; margin-left: 4px; }
.chat-msg:hover .chat-tools { display: inline-flex; }
.chat-tool { border: none; background: transparent; cursor: pointer; padding: 1px 3px; font-size: 13px; color: var(--drv-text-faint); }
.chat-tool:hover { color: var(--drv-red); }
.chat-tool.del:hover { color: var(--drv-red); }
.chat-tool i { width: 14px; height: 14px; }
.chat-reply-preview { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 14px; border-top: 1px solid var(--drv-k-06); font-size: 12px; color: var(--drv-text-muted); background: var(--drv-k-06); }
.chat-reply-preview[hidden], .chat-attach-chip[hidden] { display: none; }
.chat-reply-preview button { border: none; background: transparent; cursor: pointer; color: var(--drv-text-faint); }
.chat-attach-btn { display: inline-flex; align-items: center; cursor: pointer; color: var(--drv-text-faint); }
.chat-attach-btn:hover { color: var(--drv-red); }
.chat-attach-chip { font-size: 11px; color: var(--drv-text-muted); padding: 4px 14px; }

/* ===== хаб чатов: модалка + полировка ===== */
.modal.modal-chats { width: min(1080px, 96vw); max-width: 96vw; }
.modal.modal-chats .modal-body.chats-panel { height: min(78vh, 720px); display: flex; padding: 0 !important; }
.modal-chats .chats-layout { height: 100%; gap: 0; grid-template-columns: 300px 1fr; flex: 1; }
.modal-chats .chats-side { border: none; border-right: 1px solid var(--drv-k-06); border-radius: 0; }
.modal-chats .chats-main { border: none; border-radius: 0; }
.modal-h-acts { display: inline-flex; align-items: center; gap: 4px; }
.modal-h-link { display: inline-flex; width: 30px; height: 30px; align-items: center; justify-content: center; border-radius: var(--drv-radius-btn); color: var(--drv-text-faint); }
.modal-h-link:hover { color: var(--drv-red); background: var(--drv-red-08); }
.modal-h i { width: 18px; height: 18px; vertical-align: -3px; margin-right: 5px; }

/* переключатель Команда/Клиенты (сегмент-капсула, как в ASPRO) */
.chats-toggle { display: flex; gap: 4px; margin: 12px; padding: 4px; background: var(--drv-k-06); border-radius: 999px; }
.ctog { flex: 1; border: none; background: transparent; cursor: pointer; padding: 8px 10px; border-radius: 999px; font: inherit; font-size: 13.5px;
  font-weight: var(--drv-w-medium); color: var(--drv-text-muted); display: inline-flex; align-items: center; justify-content: center; gap: 6px; transition: background var(--drv-transition-fast), color var(--drv-transition-fast); }
.ctog:hover { color: var(--drv-text); }
.ctog.on { background: var(--surface); color: var(--drv-text); box-shadow: var(--drv-shadow-sm); }
.ctog-c { font-size: 11px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--drv-k-12); color: var(--drv-text-muted); display: inline-flex; align-items: center; justify-content: center; }
.ctog.on .ctog-c { background: var(--drv-red); color: #fff; }
/* строка поиска + «создать группу» */
.chats-search { display: flex; align-items: center; gap: 8px; margin: 0 12px 8px; padding: 0 10px; height: 38px; background: var(--drv-k-06); border-radius: var(--drv-radius-btn); }
.chats-search i { width: 16px; height: 16px; color: var(--drv-text-faint); flex: none; }
.chats-search input { flex: 1; border: none; background: transparent; outline: none; font: inherit; font-size: 13.5px; color: var(--drv-text); min-width: 0; }
.chats-new-btn { flex: none; width: 28px; height: 28px; border-radius: 50%; border: none; background: var(--drv-red); color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.chats-new-btn:hover { background: var(--drv-red-hover); }
.chats-new-btn i { width: 15px; height: 15px; color: #fff; }
/* секции «Сообщения» / «Контакты» */
.chats-sec { padding: 12px 16px 5px; font-size: 11px; font-weight: var(--drv-w-semibold); letter-spacing: .04em; text-transform: uppercase; color: var(--drv-text-faint); }
.chats-empty-list, .chats-noresult { padding: 28px 18px; text-align: center; color: var(--drv-text-faint); font-size: 13px; line-height: 1.5; }
/* окно «Создать группу» (вне kb-form - явный вертикальный ритм) */
.modal.modal-chatgrp { width: min(460px, 96vw); }
.chatgrp-form { display: flex; flex-direction: column; padding: 20px 22px 18px; }
.chatgrp-form .cg-input { width: 100%; padding: 11px 14px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 14px; }
.chatgrp-form .cg-input:focus { outline: none; border-color: var(--drv-red); }
.cg-section { margin: 18px 0 10px; font-size: 12px; font-weight: var(--drv-w-semibold); letter-spacing: .03em; text-transform: uppercase; color: var(--drv-text-faint); }
.cg-srch { margin: 0 0 12px; }
/* шапка окна: аватарка чата + название в один ряд */
.cg-head { display: flex; align-items: center; gap: 12px; }
.cg-head .cg-input { flex: 1; }
.cg-ava { width: 46px; height: 46px; flex: none; border-radius: 50%; border: 1px dashed var(--drv-k-12);
  background: var(--drv-bg) center/cover no-repeat; color: var(--drv-text-faint); cursor: pointer;
  display: flex; align-items: center; justify-content: center; transition: border-color .15s, color .15s; }
.cg-ava:hover { border-color: var(--drv-red); color: var(--drv-red); }
.cg-ava.has-img { border-style: solid; border-color: var(--drv-k-06); color: transparent; }
.cg-ava i { width: 18px; height: 18px; }
/* заголовок группы участников (Команда / Клиенты) */
.cg-grp { margin: 12px 6px 4px; font-size: 11px; font-weight: var(--drv-w-semibold); letter-spacing: .04em; text-transform: uppercase; color: var(--drv-text-faint); }
.cg-grp:first-child { margin-top: 2px; }
#cg-members-host { max-height: 320px; overflow-y: auto; margin: 0 -6px; }
.cg-loading { padding: 12px 6px; }
.cg-mem { display: flex; align-items: center; gap: 11px; padding: 9px 8px; border-radius: var(--drv-radius-btn); cursor: pointer; }
.cg-mem:hover { background: var(--drv-k-06); }
.cg-mem-body { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.cg-mem-body b { font-size: 14px; font-weight: var(--drv-w-medium); }
.cg-mem-body .muted { font-size: 12px; }
.cg-mem input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--drv-red); flex: none; }
.cg-foot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
.conv-ava.sm { width: 34px; height: 34px; font-size: 13px; }

/* задачи в карточке сделки (боковая колонка) */
.dc-tasks { display: flex; flex-direction: column; gap: 2px; }
.dc-task { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 8px;
  margin: 0 -8px; border-radius: var(--drv-radius-btn); cursor: pointer; }
.dc-task:hover { background: var(--drv-k-06); }
.dc-task .status-badge { flex: none; }

/* окно «Участники чата»: текущий состав + добавление */
.cm-cur-h, .cm-add-h { font-size: 12px; font-weight: var(--drv-w-semibold); letter-spacing: .03em; text-transform: uppercase; color: var(--drv-text-faint); margin: 2px 0 8px; }
.cm-add-h { margin-top: 18px; }
.cm-count { color: var(--drv-red); }
.cm-cur { display: flex; flex-direction: column; gap: 2px; max-height: 240px; overflow-y: auto; margin: 0 -6px; }
.cm-row { display: flex; align-items: center; gap: 11px; padding: 8px 8px; border-radius: var(--drv-radius-btn); }
.cm-row:hover { background: var(--drv-k-06); }
.cm-body { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.cm-body b { font-size: 14px; font-weight: var(--drv-w-medium); }
.cm-body .muted { font-size: 12px; }
.cm-del { flex: none; width: 28px; height: 28px; border: none; background: transparent; border-radius: 50%; color: var(--drv-text-faint); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.cm-del:hover { background: var(--drv-red-08); color: var(--drv-red); }
.cm-del i { width: 15px; height: 15px; }
.cm-lock { flex: none; width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; color: var(--drv-text-faint); opacity: .6; }
.cm-lock i { width: 13px; height: 13px; }
.cm-srch { margin: 0 0 10px; }
.cm-cand { max-height: 260px; overflow-y: auto; margin: 0 -6px; }
.cm-add-foot { display: flex; justify-content: flex-end; margin-top: 14px; }

/* инфо-панель чата: участники группы */
.ci-sec--row { display: flex; align-items: center; gap: 8px; }
.ci-mem-manage { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; border: none; background: transparent; color: var(--drv-red); font: inherit; font-size: 12px; font-weight: var(--drv-w-medium); text-transform: none; letter-spacing: normal; cursor: pointer; }
.ci-mem-manage i { width: 13px; height: 13px; }
.ci-members { display: flex; flex-direction: column; gap: 2px; padding-bottom: 8px; }
.ci-mem { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.ci-mem-n { font-size: 13px; color: var(--drv-text); display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
.ci-mem-lock { width: 12px; height: 12px; color: var(--drv-text-faint); }

/* ===== аватары-картинки, логотипы, папка файлов ===== */
.conv-ava.has-img, .combo-ava.has-img { background-size: cover; background-position: center; color: transparent; }
/* мини-аватар в комбо/таблице компаний */
.combo-ava { width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 11px; font-weight: var(--drv-w-semibold); flex: none; text-transform: uppercase; background: var(--drv-text-faint); }
.combo-ava.clr-blue { background: #4a7bd0; }
.combo-opt.has-ava { display: flex; align-items: center; gap: 9px; }
.td-co { display: inline-flex; align-items: center; gap: 9px; }
/* загрузка аватара/логотипа: камера по ховеру */
.ava-edit { position: relative; cursor: pointer; flex: none; display: inline-flex; }
.ava-edit-cam { position: absolute; right: -2px; bottom: -2px; width: 22px; height: 22px; border-radius: 50%; background: var(--drv-red);
  color: #fff; display: inline-flex; align-items: center; justify-content: center; border: 2px solid var(--surface); }
.ava-edit-cam i { width: 12px; height: 12px; }
.ava-edit:hover .conv-ava { filter: brightness(.85); }
.cli-head-id, .co-head { display: flex; align-items: center; gap: 14px; }
.co-head { gap: 16px; }
/* шапка компании: заголовок прижат к аватарке, действия справа */
.co-head-id { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; }
.co-head-id h1 { margin: 0; }
.co-head-id .muted { font-size: 13px; }
/* карточка компании: вкладки, статистика, просмотр реквизитов */
button.vbtn { border: none; background: transparent; cursor: pointer; font-family: inherit; }
.co-tabs { margin: 4px 0 18px; }
.co-stats { margin-bottom: 18px; }
.co-stats .num.sm { font-size: 17px; white-space: normal; font-weight: var(--drv-w-semibold); }
.num-sub { font-size: 18px; color: var(--drv-text-faint); font-weight: var(--drv-w-medium); }
.co-kv-panel { padding: 4px 0; }
.kv { display: flex; gap: 18px; padding: 9px 18px; border-bottom: 1px solid var(--drv-k-06); }
.kv:last-child { border-bottom: none; }
.kv-l { width: 190px; flex: none; color: var(--drv-text-faint); font-size: 13px; }
.kv-v { font-size: 13.5px; word-break: break-word; }
.co-note { padding: 12px 18px; border-top: 1px solid var(--drv-k-06); display: flex; flex-direction: column; gap: 4px; font-size: 13.5px; }
.co-note .kv-l { width: auto; }

/* ===== клиентский портал (админ) ===== */
.status-sel { padding: 5px 10px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; cursor: pointer; }
.badge.pst-active { background: rgba(47,170,99,.16); color: #2faa63; }
.badge.pst-invited { background: rgba(74,123,208,.16); color: #4a7bd0; }
.badge.pst-none { background: var(--drv-k-06); color: var(--drv-text-muted); }
.badge.pst-blocked { background: var(--drv-red-08); color: var(--drv-red); }
.copy-row { display: flex; gap: 8px; }
.copy-row input { flex: 1; padding: 9px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
/* степпер этапов заказа в кабинете клиента */
.stepper { display: flex; flex-wrap: wrap; gap: 0; margin: 10px 0 4px; }
.step { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 96px; position: relative; }
.step-dot { width: 26px; height: 26px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center;
  background: var(--drv-k-12); color: var(--drv-text-faint); font-size: 12px; font-weight: var(--drv-w-semibold); z-index: 1; }
.step-lbl { font-size: 12px; color: var(--drv-text-faint); }
.step::after { content: ""; position: absolute; left: 26px; right: 0; top: 13px; height: 2px; background: var(--drv-k-12); }
.step:last-child::after { display: none; }
.step.done .step-dot { background: #2faa63; color: #fff; }
.step.done::after { background: #2faa63; }
.step.current .step-dot { background: var(--drv-red); color: #fff; }
.step.current .step-lbl { color: var(--drv-text); font-weight: var(--drv-w-medium); }

/* портал: согласование, уведомления, чат клиента */
.approve-row { padding: 11px 18px; border-bottom: 1px solid var(--drv-k-06); }
.approve-row:last-child { border-bottom: none; }
.approve-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.approve-t { flex: 1; min-width: 140px; font-size: 14px; }
.approve-acts { display: flex; gap: 8px; }
.rework-box { width: 100%; display: flex; gap: 8px; margin-top: 8px; }
.rework-box input { flex: 1; padding: 8px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.notif-cab { padding: 10px 18px; border-bottom: 1px solid var(--drv-k-06); }
.notif-cab:last-child { border-bottom: none; }
.notif-cab.unread { background: var(--drv-red-08); }
.notif-cab-t { font-size: 13.5px; }
/* чат клиента в портале */
.cab-chat { display: flex; flex-direction: column; height: 420px; }
.cab-msgs { flex: 1; overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; background: var(--drv-bg); }
.cab-msg { max-width: 80%; align-self: flex-start; background: var(--drv-k-06); border-radius: 12px 12px 12px 4px; padding: 8px 12px; box-shadow: var(--drv-shadow-sm); }
.cab-msg.mine { align-self: flex-end; background: var(--drv-red-08); border-radius: 12px 12px 4px 12px; }
.cab-msg-a { font-size: 11px; color: var(--drv-text-faint); margin-bottom: 2px; }
.cab-msg-t { font-size: 14px; white-space: pre-wrap; word-break: break-word; }
.cab-empty { margin: auto; color: var(--drv-text-faint); font-size: 13px; text-align: center; }
.cab-send { display: flex; gap: 8px; padding: 12px 14px; border-top: 1px solid var(--drv-k-06); }
.cab-send input { flex: 1; padding: 9px 13px; border: 1px solid var(--drv-k-12); border-radius: 999px; background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 14px; outline: none; }
.cab-send input:focus { border-color: var(--drv-red); }
.cab-send input:disabled { opacity: .6; }
.cab-msg.ai { background: var(--drv-bg-secondary); border: 1px solid var(--drv-k-06); }
.ai-escalate { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-top: 1px solid var(--drv-k-06); font-size: 12.5px; background: rgba(230,162,60,.08); }
.ai-escalate i { width: 14px; height: 14px; }
.hint-deliver { display: flex; align-items: flex-start; gap: 12px; padding: 16px 20px; }
.hint-deliver > i { width: 22px; height: 22px; color: var(--drv-red); flex: none; margin-top: 2px; }
/* портал на телефоне: степпер компактнее */
@media (max-width: 560px) {
  .step { min-width: 56px; }
  .step-lbl { font-size: 10px; }
  .cab-chat { height: 360px; }
  .approve-acts { width: 100%; }
}

/* переключатель каналов общения (TG/VK/MAX/Портал) */
.cth-channels { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 8px 16px; border-bottom: 1px solid var(--drv-k-06); background: var(--drv-bg-secondary); }
.cth-ch-l { font-size: 12px; margin-right: 2px; }
.cth-ch { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--drv-k-12); background: var(--surface); cursor: pointer;
  padding: 4px 11px; border-radius: 999px; font: inherit; font-size: 12.5px; color: var(--drv-text-muted); }
.cth-ch:hover { color: var(--drv-text); }
.cth-ch.on { background: var(--drv-red); border-color: var(--drv-red); color: #fff; }
.cth-ch i { width: 13px; height: 13px; }

/* папка файлов профиля */
.pf-box { border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); overflow: hidden; }
.pf-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--drv-k-06); background: var(--drv-bg-secondary); flex-wrap: wrap; }
.pf-sort { display: flex; gap: 4px; }
.pf-sbtn { border: none; background: transparent; cursor: pointer; font: inherit; font-size: 12.5px; color: var(--drv-text-muted); padding: 5px 10px; border-radius: var(--drv-radius-btn); }
.pf-sbtn:hover { background: var(--drv-k-06); color: var(--drv-text); }
.pf-sbtn.on { background: var(--surface); color: var(--drv-text); box-shadow: var(--drv-shadow-sm); }
.pf-up { cursor: pointer; }
.pf-warn { display: flex; align-items: center; gap: 7px; padding: 10px 14px; font-size: 12.5px; color: #b5781b; background: rgba(230,162,60,.10); }
.pf-warn i { width: 15px; height: 15px; }
.pf-list { max-height: 320px; overflow-y: auto; }
.pf-item { display: flex; align-items: center; gap: 11px; padding: 10px 14px; border-bottom: 1px solid var(--drv-k-06); }
.pf-item:last-child { border-bottom: none; }
.pf-ic { color: var(--drv-text-faint); flex: none; display: inline-flex; }
.pf-ic i { width: 18px; height: 18px; }
.pf-name { flex: 1; min-width: 0; font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-meta { font-size: 11.5px; flex: none; white-space: nowrap; }
.pf-act { flex: none; width: 30px; height: 30px; border: none; background: transparent; cursor: pointer; color: var(--drv-text-faint); border-radius: var(--drv-radius-btn); display: inline-flex; align-items: center; justify-content: center; }
.pf-act:hover { background: var(--drv-k-06); color: var(--drv-text); }
.pf-act.del:hover { color: var(--drv-red); }
.pf-act i { width: 15px; height: 15px; }
.pf-empty { padding: 22px 16px; text-align: center; color: var(--drv-text-faint); font-size: 13px; }

/* ===== граф связей (relations): компактно, в одну строку на ПК ===== */
.lk-box { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; }
.lk-empty { padding: 8px 0; font-size: 13px; }
.lk-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.lk-label { display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: var(--drv-w-semibold); letter-spacing: .03em; text-transform: uppercase; color: var(--drv-text-disabled); flex: none; }
.lk-label i { width: 13px; height: 13px; }
.lk-c { background: var(--drv-k-12); color: var(--drv-text-muted); border-radius: 9px; padding: 0 6px; font-size: 10px; }
.lk-items { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
.lk-chip { display: inline-flex; align-items: center; gap: 8px; max-width: min(210px, 100%); min-width: 0; border: 1px solid var(--drv-k-08); background: var(--surface);
  border-radius: var(--drv-radius-btn); padding: 5px 11px 5px 6px; cursor: pointer; font: inherit; text-align: left; color: var(--drv-text);
  transition: border-color var(--drv-transition-fast), background var(--drv-transition-fast); }
.lk-chip:hover { border-color: var(--drv-red); background: var(--drv-red-08); }
.lk-ava { width: 24px; height: 24px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: var(--drv-text-faint); }
.lk-ava.clr-green { background: #2faa63; } .lk-ava.clr-blue { background: #4a7bd0; } .lk-ava.clr-violet { background: #a989f3; }
.lk-ava.clr-amber { background: #e6a23c; } .lk-ava.clr-red { background: var(--drv-red); } .lk-ava.clr-gray { background: var(--drv-text-faint); }
.lk-ava.has-img { background-size: cover; background-position: center; }
.lk-ava i { width: 13px; height: 13px; }
.lk-ct { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; flex: 1; overflow: hidden; }
.lk-ct b { font-size: 12.5px; font-weight: var(--drv-w-medium); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.lk-ct .muted { font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
/* Связи в боковой колонке карточки сделки (отдельная страница/всплывашка): тайлы одного размера,
   текст в многоточие, не вылезают за рамку - вертикальный стек на всю ширину колонки.
   Метку («Клиент»/«Компания»…) ставим над тайлами, чтобы ширина тайлов не зависела от длины метки. */
.dealcard-side .lk-box { flex-direction: column; align-items: stretch; gap: 16px; }
.dealcard-side .lk-group { flex-direction: column; align-items: stretch; gap: 7px; }
.dealcard-side .lk-items { flex-direction: column; align-items: stretch; width: 100%; gap: 6px; }
.dealcard-side .lk-chip { max-width: 100%; width: 100%; }
.copy-mini--danger:hover { color: var(--drv-red); }

/* сквозная лента «всё по клиенту» */
.ctl { display: flex; flex-direction: column; }
.ctl-row.ctl-hidden { display: none; }
.ctl-row { display: flex; align-items: center; gap: 12px; padding: 9px 18px; border-bottom: 1px solid var(--drv-k-06); }
.ctl-row:last-child { border-bottom: none; }
.ctl-row.clickable { cursor: pointer; }
.ctl-row.clickable:hover { background: var(--drv-k-06); }
.ctl-ic { width: 30px; height: 30px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: var(--drv-text-faint); }
.ctl-ic.clr-green { background: #2faa63; } .ctl-ic.clr-blue { background: #4a7bd0; } .ctl-ic.clr-violet { background: #a989f3; }
.ctl-ic.clr-amber { background: #e6a23c; } .ctl-ic.clr-red { background: var(--drv-red); } .ctl-ic.clr-gray { background: var(--drv-text-faint); }
.ctl-ic i { width: 15px; height: 15px; }
.ctl-body { flex: 1; min-width: 0; }
.ctl-t { font-size: 13.5px; }
.ctl-sub { font-size: 12px; }
.ctl-at { flex: none; font-size: 11.5px; white-space: nowrap; }

/* ===== генератор аудитов/КП/брифов ===== */
.gen-layout { display: grid; grid-template-columns: 1fr; gap: 18px; }
@media (min-width: 1000px) { .gen-layout { grid-template-columns: 440px 1fr; } }
.gen-edit textarea { width: 100%; resize: vertical; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); padding: 12px 14px; }
.gen-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.gen-err { margin-top: 10px; padding: 10px 14px; border-radius: var(--drv-radius-btn); background: var(--drv-red-08); color: var(--drv-red); font-size: 13px; }
.gen-preview { display: flex; flex-direction: column; border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); overflow: hidden; background: var(--surface); min-height: 520px; }
.gen-preview-h { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; border-bottom: 1px solid var(--drv-k-06); }
#gen-frame { flex: 1; width: 100%; border: none; background: #fff; min-height: 520px; }

/* пузыри посимпатичнее */
.chats-main .chat-msgs, #chat-host .chat-msgs { background: var(--drv-bg); }
.chat-msg { position: relative; box-shadow: var(--drv-shadow-sm); border-radius: 14px 14px 14px 4px; }
.chat-msg.mine { border-radius: 14px 14px 4px 14px; }
.chat-msg-h b { font-size: 12px; }
.chat-msg.mine .chat-msg-h { text-align: right; }
.chats-placeholder div { margin-top: 10px; font-size: 13px; line-height: 1.5; }

/* поле ввода - капсула + круглая «отправить» */
.chat-send { align-items: center; }
.chat-send input[name=text] { border-radius: 22px; }
.chat-send .btn { border-radius: 50%; width: 40px; height: 40px; padding: 0; flex: none; }

/* --- мессенджеры/каналы: чипы + редактор (сквозной блок) --- */
.msg-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.msg-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px;
  border: 1px solid var(--border, rgba(0,0,0,.12)); border-radius: 999px;
  background: var(--card, #fff); font-size: 13px; line-height: 1.2; }
.msg-chip i { width: 15px; height: 15px; opacity: .8; }
.msg-chip a { text-decoration: none; }
.msg-chip a:hover { text-decoration: underline; }
.msg-chip .copy-mini { margin-left: 2px; }
.msg-editor { margin: 4px 0 2px; }
.msg-rows { display: flex; flex-direction: column; gap: 8px; }
.msg-row { display: flex; gap: 8px; align-items: center; margin-bottom: 0; }
/* Самодостаточные стили полей канала - раньше select/input имели только flex и «не подтягивались»
   в модалке (где нет обёрточного стиля формы). Теперь совпадают с .qc-input по всей системе. */
.msg-row select, .msg-row input { padding: 9px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; box-sizing: border-box; height: 40px; }
.msg-row select { flex: 0 0 132px; cursor: pointer; }
.msg-row input { flex: 1 1 auto; min-width: 0; }
.msg-row select:focus, .msg-row input:focus { outline: none; border-color: var(--drv-red); }
.msg-del { flex: none; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: transparent; color: var(--drv-text-faint);
  cursor: pointer; font-size: 18px; line-height: 1; transition: color .12s, border-color .12s, background .12s; }
.msg-del:hover { color: var(--drv-red); border-color: var(--drv-red); background: var(--drv-red-08); }
.msg-add { margin-top: 8px; }

/* --- чат: превью прикреплённого вложения (статус + миниатюра + удалить) --- */
.chat-attach-chip { display: flex; align-items: center; gap: 10px; margin: 6px 4px 0;
  padding: 7px 10px; border: 1px solid var(--border, rgba(0,0,0,.12)); border-radius: 12px;
  background: var(--card, #fff); font-size: 13px; }
.chat-attach-chip.err { border-color: #e0b4b4; background: #fff6f6; }
.chat-attach-chip .cac-thumb { flex: none; width: 38px; height: 38px; border-radius: 8px;
  background: #eee center/cover no-repeat; border: 1px solid var(--border, rgba(0,0,0,.08)); }
.chat-attach-chip .cac-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }
.chat-attach-chip .cac-name { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.chat-attach-chip .cac-status { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #888; }
.chat-attach-chip .cac-status i { width: 14px; height: 14px; }
.chat-attach-chip .cac-status.ok { color: #2e7d32; }
.chat-attach-chip.err .cac-status { color: #c0392b; }
.chat-attach-chip.loading .cac-status i { animation: cac-spin 0.9s linear infinite; }
@keyframes cac-spin { to { transform: rotate(360deg); } }
.chat-attach-chip .cac-del { flex: none; border: none; background: transparent; cursor: pointer;
  font-size: 20px; line-height: 1; color: #999; padding: 0 4px; }
.chat-attach-chip .cac-del:hover { color: #c0392b; }

/* --- настройки: гибкие доступы сотрудника по модулям --- */
.acl-form { padding: 12px 4px; }
.acl-grid { display: block; max-width: 560px; }
.acl-head { display: grid; grid-template-columns: 1fr 58px 80px; gap: 8px; font-size: 11px;
  color: var(--drv-text-faint, #999); text-transform: uppercase; letter-spacing: .3px;
  padding: 4px 0; border-bottom: 1px solid var(--border, rgba(0,0,0,.1)); }
.acl-head span:not(:first-child) { text-align: center; }
.acl-item { display: grid; grid-template-columns: 1fr 58px 80px; gap: 8px; align-items: center;
  padding: 7px 0; border-bottom: 1px solid var(--border, rgba(0,0,0,.06)); }
.acl-item:hover { background: var(--drv-red-08); }
.acl-item .acl-mod { font-size: 13px; }
.acl-chk { display: flex; justify-content: center; align-items: center; margin: 0; cursor: pointer; }
.acl-chk input { width: 17px; height: 17px; cursor: pointer; accent-color: var(--drv-red); }
.acl-chk input:disabled { cursor: not-allowed; opacity: .4; }
/* поле должности + пресеты доступа в редакторе прав */
.acl-form input[name="title"] { padding: 8px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; }
.acl-form input[name="title"]:focus { outline: none; border-color: var(--drv-red); }
.acl-preset { display: inline-flex; align-items: center; padding: 4px 11px; border: 1px solid var(--drv-k-12); border-radius: 999px;
  background: var(--surface); color: var(--drv-text-muted); font-size: 12.5px; cursor: pointer; font-family: inherit; }
.acl-preset:hover { border-color: var(--drv-red); color: var(--drv-red); }
.acl-preset.danger:hover { color: var(--drv-red); }

/* правка профиля члена команды (вкладка «Профиль») */
.tp-edit { margin-top: 12px; padding: 14px 16px; border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-card); background: var(--drv-bg); }
.tp-edit[hidden] { display: none; }
.tp-edit__row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.tp-f { display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; }
.tp-f > span { font-size: 12px; color: var(--drv-text-faint); }
.tp-f input, .tp-f textarea { padding: 9px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; box-sizing: border-box; width: 100%; }
.tp-f textarea { resize: vertical; line-height: 1.5; }
.tp-f input:focus, .tp-f textarea:focus { outline: none; border-color: var(--drv-red); }
@media (max-width: 560px){ .tp-edit__row { grid-template-columns: 1fr; } }

/* --- чат: плашка портала клиента --- */
.portal-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  flex-wrap: wrap; padding: 9px 14px; margin: 0 0 2px; background: rgba(33,150,243,.07);
  border-bottom: 1px solid var(--border, rgba(0,0,0,.08)); font-size: 13px; }
.portal-banner i { width: 15px; height: 15px; vertical-align: -2px; margin-right: 4px; opacity: .8; }
.portal-banner .pb-acts { display: flex; gap: 6px; flex-wrap: wrap; }

/* --- дашборд: маркетинг-аналитика --- */
.mkt-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.mkt-d { font-size: 12px; font-weight: 600; vertical-align: middle; margin-left: 4px; white-space: nowrap; }
.mkt-d.up { color: #2e7d32; }
.mkt-d.down { color: #c0392b; }

/* баннер «смотрю от лица сотрудника» */
.imp-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  flex-wrap: wrap; margin: 0 0 16px; padding: 10px 16px; border: 1px solid #e0b34b;
  background: rgba(224,179,75,.12); border-radius: 12px; font-size: 13.5px; }
.imp-banner i { width: 15px; height: 15px; vertical-align: -2px; margin-right: 4px; }

/* Редактор «Каталог заказа» (/settings/catalog) */
.cat-svc-top { display: flex; gap: 10px; align-items: center; margin-bottom: 14px; }
.cat-s-name { flex: 1; font-size: 15px; font-weight: 600; }
.cat-s-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 12px; }
.cat-s-grid > label, .cat-s-desc-l { display: flex; flex-direction: column; gap: 5px; font-size: 12px; color: var(--m); }
.cat-s-desc-l { margin-bottom: 12px; }
.cat-opts-l { font-size: 12px; color: var(--m); margin: 6px 0 8px; }
.cat-opt { display: grid; grid-template-columns: 1fr 96px 120px 38px; gap: 8px; margin-bottom: 8px; align-items: center; }
.cat-x { background: none; border: 0; color: var(--m); cursor: pointer; width: 36px; height: 36px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.cat-x:hover { background: var(--r08); color: var(--r); }
.cat-x > svg.lucide { width: 17px; height: 17px; }
.cat-svc input, .cat-svc select, .cat-svc textarea { width: 100%; padding: 9px 11px; border: 1px solid var(--ln); border-radius: 9px; font: inherit; font-size: 14px; background: var(--bg); color: var(--t); box-sizing: border-box; }
.cat-svc input:focus, .cat-svc select:focus, .cat-svc textarea:focus { outline: none; border-color: var(--r); box-shadow: 0 0 0 3px var(--r08); }
@media (max-width: 720px) { .cat-s-grid { grid-template-columns: 1fr 1fr; } .cat-opt { grid-template-columns: 1fr 1fr; } }

/* Пинги в меню профиля: выбор канала иконками (вместо громоздкого select) */
.popover__item--pings { gap: 10px; }
.ping-seg { display: inline-flex; gap: 5px; flex: none; }
.ping-seg .inline { margin: 0; }
.ping-ch { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--drv-k-12); background: var(--surface); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.ping-ch img { width: 16px; height: 16px; border-radius: 4px; display: block; }
.ping-ch:hover { border-color: var(--drv-red); }
.ping-ch.on { border-color: var(--drv-red); box-shadow: 0 0 0 2px var(--drv-red-08); }

/* ============================================================
   Профиль участника команды (.ent-*) - 1:1 с эталоном team-profile.
   Один фрагмент _team_profile.html делят страница (/team/profile/page)
   и всплывашка (team-popup). Права self/admin/adminself решаются на сервере.
   ============================================================ */
.ent { color: var(--t); }
.ent-back, .open-page { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--m); text-decoration: none; }
.ent-back { margin-bottom: 18px; }
.ent-back:hover { color: var(--t); }
.open-page:hover { color: var(--r); }
.ent-back > svg.lucide, .open-page > svg.lucide { width: 15px; height: 15px; }
.ent-modal-top { display: flex; justify-content: flex-start; margin-bottom: 10px; }
.ent-head { display: flex; align-items: center; gap: 18px; margin-bottom: 22px; flex-wrap: wrap; }
.ent-avatar { position: relative; width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 26px; font-weight: 600; flex: none; }
.ent-cam { position: absolute; right: -2px; bottom: -2px; width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--surface); background: var(--d); color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.ent-cam > svg.lucide { width: 12px; height: 12px; }
.ent-titlebox { flex: 1; min-width: 0; }
.ent-title { font-size: 26px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 6px; }
.ent-status { display: flex; align-items: center; gap: 9px; font-size: 13px; color: var(--m); flex-wrap: wrap; }
.ent-sep { color: var(--ln); font-size: 9px; }
.ent .faint { color: var(--f); }
.dot { width: 8px; height: 8px; border-radius: 50%; background: var(--f); display: inline-block; flex: none; }
.dot--online { background: var(--ok); }
.ent-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.role-badge { font-size: 12px; font-weight: 500; color: var(--r); background: var(--r08); border-radius: 8px; padding: 6px 12px; white-space: nowrap; }
.ent-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 24px; }
.ent-stats--5 { grid-template-columns: repeat(5, 1fr); }
.ent-stat { background: var(--surface); border: 1px solid var(--ln); border-radius: 14px; padding: 16px 18px; }
.ent-stat-v { font-size: 25px; font-weight: 700; letter-spacing: -.01em; }
.ent-stat-v small { font-size: 15px; font-weight: 600; }
.ent-stat-k { font-size: 12px; color: var(--m); margin-top: 3px; }
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--ln); margin-bottom: 20px; flex-wrap: wrap; }
.tab { display: inline-flex; align-items: center; gap: 7px; background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px; padding: 11px 14px; font: inherit; font-size: 14px; color: var(--m); cursor: pointer; }
.tab > svg.lucide { width: 15px; height: 15px; }
.tab:hover { color: var(--t); }
.tab.is-active { color: var(--r); border-bottom-color: var(--r); font-weight: 500; }
.tab-badge { font-size: 11px; background: var(--soft); color: var(--m); border-radius: 20px; padding: 1px 7px; }
.tab.is-active .tab-badge { background: var(--r08); color: var(--r); }
.tab-panel { display: none; flex-direction: column; gap: 22px; }
.tab-panel.is-active { display: flex; }
.perm-hint { display: flex; align-items: flex-start; gap: 9px; padding: 12px 15px; background: var(--info-s); border: 1px solid transparent; border-radius: 12px; font-size: 13px; color: var(--info); line-height: 1.45; }
.perm-hint > svg.lucide { width: 16px; height: 16px; flex: none; margin-top: 1px; }
.props { border: 1px solid var(--ln); border-radius: 14px; overflow: hidden; }
.prop { display: grid; grid-template-columns: 160px 1fr; gap: 14px; padding: 13px 18px; border-bottom: 1px solid var(--ln2); align-items: center; }
.prop:last-child { border-bottom: 0; }
.prop-k { font-size: 13px; color: var(--m); }
.prop-v { font-size: 14px; color: var(--t); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.copy { background: none; border: none; font: inherit; font-size: 12px; color: var(--m); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.copy:hover { color: var(--r); }
.perm-lock { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--f); margin-left: auto; }
.perm-lock > svg.lucide { width: 12px; height: 12px; }
.chan { width: 22px; height: 22px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.chan img { width: 14px; height: 14px; }
.chan--tg { background: #2aabee; }
.sec-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.sec-cap { font-size: 14px; font-weight: 600; color: var(--t); }
.sec-cap .cnt, .ent .cnt { font-size: 12px; font-weight: 400; color: var(--f); }
.tbl { border: 1px solid var(--ln); border-radius: 14px; overflow: hidden; }
.tbl-row { display: grid; gap: 12px; padding: 13px 16px; border-bottom: 1px solid var(--ln2); align-items: center; font-size: 14px; }
.tbl-row:last-child { border-bottom: 0; }
.tbl-head { background: var(--soft); font-size: 12px; color: var(--m); font-weight: 500; }
.tbl-link { cursor: pointer; }
.tbl-link:hover { background: var(--soft); }
.tbl .muted { color: var(--m); }
.tbl .faint { color: var(--f); font-size: 12px; }
.feed { display: flex; flex-direction: column; border: 1px solid var(--ln); border-radius: 14px; overflow: hidden; }
.feed-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--ln2); }
.feed-item:last-child { border-bottom: 0; }
.feed-ico { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex: none; color: #fff; background: var(--f); }
.feed-ico > svg.lucide { width: 15px; height: 15px; }
.feed-ico--sys { background: var(--ok); }
.feed-ico--msg { background: var(--info); }
.feed-ico--client { background: var(--warn); }
.feed-text { flex: 1; font-size: 13.5px; color: var(--t); min-width: 0; }
.feed-time { font-size: 12px; color: var(--f); white-space: nowrap; }
.feed-more { padding: 10px 16px; }
.skills { display: flex; flex-wrap: wrap; gap: 8px; }
.skill { display: inline-flex; align-items: center; gap: 7px; background: var(--soft); border-radius: 8px; padding: 6px 11px; font-size: 13px; color: var(--t); }
.skill .x { color: var(--f); cursor: pointer; display: inline-flex; }
.skill .x > svg.lucide { width: 13px; height: 13px; }
.skill .x:hover { color: var(--r); }
.skill-add { display: inline-flex; align-items: center; gap: 6px; border: 1px dashed var(--ln); border-radius: 8px; padding: 6px 11px; font-size: 13px; color: var(--m); cursor: pointer; }
.skill-add:hover { border-color: var(--r); color: var(--r); }
.skill-add > svg.lucide { width: 13px; height: 13px; }
.acc { border: 1px solid var(--ln); border-radius: 14px; overflow: hidden; }
.acc-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--ln2); }
.acc-row:last-child { border-bottom: 0; }
.acc-t { font-size: 14px; color: var(--t); display: block; }
.acc-d { font-size: 12px; color: var(--f); margin-top: 2px; display: block; }
.tgl { width: 40px; height: 23px; border-radius: 999px; background: var(--ln); position: relative; cursor: pointer; flex: none; transition: background .15s; }
.tgl::after { content: ''; position: absolute; top: 2px; left: 2px; width: 19px; height: 19px; border-radius: 50%; background: #fff; transition: left .15s; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
.tgl.on { background: var(--r); }
.tgl.on::after { left: 19px; }
.load { background: var(--surface); border: 1px solid var(--ln); border-radius: 14px; padding: 16px 18px; }
.load-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.load-k { font-size: 13px; color: var(--m); }
.load-v { font-size: 13px; font-weight: 500; color: var(--t); }
.load-bar { height: 7px; background: var(--soft); border-radius: 999px; overflow: hidden; }
.load-fill { height: 100%; background: var(--r); border-radius: 999px; }
.seg { display: inline-flex; gap: 2px; background: var(--soft); border-radius: 10px; padding: 3px; }
.seg-i { padding: 6px 14px; border-radius: 8px; font-size: 13px; color: var(--m); cursor: pointer; }
.seg-i.is-active { background: var(--surface); color: var(--t); font-weight: 500; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.cmt-input { display: flex; gap: 8px; margin-bottom: 12px; }
.cmt-input input { flex: 1; padding: 10px 13px; border: 1px solid var(--ln); border-radius: 10px; font: inherit; font-size: 14px; background: var(--bg); color: var(--t); }
.cmt { border: 1px solid var(--ln); border-radius: 12px; padding: 12px 15px; }
.cmt + .cmt { margin-top: 10px; }
.cmt-meta { font-size: 12px; color: var(--f); margin-bottom: 4px; }
.cmt-body { font-size: 14px; color: var(--t); }
@media (max-width: 720px) {
  .ent-stats, .ent-stats--5 { grid-template-columns: repeat(2, 1fr); }
  .prop { grid-template-columns: 1fr; gap: 4px; align-items: start; }
  .perm-lock { margin-left: 0; }
}

/* ===== Админ-страница «Клиентский портал» (/portal) ===== */
.prt-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.prt-stat { background: var(--surface); border: 1px solid var(--ln); border-radius: 14px; padding: 15px 18px; }
.prt-stat-v { font-size: 24px; font-weight: 700; letter-spacing: -.01em; }
.prt-stat-k { font-size: 12px; color: var(--m); margin-top: 3px; }
.prt-list { border: 1px solid var(--ln); border-radius: 16px; overflow: hidden; background: var(--surface); }
.prt-head, .prt-row { display: grid; grid-template-columns: minmax(0,2fr) 158px 132px 66px minmax(200px,1.3fr); gap: 14px; align-items: center; padding: 12px 18px; }
.prt-head { background: var(--soft); font-size: 11px; color: var(--m); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.prt-row { border-top: 1px solid var(--ln2); }
.prt-row:hover { background: var(--soft); }
.prt-client { display: flex; align-items: center; gap: 11px; min-width: 0; }
.prt-ava { width: 36px; height: 36px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 600; font-size: 14px; background: var(--drv-text-faint); background-size: cover; background-position: center; }
.prt-client-main { min-width: 0; }
.prt-name { font-weight: 500; font-size: 14.5px; color: var(--t); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.prt-name:hover { color: var(--r); }
.prt-meta { font-size: 12px; color: var(--f); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prt-stage-sel { width: 100%; font: inherit; font-size: 13px; padding: 7px 30px 7px 11px; border: 1px solid var(--ln); border-radius: 9px; background: var(--bg); color: var(--t); box-sizing: border-box; }
.prt-deals { font-size: 14px; color: var(--t); }
.prt-acts { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.prt-empty { padding: 44px 18px; text-align: center; color: var(--f); }
@media (max-width: 900px) {
  .prt-stats { grid-template-columns: repeat(2, 1fr); }
  .prt-head { display: none; }
  .prt-row { grid-template-columns: 1fr; gap: 10px; padding: 14px 16px; }
  .prt-acts { justify-content: flex-start; }
}

/* ─────────────────────────── вики / регламенты ─────────────────────────── */
.wiki-head-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wiki-search { position: relative; display: flex; align-items: center; }
/* lucide заменяет <i data-lucide> на <svg> - позиционируем оба, иначе иконка выпадает из поля */
.wiki-search > i, .wiki-search > svg { position: absolute; left: 12px; width: 16px; height: 16px; color: var(--f); pointer-events: none; }
.wiki-search input { width: 280px; max-width: 100%; padding: 9px 34px 9px 36px; border: 1px solid var(--ln); border-radius: var(--drv-radius-btn);
  background: var(--pane); color: var(--t); font-family: inherit; font-size: 14px; }
.wiki-search input:focus { outline: none; border-color: var(--r); }
.wiki-search-clear { position: absolute; right: 8px; display: inline-flex; color: var(--f); padding: 4px; border-radius: 6px; }
.wiki-search-clear:hover { color: var(--r); background: var(--r08); }
.wiki-search-clear i, .wiki-search-clear svg { width: 15px; height: 15px; }
/* умный поиск: живая выпадашка с подсказками (статья + раздел + фрагмент с совпадением) */
.wiki-sugg { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 60; display: none;
  background: var(--pane); border: 1px solid var(--ln2); border-radius: 12px; overflow: hidden;
  box-shadow: 0 12px 34px rgba(0,0,0,.25); max-height: 380px; overflow-y: auto; }
.wiki-sugg.open { display: block; }
.wiki-sugg-i { display: flex; flex-direction: column; gap: 3px; padding: 10px 13px; cursor: pointer;
  border-bottom: 1px solid var(--drv-k-06); text-decoration: none; color: inherit; }
.wiki-sugg-i:last-child { border-bottom: none; }
.wiki-sugg-i:hover, .wiki-sugg-i.act { background: var(--soft); }
.wiki-sugg-t { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: var(--drv-w-semibold); }
.wiki-sugg-t .wiki-chip { font-size: 11px; padding: 1px 8px; flex: none; }
.wiki-sugg-x { font-size: 12.5px; color: var(--m); line-height: 1.45; overflow: hidden; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.wiki-sugg-x mark { background: rgba(217,146,17,.25); color: inherit; border-radius: 3px; padding: 0 2px; }
.wiki-sugg-none { padding: 12px 14px; font-size: 13px; color: var(--f); }

.wiki-empty { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 60px 20px; text-align: center; color: var(--f); }
.wiki-empty i { width: 40px; height: 40px; color: var(--ln); }
.wiki-empty p { margin: 0; font-size: 15px; }

.wiki-cat { margin-bottom: 26px; }
.wiki-cat-h { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; }
.wiki-cat-name { font-size: var(--drv-fs-subsection); font-weight: var(--drv-w-bold); color: var(--t); letter-spacing: var(--drv-ls-tight); }
.wiki-cat-n { font-size: 12px; color: var(--f); background: var(--soft); border: 1px solid var(--ln2); border-radius: 999px; padding: 1px 9px; }

.wiki-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.wiki-card { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px; background: var(--pane);
  border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card); transition: border-color .15s, transform .15s; min-height: 92px; }
.wiki-card:hover { border-color: var(--r); transform: var(--drv-lift-sm); }
.wiki-card.pinned { border-left: 3px solid var(--r); }
.wiki-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.wiki-card-title { font-size: 15px; font-weight: var(--drv-w-semibold); color: var(--t); line-height: 1.3; }
.wiki-pin { width: 15px; height: 15px; color: var(--r); flex: none; margin-top: 2px; }
.wiki-card-ex { font-size: 13px; color: var(--m); line-height: 1.45; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.wiki-card-meta { display: flex; align-items: center; gap: 10px; margin-top: auto; padding-top: 4px; font-size: 12px; color: var(--f); }
.wiki-card-meta span:last-child { margin-left: auto; }

.wiki-back { margin-bottom: 12px; }
.wiki-back a { display: inline-flex; align-items: center; gap: 6px; color: var(--f); font-size: 13px; }
.wiki-back a:hover { color: var(--r); }
.wiki-back i { width: 15px; height: 15px; }

.wiki-art-head { align-items: flex-start; }
.wiki-art-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.wiki-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--m); background: var(--soft);
  border: 1px solid var(--ln2); border-radius: 999px; padding: 3px 11px; }
.wiki-chip.pin { color: var(--r); background: var(--r08); border-color: var(--r20); }
.wiki-chip i { width: 13px; height: 13px; }
.wiki-art-actions { display: flex; align-items: center; gap: 8px; }
.wiki-art-actions form { margin: 0; }

/* типографика отрендеренного markdown */
.wiki-doc { background: var(--pane); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card);
  padding: 26px 30px; color: var(--t); font-size: 15px; line-height: 1.65; max-width: 820px; }
.wiki-doc > :first-child { margin-top: 0; }
.wiki-doc > :last-child { margin-bottom: 0; }
.wiki-doc h2 { font-size: 21px; font-weight: var(--drv-w-bold); margin: 26px 0 12px; letter-spacing: var(--drv-ls-tight); }
.wiki-doc h3 { font-size: 18px; font-weight: var(--drv-w-bold); margin: 22px 0 10px; }
.wiki-doc h4 { font-size: 16px; font-weight: var(--drv-w-semibold); margin: 18px 0 8px; }
.wiki-doc h5 { font-size: 14px; font-weight: var(--drv-w-semibold); margin: 16px 0 6px; color: var(--m); }
.wiki-doc p { margin: 0 0 13px; }
.wiki-doc ul, .wiki-doc ol { margin: 0 0 13px; padding-left: 24px; }
.wiki-doc li { margin: 4px 0; }
.wiki-doc a { color: var(--r); text-decoration: none; border-bottom: 1px solid var(--r20); }
.wiki-doc a:hover { border-bottom-color: var(--r); }
.wiki-doc code { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: .88em; background: var(--soft);
  border: 1px solid var(--ln2); border-radius: 5px; padding: 1px 6px; }
.wiki-doc blockquote { margin: 0 0 13px; padding: 8px 16px; border-left: 3px solid var(--r); background: var(--r08);
  border-radius: 0 8px 8px 0; color: var(--m); }
.wiki-doc blockquote p { margin: 0; }
.wiki-doc hr { border: none; border-top: 1px solid var(--ln); margin: 20px 0; }
.wiki-doc strong { font-weight: var(--drv-w-bold); }
/* H1-H6: h1 - крупный раздел с красной планкой, h2 - с подчёркиванием, дальше по нисходящей */
.wiki-doc h1 { font-size: 24px; font-weight: var(--drv-w-bold); margin: 30px 0 14px; letter-spacing: var(--drv-ls-tight);
  padding-left: 12px; border-left: 4px solid var(--r); }
.wiki-doc h2 { padding-bottom: 6px; border-bottom: 1px solid var(--ln2); }
.wiki-doc h6 { font-size: 12.5px; font-weight: var(--drv-w-semibold); margin: 14px 0 6px; color: var(--f);
  text-transform: uppercase; letter-spacing: .05em; }
/* якорь «#» у заголовка - виден при ховере, клик копирует ссылку на раздел */
.md-hlink { margin-left: 8px; opacity: 0; font-weight: 400; border-bottom: none !important; transition: opacity .15s; }
.wiki-doc h1:hover .md-hlink, .wiki-doc h2:hover .md-hlink, .wiki-doc h3:hover .md-hlink,
.wiki-doc h4:hover .md-hlink, .wiki-doc h5:hover .md-hlink, .wiki-doc h6:hover .md-hlink { opacity: .7; }
.wiki-doc h1, .wiki-doc h2, .wiki-doc h3, .wiki-doc h4 { scroll-margin-top: 80px; }
/* таблицы */
.md-tbl-wrap { overflow-x: auto; margin: 0 0 14px; border: 1px solid var(--ln2); border-radius: 10px; }
.md-tbl { width: 100%; border-collapse: collapse; font-size: 14px; }
.md-tbl th { text-align: left; font-weight: var(--drv-w-semibold); font-size: 12.5px; text-transform: uppercase;
  letter-spacing: .04em; color: var(--m); background: var(--soft); padding: 9px 13px; border-bottom: 1px solid var(--ln2); }
.md-tbl td { padding: 9px 13px; border-bottom: 1px solid var(--drv-k-06); vertical-align: top; line-height: 1.5; }
.md-tbl tr:last-child td { border-bottom: none; }
.md-tbl tbody tr:hover { background: var(--drv-k-04); }
/* цветные врезки: важно/заметка/стоп */
.md-call { display: flex; flex-direction: column; gap: 5px; margin: 0 0 14px; padding: 12px 16px;
  border-radius: 10px; border: 1px solid; font-size: 14px; line-height: 1.55; }
.md-call-h { display: inline-flex; align-items: center; gap: 7px; font-weight: var(--drv-w-bold);
  font-size: 12.5px; text-transform: uppercase; letter-spacing: .05em; }
.md-call-h i { width: 15px; height: 15px; }
.md-call-warn { background: rgba(217,146,17,.09); border-color: rgba(217,146,17,.35); }
.md-call-warn .md-call-h { color: #d99211; }
.md-call-info { background: rgba(59,130,246,.08); border-color: rgba(59,130,246,.3); }
.md-call-info .md-call-h { color: #3b82f6; }
.md-call-danger { background: var(--r08); border-color: var(--r20); }
.md-call-danger .md-call-h { color: var(--r); }
/* карточка-скрипт: готовая формулировка, которую менеджер копирует клиенту */
.md-script { margin: 0 0 14px; border: 1px solid var(--ln2); border-radius: 10px; overflow: hidden; }
.md-script-h { display: flex; align-items: center; gap: 8px; padding: 8px 14px; background: var(--soft);
  border-bottom: 1px solid var(--ln2); font-weight: var(--drv-w-semibold); font-size: 13px; color: var(--m); }
.md-script-h i { width: 15px; height: 15px; color: var(--r); }
.md-script > div:last-child { padding: 12px 16px; font-size: 14px; line-height: 1.6; }
/* инлайн-цвета и маркер */
.md-c-red { color: var(--r); font-weight: var(--drv-w-semibold); }
.md-c-green { color: #3fa96c; font-weight: var(--drv-w-semibold); }
.md-c-blue { color: #3b82f6; font-weight: var(--drv-w-semibold); }
.md-c-amber { color: #d99211; font-weight: var(--drv-w-semibold); }
.md-c-gray { color: var(--f); }
.wiki-doc mark { background: rgba(217,146,17,.22); color: inherit; border-radius: 4px; padding: 0 3px; }

/* статья: документ + прилипающее оглавление справа */
.wiki-layout { display: grid; grid-template-columns: minmax(0,820px) 240px; gap: 24px; align-items: start; }
.wiki-layout.no-toc { grid-template-columns: minmax(0,820px); }
.wiki-toc { position: sticky; top: 76px; max-height: calc(100vh - 96px); overflow-y: auto;
  padding: 14px 6px 14px 14px; border-left: 1px solid var(--ln2); }
.wiki-toc-h { display: flex; align-items: center; gap: 7px; font-size: 12px; text-transform: uppercase;
  letter-spacing: .06em; color: var(--f); margin-bottom: 10px; font-weight: var(--drv-w-semibold); }
.wiki-toc-h i { width: 14px; height: 14px; }
.wiki-toc nav { display: flex; flex-direction: column; gap: 2px; }
.wiki-toc-i { display: block; padding: 4px 8px; border-radius: 7px; font-size: 13px; line-height: 1.35;
  color: var(--m); text-decoration: none; }
.wiki-toc-i:hover { color: var(--t); background: var(--soft); }
.wiki-toc-i.on { color: var(--r); background: var(--r08); font-weight: var(--drv-w-semibold); }
.wiki-toc-i.lvl3 { padding-left: 20px; font-size: 12.5px; }
@media (max-width: 1100px) { .wiki-layout { grid-template-columns: 1fr; } .wiki-toc { display: none; } }

/* «кому доступен»: чипы-чекбоксы в редакторе + бейдж в статье и мета */
.wiki-edit-opts { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; margin: 4px 0 16px; }
.wiki-edit-opts .wiki-pin-toggle { margin: 0; }
.wiki-aud { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.wiki-aud-l { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--m); }
.wiki-aud-l i, .wiki-aud-l svg { width: 14px; height: 14px; }
.wiki-aud-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 5px 12px;
  border: 1px solid var(--ln2); border-radius: 999px; cursor: pointer; color: var(--m); user-select: none; }
.wiki-aud-chip input { position: absolute; opacity: 0; pointer-events: none; }
.wiki-aud-chip:has(input:checked) { border-color: var(--r); color: var(--r); background: var(--r08); font-weight: var(--drv-w-semibold); }
.wiki-aud-chip.is-team { border-style: dashed; cursor: default; color: var(--f); }
.wiki-chip.aud { color: var(--m); }
.wiki-chip.aud i, .wiki-chip.aud svg { width: 12px; height: 12px; }
/* мини-авы персонально выбранных в чипе статьи (стопкой, как обычно) */
.wiki-chip-avas { display: inline-flex; margin-right: 2px; }
.wc-ava { width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center;
  justify-content: center; font-size: 10px; font-weight: 700; color: #fff; background: var(--drv-k-25);
  border: 2px solid var(--pane); margin-left: -6px; background-size: cover; background-position: center; }
.wc-ava:first-child { margin-left: 0; }
.wc-ava.has-img { color: transparent; }
/* точечный доступ в редакторе: чипы людей + выпадашка-поиск с авами */
.wiki-ppl { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; position: relative; }
.wiki-ppl-sel { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.wiki-ppl-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 6px 3px 4px;
  border: 1px solid var(--ln2); border-radius: 999px; font-size: 13px; background: var(--pane); }
.wiki-ppl-chip .wp-n { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wiki-ppl-chip .wp-x { border: none; background: none; cursor: pointer; color: var(--f); font-size: 15px;
  line-height: 1; padding: 0 3px; border-radius: 50%; }
.wiki-ppl-chip .wp-x:hover { color: var(--r); background: var(--r08); }
.wiki-ppl-box { position: relative; }
.wiki-ppl-box input { width: 190px; padding: 6px 12px; border: 1px dashed var(--ln2); border-radius: 999px;
  background: transparent; color: var(--t); font-family: inherit; font-size: 13px; }
.wiki-ppl-box input:focus { outline: none; border-color: var(--r); border-style: solid; }
.wiki-ppl-dd { position: absolute; top: calc(100% + 6px); left: 0; z-index: 80; min-width: 250px;
  background: var(--pane); border: 1px solid var(--ln2); border-radius: 12px; overflow: hidden;
  box-shadow: 0 12px 30px rgba(0,0,0,.22); max-height: 280px; overflow-y: auto; }
.wiki-ppl-i { display: flex; align-items: center; gap: 9px; width: 100%; padding: 8px 12px; border: none;
  background: none; cursor: pointer; text-align: left; font-family: inherit; font-size: 13.5px; color: var(--t); }
.wiki-ppl-i:hover { background: var(--soft); }
.wiki-ppl-i .wp-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.wiki-ppl-i .wp-b .muted { font-size: 11.5px; }
.wiki-ppl-none { padding: 10px 14px; font-size: 13px; color: var(--f); }
/* кабинет клиента: список открытых регламентов в правой колонке */
.cab-wiki-links { display: flex; flex-direction: column; gap: 4px; }
.cab-wiki-link { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 10px;
  text-decoration: none; color: inherit; font-size: 13.5px; line-height: 1.35; }
.cab-wiki-link:hover { background: var(--soft); }
.cab-wiki-link i, .cab-wiki-link svg { width: 15px; height: 15px; flex: none; color: var(--r); }

/* редактор */
.wiki-edit-row { display: grid; grid-template-columns: 2fr 1fr; gap: 14px; }
.wiki-pin-toggle { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; margin: 4px 0 16px; user-select: none; }
.wiki-pin-toggle input { width: 16px; height: 16px; accent-color: var(--r); }
.wiki-pin-toggle span { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--m); }
.wiki-pin-toggle i { width: 15px; height: 15px; }
.wiki-edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.wiki-edit-pane { display: flex; flex-direction: column; min-width: 0; }
.wiki-pane-h { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--f); margin-bottom: 7px; font-family: ui-monospace, monospace; }
/* тулбар редактора: группы кнопок, цветные точки для инлайн-цветов */
.wiki-tb { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 7px 9px;
  border: 1px solid var(--drv-k-06); border-bottom: none; border-radius: var(--drv-radius-btn) var(--drv-radius-btn) 0 0;
  background: var(--soft); }
.wiki-tb-g { display: inline-flex; align-items: center; gap: 2px; padding-right: 10px; border-right: 1px solid var(--ln2); }
.wiki-tb-g:last-child { border-right: none; padding-right: 0; }
.wiki-tb button { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px;
  padding: 0 6px; border: none; border-radius: 7px; background: transparent; color: var(--m); cursor: pointer;
  font-size: 12.5px; font-weight: var(--drv-w-semibold); font-family: inherit; }
.wiki-tb button:hover { background: var(--drv-k-08); color: var(--t); }
.wiki-tb button i { width: 15px; height: 15px; }
.wiki-tb-c { position: relative; }
.wiki-tb-c::after { content: ''; width: 13px; height: 13px; border-radius: 50%; display: block; }
.wiki-tb-c.c-red::after { background: var(--r); }
.wiki-tb-c.c-amber::after { background: #d99211; }
.wiki-tb-c.c-green::after { background: #3fa96c; }
.wiki-tb-c.c-blue::after { background: #3b82f6; }
.wiki-tb-c.c-gray::after { background: var(--f); }
.wiki-tb + .wiki-body { border-radius: 0 0 var(--drv-radius-btn) var(--drv-radius-btn); }
.wiki-body { width: 100%; min-height: 360px; resize: vertical; padding: 14px 16px; border: 1px solid var(--drv-k-06);
  border-radius: var(--drv-radius-btn); background: var(--pane); color: var(--t);
  font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 13.5px; line-height: 1.6; box-sizing: border-box; }
.wiki-body:focus { outline: none; border-color: var(--r); }
.wiki-md-hint { margin-top: 8px; font-size: 12px; color: var(--f); line-height: 1.6; }
.wiki-preview { min-height: 360px; margin: 0; }
.wiki-edit-actions { display: flex; align-items: center; gap: 10px; margin-top: 20px; }

@media (max-width: 860px) {
  .wiki-edit-grid { grid-template-columns: 1fr; }
  .wiki-edit-row { grid-template-columns: 1fr; }
  .wiki-preview { min-height: 200px; }
  .wiki-search input { width: 100%; }
  .wiki-head-actions { width: 100%; }
  .wiki-head-actions form { flex: 1; }
  .wiki-doc { padding: 20px 18px; }
}

/* ───────── комбо + кнопка «создать» (генератор: клиент прямо из брифа/КП/аудита) ───────── */
.combo-with-add { display: flex; gap: 8px; align-items: flex-start; }
.combo-with-add .combo { flex: 1; min-width: 0; }
.combo-add-btn { flex: none; height: 40px; width: 40px; padding: 0; justify-content: center; }
.combo-add-btn i { width: 17px; height: 17px; }

/* быстрое создание клиента (глобальная модалка, партиал в base.html) */
.qc-modal { max-width: 460px; width: 100%; box-sizing: border-box; padding: 22px 24px; max-height: 92vh; overflow-y: auto; }
.qc-modal .sec-title { margin-top: 0; display: flex; align-items: center; gap: 8px; }
.qc-modal .sec-title i { width: 18px; height: 18px; color: var(--drv-red); }
.qc-fields { display: flex; flex-direction: column; gap: 11px; }
.qc-row { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.qc-f { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.qc-f label { font-size: 12px; }
/* team-picker: выбор членов команды с аватарками (ответственный/постановщик - 1, соисполнители/наблюдатели - много) */
.tm-picker { position: relative; }
.tm-box { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; min-height: 40px; padding: 5px 8px;
  border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--surface); cursor: text; box-sizing: border-box; }
.tm-box:focus-within { border-color: var(--drv-red); }
.tm-in { border: none; outline: none; background: transparent; flex: 1; min-width: 90px; font-family: inherit; font-size: 13.5px; color: var(--drv-text); padding: 3px 2px; }
.tm-chip { display: inline-flex; align-items: center; gap: 5px; padding: 2px 5px 2px 3px; background: var(--drv-bg);
  border: 1px solid var(--drv-k-08); border-radius: 999px; font-size: 12.5px; color: var(--drv-text); }
.tm-ava { width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 10.5px; font-weight: var(--drv-w-semibold); flex: none; }
.tm-x { border: none; background: none; cursor: pointer; color: var(--drv-text-faint); font-size: 15px; line-height: 1; padding: 0 2px; }
.tm-x:hover { color: var(--drv-red); }
.tm-drop { position: absolute; top: calc(100% + 3px); left: 0; right: 0; z-index: 60; background: var(--surface);
  border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); box-shadow: 0 10px 28px rgba(0,0,0,.14);
  max-height: 230px; overflow-y: auto; display: none; }
.tm-drop.open { display: block; }
.tm-opt { display: flex; align-items: center; gap: 9px; padding: 7px 11px; cursor: pointer; font-size: 13.5px; }
.tm-opt:hover { background: var(--drv-red-08); }
.tm-none { color: var(--drv-text-faint); cursor: default; }
.tm-none:hover { background: none; }

/* блок «регулярная задача»: чекбокс всегда виден, поля - только когда включено */
.tq-rec { border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-card); padding: 12px 14px; background: var(--drv-bg); }
.tq-rec__toggle { display: flex; align-items: center; gap: 9px; cursor: pointer; font-size: 13.5px; color: var(--drv-text); user-select: none; }
.tq-rec__toggle input { accent-color: var(--drv-red); width: 16px; height: 16px; flex: none; }
.tq-rec__toggle span { display: inline-flex; align-items: center; gap: 6px; }
.tq-rec__toggle i { width: 15px; height: 15px; color: var(--drv-red); flex: none; }
.tq-rec__fields { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--drv-k-06); }
.tq-rec__fields[hidden] { display: none; }

/* профили специалиста - чекбоксы сеткой в единой модалке */
.sq-profiles { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 2px 0; }
.sq-profiles .check { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; cursor: pointer; white-space: nowrap; }
.sq-profiles .check input { accent-color: var(--drv-red); }
/* самодостаточный стиль поля (партиал глобальный, не зависит от страничных css) */
.qc-input { width: 100%; box-sizing: border-box; padding: 10px 13px; border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-btn); background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; }
textarea.qc-input { resize: vertical; line-height: 1.5; }
.qc-input:focus { outline: none; border-color: var(--drv-red); }

/* AI-разбор вставленного текста */
.qc-ai { border: 1px solid var(--drv-red-20); background: var(--drv-red-08); border-radius: var(--drv-radius-card); padding: 12px 13px; margin-bottom: 16px; }
.qc-ai__h { display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: var(--drv-w-semibold); color: var(--drv-red); margin-bottom: 8px; }
.qc-ai__h i { width: 15px; height: 15px; }
.qc-ai__ta { background: var(--surface); }
.qc-ai__foot { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
/* прикрепить файл карточки (.doc/.pdf) - скрытый input + кликабельная подпись */
.qc-file { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--drv-text-muted); cursor: pointer; max-width: 100%; }
.qc-file input[type="file"] { display: none; }
.qc-file i { width: 14px; height: 14px; flex: none; }
.qc-file:hover { color: var(--drv-red); }
.qc-file span { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* «Реквизиты для документов» - сворачиваемый блок в модалке компании */
.qc-adv { border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-btn); padding: 0 12px; background: var(--drv-bg); }
.qc-adv > summary { cursor: pointer; padding: 10px 2px; font-size: 13px; color: var(--drv-text-muted); user-select: none; list-style-position: inside; }
.qc-adv > summary:hover { color: var(--drv-red); }
.qc-adv[open] > summary { border-bottom: 1px solid var(--drv-k-06); margin-bottom: 10px; }
.qc-adv .qc-f, .qc-adv .qc-row { margin-bottom: 10px; }

/* каналы связи в модалке - через сквозной .msg-editor (стили выше), свои классы не нужны */

/* «+ Создать нового клиента» первой строкой в выпадашке клиента (карточка сделки) */
.qc-combo-add { display: flex; align-items: center; gap: 8px; padding: 9px 12px; cursor: pointer; color: var(--drv-red);
  font-size: 13px; font-weight: var(--drv-w-medium); border-bottom: 1px solid var(--drv-k-06); }
.qc-combo-add:hover { background: var(--drv-red-08); }
.qc-combo-add i { width: 15px; height: 15px; }

/* ───────── калькуляция тарифов (settings/pricing-engine) ───────── */
.peng-panel { padding: 8px 18px; }
.peng-head, .peng-row { display: grid; grid-template-columns: 1.5fr 1.3fr 1fr 1fr; gap: 12px; align-items: center; }
.peng-head--3, .peng-row--3 { grid-template-columns: 2fr 1fr 1fr; }
.peng-row--rule { grid-template-columns: 1fr 160px; }
.peng-head { padding: 8px 0 6px; font-size: 12px; color: var(--drv-text-faint); text-transform: uppercase; letter-spacing: .04em; font-family: ui-monospace, monospace; }
.peng-row { padding: 8px 0; border-top: 1px solid var(--drv-k-06); }
.peng-k { font-size: 14px; color: var(--drv-text); }
.peng-panel input { padding: 8px 11px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn);
  background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; width: 100%; box-sizing: border-box; }
.peng-panel input:focus { outline: none; border-color: var(--drv-red); }
.peng-num { text-align: right; }

.peng-calc { padding: 18px 20px; display: grid; grid-template-columns: 260px 1fr; gap: 22px; align-items: start; }
.peng-calc__in { display: flex; flex-direction: column; gap: 10px; }
.peng-calc__in label { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13.5px; color: var(--drv-text); }
.peng-calc__in input, .peng-calc__in select { width: 92px; padding: 7px 10px; border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-btn); background: var(--surface); color: var(--drv-text); font-family: inherit; font-size: 14px; text-align: right; }
.peng-calc__in select { width: 132px; text-align: left; cursor: pointer; }
.peng-calc__out { border-left: 1px solid var(--drv-k-06); padding-left: 22px; }
.peng-crow, .peng-ctot { display: grid; grid-template-columns: 1fr auto auto; gap: 14px; align-items: baseline; padding: 6px 0; font-size: 14px; }
.peng-crow { color: var(--drv-text-muted); border-bottom: 1px solid var(--drv-k-06); }
.peng-crow span:nth-child(2), .peng-ctot span:nth-child(2) { text-align: right; font-variant-numeric: tabular-nums; min-width: 96px; }
.peng-cday { color: var(--drv-text-faint); font-size: 12.5px; white-space: nowrap; }
.peng-ctot { margin-top: 8px; padding-top: 12px; border-top: 2px solid var(--drv-k-12); font-size: 17px; font-weight: var(--drv-w-bold); color: var(--drv-text); }
.peng-ctot .peng-cday { font-weight: var(--drv-w-medium); }
@media (max-width: 760px) {
  .peng-head span:nth-child(2), .peng-row .peng-k + input { }
  .peng-calc { grid-template-columns: 1fr; }
  .peng-calc__out { border-left: none; padding-left: 0; border-top: 1px solid var(--drv-k-06); padding-top: 16px; }
  .peng-head, .peng-row { grid-template-columns: 1.2fr 1fr 1fr; }
  .peng-head span:first-child, .peng-k { grid-column: 1 / -1; }
}

/* ───────── экспорт в Tilda (модалка редактора аудита) ───────── */
/* базовый .modal без padding (его добавляет только .modal--combos) - задаём свой + прокрутку */
.til-modal { max-width: 620px; width: 100%; box-sizing: border-box; padding: 22px 24px; max-height: 90vh; overflow-y: auto; }
.til-modal .sec-title { margin-top: 0; }
.til-block { border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-card); padding: 15px 16px; margin-bottom: 14px; background: var(--drv-bg); }
.til-block__h { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: var(--drv-w-semibold); color: var(--drv-text); margin-bottom: 8px; }
.til-block__h i { width: 17px; height: 17px; color: var(--drv-red); flex: none; }
.til-note { font-size: 12.5px; line-height: 1.55; margin: 0 0 12px; }
.til-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.til-adv { margin-top: 10px; }
.til-adv summary { font-size: 12px; color: var(--drv-text-faint); cursor: pointer; user-select: none; }
.til-adv summary:hover { color: var(--drv-red); }
.til-mode { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 10px; }
.til-radio { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--drv-text); cursor: pointer; }
.til-radio input { accent-color: var(--drv-red); }
.til-list { display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow-y: auto; }
.til-row { display: flex; align-items: center; gap: 11px; padding: 9px 12px; border: 1px solid var(--drv-k-08);
  border-radius: var(--drv-radius-btn); background: var(--surface); }
.til-row__n { width: 24px; height: 24px; flex: none; border-radius: 7px; background: var(--drv-red-08); color: var(--drv-red);
  display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: var(--drv-w-semibold); }
.til-row__t { flex: 1; min-width: 0; font-size: 13.5px; display: flex; align-items: center; gap: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.til-row__b { font-size: 11.5px; color: var(--drv-text-faint); flex: none; }
.til-row .btn { flex: none; }

@media (max-width: 620px) {
  .qc-row { grid-template-columns: 1fr; }
  .til-row__t { white-space: normal; }
}

/* ===== связи и логика: финансы в карточках, зависшие сделки, напоминания (docs/12 §5) ===== */
/* факт-финансы в сделке/проекте */
.finfact { display: flex; flex-direction: column; gap: 2px; }
.finfact__row { display: flex; align-items: center; gap: 9px; padding: 6px 2px; font-size: var(--fs-sm); min-width: 0; }
.finfact__ic { width: 15px; height: 15px; flex: none; }
.finfact__ic.income { color: var(--ok); }
.finfact__ic.expense { color: var(--r); }
.finfact__t { flex: 1; min-width: 0; }
.finfact__sum { flex: none; font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.finfact__sum.income { color: var(--ok); }
.finfact__total { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 9px 2px 2px; margin-top: 4px; border-top: 1px solid var(--ln); font-size: var(--fs-xs); color: var(--m); }
.finfact__total b { font-weight: var(--fw-semibold); }

/* зависшая сделка в воронке: красная плашка сверху карточки */
.kanban-card--stale { border-color: color-mix(in srgb, var(--r) 45%, transparent); }
.kb-stale { display: flex; align-items: center; gap: 6px; margin: -4px -4px 8px; padding: 4px 8px; border-radius: 7px;
  background: var(--drv-red-08); color: var(--r); font-size: 11px; font-weight: var(--drv-w-medium); }
.kb-stale i { width: 12px; height: 12px; flex: none; }

/* напоминания (карточка клиента + дашборд + праздники в настройках) */
.rem-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 10px; }
.rem-form input[type=text] { flex: 1; min-width: 180px; padding: 9px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 14px; }
.rem-form input[type=text]:focus { outline: none; border-color: var(--drv-red); }
.rem-form select { padding: 9px 10px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.rem-row { display: flex; align-items: center; gap: 10px; padding: 8px 14px; min-width: 0; }
.rem-row + .rem-row { border-top: 1px solid var(--drv-k-06); }
.rem-row.is-done .rem-body b { text-decoration: line-through; color: var(--drv-text-faint); }
.rem-row.is-off { opacity: .55; }
.rem-body { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.rem-body b { font-size: 14px; font-weight: var(--drv-w-medium); }
.rem-body .muted { font-size: 12px; }
.rem-check { border: none; background: transparent; cursor: pointer; color: var(--drv-text-faint); display: flex; padding: 0; }
.rem-check:hover { color: var(--ok); }
.rem-check i { width: 18px; height: 18px; }
.rem-row.is-done .rem-check { color: var(--ok); }
.rem-mini { flex: none; width: 28px; height: 28px; border: none; background: transparent; border-radius: 50%; color: var(--drv-text-faint); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.rem-mini:hover { background: var(--drv-k-06); color: var(--drv-text); }
.rem-mini.danger:hover { background: var(--drv-red-08); color: var(--drv-red); }
.rem-mini i { width: 14px; height: 14px; }

/* автоцепочки 2.0: карточный редактор шагов */
.chain-steps { display: flex; flex-direction: column; align-items: center; width: 100%; }
.chain-node--step { align-items: flex-start; cursor: grab; }
.chain-node--step:active { cursor: grabbing; }
.chain-grip { flex: none; color: var(--drv-text-faint); align-self: center; display: inline-flex; }
.chain-grip i { width: 14px; height: 14px; }
.camp-step-edit textarea { width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.camp-step-edit input[type=text], .camp-step-edit input[type=number], .camp-step-edit select,
.camp-step-form input[type=number], .camp-step-form select { padding: 7px 9px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }

/* ЛК исполнителя: приёмка с деталями + сдача работы */
.mw-acc { border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-btn); padding: 10px 12px; margin-bottom: 8px; }
.mw-acc__head { display: flex; align-items: center; gap: 10px; cursor: pointer; flex-wrap: wrap; min-width: 0; }
.mw-acc__note { display: flex; gap: 7px; align-items: flex-start; font-size: 13px; background: var(--drv-red-08); color: var(--drv-text); padding: 8px 10px; border-radius: 8px; }
.mw-acc__note i { width: 14px; height: 14px; flex: none; margin-top: 2px; color: var(--drv-red); }
.mw-acc__chk { display: flex; gap: 7px; align-items: center; font-size: 13px; padding: 3px 0; color: var(--drv-text-muted); }
.mw-acc__chk.done { color: var(--drv-text); }
.mw-acc__chk i { width: 14px; height: 14px; flex: none; }
.mw-acc__chk.done i { color: var(--ok); }
.mw-submit { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 6px 0; }
.mw-submit input[type=text] { flex: 1; min-width: 170px; padding: 9px 12px; border: 1px solid var(--drv-k-12); border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.mw-submit input[type=text]:focus { outline: none; border-color: var(--drv-red); }

/* приёмка 2.0: компактная строка + раскрытие рабочей зоны */
.acc-row { display: flex; align-items: center; gap: 10px; cursor: pointer; min-width: 0; flex-wrap: wrap; }
.acc-row .acc-title { flex: 1 1 200px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acc-row-meta { display: flex; align-items: center; gap: 9px; flex: none; margin-left: auto; }
.acc-chev { width: 15px; height: 15px; color: var(--drv-text-faint); }
.acc-body { margin-top: 12px; border-top: 1px solid var(--drv-k-06); padding-top: 4px; }
.acc-more { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; border: none; background: transparent;
  color: var(--drv-text-faint); font: inherit; font-size: 12px; cursor: pointer; padding: 4px 0; }
.acc-more:hover { color: var(--drv-red); }
.acc-more i { width: 14px; height: 14px; }
@media (max-width: 760px){ .acc-row-meta { margin-left: 0; width: 100%; } }

/* работа спеца в задаче (мини-подзадача) */
.ts-scope { flex: 1 1 160px; min-width: 120px; padding: 7px 10px; border: 1px solid var(--drv-k-12);
  border-radius: var(--drv-radius-btn); background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 12.5px; }
.ts-scope:focus { outline: none; border-color: var(--drv-red); }
.task-spec-row { flex-wrap: wrap; }
.task-spec-row.is-done { opacity: .82; }
.task-spec-row.is-done .ts-scope, .task-spec-row.is-done .ts-pay input { pointer-events: none; opacity: .7; }

/* «Моя работа»: задачи карточками с риском срока */
.mw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.mw-card { background: var(--surface); border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-card);
  padding: 13px 15px; cursor: pointer; min-width: 0; }
.mw-card:hover { border-color: var(--drv-k-12); }
.mw-card.is-late { border-color: color-mix(in srgb, var(--r) 55%, transparent); }
.mw-card-top { display: flex; align-items: center; gap: 8px; justify-content: space-between; margin-bottom: 8px; }
.mw-card-t { font-size: 14px; font-weight: var(--drv-w-medium); margin-bottom: 4px; line-height: 1.35; }
.mw-dl { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--drv-text-faint); flex: none; }
.mw-dl.late { color: var(--r); font-weight: var(--drv-w-semibold); }
.mw-dl i { width: 12px; height: 12px; }
@media (max-width: 560px){ .mw-grid { grid-template-columns: 1fr; } }

/* ответы на комментарии */
.act-quote { font-size: 12px; color: var(--drv-text-faint); border-left: 2px solid var(--drv-k-12); padding: 2px 8px; margin: 2px 0 4px; }
.reply-chip { font-size: 12px; color: var(--drv-text-muted); background: var(--drv-k-06); border-radius: 8px; padding: 5px 10px; margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.reply-chip button { border: none; background: transparent; cursor: pointer; color: var(--drv-text-faint); }
/* комментарии спеца в кабинете */
.spec-cmts { margin-top: 10px; border-top: 1px solid var(--drv-k-06); padding-top: 8px; }
.spec-cmt { font-size: 13px; padding: 5px 0; }
.spec-cmt b { font-size: 12.5px; }
.spec-cmt .muted { font-size: 11.5px; }
.spec-cmt-form { display: flex; gap: 7px; margin-top: 8px; }
.spec-cmt-form input { flex: 1; min-width: 0; padding: 8px 11px; border: 1px solid var(--drv-k-12); border-radius: 999px; background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }

/* SemCore: окно на всю рабочую область */
.seo-frame { width: 100%; height: calc(100dvh - 130px); border: 1px solid var(--drv-k-08); border-radius: var(--drv-radius-card); background: var(--surface); }

/* длинное описание задачи: свёрнуто с растворением, разворот кнопкой без входа в редактор */
.rt-collapsed { max-height: 380px; overflow: hidden; position: relative; }
/* растворение - в цвет фона редактора (--drv-bg живёт в обеих темах; токена --drv-panel нет,
   и фолбэк #fff давал белое пятно в тёмной теме) */
.rt-collapsed::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 70px;
  background: linear-gradient(transparent, var(--drv-bg)); pointer-events: none; }
.rt-expand { margin-top: 6px; }

/* панель фильтров и форм с комбо: выпадашки НЕ обрезаются (panel по умолчанию overflow:hidden) */
.panel--flt { overflow: visible; display: none; gap: 10px; flex-wrap: wrap; align-items: center; padding: 12px 16px; }
.panel--flt.open { display: flex; }
.panel--flt .combo { flex: 1 1 220px; min-width: 200px; max-width: 300px; }
.panel--flt select { flex: 0 0 auto; }
@media (max-width: 700px) {
  .panel--flt > *, .panel--flt .combo { flex: 1 1 100%; max-width: none; }
}
/* комбо-опция с аватаркой: имя не прыгает */
.combo-opt.has-ava { display: flex; align-items: center; gap: 9px; }

/* пинги: брендовая подложка + белый знак (иконки монохромные - их же красят чипы каналов) */
.ping-ch--tg { background: var(--c-tg, #229ED9) !important; border-color: transparent !important; }
.ping-ch--max { background: var(--c-max, #8b5cf6) !important; border-color: transparent !important; }
.ping-ch--tg img, .ping-ch--max img { width: 15px; height: 15px; filter: brightness(0) invert(1); }
/* ИИ вставил результат: кнопки подтверждения видны без фокуса */
.rt-wrap.rt-force .rt-actions, .rt-wrap.rt-force .rt-toolbar { display: flex; }
/* чип «ответ для...»: аккуратный, с рабочим крестиком */
.reply-chip[hidden] { display: none !important; }
.reply-chip { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; padding: 5px 11px;
  border-radius: 16px; background: var(--drv-k-06); margin-bottom: 6px; }
.reply-chip button { border: 0; background: none; cursor: pointer; font-size: 15px; line-height: 1; color: inherit; opacity: .6; padding: 0 2px; }
.reply-chip button:hover { opacity: 1; }
/* бейдж проекта на карточке канбана: строго одна строка */
.kanban-card .status-badge { max-width: 100%; }
.kanban-card .status-badge .u-truncate { white-space: nowrap; }

/* контент описания: структура читается - заголовки, цитаты, списки */
.rt-content h3 { font-size: 14.5px; font-weight: 700; margin: 14px 0 6px; letter-spacing: .2px; }
.rt-content h3:first-child { margin-top: 2px; }
.rt-content ul, .rt-content ol { margin: 6px 0 10px; padding-left: 22px; }
.rt-content li { margin: 3px 0; }
.rt-content blockquote { margin: 8px 0; padding: 7px 13px; border-left: 3px solid var(--drv-accent, #e8a33d);
  background: var(--drv-k-06); border-radius: 0 9px 9px 0; }
.rt-content p { margin: 6px 0; }
.rt-content a { color: var(--drv-red); }

/* кроппер аватарки: своя модалка (класс .cab-modal - кабинетный, в панели его стилей нет) */
#ava-crop-modal { display: none; position: fixed; inset: 0; z-index: 5000;
  background: rgba(15, 17, 21, .5); align-items: center; justify-content: center; padding: 20px; }
#ava-crop-modal.open { display: flex; }
.ava-crop-card { background: var(--surface); border-radius: 16px; padding: 22px 26px;
  max-width: 380px; width: 100%; text-align: center; box-shadow: 0 18px 60px rgba(0,0,0,.3); }

/* карточка задачи: минимализм и воздух - секции дышат, заголовки капсом с тонкой линией */
.task-view .task-main > .sec-title, .task-view .task-main > h3.sec-title {
  font-size: 11.5px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase;
  color: var(--drv-text-muted); margin: 30px 0 12px; padding-bottom: 8px;
  border-bottom: 1px solid var(--drv-k-06); }
.task-view .rt-wrap { margin-top: 16px; }
.task-view .t-fold { margin-top: 14px; }
.task-view .task-spec-rows { gap: 10px; }
.task-view .timeline { margin-top: 14px; }
.task-view .cl-list { margin-bottom: 10px; }
/* пресеты чек-листа: лёгкая выпадашка. Живёт ВНУТРИ капсового .sec-title - сбрасываем
   наследование (uppercase/жирный/letter-spacing), иначе пункты орут капсом */
.cl-dd { position: relative; display: inline-block; text-transform: none; letter-spacing: normal;
  font-weight: var(--drv-w-regular, 400); }
.cl-dd-btn { padding: 5px 9px; border: none; border-radius: 8px; background: transparent;
  color: var(--drv-text-faint); font: inherit; font-size: 12px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 5px; }
.cl-dd-btn:hover { background: var(--drv-k-04); color: var(--drv-red); }
.cl-dd-list { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 230px; max-height: 300px;
  overflow-y: auto; background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: 12px;
  box-shadow: var(--drv-shadow-card-hover); display: none; padding: 4px; }
.cl-dd.open .cl-dd-list { display: block; }
.cl-dd-opt { padding: 7px 11px; border-radius: 8px; cursor: pointer; font-size: 13px; line-height: 1.4;
  color: var(--drv-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cl-dd-opt:hover { background: var(--drv-k-06); }

/* автоскролл канбана у краёв: минималистичная стрелка-индикатор (ПК, base.html probe) */
.kb-edge { position: fixed; width: 30px; height: 64px; display: flex; align-items: center;
  justify-content: center; background: var(--surface); border: 1px solid var(--drv-k-12);
  border-radius: 999px; color: var(--drv-text-muted); box-shadow: 0 6px 18px rgba(0,0,0,.14);
  opacity: 0; pointer-events: none; transition: opacity .15s; z-index: 60; }
.kb-edge.show { opacity: .92; }

/* центр выплат спецам (/payouts/specs): карточки «кому платить» */
.po-total { font-size: 15px; }
.po-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(370px, 1fr)); gap: 16px; }
.po-card { background: var(--surface); border: 1px solid var(--drv-k-06); border-radius: var(--drv-radius-card);
  padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.po-head { display: flex; align-items: center; gap: 11px; }
.po-head .conv-ava { width: 38px; height: 38px; font-size: 15px; }
.po-id { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.po-id b { font-size: 15px; }
.po-id .muted { font-size: 12px; }
.po-sum { font-size: 17px; font-weight: var(--drv-w-bold); white-space: nowrap; }
.po-req { display: flex; align-items: center; gap: 9px; padding: 9px 12px; border: 1px dashed var(--drv-k-12);
  border-radius: 10px; background: var(--drv-k-04); font-size: 13px; cursor: pointer; text-align: left;
  color: var(--drv-text); font-family: inherit; text-decoration: none; }
.po-req span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12.5px; }
.po-req:hover { border-color: var(--drv-red); }
.po-req i, .po-req svg { width: 15px; height: 15px; flex: none; color: var(--drv-text-muted); }
.po-req-copy { opacity: .5; }
.po-req:hover .po-req-copy { opacity: 1; color: var(--drv-red); }
.po-req--empty { border-color: rgba(217,146,17,.4); background: rgba(217,146,17,.07); cursor: pointer; }
.po-req--empty i, .po-req--empty svg { color: #d99211; }
.po-items { display: flex; flex-direction: column; }
.po-item { display: flex; align-items: center; gap: 10px; padding: 8px 2px; border-bottom: 1px solid var(--drv-k-06); }
.po-item:last-child { border-bottom: none; }
.po-item-t { flex: 1; min-width: 0; font-size: 13.5px; color: var(--drv-text); text-decoration: none;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.po-item-t:hover { color: var(--drv-red); }
.po-item-d { font-size: 12px; white-space: nowrap; }
.po-item-sum { font-size: 13.5px; font-weight: var(--drv-w-semibold); white-space: nowrap; }
.po-item-ok { width: 28px; height: 28px; border-radius: 8px; border: 1px solid var(--drv-k-12);
  background: var(--surface); cursor: pointer; display: inline-flex; align-items: center;
  justify-content: center; color: var(--drv-text-muted); }
.po-item-ok:hover { border-color: var(--ok, #2e9e5b); color: var(--ok, #2e9e5b); }
.po-item-del:hover { border-color: var(--drv-red); color: var(--drv-red); }
.po-err { display: flex; align-items: center; gap: 10px; padding: 12px 16px; margin-bottom: 14px;
  border-left: 3px solid var(--drv-red); font-size: 13.5px; }
.po-err i, .po-err svg { width: 16px; height: 16px; flex: none; color: var(--drv-red); }
.po-item-ok i, .po-item-ok svg { width: 14px; height: 14px; }
.po-payall { width: 100%; justify-content: center; }
/* привязка начисления к задаче: иконка у строки + инлайн-поиск с выпадашкой */
.po-item-link.attn { border-color: rgba(217,146,17,.5); color: #d99211; }
.po-item-t--free { color: var(--drv-text-muted); font-style: italic; cursor: default; }
.po-linkrow { display: flex; gap: 8px; align-items: center; padding: 6px 2px 10px; }
.po-taskpick { position: relative; display: inline-flex; }
.po-taskpick input[type=text] { width: 100%; padding: 7px 11px; border: 1px dashed var(--drv-k-12);
  border-radius: 9px; background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.po-taskpick input[type=text]:focus { outline: none; border-color: var(--drv-red); border-style: solid; }
.po-sugg { position: absolute; top: calc(100% + 5px); left: 0; right: 0; z-index: 70; background: var(--surface);
  border: 1px solid var(--drv-k-12); border-radius: 12px; box-shadow: 0 12px 30px rgba(0,0,0,.2);
  max-height: 280px; overflow-y: auto; }
.po-sugg-i { display: flex; flex-direction: column; gap: 1px; width: 100%; padding: 8px 12px; border: none;
  background: none; cursor: pointer; text-align: left; font: inherit; color: var(--drv-text); }
.po-sugg-i b { font-size: 13px; font-weight: var(--drv-w-semibold); line-height: 1.3; }
.po-sugg-i .muted { font-size: 11.5px; }
.po-sugg-i:hover { background: var(--drv-k-06); }
.po-sugg-none { padding: 10px 13px; font-size: 12.5px; color: var(--drv-text-faint); }
/* строки комбо людей: ава + имя + подпись роли */
.po-sugg-p { flex-direction: row; align-items: center; gap: 10px; }
.po-sugg-p .conv-ava.sm { flex: none; }
.po-sugg-b { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.po-sugg-b b { font-size: 13px; font-weight: var(--drv-w-semibold); line-height: 1.3; }
.po-sugg-b .muted { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* начисление сотруднику команды: нейтральная плашка вместо янтарной тревоги */
.po-req--team { border-style: dashed; color: var(--drv-text-muted); cursor: default; }
.po-req--team i, .po-req--team svg { color: var(--drv-text-muted); }
.po-new { margin-bottom: 16px; }
.po-new select, .po-new input { padding: 8px 12px; border: 1px solid var(--drv-k-12); border-radius: 9px;
  background: var(--surface); color: var(--drv-text); font: inherit; font-size: 13.5px; }
.po-new select:focus, .po-new input:focus { outline: none; border-color: var(--drv-red); }
/* «Начислить часть» в карточке задачи (аванс/этап без приёмки) */
.tp-add { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 10px;
  padding-top: 10px; border-top: 1px dashed var(--drv-k-12); }
.tp-add select, .tp-add input { padding: 7px 10px; border: 1px solid var(--drv-k-12); border-radius: 8px;
  background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 12.5px; }
.tp-add select:focus, .tp-add input:focus { outline: none; border-color: var(--drv-red); }
.po-empty { display: flex; align-items: center; gap: 12px; padding: 26px 22px; flex-wrap: wrap; font-size: 14.5px; }
.po-empty i, .po-empty svg { width: 22px; height: 22px; color: var(--ok, #2e9e5b); }
.po-hist { display: flex; align-items: center; gap: 12px; padding: 9px 4px; border-bottom: 1px solid var(--drv-k-06); font-size: 13.5px; }
.po-hist:last-child { border-bottom: none; }
.po-hist-n { font-weight: var(--drv-w-semibold); flex: none; }
.po-hist-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; cursor: pointer; }
.po-hist-sum { font-weight: var(--drv-w-semibold); white-space: nowrap; }
@media (max-width: 760px) { .po-grid { grid-template-columns: 1fr; } }
/* мульти-люди (соисполнители/наблюдатели): чипы имён + комбо добавления */
.mp-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 5px; }
.mp-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 14px;
  background: var(--drv-k-06); font-size: 12.5px; }
.mp-chip button { border: 0; background: none; cursor: pointer; opacity: .55; padding: 0; font-size: 13px; color: inherit; }
.mp-chip button:hover { opacity: 1; }

/* меню профиля в шапке (перенесено из сайдбара - там был дубляж) */
/* профиль-меню в топбаре: шапка с авой, строки настроек, аккуратные каналы пингов */
.topbar__profile-menu { position: absolute; right: 0; top: calc(100% + 10px); min-width: 288px; z-index: 80; }
.pm { padding: 6px !important; border-radius: 16px; overflow: hidden; }
.pm-head { display: flex; align-items: center; gap: 11px; width: 100%; padding: 10px 12px; border: 0;
  background: var(--drv-k-04); border-radius: 12px; cursor: pointer; text-align: left; font: inherit; color: inherit; }
.pm-head:hover { background: var(--drv-k-06); }
.pm-ava { width: 38px; height: 38px; font-size: 15px; flex: none; }
.pm-id { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.pm-id b { font-size: 14px; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-id span { font-size: 11.5px; color: var(--drv-text-muted); }
.pm-go { width: 15px; height: 15px; color: var(--drv-text-faint); flex: none; }
.pm-head:hover .pm-go { color: var(--drv-red); }
.pm-row { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px; width: 100%; border: 0; background: none; font: inherit; color: inherit; text-align: left; }
.pm-row--btn { cursor: pointer; border-radius: 12px; }
.pm-row--btn:hover { background: var(--drv-k-04); }
.pm-l { font-size: 13px; color: var(--drv-text-muted); }
.pm-sep { height: 1px; background: var(--drv-k-06); margin: 4px 8px; }
.pm-exit { display: flex; align-items: center; gap: 9px; padding: 10px 12px; border-radius: 12px;
  color: var(--drv-red); text-decoration: none; font-size: 13.5px; }
.pm-exit:hover { background: var(--drv-red-08); }
.pm-exit i, .pm-exit svg { width: 15px; height: 15px; }
.ping-seg { display: inline-flex; gap: 6px; }
.ping-ch { position: relative; }
.ping-ch:not(.on):not(.ping-ch--soon) { filter: grayscale(1); opacity: .4; }
.ping-ch:not(.on):not(.ping-ch--soon):hover { filter: none; opacity: .9; }
.ping-ch.on { box-shadow: 0 0 0 2px var(--surface), 0 0 0 3.5px var(--drv-red); }
.ping-ch--soon { background: var(--drv-k-06) !important; color: var(--drv-text-faint);
  cursor: not-allowed; opacity: .45; }
.ping-ch--soon span { font-size: 9px; font-weight: 700; letter-spacing: .02em; }
.bn-state { font-size: 11px; padding: 3px 10px; border-radius: 999px; background: var(--drv-k-06);
  color: var(--drv-text-muted); font-weight: 600; }
.bn-state.on { background: rgba(46,158,91,.15); color: var(--ok, #2e9e5b); }

/* закреп чата: иконка на hover, у закреплённых - постоянная */
.chat-conv { position: relative; }
.conv-pin { position: absolute; right: 8px; top: 8px; border: 0; background: none; cursor: pointer;
  color: var(--drv-text-faint); padding: 2px; display: none; }
.conv-pin i, .conv-pin svg { width: 13px; height: 13px; }
.chat-conv:hover .conv-pin { display: block; }
.conv-pin.on { display: block; color: var(--drv-accent, #e8a33d); }
.conv-pin.on svg { fill: var(--drv-accent, #e8a33d); }

/* лайтбокс: закрыть легко - крупный крестик с подложкой, клик мимо картинки тоже закрывает */
.lightbox .lb-x, .lightbox .lb-dl { width: 38px; height: 38px; border-radius: 10px; display: inline-flex;
  align-items: center; justify-content: center; background: rgba(255,255,255,.12); color: #fff; border: 0; cursor: pointer; }
.lightbox .lb-x:hover, .lightbox .lb-dl:hover { background: rgba(255,255,255,.25); }
/* строка спеца: селект и поля - единая высота и шрифт */
.task-spec-row select { height: 34px; padding: 0 10px; font-size: 13px; border-radius: 7px; }
.task-spec-row .ts-scope, .task-spec-row .ts-pay input { height: 34px; font-size: 13px; border-radius: 7px; }

.chat-conv:hover .conv-at { opacity: 0; }
.conv-pin { top: 6px; }

.lightbox .lb-x svg, .lightbox .lb-dl svg { width: 19px; height: 19px; }
.lightbox .lb-body { display: flex; align-items: center; justify-content: center; }
/* превью скринов: пропорции не искажаем (раньше max-width 100% плющил широкие) */
.shot-thumb { height: 88px; width: auto; max-width: 240px; object-fit: cover; object-position: top left;
  border-radius: 8px; border: 1px solid rgba(128,128,128,.25); cursor: zoom-in; display: inline-block; }

/* iOS-чаты: без автозума при фокусе (шрифт >=16px), инерционный скролл, отступ под home-bar */
@media (max-width: 760px){
  .chat-box input[name=text], .chats-panel input, .chat-form input { font-size: 16px !important; }
  .chat-msgs, .chats-list { -webkit-overflow-scrolling: touch; }
  .chat-form { padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)); }
  /* модалка чатов на мобиле: одна колонка (десктопное 300px+1fr пересиливало по специфичности) */
  .modal-chats .chats-layout { grid-template-columns: 1fr; }
  /* строки бесед: крупнее тап-зона */
  .chat-conv { min-height: 56px; }
}

/* всплывашка деталей начисления (центр выплат + карточка задачи) */
.po-pop { position: absolute; z-index: 1600; width: min(340px, 92vw); background: var(--surface);
  border: 1px solid var(--drv-k-12); border-radius: 14px; box-shadow: 0 16px 44px rgba(0,0,0,.28);
  padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.po-pop .pp-sum { font-size: 14px; }
.po-pop .pp-st { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--drv-k-06);
  color: var(--drv-text-muted); margin-left: 4px; }
.po-pop .pp-row { display: flex; gap: 10px; justify-content: space-between; align-items: baseline; }
.po-pop .pp-row > span { color: var(--drv-text-faint); flex: none; }
.po-pop .pp-row > b, .po-pop .pp-row > a { text-align: right; min-width: 0; overflow-wrap: anywhere; }
.po-pop .pp-row > a { color: var(--drv-red); text-decoration: none; cursor: pointer; }
.po-pop .pp-defer { padding: 8px 11px; border-radius: 9px; background: rgba(217,146,17,.09);
  border: 1px solid rgba(217,146,17,.35); font-size: 12.5px; line-height: 1.45; }
.po-pop .pp-form { display: flex; gap: 7px; margin-top: 2px; }
.po-pop .pp-form input { flex: 1; min-width: 0; padding: 7px 10px; border: 1px solid var(--drv-k-12);
  border-radius: 8px; background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 12.5px; }
/* бейдж отложенной выплаты в строке */
.po-defer { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600;
  padding: 2px 8px; border-radius: 999px; background: rgba(217,146,17,.12); color: #d99211;
  white-space: nowrap; cursor: help; }
.po-defer i, .po-defer svg { width: 11px; height: 11px; }

/* вт/пт-напоминание директору о выплатах */
.pay-nudge-bd { position: fixed; inset: 0; z-index: 2500; background: rgba(0,0,0,.5);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
  display: flex; align-items: center; justify-content: center; padding: 18px; }
.pay-nudge { width: min(440px, 94vw); background: var(--surface); border: 1px solid var(--drv-k-12);
  border-radius: 18px; padding: 22px 24px; display: flex; flex-direction: column; gap: 14px;
  box-shadow: 0 28px 80px rgba(0,0,0,.5); }
.pay-nudge .pn-h { display: flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 600; }
.pay-nudge .pn-h i, .pay-nudge .pn-h svg { width: 20px; height: 20px; color: var(--drv-red); }
.pay-nudge .pn-list { display: flex; flex-direction: column; }
.pay-nudge .pn-row { display: flex; justify-content: space-between; gap: 12px; padding: 8px 2px;
  border-bottom: 1px solid var(--drv-k-06); font-size: 14px; }
.pay-nudge .pn-row:last-child { border-bottom: none; }
.pay-nudge .pn-defer { display: flex; gap: 8px; }
.pay-nudge .pn-defer input { flex: 1; min-width: 0; padding: 9px 12px; border: 1px solid var(--drv-k-12);
  border-radius: 9px; background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.pay-nudge .pn-defer .btn { flex: none; white-space: nowrap; }
.pay-nudge .pn-acts { display: flex; justify-content: flex-end; gap: 10px; }

/* сегмент «Справочник | Выплаты» в разделе Специалисты */
.spec-seg .seg-cnt { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px;
  background: var(--r08); color: var(--r); margin-left: 4px; }

/* задача: деньги спеца в его блоке - начисления и мини-форма «начислить часть» */
.ts-btn { width: 26px; height: 26px; border-radius: 8px; border: 1px solid var(--drv-k-12);
  background: var(--surface); cursor: pointer; display: inline-flex; align-items: center;
  justify-content: center; color: var(--drv-text-muted); flex: none; }
.ts-btn:hover { border-color: var(--drv-red); color: var(--drv-red); }
.ts-btn i, .ts-btn svg { width: 13px; height: 13px; }
.ts-pays { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 6px 14px;
  padding-left: 12px; border-left: 2px solid var(--drv-k-06); }
.ts-pay-row { display: flex; align-items: center; gap: 8px; font-size: 12.5px; padding: 2px 0; }
.ts-pay-note { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.ts-pay-row .badge { flex: none; }
.ts-pay-i { width: 22px; height: 22px; }
.ts-pay-i i, .ts-pay-i svg { width: 12px; height: 12px; }
.ts-accrue { margin: 2px 0 8px 26px; border-top: none !important; padding-top: 0 !important; }

/* плюсик в композере чата: меню-форма запроса выплаты */
.chat-plus-wrap { position: relative; display: inline-flex; }
.chat-plus-menu { position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 60; width: 250px;
  background: var(--surface); border: 1px solid var(--drv-k-12); border-radius: 14px;
  box-shadow: 0 14px 38px rgba(0,0,0,.24); padding: 13px 14px; display: flex; flex-direction: column; gap: 8px; }
.chat-plus-menu .cpm-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; }
.chat-plus-menu .cpm-title i, .chat-plus-menu .cpm-title svg { width: 15px; height: 15px; color: var(--drv-red); }
.chat-plus-menu input { padding: 8px 11px; border: 1px solid var(--drv-k-12); border-radius: 9px;
  background: var(--drv-bg); color: var(--drv-text); font: inherit; font-size: 13px; }
.chat-plus-menu input:focus { outline: none; border-color: var(--drv-red); }
.chat-plus-menu .cpm-hint { font-size: 11px; line-height: 1.4; }

/* настройки финансов: статьи-чипы */
.fincat-panel { padding: 16px 18px; }
.fincat-list { display: flex; flex-wrap: wrap; gap: 7px; margin: 4px 0 12px; }
.fincat-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 6px 5px 12px;
  border: 1px solid var(--drv-k-12); border-radius: 999px; font-size: 13px; background: var(--drv-bg); }
.fincat-chip .fc-x { border: none; background: none; cursor: pointer; color: var(--drv-text-faint);
  font-size: 15px; line-height: 1; padding: 1px 5px; border-radius: 50%; }
.fincat-chip .fc-x:hover { color: var(--drv-red); background: var(--drv-red-08); }
.fincat-add { display: flex; gap: 8px; }
.fincat-add input { flex: 1; min-width: 0; padding: 8px 12px; border: 1px dashed var(--drv-k-12);
  border-radius: 999px; background: transparent; color: var(--drv-text); font: inherit; font-size: 13px; }
.fincat-add input:focus { outline: none; border-color: var(--drv-red); border-style: solid; }
