/* © 2026 VEYRO (ИП Макаров И. В.). appagent — проприетарная программа. Использование — по лицензионному договору https://appagent.ru/legal/offer/. Копирование и распространение без разрешения запрещены. */
/* Экран «Очередь» и вкладка проекта «Очередь» (общий список). Подключён в index.html после project.css; значения — только из tokens.css, размеры в rem.
   Плитки и чипы — kit (base.css, kit.css). Раскладка: 390 — одна колонка, строка в два яруса; с 48rem — счётчики в ряд, строка в один ряд;
   с 64rem — блоки «Запускайте» и статистика работы рядом. Движение — только transform и opacity (перестановка FLIP и сдвиг при перетаскивании);
   при prefers-reduced-motion строки встают на место сразу.
   Секция «План очереди» (.qp, queue-plan.js): сворачиваемая плитка над списком; пакеты — в колонку на 390, сеткой с 48rem; кнопка на всю ширину на 390. */

.qz { display: grid; gap: var(--tile-gap); min-width: 0; }
.qz__err:empty, .qz__plan:empty { display: none; }
.qz__plan { min-width: 0; }
.qz__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3) var(--space-4); }
.qz__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tile-gap); align-content: start; min-width: 0; }
.qz__body > * { min-width: 0; }

/* ---------- Счётчики ---------- */
.qz-counters { display: grid; gap: var(--space-4); }
.qz-kpis { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.qz-full { margin: 0; color: var(--color-warn-text); }

/* ---------- Секции со списками ---------- */
.qz-secs { display: grid; gap: var(--tile-gap); min-width: 0; }
.qz-sec, .qz-sug, .qz-speed, .qz-empty { display: grid; gap: var(--space-4); align-content: start; }
.qz-sec > *, .qz-sug > *, .qz-speed > * { margin: 0; }
.qz-sec__h { display: grid; gap: var(--space-1); }
.qz-sec__h > p { margin: 0; color: var(--color-ink2); }
.qz-sec__t {
  margin: 0; display: flex; align-items: baseline; gap: var(--space-3);
  font: var(--text-h3-weight) var(--text-h3-size)/var(--text-h3-line) var(--text-h3-family); letter-spacing: var(--text-h3-track);
}
.qz-sec__n { color: var(--color-ink2); font: var(--text-ui-weight) var(--text-ui-size)/1 var(--font-sans); font-variant-numeric: tabular-nums; }
.qz-sec > .caption, .qz-sug .caption, .qz-speed .caption { color: var(--color-ink2); }

.qz-list { list-style: none; margin: 0; padding: 0; display: grid; }
.qz-row {
  position: relative; display: grid; grid-template-columns: var(--size-touch-min) minmax(0, 1fr); gap: var(--space-2) var(--space-3);
  align-items: center; padding-block: var(--space-3); border-top: 1px solid var(--color-line); background-color: transparent;
}
.qz-row:first-child { border-top: 0; }
.qz-main { grid-column: 2; grid-row: 1; display: grid; gap: var(--space-1); min-width: 0; }
.qz-main > p { margin: 0; overflow-wrap: anywhere; }
.qz-row > .ui-chip { grid-column: 2; grid-row: 2; justify-self: start; }
.qz-grip { grid-column: 1; grid-row: 1; }
.qz-act { grid-column: 2; grid-row: 3; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); min-width: 0; }
.qz-act:empty { display: none; }
.qz-prio { color: var(--color-ink2); }
.qz-prio[data-prio="P1"] { color: var(--color-ink); font-weight: var(--weight-medium); }
.qz-row[data-busy="true"] { opacity: .6; }

/* Ручка: кнопка 44 px; у задач, которые нельзя переставлять, на её месте пусто, чтобы текст не прыгал */
.qz-grip {
  display: grid; place-items: center; width: var(--size-touch-min); height: var(--size-touch-min); padding: 0;
  background: none; border: 0; border-radius: var(--radius-sm); color: var(--color-ink3); cursor: grab;
  touch-action: none; user-select: none; -webkit-user-select: none;
  transition: color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);
}
.qz-grip:hover { color: var(--color-ink); background: var(--surface-inner-hover); }
.qz-grip[aria-disabled="true"] { cursor: progress; }
.qz-grip__ic { fill: currentColor; stroke: none; }
.qz-grip--off { visibility: hidden; cursor: default; pointer-events: none; }
.qz-list.is-dragging, .qz-list.is-dragging * { cursor: grabbing; user-select: none; -webkit-user-select: none; }

