/* Плотность и один экран (Р533, Р539; этап 1 `docs/design/operator-workspace-v2.md` Т1, Т6; макет 026): «Заказы» на
   одном экране без прокрутки страницы — шапка 44 и одна полоса 40 стоят на месте, рабочая область — три панели (лента,
   «Курьеры», карта), у каждой заголовок 32 и тело, которое листается само. Строки ленты 32, таблицы 36, «Требуют
   внимания» свёрнуто 28, поля по краю 12, между панелями 8. Слой — последним: прежние правила (staff.css, orders.css,
   workspace.css, oc.css) не правятся по месту, а перекрываются здесь. «шире», «скрыть», границы и виды — этап 3
   (panes.css, js/orders/panes.js).
   Телефон и планшет (до 1100) и сенсорный экран — всё нажимаемое не меньше 44 (`--tap`): density-tabs.css.
   Размеры — только токенами (ниже — свои токены плотности), цвета — только ролями темы: сторож
   tests/design/test_tokens_guard.py читает и этот файл. */

/* ── Токены плотности ────────────────────────────────────────────────────────────────────────────────────────────── */
:root {
  --ops-bar: 44px;        /* шапка */
  --ops-tools: 40px;      /* полоса над панелями */
  --ops-head: 32px;       /* заголовок панели */
  --ops-ctl: 32px;        /* кнопка, поле и отбор на компьютере */
  --ops-small: 24px;      /* кнопка в строке и в заголовке панели, галочка */
  --ops-row: 32px;        /* строка ленты и «Ждут курьера» */
  --ops-trow: 36px;       /* строка таблицы («Список», «История») */
  --ops-th: 28px;         /* заголовок столбцов таблицы, свёрнутые «Требуют внимания» и «Завершены» */
  --ops-group: 24px;      /* заголовок группы ленты и части колонки */
  --ops-chip: 20px;       /* метка состояния */
  --ops-edge: 12px;       /* поле по краю экрана */
  --ops-gap: 8px;         /* промежуток между панелями */
  --ops-pad: 10px;        /* отступ строки от края панели */
  --ops-tight: 6px;       /* тесный промежуток внутри строки */
  --ops-radius: 10px;     /* скругление панели */
  --ops-ctl-radius: 8px;  /* скругление кнопки и поля */
  --ops-text: 13px;       /* основной текст */
  --ops-text-no: 14px;    /* номер заказа, названия разделов шапки */
  --ops-text-sm: 12px;    /* подписи */
  --ops-text-xs: 11px;    /* мелкие подписи (под числом отбора) */
}
/* Сенсорный экран любой ширины, планшет и телефон: строки и кнопки — не меньше пальца (Р533). */
@media (max-width: 1099px), (pointer: coarse) {
  :root {
    --ops-bar: calc(var(--tap) + var(--space-2)); --ops-head: var(--tap); --ops-ctl: var(--tap); --ops-small: var(--tap);
    --ops-row: var(--tap); --ops-trow: var(--tap); --ops-th: var(--tap);
  }
}

/* ── Один экран: страница не листается, листается каждая панель (Т1) ─────────────────────────────────────────────── */
body[data-page="staff"]:has(> #main:not([hidden])) { height: 100dvh; min-height: 0; overflow: hidden; }
body[data-page="staff"] > #main.staff {
  display: flex; flex: 1 1 0; flex-direction: column; min-height: 0; padding: 0 var(--ops-edge) var(--ops-gap);
  font-size: var(--ops-text); line-height: var(--leading-clamp);
}
#main > .staff-top { flex: none; }
#main > .staff-work { flex: 1 1 0; min-height: 0; }
.staff-bar { flex: none; }

