/* © 2026 ООО «Спецэкоэра». Все права защищены.
   Web-платформа 2.0 — стили поверх дизайн-системы build/12_design_system (копия: static/v2/ds/*.css).
   Здесь нет своих цветов и шрифтов: только токены 12 (var(--…)) и раскладка. Блоки:
   1) оболочка (режим без меню, плашки), 2) экраны входа, первого запуска, «О программе»,
   3) мост разметки 1.x (card--v1, tbl, form-grid, toolbar, kpis…) к виду дизайн-системы, 4) печать.
   Прежняя редакция 1.x — build/_ARCHIVE/2026-10-16_UI_v2_originals/01_web_platform/static/app.css. */

/* ---------- 1. Оболочка ---------- */
.app.is-bare { display: block; }
.app.is-bare > .side, .app.is-bare > .scrim, .app.is-bare .top { display: none; }
.app.is-bare .content.view--bare { max-width: none; padding: 0; }
.view { outline: none; }
.view > .loading { padding: var(--sp-8) 0; }
.noscript { padding: var(--sp-8); text-align: center; }
.side__link.active { background: var(--side-active-bg); color: var(--side-active); }
.top__dot[hidden] { display: none; }
.head-badges { gap: var(--sp-2); }
.modal--form { width: min(760px, 100%); }
.modal__titles { flex: 1; min-width: 0; }
.card__pad { padding: var(--sp-3) var(--sp-4) 0; }
.empty--compact { padding: var(--sp-6) var(--sp-4); gap: var(--sp-2); }
.empty--compact .empty__art { width: 48px; height: 48px; border-radius: var(--r-lg); }
.empty--compact h3 { font-size: var(--fs-md); }
.menu__head { padding: var(--sp-2) var(--sp-3) var(--sp-1); }
.menu__head b { display: block; }
.menu__head small { color: var(--text-3); }
.menu--wide { width: min(380px, calc(100vw - 16px)); max-height: min(70vh, 560px); overflow: auto; }
.menu__item small { display: block; color: var(--text-3); font-size: var(--fs-xs); }
.menu__empty { padding: var(--sp-4) var(--sp-3); color: var(--text-3); font-size: var(--fs-sm); }
.demo-strip__badge .ico { width: 14px; height: 14px; }
.palette__item .palette__sub { color: var(--text-3); margin-left: auto; white-space: nowrap; font-size: var(--fs-xs); }
.setup__actions { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.setup li .btn { white-space: nowrap; }
.help-panel__what { color: var(--text-2); margin-bottom: var(--sp-5); }
.help-panel h3 { margin: var(--sp-6) 0 var(--sp-3); }
.wizard .steps { margin-bottom: var(--sp-4); }
.wizard__step { display: grid; gap: var(--sp-3); }
.modal__stack { display: grid; gap: var(--sp-4); }
.mb-section { margin-bottom: var(--sp-5); }
.menu__item.is-unread b { color: var(--primary); }
.menu__item > span { min-width: 0; }
.wizard__step ul { margin: 0; padding-left: 20px; color: var(--text-2); display: grid; gap: 4px; }

/* ---------- 2. Вход, первый запуск, «О программе» — стили 12 (components.css); здесь только своё ---------- */
.view--bare > .demo-strip { position: sticky; top: 0; z-index: var(--z-top); }
.login__feat span { min-width: 0; }
.about__rights { padding: var(--sp-4); border-radius: var(--r-md); background: var(--surface-2); border: 1px solid var(--border); font-weight: var(--fw-medium); }
.content.view--bare .about { margin: 0 auto; padding: var(--sp-8) var(--sp-4); }
.st__art .ico { width: 56px; height: 56px; }

/* ---------- 3. Мост разметки 1.x ---------- */
/* Поля без классов дизайн-системы (формы 1.x): специфичность 0, классы .input/.select/.textarea главнее */
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), select, textarea) {
  width: 100%; min-width: 0; height: var(--control-h); padding: 0 12px; border: 1px solid var(--border-strong);
  border-radius: var(--r-md); background: var(--surface); color: var(--text); font: inherit;
}
:where(textarea) { height: auto; min-height: 88px; padding: 10px 12px; resize: vertical; }
:where(input, select, textarea):focus { outline: none; border-color: var(--primary); box-shadow: var(--focus-ring); }
input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--primary); vertical-align: middle; }
.field > label:not(.check) { font-weight: var(--fw-semibold); font-size: var(--fs-sm); color: var(--text); }
.field .hint { font-size: var(--fs-xs); line-height: var(--lh-xs); color: var(--text-3); }
.field-error { color: var(--danger-text); font-size: var(--fs-xs); font-weight: var(--fw-medium); }
.field-error:empty { display: none; }
.field.invalid input, .field.invalid select, .field.invalid textarea { border-color: var(--danger); }
.field-text, .field.wide { grid-column: 1 / -1; }
.check { font-size: var(--fs-md); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4); }
.form-error { grid-column: 1 / -1; color: var(--danger-text); font-weight: var(--fw-medium); }
.form-error:empty { display: none; }
.form-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--sp-2); margin-top: var(--sp-2); }
.form-actions .spacer { flex: 1; }
.btn-link { background: none; border: 0; color: var(--primary); cursor: pointer; font: inherit; padding: 0; }

