/* ===========================================================================
   ДиректГуру — «Стекло 2.0» (новый дизайн, этап 6, ветка design/glass-2)
   Подключается ПОСЛЕДНИМ, после app.css (и admin.css / help.css), и только переопределяет оформление.
   Логику, разметку данных и расчёты не меняет. Вернуть прежний вид — убрать подключение этого файла.
   Основание: docs/дизайн/Пакет на согласование.md (D-28…D-30), DECISIONS.md.
   Слои: 1) токены и управление · 2) оболочка · 3) таблицы, плитки, состояния · 4) админка · 5) справка · 6) главная и вход.
   =========================================================================== */

/* ── Слой 1. Токены ──────────────────────────────────────────────────────── */
:root {
  --ink-3: #5a667a;                    /* мелкий серый: 4,7:1 на фоне (было 4,2) */
  --accent-ink: #b5361a;               /* ссылки и текст акцентом: ≥ 4,5:1 */
  --btn-bg: #cf3f1a; --btn-ink: #ffffff; /* заливка основной кнопки: 4,8:1 (было 3,4) */
  --series-2: #6f88b5;                 /* вторая серия графиков: 3,6:1 (было 2,2) */
  --focus: #cf3f1a;
  --warning: #a33f07;                  /* предупреждения мелким текстом на светло-оранжевой подложке: ≈ 5,3:1 (было 4,45 — этап 7) */
  --r-ctrl: 10px; --r-pane: 16px; --r-card: 20px; --r-float: 18px;
  --h-s: 32px; --h-m: 36px; --h-l: 40px; --h-xl: 48px;
  --fs-xs: 12px; --fs-table: 13px; --fs-body: 14px;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --btn-bg: #cf3f1a; --focus: #ff8f6b; --series-2: #8fa5cf; --critical: #fb8a80; } }
:root[data-theme="dark"] { --btn-bg: #cf3f1a; --focus: #ff8f6b; --series-2: #8fa5cf; --critical: #fb8a80; }   /* «-44 %» на красной подложке: ≈ 5,2:1 (было 4,38) */

/* ── Слой 3 (ранний). Шкала шрифтов без «полуразмеров»: 7 ступеней 12/13/14/16/20/28/40 ── */
/* FONTMAP: место */

/* ── Слой 1. Кнопки: одна плоская система ───────────────────────────────────
   Без теней, градиентов и «блика»; при наведении не меняются (решение владельца); отклик — лёгкое нажатие.
   Радиус 10 — как у полей (D-28). Высоты: small 32 · обычная 36. */
.btn {
  height: var(--h-m); padding: 0 15px; gap: 8px; border-radius: var(--r-ctrl);
  font-size: 13px; font-weight: 600; letter-spacing: -.005em;
  box-shadow: none; transition: transform .12s var(--ease);
}
/* атрибут hidden сильнее display кнопки: иначе скрытые кнопки видны всем
   (И-02: «События сервиса» показывалась не владельцу и «не работала») */
.btn[hidden], .field[hidden], .chip[hidden] { display: none !important; }
.btn .ic { width: 16px; height: 16px; }
.btn:active { transform: scale(.98); }
.btn.primary, .btn.accent { background: var(--btn-bg); color: var(--btn-ink); border-color: transparent; box-shadow: none; }
.btn.primary .ic, .btn.accent .ic { color: inherit; }
.btn.ghost { box-shadow: none; }
.btn.icon { width: var(--h-m); }
.btn.small { height: var(--h-s); padding: 0 12px; font-size: 12px; gap: 6px; }
.btn.small .ic { width: 15px; height: 15px; }
.btn.small.icon, .btn.icon.small { width: var(--h-s); padding: 0; }
.btn:disabled, .btn[aria-disabled="true"] { opacity: .45; }
.btn.pay-way { height: auto; }
.theme-pick { border-radius: var(--r-ctrl); }
.theme-pick .btn.icon { border-radius: 8px; }
.theme-pick .btn.icon.active { box-shadow: 0 0 0 1px var(--line); }

/* Поля — той же высоты и радиуса, что кнопки */
.field { height: var(--h-m); border-radius: var(--r-ctrl); font-size: 13px; box-shadow: none; }
.field.small { height: var(--h-s); font-size: 12px; }
.field:focus, .field:focus-within { border-color: var(--focus); box-shadow: 0 0 0 3px var(--accent-wash); }
textarea.field { height: auto; }

/* выбор файла — такая же плоская кнопка, как остальные */
input[type="file"]::file-selector-button { height: 30px; margin-right: 12px; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--surface); color: var(--ink); font: 600 12px/1 "Onest", system-ui, sans-serif; cursor: pointer; }

/* Фокус с клавиатуры — одно кольцо везде; программный фокус (tabindex=-1) без рамки */
:is(.btn, .field, .nav-item, .chip, input, select, a, summary, [tabindex]):focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
[tabindex="-1"]:focus:not(:focus-visible) { outline: none; }

/* Фильтры, сегменты, метки — остаются «пилюлями», но без теней */
.chip { height: var(--h-s); padding: 0 12px; font-size: 13px; }
.seg { border-radius: var(--r-ctrl); box-shadow: none; }
.seg button { border-radius: 8px; font-size: 13px; }
.seg button.on { box-shadow: 0 0 0 1px var(--line); }
.chip-icon { box-shadow: 0 0 0 1px var(--line-soft); }
.tag, .mode, .badge { font-size: 12px; }

/* ── Слой 2. Оболочка приложения (только компьютер; телефон — прежняя раскладка, D-02) ── */
.rail-foot { display: flex; }
@media (min-width: 901px) {
  :root { --rail-w: 264px; }
  body.rail-collapsed { --rail-w: 72px; }
  /* левая панель — во всю высоту, без скругления (И-01) */
  .rail { position: sticky; top: 0; margin: 0; height: 100dvh; padding: 14px 12px 12px; gap: 1px;
    border-radius: 0; border-width: 0 1px 0 0; border-color: var(--line); box-shadow: none; }
  .rail > * { flex: none; }
  .rail-toggle { min-height: 36px; margin-bottom: 2px; }
  .brand { padding: 6px 10px 12px; }
  .brand-logo { width: 36px; height: 36px; border-radius: 10px; box-shadow: none; }
  .rail-label { padding: 14px 12px 6px; font-size: 12px; font-weight: 600; }
  .nav-item { min-height: 36px; padding: 6px 12px; gap: 10px; border-radius: var(--r-ctrl); font-size: 14px; }
  .nav-item .grow { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .nav-item.active { box-shadow: 0 0 0 1px var(--line-soft); }
  .nav-badge { height: 20px; min-width: 20px; padding: 0 6px; font-size: 11px; }
  /* один индикатор активного раздела (S5): «звёздочки» — акцентная иконка и текст без заливки */
  .nav-item.nav-featured { background: transparent; color: var(--accent-ink); }
  .nav-item.nav-featured .ic { color: var(--accent); }
  .nav-item.nav-featured.active { background: var(--surface); color: var(--ink); box-shadow: 0 0 0 1px var(--line-soft); }
  .nav-item.nav-featured.active .ic { color: var(--accent); }
  .rail-foot { margin-top: auto; padding: 12px 4px 0; border-top: 1px solid var(--line-soft); }
  /* свёрнутая панель: иконки, разделители групп, точки-счётчики */
  body.rail-collapsed .rail { padding-left: 10px; padding-right: 10px; }
  body.rail-collapsed .rail-label { display: block; font-size: 0; height: 1px; padding: 0; margin: 8px 10px; background: var(--line); }
  body.rail-collapsed .nav-item .nav-badge { display: block; position: absolute; top: 6px; right: 12px; min-width: 8px; width: 8px; height: 8px; padding: 0; font-size: 0; }
  body.rail-collapsed .rail-foot { justify-content: center; padding-left: 0; padding-right: 0; }
  body.rail-collapsed .rail-foot .theme-pick { flex-direction: column; }
  body.rail-collapsed .brand-logo { width: 32px; height: 32px; }

  /* шапка — всегда одна строка, прилегает к верху (D-26) */
  .topbar { top: 0; margin: 0; min-height: 58px; padding: 9px 16px 9px 24px; gap: 8px; flex-wrap: nowrap;
    border-radius: 0; border-width: 0 0 1px; border-color: var(--line); box-shadow: none; }
  .topbar > div:first-child { min-width: 0; flex: 0 1 auto; }
  .page-title { font-size: 17px; font-weight: 650; letter-spacing: -.015em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .page-sub { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .topbar .grow { min-width: 8px; }
  .topbar select.field { max-width: 220px; text-overflow: ellipsis; }
  #days { max-width: 140px; }
  /* поиск по таблицам экрана — значок, раскрывается в поле (ищет во всех таблицах экрана, поэтому остаётся в шапке) */
  #search-box { width: var(--h-m); padding: 0; justify-content: center; gap: 0; flex: none; overflow: hidden; transition: width .18s var(--ease); cursor: text; }
  #search-box input { width: 0; padding: 0; }
  #search-box:focus-within, #search-box:has(input:not(:placeholder-shown)) { width: 240px; padding-left: 12px; gap: 8px; justify-content: flex-start; }
  #search-box:focus-within input, #search-box:has(input:not(:placeholder-shown)) input { width: 100%; }
  .service-bell { width: auto; padding: 0 12px; }
  .sb-label { font-size: 13px; font-weight: 600; }
  .refresh-btn { flex: none; }

  /* рабочая область — во всю ширину, без «1640 и прижато влево» (S1) */
  .content { max-width: none; padding: 24px 24px 88px; }
}
@media (min-width: 901px) and (max-width: 1599px) {
  .content { padding: 16px 16px 72px; }
  .topbar { padding-left: 16px; }
  .sb-label { display: none; }
  .service-bell { width: var(--h-m); padding: 0; }
}

/* FONTMAP: начало (сгенерировано fontmap.py, руками не править) */
.mono { font-size: 13px; }
.muted { font-size: 13px; }
.brand-name { font-size: 16px; }
.brand-sub { font-size: 12px; }
.brand-mail { font-size: 12px; }
.bell-count { font-size: 12px; background: var(--btn-bg); }   /* счётчики: белый на #cf3f1a — 4,8:1 (было 3,4, в тёмной 2,9) */
.bell-meta { font-size: 12px; }
.rail-label { font-size: 12px; }
.nav-badge { font-size: 12px; background: var(--btn-bg); }
.sc-at { font-size: 12px; }
.page-sub { font-size: 13px; }
.btn { font-size: 14px; }
.btn.small { font-size: 13px; }
.field { font-size: 14px; }
.field.small { font-size: 13px; }
.section-head .hint { font-size: 13px; }
.subhead { font-size: 14px; }
.tile-foot { font-size: 13px; }
.tile-split { font-size: 13px; }
.find-title { font-size: 16px; }
.find-sub { font-size: 14px; }
.find-price span { font-size: 12px; }
.find-caution { font-size: 13px; }
.find-items .items-links { font-size: 13px; }
.tag, .mode { font-size: 12px; }
thead th .sort { font-size: 12px; }
tbody td { font-size: 13px; }
td .sub { font-size: 12px; }
.cell-num { font-size: 13px; }
.badge { font-size: 12px; }
.seg button { font-size: 13px; }
.chart-head h3 { font-size: 14px; }
.w2w h3 { font-size: 14px; }
.w2w-row { font-size: 14px; }
.map-legend { font-size: 13px; }
.empty p { font-size: 14px; }
.modal .lead { font-size: 14px; }
.toast .t { font-size: 13px; }
.toast .d { font-size: 13px; }
.budget-label { font-size: 13px; }
.alert-body { font-size: 14px; }
.pp-field { font-size: 13px; }
.pf-check { font-size: 13px; }
.pf-card-grid span { font-size: 12px; }
.pf-card-grid em { font-size: 12px; }
.update-note { font-size: 13px; }
.rule-text .muted { font-size: 13px; }
.rule-bar .muted { font-size: 13px; }
.data-card p.muted { font-size: 13px; }
.agency-name { font-size: 13px; }
.cl-hero-label { font-size: 14px; }
.cl-hero-sub { font-size: 13px; }
.cl-legend-item { font-size: 13px; }
.pq-head .hint { font-size: 13px; }
.task-title { font-size: 14px; }
.task-impact > span { font-size: 12px; }
.task-sub { font-size: 14px; }
.heat th { font-size: 12px; }
.heat td { font-size: 12px; }
.lw-lab, .lw-num { font-size: 12px; }
.cab-hero-plan { font-size: 14px; }
.spark-tip { font-size: 13px; }
.nsplit-row { font-size: 13px; }
.nsplit-share { font-size: 12px; }
.pf-hero-alerts { font-size: 13px; }
.pf-hname { font-size: 14px; }
.bd-how b { font-size: 14px; }
.bd-how p { font-size: 13px; }
.jdate { font-size: 13px; }
table.mini { font-size: 13px; }
.rep-budget-head { font-size: 13px; }
.bd-filter-label { font-size: 13px; }
.bd-cond { font-size: 13px; }
td.col-act .ex-tag.part { font-size: 12px; }
.rl-sub { font-size: 13px; }
.rl-week b { font-size: 12px; }
.rl-week span { font-size: 12px; }
.au-ring-num span { font-size: 12px; }
.mv-kw { font-size: 14px; }
.rev-tag { font-size: 12px; }
.dr-note { font-size: 14px; }
.pt-bar { font-size: 14px; }
.backup-row { font-size: 14px; }
.ai-off { font-size: 14px; }
.ai-p { font-size: 14px; }
.ai-foot { font-size: 13px; }
.ai-dropped { font-size: 13px; }
.tr-q { font-size: 13px; }
.tr-cap { font-size: 13px; }
.tr-name { font-size: 14px; }
.tr-name-txt { font-size: 14px; }
.tr-why { font-size: 13px; }
.tr-more { font-size: 13px; }
.ai-hello { font-size: 14px; }
@media (max-width: 900px) { 
  .ctile .tile-label { font-size: 13px; }
}
/* FONTMAP: конец */

/* ── Слой 3. Поверхности «Стекло 2.0», таблицы, плитки, состояния ─────────────────
   Стекло — только у плавающих слоёв и одного «главного блока» экрана; данные — матовые, без размытия (D-05). */
:root { --matte: rgba(255, 255, 255, .84); --hero-bg: rgba(255, 255, 255, .58); --shadow-pane: 0 1px 2px rgba(30, 45, 80, .05); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --matte: rgba(20, 29, 52, .88); --hero-bg: rgba(30, 42, 72, .52); --shadow-pane: none; } }
:root[data-theme="dark"] { --matte: rgba(20, 29, 52, .88); --hero-bg: rgba(30, 42, 72, .52); --shadow-pane: none; }

/* карточки и списки — матовые, одна тонкая рамка, без «оправы» */
.card { background: var(--matte); border: 1px solid var(--line-soft); border-radius: var(--r-card); box-shadow: var(--shadow-pane);
  -webkit-backdrop-filter: none; backdrop-filter: none; }
.pane, .card.table-wrap { border-radius: var(--r-pane); box-shadow: var(--shadow-pane); }
/* один главный блок экрана — плотное стекло, без стекла на стекле */
.card:is(.cl-hero, .cab-hero, .pf-hero, .rep-hero, .tr-hero, .ld-hero, .au-hero, .ai-hero) {
  background: var(--hero-bg); border-color: var(--edge); box-shadow: inset 0 1px 0 var(--edge);
  -webkit-backdrop-filter: blur(16px) saturate(150%); backdrop-filter: blur(16px) saturate(150%); }
.skeleton { box-shadow: none; border-radius: var(--r-pane); }

/* таблицы: 13 px, без размытия в каждой ячейке заголовка и закреплённой колонки */
thead th { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--surface-2); font-size: 12px; font-weight: 600; }
.sticky-col { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--surface); }
.accounts-table thead th.sticky-col { background: var(--surface-2); }
tbody td, .cell-num { font-size: 13px; }
td .sub { font-size: 12px; }
@media (min-width: 901px) and (max-width: 1599px) {          /* ноутбук — компактные строки (D-25) */
  th, td { padding-top: 9px; padding-bottom: 9px; }
  th, td { padding-left: 12px; padding-right: 12px; }
}

/* таблицы срезов (D-25): пояснение строки — в одну строку с многоточием (полностью — в панели строки и в подсказке),
   первая колонка закреплена, тень у её края — когда таблицу прокрутили вбок; второстепенные колонки на тесной ширине — в панель строки */
:root { --edge-shadow: 8px 0 10px -8px rgba(16, 24, 40, .24); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --edge-shadow: 8px 0 12px -8px rgba(0, 0, 0, .6); } }
:root[data-theme="dark"] { --edge-shadow: 8px 0 12px -8px rgba(0, 0, 0, .6); }
.fail-state .btn { margin-top: 20px; }
/* клавиатура (этап 7): названия кабинетов в «Утреннем разборе» — то же кольцо фокуса, что у остальных элементов */
.tr-name:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
/* телефон: выбор кабинета с длинным названием не шире экрана (было до 675 px при ширине 390 — прокрутка страницы вбок) */
@media (max-width: 900px) { .topbar select.field { max-width: calc(100vw - 32px); min-width: 0; text-overflow: ellipsis; } }
/* телефон: таблицы отчёта (в сервисе и по ссылке клиента) прокручиваются вбок — раньше правые столбцы («Сэкономлено») обрезались */
@media (max-width: 900px) { .rv .pane:has(> table) { overflow-x: auto; overscroll-behavior-x: contain; } }
.bd-name .bd-v { max-width: 380px; }
.bd-v > span:not(.sdot):not(.lock-ic):not(.rev-tag):not(.chan-tag) { min-width: 0; overflow-wrap: anywhere; }   /* имя переносится и при значке замка / «проверено» */   /* длинная площадка или фраза переносится, а не раздувает первую колонку (этап 7) */
.find-items td.wrap :is(.mono, .cell-sub) { overflow-wrap: anywhere; }   /* имя площадки без пробелов не залезает на соседнюю колонку */
.bd-name .bd-why { max-width: 46ch; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.table-wrap .sticky-col { transition: box-shadow .15s var(--ease); }
.table-wrap.scrolled-x .sticky-col { box-shadow: var(--edge-shadow); }
#bd-table thead th.sticky-col { z-index: 3; background: var(--surface-2); }
.bd-sec-note { display: none; align-items: center; gap: 8px; padding: 10px 16px; border-top: 1px solid var(--line-soft); font-size: 13px; }
.bd-sec-note .ic { width: 15px; height: 15px; flex: none; }
/* таблица не поместилась по ширине (класс ставит bdFit в app.js) — второстепенные колонки уходят в панель строки */
#bd-table.tight .col-sec { display: none; }
#bd-table.tight .bd-sec-note { display: flex; }
.drawer-head > div:first-child { flex: 1; min-width: 0; overflow-wrap: anywhere; }   /* «Закрепить» и «×» — у правого края */
/* панель строки среза: вердикт, полное пояснение и все показатели строки */
.dr-row { display: grid; gap: 10px; justify-items: start; margin: -4px 0 18px; padding-bottom: 16px; border-bottom: 1px solid var(--line-soft); }
.dr-why { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink-2); }
.dr-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px 16px; width: 100%; margin: 4px 0 0; }
.dr-facts dt { font-size: 12px; color: var(--ink-3); }
.dr-facts dd { margin: 2px 0 0; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }

