/* styles-plan-cells.css — Ячейки Плана: сжатие колонок ресайзером, tooltip комментария, employee-dropdown, дата СЗ.
   Выделено из styles-plan.css (937 строк, за BLOCK-заслоном 900) 2026-07-28.
   ПОРЯДОК ЗАГРУЗКИ ВАЖЕН: styles-plan.css → -table → -status → -cells.
   Каскад рассчитан на исходную последовательность правил — не переставлять,
   не подключать по одному. План: .claude/tasks/zadacha-product-health.md */
/* Колонки, которые ресайзер должен реально сжимать. max-width:0 +
   overflow:hidden — единственный способ заставить table-layout:fixed
   слушать col[style.width=Xpx]: без этого col при getBoundingClientRect
   возвращает «минимальную по контенту» ширину (по самому длинному
   <button> с nowrap или по flex-цепочке миниатюр), ресайзер сохраняет
   эту защищённую ширину обратно в state и колонка визуально возвращается.
   Селекторы прибиты к конкретным таблицам (а не общим .plan-table),
   чтобы не задевать одноимённые позиции в Plan/Fact с разным смыслом.

   2026-05-25 PLAN-1: индексы сдвинулись после b28bbe30 (+4 кол. в Plan: №ПЗ
   на idx 3, Участок на 7, №МК/Тип ОП в конец) и f1f9d5b8 (+3 кол. в Fact:
   №ПЗ на 3, Участок на 7, Тип СЗ в конец). nth-child(11) в Plan теперь
   указывал на «основной сотрудник» — overflow:hidden обрезал .plan-cell-menu
   (position:absolute), выпадашка не открывалась и блокировала назначение
   сотрудника на СЗ. Аналогично nth-child(15) в Fact указывал на «бригада».
   Новые индексы: Plan comment=13, attach=14; Fact workerComment=17, attach=18.

   2026-07-06 PLAN-2 (та же болезнь снова): c3f30227 добавил колонку «плановая
   дата СЗ» (idx 4) → все Plan-колонки после неё сдвинулись на +1, а эти
   nth-child НЕ поправили. nth-child(13) стал указывать на «бригада» → overflow:
   hidden резал бригадную выпадашку (данные/опции есть, но меню обрезано ячейкой —
   «не выпадает»). Новые Plan-индексы: comment=14, attach=15. Fact не менялся
   (плановая дата в Факт не копируется) — там остаётся 17/18.

   2026-08-03 КОРНЕВОЙ ФИКС: клип переведён с номера колонки на КЛАСС `plan-clip`
   (ставится в самой ячейке — `buildPlanRow`). Болезнь ловили дважды, оба раза
   лечили сдвигом номеров — третий раз лечим причину: теперь новая колонка Плана
   ничего не сдвинет. В Факте так уже сделано (`fact-clip`, styles-fact-outcol.css),
   поэтому старые правила для #prodFactTable здесь удалены — их держит тот файл. */
#prodPlanTable tbody td.plan-clip { /* Plan: комментарии + файлы СЗ */
  max-width: 0;
  overflow: hidden;
}

/* Readonly-ячейка с подсказкой при наведении (используется для
   «комментарии от рабочих» в Факте: то же поведение, что у редактируемой
   комментарии в Плане, но без cursor:text и без editable behavior). */
.plan-cell-readonly {
  display: block;
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  color: #1d3353;
  padding: 0 3px;
  cursor: default;
}

/* Кастомный popover-tooltip для длинных комментариев. Реализация через JS-
   узел в `<body>` (см. planCellTooltipInit в app-prod-edit.js), а не через
   `::after` на кнопке: у кнопки и её td стоит `overflow:hidden` (для ellipsis
   и сжатия столбца), и любой absolute-псевдо-элемент будет обрезан по краю
   ячейки — popover не виден. */
.plan-cell-tooltip {
  position: fixed;
  z-index: 9999;
  display: none;
  width: max-content;
  max-width: 260px;
  padding: 6px 8px;
  border-radius: 5px;
  background: #1f2937;
  color: #ffffff;
  font-size: 11px;
  line-height: 1.35;
  font-weight: 500;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  pointer-events: none;
  box-shadow: 0 4px 14px rgba(15, 30, 60, 0.25);
}

/* ── Employee search dropdown (mirrors plan-op) ── */
/* Двойной класс — специфичнее, чем общий .plan-cell-menu { min-width: 220px },
   иначе длинные ФИО типа «E-001 Длинная-Фамилия Имя Отчество» снова
   обрезаются: 220 < нужного места под «ID Фамилия Имя + чип режима». */
.plan-cell-menu.plan-emp-menu {
  min-width: 340px;
  max-height: 320px;
  overflow: auto;
  padding: 8px;
}

.plan-emp-wrap.open .plan-emp-menu {
  display: block;
}

.plan-emp-search {
  width: 100%;
  min-height: 26px;
  border: 1px solid #9fb4cd;
  border-radius: 6px;
  background: #f7f9fd;
  color: #1d3353;
  padding: 0 8px;
  font: inherit;
  font-size: 11px;
  outline: none;
}

.plan-emp-search:focus {
  border-color: #4779b6;
  background: #ffffff;
}

.plan-emp-empty {
  color: #7a8ba3;
  font-size: 11px;
  padding: 10px 6px;
  text-align: center;
  font-style: italic;
}

.plan-emp-option {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.plan-emp-opt-label {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.plan-emp-opt-chip {
  flex: 0 0 auto;
  font-size: 9px;
  font-weight: 600;
  color: #2752a8;
  background: #e7eefb;
  padding: 1px 5px;
  border-radius: 4px;
  line-height: 1.4;
}

.plan-emp-opt-chip.is-empty {
  color: #9aa6bb;
  background: transparent;
  font-weight: 400;
}

.plan-emp-option[hidden] {
  display: none;
}

.plan-emp-empty[hidden] {
  display: none;
}

/* «Плановая дата СЗ» — нативный date-picker в ячейке Плана (редактируемая строка). */
.plan-planned-date {
  width: 100%;
  box-sizing: border-box;
  padding: 3px 4px;
  border: 1px solid #cdd5e0;
  border-radius: 4px;
  font: inherit;
  color: inherit;
  background: #fff;
}

/* Временная жёлтая подсветка строки Плана (заслон плановой даты при отправке).
   Тот же жёлтый и поведение, что в «Отчёт потери» при переходе из брака. */
tr.plan-row-focus > td {
  background: #fde68a !important;
  transition: background-color 0.5s ease;
}
