/* Рабочее место оценщика поверх формы отчёта (EQP-X12, report_workspace.js).
   Только раскладка: цвет, шрифт, рамку и фон даёт кит (components.css,
   docs/UI_KIT.md) — шапка `.detail-head`, вкладки `.tabs`, редактор
   `.editor-cols` + `.secnav`, блоки `.card` + `.dash-panel__head`, плитки
   `.stat-card`, перечни `.item-list`. Шрифты — только токены `--fs-*`
   (решение Р8 спеки #71720625); исключение — `.rw-paper*`, имитация
   печатного листа. Тёмная тема приходит с токенами сама. */

/* ══ Каркас стола (EQP-UI-WORKSPACE #71112772, волна 2 #71720815) ══════════ */
.rb-grid.rw-desk-host { display: block; }
.rw-desk { min-width: 0; }
.rw-desk .card { margin-bottom: var(--space-4); min-width: 0; }

/* Шапка стола — `.detail-head` кита (Р5): объект, статус, номер, срок; справа
   вход в помощника и одно главное действие экрана (Р6). На телефоне главная
   кнопка — во всю ширину под заголовком.
   Липкая — как у стола бизнеса (K-A, `.detail-head.rb-page-head` в
   report_editor.css; аудит UI-кита ORD-12): главное действие не уезжает при
   прокрутке. Слой, фон и рамка — те же токены; `top: 0` согласован с
   `--rb-sticky-top` липкой навигации `.rw-nav`. */
.rw-desk-head {
  position: sticky;
  top: 0;
  z-index: var(--z-base);
  margin-bottom: var(--space-4);
  background: var(--surface);
  border-bottom: 1px solid var(--border-light);
}
@media (max-width: 600px) {
  .rw-desk-head .detail-head__aside { width: 100%; }
  /* Главная кнопка (сама или в обёртке действия выпуска) забирает остаток
     ряда; длинная подпись («Сформировать текущую версию») переносится в две
     строки модификатором кита `.btn-wrap` (его ставит report_workspace.js,
     закон 4) — контейнер задаёт только раскладку. */
  .rw-desk-head .detail-head__aside > .btn-primary,
  .rw-desk-head .detail-head__aside > [data-rw-finish-primary] { flex: 1 1 0; min-width: 0; }
  .rw-desk-head .detail-head__aside > .btn-primary { justify-content: center; }
  .rw-desk-head .detail-head__aside > [data-rw-finish-primary] > .btn-primary { width: 100%; }
}
/* Телефон (≤760 px) — приём K-A стола бизнеса: бокс шапки снят
   (`display: contents`), заголовок и номер уезжают с прокруткой, липкой
   остаётся только полоса действий `.detail-head__aside`. DOM не меняется. */
@media (max-width: 760px) {
  .rw-desk-head { display: contents; }
  .rw-desk-head > .detail-head__main { margin-bottom: var(--space-3); }
  /* Полоса — одной строкой (≤ 56 px): «Помощник оценки» компактно — иконка
     и короткая подпись, полное имя в aria-label; главная кнопка забирает
     остаток ширины. */
  .rw-desk-head__long { display: none; }
  .rw-desk-head > .detail-head__aside {
    flex-wrap: nowrap;
    position: sticky;
    top: 0;
    z-index: var(--z-base);
    margin-bottom: var(--space-4);
    padding-block: var(--space-1);
    background: var(--surface);
    border-bottom: 1px solid var(--border-light);
  }
}
html:has(.rw-desk-head) { scroll-padding-top: var(--rb-sticky-top); }
@media (max-width: 760px) {
  html:has(.rw-desk-head) { scroll-padding-top: 64px; }
}

/* Фоновая работа (R13 аудита 27-09) — строкой под шапкой стола. */
.rw-activity { display: flex; align-items: center; gap: var(--space-2); margin: calc(-1 * var(--space-2)) 0 var(--space-3); font-size: var(--fs-label); color: var(--text-muted); }
.rw-activity:empty { display: none; }

/* Вкладки — `.tabs` кита (лента прокручивается внутри себя, подписи не
   переносятся). Размер вкладки — китовый, как на столе бизнеса: контейнер
   задаёт только отступ (закон 4, аудит UI-кита ORD-5). */
.rw-tabs { margin-bottom: var(--space-5); }

/* Сворачиваемый блок стола — канон кита `section.card > details >
   summary.dash-panel__head` (UI_KIT «Сворачиваемая карточка»): маркер
   у flex-summary пропадает, шеврон — рамкой справа (правило страницы). */