/* мелкий текст: данные — от 13 px, вторичные подписи (заголовки столбцов, метки, изменения) — 12, мельче — нигде */
.chips .chip, .pf-sets .chip, .pf-tabs .chip, button.chip { font-size: 13px; }
.unit { font-size: max(12px, .5em); }

/* плитки и значки */
.chip-icon { border-radius: 10px; }
.find { border-radius: var(--r-pane); }
.delta { font-size: 12px; }

/* плавающие слои: окна, панель деталей, уведомления — стекло с запасным сплошным фоном */
.modal, .drawer { border-radius: var(--r-float); }
.toast { border-radius: 14px; align-items: center; }
.toast-rep { margin-left: auto; padding: 2px 8px; border-radius: 999px; background: var(--hover); color: var(--ink-3); font-size: 12px; font-weight: 700;
  font-variant-numeric: tabular-nums; }
@media (prefers-reduced-transparency: reduce) {
  .rail, .topbar, .modal, .drawer, .toast, .overlay, .card:is(.cl-hero, .cab-hero, .pf-hero, .rep-hero, .tr-hero, .ld-hero, .au-hero, .ai-hero) {
    background: var(--surface); -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* правая панель деталей: на больших мониторах закреплена рядом с таблицей (D-23), ниже — поверх, как раньше */
@media (min-width: 2200px) {
  body:has(> aside.drawer) main { padding-right: calc(min(540px, 30vw) + 24px); }
  body:has(> aside.drawer.drawer-wide) main { padding-right: calc(min(760px, 34vw) + 24px); }
  .drawer { top: calc(58px + 16px); right: 16px; bottom: 16px; width: min(540px, 30vw); animation: none; }
  .drawer.drawer-wide { width: min(760px, 34vw); }
}

/* «Закрепить» панель деталей — по выбору пользователя с 1600 px; с 2200 px закреплена всегда, кнопка не нужна */
[data-drawer-pin] { display: none; }
[data-drawer-pin][aria-pressed="true"] .ic { color: var(--accent); }
@media (min-width: 1600px) and (max-width: 2199px) {
  [data-drawer-pin] { display: inline-flex; }
  body.drawer-pinned:has(> aside.drawer) main { padding-right: calc(min(480px, 32vw) + 16px); }
  body.drawer-pinned:has(> aside.drawer.drawer-wide) main { padding-right: calc(min(640px, 38vw) + 16px); }
  body.drawer-pinned .drawer { top: calc(58px + 16px); right: 16px; bottom: 16px; width: min(480px, 32vw); animation: none; }
  body.drawer-pinned .drawer.drawer-wide { width: min(640px, 38vw); }
}

/* ── Чеклист: детали задачи в закреплённой колонке справа с 1900 px (D-23); ниже — раскрытие на месте, как раньше ── */
.cl-split { display: grid; grid-template-columns: minmax(0, 1fr) clamp(560px, 40%, 860px); gap: 24px; align-items: start; }
.cl-main { min-width: 0; }
.cl-side { position: sticky; top: calc(58px + 16px); max-height: calc(100dvh - 58px - 32px); overflow: auto; overscroll-behavior: contain;
  margin-bottom: 34px; padding: 20px 24px 24px; background: var(--matte); border: 1px solid var(--line-soft); border-radius: var(--r-pane);
  box-shadow: var(--shadow-pane); }
.cl-side-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; align-items: center; padding-bottom: 16px;
  border-bottom: 1px solid var(--line-soft); }
.cl-side-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; color: var(--ink-3); }
.cl-side-meta .mode { padding: 0; background: none; font-size: 12px; font-weight: 500; }
.cl-side-meta .mode .ic { width: 13px; height: 13px; }
.cl-side-meta .mode.auto { color: var(--accent-ink); }
.cl-side-title { grid-column: 1 / -1; margin: 0; font-size: 20px; font-weight: 650; letter-spacing: -.015em; line-height: 1.3; text-wrap: pretty; }
.cl-side-head .find-price { grid-column: 1 / -1; margin: 4px 0 0; text-align: left; white-space: normal; }
.cl-side .task-inner { overflow: visible; }
.cl-side .task-detail { padding: 16px 0 0; opacity: 1; transform: none; }
.cl-side .task-why { max-width: none; }
.cl-side .find-actions { margin-top: 20px; flex-wrap: wrap; }
.cl-side .find-items { margin: 24px 0 0; border-top: 1px solid var(--line-soft); max-height: none; overflow: visible; }
.cl-side .find-items .table-wrap { overflow-x: auto; max-height: none; }   /* колонка прокручивается сама — без второй прокрутки внутри */
.cl-side .find-items .sticky-col { min-width: 220px; max-width: 300px; box-shadow: 6px 0 8px -6px rgba(16, 24, 40, .16); }
.cl-side .find-items thead th.sticky-col { z-index: 3; }
.cl-side .item-why { margin-top: 4px; line-height: 1.45; }
.cl-side-empty { display: grid; justify-items: start; gap: 8px; padding: 16px 0; color: var(--ink-3); font-size: 14px; line-height: 1.55; }
.cl-side-empty .ic { width: 22px; height: 22px; }
.cl-side-empty b { color: var(--ink); font-size: 16px; font-weight: 650; }
.cl-main .cl-groups { flex-wrap: wrap; overflow: visible; padding-right: 2px; -webkit-mask-image: none; mask-image: none; }   /* все типы работ видны, без скрытой прокрутки */
/* выбранная задача в списке — подсветка и метка у края вместо раскрытия */
.cl-main .task .task-body { display: none; }
.cl-main .task.open .task-row { background: color-mix(in srgb, var(--surface) 93%, var(--accent)); box-shadow: inset 3px 0 0 var(--accent); }
.cl-main .task.open .task-chev { transform: none; color: var(--accent); }