/* ── Шапка 44 ────────────────────────────────────────────────────────────────────────────────────────────────────── */
/* 44 — вместе с нижней линией шапки. */
.staff-bar__inner { gap: var(--space-2); min-height: calc(var(--ops-bar) - 1px); padding: 0 var(--ops-edge); }
.pf-sign__mark { padding: 2px; }
.pf-sign__mark img, .pf-sign__mark img[width] { height: calc(var(--ops-ctl) - var(--space-1)); }
.staff-sections { gap: 2px; padding-left: var(--space-2); }
.staff-sections__item {
  gap: var(--space-1); padding: 0 var(--ops-pad); font-family: var(--font-text); font-size: var(--ops-text-no);
  font-weight: var(--weight-semibold);
}
.staff-bar .btn.staff-ctl, .staff-bar .staff-switch {
  min-height: var(--ops-ctl); padding: 0 var(--ops-pad); border-radius: var(--ops-ctl-radius); font-size: var(--ops-text);
}
.staff-bar .staff-switch { padding: 0 var(--space-1); }
.staff-bar .staff-ctl svg { width: var(--icon-sm); height: var(--icon-sm); }
.staff-bar .btn.staff-sound { width: var(--ops-ctl); padding: 0; }
.staff-client--one, .staff-rights:not(.btn) { min-height: var(--ops-ctl); font-size: var(--ops-text); }
/* «Что вижу: Вся сеть «Шу-Шу» · 3 точки» — одной строкой. */
.staff-rights__text { display: flex; align-items: baseline; gap: var(--space-1); }
.staff-rights__label { font-size: var(--ops-text); font-weight: var(--weight-regular); }
.staff-rights__label::after { content: ":"; }
.staff-rights__value { font-weight: var(--weight-semibold); }
.iiko-state { font-size: var(--ops-text-sm); }
.staff-who { gap: var(--space-1); font-size: var(--ops-text); }
.staff-who svg { width: var(--icon-sm); height: var(--icon-sm); }
.staff-news { top: calc(var(--ops-bar) + var(--space-2)); }