.rw-desk summary.dash-panel__head { cursor: pointer; list-style: none; border-radius: var(--r1); }
.rw-desk summary.dash-panel__head::-webkit-details-marker { display: none; }
.rw-desk summary.dash-panel__head:focus-visible { outline: none; box-shadow: var(--ring); }
.rw-desk summary.dash-panel__head::after {
  content: ""; flex: 0 0 auto; width: 8px; height: 8px; margin-right: var(--space-1);
  border-right: 2px solid var(--text-muted); border-bottom: 2px solid var(--text-muted);
  transform: rotate(45deg); transition: transform .15s ease;
}
.rw-desk details:not([open]) > summary.dash-panel__head { margin-bottom: 0; }
.rw-desk details:not([open]) > summary.dash-panel__head::after { transform: rotate(-45deg); }
.rw-desk summary.dash-panel__head > .dash-panel__title { margin-right: auto; }

/* ── Экран «Заявка» (волна 5 #71720818) ─────────────────────────────────
   Сводка — `dl.kv-list`, план и перечни — `.item-list` > `.item-card`, итог
   парка — `.stat-grid--compact` кита. Здесь — раскладка строк и пастель
   выбора на фиксированных тонах (одинаковы в обеих темах). */
.rw-desk__extras { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-4); align-items: start; margin-bottom: var(--space-4); }
.rw-desk__extras:empty { display: none; }
.rw-desk__extras > .card { margin: 0; min-width: 0; }
@media (max-width: 600px) {
  .rw-desk__extras { grid-template-columns: minmax(0, 1fr); }
}
/* Экран «Право»: зазор карточек даёт .dash-stack; иконочный переход к полю
   остаётся в строке пункта, а не уезжает под текст; текст пункта
   сжимается первым. Только раскладка. */
#rw-rights .dash-stack > .card { margin: 0; }
#rw-rights .item-card__head { flex-wrap: nowrap; align-items: center; }
#rw-rights .item-card__head > :first-child { min-width: 0; }
#rw-rights .item-card__head > .btn-icon { flex: none; }
/* Заголовок карточки сводки выпуска (report.js) и помощника (report_assistant.js). */
.rw-card-title { margin: 0 0 var(--space-2); font-size: var(--fs-h2); line-height: 1.25; color: var(--text-strong); overflow-wrap: anywhere; }
/* Uppercase-«бровь» помощника оценки (report_assistant.js) — его долг;
   на экране «Заявка» её больше нет (Р8). */
.rw-kicker { display: block; margin-bottom: var(--space-2); font-size: var(--fs-label); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted); }
/* План — `.item-list` > `.item-card`: отметка и заголовок одной строкой,
   переход строки — справа (на телефоне — под пояснением). */