.card--v1 { padding: var(--sp-4) var(--sp-5); margin-bottom: var(--sp-5); }
.card--v1 > h2 { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-3); }
.card--v1 h3 { font-size: var(--fs-md); margin: var(--sp-4) 0 var(--sp-2); }
.card--v1 > .table-wrap, .card--v1 > div > .table-wrap { border: 1px solid var(--border); border-radius: var(--r-md); }
form.card--v1 { display: grid; }
.error-box { display: block; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-lg); background: var(--danger-soft); color: var(--danger-text); }
.error-box ul { margin: var(--sp-2) 0 0; }
.loading { color: var(--text-3); padding: var(--sp-5) 0; display: flex; align-items: center; gap: var(--sp-2); }
.loading::before { content: ""; width: 16px; height: 16px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spin .8s linear infinite; }
.tag.warn { background: var(--warning-soft); color: var(--warning-text); }
.tag.danger { background: var(--danger-soft); color: var(--danger-text); }
.tag.ok { background: var(--success-soft); color: var(--success-text); }
.muted { color: var(--text-3); }

/* Список сущности: карточка дизайн-системы с панелью поиска и фильтров */
.list-card .toolbar { align-items: flex-end; }
.toolbar .field { width: 190px; }
.toolbar .field.search { width: 260px; }
.toolbar .field.check-field { width: auto; justify-content: flex-end; min-height: var(--control-h); }
.toolbar .grow { flex: 1; }
.filters { display: contents; }
.filters-toggle { display: none; }
.list-card .card__foot[hidden] { display: none; }
.view.v1 > .toolbar { margin-bottom: var(--sp-4); }

/* Таблицы 1.x (класс tbl рядом с table дизайн-системы) */
.tbl td { vertical-align: top; }
.tbl td.col-int, .tbl td.col-num, .tbl td.col-money, .tbl td.col-percent,
.tbl th.col-int, .tbl th.col-num, .tbl th.col-money, .tbl th.col-percent { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tbl tr.row-warn td:first-child { box-shadow: inset 3px 0 0 var(--danger); }
.tbl td.k-number, .tbl td.col-date, .tbl td.col-datetime { white-space: nowrap; }
.tbl td.k-number { font-weight: var(--fw-semibold); }
.tbl tr.subtotal td, .tbl tr.total td { font-weight: var(--fw-bold); background: var(--surface-2); }
.tbl td.actions { text-align: right; min-width: 120px; }
.tbl td.actions .btn { margin: 2px 0 2px 4px; }
.tbl td.k-details { max-width: 340px; overflow-wrap: anywhere; font-size: var(--fs-xs); color: var(--text-3); }
.tbl ul.plain { margin: 0; padding: 0; list-style: none; }
.tbl tr.clickable:focus-visible { outline: none; box-shadow: inset var(--focus-ring); }
.view.v1 > .table-wrap { border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface); }
.pager { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); color: var(--text-3); font-size: var(--fs-sm); }
.pager .btns { display: flex; gap: var(--sp-2); }
.card--v1 .pager { margin-top: var(--sp-3); }

