/* ============================================================
   cab-plotno.css — уплотнение экранов «Реестр» и «Сводка».
   Только раскладка: цвета, шрифты и радиусы — токены mpr-* из
   mpr-core.css, своих цветов здесь нет.
   Подключение: строка в index.html после css/cab-svod.css.
   Пока её нет, registry.js и summary.js подгружают файл сами, один раз.
   13.09.2026
   ============================================================ */

/* ---------- 1. Реестр: строка таблицы ---------- */
/* название — до двух строк, ключ проекта — одной строкой под ним */
.cab-plotno-reg .mpr-table td { vertical-align: middle; }
.cab-plotno-reg .mpr-table .cab-cell-title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  line-height: 1.3;
}
.cab-plotno-reg .mpr-table .cab-cell-sub {
  max-width: 44ch;
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* организация без хвоста «Калужской области», не длиннее двух строк; полное название — во всплывающей подсказке */
.cab-plotno-org {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  font-size: 13px;
  line-height: 1.35;
}

/* «Пустые столбцы скрыты: … · показать» рядом со счётчиком строк */
.cab-plotno-empty {
  border: none;
  background: none;
  padding: 0;
  font-family: inherit;
  font-size: 12.5px;
  color: var(--mpr-muted);
  text-decoration: underline dotted;
  text-underline-offset: 3px;
  cursor: pointer;
}
.cab-plotno-empty:hover { color: var(--mpr-forest); }
.cab-plotno-empty:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(143, 149, 80, 0.28); border-radius: 4px; }

/* ---------- 2. Реестр: меню «Ещё» (ссылка на подбор, пример на многих строках) ---------- */
.cab-plotno-more { position: relative; flex: 0 0 auto; }
.cab-plotno-more > summary { list-style: none; cursor: pointer; }
.cab-plotno-more > summary::-webkit-details-marker { display: none; }
.cab-plotno-more > summary::after { content: '▾'; margin-left: 6px; font-size: 10px; opacity: .7; }
.cab-plotno-more__list {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  z-index: 30;
  min-width: 260px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px;
  background: var(--mpr-card-strong);
  border: 1px solid var(--mpr-line);
  border-radius: var(--mpr-r);
  box-shadow: var(--mpr-shadow-soft);
}
.cab-plotno-more__item {
  text-align: left;
  border: none;
  background: none;
  font-family: inherit;
  font-size: 13px;
  color: var(--mpr-forest);
  padding: 9px 12px;
  border-radius: var(--mpr-r-sm);
  cursor: pointer;
}
.cab-plotno-more__item:hover,
.cab-plotno-more__item:focus-visible { background: rgba(143, 149, 80, 0.14); outline: none; }

/* ---------- 3. Реестр на телефоне ---------- */
/* ключ проекта под названием карточки — вместо отдельной строки «Ключ» */
.cab-plotno-card__sub {
  display: block;
  margin: -6px 0 6px;
  font-family: var(--mpr-mono);
  font-size: 11px;
  color: var(--mpr-muted);
  overflow-wrap: anywhere;
}
@media (max-width: 720px) {
  /* три числа сводки в один ряд, полоса звеньев — под ними */
  .cab-plotno-stats .cab-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .cab-plotno-stats .cab-stat { padding: 10px 10px; min-width: 0; }
  .cab-plotno-stats .cab-stat__num { font-size: 21px; }
  .cab-plotno-stats .cab-stat__cap { font-size: 9px; letter-spacing: .03em; margin-top: 4px; }
  .cab-plotno-stats .cab-stat--wide { grid-column: 1 / -1; }
  .cab-reg-side > .cab-plotno-more { flex: 0 0 auto; }
}

/* ---------- 4. Сводка: «По организациям» строкой на организацию ---------- */
.cab-plotno-orgs__search { margin: 0 0 8px; }
.cab-plotno-orgs__search .mpr-input { height: 36px; font-size: 13px; }
.cab-plotno-orgs__head,
.cab-plotno-orgs__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 64px 76px;
  gap: 8px;
  align-items: center;
}
.cab-plotno-orgs__head {
  padding: 0 0 6px;
  border-bottom: 1px solid var(--mpr-line);
  font-size: 10.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--mpr-muted);
}
.cab-plotno-orgs__head .is-num { text-align: right; }
.cab-plotno-orgs__row { padding: 6px 0; border-bottom: 1px solid var(--mpr-line-soft); font-size: 13px; }
.cab-plotno-orgs__name {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  line-height: 1.35;
  font-weight: 500;
  color: var(--mpr-forest);
}
.cab-plotno-orgs__n { font-family: var(--mpr-mono); font-size: 12px; text-align: right; color: var(--mpr-forest); }
.cab-plotno-orgs__n.is-zero { color: var(--mpr-muted); }
.cab-plotno-orgs__more { margin-top: 10px; }