/* ── Полоса над панелями 40: вид, отборы, поиск, «Фильтры» одной строкой ────────────────────────────────────────── */
#staff-top { display: grid; gap: var(--space-1); margin: 0; padding: var(--space-1) 0; }
#staff-top .oc-topbar { flex-wrap: wrap; gap: var(--space-1) var(--space-2); min-height: var(--ops-ctl); }
/* Вид «Группы · Список · История» — первым (макет 026). */
#staff-top .oc-viewmode { order: -1; flex: none; min-height: 0; margin-left: 0; padding: 2px; gap: 2px; border-radius: var(--ops-ctl-radius); }
#staff-top .oc-viewmode .segments__item {
  min-height: calc(var(--ops-ctl) - var(--space-1)); padding: 0 var(--ops-pad); border-radius: var(--space-2);
  font-size: var(--ops-text);
}
#staff-top .oc-viewmode .segments__item[aria-pressed="true"] { font-weight: var(--weight-semibold); }
#staff-top .oc-viewmode .segments__item svg { width: var(--icon-sm); height: var(--icon-sm); }
#staff-top .staff-strip { flex: 0 1 auto; flex-basis: auto; min-width: 0; }
#staff-top .staff-summary { flex-wrap: nowrap; gap: var(--space-1); }
/* Отбор: значок, число и подпись; уже 1660 — подпись мелко под числом. */
#staff-top .tally {
  display: inline-grid; grid-template-columns: auto auto auto; grid-template-areas: "i n c"; align-items: center;
  column-gap: var(--space-1); min-width: 0; min-height: var(--ops-ctl); height: var(--ops-ctl); padding: 0 var(--space-2);
  border-radius: var(--ops-ctl-radius); line-height: 1;
}
#staff-top .tally svg { grid-area: i; width: var(--icon-sm); height: var(--icon-sm); }
#staff-top .tally__n { grid-area: n; font-size: var(--ops-text); font-weight: var(--weight-bold); line-height: 1; }
#staff-top .tally__label { grid-area: c; color: var(--ink); font-size: var(--ops-text-sm); line-height: 1; }
#staff-top .tally.is-zero:not([aria-pressed="true"]) .tally__label { color: var(--muted); }
@media (max-width: 1659px) {
  #staff-top .tally { grid-template-columns: auto auto; grid-template-areas: "i n" "c c"; justify-content: center; row-gap: 2px; padding: 0 var(--ops-tight); }
  #staff-top .tally svg { justify-self: end; width: var(--ops-text-sm); height: var(--ops-text-sm); }
  #staff-top .tally__label { color: var(--muted); font-size: var(--ops-text-xs); }
}
#staff-top .oc-tally-reset { min-height: var(--ops-ctl); font-size: var(--ops-text-sm); }
#staff-top .oc-feedsearch {
  flex: 1 1 calc(var(--space-8) * 2); min-width: calc(var(--space-8) * 2); height: var(--ops-ctl); min-height: var(--ops-ctl);
  padding: 0 var(--ops-pad); gap: var(--space-2); border-radius: var(--ops-ctl-radius);
}
#staff-top .oc-feedsearch svg { width: var(--icon-sm); height: var(--icon-sm); }
#staff-top .oc-feedsearch input { font-size: var(--ops-text); }
#staff-top .oc-filters-btn {
  flex: none; min-height: var(--ops-ctl); padding: 0 var(--ops-pad); gap: var(--space-2); border-radius: var(--ops-ctl-radius);
  font-size: var(--ops-text);
}
#staff-top .oc-filters-btn svg { width: var(--icon-sm); height: var(--icon-sm); }
/* «История»: день стрелками и часы — тех же 32 (Р338): поля и стрелки одной высоты. */
#staff-top .oc-period { flex: none; }
#staff-top .oc-period .oc-hist__bar { flex-wrap: nowrap; gap: var(--space-1) var(--space-2); }
#staff-top .oc-hist__day, #staff-top .oc-hist__hours { flex-wrap: nowrap; gap: var(--space-1); }
#staff-top .oc-hist__bar .icon-btn { width: var(--ops-ctl); height: var(--ops-ctl); border-radius: var(--ops-ctl-radius); }
#staff-top .oc-hist__bar .icon-btn svg { width: var(--icon-sm); height: var(--icon-sm); }
#staff-top .oc-hist__bar .input, #staff-top .oc-hist__hours .oc-time .input {
  height: var(--ops-ctl); min-height: var(--ops-ctl); padding: 0 var(--space-2); border-radius: var(--ops-ctl-radius); font-size: var(--ops-text);
}
#staff-top .oc-hist__date { width: calc(var(--space-8) + var(--space-6) + var(--space-2)); }
#staff-top .oc-time { gap: var(--space-1); font-size: var(--ops-text); }
#staff-top .oc-time .input { width: calc(var(--space-8) - var(--space-2)); }
#staff-top .oc-hist__dayword { font-size: var(--ops-text); white-space: nowrap; }
/* Выбранные фильтры — строкой под полосой, только когда они есть. */
#staff-top .oc-chipsbar { gap: var(--space-1) var(--space-2); font-size: var(--ops-text-sm); }
#staff-top .oc-fchip { min-height: var(--ops-small); }
#staff-top .oc-fchip button { min-width: var(--ops-small); min-height: var(--ops-small); }

/* ── Рабочая область: панели в ряд, а уже — «сбоку»; одинаково в «Группах», «Списке» и «Истории» ─────────────────── */
/* Шаблон сетки из вида человека ставит js/orders/panes.js (этап 3, `#staff-work[data-arr]`, стилем на месте) — правила
   ниже лишь первый рисунок до него: стандарт «Всё вместе». 10.11.2026, владелец: однообразно — «Список» и «История» в
   ряд, как «Группы»; разница — только наименьшая ширина левой панели (таблица 760, лента 400), поэтому в ряд «Группы»
   встают с окна 1280, а «Список» и «История» — с 1320. */