/* Главная и отчёты обмена */
.kpis { margin-bottom: 0; }
.kpi.warn .kpi__value { color: var(--danger-text); }
.kpis.small { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: var(--sp-3); margin: var(--sp-3) 0; }
.kpis.small .kpi { padding: var(--sp-3); }
.kpis.small .kpi__value { font-size: var(--fs-xl); line-height: var(--lh-xl); }
.bars { display: grid; gap: var(--sp-3); }
.bar-row { display: grid; grid-template-columns: 170px minmax(0, 1fr) 48px; align-items: center; gap: var(--sp-3); color: inherit; font-size: var(--fs-sm); }
.bar-row:hover { text-decoration: none; color: var(--primary); }
.bar-row .n { text-align: right; font-weight: var(--fw-semibold); }

/* Карточки записей и вкладки */
.info-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: var(--sp-3) var(--sp-5); margin: 0; }
.info-grid div { min-width: 0; }
.info-grid dt { color: var(--text-3); font-size: var(--fs-xs); }
.info-grid dd { margin: 2px 0 0; overflow-wrap: anywhere; font-weight: var(--fw-medium); }
.info-grid .wide { grid-column: 1 / -1; }
.desc { white-space: pre-wrap; }
.view > .tabs { margin-bottom: var(--sp-5); }
a.tab { text-decoration: none; }
a.tab:hover { text-decoration: none; }
a.tab[aria-selected="true"] { color: var(--primary); }
.secret {
  font-family: var(--font-mono); font-size: var(--fs-lg); font-weight: var(--fw-semibold); letter-spacing: .04em;
  background: var(--surface-2); border: 1px dashed var(--border-strong); border-radius: var(--r-md); padding: var(--sp-3); user-select: all;
}