/* ── Настройки: отступы у кнопок (И-03) и пояснения раздела (И-04) ───────────────── */
.rule-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 24px 0 32px; }   /* поле → кнопки 24, кнопки → блок 32 */
.rule-bar .muted { margin-left: 8px; }
.rule-group { margin-bottom: 16px; }
/* строка порога: поле с единицей («₽ в неделю») не залезает на «по умолчанию …» */
@media (min-width: 901px) { .rule-input { grid-template-columns: 200px minmax(150px, 210px) 96px; } }
.rule-field span { white-space: nowrap; }
.setup-help { margin-top: 40px; }
.setup-help .pane { padding: 20px 24px; }
.setup-help dl { grid-template-columns: minmax(180px, 220px) minmax(0, 1fr); gap: 0 24px; }
.setup-help dt, .setup-help dd { padding: 14px 0; border-top: 1px solid var(--line-soft); }
.setup-help dt:first-of-type, .setup-help dt:first-of-type + dd { border-top: 0; padding-top: 0; }
.setup-help dt { font-size: 14px; font-weight: 650; color: var(--ink); }
.setup-help dd { font-size: 14px; line-height: 1.65; max-width: 72ch; }
.setup-help .pane > p { margin: 20px 0 10px; padding-top: 16px; border-top: 1px solid var(--line-soft); font-size: 13px; font-weight: 650; color: var(--ink); }
.setup-help .pane > ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.setup-help .pane > ul a { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 12px; border-radius: var(--r-ctrl);
  background: var(--surface-2); color: var(--ink); text-decoration: none; font-size: 13px; font-weight: 550; }
