/* Листы «План», «Факт» и «Бухгалтерия»: задания собраны по ПЗ (app-prod-pz-groups.js, 08.10.2026;
   Бухгалтерия — группы ПЗ и бригад, app-report-accounting-groups.js, 22.10.2026).
   Одинаковые вещи выглядят одинаково: шапка группы и стрелки одни на все три листа. */
/* !important — клик по стрелке не должен красить шапку «выделением строки»
   (.employee-row-selected тоже !important, но id-селектор сильнее). */
#prodPlanTable tbody tr.pz-group-head td,
#prodFactTable tbody tr.pz-group-head td,
#reportAccountingTable tbody tr.pz-group-head td,
#prodOrderListTable tbody tr.pz-group-head td {
  background: #dde7f3 !important;
  font-weight: 600;
  border-top: 2px solid #b9cadf;
  /* Шапка заказа — сплошная полоса, без вертикальных линий колонок (владелец, 12.10.2026). */
  border-right-color: transparent;
}
/* Весь заказ закрыт (все строки серые) — шапка спокойнее, но остаётся шапкой. */
#prodPlanTable tbody tr.pz-group-head.pz-group-closed td,
#prodFactTable tbody tr.pz-group-head.pz-group-closed td {
  color: #6f7d92;
}
/* «не закрыто N» — светло-красная плашка, текст обычный тёмный: недоделанное видно
   в свёрнутом заказе, но не кричит (владелец: красный фон + красный текст — перебор). */
.pz-group-open {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 999px;
  background: #fde2e2;
  color: #1d2a3b;
  font-weight: 600;
}
#prodPlanTable tbody tr[data-pz-hidden="1"],
#prodFactTable tbody tr[data-pz-hidden="1"],
#reportAccountingTable tbody tr[data-pz-hidden="1"] {
  display: none;
}
.pz-group-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  margin-right: 4px;
  padding: 0;
  border: none;
  background: transparent;
  color: #2a4768;
  font-size: 10px;
  line-height: 1;
  cursor: pointer;
  vertical-align: middle;
}
.pz-group-toggle:hover { color: #0d2946; }
/* Общая стрелка в шапке таблицы — цвет шапки. */
.pz-group-toggle.pz-group-master { color: inherit; }
.pz-group-toggle[hidden] { display: none; }
/* «Бухгалтерия»: «№ задания» скрыт шестерёнкой — заказ сворачивает стрелка в «№ ПЗ». */
#reportAccountingTable:has(th[data-col-index="1"].is-col-hidden) .pz-group-toggle.pz-group-toggle-alt { display: inline-block; }
/* Факт: кружки участков заказа рядом с «N заданий · не закрыто» (app-prod-pz-route.js,
   12.10.2026). Одной строкой, как в макете: кружки справа от текста и, если ячейке тесно,
   заходят на пустые соседние ячейки шапки, а не переносятся вторым этажом. */
#prodFactTable tbody tr.pz-group-head td.tcf-spill {
  overflow: visible;
  white-space: nowrap;
}
/* Соседние ячейки шапки рисуются позже и накрывали своим фоном вылезший текст — ячейка
   с подписью поверх них (02.11.2026). Специфичность ниже закрепления колонок
   (table-col-freeze.js): закреплённая остаётся липкой, её слой там же — 4. */
.pz-group-head > td.tcf-spill {
  position: relative;
  z-index: 2;
}
/* Нулевая ширина держателя: кружки не раздвигают колонку (ширины листа — пользовательские),
   а рисуются поверх пустых ячеек шапки справа. */
.pz-group-route {
  display: inline-flex;
  position: relative;
  z-index: 2;
  width: 0;
  margin-left: 12px;
  vertical-align: middle;
}
.pz-group-route:empty { display: none; }
.pz-group-route .route-chain {
  width: auto;
  overflow: visible;
}
/* Шаги одной ширины — линия между кружками идёт от центра к центру; длинное название
   участка обрезается многоточием (полное — в подсказке шага). Кружки мельче, чем в
   «Заказах» (владелец, 12.10.2026: «чуть уменьшить»): 22px вместо 30px. */