/* Отчёты, интеграции, DICOM */
.report-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--sp-3) var(--sp-4); align-items: end; }
.report-form .field.wide { grid-column: span 2; }
.report-actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-4); }
.report-meta { color: var(--text-3); font-size: var(--fs-sm); margin: var(--sp-1) 0 var(--sp-3); }
pre.code {
  font-family: var(--font-mono); font-size: var(--fs-sm); background: var(--surface-2); border: 1px solid var(--border);
  border-radius: var(--r-md); padding: var(--sp-3); overflow-x: auto; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 420px;
}
textarea.mono { font-family: var(--font-mono); font-size: var(--fs-sm); }
.dicom-node { border-top: 1px solid var(--border); padding-top: var(--sp-3); margin-top: var(--sp-3); }
.dicom-node:first-of-type { border-top: 0; margin-top: 0; }
.node-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.node-head .actions { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.node-head h3 { margin: 0; }
.avail { display: flex; gap: 2px; flex-wrap: wrap; margin-bottom: var(--sp-2); }
.avail-day { width: 14px; height: 22px; border-radius: 3px; background: var(--surface-3); border: 1px solid var(--border); }
.avail-day.ok { background: var(--success); border-color: transparent; }
.avail-day.warn { background: var(--warning); border-color: transparent; }
.avail-day.bad { background: var(--danger); border-color: transparent; }
.run-report .kpis { margin: var(--sp-2) 0 var(--sp-3); }

/* ---------- Планшет и телефон ---------- */
@media (max-width: 1024px) {
  .bar-row { grid-template-columns: 130px minmax(0, 1fr) 40px; }
}
@media (max-width: 767px) {
  .form-grid { grid-template-columns: minmax(0, 1fr); }
  .toolbar .field, .toolbar .field.search { width: 100%; }
  .toolbar .btn { flex: 1; }
  .toolbar .grow { display: none; }
  .filters { display: none; width: 100%; flex-direction: column; gap: var(--sp-3); }
  .filters.open { display: flex; }
  .filters-toggle { display: inline-flex; }
  .card--v1 { padding: var(--sp-3) var(--sp-4); }
  .tbl, .tbl tbody, .tbl tr, .tbl td { display: block; width: 100%; }
  .tbl thead { display: none; }
  .tbl tr { padding: var(--sp-2) 0; border-bottom: 1px solid var(--border); }
  .tbl tbody tr:last-child { border-bottom: 0; }
  .tbl td { border: 0; padding: 3px var(--sp-4); display: flex; justify-content: space-between; gap: var(--sp-4); text-align: right !important; }
  .tbl td::before { content: attr(data-label); color: var(--text-3); font-size: var(--fs-xs); text-align: left; flex: 0 0 42%; }
  .tbl td[data-label=""]::before { content: none; }
  .tbl td.actions { justify-content: flex-end; }
  .tbl tr.row-warn { box-shadow: inset 3px 0 0 var(--danger); }
  .tbl tr.row-warn td:first-child { box-shadow: none; }
  .bar-row { grid-template-columns: 110px minmax(0, 1fr) 36px; }
  .report-form .field.wide { grid-column: auto; }
  .pager { flex-direction: column; align-items: stretch; }
  .pager .btns .btn { flex: 1; }
  .page-head__actions.actions > .btn, .page-head__actions.actions > a.btn { flex: 1 1 auto; }
}

/* ---------- 4. Печать страниц приложения ---------- */
@media print {
  .toolbar, .pager, .actions, .report-actions, .help-btn, .demo-strip__btn { display: none !important; }
  .card, .table-wrap { box-shadow: none; }
}
.kpi__value.kpi__value--long { font-size: var(--fs-2xl); line-height: var(--lh-3xl); }

/* Сворачиваемые группы меню */
.side__toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: 0; cursor: pointer; font: inherit; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--side-text-2); text-align: left; border-radius: var(--r-sm); }
.side__toggle:hover { color: var(--side-text); }
.side__toggle .ico { transition: transform var(--dur-2); transform: rotate(90deg); opacity: .7; }
.side__group.is-folded .side__toggle .ico { transform: none; }
.side__group.is-folded .side__link { display: none; }
.app.is-collapsed .side__group.is-folded .side__link { display: flex; }
.app.is-collapsed .side__toggle .ico, .app.is-collapsed .side__toggle span { display: none; }
@media (max-width: 1100px) { .app:not(.is-expanded) .side__group.is-folded .side__link { display: flex; } .app:not(.is-expanded) .side__toggle .ico { display: none; } }
@media (max-width: 767px) { .app .side__group.is-folded .side__link { display: none; } .app .side__toggle .ico { display: inline-block; } }
.admin-links { margin-bottom: var(--sp-5); }
/* Длинные названия в таблицах: две строки с многоточием, полный текст — в подсказке */
.clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.tbl td.cell-text { min-width: 160px; max-width: 340px; }
@media (max-width: 767px) { .tbl td.cell-text { max-width: none; min-width: 0; } .tbl td .clamp-2 { text-align: right; } }