@media (min-width: 1100px) {
  #main .staff-work { display: grid; gap: var(--ops-gap); align-items: stretch; grid-template-rows: minmax(0, 1fr); }
  .staff-work > .staff-main { grid-column: 1; grid-row: 1 / -1; }
  /* «В ряд»: лента или таблица — «Курьеры» — карта; доли стандарта «Всё вместе» (Т2: .42 / .24 / .34, умножены на 100). */
  #main .staff-work {
    grid-template-columns: minmax(400px, 42fr) minmax(260px, 24fr) minmax(260px, 34fr);
  }
  body.is-list #main .staff-work {
    grid-template-columns: minmax(760px, 42fr) minmax(260px, 24fr) minmax(260px, 34fr);
  }
  .staff-work > .oc-crew { grid-column: 2; grid-row: 1; }
  .staff-work > .staff-side { grid-column: 3; grid-row: 1; }
}
/* «Сбоку» — три панели в ряд не помещаются: справа «Курьеры» над картой (Т1; было — колонка поверх карты); доли
   стандарта `l` = .63 / .46 (Т2). «Группы» — на 1100–1279, «Список» и «История» — на 1100–1319. */
@media (min-width: 1100px) and (max-width: 1279px) {
  body:not(.is-list) #main .staff-work {
    grid-template-columns: minmax(400px, 63fr) minmax(300px, 37fr);
    grid-template-rows: minmax(130px, 46fr) minmax(150px, 54fr);
  }
  body:not(.is-list) .staff-work > .oc-crew { grid-column: 2; grid-row: 1; }
  body:not(.is-list) .staff-work > .staff-side { grid-column: 2; grid-row: 2; }
}
@media (min-width: 1100px) and (max-width: 1319px) {
  body.is-list #main .staff-work {
    grid-template-columns: minmax(760px, 63fr) minmax(300px, 37fr);
    grid-template-rows: minmax(130px, 46fr) minmax(150px, 54fr);
  }
  body.is-list .staff-work > .oc-crew { grid-column: 2; grid-row: 1; }
  body.is-list .staff-work > .staff-side { grid-column: 2; grid-row: 2; }
}

/* ── Панель: заголовок 32 и тело, которое листается само ─────────────────────────────────────────────────────────── */
.oc-pane {
  position: relative; display: grid; grid-template-rows: var(--ops-head) minmax(0, 1fr); min-width: 0; min-height: 0;
  overflow: hidden; border: 1px solid var(--border2); border-radius: var(--ops-radius); background: var(--panel);
  container: pane / inline-size;
}
.oc-pane__head {
  display: flex; align-items: center; gap: var(--space-2); min-width: 0; height: var(--ops-head);
  padding: 0 var(--space-1) 0 var(--ops-pad); border-bottom: 1px solid var(--border2); background: var(--panel);
}
.oc-pane__title {
  flex: none; margin: 0; font-family: var(--font-text); font-size: var(--ops-text); font-weight: var(--weight-semibold);
  letter-spacing: 0; white-space: nowrap;
}
.oc-pane__count.feed-count { flex: none; min-width: calc(var(--space-4) + 2px); height: calc(var(--space-4) + 2px); padding: 0 var(--space-1); }
.oc-pane__sub {
  min-width: 0; overflow: hidden; color: var(--muted); font-size: var(--ops-text-sm); text-overflow: ellipsis; white-space: nowrap;
}
.oc-pane__sub b { color: var(--ink); font-weight: var(--weight-semibold); }
.oc-pane__sub b.is-hot { color: var(--err); }
.oc-pane__tools { display: flex; align-items: center; gap: var(--space-1); min-width: 0; }
.oc-pane__body { min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; }