/* Перетаскивание: поднятая строка идёт за указателем, остальные плавно раздвигаются (сдвиг ставит скрипт) */
.qz-list.is-dragging .qz-row { will-change: transform; }
.qz-list.is-dragging .qz-row:not(.is-lifted) { transition: transform var(--duration-fast) var(--ease-out); }
.qz-row.is-lifted {
  z-index: var(--z-sticky); background-color: var(--color-panel); border-radius: var(--radius-md); box-shadow: var(--shadow-md);
  transition: box-shadow var(--duration-fast) var(--ease-out);
}

/* Кнопки действий и меню «…» */
.qz-act__b { flex: none; }
.qz-btn {
  display: grid; place-items: center; width: var(--size-touch-min); height: var(--size-touch-min); padding: 0;
  background: none; border: 1px solid var(--color-line2); border-radius: var(--radius-md); color: var(--color-ink2); cursor: pointer;
  transition: color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);
}
.qz-btn:hover { color: var(--color-ink); background: var(--surface-inner-hover); }
.qz-menu { display: inline-block; }
.qz-menu .ui-pop { padding: var(--space-2); gap: var(--space-1); min-width: 12rem; }
.qz-menu__i {
  display: flex; align-items: center; width: 100%; min-height: var(--size-touch-min); padding: 0 var(--space-3);
  background: none; border: 0; border-radius: var(--radius-sm); color: var(--color-ink); text-align: left; cursor: pointer;
  font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.qz-menu__i:hover { background: var(--surface-inner-hover); }

/* ---------- «Запускайте» ---------- */
.qz-sug__list { list-style: none; margin: 0; padding: 0; display: grid; }
.qz-sug__row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-2) var(--space-4); align-items: center;
  padding-block: var(--space-3); border-top: 1px solid var(--color-line);
}
.qz-sug__row:first-child { border-top: 0; }
.qz-sug__row .qz-main { grid-column: 1; }
.qz-why { color: var(--color-ink); }
.qz-none { color: var(--color-ink2); font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); }

/* ---------- Статистика работы ---------- */
.qz-speed__list { margin: 0; display: grid; gap: var(--space-3); }
.qz-speed__row { display: grid; gap: var(--space-1); }
.qz-speed__row > dd { margin: 0; overflow-wrap: anywhere; }
.qz-speed__chart { display: grid; gap: var(--space-2); }
.qz-bars { width: 100%; height: var(--space-12); display: block; }
.qz-bars__b { fill: var(--color-ink2); }

/* ---------- Пусто, завершённые ---------- */
.qz-empty > p { margin: 0; }
.qz-closed { display: grid; gap: var(--tile-gap); }
.qz-closed__s { display: inline-flex; align-items: center; min-height: var(--size-touch-min); cursor: pointer; }
.qz-closed[open] > .qz-closed__s { margin-bottom: var(--space-2); }