/* ---------- Главная 2.0: спарклайны, график потока, схема объектов, лента, загрузка (токены 12) ---------- */
.spark { display: block; overflow: visible; }
.spark__line { fill: none; stroke: var(--series-1); stroke-width: 1.75; stroke-linejoin: round; stroke-linecap: round; }
.spark__dot { fill: var(--series-1); }
.spark--danger .spark__line { stroke: var(--danger); }
.spark--danger .spark__dot { fill: var(--danger); }
.kpi__value small { font-size: var(--fs-md); }
.lchart { width: 100%; height: 220px; display: block; }
.lchart__grid { stroke: var(--grid); stroke-width: 1; }
.lchart__axis { fill: var(--axis); font-size: 11px; font-family: var(--font); }
.lchart__line { fill: none; stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.lchart__line.s1 { stroke: var(--series-1); } .lchart__line.s2 { stroke: var(--series-2); }
.lchart__dot.s1 { fill: var(--series-1); } .lchart__dot.s2 { fill: var(--series-2); }
.legend i.legend__s1 { background: var(--series-1); } .legend i.legend__s2 { background: var(--series-2); }
.chart .legend { margin-bottom: var(--sp-2); }
.dash-2 { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
@media (max-width: 1100px) { .dash-2 { grid-template-columns: minmax(0, 1fr); } }
.omap { width: 100%; height: auto; display: block; }
.omap__bg { fill: var(--surface-2); stroke: var(--border); }
.omap__link { stroke: var(--border-strong); stroke-dasharray: 3 4; }
.omap__core { stroke: var(--surface); stroke-width: 2; }
.omap__halo { opacity: .22; }
.omap--red .omap__core, .omap--red .omap__halo { fill: var(--danger); }
.omap--yellow .omap__core, .omap--yellow .omap__halo { fill: var(--warning); }
.omap--green .omap__core, .omap--green .omap__halo { fill: var(--success); }
.omap--gray .omap__core, .omap--gray .omap__halo { fill: var(--text-3); }
.omap__label { fill: var(--text); font-size: 12px; font-weight: 600; font-family: var(--font); paint-order: stroke; stroke: var(--surface-2); stroke-width: 3px; stroke-linejoin: round; }
.omap__node:hover .omap__core { stroke: var(--text); }
.omap__note { font-size: var(--fs-xs); margin-top: var(--sp-2); }
.legend i.omap--red { background: var(--danger); border-radius: 50%; } .legend i.omap--yellow { background: var(--warning); border-radius: 50%; }
.legend i.omap--green { background: var(--success); border-radius: 50%; } .legend i.omap--gray { background: var(--text-3); border-radius: 50%; }
.card__head .legend { margin-left: auto; }
.feed__link { flex: 1; min-width: 0; color: inherit; display: block; }
.feed__link:hover { text-decoration: none; }
.feed__link:hover .list__title { color: var(--primary); }
.feed .list__sub { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sla-table td { vertical-align: middle; }
.sla-bar { display: inline-flex; align-items: center; gap: var(--sp-2); }
.sla-bar .progress { width: 72px; }
.park { list-style: none; margin: var(--sp-3) 0 0; padding: 0; display: grid; gap: var(--sp-2); }
.park li { display: grid; grid-template-columns: 12px minmax(0, 1fr) 36px 80px; gap: var(--sp-2); align-items: center; font-size: var(--fs-sm); }
.park__label { color: var(--text-2); }
.park b { text-align: right; }

.side__group:not(.is-more) .side__extra { display: none; }
.app.is-collapsed .side__group .side__extra { display: flex; }
.app.is-collapsed .side__more { display: none; }
.side__more { width: 100%; background: none; border: 0; cursor: pointer; font: inherit; color: var(--side-text-2); }
.side__more:hover { color: var(--side-text); }
.side__group.is-folded .side__more { display: none; }
.sla-bar b { white-space: nowrap; }
@media (max-width: 1100px) { .app:not(.is-expanded) .side__group .side__extra { display: flex; } .app:not(.is-expanded) .side__more { display: none; } }
@media (max-width: 767px) { .app .side__group:not(.is-more) .side__extra { display: none; } .app .side__more { display: flex; } .app .side__group.is-folded .side__more { display: none; } }

/* Плитки KPI экранов пакетов без класса grid (H-027, H-034): сетка, поверхность карточки, перенос подписи */
.grid-kpi:not(.grid) { display: grid; gap: var(--sp-4); }
.grid-kpi > .kpi:not(.card) { background: var(--surface); border: 1px solid var(--card-border); border-radius: var(--r-lg); box-shadow: var(--shadow-card); }
.kpi__row:has(> .kpi) { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--sp-4); align-items: stretch; }
.kpi__label { min-width: 0; flex-wrap: wrap; overflow-wrap: anywhere; }
@media (max-width: 600px) { .kpi__row:has(> .kpi) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Карточка задачи (запасная, пока у пакета B нет своей) */
.task-card .dl { margin-top: var(--sp-2); }

/* H-041: суммы в плитках KPI не обрезаются — плитки переносятся по минимальной ширине, шрифт числа уменьшается
   по ширине плитки (контейнерные запросы), «₽» и число не разрываются; полный текст — в подсказке (title) */
.grid-kpi { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
@media (max-width: 600px) { .grid-kpi { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.kpi { container-type: inline-size; min-width: 0; }
.kpi__value { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: clamp(16px, 13cqi, 32px); line-height: 1.2; }
.kpi__value.kpi__value--long { font-size: clamp(15px, 10cqi, 26px); }
.kpi__row .kpi__value { min-width: 0; }

/* Подробности журнала действий (H-050) */
.audit-details { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; font-size: var(--fs-xs); color: var(--text-2); }
.audit-details__k { color: var(--text-3); }
.audit-details summary { cursor: pointer; color: var(--primary); }
.tbl td.k-details { max-width: 420px; }
/* H-051: на телефоне шрифт полей не меньше 16 px — иначе Safari на iPhone увеличивает страницу при фокусе */
@media (max-width: 768px), (pointer: coarse) { textarea.mono { font-size: 16px; } }

/* Тендерный конвейер (пакет PATH, static/v2/pages/dealpath.js): цепочка этапов, доска «Конвейер», подэтапы */
.cnv-chain { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--sp-2); }
.cnv-step__btn { width: 100%; height: 100%; display: grid; gap: 4px; justify-items: start; text-align: left; padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); color: var(--text); cursor: pointer; font: inherit; }
.cnv-step__num { font-weight: var(--fw-bold); font-size: var(--fs-lg); color: var(--text-3); }
.cnv-step__label { font-weight: var(--fw-semibold); }
.cnv-step--done .cnv-step__btn { border-color: var(--success); background: var(--success-soft); }
.cnv-step--current .cnv-step__btn { border-color: var(--primary); background: var(--primary-soft); box-shadow: var(--shadow-sm); }
.cnv-step--current .cnv-step__num { color: var(--primary); }
.cnv-step--skipped .cnv-step__btn { opacity: .55; border-style: dashed; }
.cnv-step--branch .cnv-step__btn { border-left: 4px solid var(--danger); }
.cnv-step.is-picked .cnv-step__btn { outline: 2px solid var(--primary); outline-offset: 1px; }
.cnv-subs { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--sp-3); }
.cnv-facts { display: grid; grid-template-columns: fit-content(45%) minmax(0, 1fr); gap: 2px var(--sp-3); margin: 0; font-size: var(--fs-sm); }
.cnv-facts dt { color: var(--text-3); }
.cnv-facts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.cnv-docs { margin: 0; padding-left: 1.2em; display: grid; gap: 4px; }
.cnv-board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(230px, 1fr); gap: var(--sp-3); overflow-x: auto; padding-bottom: var(--sp-2); }
.cnv-lane { display: grid; align-content: start; gap: var(--sp-2); background: var(--surface-2); border-radius: var(--r-md); padding: var(--sp-2); min-width: 0; }
.cnv-lane--final { opacity: .8; }
.cnv-lane__head { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-2); }
.cnv-card { display: grid; gap: 4px; padding: var(--sp-2) var(--sp-3); background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-sm);
  color: var(--text); text-decoration: none; }