/* «?» у подписи раздела: пояснение открывается по нажатию, а не висит абзацем */
.cab-plotno-q {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-left: 6px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid var(--mpr-line-strong);
  background: none;
  font-family: inherit;
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
  color: var(--mpr-muted);
  cursor: pointer;
  vertical-align: middle;
}
.cab-plotno-q:hover,
.cab-plotno-q[aria-expanded="true"] { color: var(--mpr-forest); border-color: var(--mpr-moss); }
.cab-plotno-q:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(143, 149, 80, 0.28); }

/* >>> project.js · stage.js — карточка проекта и вкладка «Этап» (13.09.2026) */

/* «?» раскрыл пояснение строкой */
.cab-help[aria-expanded="true"] { color: var(--mpr-forest); border-color: var(--mpr-forest); }

/* выпадающий список с поиском (App.lean.выборСПоиском) */
.cab-plotno-pick { position: relative; }
.cab-plotno-pick__box { position: relative; }
.cab-plotno-pick__input { width: 100%; padding-right: 36px; text-overflow: ellipsis; }
.cab-plotno-pick__arrow { position: absolute; top: 0; right: 0; bottom: 0; width: 34px; border: 0; background: none;
  color: var(--mpr-muted); font-size: 12px; cursor: pointer; }
.cab-plotno-pick__arrow:hover { color: var(--mpr-forest); }
.cab-plotno-pick__dd { position: absolute; left: 0; right: 0; top: 100%; z-index: 40; margin-top: 4px; max-height: 280px; }
.cab-plotno-pick__dd .cab-dd__item { min-height: 34px; line-height: 1.3; }
.cab-plotno-pick__dd .cab-dd__item.is-on { font-weight: 600; background: rgba(143, 149, 80, .08); }
.cab-plotno-pick__empty { padding: 8px 12px; font-size: 13px; color: var(--mpr-muted); }

/* оценка куратора: шапка и строки-сводки */
.cab-plotno-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-bottom: 6px; }
.cab-plotno-head .cab-card__title { margin: 0; }
.cab-plotno-head__note { flex: 1 1 200px; font-size: 12.5px; color: var(--mpr-muted); }
.cab-plotno-head__act { margin-left: auto; align-self: center; }
.cab-plotno-line { margin: 0 0 3px; font-size: 12.5px; line-height: 1.45; }
.cab-plotno-line__tail { color: var(--mpr-muted); }

/* плотная сетка полей: 4 колонки → 2 → 1 */
.cab-plotno-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 14px; align-items: start; margin-top: 8px; }
.cab-plotno-grid > .is-span2 { grid-column: span 2; }
.cab-plotno-grid .mpr-field { gap: 5px; min-width: 0; }
.cab-plotno-grid .cab-reg-chips { gap: 6px; }
.cab-plotno-grid--in { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 0; }

/* «Подробнее»: редкие поля, значения в заголовке */
.cab-plotno-rare { align-self: end; padding: 0 12px; border: 1px solid var(--mpr-line-soft); border-radius: var(--mpr-r-sm); min-width: 0; }
.cab-plotno-rare[open] { grid-column: 1 / -1; padding-bottom: 12px; }
.cab-plotno-rare__sum { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; min-height: 44px; padding: 11px 0;
  font-size: 13px; cursor: pointer; list-style: none; }
.cab-plotno-rare__sum::-webkit-details-marker { display: none; }
.cab-plotno-rare__sum::before { content: '▸'; color: var(--mpr-muted); }
.cab-plotno-rare[open] > .cab-plotno-rare__sum::before { content: '▾'; }
.cab-plotno-rare__k { font-weight: 600; color: var(--mpr-forest); }
.cab-plotno-rare__v { color: var(--mpr-muted); overflow-wrap: anywhere; }

/* просмотр без права правки: подпись — значение */
.cab-plotno-kv { display: grid; gap: 2px; min-width: 0; padding: 8px 10px; border-radius: var(--mpr-r-sm); background: rgba(143, 149, 80, .06); }
.cab-plotno-kv__k { font-size: 11.5px; color: var(--mpr-muted); }
.cab-plotno-kv__v { font-size: 13.5px; overflow-wrap: anywhere; }
.cab-plotno-kv__v.is-empty { color: var(--mpr-muted); }