.setup-help .pane > ul a::after { content: "→"; margin-left: auto; color: var(--ink-3); }
@media (max-width: 700px) {
  .setup-help dl { grid-template-columns: 1fr; }
  .setup-help dd { border-top: 0; padding-top: 0; }
}
/* справка по вкладке — в колонке справа с 1600 px (D-23): формы узкие, место есть; ниже — под вкладкой */
@media (min-width: 1600px) {
  .setup-split { display: grid; grid-template-columns: minmax(0, 1fr) clamp(360px, 26%, 460px); gap: 32px; align-items: start; }
  .setup-main { min-width: 0; }
  .setup-side { position: sticky; top: calc(58px + 16px); max-height: calc(100dvh - 58px - 32px); overflow: auto; overscroll-behavior: contain;
    margin-bottom: 34px; padding: 20px 24px 24px; background: var(--matte); border: 1px solid var(--line-soft); border-radius: var(--r-pane);
    box-shadow: var(--shadow-pane); }
  .setup-side .setup-help { margin: 0; }
  .setup-side .setup-help .section-head { margin-bottom: 8px; }
  .setup-side .setup-help .section-head h2 { font-size: 16px; }
  .setup-side .setup-help .pane { padding: 0; background: none; border: 0; box-shadow: none; }
  .setup-side .setup-help dl { grid-template-columns: 1fr; }
  .setup-side .setup-help dt, .setup-side .setup-help dt:first-of-type { padding: 14px 0 4px; border-top: 1px solid var(--line-soft); }
  .setup-side .setup-help dd, .setup-side .setup-help dt:first-of-type + dd { padding: 0 0 14px; border-top: 0; line-height: 1.6; }
  .setup-side .setup-help dd::first-letter { text-transform: uppercase; }   /* под термином пояснение — отдельная фраза */
  .setup-side .setup-help .pane > p { margin-top: 4px; }
  .setup-side .setup-help .pane > ul { grid-template-columns: 1fr; }
}

/* ── Слой 4. Админка ───────────────────────────────────────────────────────── */
.admin-nav { padding: 22px 14px; }
.admin-nav a { min-height: 36px; padding: 7px 12px; margin: 1px 0; border-radius: var(--r-ctrl); font-size: 14px; }
.admin-nav a.active { background: var(--surface); color: var(--ink); font-weight: 600; box-shadow: 0 0 0 1px var(--line-soft); }
.admin-nav a.active .ic { color: var(--accent); }
.admin-page .pane, .admin-section, .admin-metric { border-radius: var(--r-pane); }
/* таблицы: заголовок выровнен как данные (D2) — текст влево, числа, суммы и даты вправо */
.admin-page th { font-size: 12px; font-weight: 600; color: var(--ink-3); text-align: left; }
.admin-page td { font-size: 13px; text-align: left; overflow-wrap: break-word; }   /* слова и метки не рвутся посередине; длинный адрес — переносится */
.admin-page td a { overflow-wrap: break-word; }
.admin-page .status { white-space: nowrap; }
.admin-count { background: var(--btn-bg); font-size: 12px; font-weight: 700; min-width: 18px; line-height: 18px; }   /* счётчик у колокольчика: 4,8:1, как в приложении (этап 7) */
.admin-page td.date { white-space: nowrap; }   /* «2026-11-08» не переносится по дефису (этап 7) */
.admin-page td.date .sub { white-space: normal; }   /* номер платежа под датой переносится как раньше */
.admin-page :is(th, td).num { text-align: right; }
.admin-page th:first-child, .admin-page td:first-child { text-align: left; }
.admin-page tbody tr.sel td { background: color-mix(in srgb, var(--surface) 93%, var(--accent)); }
.admin-page tbody tr.sel td:first-child { box-shadow: inset 3px 0 0 var(--accent); }
.admin-dialog { border-radius: var(--r-float); }
/* список + карточка на широком экране (D-27) */
.admin-split { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; align-items: start; }
@media (min-width: 1600px) {
  .admin-split { grid-template-columns: minmax(600px, 1fr) minmax(460px, 1.05fr); }
  .admin-split-card { position: sticky; top: 16px; max-height: calc(100dvh - 32px); overflow: auto; padding-right: 2px; }
  .admin-split-card .admin-columns { grid-template-columns: 1fr; }
  .admin-split-card .admin-columns { gap: 16px; }
  .admin-split-card .admin-section, .admin-split-card .pane { margin-top: 0; margin-bottom: 16px; }
  .admin-split-card .admin-bar a:is([href="#clients"], [href="#support"]) { display: none; }   /* список и так рядом */
  .admin-split.wide-list { grid-template-columns: minmax(640px, 1.35fr) minmax(420px, 1fr); }
  .admin-split-name { margin: 0 0 12px; }
  .admin-split-name h2 { margin: 0; font-size: 20px; }
  .admin-split-name p { margin: 2px 0 0; font-size: 13px; }
  .admin-page tbody tr.pick { cursor: pointer; }
  .admin-page tbody tr.pick:hover td { background: var(--hover); }
  .admin-page tbody tr.pick.sel:hover td { background: color-mix(in srgb, var(--surface) 93%, var(--accent)); }
}