.cnv-card:hover { border-color: var(--primary); }
.cnv-strip__in { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
/* законность с цитатами норм, норма срока, ИИ (2026-10-18) */
.cnv-sub--wide { grid-column: 1 / -1; }
.cnv-quote { margin: var(--sp-2) 0; padding: var(--sp-2) var(--sp-3); border-left: 3px solid var(--border); background: var(--surface); }
.cnv-quote__text { white-space: pre-wrap; font-size: 0.92em; max-height: 14em; overflow: auto; }
.cnv-law details > summary, .cnv-due-law > summary { cursor: pointer; }
.cnv-ai__text { white-space: pre-wrap; max-height: 60vh; overflow: auto; font: inherit; }
@media (max-width: 600px) { .cnv-board { grid-auto-flow: row; grid-auto-columns: auto; } }
/* меню по ролям: переключатель «показать меню роли» у администратора */
.side__menu-as-box { padding: var(--sp-2) var(--sp-3) 0; }
.side__menu-as { width: 100%; font-size: var(--fs-sm); background: var(--side-bg-2); color: var(--side-text); border-color: var(--side-border); }
.app.is-collapsed .side__menu-as-box { display: none; }
/* сторож (пакет 0.4): красная плашка под верхней панелью — static/v2/pages/_shell.js watchRender */
.watch-slot:empty { display: none; }
.watch-slot { padding: var(--sp-2) var(--sp-4) 0; }
.watch-strip { align-items: center; }
.watch-strip__body { flex: 1; min-width: 0; }
.watch-strip__list { margin: 4px 0 0; padding-left: 18px; display: grid; gap: 2px; font-size: var(--fs-sm); }
.watch-strip__list b { display: inline; }
@media print { .watch-slot { display: none !important; } }

/* ---------- 5. Экраны MVP (пакет 1.7, 2026-10-27): только новые классы mvp-*, прежние не меняются ----------
   Кабинет и пульт, «Счета», реестр и карточка контракта, «Подтвердить условия», доска сроков, «Поток», карточка сделки.
   Токены и компоненты — дизайн-система 12 (static/v2/ds). Откат — убрать этот блок и классы mvp-* в экранах. */
.mvp-page { min-width: 0; }
/* строка «что здесь делать» — одна фраза под шапкой экрана */
.mvp-todo { display: flex; gap: var(--sp-3); align-items: flex-start; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-lg);
  background: var(--primary-soft); color: var(--primary-soft-text); border: 1px solid transparent; font-size: var(--fs-md); }
