        /* ── 1.1 Экранно-локальные токены ── */
        #screen-analytics{ --ops-heat:#14B8A6; --orange:#FB923C; --success-text:#047857; --warn-text:#B45309; --danger-text:#BE123C; }   /* светлый; в dark → #FDBA74 (см. ниже) */
        [data-theme="dark"] #screen-analytics{ --ops-heat:#2DD4BF; --orange:#FDBA74; --success-text:#6EE7B7; --warn-text:#FCD34D; --danger-text:#FCA5A5; }   /* НЕ #FB923C: в dark = --p4 (Практика 4), сегмент «сверх» слился бы с цветом практики (аудит ⚪D); #FDBA74 светлее, отличим */
        /* 2026-06-08 — сегменты-бары приведены к палитре забетонированной operative (методолог: «в analytics цвета темнее»): сплошные базовые токены --success/--warn/--danger, как op-funnel-seg / op-prac-zone-bar. violet→--purple, blue→--accent (нет аналога в operative — яркие базовые эквиваленты того же тона). Тема-реактивны: тянут light/dark значения базовых токенов, как operative. Было: затемнённые «700→600» градиенты под фикс-белый текст. */
        #screen-analytics{ --seg-emerald:var(--success); --seg-amber:var(--warn); --seg-rose:var(--danger); --seg-violet:var(--purple); --seg-blue:var(--accent); }

        /* ── 1.2 Базовая раскладка экрана и шапки модулей ── */
        #screen-analytics{ flex-direction:column; gap:18px; }
        #screen-analytics .module{ background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
          padding:18px 20px;box-shadow:var(--shadow-sm); }
        #screen-analytics .mod-head{ display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-bottom:16px; }
        #screen-analytics .mod-title{ font-size:16px;font-weight:800;letter-spacing:-.01em;color:var(--text); }
        #screen-analytics .mod-sub{ font-size:11.5px;color:var(--muted);margin-top:2px; }
        #screen-analytics .mod-head-ctrls{ display:flex;align-items:center;gap:14px;flex-wrap:wrap;row-gap:10px; }
        #screen-analytics .mod-head-right{ display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto; }
        #screen-analytics .mod-head .mod-head-l{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }

        /* ── 1.3 Чипы периода/разреза и тумблер ── */
        #screen-analytics .chip-set{ display:flex;gap:6px;flex-wrap:wrap; }
        #screen-analytics .an-chip{ font-size:12px;font-weight:700;padding:7px 13px;border-radius:999px;border:1px solid var(--border);
          background:var(--surface);color:var(--text-2);cursor:pointer;transition:.15s;font-family:inherit; }
        #screen-analytics .an-chip:hover{ border-color:var(--accent-soft-2); }
        #screen-analytics .an-chip.is-on{ background:var(--accent);border-color:var(--accent);color:#fff; }
        #screen-analytics .an-chip.chip-sm{ font-size:11.5px;padding:6px 11px; }
        #screen-analytics .view-seg{ display:inline-flex;background:var(--surface-3);border-radius:999px;padding:3px;gap:2px; }
        #screen-analytics .view-seg button{ border:none;background:none;font-family:inherit;font-size:12px;font-weight:700;color:var(--muted);
          padding:6px 13px;border-radius:999px;cursor:pointer;transition:.15s; }
        #screen-analytics .view-seg button.is-on{ background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm); }
        #screen-analytics .filters-stack{ display:flex;flex-direction:column;gap:9px;padding:12px 14px;background:var(--surface-2);
          border:1px solid var(--border-2);border-radius:12px;margin-bottom:14px; }
        #screen-analytics .filt-row{ display:flex;align-items:center;gap:12px;flex-wrap:wrap; }
        #screen-analytics .filt-lbl{ font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);min-width:96px; }

        /* ── 1.4 Сетка KPI (M1) ── */
        #screen-analytics .an-kpi-grid{ display:grid;grid-template-columns:repeat(5,1fr);gap:10px; }
        #screen-analytics .an-kpi-grid .kpi-card{ padding:13px 14px;gap:5px;display:flex;flex-direction:column;min-height:0; }
        #screen-analytics .an-kpi-grid .kpi-value{ font-size:20px;font-weight:800;letter-spacing:-.03em;line-height:1.05;white-space:nowrap;font-variant-numeric:tabular-nums; }
        #screen-analytics .an-kpi-grid .kpi-value.--accent{ color:var(--accent); }
        #screen-analytics .an-kpi-grid .kpi-value.--success{ color:var(--success-text); }
        #screen-analytics .an-kpi-grid .kpi-value.--danger{ color:var(--danger-text); }
        #screen-analytics .an-kpi-grid .kpi-value.--warn{ color:var(--warn-text); }
        #screen-analytics .an-kpi-grid .kpi-label{ font-size:10.5px;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;font-weight:700; }
        #screen-analytics .an-kpi-grid .kpi-hint{ font-size:10.5px;color:var(--muted);line-height:1.35; }

        /* ═════ индикаторы загрузки — 1:1 с Оперативкой (op-skel/op-loading) ═════ */
        @keyframes anShimmer{ 0%{background-position:-180px 0} 100%{background-position:calc(180px + 100%) 0} }
        @keyframes anSpin{ to{ transform:rotate(360deg) } }
        #screen-analytics .an-skel{
          display:inline-block;height:1.05em;min-width:62px;border-radius:6px;vertical-align:middle;
          background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);
          background-size:180px 100%;animation:anShimmer 1.2s ease-in-out infinite;
        }
        #screen-analytics .an-loading{
          display:flex;align-items:center;justify-content:center;gap:10px;
          padding:30px 16px;color:var(--muted);font-size:13px;font-weight:600;
        }
        #screen-analytics .an-loading::before{
          content:"";width:16px;height:16px;border-radius:50%;flex-shrink:0;
          border:2px solid var(--border-2);border-top-color:var(--accent);animation:anSpin .7s linear infinite;
        }

        /* ── 1.5 Мастер-таблица ── */
        #screen-analytics .tbl-wrap{ overflow-x:auto;border:1px solid var(--border);border-radius:14px; }
        #screen-analytics table.mt{ border-collapse:collapse;width:100%;font-size:11px;table-layout:fixed; }
        /* c-time — колонки со временем: «95 ч 14 мин» шире прежних «95,2» и на 6.3%
           наезжало на соседнюю колонку. Ширину добираем у имени клиента (оно и так с многоточием). */
        #screen-analytics .mt col.c-name{ width:200px } #screen-analytics .mt col.c-num{ width:6.3% }
        #screen-analytics .mt col.c-time{ width:10.1% } #screen-analytics .mt col.c-mon{ width:6.3% }
        /* c-vat — 14-я колонка (НДС 5%) втиснулась в ту же ширину таблицы и сжала колонки времени
           с 91px до 84px: «255 ч 00 мин» перестало влезать и обрезалось многоточием (на проде влезало).
           Числа НДС короткие (в данных максимум 269 тыс ₽), поэтому колонке хватает узкой доли,
           а высвободившееся возвращаем времени: c-time 9.2%→10.1%, c-mon 6.6%→6.3%. Замер шириной
           текста (Range): «255 ч 00 мин» требует 77px — колонка времени должна быть не уже 91px. */
        #screen-analytics .mt col.c-vat{ width:5.4% }
        #screen-analytics .mt .c-name{ min-width:200px }
        #screen-analytics .mt thead th{ background:var(--surface-2);text-align:right;padding:8px 7px;font-size:8.7px;font-weight:800;
          text-transform:uppercase;letter-spacing:.01em;color:var(--muted);border-bottom:1px solid var(--border);line-height:1.15; }
        #screen-analytics .mt thead th.left{ text-align:left }
        #screen-analytics .mt thead th .u{ display:block;margin-top:2px;font-size:8px;font-weight:700;color:var(--muted);text-transform:none;letter-spacing:0; }
        /* Сортировка по клику на заголовок: курсор + стрелка активного столбца (::after переживает смену текста) */
        #screen-analytics .mt thead th[data-sort]{ cursor:pointer; user-select:none; }
        #screen-analytics .mt thead th[data-sort]:hover{ color:var(--accent); }
        #screen-analytics .mt thead th.sort-asc::after{ content:" ↑"; color:var(--accent); font-weight:800; }
        #screen-analytics .mt thead th.sort-desc::after{ content:" ↓"; color:var(--accent); font-weight:800; }
        #screen-analytics .mt tbody td{ padding:7px 7px;text-align:right;border-bottom:1px solid var(--border-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;color:var(--text-2); }
        #screen-analytics .mt tbody td.left{ text-align:left;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis; }
        #screen-analytics .mt tbody tr.client-row{ cursor:pointer }
        #screen-analytics .mt tbody tr.client-row:hover{ background:var(--surface-2) }
        #screen-analytics .mt tbody tr.proj-row td{ background:var(--surface-2);color:var(--text-2) }
        #screen-analytics .mt tbody tr.proj-row td.left{ padding-left:24px;font-weight:600 }
        #screen-analytics .dev{ font-weight:800 } #screen-analytics .dev.--danger{ color:var(--danger-text) }
        #screen-analytics .dev.--warn{ color:var(--warn-text) } #screen-analytics .dev.--success{ color:var(--success-text) }
        #screen-analytics .tag-type{ font-size:8.5px;font-weight:700;padding:1px 5px;border-radius:4px;background:var(--surface-3);color:var(--muted);margin-left:4px; }
        #screen-analytics .tag-st{ font-size:8.5px;font-weight:800;padding:1px 6px;border-radius:4px;letter-spacing:.02em;margin-left:6px;vertical-align:middle; }
        #screen-analytics .tag-st.--active{ background:var(--success-soft);color:var(--success-text) }
        #screen-analytics .tag-st.--closed{ background:var(--danger-soft);color:var(--danger-text) }
        #screen-analytics .tag-st.--new{ background:var(--accent-soft);color:var(--accent) }
        #screen-analytics .expand-ic{ display:inline-block;width:12px;color:var(--muted) }
        #screen-analytics .pct{ font-weight:700;color:var(--text-2) }
        #screen-analytics .tbl-foot{ display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 4px 2px;flex-wrap:wrap; }
        #screen-analytics .btn-ghost{ font-size:12px;font-weight:700;padding:8px 14px;border-radius:9px;border:1px solid var(--border);
          background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit;transition:.15s; }
        #screen-analytics .btn-ghost:hover{ border-color:var(--accent-soft-2);color:var(--accent) }
        #screen-analytics .btn-ghost.is-hidden-default{ display:none }
        #screen-analytics .tbl-count{ font-size:12px;color:var(--muted);text-align:center;margin-top:8px }

        /* ── 1.6 Карточки-плитки M2 ── */
        #screen-analytics .pt-grid{ display:grid;grid-template-columns:repeat(3,1fr);gap:12px; }
        #screen-analytics .pt-card{ background:var(--surface-2);border:1px solid var(--border-2);border-radius:14px;padding:15px 16px;display:flex;flex-direction:column;gap:11px; }
        #screen-analytics .pt-head{ display:flex;justify-content:space-between;align-items:flex-start;gap:8px; }
        #screen-analytics .pt-name{ font-size:14px;font-weight:800;color:var(--text); }
        #screen-analytics .pt-sub{ font-size:11px;color:var(--muted);margin-top:2px; }
        #screen-analytics .pt-st{ font-size:9.5px;font-weight:800;padding:3px 8px;border-radius:999px;white-space:nowrap; }
        #screen-analytics .pt-st.--active{ background:var(--success-soft);color:var(--success-text) }
        #screen-analytics .pt-st.--closed{ background:var(--danger-soft);color:var(--danger-text) }
        #screen-analytics .pt-st.--new{ background:var(--accent-soft);color:var(--accent) }
        #screen-analytics .pt-metric{ display:flex;align-items:baseline;gap:8px; }
        #screen-analytics .pt-metric .big{ font-size:23px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums; }
        #screen-analytics .pt-metric .big.--neg{ color:var(--danger-text) } #screen-analytics .pt-metric .big.--pos{ color:var(--success-text) }
        #screen-analytics .pt-metric .rl{ font-size:12px;font-weight:700;color:var(--muted) }
        #screen-analytics .pt-meta{ display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:11.5px; }
        #screen-analytics .pt-meta .row{ display:flex;justify-content:space-between;gap:6px; }
        #screen-analytics .pt-meta .k{ color:var(--muted) } #screen-analytics .pt-meta .v2{ font-weight:700;color:var(--text-2) }
        #screen-analytics .pt-prog-lbl{ display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-weight:700; }
        #screen-analytics .pt-track{ height:8px;border-radius:6px;background:var(--surface-3);overflow:hidden;margin-top:4px; }
        #screen-analytics .pt-fill{ height:100%;border-radius:6px; }
        #screen-analytics .pt-foot{ display:flex;gap:8px;margin-top:2px; }
        #screen-analytics .pt-foot .btn-ghost{ font-size:11.5px;padding:6px 11px; }
        #screen-analytics .pt-foot .btn-ai{ padding:6px 12px;font-size:11.5px; }

        /* ── 1.7 Диагностика (compare/split/waterfall/donut) ── */
        #screen-analytics .sub-title{ font-size:13px;font-weight:800;color:var(--text-2);margin:4px 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap; }
        #screen-analytics .sub-title .tag{ font-size:10px;font-weight:700;color:var(--muted);background:var(--surface-3);border-radius:6px;padding:2px 7px;letter-spacing:.02em; }
        #screen-analytics .diag-divider{ height:1px;background:var(--border-2);margin:20px 0; }
        #screen-analytics .cmp-list{ display:flex;flex-direction:column;gap:9px; }
        #screen-analytics .cmp-row{ display:grid;grid-template-columns:130px 1fr 92px;align-items:center;gap:12px; }
        #screen-analytics .cmp-name{ font-size:12.5px;font-weight:700;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
        #screen-analytics .cmp-track{ height:24px;background:var(--surface-3);border-radius:7px;overflow:hidden;display:flex; }
        #screen-analytics .cmp-seg{ height:100%;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25); }
        #screen-analytics .cmp-seg.--unpaid{ background:var(--seg-violet) }
        #screen-analytics .cmp-seg.--over{ background:var(--seg-amber) }
        #screen-analytics .cmp-seg.--closed{ background:var(--seg-rose) }
        /* Task 7 §6.2.1 палитра: новые классы для lossCatParts-сегментов */
        #screen-analytics .cmp-seg.--purple{ background:var(--seg-violet) }
        #screen-analytics .cmp-seg.--orange{ background:var(--seg-amber) }
        #screen-analytics .cmp-seg.--danger{ background:var(--seg-rose) }
        #screen-analytics .cmp-legend{ display:flex;gap:16px;margin-top:12px;font-size:11px;color:var(--muted);flex-wrap:wrap; }
        #screen-analytics .cmp-legend i{ width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:middle; }
        #screen-analytics .cmp-val{ font-size:13px;font-weight:800;text-align:right; }
        #screen-analytics .cmp-val.--danger{ color:var(--danger-text) } #screen-analytics .cmp-val.--warn{ color:var(--warn-text) } #screen-analytics .cmp-val.--success{ color:var(--success-text) }
        #screen-analytics .split-card{ background:linear-gradient(135deg,var(--danger-soft),var(--surface));border:1px solid var(--danger-soft-2);border-radius:14px;padding:14px 16px; }
        #screen-analytics .split-lbl{ font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted); }
        #screen-analytics .split-bar{ display:flex;height:40px;border-radius:10px;overflow:hidden;margin:10px 0;box-shadow:inset 0 0 0 1px var(--danger-soft-2); }
        #screen-analytics .split-seg{ display:flex;align-items:center;justify-content:center;font-weight:900;color:#fff;font-size:13px;letter-spacing:-.01em;white-space:nowrap; }
        #screen-analytics .split-seg.--paid{ background:var(--seg-emerald) }
        #screen-analytics .split-seg.--lost{ background:var(--seg-rose) }
        #screen-analytics .split-legs{ display:flex;justify-content:space-between;gap:14px;margin-bottom:10px; }
        #screen-analytics .split-leg{ display:flex;flex-direction:column;gap:2px; }
        #screen-analytics .split-leg .amt{ font-size:17px;font-weight:900;letter-spacing:-.02em;line-height:1; }
        #screen-analytics .split-leg .amt.--paid{ color:var(--success-text) } #screen-analytics .split-leg .amt.--lost{ color:var(--danger-text) }
        #screen-analytics .split-leg .cap{ font-size:11px;color:var(--muted);font-weight:600; }
        #screen-analytics .split-meta{ display:flex;gap:8px;flex-wrap:wrap;font-size:11px; }
        #screen-analytics .split-meta .pill{ background:var(--surface);border:1px solid var(--danger-soft-2);border-radius:999px;padding:4px 10px;font-weight:700;color:var(--text-2); }
        #screen-analytics .split-meta .pill b{ color:var(--danger-text);font-weight:900; }
        #screen-analytics .wf-hero{ display:grid;grid-template-columns:1.5fr .7fr;gap:20px;align-items:center; }
        #screen-analytics .wf-svg,#screen-analytics .donut-svg{ width:100%;height:auto;display:block; }
        #screen-analytics .donut-center-v{ font-size:16px;font-weight:900;fill:var(--danger); }
        #screen-analytics .donut-center-l{ font-size:8px;fill:var(--muted);font-weight:700; }
        #screen-analytics .dlegend{ display:flex;flex-direction:column;gap:7px;margin-top:8px; }
        #screen-analytics .dleg-row{ display:flex;align-items:center;gap:8px;font-size:11.5px; }
        #screen-analytics .dleg-row i{ width:10px;height:10px;border-radius:3px;flex-shrink:0; }
        /* C §II.12 — второй канал loss-категорий (различимы в ч/б, дальтоники): форма + цвет. debt=круг · over=треугольник · closed=квадрат. */
        #screen-analytics .cmp-legend i.--debt,   #screen-analytics .dleg-row i.--debt{ border-radius:50%; }
        #screen-analytics .cmp-legend i.--over,   #screen-analytics .dleg-row i.--over{ border-radius:0;clip-path:polygon(50% 0,100% 100%,0 100%); }
        #screen-analytics .cmp-legend i.--closed, #screen-analytics .dleg-row i.--closed{ border-radius:2px; }
        #screen-analytics .dleg-name{ color:var(--text-2);font-weight:600;flex:1; }
        #screen-analytics .dleg-val{ font-weight:800;color:var(--text); }
        #screen-analytics .dleg-pct{ color:var(--muted);min-width:32px;text-align:right; }

        /* ── 1.9 Адаптив + модалка агента ── */
        @media(max-width:1000px){
          #screen-analytics .an-kpi-grid{ grid-template-columns:repeat(3,1fr) }
          #screen-analytics .wf-hero{ grid-template-columns:1fr }
          #screen-analytics .pt-grid{ grid-template-columns:repeat(2,1fr) }
        }
        /* На планшете (1001–1200px) пять плиток в ряд ужимались до ~135px, и значения так же
           вылезали за карточку («417 ч 29 мин» на 47px). Точка перелома на три колонки поднята
           с 1000 до 1200px — ровно для сетки KPI, соседние блоки (wf-hero, pt-grid) не трогаем. */
        @media(max-width:1200px){
          #screen-analytics .an-kpi-grid{ grid-template-columns:repeat(3,1fr) }
        }
        /* На телефоне три плитки в ряд дают 129px — денежные значения («−2,19 млн ₽»,
           на проде «14,28 млн ₽») не влезали и наезжали на соседей: nowrap + overflow:visible.
           Две колонки и 18px — та же схема, что у плиток кассы ниже (§5.7 спеки Д1). */
        @media(max-width:480px){
          #screen-analytics .an-kpi-grid{ grid-template-columns:repeat(2,1fr) }
          #screen-analytics .an-kpi-grid .kpi-value{ font-size:18px }
        }
        /* Агент: своя модалка убрана — «✦ Обсудить» открывают выезжающую панель чата (agent-chat.js). */

        /* ── M-Cash (Task 10) ── */
        #screen-analytics .cash-body{ display:flex;flex-direction:column;gap:20px; }
        #screen-analytics .cash-kpi{ display:grid;grid-template-columns:repeat(3,1fr);gap:10px; }
        #screen-analytics .cash-kpi .kpi-card{ padding:13px 14px;gap:5px;display:flex;flex-direction:column; }
        #screen-analytics .cash-kpi .kpi-value{ font-size:20px;font-weight:800;letter-spacing:-.03em;line-height:1.05;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums; }
        #screen-analytics .cash-kpi .kpi-value.--danger{ color:var(--danger-text); }
        #screen-analytics .cash-kpi .kpi-label{ font-size:10.5px;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;font-weight:700; }
        #screen-analytics .cash-kpi .kpi-hint{ font-size:10.5px;color:var(--muted);line-height:1.35; }
        #screen-analytics .cash-alloc, #screen-analytics .cash-aging{ background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:14px 16px; }
        #screen-analytics .cash-alloc-lbl, #screen-analytics .cash-aging-lbl{ font-size:11px;font-weight:700;color:var(--text-2);margin-bottom:8px; }
        #screen-analytics .cash-alloc-bar, #screen-analytics .cash-aging-bar{ display:flex;height:28px;border-radius:6px;overflow:hidden;gap:1px; }
        #screen-analytics .cash-seg{ display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.25);min-width:24px; }
        #screen-analytics .cash-seg.--orange{ background:var(--seg-amber); }
        #screen-analytics .cash-seg.--paid{ background:var(--seg-emerald); }
        #screen-analytics .cash-seg.--accent{ background:var(--seg-blue); }
        #screen-analytics .cash-seg.--success{ background:var(--seg-emerald); }
        #screen-analytics .cash-seg.--danger{ background:var(--seg-violet); }
        #screen-analytics .cash-seg.--crit{ background:var(--seg-rose); }
        #screen-analytics .cash-alloc-legend, #screen-analytics .cash-aging-legend{ display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11px;color:var(--text-2); }
        #screen-analytics .cash-alloc-legend span, #screen-analytics .cash-aging-legend span{ display:flex;align-items:center;gap:5px; }
        #screen-analytics .dot{ display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0; }
        /* W2-разрезы: ряд-селектор сущностей под заголовком Водопада / практик в Cash */
        #screen-analytics #an-wf-entity,
        #screen-analytics #an-cash-entity{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:2px 0 16px; }
        #screen-analytics #an-wf-entity[hidden],
        #screen-analytics #an-cash-entity[hidden]{ display:none; }
        #screen-analytics #an-wf-entity .wf-entity-lbl,
        #screen-analytics #an-cash-entity .wf-entity-lbl{ font-size:11px; font-weight:700; color:var(--text-2); }
        #screen-analytics #an-cash-bypractice .cash-seg.--dim{ opacity:.32; }
        /* Расшифровка кассы по привязке (Д1 §4.3) — 4 кликабельных слагаемых «по привязке» */
        #screen-analytics .cash-buckets-row{ display:flex;gap:10px;flex-wrap:wrap;margin-top:2px; }
        #screen-analytics .cash-bucket{ display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font-size:11.5px;color:var(--text-2);cursor:pointer;transition:box-shadow .15s,border-color .15s; }
        #screen-analytics .cash-bucket b{ color:var(--text);font-weight:800;font-variant-numeric:tabular-nums; }
        #screen-analytics .cash-bucket:hover{ box-shadow:0 0 0 2px var(--accent);border-color:var(--accent); }
        #screen-analytics .cash-seg.--muted{ background:var(--muted); }
        #screen-analytics .cash-seg.--grey{ background:var(--text-2); }
        /* Мобильная касса (Д1 §5.7:184): крупные числа «14,28 млн ₽» не влезают в 3 колонки */
        @media(max-width:1000px){
          #screen-analytics .cash-kpi{ grid-template-columns:repeat(2,1fr); }
        }
        @media(max-width:480px){
          #screen-analytics .cash-kpi{ grid-template-columns:1fr; }
          #screen-analytics .cash-kpi .kpi-value{ font-size:18px; }
        }
        #screen-analytics .dot.--orange{ background:var(--orange); }
        #screen-analytics .dot.--paid{ background:var(--success); }
        #screen-analytics .dot.--accent{ background:var(--accent); }
        #screen-analytics .dot.--success{ background:var(--success); }
        #screen-analytics .dot.--danger{ background:var(--purple); }
        #screen-analytics .dot.--crit{ background:var(--danger); }
        #screen-analytics .cash-empty{ font-size:12px;color:var(--muted);padding:12px 0;text-align:center; }
        #screen-analytics .deb-ovd{ display:inline-block;font-weight:800;color:var(--danger-text);background:var(--danger-soft);border:1px solid var(--danger-soft-2);border-radius:5px;padding:1px 5px; }
        #screen-analytics .proj-dates{ font-size:0.85em;color:var(--text-2);margin-top:4px;display:flex;gap:6px;flex-wrap:wrap; }

        /* ───── «Свой период» — поля дат ИНЛАЙН в строке фильтра (паттерн iKomek, без выпадашки) ───── */
        #screen-analytics .an-rp{ display:inline-flex; align-items:center; gap:7px; margin-left:2px; }
        #screen-analytics .an-rp[hidden]{ display:none; }
        #screen-analytics .an-rp__in{ background:var(--surface); border:1px solid var(--border); border-radius:8px;
          padding:5px 9px; color:var(--text); font-family:inherit; font-size:11.5px; font-weight:600; cursor:pointer; }
        #screen-analytics .an-rp__in:focus{ outline:none; border-color:var(--accent); }
        #screen-analytics .an-rp__dash{ color:var(--muted); font-size:12px; }

        /* Иконка-ссылка на сделку в Битриксе рядом с названием клиента/проекта */
        #screen-analytics .bx-link{ display:inline-flex; align-items:center; color:var(--muted); vertical-align:middle;
          margin-right:6px; flex:0 0 auto; opacity:.7; transition:color .15s, opacity .15s; }
        #screen-analytics .bx-link:hover{ color:var(--accent); opacity:1; }

        /* §II.12 канон · фокус-обводка только с клавиатуры (:focus-visible), не по клику мышью.
           Снимает анти-паттерн стандарта «focus-ring после клика мышью на табах/кнопках»
           для всех кнопок и чипов вкладки Аналитика (вкл. записки W3 «Показать ещё», «Обсудить»). */
        #screen-analytics button:focus{ outline:none; }
        #screen-analytics button:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:inherit; }

        /* ════════ W3 · Аналитические записки (A проза + B наблюдения) ════════
           Реализация мокапа _снапшоты/mockup-w3-zapiski-A-B.html (Вариант 1, позитив первым).
           A «Записка периода» — под M1·KPI; B «Наблюдения за период» — подмодуль M2. */
        #screen-analytics .btn-ai.btn-ai-sm{ padding:6px 11px;font-size:11.5px; }
        /* A · проза по сводным KPI (сплошной текст + инлайн-акценты, без списков) */
        #screen-analytics .an-note{ margin-top:16px;background:var(--surface-2);border:1px solid var(--border-2);
          border-left:3px solid var(--accent);border-radius:14px;padding:16px 18px; }
        #screen-analytics .an-note-head{ display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:11px;flex-wrap:wrap; }
        #screen-analytics .an-note-title{ font-size:13.5px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:8px; }
        #screen-analytics .an-note-title .ic{ color:var(--accent); }
        #screen-analytics .an-note-lead{ font-size:13px;line-height:1.65;color:var(--text-2); }
        #screen-analytics .an-note-lead b{ color:var(--text);font-weight:800; }
        #screen-analytics .an-note-lead b.pos{ color:var(--success-text);font-weight:800; }
        #screen-analytics .an-note-lead b.neg{ color:var(--danger-text);font-weight:800; }
        #screen-analytics .an-note-foot{ display:flex;justify-content:flex-end;margin-top:13px; }
        /* B · 2-колоночный список наблюдений (подмодуль мастер-таблицы) · кнопка «Обсудить» в шапке колонки, раскрытие 5+3 по центру */
        #screen-analytics .an-submodule{ margin-top:18px;padding-top:18px;border-top:1px dashed var(--border); }
        #screen-analytics .an-obs-grid{ display:grid;grid-template-columns:1fr 1fr;gap:14px; }
        #screen-analytics .an-obs-col{ background:var(--surface-2);border:1px solid var(--border-2);border-radius:14px;padding:14px 16px; }
        #screen-analytics .an-obs-col-head{ display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:3px; }
        #screen-analytics .an-obs-col-title{ font-size:12.5px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:8px; }
        #screen-analytics .an-obs-col.--neg .an-obs-col-title{ color:var(--danger-text); }
        #screen-analytics .an-obs-col.--pos .an-obs-col-title{ color:var(--success-text); }
        #screen-analytics .an-obs-col-sub{ font-size:10.5px;color:var(--muted);margin-bottom:12px; }
        #screen-analytics .an-obs-list{ display:flex;flex-direction:column;gap:11px; }
        #screen-analytics .an-obs-item{ display:flex;align-items:flex-start;gap:10px; }
        #screen-analytics .an-obs-dot{ flex-shrink:0;width:7px;height:7px;border-radius:50%;margin-top:6px; }
        #screen-analytics .an-obs-col.--neg .an-obs-dot{ background:var(--danger); }
        #screen-analytics .an-obs-col.--pos .an-obs-dot{ background:var(--success); }
        #screen-analytics .an-obs-item-t{ font-size:12.5px;font-weight:700;color:var(--text);line-height:1.35;margin-bottom:2px; }
        #screen-analytics .an-obs-item-d{ font-size:11px;color:var(--muted);line-height:1.45; }
        #screen-analytics .an-obs-foot{ display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px; }
        @media(max-width:720px){ #screen-analytics .an-obs-grid{ grid-template-columns:1fr; } }

        /* ── Модалки детализации (B1: касса, B4: контракт) ── */
        .modal-overlay{ display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.45);align-items:center;justify-content:center; }
        .modal-overlay.is-open{ display:flex; }
        .modal-card{ background:var(--surface);border-radius:12px;max-height:90vh;max-width:820px;width:96vw;display:flex;flex-direction:column;overflow:hidden; }
        .modal-head{ display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0; }
        .modal-title{ font-weight:600;flex:1; }
        .modal-total{ font-size:1.1em;font-weight:700;color:var(--accent); }
        .modal-close{ background:none;border:none;cursor:pointer;font-size:1.2em; }
        .modal-body{ overflow-y:auto;padding:16px 20px;flex:1; }
        .modal-body table thead th{ position:sticky;top:0;background:var(--surface); }
        .show-more-btn{ margin:12px auto;display:block;padding:6px 16px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:none;font-family:inherit; }
        .deb-ovd{ color:var(--danger-text);font-weight:700; }
        .ct-kpi-row{ display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px; }
        .ct-kpi-tile{ background:var(--surface-2,#f5f5f7);border-radius:8px;padding:10px 14px;min-width:100px; }
        .ct-kpi-val{ font-size:1.1em;font-weight:700; }
        .ct-kpi-lbl{ font-size:.75em;color:var(--muted);margin-top:2px; }
        .ct-section-head{ font-size:.85em;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 8px; }
        .ct-bars-wrap{ display:flex;gap:2px;overflow-x:auto;align-items:flex-end;height:72px;padding-bottom:4px; }
        .ct-bar-col{ display:flex;flex-direction:column;align-items:center;min-width:24px; }
        .ct-bar{ width:16px;background:var(--accent,#3b82f6);border-radius:3px 3px 0 0;transition:height .2s; }
        .ct-bar--wknd{ background:var(--border,#e5e7eb); }
        .ct-bar-lbl{ font-size:.6em;color:var(--muted);margin-top:2px;white-space:nowrap; }
        .crm-task{ opacity:.5; }
        .modal-sub{ font-size:.82em;color:var(--muted);margin-top:2px; }
        .bx-open-btn{ font-size:.82em;color:var(--accent);text-decoration:none;margin-left:auto;white-space:nowrap; }

        /* ════════ Модалки детализации B1–B4 · 1:1 с прототипом
           (2026-06-22-analytics-postdemo-modals-mockup.html). Всё scoped под .modal-card,
           чтобы не задеть остальной экран и панель чата. Токены — общие дашбордные. ════════ */
        .modal-card{ max-width:920px; }
        /* шапка */
        .modal-card .modal-hd{ display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
          padding:20px 24px 14px;border-bottom:1px solid var(--border-2);flex-shrink:0; }
        .modal-card .modal-eyebrow{ font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 4px; }
        .modal-card .modal-title{ font-size:18px;font-weight:800;margin:0;letter-spacing:-.01em;color:var(--text);flex:none; }
        .modal-card .modal-amt{ font-size:18px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap; }
        .modal-card .modal-amt small{ display:block;font-size:10.5px;font-weight:700;color:var(--muted);text-align:right;text-transform:none;letter-spacing:0; }
        .modal-card .x{ width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);
          font-size:15px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;padding:0;font-family:inherit; }
        /* тело и низ */
        .modal-card .modal-bd{ padding:16px 24px 22px;overflow-y:auto;flex:1 1 auto;min-height:0; }
        .modal-card .modal-ft{ padding:12px 24px;border-top:1px solid var(--border-2);display:flex;justify-content:space-between;
          align-items:center;gap:12px;font-size:11.5px;color:var(--muted);flex-shrink:0; }
        .modal-card .btn-link{ font-size:11.5px;font-weight:700;color:var(--accent-ink);text-decoration:none;
          border:1px solid var(--accent-soft-2);background:var(--accent-soft);padding:6px 12px;border-radius:999px;white-space:nowrap; }
        /* чипы-тумблер внутри тела */
        .modal-card .chip-set{ display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px; }
        .modal-card .an-chip{ font-size:11.5px;font-weight:700;padding:6px 13px;border-radius:999px;border:1px solid var(--border);
          background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit; }
        .modal-card .an-chip.is-on{ background:var(--accent);border-color:var(--accent);color:#fff; }
        /* таблица .mt внутри модалки (экранный .mt scoped под #screen-analytics, сюда не достаёт) */
        .modal-card table.mt{ border-collapse:collapse;width:100%;font-size:11.5px; }
        .modal-card .mt thead th{ background:var(--surface-2);text-align:right;padding:8px 9px;font-size:9px;font-weight:800;
          letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);position:sticky;top:0; }
        .modal-card .mt thead th.left{ text-align:left; }
        .modal-card .mt thead th .u{ display:block;margin-top:2px;font-size:8px;font-weight:700;color:var(--mutex);text-transform:none;letter-spacing:0; }
        /* Сортировка столбцов в модалках (клик по заголовку) — как у мастер-таблицы */
        .modal-card .mt thead th[data-sort]{ cursor:pointer;user-select:none; }
        .modal-card .mt thead th[data-sort]:hover{ color:var(--accent); }
        .modal-card .mt thead th.sort-asc::after{ content:" ↑";color:var(--accent);font-weight:800; }
        .modal-card .mt thead th.sort-desc::after{ content:" ↓";color:var(--accent);font-weight:800; }
        /* Длинные текстовые ячейки (Сделка/Задача) — обрезаем многоточием, не растягиваем модалку */
        .modal-card .mt td.trunc{ max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
        .modal-card .mt tbody td{ padding:7px 9px;text-align:right;border-bottom:1px solid var(--border-2);white-space:nowrap;
          font-variant-numeric:tabular-nums;color:var(--text-2); }
        .modal-card .mt tbody td.left{ text-align:left;font-weight:700;color:var(--text); }
        .modal-card .mt tbody tr:hover td{ background:var(--surface-2); }
        .modal-card .lnk{ color:var(--accent-ink);text-decoration:none;font-weight:700; }
        .modal-card .lnk::after{ content:" ↗";font-size:9px;color:var(--mutex); }
        /* pill (внутри модалки — свой, расширяет ok/warn/dng/mut; экранный .pill не доходит) */
        .modal-card .pill{ display:inline-block;font-size:9.5px;font-weight:800;padding:2px 8px;border-radius:999px; }
        .modal-card .pill.ok{ background:var(--success-soft);color:var(--success-text); }
        .modal-card .pill.warn{ background:var(--warn-soft);color:var(--warn-text); }
        .modal-card .pill.dng{ background:var(--danger-soft);color:var(--danger-text); }
        .modal-card .pill.mut{ background:var(--surface-3);color:var(--muted); }
        .modal-card .mt tfoot .tot td{ font-weight:800;color:var(--text);border-top:2px solid var(--border);border-bottom:none;background:var(--surface-2); }
        .modal-card .sub{ font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px; }
        /* плитки контракта (B4) */
        .modal-card .tiles{ display:flex;gap:10px;margin-bottom:6px;flex-wrap:wrap; }
        .modal-card .tile{ flex:1;min-width:120px;background:var(--surface-2);border:1px solid var(--border-2);border-radius:var(--r-sm);padding:10px 12px; }
        .modal-card .tile .v{ font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text); }
        .modal-card .tile .l{ font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px; }
        /* гистограмма сроков оплаты (B3) */
        .modal-card .hist{ display:flex;align-items:flex-end;gap:14px;height:150px;padding:8px 6px 0;border-bottom:1px solid var(--border); }
        .modal-card .hbar{ flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%; }
        .modal-card .hbar .bar{ width:100%;background:var(--accent);border-radius:6px 6px 0 0;position:relative;min-height:2px; }
        .modal-card .hbar .cnt{ font-size:11px;font-weight:800;color:var(--text);margin-bottom:4px; }
        .modal-card .haxis{ display:flex;gap:14px;padding:6px 6px 0; }
        .modal-card .haxis div{ flex:1;text-align:center;font-size:10px;font-weight:700;color:var(--muted); }
        .modal-card .avg-note{ font-size:11px;color:var(--text-2);margin-top:10px; }
        .modal-card .avg-note b{ color:var(--accent-ink); }
        /* предупреждение / отклонение / заметка */
        .modal-card .warn-tri{ display:inline-block;color:var(--warn-text);font-size:11px;margin-right:5px;cursor:help; }
        .modal-card .dev.warn{ color:var(--warn-text);font-weight:700; }
        .modal-card .dev.ok{ color:var(--success-text);font-weight:700; }
        .modal-card .note{ font-size:11px;color:var(--muted);margin:8px 0 0;font-style:italic; }
        /* «Показать ещё» под таблицей модалки — лёгкая ссылка-кнопка */
        .modal-card .show-more-btn{ margin:12px auto 0;display:block;padding:6px 14px;border:1px solid var(--border);border-radius:999px;
          cursor:pointer;background:var(--surface);font-family:inherit;font-size:11.5px;font-weight:700;color:var(--text-2); }
        .modal-card .show-more-btn:hover{ border-color:var(--accent-soft-2);color:var(--accent-ink); }
        /* график часов контракта — причёсан под токены (был жёсткий #3b82f6/#e5e7eb) */
        .modal-card .ct-bars-wrap{ display:flex;gap:2px;overflow-x:auto;align-items:flex-end;height:72px;padding-bottom:4px;margin-bottom:6px; }
        .modal-card .ct-bar{ width:16px;background:var(--accent);border-radius:3px 3px 0 0; }
        .modal-card .ct-bar--wknd{ background:var(--surface-3); }
        .modal-card .ct-bar-lbl{ font-size:9px;color:var(--mutex);margin-top:2px;white-space:nowrap; }

        #screen-analytics .cash-kpi .kpi-card[data-cash-kind]{ cursor:pointer;transition:box-shadow .15s; }
        #screen-analytics .cash-kpi .kpi-card[data-cash-kind]:hover{ box-shadow:0 0 0 2px var(--accent); }
        #screen-analytics #an-mt-body tr[data-deal-id]{ cursor:pointer; }
        #screen-analytics #an-mt-body tr[data-deal-id]:hover td{ background:var(--surface-2,#f5f5f7); }

#screen-analytics .warn-tri{ display:inline-block;color:var(--warn-text,#B45309);font-size:11px;margin-right:5px;cursor:help;vertical-align:middle; }

#screen-analytics .cash-kpi .kpi-card{ position:relative; cursor:pointer; }
#screen-analytics .cash-kpi .kpi-card .cash-det{ position:absolute; top:11px; right:13px; font-size:10px; font-weight:700; color:var(--accent-ink,#2C6DB5); opacity:0; transition:opacity .15s; white-space:nowrap; pointer-events:none; }
#screen-analytics .cash-kpi .kpi-card:hover .cash-det{ opacity:1; }
.modal-card .ct-bar--empty{ background:var(--surface-3,#EFEDE9); }