.rw-plan__list { margin-top: var(--space-3); }
.rw-plan__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: var(--space-3); align-items: center; }
.rw-plan__item > .item-card__actions { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; }
@media (max-width: 600px) {
  .rw-plan__item { grid-template-columns: minmax(0, 1fr); }
  .rw-plan__item > .item-card__actions { grid-column: 1; grid-row: auto; margin-top: var(--space-2); }
}
.rw-plan__head { display: flex; align-items: flex-start; gap: var(--space-2); min-width: 0; }
.rw-plan__item .item-card__meta { padding-left: calc(18px + var(--space-2)); }
.rw-plan__item.is-done .item-card__title { color: var(--text-muted); }
/* Текущая задача — пастель выбора кита (как `.secnav__item[aria-current]`). */
.rw-plan__item[aria-current="step"] { background: var(--accent-soft); border-color: var(--accent); color: var(--on-accent-soft); }
.rw-plan__item[aria-current="step"] .item-card__title { color: var(--on-accent-soft); }
.rw-plan__item[aria-current="step"] :is(.item-card__meta, .rw-mark) { color: var(--alert-muted); }
/* Отметка пункта плана — пара иконок реестра statusTodo / statusOk. */
.rw-mark { display: inline-flex; flex: 0 0 auto; color: var(--text-faint); }
.rw-mark .ui-icon { width: 18px; height: 18px; }
.rw-mark.is-done { color: var(--gn); }
.rw-issue__head { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.rw-issue__jump { margin-top: var(--space-2); }

/* Позиции парка — строка `.item-card` кита кнопкой: сброс кнопки и раскладка.
   Открытая позиция — пастель выбора кита. */
.rw-position { display: flex; align-items: center; gap: var(--space-2); width: 100%; background: var(--surface); color: inherit; font: inherit; text-align: left; cursor: pointer; }
.rw-position:hover { border-color: var(--border-strong); }
.rw-position:focus-visible { outline: none; box-shadow: var(--ring); }
.rw-position[aria-current="true"] { background: var(--accent-soft); border-color: var(--accent); color: var(--on-accent-soft); }
.rw-position[aria-current="true"] .item-card__title { color: var(--on-accent-soft); }
.rw-position[aria-current="true"] .rw-position__num { color: var(--alert-muted); }
.rw-position__num { flex: 0 0 auto; min-width: 2ch; color: var(--text-faint); }
.rw-position__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rw-position-card { margin-bottom: var(--space-3); }
.rw-position-card__title { margin: 0 0 var(--space-2); }
.rw-position-card__errors, .rw-park-total__reasons { margin: 0; padding-left: var(--space-5); }
/* Итог парка — три плитки кита, перечень статусов под ними. */
.rw-park-total { display: grid; gap: var(--space-3); margin-bottom: var(--space-3); }
.rw-park-total > .stat-grid--compact { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 600px) {
  .rw-park-total > .stat-grid--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rw-park-total > .stat-grid--compact > .stat-card:first-child { grid-column: 1 / -1; }
}
/* Длинные перечни прокручиваются внутри блока только на широком экране:
   на телефоне вложенных прокруток с фиксированной высотой нет (§3.4). */
@media (min-width: 769px) {
  .rw-issues, .rw-docs { max-height: 360px; overflow-y: auto; }
  .rw-positions { max-height: 320px; overflow-y: auto; }
}

/* ── Экран «Отчёт» — `.editor-cols` кита (Р4): разделы | раздел | aside ─── */
/* Навигация — `.secnav` кита (шаблон T5): липкая колонка с собственной
   прокруткой длинного перечня на широком экране. */
.rw-nav {
  position: sticky;
  top: var(--rb-sticky-top);
  max-height: calc(100vh - var(--rb-sticky-top) - var(--space-5));
  overflow-y: auto;
}
.rw-nav__step > .pip { align-self: flex-start; margin-top: 6px; }
.rw-nav__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rw-nav__title { overflow-wrap: anywhere; }
/* Двухколоночный вариант без aside — экран «Расчёт» стола НМА (его разметку
   ведёт #71720630): та же сетка кита без третьей колонки. */
.rw-report-layout:not(.editor-cols) { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 20px; align-items: start; }
.rw-report-layout:not(.editor-cols) > * { min-width: 0; }
.rw-nav:not(.card-p) { padding: var(--space-4) var(--space-2); }
.rw-report-main { display: flex; flex-direction: column; gap: var(--space-3); }
.rw-report-main .table-wrap, .rw-report-main .table-container { max-width: 100%; overflow-x: auto; }
.rw-report-main th { position: sticky; top: 0; z-index: 1; }
.rw-report-aside { display: flex; flex-direction: column; min-width: 0; }
.rw-report-aside > .card { margin-bottom: var(--space-4); }
.rw-cost-readiness .stat-card { margin-bottom: var(--space-3); }
.rw-cost-readiness .stat-card__value { font-size: var(--fs-h2); }
.rw-value-approaches { margin: var(--space-3) 0; }
.rw-value-approaches .kv-row__value > .btn { margin-top: var(--space-1); }
.rw-value-chain { margin: var(--space-3) 0; }
.rw-value-chain ol { margin: var(--space-2) 0; padding-left: var(--space-5); }
.rw-editor-actions {
  display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-2);
  padding-top: var(--space-4); border-top: 1px solid var(--border-light);
}
/* Одна колонка — с 1024 px включительно (критерий приёмки волны 2: кит
   сворачивает `.editor-cols` с 1023 px, но на 1024 редактору между меню и
   aside остаётся меньше 400 px). Меню разделов тогда — список над
   редактором, aside — под ним. */
.rw-section-select { display: none; margin: 0; }
@media (max-width: 1024px) {
  .rw-report-layout, .rw-report-layout:not(.editor-cols) { grid-template-columns: minmax(0, 1fr); }
  .rw-report-layout.editor-cols > .rw-nav { display: none; }
  .rw-report-layout:not(.editor-cols) > .rw-nav { position: static; max-height: none; }
  .rw-section-select { display: block; }
  /* В одну колонку правая колонка — перед контентом, как у стола бизнеса
     (K-A; аудит UI-кита ORD-12): «Стоимость» и «Замечания» видны сразу. */
  .rw-report-layout > .rw-report-aside { order: -1; }
}