/* ---------- Форма «Новая задача» ---------- */
.qz-form { display: grid; gap: var(--space-4); min-width: min(100%, 28rem); }
.qz-field { display: grid; gap: var(--space-2); min-width: 0; }
.qz-field > label { color: var(--color-ink2); }
.qz-two { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); }
.qz-input {
  width: 100%; min-width: 0; min-height: var(--size-control); padding: 0 var(--space-3);
  background: var(--color-bg2); color: var(--color-ink); border: 1px solid var(--color-line2); border-radius: var(--radius-md);
  font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.qz-input--area { padding: var(--space-3); resize: vertical; }
.qz-input:hover { border-color: var(--color-ink3); }
.qz-input[aria-invalid="true"] { border-color: var(--color-danger-text); }
.qz-field--check { display: flex; align-items: center; gap: var(--space-3); min-height: var(--size-touch-min); }
.qz-field--check > label { color: var(--color-ink); }
.qz-check { flex: none; width: var(--size-icon); height: var(--size-icon); margin: 0; accent-color: var(--color-acc); }
.qz-ferr { margin: 0; color: var(--color-danger-text); overflow-wrap: anywhere; }
.qz-ferr:empty { display: none; }
.qz-hint { margin: 0; color: var(--color-ink2); }

/* ---------- «План очереди» ---------- */
.qp { min-width: 0; }
.qp__d { display: grid; gap: var(--space-4); min-width: 0; }
.qp__s {
  display: list-item; min-height: var(--size-touch-min); padding-block: var(--space-2); cursor: pointer; color: var(--color-ink);
}
.qp__t {
  display: inline; margin: 0; margin-inline-end: var(--space-3);
  font: var(--text-h3-weight) var(--text-h3-size)/var(--text-h3-line) var(--text-h3-family); letter-spacing: var(--text-h3-track);
}
.qp__sum { color: var(--color-ink2); }
.qp__b { display: grid; gap: var(--space-5); min-width: 0; }
.qp__b > * { margin: 0; min-width: 0; }
.qp__none { color: var(--color-ink2); font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); }
.qp-wave, .qp-prop { display: grid; gap: var(--space-3); align-content: start; }
.qp-wave__t {
  margin: 0; color: var(--color-ink2);
  font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); font-weight: var(--weight-medium);
}
.qp-pkgs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-3); }
.qp-pkg {
  display: grid; gap: var(--space-2); align-content: start; min-width: 0; padding: var(--space-4);
  background: var(--surface-inner); border: 1px solid var(--color-line); border-radius: var(--radius-md);
}
.qp-pkg > * { margin: 0; overflow-wrap: anywhere; }
.qp-pkg__t { color: var(--color-ink); font: var(--text-ui-strong-weight) var(--text-body-size)/var(--text-body-line) var(--font-sans); }
.qp-pkg__meta { color: var(--color-ink2); }
.qp-pkg__meta[data-custom="true"] { color: var(--color-warn-text); }
.qp-pkg__why { color: var(--color-ink); }
.qp-cards, .qp-facts, .qp-prop__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-1); }
.qp-card { overflow-wrap: anywhere; font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); }
.qp-card__id { color: var(--color-ink2); font-variant-numeric: tabular-nums; }
.qp-facts .caption { color: var(--color-ink2); }
.qp__note, .qp__unplaced, .qp__hint, .qp-prop__cards { color: var(--color-ink2); }
.qp-prop__row { display: grid; gap: var(--space-1); padding-block: var(--space-2); border-top: 1px solid var(--color-line); }
.qp-prop__row:first-child { border-top: 0; }
.qp-prop__row > p { margin: 0; overflow-wrap: anywhere; }
.qp__act { display: grid; gap: var(--space-2); justify-items: stretch; }
.qp__act > p { margin: 0; }
.qp__apply { min-height: var(--size-touch-min); width: 100%; }

/* Запуск идёт: кнопка остаётся на месте (aria-disabled, фокус не теряется), повторное нажатие не срабатывает */
.qz .btn[aria-disabled="true"] { opacity: .6; cursor: progress; }
.qz .qp__apply[aria-describedby][aria-disabled="true"] { cursor: not-allowed; }

/* ---------- Раскладка ---------- */
@media (min-width: 48rem) {
  .qp-pkgs { grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); }
  .qp__act { justify-items: start; }
  .qp__apply { width: auto; min-width: 16rem; }
  .qz-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .qz-row { grid-template-columns: var(--size-touch-min) minmax(0, 1fr) auto auto; }
  .qz-row > .ui-chip { grid-column: 3; grid-row: 1; justify-self: end; }
  .qz-act { grid-column: 4; grid-row: 1; justify-content: flex-end; flex-wrap: nowrap; }
}
@media (min-width: 64rem) {
  .qz__body { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .qz-counters, .qz-empty, .qz-secs, .qz-closed { grid-column: 1 / -1; }
  .qz-counters { grid-row: 1; }
  .qz-sug { grid-column: 1; grid-row: 2; }
  .qz-speed { grid-column: 2; grid-row: 2; }
  .qz-secs { grid-row: 3; }
  .qz-closed { grid-row: 4; }
}

/* Без анимаций: перестановка и сдвиги мгновенные (FLIP в скрипте тоже отключается) */
@media (prefers-reduced-motion: reduce) {
  .qz-list.is-dragging .qz-row:not(.is-lifted), .qz-row.is-lifted, .qz-grip, .qz-btn { transition: none; }
}

/* ---------- Загрузка (.ld) ----------
   Экран «Загрузка» (queue.js, mountLoad): шапка, «Ресурсы», секции «Работают сейчас», «Кто следующий» и «Приоритет проектов» (две колонки с 27.5rem на колонку),
   «Нагрузка за сутки». Карточки лидов и плашки — фон одним токеном --surface-card (панель темы), рамка --color-line, без стекла и тёплых оттенков.
   Статусы — точка и серый текст, без цветных плашек. Шкала — нативный <progress> (kit.css .ui-progress) с цветом по тону,
   метка предела — SVG-линия. На 390 (до 40rem) всё в одну колонку, шапка переносится. Размеры — rem и токены, цвета — только var(--…). */
.ld { display: grid; gap: var(--space-8); min-width: 0; }
.ld__head, .ld__body { min-width: 0; }
.ld__body { display: grid; gap: var(--space-8); align-content: start; }
.ld__body > * { min-width: 0; }
.ld-wait { margin: 0; }

/* Шапка: заголовок слева, справа в одну линию выбор числа лидов и пауза всех проектов; пояснения к ним — подсказкой */
.ld-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-4) var(--space-5); }
.ld-head__t { display: grid; gap: var(--space-1); min-width: 0; }
.ld-head__t > * { margin: 0; }
.ld-head__acts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); min-width: 0; }
.ld-hint { margin: 0; color: var(--color-ink2); overflow-wrap: anywhere; max-width: var(--layout-measure); }