.pz-group-route .route-chain-step {
  flex: 0 0 66px;
  gap: 2px;
  padding: 0 3px;
  box-sizing: border-box;
}
.pz-group-route .route-chain-step::before { top: 10px; }
.pz-group-route .route-chain-dot {
  width: 22px;
  height: 22px;
  font-size: 8px;
}
.pz-group-route .route-chain-dot::before { inset: 2px; }
.pz-group-route .route-chain-pct { font-size: 6px; }
.pz-group-route .route-chain-name { font-size: 8.5px; }
.pz-group-route .route-chain-defect { right: -6px; width: 7px; height: 7px; }

/* «▶ крой N» — задания одного кроя под строкой кроя (app-prod-cut-groups.js, владелец 01.11.2026):
   строка тихая — обычный шрифт, без заливки шапки заказа; свёрнутые задания кроя скрыты. */
#prodPlanTable tbody tr[data-cut-hidden="1"],
#prodFactTable tbody tr[data-cut-hidden="1"],
#reportAccountingTable tbody tr[data-cut-hidden="1"] {
  display: none;
}
.pz-cut-head > td { background: #f7f9fc; }
.pz-cut-head { cursor: pointer; }
/* «№ задания» скрыт — в «№ ПЗ» стрелка кроя вместо номера заказа (номер — в шапке заказа). */
#prodFactTable.fact-sz-hidden .pz-cut-head .pz-cut-pz { display: none; }
/* «▼ крой N» шире кнопки-стрелки 16px: без auto текст центруется и стрелка уезжает под соседнюю клетку. */
.pz-group-toggle.pz-cut-toggle { width: auto; justify-content: flex-start; font-size: inherit; font-weight: 500; color: #3b4a63; white-space: nowrap; padding-left: 4px; }
/* Партия ткани кроя — в строке «▶ крой N» на месте названия операции, только показ (правят в
   «Плане кроя»; app-prod-cut-lot.js, владелец 02.11.2026). История замен — подсказкой при наведении. */
.pz-cut-lot { display: flex; align-items: center; gap: 6px; }
.pz-cut-lot > span { font-size: 11px; color: #6b7686; white-space: nowrap; }
.pz-cut-lot-val { font-weight: 600; color: #1f2a3c; }
/* ✎ «Изменить партию ткани» у вписанной партии в «Плане кроя» → окно «было → стало». */
.pz-cut-lot-edit { border: 1px solid #cdd5e0; border-radius: 4px; background: #fff; color: #3d7fd4; cursor: pointer; padding: 0 6px; height: 22px; line-height: 20px; font-size: 12px; }
.pz-cut-lot-edit:hover { background: #eef4fc; }
/* «пачка N» — пачки кроя «По пачкам» под строкой кроя (app-prod-cut-packs.js, макет
   PARKED/RASKROY_DETALI/maket-sz-po-pachkam.html): строка как у кроя, отступ на уровень глубже;
   задания пачки — ещё глубже; не запущенная — без стрелки, серая плашка «не запущена». */
.pz-pack-head td:nth-child(2) .pz-cut-toggle { padding-left: 16px; }
.pz-pack-head[data-started="0"] { cursor: default; }
.pz-pack-head[data-started="0"] .pz-pack-toggle { cursor: default; }
tr[data-pack-of] td:nth-child(2) { padding-left: 34px; }
.status-pill.pz-pack-off { background: #64748b; color: #fff; }

/* «Состав ПЗ»: шапка артикула — та же, что у заказа выше (pages-prod-order-art-groups.js,
   13.11.2026); «N строк» в ней обычным весом. Итог заказа — внизу, виден при прокрутке. */
#prodOrderListTable .po-art-lines { font-weight: 400; color: #5b6b82; }
/* Поле в свёрнутом артикуле, где у строк разные значения («разные», 15.11.2026): тот же серый,
   что у «N строк»; выбор в такой ячейке запишет одно значение во все строки артикула. */
#prodOrderListTable td.po-art-mixed .plan-cell-button,
#prodOrderListTable td.po-art-mixed .plan-inline-editable { color: #5b6b82; font-weight: 400; }
#prodOrderListTable tbody tr.po-total-row td {
  position: sticky;
  bottom: 0;
  z-index: 3;
  background: #c9d8ea !important;
  font-weight: 700;
  color: #10243d;
  border-top: 2px solid #8fa9c8;
}