/* дашборд в три уровня (D1): «Требует действия» → «Деньги и рост» → остальное мелкой сеткой */
.admin-sec-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.admin-sec-head h2 { margin: 0; }
.admin-sec-head .muted { font-size: 13px; }
.admin-acts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.admin-act { display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 10px 14px; border-radius: var(--r-ctrl); background: var(--surface-2);
  color: var(--ink-3); text-decoration: none; }
.admin-act b { min-width: 2ch; font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--ink-3); }
.admin-act span { font-size: 13px; line-height: 1.35; }
.admin-act.hot { background: color-mix(in srgb, var(--surface) 90%, var(--accent)); color: var(--ink); box-shadow: inset 3px 0 0 var(--accent); }
.admin-act.hot b { color: var(--accent-ink); }
.admin-money h2 { margin: 26px 0 0; font-size: 16px; }
.admin-money .admin-grid { margin-top: 12px; }
.admin-minis { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0 28px; }
.admin-mini { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line-soft);
  color: var(--ink-2); text-decoration: none; font-size: 13px; }
.admin-mini b { color: var(--ink); font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.admin-mini small { color: var(--ink-3); font-size: 12px; font-weight: 500; }
@media (max-width: 1150px) { .admin-acts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* «Система» (D4): оглавление и отдельный блок «Опасные действия» с красной рамкой */
.admin-toc { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; }
.admin-toc a { display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border-radius: var(--r-ctrl); background: var(--surface-2);
  color: var(--ink-2); font-size: 13px; font-weight: 550; text-decoration: none; }
.admin-toc a.danger { color: var(--critical); }
.admin-page .admin-section[id^="sys-"] { scroll-margin-top: 16px; }
.admin-danger { border: 1px solid color-mix(in srgb, var(--critical) 55%, transparent); box-shadow: inset 3px 0 0 var(--critical); }
.admin-danger > h2 { color: var(--critical); }
.admin-danger-lead { margin: -6px 0 16px; color: var(--ink-2); font-size: 14px; }
.admin-danger h3 { margin: 22px 0 10px; font-size: 15px; }
.admin-danger h3:first-of-type { margin-top: 0; }

/* ── Слой 5. Справка ───────────────────────────────────────────────────────── */
/* заголовок статьи получает фокус программно (для экранного диктора) — без рамки; с клавиатуры кольцо остаётся у ссылок и кнопок */
.hc-panel h1[tabindex="-1"]:focus, .hc-panel h1[tabindex="-1"]:focus-visible { outline: none; }
.hc-panel p, .hc-panel li { font-size: 16px; line-height: 1.75; }
.hc-outline { font-size: 13px; }
.hc-outline a.on { color: var(--ink); font-weight: 600; }
.hc-nav a { min-height: 32px; }
@media (max-width: 800px) { .hc-top-actions .btn { font-size: 12px; } }
.hc-search-wrap .field { height: var(--h-l); }
/* главная справки (H1): частые задачи — плашками, категории — карточками, полный перечень — под «Ещё N» */
.hc-search-wrap label { display: flex; align-items: center; gap: 8px; }
.hc-kbd { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border: 1px solid var(--line); border-radius: 6px;
  background: var(--surface); color: var(--ink-3); font: 600 12px/1 "JetBrains Mono", ui-monospace, monospace; }
.hc-quick { align-items: center; gap: 8px; }
.hc-quick-label { margin-right: 4px; color: var(--ink-3); font-size: 13px; font-weight: 600; }
.hc-quick a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border-radius: var(--r-ctrl); background: var(--surface-2);
  color: var(--ink); font-size: 14px; font-weight: 550; text-decoration: none; }
.hc-home-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 32px; }
.hc-home-card { margin: 0; padding: 20px 22px; border: 1px solid var(--line-soft); border-radius: var(--r-pane); background: var(--matte); box-shadow: var(--shadow-pane); }
.hc-home-card h2 { margin: 0; font-size: 16px; }
.hc-home-card .hc-count { margin: 4px 0 8px; color: var(--ink-3); font-size: 13px; line-height: 1.4; }
.hc-home-card ul { margin: 0; }
.hc-home-card li { margin: 0; font-size: 15px; line-height: 1.5; }
.hc-home-card li a { display: block; padding: 6px 0; }
.hc-more summary { padding: 6px 0; color: var(--accent-ink); font-size: 13px; font-weight: 600; cursor: pointer; list-style: none; }
.hc-more summary::-webkit-details-marker { display: none; }
.hc-more summary::after { content: " ▾"; }
.hc-more[open] summary::after { content: " ▴"; }
@media (max-width: 800px) { .hc-home-groups { grid-template-columns: 1fr; } }

/* ── Слой 6. Вход и регистрация ───────────────────────────────────────────── */
/* «Я специалист / Агентство» (И-09) — сегмент на всю ширину формы */
.au-kind { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 3px; border-radius: var(--r-ctrl); background: var(--hover); margin: 4px 0 2px; }
.au-kind[hidden] { display: none; }
.au-kind button { height: 34px; border: 0; border-radius: 8px; background: transparent; color: var(--ink-3); font: 600 13px/1 "Onest", system-ui, sans-serif; cursor: pointer; }
.au-kind button[aria-pressed="true"] { background: var(--surface); color: var(--ink); box-shadow: 0 0 0 1px var(--line); }
.au-kind button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

/* ── Слой 7. Логотип по теме (08.10.2026, правка Родиона) ─────────────────────
   Светлая тема — светлый знак (logo-light.svg), тёмная — тёмный (logo.svg). Обе картинки в разметке, видна одна. */
img.logo-d { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) img.logo-l { display: none; }
  :root:not([data-theme="light"]) img.logo-d { display: inline-block; }
}
:root[data-theme="dark"] img.logo-l { display: none; }
:root[data-theme="dark"] img.logo-d { display: inline-block; }
/* ── Слой 8. Шапка приложения (08.10.2026, правки Родиона) ──────────────────
   Компьютер (> 1 024 px): тема — кнопкой в шапке, крайней справа. Планшет (901–1 024): тема — внизу левой панели.
   Порядок шапки: экран и «в избранное» → кабинет и период → поиск, выгрузка, «Обновить» → помощник → события,
   уведомления → тема. Телефон (≤ 900): логотип, нейросеть, «Обновить», колокольчик, меню; меню — на весь экран. */