.ld-pick {
  display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--size-ctl); padding: 0 var(--space-2) 0 var(--space-4);
  background: var(--color-panel); color: var(--color-ink); border: 1px solid var(--color-line2); border-radius: var(--radius-ctl);
  font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.ld-pick:hover { border-color: var(--color-ink3); }
.ld-pick__l { color: var(--color-ink2); }
.ld-pick__s {
  min-height: var(--size-ctl-sm); padding: 0 var(--space-1); background: transparent; color: var(--color-ink); border: 0; cursor: pointer;
  font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.ld-pick__s:disabled { cursor: not-allowed; color: var(--color-ink2); }
.ld-pick__s[aria-disabled="true"], .ld-pause[aria-disabled="true"] { opacity: .6; cursor: progress; }
.ld-pause { min-height: var(--size-ctl); }

/* Секция: заголовок серым, тонкая линия под ним */
.ld-sec { display: grid; gap: var(--space-4); align-content: start; min-width: 0; }
.ld-sec__head {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-2) var(--space-4);
  padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-line);
}
.ld-sec__t {
  margin: 0; color: var(--color-ink2);
  font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--text-caption-family); font-weight: var(--weight-medium);
}
.ld-sec__body { display: grid; gap: var(--space-3); min-width: 0; }
.ld-sec__body:empty { display: none; }
/* Две ровные колонки одинаковой высоты: «Кто следующий» и «Приоритет проектов» */
.ld-pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 27.5rem), 1fr)); gap: var(--space-8) var(--space-6); align-items: stretch; }

/* Компьютеры: точка и серый текст */
.ld-comps { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-4); margin: 0; color: var(--color-ink2); }
.ld-comp {
  display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; overflow-wrap: anywhere;
  font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--text-caption-family);
}
.ld-dot { flex: none; width: var(--size-dot); height: var(--size-dot); border-radius: var(--radius-round); background: var(--color-ink3); }
.ld-dot[data-tone="ok"] { background: var(--color-ok); }
.ld-dot[data-tone="warn"] { background: var(--color-warn); }
.ld-dot[data-tone="bad"] { background: var(--color-danger); }

/* Плитки ресурсов */
/* Пять крупных чисел: на 1440 — в один ряд, на 768 — по три, на 390 — по два */
.ld-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); gap: var(--space-5) var(--space-6); }
.ld-tile { display: grid; gap: var(--space-2); align-content: start; min-width: 0; padding-block: var(--space-1); }
.ld-tile > * { margin: 0; min-width: 0; }
.ld-tile__l { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--text-caption-family); }
.ld-tile__v {
  color: var(--color-ink); font-family: var(--font-head); font-weight: var(--weight-medium); font-size: var(--text-number-lg-size);
  line-height: 1.1; letter-spacing: var(--text-number-lg-track); font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
}
.ld-tile__v--none { color: var(--color-ink2); font-size: var(--text-lead-size); font-weight: var(--weight-regular); letter-spacing: 0; }
.ld-tile__u { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-body-size)/var(--text-body-line) var(--font-sans); letter-spacing: 0; }
.ld-tile__n { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-label-size)/var(--text-body-line) var(--font-sans); overflow-wrap: anywhere; }

/* Шкала: цвет заливки по тону, метка предела поверх */
.ld-bar { position: relative; }
.ld-bar[data-tone="warn"] .ld-bar__p { --bar-fill: var(--color-warn); --bar-track: var(--color-track); }
.ld-bar[data-tone="bad"] .ld-bar__p { --bar-fill: var(--color-danger); --bar-track: var(--color-track); }
.ld-bar__mark {
  position: absolute; inset-inline: 0; top: calc(-1 * var(--space-1)); width: 100%; height: calc(var(--size-progress) + 2 * var(--space-1));
  pointer-events: none; overflow: visible;
}
.ld-bar__mark line { stroke: var(--color-ink2); stroke-width: 1; vector-effect: non-scaling-stroke; }