.mvp-todo__mark { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: var(--r-full);
  background: var(--brand-grad); color: var(--text-inverse); font-weight: var(--fw-bold); font-size: var(--fs-sm); }
.mvp-todo b { font-weight: var(--fw-semibold); }
.mvp-todo__text { min-width: 0; }
/* сетки, которые не вылезают за экран телефона */
.mvp-grid { display: grid; gap: var(--sp-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.mvp-grid--wide { grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); }
.mvp-grid--main { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
.mvp-kpis { display: grid; gap: var(--sp-3); grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr)); }
.mvp-stat { padding: var(--sp-3) var(--sp-4); display: grid; gap: 2px; }
.mvp-stat__label { color: var(--text-3); font-size: var(--fs-sm); }
.mvp-stat__value { font-size: var(--fs-2xl); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.mvp-stat--danger .mvp-stat__value { color: var(--danger-text); }
.mvp-stat--warning .mvp-stat__value { color: var(--warning-text); }
a.mvp-stat { color: inherit; text-decoration: none; }
a.mvp-stat:hover { box-shadow: var(--shadow-card-hover); }
/* пустой раздел: почему пусто и что сделать */
.mvp-why { display: grid; gap: var(--sp-2); padding: var(--sp-5) var(--sp-4); border: 1px dashed var(--border-strong); border-radius: var(--r-lg);
  background: var(--surface-2); }
.mvp-why__title { font-weight: var(--fw-semibold); font-size: var(--fs-md); }
.mvp-why__row { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: var(--sp-2); color: var(--text-2); font-size: var(--fs-sm); }
.mvp-why__row > b { color: var(--text-3); font-weight: var(--fw-medium); }
.mvp-why__acts { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-1); }
/* выбор из справочника: поле + список найденного */
.mvp-pick { position: relative; min-width: 0; }
.mvp-pick__list { position: absolute; z-index: var(--z-tip); left: 0; right: 0; top: calc(100% + 4px); max-height: 300px; overflow: auto; margin: 0; padding: 4px;
  list-style: none; background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-lg); }