a.brand { color: inherit; text-decoration: none; border-radius: var(--r-ctrl); }
.topbar .tb-brand, .topbar .tb-menu, .topbar .tb-ai, .topbar .tb-theme, .rail .m-head, .rail .m-tools, .rail .m-extra { display: none; }
.tb-sep { flex: none; width: 1px; height: 24px; background: var(--line); margin: 0 2px; }
.topbar > .tb-title { min-width: 0; flex: 0 1 auto; }
.topbar .tb-fav { margin-left: -2px; }
.tb-register { flex: none; white-space: nowrap; }
@media (min-width: 1025px) {
  .topbar .tb-theme { display: inline-flex; }
  .rail-foot { display: none; }
}
@media (max-width: 900px) {
  body.menu-open { overflow: hidden; }
  .app > .rail { display: none; }
  body.menu-open .app > .rail { display: flex; position: fixed; inset: 0; z-index: 200; margin: 0; width: auto; height: 100dvh;
    flex-direction: column; align-items: stretch; gap: 2px; padding: 12px 16px calc(24px + env(safe-area-inset-bottom));
    overflow-x: hidden; overflow-y: auto; border: 0; border-radius: 0; background: var(--surface); box-shadow: none;
    -webkit-backdrop-filter: none; backdrop-filter: none; }
  body.menu-open .rail .rail-toggle, body.menu-open .rail .brand { display: none; }
  body.menu-open .rail .m-head { display: flex; align-items: center; justify-content: space-between; min-height: 44px; margin-bottom: 4px; }
  .m-title { font-size: 20px; font-weight: 650; letter-spacing: -.015em; }
  body.menu-open .rail .m-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 4px 0 14px; border-bottom: 1px solid var(--line-soft); }
  .m-label { flex-basis: 100%; font-size: 12px; font-weight: 600; color: var(--ink-3); }
  body.menu-open .rail .m-extra { display: grid; gap: 2px; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--line-soft); }
  .m-extra .nav-item { border: 0; background: none; font: inherit; color: inherit; text-align: left; width: 100%; cursor: pointer; }
  .m-extra .nav-item[hidden] { display: none; }
  body.menu-open .rail .rail-label { display: block; padding: 14px 12px 6px; font-size: 12px; font-weight: 600; }
  body.menu-open .rail .nav-group { flex-direction: column; gap: 2px; }
  body.menu-open .rail .nav-item { min-height: 44px; width: 100%; white-space: normal; font-size: 15px; }
  body.menu-open .rail .rail-foot { display: flex; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line-soft); }
  /* шапка (прилипает к верху): логотип слева; справа нейросеть, «Обновить», колокольчик, меню */
  .topbar { position: sticky; top: 0; z-index: 40; margin: 0; padding: 8px 12px; gap: 8px; flex-wrap: nowrap; min-height: 56px;
    border-radius: 0; border-width: 0 0 1px; border-color: var(--line); box-shadow: none; }
  .topbar .tb-brand { display: inline-flex; margin-right: auto; border-radius: 9px; }
  .tb-brand img { width: 32px; height: 32px; border-radius: 9px; }
  .topbar .tb-ai { display: inline-flex; }
  .topbar .tb-ai .ic { color: var(--accent); }
  .topbar #refresh { width: var(--h-m); padding: 0; justify-content: center; }
  .topbar #refresh-text { display: none; }
  .topbar .tb-menu { display: inline-flex; }
  .topbar :is(#fav-add, #export-xls, #ai-help, #ai-left, #service-bell, .tb-theme, .tb-sep, .grow) { display: none; }
  /* строка под шапкой (узлы переносит app.js): экран, регистрация в демо, кабинет и период — уходят с прокруткой */
  .tb-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 12px 12px 0; }
  .tb-sub > .tb-title { flex: 1 1 100%; min-width: 0; }
  .tb-sub .tb-register { flex: 1 1 100%; justify-content: center; }
  .tb-sub select.field { flex: 1 1 40%; min-width: 0; max-width: none; }
  .tb-sub #period-custom, .tb-sub #search-box { flex: 1 1 100%; }
}
@media (min-width: 901px) { .tb-sub { display: none; } }
@media print { .tb-sub { display: none !important; } }body.menu-open .rail .m-tools[hidden] { display: none; }
/* название экрана важнее ширины списков: списки ужимаются первыми; на окнах до 1 440 px — без разделителей */
@media (min-width: 901px) {
  .topbar > .tb-title { flex: 0 0 auto; max-width: 36%; }
  .topbar select.field { flex: 0 1 auto; min-width: 104px; }
}
@media (min-width: 901px) and (max-width: 1439px) { .tb-sep { display: none; } }/* кнопка регистрации в демо: на окнах до 1 440 px — короткая подпись; на телефоне — полная, отдельной строкой */
.tb-reg-short { display: none; }
@media (min-width: 901px) and (max-width: 1439px) { .tb-reg-full { display: none; } .tb-reg-short { display: inline; } }/* 901–1 279 px: «Обновить данные» — значком (подпись в подсказке), название экрана может сжиматься с многоточием */
@media (min-width: 901px) and (max-width: 1279px) {
  .topbar > .tb-title { flex: 0 1 auto; }
  .topbar #refresh { width: var(--h-m); padding: 0; justify-content: center; }
  .topbar #refresh-text { display: none; }
}/* меню телефона: «звёздочки» (Нейросеть, Предложить доработки) — цветом значка и текста, без заливки, как на компьютере */
@media (max-width: 900px) {
  body.menu-open .rail .nav-item.nav-featured:not(.active) { background: transparent; color: var(--accent-ink); box-shadow: none; }
  body.menu-open .rail .nav-item.nav-featured .ic { color: var(--accent); }
}
/* ── Слой 9. Демо: метка «данные вымышленные» (08.10.2026, правки 2) ─────────────── */
.tb-demo { display: inline-flex; align-items: center; gap: 6px; flex: none; height: 28px; padding: 0 10px; border-radius: 999px;
  font-size: 12px; font-weight: 600; color: var(--ink-2); background: var(--hover); white-space: nowrap; cursor: help; }
.tb-demo[hidden] { display: none; }
.tb-demo .ic { width: 15px; height: 15px; color: var(--ink-3); }
.tb-demo-short { display: none; }
@media (min-width: 901px) and (max-width: 1599px) { .tb-demo-full { display: none; } .tb-demo-short { display: inline; } }
@media (max-width: 900px) { .tb-sub .tb-demo { flex: 1 1 100%; justify-content: center; height: 32px; } }/* телефон: рядом с логотипом — название сервиса (08.10.2026) */
.tb-brand { align-items: center; gap: 8px; color: var(--ink); text-decoration: none; }
.tb-brand-name { font-size: 16px; font-weight: 650; letter-spacing: -.02em; white-space: nowrap; }
@media (max-width: 340px) { .tb-brand-name { display: none; } }
/* ── Слой 10. Телефон: кнопка меню привлекает внимание (08.10.2026, просьба Родиона) ──────────────
   Пока человек ни разу не открыл меню — кнопка оранжевая и от неё расходится мягкое кольцо (раз в 2,4 с).
   После первого открытия (body.menu-seen, запоминается) — обычная кнопка. «Уменьшить движение» — неподвижная обводка. */
@keyframes tb-menu-pulse {
  0% { box-shadow: 0 0 0 0 rgba(242, 85, 44, .45); }
  70% { box-shadow: 0 0 0 12px rgba(242, 85, 44, 0); }
  100% { box-shadow: 0 0 0 0 rgba(242, 85, 44, 0); }
}
@media (max-width: 900px) {
  body:not(.menu-seen) .topbar .tb-menu { position: relative; color: var(--accent); border-color: var(--accent); }
  body:not(.menu-seen) .topbar .tb-menu::after { content: ""; position: absolute; inset: -1px; border-radius: inherit; pointer-events: none;
    animation: tb-menu-pulse 2.4s cubic-bezier(.22, .61, .36, 1) infinite; }
}
@media (max-width: 900px) and (prefers-reduced-motion: reduce) {
  body:not(.menu-seen) .topbar .tb-menu::after { animation: none; box-shadow: 0 0 0 3px rgba(242, 85, 44, .25); }
}
/* ── Слой 11. Телефон, демо: «Начать бесплатно» прямо в шапке (08.10.2026, просьба Родиона) ──────────
   Шапка прилипает к верху, поэтому кнопка видна всегда; в демо она стоит вместо надписи «ДиректГуру» рядом с логотипом.
   Уже 375 px — «Регистрация». На компьютере подписи прежние (полная / короткая). */