@media (min-width: 64rem) {
  .ld-tiles { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* 390: шапка в столбик, элементы управления на всю ширину и не ниже 44 px, плитки по две */
@media (max-width: 40rem) {
  .ld-head { align-items: stretch; }
  .ld-head__acts { flex-direction: column; align-items: stretch; width: 100%; }
  .ld-pick { justify-content: space-between; min-height: var(--size-touch-min); }
  .ld-pick__s, .ld-pause { min-height: var(--size-touch-min); }
  .ld-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5) var(--space-4); }
}

/* Без анимаций: заливка шкалы встаёт на место сразу, кнопки не плывут */
@media (prefers-reduced-motion: reduce) {
  .ld-bar__p::-webkit-progress-value { transition: none; }
  .ld .btn { transition: none; }
  .ld .btn:active { transform: none; }
}

/* ---------- Загрузка: секции (работают, следующие, проекты, сутки) ----------
   Статусы — точка и серый текст. Размеры — rem и токены, цвета — только var(--…); график — SVG по viewBox, без px в CSS. */
.ld-dot[data-tone="wait"] { background: var(--color-dot-wait); }
.ld-none { margin: 0; padding-block: var(--space-2); }
.ld-sec__body > ul, .ld-sec__body > ol { list-style: none; margin: 0; padding: 0; display: grid; }

/* Работают сейчас: карточки живых лидов (.ld-card) — auto-fill по ширине: 1 на 390, 2 на 768, 3–4 на 1440, 5 и больше на 1920 */
.ld-count { color: var(--color-ink2); }
.ld-sec__body > .ld-cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: var(--space-4); }
.ld-card { display: grid; align-content: start; gap: var(--space-2); min-width: 0; padding: var(--space-3) var(--space-3) var(--space-4) var(--space-5); }
/* Фон карточек и плашек — один токен панели; рамка — линия темы, как у плиток */
.ld-card, .ld-plate { background: var(--surface-card); border: 1px solid var(--color-line); border-radius: var(--radius-card); box-shadow: none; }
.ld-card > * { margin: 0; min-width: 0; }
.ld-card__top { display: flex; align-items: center; gap: var(--space-2); min-width: 0; min-height: var(--size-ctl-sm); }
/* Статус карточки-вопроса: знак паузы и слово (waitingMark) или точка после ответа; длинное слово переносится */
.ld-card__st { display: inline-flex; align-items: center; gap: var(--space-2); flex: 0 1 auto; min-width: 0; }
.ld-card[data-waiting="true"] > .ld-card__top { flex-wrap: wrap; row-gap: var(--space-1); }
.ld-card__proj {
  flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--color-ink); text-decoration: none; font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
a.ld-card__proj:hover { text-decoration: underline; text-underline-offset: .2em; }
.ld-card__task {
  color: var(--color-ink); font: var(--text-body-weight) var(--text-body-size)/var(--text-body-line) var(--font-sans); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
}
.ld-card__stage { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans); }
.ld-card__prog { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-3); padding-block: var(--space-1); }
.ld-card__pt { color: var(--color-ink2); font-size: var(--text-caption-size); white-space: nowrap; }
.ld-prog { color: var(--color-ink); }
.ld-card__meta {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr)); gap: var(--space-2) var(--space-4);
  margin-top: var(--space-1); padding-top: var(--space-3); border-top: 1px solid var(--glass-border);
}
.ld-card__m { display: grid; gap: var(--space-1); align-content: start; min-width: 0; }
.ld-card__ml { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-label-size)/var(--text-label-line) var(--font-sans); }
.ld-card__mv {
  display: grid; gap: var(--space-1); margin: 0; color: var(--color-ink); overflow-wrap: anywhere;
  font: var(--text-ui-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); font-variant-numeric: var(--num-features);
}
/* Тонкая полоса расхода под суммой: доля от потолка в долларах */
.ld-thin { display: block; }
.ld-thin__p { height: .125rem; }
.ld-thin[data-tone="warn"] .ld-thin__p { --bar-fill: var(--color-warn); --bar-track: var(--color-track); }

/* «Пауза» в углу карточки: спокойная иконка-кнопка без рамки; подпись — aria-label и подсказка */
.ld-ibtn {
  flex: none; display: grid; place-items: center; width: var(--size-ctl-sm); height: var(--size-ctl-sm); margin-inline-start: auto; padding: 0;
  background: transparent; border: 0; border-radius: var(--radius-round); color: var(--color-ink2); cursor: pointer;
  transition: color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);
}
.ld-ibtn:hover { color: var(--color-ink); background: var(--surface-inner-hover); }
.ld-ibtn .ic { width: var(--size-icon); height: var(--size-icon); }