/* сегменты вместо плашек с пояснениями: «Вид», «Как показывать», «Публикация» */
.cab-plotno-seg, .cab-cover-choice.cab-plotno-seg { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.cab-plotno-seg .np-seg { flex-wrap: nowrap; gap: 4px; }
.cab-plotno-seg .np-seg__btn { min-height: 34px; padding: 6px 12px; white-space: nowrap; }
.cab-plotno-seg .np-seg__btn:disabled { cursor: default; }
.cab-plotno-seg .np-seg__btn:disabled:not(.is-on) { opacity: .55; }
.cab-plotno-seg__note { flex: 1 1 180px; font-size: 12.5px; color: var(--mpr-muted); }

/* вкладка «Этап» */
.cab-plotno-stage__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin-top: 10px; }
.cab-plotno-stage__text { flex: 1 1 320px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 12px; min-width: 0; }
.cab-plotno-stage__now { font-size: 15px; font-weight: 500; }
.cab-plotno-stage__next, .cab-plotno-stage__who { font-size: 13px; color: var(--mpr-muted); }
.cab-plotno-stage__who { flex-basis: 100%; }
.cab-plotno-stage__acts { display: flex; flex-wrap: wrap; gap: 8px; }
.cab-plotno-stage .cab-note { margin-top: 10px; }
.cab-plotno-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 28px; margin-top: 12px; }
.cab-plotno-pair__cell { display: grid; align-content: start; gap: 4px; min-width: 0; }
.cab-plotno-pair__cap { display: flex; align-items: center; gap: 6px; }
.cab-plotno-pair__val { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.cab-plotno-pair__val > b { font-size: 15px; font-weight: 500; }
.cab-plotno-pair__val > b.is-empty { font-weight: 400; color: var(--mpr-muted); }
.cab-plotno-pair__note { margin: 0; font-size: 13px; line-height: 1.45; color: var(--mpr-muted); }
.cab-plotno-pair__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.cab-plotno-hist { margin-top: 12px; }
.cab-plotno-hist__empty { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; font-size: 13px; }
.cab-plotno-hist__row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
.cab-plotno-hist__who { font-size: 12.5px; color: var(--mpr-muted); }
.cab-plotno-hist__more { margin-top: 8px; font-size: 13px; }
.cab-plotno-hist__more > summary { cursor: pointer; color: var(--mpr-forest); }

@media (max-width: 1180px) {
  .cab-plotno-grid, .cab-plotno-grid--in { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .cab-plotno-grid, .cab-plotno-grid--in { grid-template-columns: minmax(0, 1fr); }
  .cab-plotno-grid > .is-span2 { grid-column: auto; }
  .cab-plotno-head__act { margin-left: 0; }
  .cab-plotno-seg .np-seg { flex-wrap: wrap; }
  .cab-plotno-pair { grid-template-columns: minmax(0, 1fr); }
}
/* <<< project.js · stage.js */

/* >>> control.js · metrics.js · postproekt.js · docs.js · notifications.js · dicts.js (13.09.2026)
   Вкладки «Контроль», «Показатели», «После проекта», «Документы», экраны «Календарь
   контроля», «Уведомления», «Справочники». Классы с приставкой cab-pl-, чужие не трогаем. */

/* строка фильтров: переключатель, галочка, действия */
.cab-pl-bar { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin: 0 0 12px; }
.cab-pl-seg { gap: 6px; }
.cab-pl-seg .np-seg__btn { min-height: 34px; padding: 5px 12px; display: inline-flex; align-items: baseline; gap: 6px; }
.cab-pl-seg__n { font-family: var(--mpr-mono); font-size: 11.5px; font-weight: 400; color: var(--mpr-muted); }
.cab-pl-seg .np-seg__btn.is-on .cab-pl-seg__n { color: inherit; }
.cab-pl-check { display: inline-flex; gap: 8px; align-items: center; min-height: 34px; font-size: 13px; cursor: pointer; }
.cab-pl-check input { margin: 0; width: 17px; height: 17px; flex: 0 0 auto; accent-color: var(--mpr-moss); cursor: pointer; }

/* пустое состояние плашкой в одну строку */
.np-empty.cab-pl-empty { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 6px 12px; padding: 14px 18px; text-align: left; }
.cab-pl-empty .np-empty__ico { width: 32px; height: 32px; flex: 0 0 32px; }
.cab-pl-empty .np-empty__ico svg { width: 17px; height: 17px; }
.cab-pl-empty .np-empty__title { font-size: 14px; }
.cab-pl-empty .np-empty__text { flex: 1 1 320px; max-width: none; }
.cab-pl-empty .np-btn-row { margin-left: auto; }

/* «?» у подписи: пояснение открывается нажатием, пальцем тоже */
.cab-help.cab-pl-help { margin-left: 6px; flex: 0 0 auto; vertical-align: middle; cursor: pointer; }
.cab-help.cab-pl-help[aria-expanded="true"] { color: var(--mpr-forest); background: rgba(143, 149, 80, .16); border-color: var(--mpr-moss); }
.cab-pl-tip { display: block; flex: 1 1 100%; max-width: 78ch; margin: 4px 0 8px; font-size: 12.5px; line-height: 1.5; color: var(--mpr-muted); }
.cab-pl-titlerow { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; margin: 0 0 10px; }
.cab-pl-titlerow > .cab-card__title,
.cab-pl-titlerow > .cab-label { margin: 0; }

/* справочники: наборы одной строкой, поиск; на узком экране — выпадающий список */
.cab-pl-sets { padding: 10px; }
.cab-pl-sets__search { margin: 0 0 6px; }
.cab-pl-sets__list { display: grid; gap: 1px; }
.cab-pl-set { display: flex; align-items: baseline; gap: 8px; width: 100%; padding: 6px 10px; border: 0; border-radius: 9px; background: transparent; font-family: var(--mpr-ff); font-size: 13.5px; font-weight: 500; line-height: 1.35; color: var(--mpr-forest); text-align: left; cursor: pointer; }
.cab-pl-set:hover { background: rgba(143, 149, 80, .08); }
.cab-pl-set.is-on { background: rgba(143, 149, 80, .15); font-weight: 600; }
.cab-pl-set__name { flex: 1 1 auto; min-width: 0; }
.cab-pl-set__tag { flex: 0 0 auto; font-size: 11px; font-weight: 400; color: var(--mpr-muted); }
.cab-pl-set__n { flex: 0 0 auto; font-family: var(--mpr-mono); font-size: 11.5px; font-weight: 400; color: var(--mpr-muted); }
@media (max-width: 900px) {
  .cab-pl-sets { display: none !important; }
  .cab-pl-sets-select { display: block !important; }
}

/* контроль: тип проекта одной строкой */
.cab-pl-type { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.cab-pl-type__val { font-size: 14px; font-weight: 500; color: var(--mpr-forest); }
.cab-pl-type .np-people { gap: 6px; }
.cab-pl-type .np-person { min-height: 28px; padding: 3px 11px; font-size: 12px; }
.cab-pl-type__note { flex: 1 1 100%; margin: 0; font-size: 12.5px; line-height: 1.45; color: var(--mpr-muted); }

/* календарь контроля: месяцы сворачиваются */
.cab-pl-month { display: flex; align-items: center; gap: 8px; width: 100%; margin: 12px 0 6px; padding: 5px 0; border: 0; background: none; font-family: var(--mpr-ff); text-align: left; cursor: pointer; }
.cab-pl-month__chev { display: inline-flex; width: 14px; height: 14px; color: var(--mpr-muted); transform: rotate(90deg); transition: transform .18s var(--mpr-bezier); }
.cab-pl-month__chev svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.cab-pl-month[aria-expanded="false"] .cab-pl-month__chev { transform: none; }
.cab-pl-month__count { margin-left: auto; font-size: 12.5px; color: var(--mpr-muted); }
.cab-pl-month:hover .cab-label { color: var(--mpr-forest); }
.cab-pl-list { display: flex; flex-direction: column; gap: 8px; }

/* показатели Губернатора: выбранное чипами, выбор в окне с поиском */
.cab-pl-kpi { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cab-pl-kpi .np-person { min-height: 30px; padding: 4px 12px; font-size: 12.5px; }
.cab-pl-kpi-search { margin: 0 0 10px; }
.cab-pl-kpi-list { max-height: min(56vh, 520px); overflow-y: auto; padding-right: 4px; }
.cab-pl-kpi-list .np-choice__item { padding: 8px 12px; }
.cab-pl-kpi-count { margin: 10px 0 0; font-size: 12.5px; color: var(--mpr-muted); }

/* документы: чего не хватает — списком в одной плашке */
.cab-pl-need { margin: 0 0 14px; }
.cab-pl-need ul { margin: 4px 0 0; padding-left: 18px; }
.cab-pl-need li { font-size: 12.5px; line-height: 1.55; }

/* телефон */
@media (max-width: 600px) {
  .cab-pl-bar > .cab-pl-seg { flex: 1 1 100%; min-width: 0; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; -webkit-overflow-scrolling: touch; }
  .cab-pl-seg .np-seg__btn { flex: 0 0 auto; white-space: nowrap; }
  .np-empty.cab-pl-empty { padding: 12px 14px; }
  .cab-pl-type__val { font-size: 13.5px; }
}
/* <<< control.js · metrics.js · postproekt.js · docs.js · notifications.js · dicts.js */