/* Лента: заголовок, полоса «Касса не на связи» (если есть) и тело. */
.staff-main.oc-pane { grid-template-rows: var(--ops-head) auto minmax(0, 1fr); }
.staff-main > .oc-pane__head { grid-row: 1; }
.staff-main > #staff-outage { grid-row: 2; display: grid; gap: var(--space-1); padding: var(--space-1) var(--space-2) 0; }
.staff-main > #staff-outage:empty { display: none; }
.staff-main > #feed-body { grid-row: 3; }
#staff-outage .staff-outage { margin: 0; padding: var(--space-1) var(--ops-pad); border-radius: var(--ops-ctl-radius); font-size: var(--ops-text-sm); }
/* «Порядок: …» в заголовке ленты; «Списком» — подсказка про заголовки столбцов. */
#feed-sort .oc-lt__bar { flex-wrap: nowrap; gap: var(--space-1); min-width: 0; font-size: var(--ops-text-sm); }
#feed-sort .oc-gsort__sel { display: inline-flex; flex-wrap: nowrap; align-items: center; gap: var(--space-1); min-width: 0; color: var(--muted); }
#feed-sort .oc-gsort__sel > span::after { content: ":"; }
#feed-sort .select {
  width: auto; min-width: 0; max-width: 100%; height: var(--ops-small); min-height: var(--ops-small); padding: 0 var(--space-5) 0 var(--space-2);
  border-color: var(--border2); border-radius: var(--space-2); background-position: calc(100% - var(--space-3)) 50%, calc(100% - var(--space-2)) 50%;
  background-size: var(--space-1) var(--space-1); color: var(--ink); font-size: var(--ops-text-sm);
}
#feed-sort .oc-lt__hint { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#feed-sort .oc-lt__sortsel { display: none; }
@container pane (max-width: 679px) {
  #feed-sort .oc-lt__sortsel { display: inline-flex; }
  #feed-sort .oc-lt__hint { display: none; }
}

/* ── Лента «Группы» ──────────────────────────────────────────────────────────────────────────────────────────────── */
#feed { gap: 0; }
#feed .feed-section { gap: 0; }
/* Заголовок группы — тонкой строкой 24, стоит сверху, пока группа листается; слоем ниже окошек подсказок у строк
   (`.oc-hint__pop`, `--z-above`): открытая подсказка не уходит под заголовок следующей группы. */
#feed .feed-section:not(.oc-attention-summary):not(.oc-attention-quiet) > .feed-section__head {
  position: sticky; top: 0; z-index: var(--z-raised); min-height: var(--ops-group); padding: 0 var(--ops-pad);
  border-block: 1px solid var(--border2); background: var(--card);
}
#feed .feed-section__head h2 { font-size: var(--ops-text-sm); }
#feed .feed-closed > summary.feed-section__head { min-height: var(--ops-th); }
#feed .order-list { border: 0; border-radius: 0; }
#feed .feed-empty { margin: 0; padding: var(--space-2) var(--ops-pad); border: 0; border-radius: 0; font-size: var(--ops-text); }
#feed .feed-closed__hours { margin: var(--space-1) var(--ops-pad); font-size: var(--ops-text-sm); }
#feed .feed-closed__hours select { height: var(--ops-small); min-height: var(--ops-small); padding-block: 0; font-size: var(--ops-text-sm); }
/* «Требуют внимания» свёрнуто — 28 с рамкой, раскрытое — список со своими действиями (Р520: тихие строки — как были). */
#feed .oc-attention-summary { margin: var(--ops-tight) var(--space-2) 2px; border-radius: var(--ops-ctl-radius); }
#feed .oc-attention-summary > summary {
  flex-wrap: nowrap; align-items: center; gap: var(--space-2); min-height: calc(var(--ops-th) - 2px); padding: 0 var(--space-2);
  overflow: hidden; white-space: nowrap; font-size: var(--ops-text-sm);
}
#feed .oc-attention-summary > summary h2 { font-size: var(--ops-text-sm); }
#feed .oc-attention-summary__hint { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
#feed .oc-attention-quiet { margin: var(--space-1) var(--space-2) 2px; font-size: var(--ops-text-sm); }
#feed .oc-hidden-alarm, #feed .oc-seen { padding-block: 2px; font-size: var(--ops-text-sm); }
#feed .issue.oc-issue { padding-block: 2px; font-size: var(--ops-text-sm); }