/* Предпросмотр фрагмента под редактором. */
.rw-preview { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px dashed var(--border); }
.rw-preview summary { cursor: pointer; font-weight: 600; color: var(--text-strong); }
.rw-preview[open] > summary { margin-bottom: var(--space-3); }
/* Вложенные сворачиваемые блоки стола (аудит UI-кита ORD-6) — шапка кита
   `summary.dash-panel__head` (правило шеврона — выше); здесь только отступ
   блока от соседей внутри карточки. */
.rw-plan__more, .rw-finish__qc, .rw-finish__warnings { margin-top: var(--space-3); }
.rw-draft { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); width: 100%; min-width: 0; }
/* Бумага предпросмотра — имитация печатного листа (исключение Р8: Times и
   кегли печати в px). */
.rw-paper {
  padding: 20px 24px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--surface-raised);
  color: var(--text);
  font-family: "Times New Roman", Times, serif;
  font-size: 14px;
  line-height: 1.45;
  max-height: 520px;
  overflow: auto;
}
.rw-paper__label {
  margin: -4px 0 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border-light);
  color: var(--text-muted);
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.rw-paper__h { margin: 12px 0 6px; font-size: 15px; color: var(--text-strong); }
h2.rw-paper__h { font-size: 17px; }
.rw-paper__p { margin: 0 0 6px; text-indent: 1.25em; }
/* Подзаголовок narrative-текста печать ставит жирным абзацем без отступа. */
.rw-paper__p--bold { font-weight: 700; text-indent: 0; margin-top: 8px; }
.rw-paper__table-wrap { overflow-x: auto; margin: 8px 0; }
.rw-paper__table { border-collapse: collapse; font-size: 12px; min-width: 100%; }
.rw-paper__table th, .rw-paper__table td { border: 1px solid var(--border-strong); padding: 3px 6px; vertical-align: top; }
.rw-paper__table th { background: var(--surface-sunken); font-weight: 600; }
@media (max-width: 480px) {
  .rw-paper { padding: 12px; }
}

/* Переход к полю из замечания. */
@keyframes rw-flash { from { box-shadow: 0 0 0 3px var(--accent); } to { box-shadow: 0 0 0 3px transparent; } }
.rw-flash { animation: rw-flash 1.6s ease-out 1; border-radius: 6px; }

/* N2: «Методика и прочие поля» под рабочим местом аналогов (report_view.js);
   N5: «Ещё действия» на экране выпуска (report.js). */
.rw-more-fields, .rw-more-actions { margin-top: var(--space-4); border-top: 1px solid var(--border-light); padding-top: var(--space-3); }
.rw-more-actions > summary { cursor: pointer; font-weight: 600; color: var(--text-strong); }
.rw-more-actions[open] > summary { margin-bottom: var(--space-3); }

/* ── «Проверка и выпуск» (EQ-UX-11): разметку панели собирает report.js ──
   Плитки сводки — до перевода разметки каркаса на `.stat-grid--compact`
   (патч Кириллу, отчёт волны 2) рисуются плитками кита по токенам
   `.stat-card`: непрозрачный фон в обеих темах вместо несуществующего
   `--surface-muted`. */
.rw-finish { display: grid; gap: var(--space-4); min-width: 0; width: 100%; }
.rw-finish > .card { margin-bottom: 0; }
.rw-finish__metrics { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.rw-finish__issues h2, .rw-finish__release h2 { margin-top: 0; font-size: var(--fs-h3); }
.rw-finish__release { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, .9fr); gap: var(--space-5); align-items: start; }
.rw-finish__file, .rw-finish__action { min-width: 0; }
.rw-finish__action { padding-left: var(--space-5); border-left: 1px solid var(--border-light); }
.rw-finish__reason { margin: 0 0 var(--space-3); color: var(--text-muted); }
@media (max-width: 768px) {
  .rw-finish__release { grid-template-columns: 1fr; }
  .rw-finish__action { padding-left: 0; border-left: 0; border-top: 1px solid var(--border-light); padding-top: var(--space-4); }
}