/* «Остановлены · N»: свёрнутая строка под карточками, внутри — задача и причина */
.ld-stopped { min-width: 0; }
.ld-stopped__s {
  display: inline-flex; align-items: center; min-height: var(--size-ctl-sm); cursor: pointer; color: var(--color-ink2);
  font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans);
}
.ld-stopped__s:hover { color: var(--color-ink); }
.ld-stopped__l { list-style: none; margin: var(--space-1) 0 0; padding: 0; display: grid; }
.ld-stopped__r {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-1) var(--space-4); padding-block: var(--space-2);
  border-top: 1px solid var(--color-line); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans);
}
.ld-stopped__t { min-width: 0; color: var(--color-ink); overflow-wrap: anywhere; }
.ld-stopped__w { color: var(--color-ink2); }

/* Плашки «Кто следующий» и «Приоритет проектов»: тот же фон карточки, компактнее; одна серая подпись */
.ld-sec__body > .ld-nexts, .ld-sec__body > .ld-prios { gap: var(--space-2); }
.ld-plate { min-width: 0; padding: var(--space-3) var(--space-4); }
.ld-sub { color: var(--color-ink2); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans); overflow-wrap: anywhere; }
/* «Пауза» ↔ «Продолжить»: подпись в одну строку и одна ширина — колонка действий ровная; касание 44 px — в мобильном блоке ниже */
.ld .ld-act { white-space: nowrap; justify-content: center; min-width: 7rem; min-height: var(--size-ctl); }
.ld .ld-act--quiet { background: transparent; border-color: var(--color-line2); color: var(--color-ink2); }
.ld .ld-act--quiet:hover:not(:disabled) { color: var(--color-ink); border-color: var(--color-ink3); }

/* Кто следующий */
.ld-next { display: grid; grid-template-columns: 1.5rem minmax(0, 1fr); align-items: start; gap: var(--space-1) var(--space-2); }
.ld-next__n { color: var(--color-ink2); line-height: var(--text-ui-line); }
.ld-next__b { display: grid; gap: var(--space-1); min-width: 0; }
.ld-next__b > * { min-width: 0; margin: 0; }
.ld-next__h { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
.ld-next__t { min-width: 0; font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); overflow-wrap: anywhere; }
.ld-next__go, .ld-more { margin: 0; }

/* Приоритет проектов: сетка «название | приоритет | действие» — на 1440 поля всех строк на одной вертикали */
.ld-prio { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-2) var(--space-3); }
.ld-prio__b { grid-column: 1 / -1; display: grid; gap: var(--space-1); min-width: 0; }
.ld-prio__n { display: flex; align-items: center; gap: var(--space-2); min-width: 0; font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans); overflow-wrap: anywhere; }
.ld-prio__a { display: flex; align-items: center; justify-content: flex-end; min-width: 0; }
.ld-prio__a .ld-act { align-self: center; }
/* Выбор приоритета проекта: подпись и список в рамке одной ширины */
.ld-psel {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); min-width: 0; width: 100%; min-height: var(--size-ctl);
  padding: 0 var(--space-2) 0 var(--space-3);
  background: transparent; color: var(--color-ink); border: 1px solid var(--color-line2); border-radius: var(--radius-ctl);
}
.ld-psel:hover { border-color: var(--color-ink3); }
.ld-psel:focus-within { border-color: var(--color-ink2); }
.ld-psel__l { color: var(--color-ink2); }
/* Список занимает остаток рамки и сжимается, поэтому стрелка остаётся внутри неё */
.ld-psel__s {
  flex: 1 1 auto; min-width: 0; text-overflow: ellipsis; min-height: var(--size-ctl-sm); padding: 0 var(--space-1); background: transparent; color: var(--color-ink); border: 0; cursor: pointer;
  font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.ld-psel__s option { background: var(--color-panel); color: var(--color-ink); }
.ld-psel__s:disabled { cursor: progress; color: var(--color-ink2); }
@media (min-width: 48rem) {
  .ld-prio { grid-template-columns: minmax(0, 1fr) 11.5rem 7rem; }
  .ld-prio__b { grid-column: 1; }
}

/* Нагрузка за сутки */
.ld-leg { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-4); }
.ld-leg__lim { display: inline-flex; align-items: center; gap: var(--space-2); }
.ld-leg__line { width: .875rem; height: .125rem; overflow: visible; }
.ld-leg__line line { stroke: var(--color-danger); stroke-width: 2; stroke-dasharray: 3 2; }
.ld-chart { display: grid; gap: var(--space-2); min-width: 0; }
.ld-chart__svg { display: block; width: 100%; height: 10rem; border-bottom: 1px solid var(--color-line); overflow: visible; }
.ld-chart__b { fill: var(--color-ink3); fill-opacity: .55; }
.ld-chart__b[data-current="true"] { fill: var(--color-acc); fill-opacity: 1; }
.ld-chart__b[data-none="true"] { fill-opacity: .25; }
.ld-chart__lim { stroke: var(--color-danger); stroke-width: 1; stroke-dasharray: 6 4; stroke-opacity: .7; vector-effect: non-scaling-stroke; }
.ld-chart__x { display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); }
.ld-chart__h { display: block; text-align: center; white-space: nowrap; overflow: visible; font-size: var(--text-label-size); }