/* Строка ленты — 32 (шире 460 — одной линией; номер 14, остальное 13 и мельче). */
#feed .order-row { min-height: var(--ops-row); padding: 0 var(--space-1) 0 var(--space-2); font-size: var(--ops-text); }
#feed .order-row__open { min-height: var(--ops-small); font-size: var(--ops-text-no); }
#feed .order-row__time, #feed .order-row__sum { font-size: var(--ops-text); }
#feed .order-row .state { min-height: var(--ops-chip); font-size: var(--ops-text-sm); }
#feed .order-row .mark, #feed .order-row .order-where { font-size: var(--ops-text-sm); }
#feed .order-row__where { height: var(--ops-chip); }
#feed .order-row__act .btn { min-width: var(--ops-small); min-height: var(--ops-small); height: var(--ops-small); font-size: var(--ops-text-sm); }
#feed .oc-marks .oc-hint__btn { width: var(--ops-chip); height: var(--ops-chip); }
#feed .order-pick-from .oc-hint__btn { min-height: var(--ops-small); padding: 0; }
@container feed (min-width: 460px) {
  #feed .order-row { padding-block: 0; }
}

/* ── «Список» и «История» — строка 36, заголовок столбцов стоит сверху ───────────────────────────────────────────── */
#feed .oc-lt__wrap { overflow: clip; border: 0; border-radius: 0; }
#feed .oc-lt { border-collapse: separate; border-spacing: 0; font-size: var(--ops-text); }
#feed .oc-lt th, #feed .oc-lt td { padding: 0 var(--ops-tight); border-top: 0; border-bottom: 1px solid var(--border2); line-height: var(--leading-title); }
#feed .oc-lt thead th {
  position: sticky; top: 0; z-index: var(--z-raised); height: var(--ops-th); padding-block: 0; border-bottom-color: var(--border);
  background: var(--panel);
}
#feed .oc-lt__sort { padding: 0; font-size: var(--ops-text-xs); }
#feed .oc-lt td { height: var(--ops-trow); padding-block: 2px; }
#feed .oc-lt__row td:first-child { padding-left: var(--ops-pad); }
#feed .oc-lt__no a { font-size: var(--ops-text-no); }
#feed .oc-lt__why { font-size: var(--ops-text-xs); line-height: var(--leading-title); }
#feed .oc-lt .state { min-height: var(--ops-chip); font-size: var(--ops-text-sm); }
#feed .oc-lt__foot { padding: var(--space-1) var(--ops-pad); font-size: var(--ops-text-sm); }
#feed .oc-lt__more { font-size: var(--ops-text-sm); }
#feed .oc-hist__sum { margin: 0; padding: var(--space-1) var(--ops-pad); border-bottom: 1px solid var(--border2); font-size: var(--ops-text-sm); }
#feed .oc-lt__asides { padding: var(--space-1) var(--space-2) 0; }
#feed .oc-lt__aside { padding: 2px var(--space-2); font-size: var(--ops-text-sm); }

