/* Shared compact section headers, tenant filters and separated task cards. */
:root{--section-height:32px;--workspace-gap:12px;--work-row-height:64px;--work-row-gap:10px}
.screen{padding:var(--workspace-gap)}
.admin-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--workspace-gap);max-width:920px}
.admin-settings-grid .admin-settings-entry{margin:0;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.admin-settings-entry:hover{background:var(--hover)}
.admin-settings-entry:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.admin-settings-path{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:var(--workspace-gap)}
.photo-connection{border:1px solid var(--line);border-radius:var(--r-m);padding:12px;margin:12px 0;display:grid;gap:8px}
.photo-connection>div{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.photo-key-form{display:flex;align-items:end;flex-wrap:wrap;gap:8px}
.photo-key-form label{flex:1;min-width:190px}.photo-key-form input{width:100%;box-sizing:border-box;min-height:32px;border:1px solid var(--line);border-radius:var(--r-s);background:var(--bg);color:var(--text);font:inherit;padding:6px 10px}
.photo-connection .actions{margin:0;padding:0;border:0}
.photo-connection [role=status]{font-size:12px;overflow-wrap:anywhere}
.top{padding:var(--workspace-gap);gap:var(--workspace-gap);z-index:20}
.screen>.actions{padding:0;margin:0 0 var(--workspace-gap);border:0;align-items:center}
.screen>.card+.card,.showings-page>.card+.card{margin-top:var(--workspace-gap)}
.screen>.card{padding:var(--workspace-gap)}
.screen>.card.tablewrap{padding:0;margin-left:0;margin-right:0}
.screen>.card>.tablewrap{margin-left:calc(-1 * var(--workspace-gap));margin-right:calc(-1 * var(--workspace-gap))}
.report-content{gap:var(--workspace-gap)}
.report-filters{gap:8px;margin-bottom:var(--workspace-gap);align-items:center}
.report-period{flex:none;min-width:0;gap:8px;align-items:center}
.report-filters label{flex:none;min-width:0;gap:4px}
.report-period>label{display:flex;align-items:center;gap:8px}
.report-filters select,.report-filters input{height:32px;min-height:32px;padding:4px 8px;box-sizing:border-box;width:auto;max-width:100%;font-size:12px}
.report-period .hq-select-trigger{height:32px;min-height:32px;width:144px;padding:4px 8px;font-size:12px}
.report-personal-title{margin:0}
.report-error:empty{display:none}
.report-section{padding:var(--workspace-gap)}
.report-section h2{font-size:14px;margin-bottom:var(--workspace-gap)}
.report-tabs{margin-bottom:var(--workspace-gap)}
.contract-filters .btn{width:160px;height:32px;white-space:nowrap}
.contract-actions{display:flex;gap:6px;align-items:center}
table.sched{table-layout:fixed;width:100%;min-width:960px}
table.sched :is(th,td){height:32px;padding:0 3px;box-sizing:border-box;font-size:11px;overflow:hidden}
table.sched th:first-child{width:100px}
table.sched .sched-role{width:84px;white-space:nowrap;text-overflow:ellipsis;font-size:10px}
table.sched .sched-person{white-space:nowrap;padding-left:6px;font-size:13.2px}
table.sched .sched-person>span{display:inline-block;max-width:91px;vertical-align:middle;overflow:hidden;text-overflow:ellipsis}
table.sched .sched-actions{width:38px;padding:0 3px;text-align:center}
table.sched .sched-edit{width:30px;min-height:30px;height:30px;padding:5px;margin:0;display:inline-flex;align-items:center;justify-content:center}
table.sched .sched-edit svg{width:18px;height:18px}
table.sched td.day,table.sched th.num{padding:0 2px;min-width:0}
.btn{min-height:32px;padding:5px 10px;font-size:12px;line-height:1.4;box-sizing:border-box}
.seg,.viewsw{display:inline-flex;width:max-content;max-width:100%;height:32px;min-height:32px;gap:0;border:1px solid var(--line);border-radius:var(--r-m);overflow:auto;flex:none}
.seg button,.viewsw button{flex:0 0 auto;min-height:30px;height:30px;padding:0 12px;font-size:12px;line-height:30px;white-space:nowrap;box-sizing:border-box;border:0;border-right:1px solid var(--line);border-radius:0;background:var(--bg);color:var(--text2)}
.seg button:last-child,.viewsw button:last-child{border-right:0}
.seg button[aria-pressed=true],.viewsw button[aria-pressed=true]{background:var(--text);color:var(--bg);font-weight:600}
.aq-people-options .btn{min-height:32px;height:32px;padding:0 9px}
.viewsw button{min-width:68px}
.card:has(>.card__head){padding-top:0}
.card__head{min-height:var(--section-height);padding:0;align-items:center;gap:8px;flex-wrap:nowrap}
.card__head h2,.card__head .card__count{font-size:13px;line-height:1.2;min-width:0}
.card__head .muted{font-size:12px}
.bcol__head{min-height:var(--section-height);padding:5px 10px;display:flex;align-items:center;gap:8px;justify-content:space-between}
.bcol__name{min-width:0}.bcol__meta{flex:none;margin:0;font-size:10px}
.aq-group>summary,.acol__head{min-height:var(--section-height);padding:5px 10px;box-sizing:border-box}
.screen .tenant-filters{position:relative;padding:0;margin-bottom:12px;z-index:5}
.tenant-filters>summary{display:flex;min-height:var(--section-height);padding:0 10px;list-style:none}
.tenant-filters>summary::-webkit-details-marker{display:none}
.tenant-filters>summary::after{content:'⌄';margin-left:auto}
.tenant-filter-panel{position:absolute;left:-1px;right:-1px;top:calc(100% - 1px);padding:12px;background:var(--bg);border:1px solid var(--line);border-radius:0 0 var(--r-l) var(--r-l);box-shadow:var(--shadow);max-height:65dvh;overflow:auto}
.tenant-filter-panel .filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:0;border:0}
.tenant-filter-trigger{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0;width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:8px;min-height:34px;padding:6px 9px;cursor:pointer;text-align:left}
.tenant-filter-trigger>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tenant-filter-actions{display:flex;justify-content:space-between;gap:8px;margin-top:12px}
.tenant-filter-picker footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.tenant-filter-picker .hq-select-option{min-height:44px}
.tenant-filter-picker .hq-select-option::after{content:'';border:1px solid var(--line);border-radius:4px;width:18px;height:18px;flex:none;text-align:center;line-height:16px}
.tenant-filter-picker .hq-select-option[aria-selected=true]::after{content:'✓';background:var(--text);color:var(--bg)}
.tenant-table .table-sort{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.tenant-table table{table-layout:fixed;width:100%}
.tenant-deal-title{display:block;max-width:100%}
.text-overflow{overflow:hidden;white-space:nowrap;min-width:0;max-width:100%}
.text-overflow>span{display:block;width:max-content;min-width:100%}
.text-overflow.is-overflowing{touch-action:pan-y pinch-zoom;cursor:grab;user-select:none}
.text-overflow.is-manual{overflow-x:auto;scrollbar-width:none}
.text-overflow.is-manual::-webkit-scrollbar{display:none}
.text-overflow.is-manual>span{animation:none!important;transform:none!important}
.text-overflow:focus-visible{outline:1px solid var(--text);outline-offset:-1px}
.text-overflow:focus-within>span{animation-play-state:paused}
.board--tenants .bcard__mobile-title>b{flex:1;min-width:0}
.board--tenants .bcard__desktop-task{min-width:0;max-width:46%;flex:0 1 46%}
.board--tenants .tsk.text-overflow{display:block;box-sizing:border-box;line-height:18px;max-height:26px}
@media(min-width:981px){
 .text-overflow.is-overflowing>span{animation:crm-text-travel var(--overflow-duration) linear infinite alternate}
 .text-overflow:hover>span{animation-play-state:paused}
}
@keyframes crm-text-travel{0%,15%{transform:translateX(0)}85%,100%{transform:translateX(var(--overflow-distance))}}
@media(prefers-reduced-motion:reduce){.text-overflow.is-overflowing>span{animation:none}}
.screen th{height:var(--section-height);padding-top:0;padding-bottom:0}
.screen th,.screen th .table-sort{font-size:11px;line-height:1.2;text-transform:none;letter-spacing:0;white-space:nowrap}
.listing-toolbar{position:relative;display:flex;align-items:center;gap:8px;margin-bottom:12px;min-width:0}
.listing-toolbar>.actions{padding:0;margin:0;flex:none}
.screen .listing-toolbar>.tenant-filters{position:static;margin:0;min-width:0;flex:0 1 280px}
.listing-toolbar .tenant-filters>summary{gap:10px;align-items:center;height:var(--section-height);font-size:12px}
.listing-toolbar .tenant-filters>summary .muted{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.listing-toolbar .tenant-filter-panel{top:calc(100% + 5px);left:0;right:auto;width:min(600px,100%);box-sizing:border-box;border-radius:var(--r-m);z-index:12}
.tenant-filter-panel input[type=number]{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);min-height:34px;padding:6px 9px}
.work-task-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.work-task-filters>.actions{flex:1;min-width:0}
.work-task-list{display:grid;gap:var(--work-row-gap);margin-bottom:12px}
.work-task-list,.work-info-scroll{container-type:inline-size}
.work-task-property{display:grid;gap:6px;margin:0 0 12px;font-size:13px}
.work-task-property>div{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px}
.work-task-property dt{color:var(--text2)}.work-task-property dd{margin:0;overflow-wrap:anywhere}
.work-task-filters{margin-bottom:var(--workspace-gap)}
.work-task-filters>select,.work-task-filters>.hq-select-trigger{width:180px;max-width:100%;flex:none}
.work-task-filters #workTaskKind,.work-task-filters #workTaskKind+.hq-select-trigger{width:210px}
.crm-list-filters .work-task-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}
.crm-list-filters .flt{min-width:0;display:flex;flex-direction:column;gap:5px;font-size:12px}
.crm-list-filters .flt :is(select,.hq-select-trigger,.crm-date-trigger){width:100%;max-width:100%;height:32px;min-height:32px;box-sizing:border-box;font-size:12px}
.crm-list-filters .work-task-date{width:100%}.crm-list-filters .work-task-date .crm-date-control{flex:1;min-width:0}
.list-total{font-size:11px;white-space:nowrap;margin-left:auto}
.listing-toolbar .showing-send{margin-left:0;flex:none}
.work-task-date{display:flex;align-items:center;gap:4px;max-width:100%}
.work-task-date .crm-date-trigger{height:32px}
.work-task-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0 0 8px;min-width:0}
.work-task-links .btn{display:flex;align-items:center;justify-content:center;white-space:nowrap;height:32px;min-width:0;padding:4px 6px;text-decoration:none;font-size:11px;box-sizing:border-box}
.work-task-links .work-task-phone{font-variant-numeric:tabular-nums;font-size:11px}
.task-card.work-task>.actions>.work-task-links{grid-column:1/-1;grid-row:1;margin:0}
.task-card.work-task>.actions:has(.work-task-links)>[data-work-task]{grid-row:2}
/* Подсветка обязательного незаполненного (п. 280, решение владельца 31.10.2026).
   ⚠️ Рамку получает СОДЕРЖИМОЕ группы, а не сам <fieldset>: его заголовок
   <legend> стоит НА линии рамки, и красная линия перечёркивала «Спальни *»
   и «Районы *» насквозь. Кольцо `box-shadow` вокруг fieldset вырез под
   заголовок не уважает вовсе — оно шло по тексту всегда.
   ⚠️ Меняем только ЦВЕТ рамки: у полей, у кнопок выбора и у рамки группы
   она есть всегда (у группы — прозрачная), поэтому появление и снятие
   подсветки не меняет размер блока ни на пиксель. */