/* 390: касания не меньше 44 px — ссылки, иконка-пауза, «Остановлены», кнопки и выбор приоритета */
@media (max-width: 40rem) {
  a.ld-card__proj, .ld-next__go .link { display: inline-flex; align-items: center; min-height: var(--size-touch-min); }
  .ld-ibtn { width: var(--size-touch-min); height: var(--size-touch-min); margin-inline-end: calc(-1 * var(--space-1)); }
  .ld-stopped__s { min-height: var(--size-touch-min); }
  .ld .ld-act { min-height: var(--size-touch-min); }
  .ld-psel { min-height: var(--size-touch-min); }
  .ld-psel__s { min-height: var(--size-touch-min); flex: 1 1 auto; }
  .ld-chart__svg { height: 8rem; }
  .ld-hv > .ld-hv__go, .ld-card__hv > .ld-hv__go { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .ld-ibtn { transition: none; }
}

/* ---------- Загрузка: работы на паузе из-за нагрузки (смотритель нагрузки, system.heavyPaused) ----------
   Секция .ld-sec--heavy: плашки с командой (шрифт — общий .code), статусом и «Продолжить сейчас»; та же строка статуса — внутри карточки лида (.ld-card__hv).
   Фон — токен карточки (.ld-plate), цвета — только var(--…); кнопка — тихая, как «Пауза» в плашке проекта. */
.ld-hvs { gap: var(--space-2); }
.ld-hv { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3) var(--space-4); }
.ld-hv__b { display: grid; gap: var(--space-1); min-width: 0; flex: 1 1 16rem; }
.ld-hv__code { min-width: 0; overflow-wrap: anywhere; }
.ld-hv__s, .ld-card__hvs { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; color: var(--color-ink2); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans); }
.ld-card__hv { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2) var(--space-3); padding-top: var(--space-2); border-top: 1px solid var(--color-line); }
.ld .ld-hv__go { min-width: 0; }

/* ---------- Загрузка: общая таблица лидов всех компьютеров (.ldt) ----------
   Режим «несколько компьютеров» (load-table.js): таблица вместо «Работают сейчас». Ждущая решения строка — жёлтый контур (токен --color-warn),
   знак паузы и слово статуса; цвет только дополняет слово. До 75rem строки — карточки сеткой в 4 колонки, до 40rem — карточки в одну колонку,
   подпись значения берётся из data-label ячейки. Значения — токены, размеры в rem. */
.ldt__body { gap: var(--space-4); }
.ldt__filters { display: grid; gap: var(--space-3); min-width: 0; }
.ldt__filters .fleet-filter { margin-bottom: 0; }
.ldt__sels { display: flex; flex-wrap: wrap; gap: var(--space-3); min-width: 0; }
.ldt__f { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; padding-inline: var(--space-3); border: 1px solid var(--color-line2); border-radius: var(--radius-ctl); }
.ldt__f:hover { border-color: var(--color-ink3); }
.ldt__f:focus-within { border-color: var(--color-ink2); }
.ldt__fl { color: var(--color-ink2); }
.ldt__sel {
  min-height: var(--size-ctl-sm); max-width: 14rem; padding: 0 var(--space-1); background: transparent; color: var(--color-ink); border: 0; cursor: pointer;
  font: var(--text-ui-strong-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.ldt__sel option { background: var(--color-panel); color: var(--color-ink); }
.ldt__note { padding-block: var(--space-1); }

.ldt { width: 100%; border-collapse: collapse; table-layout: auto; }
.ldt__h {
  padding: var(--space-2); text-align: start; white-space: nowrap; color: var(--color-ink2); border-bottom: 1px solid var(--color-line2);
  font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans);
}
.ldt__c {
  min-width: 0; padding: var(--space-3) var(--space-2); vertical-align: top; border-bottom: 1px solid var(--color-line); overflow-wrap: anywhere;
  font: var(--text-caption-weight) var(--text-ui-size)/var(--text-ui-line) var(--font-sans);
}
.ldt__c--acts { text-align: end; }
.ldt__cv { min-width: 0; }
.ldt__c--task { min-width: 10rem; }
.ldt__c--status { min-width: 8.5rem; }
.ldt__c--usd .ldt__v { white-space: nowrap; }
.ldt__c--progress { min-width: 6rem; }
.ldt__row[data-status="wait"] { outline: .125rem solid var(--color-warn); outline-offset: -.125rem; border-radius: var(--radius-sm); background: var(--color-warn-soft); }
.ldt__none { color: var(--color-ink3); }
.ldt__v { color: var(--color-ink); }
.ldt__proj { color: var(--color-ink); font-weight: var(--weight-medium); }
a.ldt__proj:hover { text-decoration: underline; text-underline-offset: .2em; }
.ldt__task { display: block; color: var(--color-ink); font-weight: var(--weight-medium); }
.ldt__stage { display: block; color: var(--color-ink2); font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans); }
.ldt__st { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-ink); }
.ldt__st[data-status="wait"] { align-items: flex-start; color: var(--color-warn-soft-text); font-weight: var(--weight-medium); }
.ldt__pause { display: inline-flex; flex: none; color: var(--color-warn-text); }
.ldt__pause .ic { width: var(--size-icon); height: var(--size-icon); }
.ldt__prog { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-2); }
.ldt__pt { color: var(--color-ink2); font-size: var(--text-caption-size); white-space: nowrap; }
.ldt__c .ld-thin { margin-top: var(--space-1); }
.ldt__acts { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-2); }
.ldt__act { white-space: nowrap; }