/* ── Колонка «Курьеры»: «Ждут курьера» строками 32, курьеры на смене — плотнее ───────────────────────────────────── */
.oc-crew.oc-pane { gap: 0; padding: 0; align-content: stretch; }
.oc-crew > .oc-pane__head { grid-row: 1; }
.oc-crew > .oc-crew__body { grid-row: 2; }
body.oc-assigning .oc-crew.oc-pane { border-color: var(--accent); box-shadow: none; }
#oc-crew .oc-board { gap: 0; }
#oc-crew .oc-crew__part { gap: 0; }
#oc-crew .oc-crew__h {
  position: sticky; top: 0; z-index: var(--z-raised); min-height: var(--ops-group); padding: 0 var(--ops-pad);
  border-bottom: 1px solid var(--border2); background: var(--card); font-size: var(--ops-text-sm);
}
#oc-crew .oc-crew__part + .oc-crew__part .oc-crew__h { border-top: 1px solid var(--border2); }
#oc-crew .oc-crew__h .feed-count { min-width: calc(var(--space-4) + 2px); height: calc(var(--space-4) + 2px); padding: 0 var(--space-1); }
#oc-crew .oc-crew__wait { border: 0; border-radius: 0; }
#oc-crew .oc-crew__wait > li {
  grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--ops-tight); min-height: var(--ops-row); padding: 0 var(--space-2) 0 var(--ops-tight);
  border-bottom: 1px solid var(--border2);
}
#oc-crew .oc-crew__wait > li + li { border-top: 0; }
#oc-crew .oc-crew__wait .check { min-height: var(--ops-small); }
#oc-crew .oc-crew__wait .check__box { width: var(--icon-sm); height: var(--icon-sm); }
#oc-crew .oc-crew__order { min-height: var(--ops-small); padding-block: 0; font-size: var(--ops-text); }
#oc-crew .oc-crew__order span { font-size: var(--ops-text-sm); }
#oc-crew .oc-crew__fresh { font-size: var(--ops-text-sm); white-space: nowrap; }
#oc-crew .oc-crew__list { gap: 0; }
#oc-crew .oc-crew__who {
  gap: var(--space-2); min-height: var(--ops-row); padding: 0 var(--space-2) 0 var(--ops-tight); border: 0; border-bottom: 1px solid var(--border2);
  border-radius: 0;
}
#oc-crew .oc-crew__who:hover { background: var(--tint); }
#oc-crew .oc-crew__who .courier-card__dot { width: var(--ops-small); height: var(--ops-small); font-size: var(--ops-text-sm); }
#oc-crew .oc-crew__name { font-size: var(--ops-text); font-weight: var(--weight-semibold); }
#oc-crew .oc-crew__free { font-size: var(--ops-text-sm); }
#oc-crew .oc-crew__chev { width: var(--icon-sm); height: var(--icon-sm); }
#oc-crew .oc-crew__none, #oc-crew .oc-crew__empty { padding: var(--space-2) var(--ops-pad); font-size: var(--ops-text-sm); }
/* Сборка рейса — в теле панели; её низ с «Отправить» стоит у низа панели. */
#oc-crew .oc-as { padding: var(--space-3); }
#oc-crew .oc-as:not([data-step="pick"]) > .oc-as__foot {
  bottom: 0; margin: 0 calc(var(--space-3) * -1) calc(var(--space-3) * -1); padding: var(--space-2) var(--space-3) var(--space-3);
}

/* ── Карта — во всю высоту панели ────────────────────────────────────────────────────────────────────────────────── */
.staff-side.oc-pane { position: relative; top: auto; gap: 0; height: auto; grid-template-rows: var(--ops-head) minmax(0, 1fr); }
.staff-side.oc-pane.has-courier-locations { grid-template-rows: var(--ops-head) auto minmax(0, 1fr); }
.staff-side.oc-pane > .oc-pane__head { grid-row: 1; }
.staff-side.oc-pane > .oc-gps { grid-row: 2; padding: var(--space-1) var(--space-2); border: 0; border-bottom: 1px solid var(--border2); border-radius: 0; }
.staff-side.oc-pane > #map { grid-row: -2 / -1; min-height: 0; }
.staff-side.oc-pane .smap, .staff-side.oc-pane .ops-map { min-height: 0; height: 100%; border: 0; border-radius: 0; }
.staff-side.oc-pane > .oc-side__x { top: 0; right: 0; width: var(--ops-head); height: var(--ops-head); box-shadow: none; }
.staff-side.oc-pane > .oc-side__x svg { width: var(--icon-sm); height: var(--icon-sm); }
/* «Курьеры», счёт мест и «Показать всех» — в заголовке панели карты (этап 3, panes.css); здесь — «Курьеры списком». */
.oc-gps summary { min-height: var(--ops-small); font-size: var(--ops-text-sm); }