[data-tenant-invalid]{color:var(--danger,#c73333)}
.tenant-options{border:1px solid transparent;border-radius:8px;padding:4px}
[data-tenant-invalid]:is(fieldset)>.tenant-options,
[data-tenant-invalid] :is(input:not([type=checkbox]),select,.crm-date-trigger,.hq-select-trigger){
  border-color:var(--danger,#c73333)!important;box-shadow:inset 0 0 0 1px var(--danger,#c73333)}
/* Галочки внутри группы спрятаны (opacity:0) — кольцо им ни к чему. */
[data-tenant-invalid] input[type=checkbox]{box-shadow:none}
@media(max-width:600px){.work-task-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.work-task-filters>*{width:100%!important;min-width:0}.work-task-filters :is(select,.hq-select-trigger,.crm-date-trigger){width:100%!important;min-width:0}.work-task-links .btn{font-size:10px;padding:4px 2px}}
.work-deal-card,.contract-card{box-sizing:border-box;min-width:0;width:100%;margin:0;padding:12px;border:1px solid var(--line);border-left-width:3px;border-radius:var(--r-m);background:var(--bg);color:var(--text);font:inherit;text-align:left}
.work-deal-card{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer}
.work-deal-card>span:first-child{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}
.work-task-list>.work-deal-card{width:100%;height:var(--work-row-height);min-height:var(--work-row-height);padding:8px 10px}
.work-task-list>.work-deal-card>span:first-child>*{line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work-deal-card .muted{font-size:12px}.work-deal-arrow{flex:none;color:var(--text2)}
.work-deal-card:hover{background:var(--hover)}
.work-deal-card:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.contract-card{display:grid;grid-template-columns:minmax(0,1fr) 124px 224px;align-items:center;gap:12px;padding:8px 10px}
.contract-card[data-party=tenant]{--party-bg:#edf4ef;--party-border:#7c9e88;--party-text:#355d43}
.contract-card[data-party=owner]{--party-bg:#f5f0e7;--party-border:#b69a70;--party-text:#6f5630}
:root[data-theme=dark] .contract-card[data-party=tenant]{--party-bg:#192820;--party-border:#537a60;--party-text:#b7d5be}
:root[data-theme=dark] .contract-card[data-party=owner]{--party-bg:#2c251b;--party-border:#8c7049;--party-text:#dfc49e}
.contract-card[data-party]{background:var(--party-bg,var(--bg));border-left-color:var(--party-border,var(--line))}
.contract-party{color:var(--party-text,var(--text));font-weight:600}
.contract-card-info{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}
.contract-card .contract-title{padding:0;text-align:left;font-weight:600;font-size:13px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}
.contract-meta{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--text2);font-size:12px}
.contract-end{display:grid;gap:4px;min-width:0;width:124px;max-width:100%;font-size:12px;text-align:center;justify-self:center}
.contract-end>.muted{white-space:nowrap}
.contract-end :is(input,.crm-date-trigger){box-sizing:border-box;width:100%;min-width:0;height:32px;min-height:32px;font-size:12px;text-align:center;justify-content:center;padding:4px 8px}
.contract-end[data-deadline=overdue]{--contract-date-bg:var(--chip-red-bg);--contract-date-tx:var(--chip-red-tx)}
.contract-end[data-deadline=urgent]{--contract-date-bg:var(--chip-orange-bg);--contract-date-tx:var(--chip-orange-tx)}
.contract-end[data-deadline=soon]{--contract-date-bg:#FBF2DC;--contract-date-tx:#8A6400}
:root[data-theme=dark] .contract-end[data-deadline=soon]{--contract-date-bg:#3A3217;--contract-date-tx:#E8C66A}
.contract-end :is(input,.crm-date-trigger){background:var(--contract-date-bg,var(--bg));color:var(--contract-date-tx,var(--text));border-color:var(--contract-date-bg,var(--line));font-variant-numeric:tabular-nums}
.contract-end .crm-date-trigger:disabled{opacity:1}
.contract-end .crm-date-trigger:hover:not(:disabled){filter:brightness(.96)}
.contract-card .contract-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.contract-card .contract-actions .btn{width:100%;min-width:0;padding:4px 6px;white-space:nowrap;font-size:11px}
.contract-history h2{font-size:13px;margin:var(--workspace-gap) 0}
.contract-card--history{grid-template-columns:minmax(0,1fr) auto auto;font-size:12px}
@media(max-width:980px){
 .work-deal-card,.contract-card{padding:10px;font-size:13px}
 .contract-card{grid-template-columns:124px minmax(0,1fr);gap:10px}
 .contract-card-info{grid-column:1/-1}.contract-end{justify-self:start}
 .contract-card--history{grid-template-columns:minmax(0,1fr);gap:5px}
 .contract-filters{display:flex;flex-wrap:wrap;gap:6px}
 .contract-filters .btn{width:auto;flex:1 1 auto;padding:5px 8px;font-size:11px}
}
.task-card.work-task,.task-card.aq-row{border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-m);background:var(--bg);padding:12px;gap:12px;margin:0}
.task-card.work-task{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;width:100%;height:var(--work-row-height);min-height:var(--work-row-height);padding:8px 10px;gap:4px 8px}
.task-card.work-task>.work-task-info{display:grid;grid-column:1;grid-row:1;gap:4px;min-width:0}
/* ⚠️ Метка «Просрочено» живёт ВНУТРИ названия (п. 221, доводка), поэтому
   обрезается не всё подряд: на ПК многоточие получает только текст
   названия (`.work-task-name`), а плашка остаётся целой и видимой. */
.work-task-title{display:flex;align-items:center;min-width:0;gap:0;
  font-size:13px;line-height:20px}
.work-task-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ⚠️ Красная метка просрочки ПЕРЕД датой (п. 221). Заливки у просроченных
   нет с п. 162 — о просрочке говорит именно она. */
.work-task-late{flex:none;padding:0 6px;border-radius:var(--r-s);font-size:11px;
  line-height:16px;font-weight:600;white-space:nowrap;
  color:var(--chip-red-tx);background:var(--chip-red-bg)}
/* ⚠️ Бегущая строка у НАЗВАНИЯ задачи снята (п. 221). Анимация
   crm-text-travel сдвигала текст влево на всю длину переполнения, и
   первая буква уезжала под overflow: «Поздравить» читалось как
   «1оздравить». На узкой карточке название теперь переносится целиком,
   на ПК обрезается многоточием. У ссылки на сделку (.work-link) бегущая
   строка осталась — там переполнение редкое и буква не срезается. */
.work-task-meta{display:flex;align-items:center;gap:8px;min-width:0;height:20px;font-size:12px;line-height:20px}
.work-task-meta>time{flex:none;font-size:12px;white-space:nowrap}
.work-task .work-task-meta>.work-link{display:block;flex:1;min-width:0;max-width:100%;padding:0;line-height:20px;font-size:12px;white-space:nowrap;text-align:left}
.work-task-contact{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.task-card .actions,.task-card .aq-actions{padding:0;margin:0;border:0;align-self:start;justify-self:end;display:flex;justify-content:flex-end}
.task-card .actions{flex-direction:column;gap:6px}
.task-card .actions .btn,.task-card .aq-actions .btn{width:100px;white-space:nowrap;margin:0}
/* ⚠️ п. 221: кнопки В ОДНУ СТРОКУ, второго ряда нет. Было
   прежняя сетка из трёх равных слотов по 36px сжимала «Диалог» и
   «Сделка» так, что текст не читался, а лишние кнопки уезжали во
   второй ряд и карточка росла. Текстовые кнопки теперь по ширине слова, значки — 36px, и
   слотов всегда пять: у задачи без «Перенести»/«Выполнить» на их месте
   пустые места, иначе колонка прыгает от карточки к карточке. */
/* ⚠️ Колонки по содержимому, а не три по 36px (п. 390): с 11.11.2026 у
   «Вести собственника» и «Переподписания» на месте значков стоят
   СЛОВЕСНЫЕ кнопки («WhatsApp / Отправил / Перенести»), и в слот 36px
   они не влезали — надписи наезжали друг на друга, а «Перенести»
   уезжало за правый край карточки. Значки остаются 36px сами: ширину
   им задаёт правило `.btn` ниже, `auto` её только уважает. */
.task-card.work-task>.actions{display:grid;grid-column:2;grid-row:1;
  grid-template-columns:repeat(5,auto);gap:8px;align-self:center;width:auto;
  justify-content:end}
.task-card.work-task>.actions>.work-task-slot{width:36px;height:36px}
.task-card.work-task>.actions>.btn.work-task-word{width:auto;min-width:0;
  padding:6px 10px;white-space:nowrap;font-size:12px}
/* ⚠️ Только ПРЯМЫЕ потомки (п. 390): «WhatsApp» лежит внутри обёртки
   `.ocare` (ей нужно меню поверх карточки), и правило-потомок делало
   словесную кнопку шириной значка — надпись вылезала на соседнюю. */
.task-card.work-task>.actions>.btn{display:grid;place-items:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:6px;text-align:center;white-space:nowrap}
/* Кнопка в обёртке меню — по слову, как остальные словесные. */
.task-card.work-task>.actions>.ocare{position:relative}
.task-card.work-task>.actions>.ocare>.btn{width:auto;min-width:0;height:36px;
  padding:6px 10px;white-space:nowrap;font-size:12px}
/* ⚠️ Кнопки действий «своих» типов (п. 390) приходят из сборки очереди
   и класса `work-task-word` не несут — ширину им даём ПО ПРИЗНАКУ
   действия. Без этого «Отправил» получала ширину значка (36px) и
   читалась как «Отпра». */
.task-card.work-task>.actions>.btn[data-owner-care-sent],
.task-card.work-task>.actions>.btn[data-gt-attempt-task],
.task-card.work-task>.actions>.btn[data-gt-stage-task],
.task-card.work-task>.actions>.btn[data-gt-later-task]{width:auto;min-width:0;
  padding:6px 10px;white-space:nowrap;font-size:12px}
.task-card.work-task>.actions svg{display:block;width:22px;height:22px;pointer-events:none}
/* Порядок кнопок задаёт разметка: привязки к колонкам снялись вместе с
   сеткой из трёх (п. 221). */
/* ⚠️ Просроченные БОЛЬШЕ НЕ ЗАЛИВАЮТСЯ (п. 162): о просрочке говорит
   надпись «Просрочено» в строке названия. Красная заливка отдана
   «Переподписанию» — её там немного, и она видна сразу. */
/* ⚠️ У просроченных НЕТ ни заливки, ни красной границы — решение
   владельца п. 162: «просрочка надписью, не заливкой», потому что красной
   была половина списка и глазу было не за что зацепиться. Правка цветов
   (п. 250) этого не отменяет: она про оттенки там, где цвет уже есть. */
.task-card.task-card--overdue{border-left-color:var(--line)}
/* ⚠️ Тона карточек — через токены задач (п. 250): «сегодня» жёлтым, а не
   оранжевым (на это и была жалоба), переподписание и просрочка — чистым
   красным вместо бордового #A32020. */
.task-card.task-card--renewal{border-left-color:var(--task-red);
  background:color-mix(in srgb,var(--chip-red-bg) 38%,var(--bg))}
.task-card.task-card--renewal .muted{color:var(--task-red)}
.task-card.task-card--today{border-left-color:var(--task-yellow);
  background:color-mix(in srgb,var(--task-yellow) 12%,var(--bg))}
.task-card.task-card--rental{border-left-color:var(--chip-blue-tx);background:color-mix(in srgb,var(--chip-blue-bg) 35%,var(--bg))}
.task-card.task-card--done{opacity:.65}
.task-card[data-task-edit],.contract-card[data-contract-card]{cursor:pointer}
.task-card[data-task-edit]:hover,.contract-card[data-contract-card]:hover{border-color:var(--text)}
.task-card[data-task-edit]:focus-visible,.contract-card[data-contract-card]:focus-visible{outline:2px solid var(--text);outline-offset:-2px}
.work-info-scroll .task-card{margin-bottom:10px}
/* The same separated, fully outlined rows in every working list. */
.screen>.card>.tablewrap.card-tablewrap{margin-left:0;margin-right:0}
table.crm-card-table{border-collapse:separate;border-spacing:0 var(--work-row-gap)}
/* All four working screens share the same list surface and density. */
.screen>.card:has(.card-tablewrap),.showings-page>.card{padding:0;background:transparent;border:0;box-shadow:none}
.screen>.card:has(.card-tablewrap)>.card__head{display:none}
.object-table table{table-layout:fixed;width:100%}
.object-col-title,.tenant-col-name{width:28%}
.object-col-post{width:100px}.object-col-date,.tenant-col-date{width:130px}
.list-updated-mobile{display:none}
.crm-card-table tbody td{height:var(--work-row-height);padding:8px 10px;box-sizing:border-box;font-size:12px;line-height:20px}
/* Prevent long labels from increasing row height; details remain available on open. */
.tenant-table tbody td,.showing-table.crm-card-table tbody td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tenant-table tbody td:last-child{white-space:normal}
.tenant-table .tenant-deal-title,.tenant-table .sub2,.showing-table.crm-card-table .sub2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}
.tenant-table .tenant-stage .chip{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.crm-card-table td.title,.showing-street{font-size:13px;font-weight:600}
.crm-card-table .sub2{font-size:11px;line-height:20px;margin-top:0;font-weight:400}
.crm-card-table thead th{height:32px;padding:0 10px;background:var(--raise);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.crm-card-table thead th:first-child{border-left:1px solid var(--line);border-radius:8px 0 0 8px}
.crm-card-table thead th:last-child{border-right:1px solid var(--line);border-radius:0 8px 8px 0}
.object-deal-title,.object-address{display:block;min-width:0;max-width:100%}
.work-pane-tabs{min-height:44px;height:44px;padding:6px 10px;box-sizing:border-box;gap:6px}
.work-pane-tabs button{height:32px;min-height:32px;font-size:12px;font-weight:600;padding:0 12px;border:1px solid var(--line);background:var(--bg);color:var(--text)}
.work-pane-tabs button[aria-selected=true]{background:var(--text);color:var(--bg);border-color:var(--text);font-weight:600}
/* Панель полей: ползунок двигается только от прокрутки (п. 281, 31.10.2026).
   ⚠️ Здесь стояло `overflow-anchor:none` — якорь прокрутки был ВЫКЛЮЧЕН,
   и любое изменение высоты ВЫШЕ видимой части сдвигало содержимое под
   человеком. Замер 31.10.2026: панель на 2620, свернулась группа выше —
   высота 3493→2585, браузер прижал прокрутку к 1779, содержимое уехало
   на 67 px; группа вернулась — высота снова 3493, а прокрутка осталась
   1779, то есть в 841 px от того места, где человек читал. Якорь ровно
   для этого и нужен: он сам поправляет прокрутку, чтобы видимое
   осталось на месте.
   ⚠️ `scrollbar-gutter:stable` — место под полосу держится всегда. Иначе
   её появление и исчезновение меняет ширину содержимого, а панель ещё и
   `container-type:inline-size`: ширина — вход для раскладки внутри. */
.work-info-scroll{scrollbar-gutter:stable}
.crm-card-table tbody tr{--row-border:var(--line)}
.crm-card-table tbody td{border-top:1px solid var(--row-border);border-bottom:1px solid var(--row-border);background:var(--show-bg,var(--bg));vertical-align:middle}
.crm-card-table tbody tr:last-child td{border-bottom:1px solid var(--row-border)}
.crm-card-table tbody td:first-child{border-left:3px solid var(--show-tone,var(--row-border));border-radius:var(--r-m) 0 0 var(--r-m)}
.crm-card-table tbody td:last-child{border-right:1px solid var(--row-border);border-radius:0 var(--r-m) var(--r-m) 0}
.crm-card-table tbody tr:is(.row,[data-showing-edit],[data-request-edit]):is(:hover,:focus-visible){--row-border:var(--text);outline:none}
.crm-card-table tbody tr:is(.row,[data-showing-edit],[data-request-edit]):is(:hover,:focus-visible)>td:first-child{border-left-color:var(--row-border)}
/* Match the apartment editor's 40px controls without inflating the labels. */
.contract-maker .dlg__box{width:min(660px,100%)}
.contract-maker .cm-grid{gap:10px 12px}
.contract-maker .work-field{font-size:12px;gap:4px}
.contract-maker .work-field :is(input:not([type=checkbox]):not([type=radio]):not([aria-hidden=true]),select),.contract-maker .crm-date-trigger,.contract-maker .hq-select-trigger{height:40px;min-height:40px;padding:0 10px;font-size:14px;line-height:normal;width:100%;min-width:0;box-sizing:border-box}
.contract-maker .work-field textarea{font-size:14px;line-height:1.4;padding:8px 10px}
.contract-maker .cm-grid h3{margin-top:4px;font-size:13px}
@media(max-width:980px){.contract-maker .work-field :is(input,textarea,select){font-size:16px!important}}
@media(max-width:980px){
  .tenant-deal-title.text-overflow{white-space:nowrap}
  .tenant-deal-title.text-overflow>span{width:max-content;min-width:100%}
  :root{--section-height:32px}
  .object-col-title,.tenant-col-name{width:58%}
  .object-col-stage,.tenant-col-stage{width:42%}
  :is(.object-table,.tenant-table) :is(col,td):nth-child(n+3){display:none}
  :is(.object-table,.tenant-table) .list-stage{text-align:right;border-right:1px solid var(--row-border);border-radius:0 var(--r-m) var(--r-m) 0}
  :is(.object-table,.tenant-table) .list-stage .chip{display:inline-block;vertical-align:middle;line-height:20px;padding:0 4px}
  .list-updated-mobile{display:block;font-size:10px;font-weight:400;line-height:20px;white-space:nowrap}
  .crm-card-table tbody td{height:var(--work-row-height);padding:8px;font-size:12px;line-height:20px;overflow:hidden}
  .crm-card-table td.title,.showing-street{font-size:13px}
  .crm-card-table .chip{max-width:100%;box-sizing:border-box;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tenant-table td:last-child,.showing-table .showing-when{font-size:10px}
  .showings-page .listing-toolbar{flex-wrap:wrap}
  .showings-page .list-total{font-size:10px}
  .task-card.work-task{font-size:13px}
  .task-card .actions .btn,.task-card .aq-actions .btn{width:88px;font-size:11px}
  .card__head h2,.card__head .card__count{font-size:12px}
  .bcol__meta{font-size:9px}
}
@media(max-width:980px) and (prefers-reduced-motion:no-preference){.crm-card-table .text-overflow.is-overflowing>span{animation:crm-text-travel var(--overflow-duration) linear infinite alternate}}


.btn.btn--main{background:var(--text);color:var(--bg);border-color:var(--text)}
button.who{width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);cursor:pointer;font:inherit;color:var(--text2)}
button.who:hover{background:var(--hover)}
.mobile-profile [data-profile-logout]{margin-left:8px}
.board--tenants .bcard__who,.board--tenants .bcard__name,.board--tenants .bcard__msg,.board--tenants .bcard__row:not(.bcard__row--meta){display:none}
.board--tenants .bcard__mobile-title{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;font-size:13px;line-height:1.4}
.board--tenants .bcard__mobile-title>b{min-width:0;overflow-wrap:anywhere}
.board--tenants .bcard__mobile-title>.tenant-task-dot{display:none}
.bcard__desktop-task{flex:none;max-width:88px;font-size:10px}.bcard__desktop-task .tsk{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media(min-width:981px){
 .screen:has(>.board){display:flex;flex-direction:column;overflow:hidden}
 .screen:has(>.board)>.listing-toolbar{flex:none}
 .screen>.board{flex:1;min-height:0;align-items:stretch;overflow-y:hidden}
 .screen>.board>.bcol{max-height:100%;height:100%;box-sizing:border-box}
 .screen>.board>.bcol--empty{height:auto;align-self:flex-start}
 /* One screen scrollbar for tenants, tasks and showings keeps their widths equal. */
 .screen .tenant-table{max-height:none;overflow:visible}
}
@media(max-width:980px){.board--tenants .bcard__mobile-title>.tenant-task-dot{display:block}.bcard__desktop-task{display:none}}

/* ⚠️ Канбан на телефоне: прокручивается ТОЛЬКО колонка (п. 252).
   Что было: `.bcol` ограничена `max-height:70vh`, внутри `.bcol__list`
   с `overflow-y:auto`, а сама страница тоже прокручивалась — доска
   ниже экрана. Палец по колонке прокручивал список, а на его краю
   Safari передавал прокрутку странице (scroll chaining) и добавлял свой
   отскок. Со стороны это выглядело так: колонка и страница едут
   вразнобой, шапка «Список / Канбан / Фильтры» уезжает вниз, сверху
   открывается пустое место, а колонка дёргается не в ту сторону.
   Видео владельца 30.10.2026.

   Лечим тем же приёмом, что на компьютере: экран держит высоту, доска
   занимает остаток, прокрутка живёт внутри колонки. Плюс
   `overscroll-behavior:contain` — он и есть запрет на передачу
   прокрутки и отскока наружу. */
@media(max-width:980px){
  .screen:has(>.board){display:flex;flex-direction:column;overflow:hidden;
    max-height:100dvh}
  .screen:has(>.board)>.listing-toolbar{flex:none}
  .screen>.board{flex:1;min-height:0;align-items:stretch;overflow-y:hidden}
  .screen>.board>.bcol{max-height:100%;height:100%;box-sizing:border-box}
  .screen>.board>.bcol--empty{height:auto;align-self:flex-start}
  /* Вертикальный жест — списку колонки, горизонтальный — доске. */
  .bcol__list{overscroll-behavior:contain;touch-action:pan-y;
    -webkit-overflow-scrolling:touch}
  .board{overscroll-behavior-x:contain}
}
/* Task navigation stays inside the task; list controls share one stable row. */
.task-card.work-task>.work-task-list-actions:has(>.btn:only-child){grid-template-columns:36px}
.work-task-property dd{min-width:0;overflow-wrap:anywhere}
.work-post-link{color:inherit;text-decoration:underline;text-underline-offset:3px;font-variant-numeric:tabular-nums}
.tenant-post-field [data-tenant-post-view]{display:flex;align-items:center;gap:8px;min-height:36px}
.tenant-post-field [hidden]{display:none!important}
.tenant-post-field [data-tenant-post-link]{flex:1;min-width:0;overflow-wrap:anywhere}
.tenant-post-field [data-tenant-post-edit]{flex:none;width:36px;padding:0;font-size:20px}
.hq-select-group{padding:10px 12px 4px;font-size:12px;color:var(--muted);font-weight:600}
/* The selected workspace owns the immediately following compact submenu. */
.side .places{padding-bottom:8px}.side .brand{padding-bottom:16px}
.side .place,.side .mitem{margin-top:0;margin-bottom:0;min-height:32px;line-height:1.2}
.side .menu{margin:0 10px;padding:6px 0 8px;border-top:0;border-left:2px solid var(--line)}
.side .menu__gap{display:none}.side .menu__cap{padding:8px 12px 4px;font-size:10px}
.side .menu__context{display:flex;gap:7px;align-items:center;padding:3px 12px 7px;font-size:12px;font-weight:650;color:var(--text)}
.object-post-link{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;text-decoration:none}
.side .menu .mitem{margin-left:6px;margin-right:0;width:calc(100% - 6px)}

/* ───── п. 221: телефонный вид задачи и окно снизу ───── */

/* ⚠️ Переключение по КОНТЕЙНЕРУ, а не по ширине окна: список задач живёт
   и в узкой колонке (планшет вертикально, рабочая область с боковым
   меню), и кнопки там не влезают в строку задолго до «телефонной»
   ширины экрана. `.work-task-list` уже `container-type:inline-size`. */
@container (max-width: 640px){
  .task-card.work-task{grid-template-columns:minmax(0,1fr);height:auto;min-height:0;
    cursor:pointer;padding:10px 12px}
  /* В карточке кнопок нет — они в окне снизу. */
  .task-card.work-task>.work-task-list-actions{display:none}
  /* Название целиком, переносом: обрезка на телефоне скрывала суть. */
  /* ⚠️ `display:block`, а не flex: только в строчном потоке плашка
     встаёт сразу за последним словом перенесённого названия, а не
     отдельной строкой справа. */
  .task-card.work-task>.work-task-info>.work-task-title{display:block;
    white-space:normal;overflow:visible;text-overflow:clip;
    overflow-wrap:anywhere;line-height:19px}
  .task-card.work-task>.work-task-info>.work-task-title>.work-task-name{
    display:inline;overflow:visible;text-overflow:clip;white-space:normal}
  .task-card.work-task>.work-task-info>.work-task-title>.work-task-late{
    display:inline-block;vertical-align:baseline}
  .task-card.work-task>.work-task-info>.work-task-meta{flex-wrap:wrap;height:auto;
    row-gap:4px}
  .task-card.work-task>.work-task-info>.work-task-meta>.work-link{flex:0 1 auto;
    max-width:100%}
}

.task-sheet{position:fixed;inset:0;z-index:70;display:flex;align-items:flex-end;
  background:rgba(0,0,0,.45)}
.task-sheet[hidden]{display:none}
.task-sheet__panel{width:100%;max-height:86vh;overflow-y:auto;box-sizing:border-box;
  padding:8px 16px 20px;border-radius:16px 16px 0 0;background:var(--bg);
  box-shadow:0 -8px 32px rgba(0,0,0,.28);
  transform:translateY(0);transition:transform .18s ease-out}
.task-sheet__panel.is-dragging{transition:none}
/* Полоска для свайпа — не подпись, а место захвата. */
.task-sheet__grip{width:40px;height:4px;margin:4px auto 12px;border-radius:2px;
  background:var(--line)}
.task-sheet__title{margin:0 0 6px;font-size:16px;line-height:22px;font-weight:600;
  overflow-wrap:anywhere}
.task-sheet__title>.work-task-late{display:inline-block;vertical-align:baseline}
.task-sheet__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  margin-bottom:14px;font-size:13px;color:var(--text2)}
/* Текст задачи в окне на телефоне (п. 366): выделяется и копируется,
   растёт по содержанию, ширину окна не ломает. У задачи «Запросить
   отзыв» здесь лежит готовое сообщение клиенту — агент копирует его
   отсюда в диалог и отправляет сам. */
.task-sheet__textwrap{display:block;font-size:12px;color:var(--text2);margin:8px 0 2px}
.task-sheet__text{width:100%;box-sizing:border-box;margin-top:4px;padding:10px;
  border:1px solid var(--line);border-radius:10px;background:var(--page);color:var(--text);
  font:inherit;font-size:14px;line-height:1.45;resize:vertical;
  -webkit-user-select:text;user-select:text}
.task-sheet__grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.task-sheet__grid>.btn,.task-sheet__wide{display:flex;align-items:center;
  justify-content:center;gap:8px;width:100%;min-height:48px;box-sizing:border-box;
  padding:12px;font-size:15px;white-space:normal;text-align:center}
.task-sheet__wide{margin-top:10px}
.task-sheet svg{width:20px;height:20px;flex:none}
@media(prefers-reduced-motion:reduce){.task-sheet__panel{transition:none}}

/* ───── п. 191: задача актуализации в строке квартиры ───── */
.object-task{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;
  margin-top:2px;font-size:12px;line-height:16px}
.object-task-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ⚠️ На узкой ширине название переносится, а не обрезается многоточием:
   иначе от «Актуализация 2…» остаётся одно слово. Плашка «Просрочено»
   держит свою ширину. */
@media(max-width:700px){
  .object-task-title{white-space:normal;overflow:visible;text-overflow:clip;
    overflow-wrap:anywhere}
}

/* ───── п. 190: история квартиры (вид от 29.10.2026) ─────
   День — две колонки: слева дата один раз, справа события. Внутри дня
   события сгруппированы по заходу человека в карточку. */
.le-hist__day{display:grid;grid-template-columns:104px minmax(0,1fr);gap:14px;
  padding:12px 0;border-top:1px solid var(--line)}
.le-hist__day:first-child{padding-top:0;border-top:0}
.le-hist__date{display:flex;flex-direction:column;gap:1px;
  font-variant-numeric:tabular-nums}
.le-hist__date b{font-size:13px;font-weight:600;color:var(--text)}
.le-hist__date span{font-size:11px;color:var(--text2)}
.le-hist__events{min-width:0;display:flex;flex-direction:column;gap:12px}
.le-hist__group{min-width:0;display:flex;flex-direction:column;gap:6px}
.le-hist__who{font-size:12px;font-weight:600;color:var(--text2);
  font-variant-numeric:tabular-nums}

/* Событие: круглый значок 26px и тело. */
.le-ev{display:grid;grid-template-columns:26px minmax(0,1fr);gap:9px;
  align-items:start}
.le-ev__ico{width:26px;height:26px;border-radius:50%;display:flex;
  align-items:center;justify-content:center}
.le-ev__ico svg{width:14px;height:14px;fill:none;stroke:currentColor;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
/* Публикация и телефон рисуются заливкой, а не обводкой. */
.le-ev__ico--post svg,.le-ev__ico--call svg{fill:currentColor;stroke:none}
/* ⚠️ Цвета — ТОКЕНАМИ темы: тёмная тема получает их сама, второго
   набора правил не нужно (у --chip-* есть пара для каждой темы). */
.le-ev__ico--stage{background:var(--chip-blue-bg);color:var(--chip-blue-tx)}
.le-ev__ico--post{background:var(--chip-green-bg);color:var(--chip-green-tx)}
.le-ev__ico--edit{background:var(--chip-grey-bg);color:var(--chip-grey-tx)}
.le-ev__ico--task{background:var(--chip-orange-bg);color:var(--chip-orange-tx)}
.le-ev__ico--call{background:var(--chip-red-bg);color:var(--chip-red-tx)}
.le-ev__ico--comment{background:var(--chip-violet-bg);color:var(--chip-violet-tx)}

.le-ev__body{min-width:0;display:flex;flex-direction:column;gap:4px;
  padding-top:3px}
.le-ev__line{display:flex;align-items:center;flex-wrap:wrap;gap:6px;
  font-size:13px;line-height:19px;min-width:0;overflow-wrap:anywhere}
.le-ev__arrow{color:var(--text2)}

/* Этап: прежний — серой обводкой, новый — акцентной и жирно. */
.le-ev__stage{padding:1px 8px;border:1px solid var(--line);
  border-radius:999px;font-size:12px;line-height:18px;color:var(--text2)}
.le-ev__stage--new{border-color:var(--accent);color:var(--text);font-weight:600}

/* Правка: плашки «Поле: было → стало» и ссылка «ещё N». */
.le-ev__chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.le-ev__chip{max-width:100%;padding:2px 8px;border-radius:var(--r-s);
  background:var(--chip-grey-bg);color:var(--chip-grey-tx);
  font-size:12px;line-height:18px;overflow-wrap:anywhere}
.le-ev__chip b{font-weight:600;color:var(--text)}
.le-ev__more{padding:2px 8px;border:0;border-radius:var(--r-s);
  background:transparent;color:var(--accent);font:inherit;font-size:12px;
  line-height:18px;cursor:pointer;text-decoration:underline}
.le-ev__more:hover{background:var(--hover)}

/* Задача: плашка итога и полный текст серым, одной строкой. */
.le-ev__state{padding:1px 8px;border-radius:999px;font-size:11px;
  line-height:18px;white-space:nowrap}
.le-ev__state--ok{background:var(--chip-green-bg);color:var(--chip-green-tx)}
.le-ev__state--grey{background:var(--chip-grey-bg);color:var(--chip-grey-tx)}
.le-ev__state--bad{background:var(--chip-red-bg);color:var(--chip-red-tx)}
.le-ev__full{display:block;max-width:100%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:17px;
  color:var(--text2)}

/* Комментарий — текст в серой плашке. */
.le-ev__quote{padding:8px 10px;border-radius:var(--r-s);
  background:var(--chip-grey-bg);color:var(--text);
  font-size:13px;line-height:18px;overflow-wrap:anywhere;white-space:pre-wrap}

/* Граница переноса из amoCRM — между днями, на всю ширину. */
.le-hist__note{margin:10px 0;padding:8px 10px;border-radius:var(--r-s);
  background:color-mix(in srgb,var(--line) 40%,var(--bg));
  font-size:12px;line-height:17px;color:var(--text2)}
.le-hist__more{margin-top:12px}

/* ⚠️ Телефон: колонки даты нет — дата строкой НАД событиями дня, иначе
   на 390 точках она съедала треть ширины и плашки резались. */
@container (max-width: 640px){
  .le-hist__day{grid-template-columns:minmax(0,1fr);gap:8px}
  .le-hist__date{flex-direction:row;align-items:baseline;gap:6px}
  .le-ev{grid-template-columns:22px minmax(0,1fr);gap:8px}
  .le-ev__ico{width:22px;height:22px}
  .le-ev__ico svg{width:12px;height:12px}
}
@media(max-width:640px){
  .le-hist__day{grid-template-columns:minmax(0,1fr);gap:8px}
  .le-hist__date{flex-direction:row;align-items:baseline;gap:6px}
  .le-ev{grid-template-columns:22px minmax(0,1fr);gap:8px}
  .le-ev__ico{width:22px;height:22px}
  .le-ev__ico svg{width:12px;height:12px}
}

/* ───── п. 227: кнопки-подсказки «Условий» ───── */
.edconds{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;min-width:0}
.edcond{flex:0 0 auto;padding:5px 10px;border:1px solid var(--line);
  border-radius:var(--r-s);background:var(--bg);color:var(--text);
  font-size:12px;line-height:16px;cursor:pointer;white-space:nowrap}
.edcond:hover{border-color:var(--text2)}
/* ⚠️ п. 231: нажатая кнопка — как «Торг» Да/Нет (`.edone--on`), теми же
   токенами темы: `--text` на `--bg`. Прежде была синяя (`--chip-blue-*`)
   и выбивалась из окна; в тёмной теме токены переопределены сами. */
.edcond--on{background:var(--text);color:var(--bg);border-color:var(--text);
  font-weight:600}
/* ⚠️ Кнопки не вылезают за блок: перенос разрешён, ширину не задаём. */
@media(max-width:700px){
  .edconds{gap:5px}
  .edcond{padding:5px 8px;font-size:12px}
}

/* Пометка «переслано» в сообщении (п. 294, Д138).
   ⚠️ Своей строкой над текстом и мельче его: это не часть сообщения
   клиента, а подпись о происхождении. */
.work-message-forward{font-size:12px;opacity:.7;margin-bottom:4px;
  display:flex;align-items:center;gap:4px}
.work-message-forward::before{content:"↪";font-size:13px}

/* Шарик ТИПА задачи (п. 353а, 06.11.2026).
   ⚠️ Цвет приходит ЗНАЧЕНИЕМ из справочника `static/crm_task_colors.js`
   (ровно hex из выгрузки amoCRM), а не токеном темы: токен пришлось бы
   задавать дважды, и он разошёлся бы с выгрузкой. Поэтому в обеих темах
   оттенок один и тот же — так решил владелец.
   ⚠️ Не граница карточки: границу красит СРОК
   (`task-card--overdue/today/renewal`), и два смысла в одном месте
   читались бы как один.
   ⚠️ Размер — 1em, и это МАКСИМУМ, при котором строка не растёт.
   Подобран замером, а не на глаз: на телефоне (390 px) строка 65 px
   держится до 1em (шарик 13 px) и прибавляет 0,3 px уже на 1.1em, а на
   компьютере не растёт и до 1.2em — узкое место телефон. Заглавная буква
   заголовка при 13 px занимает ~9,4 px, так что шарик крупнее буквы и
   по-прежнему внутри её line-box.
   Проверено на компьютере и телефоне, в светлой и тёмной теме. */
.task-kind-dot{display:inline-block;flex:0 0 auto;
  width:1em;height:1em;min-width:1em;
  margin:0 .4em 0 0;border-radius:50%;
  background:#919191;vertical-align:-.12em;pointer-events:none}