/* Вопрос раскрывается в строке */
.ldt__q { margin-top: var(--space-2); min-width: 0; }
.ldt__qs { display: inline-flex; align-items: center; min-height: var(--size-ctl-sm); cursor: pointer; color: var(--color-warn-soft-text); font-weight: var(--weight-medium); }
.ldt__qb { display: grid; gap: var(--space-1); padding-top: var(--space-1); }
.ldt__qb > p { margin: 0; }
.ldt__qh { color: var(--color-ink); font-weight: var(--weight-medium); }
.ldt__qt { color: var(--color-ink2); }

/* Готово и закрыто за сутки: свёрнуто внизу */
.ldt__closed { min-width: 0; }
.ldt__closed-s {
  display: inline-flex; align-items: center; min-height: var(--size-ctl-sm); cursor: pointer; color: var(--color-ink2);
  font: var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-line) var(--font-sans);
}
.ldt__closed-s:hover { color: var(--color-ink); }
.ldt__closed > .ldt { margin-top: var(--space-2); }

/* До 75rem: шапка прячется (остаётся для чтения с экрана), строки — карточки, подпись значения над ним */
@media (max-width: 74.99rem) {
  .ldt__head { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .ldt, .ldt tbody { display: block; }
  .ldt__row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2) var(--space-3); margin-bottom: var(--space-3); padding: var(--space-3); border: 1px solid var(--color-line); border-radius: var(--radius-sm); }
  .ldt__row[data-status="wait"] { outline-offset: 0; }
  .ldt__c { display: block; padding: 0; border-bottom: 0; }
  .ldt__c:empty { display: none; }
  .ldt__c[data-label]::before { content: attr(data-label); display: block; color: var(--color-ink2); font-size: var(--text-caption-size); }
  .ldt__c--task, .ldt__c--status, .ldt__c--progress { grid-column: span 2; }
  .ldt__c--acts { grid-column: 1 / -1; text-align: start; }
  .ldt__acts { justify-content: flex-start; }
}

/* 390: карточка в одну колонку, «подпись | значение»; касания не меньше 44 px */
@media (max-width: 40rem) {
  .ldt, .ldt tbody, .ldt__row, .ldt__c { display: block; }
  .ldt__row { padding: var(--space-3) var(--space-4); }
  .ldt__c[data-label] { display: grid; grid-template-columns: 7rem minmax(0, 1fr); align-items: start; gap: var(--space-2); padding-block: var(--space-1); }
  .ldt__c[data-label]::before { content: attr(data-label); display: block; color: var(--color-ink2); font-size: var(--text-caption-size); }
  .ldt__c--acts { padding-top: var(--space-2); }
  .ldt__act, .ldt__sel, .ldt__f { min-height: var(--size-touch-min); }
  .ldt__act { flex: 1 1 8rem; justify-content: center; }
  .ldt__qs, .ldt__closed-s { min-height: var(--size-touch-min); }
  .ldt__sels, .ldt__f { width: 100%; }
  .ldt__sel { flex: 1 1 auto; max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
  .ldt__row { transition: none; }
}