.mvp-pick__list[hidden] { display: none; }
.mvp-pick__opt { display: grid; gap: 1px; padding: var(--sp-2) var(--sp-3); border-radius: var(--r-md); cursor: pointer; }
.mvp-pick__opt small { color: var(--text-3); font-size: var(--fs-xs); }
.mvp-pick__opt[aria-selected="true"], .mvp-pick__opt:hover { background: var(--primary-soft); color: var(--primary-soft-text); }
.mvp-pick__none { padding: var(--sp-2) var(--sp-3); color: var(--text-3); font-size: var(--fs-sm); }
.mvp-pick__chosen { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin-top: 4px; font-size: var(--fs-sm); color: var(--success-text); }
/* графики кабинета */
.mvp-chart { min-height: 220px; width: 100%; }
.mvp-chart__note { color: var(--text-3); font-size: var(--fs-sm); margin-top: var(--sp-2); }
/* календарь доски сроков */
.mvp-cal { display: grid; gap: 6px; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.mvp-cal__day { padding: 6px; min-height: 96px; min-width: 0; overflow-wrap: anywhere; }
.mvp-cal__day.is-today { outline: 2px solid var(--primary); }
.mvp-cal__day.is-out { opacity: .5; }
.mvp-cal__ev { font-size: var(--fs-xs); margin-top: 4px; cursor: pointer; }
.mvp-cal__dow { color: var(--text-3); font-weight: var(--fw-semibold); }
/* таблицы кабинета: подписи столбцов для телефона */
.mvp-page .table-wrap { -webkit-overflow-scrolling: touch; }
@media (max-width: 1100px) { .mvp-grid--main { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) {
  .mvp-todo { padding: var(--sp-3); font-size: var(--fs-sm); }
  .mvp-why__row { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .mvp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mvp-stat__value { font-size: var(--fs-xl); }
  .mvp-page .page-head__actions { width: 100%; }
  .mvp-page .page-head__actions .btn, .mvp-page .page-head__actions .row > .btn { flex: 1 1 auto; }
  .mvp-page .tabs { overflow-x: auto; flex-wrap: nowrap; }
  .mvp-page .row.wrap > .field, .mvp-page .row.wrap > label.field { flex: 1 1 100%; }
  .mvp-cal { grid-template-columns: minmax(0, 1fr); }
  .mvp-cal__dow, .mvp-cal__day.is-empty { display: none; }
  .mvp-cal__day { min-height: 0; }
  table.mvp-table, .mvp-table tbody, .mvp-table tr, .mvp-table td { display: block; width: 100%; }
  .mvp-table thead { display: none; }
  .mvp-table tr { padding: var(--sp-2) 0; border-bottom: 1px solid var(--border); }
  .mvp-table td { border: 0; padding: 3px var(--sp-3); display: flex; justify-content: space-between; gap: var(--sp-3); text-align: right !important; min-width: 0 !important; }
  .mvp-table td::before { content: attr(data-label); color: var(--text-3); font-size: var(--fs-xs); text-align: left; flex: 0 0 40%; }
  .mvp-table td[data-label=""]::before { content: none; }
  .mvp-table td > * { min-width: 0; overflow-wrap: anywhere; }
  .table-wrap:has(> .mvp-table) { overflow-x: hidden; max-height: none; }
}