/* ── Текстовый редактор раздела (EQP-X12-EDITOR, section_text_editor.js) ── */
.ste { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
/* Панель разметки — role=toolbar: кнопки кита (.btn.btn-sm), стрелки внутри
   панели ведут фокус (section_text_editor.js). */
.ste__toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.ste__hint { font-size: var(--fs-label); color: var(--text-muted); }
.ste__status { display: flex; flex-direction: column; gap: var(--space-1); }
.ste__meta { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-2); }
/* Счётчик — `.count-pill` кита; модификатор страницы — только габарит
   (подпись «N из M» длиннее числа). Превышение лимита — текстом рядом и
   рамкой ошибки поля кита (`.input-error`). */
.ste__count { width: auto; padding: 0 8px; }
.ste__count-note { font-size: var(--fs-label); color: var(--rd); }
.ste__warn {
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid var(--wn-br);
  background: var(--wn-bg);
  color: var(--alert-text);
  font-size: var(--fs-label);
}
.ste-diff {
  max-height: 320px;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--surface-raised);
  font-size: var(--fs-caption);
  line-height: 1.4;
}
.ste-diff__line { display: flex; gap: 6px; padding: 1px 8px; white-space: pre-wrap; overflow-wrap: anywhere; }
.ste-diff__line--del { background: var(--rd-bg); color: var(--alert-text); }
.ste-diff__line--ins { background: var(--gn-bg); color: var(--alert-text); }
.ste-diff__op { flex: 0 0 1ch; color: var(--text-muted); }
.ste-conflict__field { margin-top: 8px; }

/* ══ EQ-UX-14 (#71119040): режим «Помощник оценки» ══════════════════════════
   Отдельный экран стола (`[data-rw-desk-screen="assistant"]`), собран из
   кита (карточка 71584372): плитки действий — `.choice` в роли вкладок, карточки —
   `.card.card-p-sm`, «подпись — значение» — `.kv-list`, загрузка —
   `.spinner-sm`. Здесь — только раскладка экрана. 1280 — шесть действий в
   ряд, ≤900 — три, ≤560 — два. */
.ra-mode { min-width: 0; }
.ra-head__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); flex-wrap: wrap; }
.ra-head__title { min-width: 0; }
.ra-crumbs { font-size: var(--fs-caption); color: var(--text-muted); margin-bottom: var(--space-2); overflow-wrap: anywhere; }
.ra-value-row { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: var(--space-4); margin-top: var(--space-3); }
.ra-value { font-size: var(--fs-display); font-weight: 800; line-height: 1.15; color: var(--text-strong); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ra-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); margin-top: var(--space-2); font-size: var(--fs-caption); color: var(--text-muted); }
.ra-range { flex-direction: column; align-items: stretch; gap: 2px; min-width: 0; }
.ra-range strong { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ra-qc { flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin-top: var(--space-4); }
.ra-actions { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--space-3); margin: 0 0 var(--space-4); }
.ra-actions > .choice { align-items: center; text-align: center; min-width: 0; overflow-wrap: anywhere; }
/* Выбранная вкладка-плитка: состояние вкладки — `aria-selected` (роль tab),
   вид — тот же, что у выбранной плитки кита (`.choice[aria-pressed]`). */
.ra-actions > .choice[aria-selected="true"] { background: var(--accent-soft); border-color: var(--accent); color: var(--on-accent-soft); }
.ra-actions > .choice[aria-selected="true"] :is(.choice__title, .choice__icon) { color: var(--on-accent-soft); }
.ra-actions > .choice[aria-selected="true"] .choice__desc { color: var(--alert-muted); }
.ra-panel h2 { margin: 0 0 var(--space-2); font-size: var(--fs-h3); color: var(--text-strong); }
.ra-card { margin: 0 0 var(--space-3); min-width: 0; }
.ra-card--unconfirmed { border-style: dashed; }
.ra-card h3 { margin: var(--space-2) 0; font-size: var(--fs-body-lg); color: var(--text-strong); overflow-wrap: anywhere; }
.ra-card__head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); flex-wrap: wrap; }
.ra-card__head h3 { margin-top: 0; }
.ra-card__kv { margin: var(--space-3) 0; }
.ra-card__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: var(--space-3); }
.ra-form { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--border-light); }
.ra-loading { display: flex; align-items: center; gap: var(--space-2); color: var(--text-muted); }
.ra-panel .item-list { margin: var(--space-2) 0; }
@media (max-width: 900px) {
  .ra-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .ra-value-row { grid-template-columns: minmax(0, 1fr); }
  .ra-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ra-value { font-size: var(--fs-h1); }
}