.tb-reg-phone { display: none; }
@media (max-width: 900px) {
  .topbar .tb-register { flex: none; height: 34px; padding: 0 12px; font-size: 13px; margin-right: auto; }
  .topbar .tb-register .tb-reg-full, .topbar .tb-register .tb-reg-short { display: none; }
  .topbar .tb-register .tb-reg-phone { display: inline; }
  .topbar:has(#demo-register:not([hidden])) .tb-brand { margin-right: 0; }
  .topbar:has(#demo-register:not([hidden])) .tb-brand-name { display: none; }
}
@media (max-width: 374px) {
  .topbar .tb-register .tb-reg-phone { display: none; }
  .topbar .tb-register .tb-reg-short { display: inline; }
}
/* ── Слой 9. Админка на телефоне (10.10.2026, правки Родиона) ─────────────────
   Шапка прилипает к верху, справа — только значки (колокольчики без подписей, подписи — в aria-label и title).
   Меню — на весь экран, как в приложении: заголовок «Меню» и крестик, ниже разделы, внизу «В сервис» и тема. */
.admin-m-head, .admin-m-tools { display: none; }
@media (max-width: 760px) {
  body.admin-page.nav-open { overflow: hidden; }
  .admin-page .admin-nav { box-shadow: none; }
  .admin-page.nav-open .admin-nav { display: flex; flex-direction: column; position: fixed; inset: 0; z-index: 200; width: auto; height: 100dvh;
    padding: 12px 16px calc(24px + env(safe-area-inset-bottom)); border: 0; background: var(--surface); overflow-y: auto; overscroll-behavior: contain; }
  .admin-page.nav-open .admin-nav > :is(.admin-brand, .muted) { display: none; }
  .admin-m-head { display: flex; align-items: center; justify-content: space-between; min-height: 44px; margin-bottom: 8px; }
  .admin-m-title { font-size: 20px; font-weight: 650; letter-spacing: -.015em; }
  .admin-page .admin-nav a { min-height: 44px; font-size: 15px; }
  .admin-m-tools { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; padding-top: 12px;
    border-top: 1px solid var(--line-soft); }
  .admin-m-theme { display: inline-flex; gap: 6px; }
  .admin-page .admin-header { position: sticky; top: 0; z-index: 40; margin: -18px -14px 16px; padding: 8px 12px; min-height: 56px;
    align-items: center; flex-wrap: nowrap; gap: 8px; background: var(--glass-strong); border-bottom: 1px solid var(--line);
    backdrop-filter: blur(30px) saturate(190%); -webkit-backdrop-filter: blur(30px) saturate(190%); }
  .admin-header > div:first-child { min-width: 0; flex: 1 1 auto; }
  .admin-header .admin-actions { flex-wrap: nowrap; min-width: 0; }
  .admin-page .admin-header h1 { min-width: 0; font-size: 17px; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .admin-header #admin-subtitle { display: none; }
  .admin-page .admin-tools { flex: none; max-width: none; flex-wrap: nowrap; gap: 6px; }
  .admin-tools :is(#admin-light, #admin-dark) { display: none; }
  .admin-page .admin-tools .bell { width: var(--h-m); height: var(--h-m); padding: 0; justify-content: center; font-size: 0; }
  .admin-tools .bell > span:not(.admin-count) { display: none; }
  .admin-page .admin-tools .bell .ic { margin: 0; }
  .admin-tools .bell .admin-count { font-size: 11px; }
}
@media (max-width: 760px) and (prefers-reduced-transparency: reduce) {
  .admin-page .admin-header { background: var(--surface); -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* ── Слой 10. Админка: ежедневная работа (10.10.2026) ──────────────────────────
   «Сегодня» — строки очереди с причиной, временем ожидания и действием; счётчики в меню; общий поиск (Ctrl+K);
   выбранная клавишами строка; подсказка по клавишам. Кнопки — плоские, радиус 10, при наведении не меняются. */
.admin-nav a { position: relative; }
.admin-nav-count { margin-left: auto; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--surface-2);
  color: var(--ink-2); font-size: 12px; font-weight: 650; line-height: 20px; text-align: center; font-variant-numeric: tabular-nums; }
.admin-nav a[data-section="today"] .admin-nav-count, .admin-nav a[data-section="support"] .admin-nav-count { background: var(--btn-bg); color: var(--btn-ink); }
.admin-today { list-style: none; margin: 0; padding: 0; }
.admin-today-item { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 6px 16px; padding: 12px 4px 12px 14px;
  border-top: 1px solid var(--line-soft); border-radius: var(--r-ctrl); }
.admin-today-item:first-child { border-top: 0; }
.admin-today-item.late { box-shadow: inset 3px 0 0 var(--accent); }
.admin-today-main { display: grid; gap: 3px; min-width: 0; color: var(--ink); text-decoration: none; }
.admin-today-main b { font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.admin-today-main .sub { font-size: 13px; color: var(--ink-3); overflow-wrap: anywhere; }
.admin-age { font-size: 12px; color: var(--ink-3); white-space: nowrap; font-variant-numeric: tabular-nums; }
.admin-today-item.late .admin-age { color: var(--accent-ink); font-weight: 650; }
.admin-today-empty h2 { margin-top: 0; }
.admin-page :is(.admin-today-item, tbody tr).kbd { outline: 2px solid var(--focus); outline-offset: -2px; }
.admin-page tbody tr.kbd td { background: var(--hover); }
.admin-search { width: min(640px, calc(100vw - 24px)); margin-top: 10vh; }
.admin-search-head { display: flex; gap: 8px; padding: 14px; border-bottom: 1px solid var(--line-soft); }
.admin-search-head .field { flex: 1; height: var(--h-l); font-size: 15px; }
.admin-search-results { max-height: 55vh; overflow: auto; padding: 8px; }
.admin-search-results > .muted, .admin-search-results > .admin-error { padding: 10px 8px; margin: 0; }
.admin-search-item { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 2px 12px; padding: 9px 10px; border-radius: var(--r-ctrl);
  color: var(--ink); text-decoration: none; }
.admin-search-item b { font-weight: 600; overflow-wrap: anywhere; }
.admin-search-item .sub { grid-column: 2; font-size: 12px; color: var(--ink-3); overflow-wrap: anywhere; }
.admin-search-kind { grid-row: span 2; font-size: 12px; color: var(--ink-3); padding-top: 2px; }
.admin-search-item.active { background: var(--surface-2); box-shadow: inset 3px 0 0 var(--accent); }
.admin-search-hint { margin: 0; padding: 10px 16px 14px; font-size: 12px; border-top: 1px solid var(--line-soft); }
.admin-keys { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 10px 18px; margin: 0; }
.admin-keys dt { margin: 0; }
.admin-keys dd { margin: 0; color: var(--ink-2); }
kbd { display: inline-block; min-width: 22px; padding: 2px 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-2);
  font: 600 12px/1.4 inherit; color: var(--ink); text-align: center; }
@media (max-width: 760px) {
  .admin-today-item { grid-template-columns: minmax(0, 1fr) auto; padding-left: 10px; }
  .admin-today-item .admin-actions { grid-column: 1 / -1; }
  .admin-search { margin-top: 12px; }
  .admin-search-item { grid-template-columns: minmax(0, 1fr); }
  .admin-search-kind { grid-row: auto; }
  .admin-search-item .sub { grid-column: 1; }
  .admin-tools #admin-search-open { display: inline-flex; }
}

/* ── Слой 11. Таблицы админки (10.10.2026) ─────────────────────────────────────
   Заголовок: название сортирует (↑ ↓), воронка — фильтр, как в Мастере отчётов. Над таблицей — счётчик и инструменты,
   под ней — «Показать ещё». Длинная таблица прокручивается внутри, шапка закреплена. */
.admin-page .grid-hide, .admin-page .grid-off { display: none; }
.th-wrap { display: inline-flex; align-items: center; gap: 2px; max-width: 100%; }
.th-sort { display: inline-flex; align-items: center; gap: 4px; min-height: 28px; padding: 0 4px; margin-left: -4px; border: 0; border-radius: 6px;
  background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.th-arrow { width: 10px; color: var(--accent); font-size: 11px; }
th[data-dir="asc"] .th-arrow::after { content: "↑"; }
th[data-dir="desc"] .th-arrow::after { content: "↓"; }
.admin-page th.sorted { color: var(--ink); }
.th-filter { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 6px; background: none;
  color: var(--ink-3); cursor: pointer; opacity: .55; }
.th-filter .ic { width: 14px; height: 14px; margin: 0; }
.admin-page th:hover .th-filter, .th-filter:focus-visible { opacity: 1; }
.th-filter.on { opacity: 1; color: var(--accent); background: var(--accent-wash); }
.admin-page :is(th, td).num .th-wrap { flex-direction: row-reverse; }
.grid-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 8px; }
.grid-count { font-size: 12px; font-variant-numeric: tabular-nums; }
.grid-tools { display: inline-flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
.grid-more { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 10px 0 0; }
.grid-more[hidden] { display: none; }
.grid-left { font-size: 12px; }
.admin-page .table-wrap.grid-scroll { max-height: min(72vh, 920px); overflow: auto; overscroll-behavior: contain; }
.admin-page .grid-scroll thead th { position: sticky; top: 0; z-index: 2; background: var(--surface-2); box-shadow: 0 1px 0 var(--line-soft); }
.admin-page table.dense :is(th, td) { padding-top: 5px; padding-bottom: 5px; }
.admin-page table.dense .sub { margin-top: 1px; }
.grid-pop { position: absolute; z-index: 300; padding: 12px; border: 1px solid var(--line); border-radius: var(--r-float); background: var(--surface);
  box-shadow: 0 18px 50px rgba(16, 24, 40, .18); }
.grid-pop-form { display: grid; gap: 10px; }
.grid-pop-form > b { font-size: 13px; }
.grid-vals { display: grid; gap: 4px; max-height: 260px; overflow: auto; }
.grid-vals .check { font-size: 13px; }
.grid-views { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-left: auto; }
.grid-views .field { min-width: 150px; }
.pick-cell { width: 34px; }
.admin-page :is(th, td):first-child:has(> .grid-pick, > #pick-all) { width: 34px; padding-right: 0; }
.grid-pick, #pick-all { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }
.admin-bulk { position: sticky; top: 8px; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; padding: 10px 12px;
  border: 1px solid var(--line); border-radius: var(--r-pane); background: var(--surface); box-shadow: inset 3px 0 0 var(--accent); }
.admin-bulk[hidden] { display: none; }
.admin-bulk b { margin-right: 4px; font-size: 13px; }
@media (max-width: 760px) {
  .grid-tools, .grid-views { margin-left: 0; }
  .admin-bulk { top: 64px; }
  .admin-page .table-wrap.grid-scroll { max-height: none; }
  .admin-page .grid-scroll thead th { position: static; }
}

/* ── Слой 12. Карточка клиента в админке (10.10.2026) ───────────────────────────
   «Использование» со столбиками входов за 30 дней, лента событий, свёрнутый журнал «было → стало», окно пользователя. */
.admin-spark { display: flex; align-items: flex-end; gap: 3px; height: 44px; margin: 14px 0 4px; }
.admin-spark span { flex: 1; min-width: 3px; border-radius: 3px 3px 1px 1px; background: var(--line); }
.admin-spark span.on { background: var(--series-2); }
.admin-spark-cap { margin: 0; font-size: 12px; }
.admin-feed { list-style: none; margin: 0; padding: 0; }
.admin-feed li { display: grid; grid-template-columns: 128px 132px minmax(0, 1fr); gap: 4px 14px; padding: 9px 0; border-top: 1px solid var(--line-soft); }
.admin-feed li:first-child { border-top: 0; }
.admin-feed-at { font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.admin-feed-kind { font-size: 12px; color: var(--ink-3); }
.admin-feed li:is(.k-money) .admin-feed-kind { color: var(--accent-ink); font-weight: 600; }
.admin-feed-body { display: grid; gap: 2px; min-width: 0; }
.admin-feed-body b { font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.admin-feed-body .sub { font-size: 12px; color: var(--ink-3); overflow-wrap: anywhere; }
.admin-more > summary { cursor: pointer; font-weight: 600; }
.admin-more[open] > summary { margin-bottom: 14px; }
.admin-person-acts { margin: 14px 0 6px; }
.admin-dialog h3 { margin: 20px 0 8px; font-size: 14px; }
.admin-page .btn.danger, .admin-dialog .btn.danger { color: var(--critical); border-color: color-mix(in srgb, var(--critical) 45%, var(--line)); }
@media (max-width: 760px) {
  .admin-feed li { grid-template-columns: minmax(0, 1fr) auto; }
  .admin-feed-body { grid-column: 1 / -1; }
}

/* ── Слой 13. Аналитика в админке (10.10.2026) ──────────────────────────────── */
.admin-funnel { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.admin-funnel li { display: grid; grid-template-columns: 220px minmax(0, 1fr) 56px; align-items: center; gap: 4px 14px; }
.admin-funnel li > .muted { grid-column: 2 / -1; font-size: 12px; }
.admin-funnel-title { font-size: 14px; }
.admin-funnel-bar { height: 14px; border-radius: 7px; background: var(--surface-2); overflow: hidden; }
.admin-funnel-bar > span { display: block; height: 100%; border-radius: 7px; background: var(--series-2); }
.admin-funnel li:last-child .admin-funnel-bar > span { background: var(--btn-bg); }
.admin-funnel b { font-size: 18px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.admin-page td.admin-heat { background: color-mix(in srgb, var(--series-2) calc(var(--p) * .6%), transparent); font-variant-numeric: tabular-nums; }
.admin-page td.admin-neg { color: var(--critical); }
@media (max-width: 760px) {
  .admin-funnel li { grid-template-columns: minmax(0, 1fr) 48px; }
  .admin-funnel-bar { grid-column: 1 / -1; grid-row: 2; }
  .admin-funnel li > .muted { grid-column: 1 / -1; }
}

/* ── Слой 14. Поддержка и система в админке (10.10.2026) ───────────────────────
   Строка обращения, ждущего дольше цели (4 ч), — с акцентной кромкой; быстрые ответы под полем; версии и группы ошибок. */
.admin-page tbody tr.admin-late td:first-child { box-shadow: inset 3px 0 0 var(--accent); }
.admin-page tbody tr.admin-late td[data-sort] { color: var(--accent-ink); font-weight: 600; }
.admin-page tbody tr.admin-dim td { color: var(--ink-3); }
.admin-quick { display: grid; gap: 2px; margin-top: 6px; padding: 6px; border: 1px solid var(--line); border-radius: var(--r-ctrl); background: var(--surface); }
.admin-quick[hidden] { display: none; }
.admin-quick-item { display: grid; gap: 2px; padding: 8px 10px; border: 0; border-radius: 8px; background: none; color: var(--ink); font: inherit;
  text-align: left; cursor: pointer; }
.admin-quick-item .sub { font-size: 12px; color: var(--ink-3); }
.admin-quick-item.active { background: var(--surface-2); box-shadow: inset 3px 0 0 var(--accent); }
.admin-releases details { padding: 10px 0; border-top: 1px solid var(--line-soft); }
.admin-releases summary { cursor: pointer; }
.admin-releases .admin-text { margin-top: 8px; }
.admin-brief { margin: 0; }

/* Волна Б (11.10.2026): метка канала соцсети или мессенджера в срезе «Площадки» и сводка по ним */
.chan-tag { display: inline-flex; align-items: center; margin-left: 8px; padding: 1px 8px; border-radius: var(--r-pill);
  font-size: 11.5px; font-weight: 600; color: var(--ink-2); background: var(--hover); white-space: nowrap; }
.bd-chans { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 0 18px 12px; font-size: 13px; color: var(--ink-2); }
.bd-chans .chan-tag { margin: 0 6px 0 0; }
.bd-chan { display: inline; }   /* inline-flex съедал пробел перед «·» */

/* Права по кабинету (11.10.2026): кто ещё видит кабинет — флажки в паспорте */
.pp-viewers { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 4px; }

/* Разбор «нет показов / заявок» по шагам (11.10.2026) */
.dg-bar { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin-bottom: 12px; }
.dg-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.dg-step { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; }
.dg-step.bad { border-color: color-mix(in srgb, var(--critical) 45%, var(--line)); }
.dg-step.warn { border-color: color-mix(in srgb, var(--warning) 45%, var(--line)); }
.dg-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-bottom: 2px; }
.dg-act { display: flex; gap: 6px; align-items: flex-start; margin-top: 6px; font-size: 13px; color: var(--ink-2); }
.dg-act .ic { width: 14px; height: 14px; flex: none; margin-top: 2px; }
.dg-camp { min-width: 220px; max-width: 100%; padding-right: 32px; }
