/* Правка 119: единая дизайн-система интерфейса.
   Белый фон, зелёные основные действия, нейтральные статусы. Красный — только
   ошибка, блокировка или опасное действие. Подключается после app.css. */

:root {
    --ok: #2f5d50; --ok-soft: #e4efe9;
    --warn: #8a5a00; --warn-soft: #fdf1d6;
    --info: #3c4a66; --info-soft: #eef1f7;
    --neutral: #55554f; --neutral-soft: #eeeeea;
    --error: #9a3b2e; --error-soft: #f6e5e2;
    --radius: 8px;
    --gap: 12px;
}

/* --- Заголовок страницы и основная кнопка ----------------------------- */
.page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin: 0 0 16px; }
.page-head h1 { margin: 0; font-size: 28px; line-height: 1.2; }
.page-head__sub { margin: 4px 0 0; color: var(--muted); font-size: 14px; }
.page-head__actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.crumbs { font-size: 13px; color: var(--muted); margin: 0 0 6px; }
.crumbs a { color: var(--muted); }

.btn-primary, a.btn-primary, button.btn-primary {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 40px; padding: 8px 16px;
    border: 1px solid var(--accent); border-radius: 6px; background: var(--accent); color: #fff; font: inherit; font-weight: 600;
    text-decoration: none; cursor: pointer; white-space: nowrap;
}
.btn-primary:hover { background: var(--accent-dark); }
.btn-ghost, a.btn-ghost, button.btn-ghost {
    display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 12px; border: 1px solid var(--border);
    border-radius: 6px; background: var(--panel); color: var(--text); font: inherit; font-size: 14px; text-decoration: none; cursor: pointer;
}
.btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
.btn-link { background: none; border: none; padding: 0; color: var(--accent); font: inherit; text-decoration: underline; cursor: pointer; }
.btn-danger, button.btn-danger { background: var(--panel); color: var(--error); border: 1px solid #d9a79f; border-radius: 6px; padding: 6px 12px; font: inherit; cursor: pointer; }
:is(.btn-primary, .btn-ghost, .btn-danger)[disabled], :is(.btn-primary, .btn-ghost, .btn-danger)[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }

/* --- Статусы ------------------------------------------------------------ */
.status { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 100px; font-size: 12px; line-height: 1.5;
          background: var(--neutral-soft); color: var(--neutral); white-space: nowrap; }
.status--ok { background: var(--ok-soft); color: var(--ok); }
.status--warn { background: var(--warn-soft); color: var(--warn); }
.status--info { background: var(--info-soft); color: var(--info); }
.status--error { background: var(--error-soft); color: var(--error); }
.status--work::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .7; }

/* --- Уведомления в странице -------------------------------------------- */
.notice { border-radius: var(--radius); padding: 10px 14px; margin: 0 0 12px; font-size: 14px; border: 1px solid var(--border); background: var(--panel); }
.notice--ok { border-color: #bcd6c9; background: var(--ok-soft); }
.notice--warn { border-color: #ecd59b; background: var(--warn-soft); }
.notice--error { border-color: #e2b6ae; background: var(--error-soft); color: var(--error); }
.notice--info { border-color: #cfd6e4; background: var(--info-soft); }
.notice__title { font-weight: 600; margin: 0 0 2px; }
.notice p { margin: 2px 0; }

/* --- Компактное уведомление с отменой (вместо широкой зелёной полосы) ---- */
.toast { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 60; display: flex; align-items: center; gap: 12px;
         max-width: min(560px, calc(100vw - 32px)); padding: 10px 14px; border-radius: 8px; background: #26302c; color: #fff;
         box-shadow: 0 6px 20px rgba(0,0,0,.18); font-size: 14px; }
.toast__text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.toast form { margin: 0; }
.toast button, .toast a { background: none; border: none; color: #b8e3cd; font: inherit; font-weight: 600; cursor: pointer; padding: 0; text-decoration: underline; white-space: nowrap; }
.toast__close { color: #ddd !important; text-decoration: none !important; font-size: 18px !important; line-height: 1; }
.toast--error { background: #6d2a21; }
@media (prefers-reduced-motion: no-preference) { .toast { animation: toast-in .18s ease-out; } @keyframes toast-in { from { opacity: 0; transform: translate(-50%, 8px); } } }

/* --- Меню «…» ------------------------------------------------------------ */
.more { position: relative; display: inline-block; }
.more > summary { list-style: none; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 6px;
                  border: 1px solid transparent; cursor: pointer; font-size: 18px; color: var(--muted); user-select: none; }
.more > summary::-webkit-details-marker { display: none; }
.more > summary:hover, .more[open] > summary { border-color: var(--border); background: var(--panel); color: var(--text); }
.more__menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 40; min-width: 220px; max-width: min(320px, calc(100vw - 32px)); padding: 6px;
              background: var(--panel); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.more__menu form { margin: 0; }
.more__menu a, .more__menu button { display: block; width: 100%; text-align: left; padding: 8px 10px; border: none; border-radius: 6px; background: none;
                                     color: var(--text); font: inherit; font-size: 14px; text-decoration: none; cursor: pointer; }
.more__menu a:hover, .more__menu button:hover { background: var(--bg); }
.more__menu .is-danger { color: var(--error); }
.more__menu hr { border: none; border-top: 1px solid var(--border); margin: 4px 0; }

/* --- Пустое состояние ------------------------------------------------- */
.empty { text-align: center; padding: 36px 16px; border: 1px dashed var(--border); border-radius: var(--radius); background: var(--panel); color: var(--muted); }
.empty__title { color: var(--text); font-weight: 600; font-size: 16px; margin: 0 0 6px; }
.empty p { margin: 4px 0 12px; }

/* --- Таблица-список: строка ведёт на карточку объекта --------------------- */
.list { width: 100%; border-collapse: collapse; background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); font-size: 14px; }
.list th { text-align: left; font-weight: 600; font-size: 13px; color: var(--muted); padding: 10px 12px; border-bottom: 1px solid var(--border); background: #fafaf8; }
.list td { padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.list tr:last-child td { border-bottom: none; }
.list tr[data-href] { cursor: pointer; }
.list tr[data-href]:hover td { background: #f6f8f6; }
.list .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.list .col-menu { width: 48px; text-align: right; }
.list a.row-title { color: var(--text); font-weight: 600; text-decoration: none; }
.list a.row-title:hover { color: var(--accent); text-decoration: underline; }
.clamp-2, .clamp-3 { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.clamp-2 { -webkit-line-clamp: 2; } .clamp-3 { -webkit-line-clamp: 3; }
.muted-sm { color: var(--muted); font-size: 12px; }
@media (max-width: 720px) {
    .list thead { display: none; }
    .list, .list tbody, .list tr, .list td { display: block; width: 100%; }
    .list tr { border-bottom: 1px solid var(--border); padding: 8px 12px; position: relative; }
    .list td { border: none; padding: 2px 0; }
    .list td[data-label]::before { content: attr(data-label) ": "; color: var(--muted); font-size: 12px; }
    .list td.col-menu { position: absolute; top: 6px; right: 6px; width: auto; padding: 0; }
    .list td.cell-hide-sm { display: none; }
    .list td.cell-main { padding-right: 40px; }
}

/* --- Фильтры-переключатели и поиск ---------------------------------------- */
.toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 12px; }
.toolbar select { min-height: 38px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; font: inherit; background: var(--panel); max-width: 100%; }
.toolbar input[type=search] { flex: 1 1 240px; min-width: 0; max-width: 420px; min-height: 38px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; font: inherit; }
.seg { display: inline-flex; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; background: var(--panel); }
.seg a { padding: 7px 12px; font-size: 14px; color: var(--text); text-decoration: none; border-right: 1px solid var(--border); white-space: nowrap; }
.seg a:last-child { border-right: none; }
.seg a.is-active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 100px; background: var(--accent-soft); color: var(--accent); font-size: 13px; text-decoration: none; }
.chip__x { font-weight: 700; color: inherit; text-decoration: none; }

/* --- Карточки-показатели ------------------------------------------------ */
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 0 0 16px; }
.kpi { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 12px; }
.kpi__label { font-size: 12px; color: var(--muted); }
.kpi__value { font-size: 20px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; }
.kpi__note { font-size: 12px; color: var(--muted); margin-top: 2px; }
a.kpi { color: inherit; text-decoration: none; } a.kpi:hover { border-color: var(--accent); }

/* --- Плитки разделов (Настройки) ----------------------------------------- */
.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.tile { display: block; background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; color: inherit; text-decoration: none; }
.tile:hover { border-color: var(--accent); box-shadow: 0 2px 10px rgba(0,0,0,.05); }
.tile__title { font-weight: 600; margin: 0 0 4px; display: flex; justify-content: space-between; gap: 8px; }
.tile__text { margin: 0; color: var(--muted); font-size: 13px; }

/* --- Вкладки ----------------------------------------------------------------- */
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); margin: 0 0 14px; overflow-x: auto; scrollbar-width: thin; }
.tabs a { padding: 8px 12px; color: var(--muted); text-decoration: none; border-bottom: 2px solid transparent; white-space: nowrap; font-size: 14px; }
.tabs a.is-active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.tabs .count { font-size: 12px; color: var(--muted); margin-left: 4px; }

/* --- Боковая панель подробностей (без всплывающих окон при наведении) ---- */
.panel-side { position: fixed; top: 0; right: 0; bottom: 0; width: min(440px, 100vw); z-index: 70; background: var(--panel); border-left: 1px solid var(--border);
              box-shadow: -8px 0 24px rgba(0,0,0,.12); padding: 16px 18px; overflow-y: auto; }
.panel-side[hidden] { display: none; }
.panel-side__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 10px; }
.panel-side__head h2 { margin: 0; font-size: 18px; }
.panel-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.18); z-index: 65; }
.panel-backdrop[hidden] { display: none; }

/* --- Состояние сохранения формы -------------------------------------------- */
.save-state { font-size: 13px; color: var(--muted); min-height: 18px; }
.save-state[data-state="saving"]::before { content: "Сохраняется…"; }
.save-state[data-state="saved"]::before { content: "Сохранено"; color: var(--ok); }
.save-state[data-state="error"]::before { content: "Не удалось сохранить — проверьте значения"; color: var(--error); }

/* --- Шаги мастера проекта ------------------------------------------------- */
.steps { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; padding: 0; margin: 0 0 16px; counter-reset: step; }
.steps li { counter-increment: step; }
.steps a, .steps span { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 100px; font-size: 13px; color: var(--muted); text-decoration: none; border: 1px solid var(--border); background: var(--panel); }
.steps a::before, .steps span::before { content: counter(step); display: inline-flex; width: 18px; height: 18px; border-radius: 50%; align-items: center; justify-content: center; font-size: 11px; background: var(--neutral-soft); color: var(--neutral); }
.steps .is-current { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.steps .is-current::before { background: var(--accent); color: #fff; }
.steps .is-done::before { content: "✓"; background: var(--ok-soft); color: var(--ok); }

/* --- Разделы страницы ------------------------------------------------------ */
.section { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; margin: 0 0 14px; }
.section > h2, .section__head h2 { margin: 0 0 8px; font-size: 18px; }
.section__head { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.section__head h2 { margin: 0; }

/* --- Формы ------------------------------------------------------------------ */
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px 16px; }
.field { display: flex; flex-direction: column; gap: 4px; font-size: 14px; min-width: 0; }
.field > span:first-child { font-weight: 600; font-size: 13px; }
.field input, .field select, .field textarea { min-height: 38px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 6px; font: inherit; background: #fff; min-width: 0; width: 100%; }
.field textarea { min-height: 72px; resize: vertical; }
.field__hint { font-size: 12px; color: var(--muted); }
.field--wide { grid-column: 1 / -1; }
.form-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 14px; }

/* --- Контрольный список выпуска КП ------------------------------------------ */
.checklist { list-style: none; padding: 0; margin: 0; }
.checklist li { display: flex; gap: 10px; align-items: flex-start; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.checklist li:last-child { border-bottom: none; }
.checklist__text { flex: 1 1 260px; min-width: 0; }
.checklist__text strong { display: block; }
.checklist__actions { display: flex; gap: 6px; flex-wrap: wrap; }
.level-block { border-left: 4px solid var(--border); }
.level-block--block { border-left-color: var(--error); }
.level-block--warn { border-left-color: #d6a73a; }
.level-block--info { border-left-color: #9aa6bd; }

.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* --- Меню: пиктограммы и свёрнутый вид ------------------------------------- */
.sidebar a { display: flex; align-items: center; gap: 10px; }
.nav-ico { width: 18px; height: 18px; flex: 0 0 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.sidebar .nav-badge { margin-left: auto; }
.nav-plus { display: none; }
@media (min-width: 901px) {
    .shell--nav-collapsed .sidebar { display: flex; width: 64px; flex-basis: 64px; padding: 16px 8px; }
    .shell--nav-collapsed .nav-label, .shell--nav-collapsed .brand, .shell--nav-collapsed .logout .user { display: none; }
    .shell--nav-collapsed .sidebar a { justify-content: center; padding: 10px 0; position: relative; }
    .shell--nav-collapsed .sidebar .nav-badge { position: absolute; top: 2px; right: 2px; margin: 0; font-size: 10px; min-width: 16px; padding: 0 4px; }
    .shell--nav-collapsed .nav-plus { display: inline; font-size: 18px; font-weight: 700; }
    .shell--nav-collapsed .wizard-cta { padding: 8px 0; text-align: center; }
    .shell--nav-collapsed .sidebar__collapse-btn { padding: 6px 0; }
    .shell--nav-collapsed .nav-expand-btn { display: none !important; }
    .shell--nav-collapsed .logout { align-items: center; }
}
.nav-badge { background: #8a5a00 !important; }  /* требует действия — не ошибка, поэтому не красный */
.sidebar a.active .nav-badge { background: #fff !important; color: var(--accent) !important; }

/* --- Шапка проекта ------------------------------------------------------ */
.workspace-header { margin-bottom: 14px; }
.workspace-header .workspace-header__title { margin: 0; font-size: 26px; }
.workspace-header .undo-redo-form { display: inline; margin: 0; }
.workspace-header .steps { margin-bottom: 0; }

/* --- Помещения ------------------------------------------------------------- */
.room-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.room-tile { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; min-width: 0; }
.room-tile__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.room-tile__head h3 { margin: 4px 0 6px; font-size: 16px; min-width: 0; }
.room-tile__facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px 10px; margin: 0; }
.room-tile__facts div { min-width: 0; }
.room-tile__facts dt { font-size: 11px; color: var(--muted); }
.room-tile__facts dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.room-tile__budget { font-size: 13px; color: var(--muted); margin: 8px 0 0; }
.room-tile__over { color: var(--error); }
.room-tile__edit { margin-top: 10px; border-top: 1px solid var(--border); padding-top: 10px; }
/* Кнопки «Отменить/Повторить» в шапке проекта — второстепенные (старые стили делали их основными). */
.workspace-header .undo-redo-form button.btn-ghost { background: var(--panel) !important; color: var(--text) !important; border: 1px solid var(--border) !important; min-height: 36px; padding: 6px 12px; font-weight: 400; }
.workspace-header .undo-redo-form button.btn-ghost:disabled { opacity: .45; }

/* --- Строка проекта и помещения в каталоге ------------------------------------ */
.ctx-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 8px 12px; margin: 0 0 10px; background: var(--panel);
           border: 1px solid var(--border); border-radius: var(--radius); }
.ctx-bar__info { flex: 1 1 260px; min-width: 0; }
.ctx-bar__label { font-size: 12px; color: var(--muted); margin-right: 4px; }
.ctx-bar__project { font-weight: 600; color: var(--text); text-decoration: none; display: inline; }
.ctx-bar__room label { display: inline-flex; align-items: center; gap: 6px; }
.ctx-bar__room select { min-height: 34px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px; font: inherit; max-width: 240px; }
.ctx-bar__actions { display: flex; gap: 6px; align-items: center; }
.ctx-bar--empty { background: #fafaf8; }
html.js .js-hide { display: none !important; }
.room-recs__why { font-size: 13px; color: var(--muted); margin: 4px 0 10px; }
.unpriced-actions { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 4px; }

/* Кнопки внутри меню «…» и уведомления — не основные зелёные (общее правило прежних правок сильнее). */
.content .more__menu button { background: none !important; color: var(--text) !important; border: none !important; padding: 8px 10px !important; font-weight: 400 !important; min-height: 0 !important; width: 100%; text-align: left; }
.content .more__menu button:hover { background: var(--bg) !important; }
.content .more__menu button.is-danger { color: var(--error) !important; }
.toast button { background: none !important; border: none !important; color: #b8e3cd !important; padding: 0 !important; min-height: 0 !important; }
.toast .toast__close { color: #ddd !important; }
.btn-link { background: none !important; border: none !important; padding: 0 !important; color: var(--accent) !important; text-decoration: underline; min-height: 0 !important; font-weight: 400 !important; }

/* --- Панель помещения при подборе: одна компактная строка --------------------- */
.room-bar { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: baseline; padding: 8px 12px !important; }
.room-bar .room-bar__name { display: none; }  /* название помещения — в строке проекта выше */
.room-bar .room-bar__seats { background: none !important; color: var(--text) !important; padding: 0 !important; font-size: 14px; }
.room-bar .room-bar__seats strong { font-size: 16px !important; }
.room-bar .room-bar__seats .muted { color: var(--muted) !important; }
.room-bar .seat-meter--full strong, .room-bar .seat-meter--over { color: var(--error) !important; }
.room-bar__note { flex-basis: 100%; color: var(--warn); }
.room-bar__label { font-size: 11px; color: var(--muted); display: block; text-transform: none !important; letter-spacing: 0 !important; }

/* --- Каталог: строка действий и вид «Карточки» ---------------------------------- */
.catalog-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 10px; }
.results--cards table.table-cards, .results--cards table.table-cards thead, .results--cards table.table-cards tbody,
.results--cards table.table-cards tr, .results--cards table.table-cards td, .results--cards table.table-cards th { display: block; width: 100%; }
.results--cards table.table-cards { table-layout: auto; border: none; background: none; }
.results--cards table.table-cards thead { display: none; }
.results--cards table.table-cards tbody { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.results--cards table.table-cards tr.row-card { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--border); border-radius: 10px; padding: 10px; background: var(--panel); }
.results--cards table.table-cards tr.row-card-details { display: none; }
.results--cards table.table-cards td { border: none; padding: 0; min-width: 0; }
.results--cards table.table-cards td.cell-select { order: -1; }
.results--cards table.table-cards td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; font-weight: 600; color: var(--muted); }
.results--cards table.products--compact .thumb-cell { width: auto; }

/* Фильтры каталога — кнопка, панель раскрывается по нажатию; активные фильтры — метками ниже. */
#facet-fields > details.filters-toggle { border: none !important; background: none !important; padding: 0 !important; margin: 4px 0 8px !important; box-shadow: none !important; }
#facet-fields > details.filters-toggle > summary { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 12px; border: 1px solid var(--border);
    border-radius: 6px; background: var(--panel); font-size: 14px; font-weight: 600; cursor: pointer; list-style: none; }
#facet-fields > details.filters-toggle > summary::-webkit-details-marker { display: none; }
#facet-fields > details.filters-toggle > summary::before { content: "⚲"; transform: rotate(-45deg); display: inline-block; }
#facet-fields > details.filters-toggle[open] > summary { border-color: var(--accent); color: var(--accent); }
#facet-fields > details.filters-toggle[open] > div { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; }

/* --- Условия КП ---------------------------------------------------------------- */
.terms-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 14px; align-items: start; }
@media (max-width: 900px) { .terms-layout { grid-template-columns: minmax(0, 1fr); } }
.terms-total__list { margin: 0; }
.terms-total__list div { display: flex; justify-content: space-between; gap: 12px; padding: 4px 0; font-size: 14px; }
.terms-total__list dt { color: var(--muted); }
.terms-total__list dd { margin: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.terms-total__sum { border-top: 1px solid var(--border); font-weight: 700; }
.terms-total__sum dt { color: var(--text) !important; }
.save-state--ok { color: var(--ok); }

/* --- Бронирования ------------------------------------------------------------- */
.group-title { font-size: 18px; margin: 18px 0 8px; }
.booking-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.booking-card { margin: 0; min-width: 0; }
.booking-card__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; margin: 0 0 8px; }
.booking-card__facts dt { font-size: 11px; color: var(--muted); }
.booking-card__facts dd { margin: 0; font-size: 14px; }
.booking-card__lines { list-style: none; padding: 0; margin: 0; font-size: 13px; }
.booking-card__lines li { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border-top: 1px solid var(--border); }
.booking-step { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; padding: 8px 0; border-top: 1px dashed var(--border); }
.booking-step > strong { flex-basis: 100%; }

/* --- Сравнение -------------------------------------------------------------- */
.compare-wrap { overflow: auto; max-height: calc(100vh - 220px); border: 1px solid var(--border); border-radius: var(--radius); background: var(--panel); }
table.compare { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 560px; font-size: 14px; }
table.compare th, table.compare td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: top; text-align: left; min-width: 180px; }
table.compare thead th { position: sticky; top: 0; z-index: 3; background: var(--panel); box-shadow: 0 1px 0 var(--border); }
table.compare .compare__key { position: sticky; left: 0; z-index: 2; background: #fafaf8; min-width: 150px; max-width: 200px; font-weight: 600; font-size: 13px; }
table.compare thead .compare__key { z-index: 4; }
table.compare tr.compare__group th { background: var(--accent-soft); color: var(--accent); font-size: 13px; position: sticky; left: 0; }
.compare__img { width: 96px; height: 96px; object-fit: contain; display: block; margin-bottom: 6px; }
.compare__name { color: var(--text); font-weight: 600; text-decoration: none; }
.compare__origin { display: block; font-size: 11px; color: var(--muted); }
.compare__actions { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.compare-pair { display: none; gap: 8px; }
@media (max-width: 720px) { .compare-pair { display: inline-flex; } table.compare { min-width: 0; } table.compare th, table.compare td { min-width: 0; padding: 6px; font-size: 13px; overflow-wrap: anywhere; } table.compare .compare__key { min-width: 84px; max-width: 96px; } .compare__img { width: 64px; height: 64px; } }

/* --- Показатели качества: без всплывающих панелей, подробности — сбоку ---- */
a.quality-chip { cursor: pointer; }
a.quality-chip:hover, a.quality-chip:focus-visible { border-color: var(--accent); }
.quality-chip--low { background: #fdeccc; border-color: #e6c27a; }  /* красный — только для ошибок */
.panel-facts { margin: 8px 0; display: grid; gap: 4px; }
.panel-facts > div { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--border); }
.panel-facts dt { color: var(--muted); } .panel-facts dd { margin: 0; font-weight: 600; text-align: right; }
.panel-sub { font-size: 14px; margin: 14px 0 4px; }

/* --- Загрузка файлов частями ---------------------------------------------- */
.upload-list { list-style: none; margin: 10px 0; padding: 0; display: grid; gap: 8px; }
.upload-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 10px; background: var(--panel); }
.upload-item progress { width: 100%; height: 8px; margin: 6px 0 2px; }
.upload-item.is-error { border-color: var(--error); }
.upload-item.is-error .upload-item__state { color: var(--error); }
.upload-item__name { overflow-wrap: anywhere; }
.upload-item__actions { display: flex; gap: 8px; margin-top: 4px; }

/* --- Источники и агенты: простой вид ------------------------------------- */
.agent-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 420px), 1fr)); gap: 12px; }
.agent-card { border: 1px solid var(--border); border-radius: var(--radius); background: var(--panel); padding: 12px 14px; min-width: 0; }
.agent-card__head { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.agent-card__head h2 { font-size: 17px; margin: 0 auto 0 0; }
.agent-card__prov { margin: 8px 0; display: grid; gap: 4px; font-size: 14px; }
.agent-card__prov > div { display: grid; grid-template-columns: 150px 1fr; gap: 8px; }
.agent-card__prov dt { color: var(--muted); } .agent-card__prov dd { margin: 0; overflow-wrap: anywhere; }
.agent-card__check { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; }
.agent-card__check .field { flex: 1 1 200px; }
@media (max-width: 520px) { .agent-card__prov > div { grid-template-columns: 1fr; gap: 0; } }

/* --- Готовые комплектации ------------------------------------------------- */
.comp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 12px; }
.comp-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; background: var(--panel); min-width: 0; }
.comp-card h3 { margin: 4px 0; font-size: 16px; }
.comp-card__photo { margin: 0; } .comp-card__photo img { width: 100%; max-height: 180px; object-fit: contain; }
.comp-card__items { margin: 6px 0; padding-left: 18px; font-size: 14px; }
.comp-card__add { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
.field--qty input { width: 80px; }
.asm-el { display: flex; gap: 10px; align-items: center; } .asm-el__img { width: 56px; height: 56px; object-fit: contain; flex: none; border-radius: 4px; background: #fff; }
.qty-input { width: 72px; min-height: 36px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px; font: inherit; }
.tabs__count { display: inline-block; min-width: 20px; padding: 0 6px; margin-left: 4px; border-radius: 10px; background: var(--neutral-soft); color: var(--neutral); font-size: 12px; text-align: center; }
@media (max-width: 720px) { .tabs { flex-wrap: wrap; overflow: visible; } }

/* --- Решения по снимкам поставщиков --------------------------------------- */
.decisions__drop { color: var(--warn); font-weight: 600; font-size: 13px; }
.decisions__actions { display: flex; gap: 6px; align-items: center; justify-content: flex-end; }
.decisions__history summary { cursor: pointer; }
.setting-field { margin: 0 0 14px; display: grid; gap: 4px; max-width: 720px; }
/* Длинные имена файлов и путей переносятся, а не расширяют страницу (Safari). */
.content code, .content pre, table.list td { overflow-wrap: anywhere; word-break: normal; }
.kpi { min-width: 0; } .kpi__note, .kpi__value { overflow-wrap: anywhere; }
.agent-card__facts { margin: 8px 0; display: grid; gap: 2px; font-size: 14px; }
.agent-card__facts > div { display: grid; grid-template-columns: 150px 1fr; gap: 8px; }
.agent-card__facts dt { color: var(--muted); } .agent-card__facts dd { margin: 0; overflow-wrap: anywhere; }
.agent-card__err { color: var(--error); }
.agent-card__next { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 8px 0; }
.agent-card__tech { margin-top: 6px; } .agent-card__tech summary { cursor: pointer; }
@media (max-width: 520px) { .agent-card__facts > div { grid-template-columns: 1fr; gap: 0; } }

/* --- Карточки товаров (правка 120): единственный вид подбора --------------- */
.pcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 12px; align-items: stretch; }
.pcard { position: relative; display: flex; flex-direction: column; min-width: 0; background: var(--panel); border: 1px solid var(--border);
         border-radius: var(--radius); overflow: hidden; }
.pcard.product-row--selected { box-shadow: 0 0 0 2px var(--info); }
.pcard--in-room { border-color: #c9b26a; background: #fffbea; }
.pcard__select { position: absolute; top: 6px; left: 6px; z-index: 2; background: rgba(255,255,255,.9); border-radius: 4px; padding: 2px 4px; line-height: 1; }
.pcard__photo { aspect-ratio: 4 / 3; background: #fff; display: flex; align-items: center; justify-content: center; border-bottom: 1px solid var(--border); }
.pcard__photo { overflow: hidden; position: relative; }
.pcard__photo .pcard__img-box { width: 100% !important; height: 100% !important; display: flex; align-items: center; justify-content: center; }
.pcard__photo .photo-card.pcard__img-box { display: block; }
.pcard__photo .photo-thumb { display: flex; align-items: center; justify-content: center; padding: 6px; background: transparent; border: 0; }
.pcard__photo img.pcard__img { max-width: 100% !important; max-height: 100% !important; width: auto; height: auto; object-fit: contain; }
.pcard__photo .photo-thumb__none { color: var(--muted); font-size: 13px; }
.pcard__body { padding: 8px 10px 4px; display: flex; flex-direction: column; gap: 3px; flex: 1 1 auto; min-width: 0; }
.pcard__name { color: var(--text); font-weight: 600; font-size: 14px; line-height: 1.3; min-height: 2.6em; text-decoration: none; }
.pcard__name:hover, .pcard__name:focus-visible { text-decoration: underline; }
.pcard__line { min-height: 1.35em; line-height: 1.35; overflow-wrap: anywhere; }
.pcard__article { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; color: var(--muted); }
.pcard__art .variant-switch, .pcard__art select { width: 100%; max-width: 100%; font-size: 13px; }
.pcard__price strong { font-size: 16px; }
.pcard__price { min-height: 2.7em; }
.pcard__flags { min-height: 1.3em; color: var(--warn); font-size: 12px; }
.pcard__foot { margin-top: auto; padding: 8px 10px 10px; border-top: 1px solid var(--border); min-height: 52px; display: flex; align-items: center; }
.pcard__foot .qty-stepper { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; margin: 0; }
.pcard__foot .qty-stepper__label { display: none; }
.pcard__foot .qty-stepper__submit { flex: 1 1 auto; }
.clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 520px) { .pcards { grid-template-columns: 1fr 1fr; gap: 8px; } .pcard__body { padding: 6px 8px 2px; } .pcard__foot { padding: 6px 8px 8px; }
  .pcard__foot .qty-stepper__submit { width: 100%; } }

/* --- Блок выбранного и следующий шаг (правка 120) -------------------------- */
details.room-selection > summary { list-style: none; cursor: pointer; display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
details.room-selection > summary::-webkit-details-marker { display: none; }
details.room-selection > summary .room-selection__title { font-weight: 700; font-size: 17px; }
details.room-selection > summary .room-selection__toggle::after { content: "свернуть ▴"; }
details.room-selection:not([open]) > summary .room-selection__toggle::after { content: "показать ▾"; }
details.room-selection > summary .room-selection__toggle { margin-left: auto; }
.room-selection__next { margin: 8px 0; }
.next-step { border: 1px solid var(--border); border-radius: var(--radius); background: var(--panel); padding: 12px 14px; margin: 0 0 14px; display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; }
.next-step p { margin: 0; }
.next-step .btn-primary, .next-step .btn { white-space: normal; max-width: 100%; text-align: center; }  /* длинное «Перейти к помещению «…»» переносится на узком экране */
.next-step--done { border-color: #bcd6c9; background: var(--ok-soft); }

/* --- Порядок выпуска КП (правка 120) -------------------------------------- */
.issue-flow__steps { margin: 0 0 12px; padding-left: 22px; display: grid; gap: 4px; font-size: 14px; }
.issue-flow__step { padding: 2px 0; }
.issue-flow__step.is-done .issue-flow__label { color: var(--ok); }
.issue-flow__step.is-done::marker { content: "✓  "; color: var(--ok); }
.issue-flow__step.is-next .issue-flow__label { font-weight: 700; }
.issue-flow__next { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.issue-ready { font-size: 15px; }
.booking-group__next { font-size: 13px; color: var(--muted); margin-left: auto; }
.booking-answer > summary.btn-primary { display: inline-flex; list-style: none; cursor: pointer; }
.booking-answer > summary::-webkit-details-marker { display: none; }
.diag--error { border-left: 3px solid var(--error); padding-left: 8px; }
.diag--warn { border-left: 3px solid var(--warn); padding-left: 8px; }
.diag--info { border-left: 3px solid var(--border); padding-left: 8px; }
.pcard__badge { min-height: 0; } .pcard__badge .badge { font-size: 11px; }
.kv-grid dd, .kv-grid dt { overflow-wrap: anywhere; min-width: 0; }
@media (max-width: 520px) { .card-summary, .card dl { grid-template-columns: 1fr; gap: 2px 0; } .card-summary dd, .card dl dd { margin-bottom: 8px; min-width: 0; overflow-wrap: anywhere; } }

/* Правка 121: «Проверка фотографий» */
.pr-remaining { font-size: 15px; margin: 0 0 10px; }
.pr-filters { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; margin: 0 0 14px; padding: 10px 12px; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; }
.pr-filters label { display: grid; gap: 2px; font-size: 12px; color: var(--muted); min-width: 0; }
.pr-filters select, .pr-filters input { max-width: 100%; min-width: 0; }
.pr-filters__more { display: contents; }
.pr-filters__more > summary { font-size: 13px; cursor: pointer; align-self: center; }
.pr-filters__more[open] > summary { display: none; }
.js .pr-filters__apply { display: none; }
.pr-product { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin: 0 0 14px; min-width: 0; }
.pr-product__head { display: flex; flex-wrap: wrap; gap: 10px 16px; justify-content: space-between; align-items: flex-start; }
.pr-product__head > div:first-child { min-width: 0; flex: 1 1 320px; }
.pr-product__title { font-size: 18px; margin: 2px 0 4px; overflow-wrap: anywhere; }
.pr-sub { font-size: 14px; margin: 12px 0 4px; }
.pr-item__img { display: block; background: #fff; border-radius: 6px; }
.pr-item__img img { width: 100%; height: 220px; object-fit: contain; display: block; }
.pr-item__tags { display: flex; flex-wrap: wrap; gap: 4px; }
.pr-item__why { font-size: 13px; margin: 2px 0; }
.pr-match { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 8px; font-size: 12px; margin: 0; }
.pr-match dt { color: var(--muted); }
.pr-match dd { margin: 0; overflow-wrap: anywhere; }
.pr-m--yes, .pr-m--same { color: var(--accent); }
.pr-m--other, .pr-m--doubt { color: #9a3b2e; }
.pr-kind--variant { background: #f4e3e1; color: #9a3b2e; }
.pr-kind--series { background: #fdeecb; color: #8a5a00; }
.pr-kind--interior, .pr-kind--scheme { background: #e6eef7; color: #2a5a8a; }
.pr-kind--product { background: #e4efe9; color: var(--accent); }
@media (max-width: 680px) {
  .pr-filters label { flex: 1 1 calc(50% - 12px); }
  .pr-filters select, .pr-filters input { width: 100%; }
  .pr-product__actions { width: 100%; }
}
.rec-card__variant select, .product-card__variant { max-width: 100%; min-width: 0; width: 100%; margin-bottom: 4px; }
/* Правка 121: нет предметного фото — нейтральное состояние с маленькой вставкой фото серии */
.photo-thumb__subjectless { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center; padding: 6px; box-sizing: border-box; }
.photo-thumb__subjectless-text { font-size: 12px; color: var(--muted); line-height: 1.25; }
.photo-thumb__inset { display: inline-flex; flex-direction: column; align-items: center; gap: 2px; text-decoration: none; color: var(--muted); font-size: 11px; border: 1px dashed var(--border); border-radius: 6px; padding: 3px; background: #fff; max-width: 70%; }
.photo-thumb__inset img { width: 64px; height: 48px; object-fit: contain; display: block; }
/* Правка 121: настройка пересчёта цен в валюте */
.cs-form fieldset { border: 0; padding: 0; margin: 0 0 12px; display: grid; gap: 4px; }
.cs-form legend { font-weight: 600; margin-bottom: 4px; }
.cs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px 14px; margin: 0 0 12px; }
.cs-grid label { display: grid; gap: 3px; font-size: 13px; min-width: 0; }
.cs-grid input, .cs-grid select { width: 100%; box-sizing: border-box; }
.cs-preview table { margin: 8px 0 12px; }
.flash--warn { background: #fdeecb; color: #6b4600; border: 1px solid #f0d58c; }
.finance__missing { margin: 2px 0 8px 18px; padding: 0; font-size: 13px; } .finance__missing li { overflow-wrap: anywhere; }
/* Правка 121: компактный прогресс выпуска КП */
.issue-progress { display: grid; gap: 6px; margin-bottom: 10px; }
.issue-progress__bar { height: 8px; border-radius: 99px; background: var(--border); overflow: hidden; }
.issue-progress__bar span { display: block; height: 100%; background: var(--accent); border-radius: 99px; }
.issue-progress__text { margin: 0; }
.issue-done > summary { cursor: pointer; color: var(--accent); font-size: 14px; }
.issue-done ul { margin: 6px 0 0 18px; }
.issue-current { border: 1px solid var(--accent); border-radius: 10px; padding: 10px 12px; margin: 10px 0 6px; background: var(--panel); }
.issue-current__eyebrow { margin: 0; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--accent); }
.issue-current__title { margin: 2px 0 6px; font-size: 16px; }
.issue-next { margin: 4px 0 0; }
.issue-booking-note { margin: 10px 0 0; font-size: 13px; }
/* Правка 121: бронирование — компактные карточки, разные состояния заметны */
.js [data-after-copy]:not(.is-open) { display: none; }
.booking-group { border-left: 4px solid var(--border); }
.booking-group--prepared, .booking-group--copied { border-left-color: #8fb3d9; }
.booking-group--sent { border-left-color: #2a5a8a; }
.booking-group--needs_answer, .booking-group--rejected, .booking-group--expired { border-left-color: var(--danger, #9a3b2e); background: #fdf5f3; }
.booking-group--confirmed { border-left-color: var(--accent); }
.booking-group--partial, .booking-group--expiring { border-left-color: #c79a2b; }
.booking-next-step { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-start; margin: 8px 0; }
.booking-next-step .booking-actions__form { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
/* длинная подпись («Поставщик получил запрос — ждём ответ») на телефоне переносится, а не выходит за край */
.booking-actions__form button { white-space: normal; max-width: 100%; text-align: center; }
.booking-copied { color: var(--accent); align-self: center; }
.booking-next { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.booking-lines { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 6px; }
.booking-line { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 8px 0; border-top: 1px solid var(--border); align-items: start; }
.booking-line__main { display: grid; gap: 2px; min-width: 0; }
.booking-line__qty { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; font-size: 13px; }
.booking-line__more, .booking-line > .booking-answer { grid-column: 1 / -1; }
.booking-line__dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 10px; margin: 4px 0; }
.booking-line__dl dd { margin: 0; overflow-wrap: anywhere; }
.booking-qty--short { color: #9a3b2e; font-weight: 600; }
.booking-qty--ok { color: var(--accent); font-weight: 600; }
.booking-tech > summary { cursor: pointer; }
@media (max-width: 680px) { .booking-line { grid-template-columns: minmax(0, 1fr); } .booking-line__qty { justify-content: flex-start; } }
.company-logo-preview { max-width: 200px; max-height: 80px; object-fit: contain; display: block; margin: 4px 0; }
.diag-sample { margin: 4px 0 8px 18px; } .diag-sample li { overflow-wrap: anywhere; }
.issue-current .btn-row > a, .issue-current .btn-row button { max-width: 100%; white-space: normal; text-align: center; box-sizing: border-box; }
.booking-tech textarea { width: 100%; max-width: 100%; box-sizing: border-box; }
/* Правка 122: «Сообщить об ошибке» */
.bug-form { max-width: 720px; }
.bug-form textarea { width: 100%; box-sizing: border-box; }
.bug-draft-state { min-height: 1.3em; margin: 2px 0 8px; }
.bug-draft-offer { border: 1px solid var(--accent); border-radius: 10px; padding: 10px 12px; margin: 0 0 12px; background: var(--panel); max-width: 720px; }
.bug-page__row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.bug-page__row input { flex: 1 1 260px; min-width: 0; }
.bug-drop { border: 2px dashed var(--border); border-radius: 12px; padding: 14px; text-align: center; background: var(--panel); margin: 10px 0; outline-offset: 2px; }
.bug-drop.is-over { border-color: var(--accent); background: var(--accent-soft); }
.bug-drop p { margin: 2px 0; }
.bug-drop__full img { max-width: 100%; max-height: 260px; object-fit: contain; border-radius: 6px; background: #fff; display: block; margin: 0 auto 6px; }
.bug-drop__meta { font-size: 13px; overflow-wrap: anywhere; margin-bottom: 6px; }
.bug-drop .btn-row { justify-content: center; }
.bug-drop__error { color: var(--danger, #9a3b2e); font-size: 13px; margin: 6px 0 0; }
.bug-state { border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin: 0 0 14px; }
.bug-state__grid { margin: 8px 0; }
.bug-verdict { border-top: 1px solid var(--border); margin-top: 10px; padding-top: 10px; display: grid; gap: 8px; max-width: 560px; }
.bug-verdict__reopen { display: grid; gap: 6px; }
.bug-verdict textarea, .bug-comment textarea { width: 100%; box-sizing: border-box; }
.bug-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.bug-shot { max-width: 100%; max-height: 420px; border: 1px solid var(--border); border-radius: 6px; }
.bug-tests { white-space: pre-wrap; font-size: 12px; max-height: 260px; overflow: auto; background: #f6f6f4; padding: 8px; border-radius: 6px; margin: 0; }
.bug-history { list-style: none; padding: 0; margin: 0 0 14px; display: grid; gap: 6px; }
.bug-history__item { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; font-size: 14px; border-left: 3px solid var(--border); padding-left: 8px; }
.bug-history__text { overflow-wrap: anywhere; min-width: 0; }
.bug-comment { max-width: 560px; }
/* длинный ряд вкладок переносится на любой ширине, а не только на телефоне (очередь обращений на 768 px) */
.seg { flex-wrap: wrap; max-width: 100%; }
@media (max-width: 680px) { .seg { display: flex; } .seg a { border-bottom: 1px solid var(--border); } }
/* Правка 123: агент диагностики на связи / не запущен. */
.bug-agent { margin: 6px 0 10px; padding: 8px 12px; border-radius: 8px; font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
.bug-agent--on { background: #eaf5ee; border: 1px solid #b8dcc5; }
.bug-agent--off { background: #fff4e5; border: 1px solid #f0c98a; }
.bug-page__label { margin: 0 0 4px; font-weight: 600; }
.bug-page__row strong { overflow-wrap: anywhere; }
.bug-page__tech { margin-top: 6px; }
.bug-page__tech input { width: 100%; box-sizing: border-box; margin-top: 4px; }
.bug-tech-url code { overflow-wrap: anywhere; word-break: break-all; }
.bug-page__choice { margin: 8px 0 0; padding: 10px 12px; border: 1px solid var(--border, #ddd); border-radius: 8px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.bug-page__choice[hidden] { display: none; }
.bug-page__choice select, .bug-page__choice input[type="text"], .bug-page__choice #bugUserUrl { width: 100%; box-sizing: border-box; }
.bug-page__unknown { display: flex; gap: 8px; align-items: center; font-weight: normal; }
.bug-page__auto { margin: 2px 0 0; }
.bug-page__unknown input[type="checkbox"] { width: auto; min-width: 0; flex: none; margin: 0; }
.bug-page__unknown { flex-wrap: wrap; min-width: 0; }
/* Пакет 2.1: раскрытое меню «⋯» строки списка не перекрывается следующей строкой (телефонная раскладка карточками). */
tr:has(> td details.more[open]), .row-card:has(details.more[open]) { position: relative; z-index: 25; }
details.more[open] > .more__menu { z-index: 30; }
.more__danger { color: #9a3b2e !important; }

/* Агент поставщика: страница серии — галерея и описание, материалы, товары серии с выбором исполнения. */
.series-path { margin: 4px 0 10px; }
.series-head { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.series-head > :only-child { grid-column: 1 / -1; }
.series-gallery__main { display: block; aspect-ratio: 3 / 2; background: #fff; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.series-gallery__main img { width: 100%; height: 100%; object-fit: cover; }
.series-gallery__thumbs { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; align-items: center; }
.series-gallery__thumbs img { width: 72px; height: 54px; object-fit: cover; border-radius: 6px; border: 1px solid var(--border); }
.series-sub { font-size: 15px; margin: 14px 0 6px; }
.swatches { list-style: none; padding: 0; margin: 0; display: flex; gap: 10px; flex-wrap: wrap; }
.swatch { display: flex; gap: 8px; align-items: center; font-size: 13px; }
.swatch img { width: 44px; height: 44px; object-fit: cover; border-radius: 6px; border: 1px solid var(--border); }
.series-notes ul { margin: 0; padding-left: 18px; }
.series-notes li { margin-bottom: 4px; }
.series-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 12px; }
.series-filters__search { min-width: 200px; flex: 1 1 200px; }
.series-rows { display: flex; flex-direction: column; gap: 10px; }
.series-row { display: grid; grid-template-columns: 120px minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 14px; align-items: center;
    background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; }
.series-row[hidden] { display: none; }
.series-row__photo { width: 120px; height: 90px; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 6px; overflow: hidden; text-align: center; }
.series-row__photo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.series-row__name { font-size: 15px; margin: 0 0 4px; }
.series-row__pick { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 4px; }
.side-toggle { display: inline-flex; gap: 10px; }
.series-row__facts { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; margin: 0; font-size: 14px; }
.series-row__facts dt { color: var(--muted); }
.series-row__facts dd { margin: 0; overflow-wrap: anywhere; }
.series-row__act { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.series-row__add { display: flex; gap: 6px; align-items: flex-end; flex-wrap: wrap; }
@media (max-width: 900px) {
    .series-head { grid-template-columns: 1fr; }
    .series-row { grid-template-columns: 96px minmax(0, 1fr); }
    .series-row__photo { width: 96px; height: 72px; }
    .series-row__facts, .series-row__act { grid-column: 1 / -1; }
}
.series-row__main, .series-row__pick label { min-width: 0; max-width: 100%; }
.series-row__pick select { max-width: 100%; min-width: 0; text-overflow: ellipsis; }
/* Safari не сжимает выпадающий список по ширине содержимого — длинные подписи исполнений выводили карточку за край. */
.product-card__add .product-card__variant { max-width: 100%; min-width: 0; flex: 1 1 100%; }
.product-card, .product-card__add { min-width: 0; overflow-x: clip; }
.series-filters select { max-width: 100%; min-width: 0; text-overflow: ellipsis; }
.series-row__photo { flex-direction: column; gap: 2px; }
.series-row__photo img:not([hidden]) + .series-row__nophoto { font-size: 11px; line-height: 1.2; }
.series-row__photo img:not([hidden]) { max-height: 72px; }

/* --- Дата и время: не больше двух строк (дата / время), без переноса внутри частей (21.10.2026) ---------- */
.dt { display: inline-block; white-space: normal; }
.dt__d, .dt__t { white-space: nowrap; word-break: keep-all; overflow-wrap: normal; }
table.list td.col-date, table.list th.col-date, .col-date { min-width: 6.5em; white-space: normal; overflow-wrap: normal; word-break: normal; }
table.list td.col-date .dt { min-width: 5.6em; }
@media (max-width: 720px) {
    .list td.col-date { min-width: 0; }
    .list td.col-date .dt__t::before { content: " "; }
    /* очередь обращений — карточки: заголовок, затем строки «подпись: значение» */
    .list--bugs tr { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; padding: 10px 12px; }
    .list--bugs td.cell-main { grid-column: 1 / -1; padding-right: 0; }
    .list--bugs td { padding: 1px 0; }
}
.status--muted { background: #eeeeea; color: var(--muted); }
.booking-overdue { color: var(--error, #9a3b2e); }

/* --- Быстрый подбор мебели (projects/_quick_selection.html) ------------------------------------------------------ */
.quick-sel { margin-bottom: 16px; }
.quick-sel__form > summary { display: inline-block; cursor: pointer; margin-bottom: 8px; }
.quick-sel__form form { max-width: 760px; }
.quick-sel__rooms { display: flex; flex-wrap: wrap; gap: 4px 14px; border: 1px solid var(--border); border-radius: 8px; padding: 6px 10px; }
.quick-sel__rooms legend { padding: 0 4px; }
.quick-sel__summary { border-top: 1px solid var(--border); margin-top: 10px; padding-top: 10px; }
.quick-room { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; margin-top: 12px; background: var(--panel); min-width: 0; }
.quick-room__head h3 { margin: 0 0 2px; font-size: 16px; }
.quick-items { list-style: none; padding: 0; margin: 8px 0 0; display: grid; gap: 8px; }
.quick-item { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; border-top: 1px solid var(--border); padding-top: 8px; }
.quick-item--skipped { opacity: .55; }
.quick-item--accepted .quick-item__name { color: var(--ok); }
.quick-item__photo img { width: 72px; height: 72px; object-fit: contain; background: #fff; border-radius: 6px; }
.quick-item__body { min-width: 0; }
.quick-item__body p { margin: 2px 0; overflow-wrap: anywhere; }
.quick-item__name { font-weight: 600; color: var(--text); }
.quick-item__price { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.quick-item__actions { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; margin-top: 4px; }
.quick-alt { flex-basis: 100%; }
.quick-alt ul { list-style: none; padding: 0; margin: 4px 0; display: grid; gap: 4px; }
.quick-alt__row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: space-between; }
.quick-alt__row span { min-width: 0; flex: 1 1 220px; overflow-wrap: anywhere; }
.quick-ok { color: var(--ok); }
.quick-warn .badge { margin: 1px 0; white-space: normal; }
.issue-kinds { display: grid; gap: 8px; margin-top: 10px; }
.issue-final > summary { display: inline-block; cursor: pointer; }
@media (max-width: 480px) { .quick-item { grid-template-columns: 56px minmax(0, 1fr); } .quick-item__photo img { width: 56px; height: 56px; } }
.question-card { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; margin: 10px 0; background: var(--panel); }
.question-card h3 { margin: 0 0 4px; font-size: 15px; }
.files-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.files-filter input[type=search] { flex: 1 1 220px; min-width: 0; }
.files-group { border: 1px solid var(--border); border-radius: 8px; padding: 6px 10px; margin: 6px 0; }
.files-group > summary { cursor: pointer; }
.files-list { list-style: none; padding: 0; margin: 6px 0; display: grid; gap: 8px; }
.file-row { border-top: 1px solid var(--border); padding-top: 6px; min-width: 0; }
.file-row__name { overflow-wrap: anywhere; }
.supplier-actions { list-style: none; padding: 0; margin: 0 0 8px; display: grid; gap: 8px; }
.supplier-actions li { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; }
.supplier-actions form { margin: 0; }

/* 22.10.2026: «Скачать ▾» в строке списка КП — подпись, а не значок «…»; суммы не переносятся по цифрам */
.more--inline > summary { width: auto; height: auto; padding: 2px 6px; color: var(--accent); text-decoration: underline; font-size: inherit; }
.quote-list td, .quote-list th { overflow-wrap: normal; word-break: normal; hyphens: manual; }
.quote-list .num, .quote-list .nowrap { white-space: nowrap; }
.quote-actions { display: flex; gap: 10px; align-items: center; }
/* 22.10.2026: показатели «Контроля каталога» — блоками, выбранный фильтр подсвечен */
.quality-kpis .kpi { display: flex; flex-direction: column; }
.quality-kpis .kpi.is-active { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
/* 22.10.2026: переключатели настроек обычного размера с понятной подписью */
.setting-toggle { display: flex; gap: 8px; align-items: center; cursor: pointer; }
.setting-toggle input[type=checkbox] { width: 18px; height: 18px; margin: 0; flex: none; }
.setting-input { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
/* 22.10.2026: главная страница настроек — три карточки, служебный раздел строкой, личные настройки компактно */
.tiles--three { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.settings-service { margin: 14px 0 0; }
.settings-personal { margin-top: 22px; }
.settings-personal h2 { font-size: 15px; margin: 0 0 6px; }
.settings-personal__list { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.staff-form { margin-top: 6px; gap: 4px; } .role-help { margin: 0 0 12px; } .role-help li { margin: 2px 0; }
/* 22.10.2026: колонки «Источник» и «Работа» списка поставщиков — без переноса по слову */
@media (min-width: 900px) { .supplier-list .supplier-work { min-width: 190px; } .supplier-list .supplier-source { min-width: 200px; } }
/* 22.10.2026: список КП на планшете (721–1199 px) — действия переносятся, «Ответственный» скрыт (есть в КП) */
@media (min-width: 721px) and (max-width: 1199px) {
  .quote-list .quote-actions { flex-wrap: wrap; white-space: normal; gap: 4px 10px; }
  .quote-list .col-resp { display: none; }
}
@media (min-width: 721px) and (max-width: 899px) { .quote-list .col-upd { display: none; } }
.staff-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.staff-guard { flex-basis: 100%; } .staff-guard label { display: flex; flex-direction: column; gap: 4px; margin: 4px 0; }
/* ночной этап 22.10.2026: список проектов на узком планшете — без горизонтальной прокрутки */
@media (min-width: 721px) and (max-width: 899px) { .project-list .col-rooms { display: none; } }
/* этап 22.10.2026: короткие подписи порядка и компактная подсказка «?» (наведение, фокус клавиатурой, диктор) */
.sort-help { border: 1px solid var(--border); background: var(--panel); border-radius: 50%; width: 22px; height: 22px; padding: 0; font: inherit; font-size: 12px; line-height: 20px; cursor: help; position: relative; color: var(--muted); }
.sort-help:hover::after, .sort-help:focus-visible::after { content: attr(data-tip); position: absolute; right: 0; top: 28px; z-index: 30; width: 240px; padding: 8px 10px; background: var(--panel); border: 1px solid var(--border); border-radius: 6px; box-shadow: 0 4px 14px rgba(0,0,0,.12); color: var(--text, inherit); font-size: 13px; line-height: 1.35; text-align: left; white-space: normal; }
/* этап 22.10.2026: четыре состояния «Контроля каталога» */
.quality-states .kpi--ok .kpi__value { color: var(--ok, #2f7d4a); }
.quality-states .kpi--decision .kpi__value { color: var(--warn, #9a6200); }
.delta--good { color: var(--ok, #2f7d4a); font-weight: 600; } .delta--bad { color: var(--error, #b3261e); font-weight: 600; }
/* этап 22.10.2026: настройки — карточки одного размера; «Личные настройки» — первая; страница личных настроек */
.tiles--settings { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); grid-auto-rows: 1fr; }
.tile--personal { border-color: var(--accent); }
/* 23.10.2026: карточки обращений — тот же размер и стиль, внизу заметная кнопка-подпись (вся карточка — ссылка) */
.tiles--settings .tile { display: flex; flex-direction: column; }
.tiles--settings .tile__text { margin-bottom: 12px; }
.tile__cta { margin-top: auto; align-self: flex-start; display: inline-block; padding: 5px 12px; border-radius: 6px;
    border: 1px solid var(--accent); color: var(--accent); font-size: 13px; font-weight: 600; }
.tile--action:hover .tile__cta { background: var(--accent); color: #fff; }
.tile__title .nav-badge { color: #fff; border-radius: 100px; padding: 0 7px; font-size: 12px; line-height: 20px; }
.settings-me h2 { font-size: 18px; margin: 0 0 8px; }
.settings-me__choice { border: 0; padding: 0; margin: 0 0 10px; display: flex; flex-direction: column; gap: 6px; }
.settings-me__choice legend { font-weight: 600; margin-bottom: 4px; }
.settings-me .choice input, .settings-me .setting-toggle input { width: 18px; height: 18px; }
.price-blockers h2 { font-size: 16px; margin: 0 0 6px; }
.price-blockers li { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; justify-content: space-between; margin: 6px 0; }
/* блок 3 ТЗ, 22.10.2026: КП по текстовой задаче — черновик разбора */
.task-room__head { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: flex-end; margin-bottom: 8px; }
.task-room__name { flex: 1 1 260px; } .task-room__seats { flex: 0 0 90px; }
.task-room__why, .task-source { flex-basis: 100%; margin: 0; }
.task-reqs input:not([type=checkbox]) { width: 100%; min-width: 0; }
.task-reqs input[type=checkbox] { width: 20px; height: 20px; }
.task-reqs .num input { max-width: 80px; }
.task-req--suggested td { background: var(--info-soft); }
.task-req--low td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.task-choice { border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 12px; margin: 0 0 10px; }
.task-choice legend { font-weight: 600; padding: 0 4px; }
.task-choice .choice { display: flex; gap: 8px; align-items: center; margin: 4px 0; }
.task-choice .choice input { width: 18px; height: 18px; }
.task-actions { flex-wrap: wrap; gap: 8px; }
.task-intake textarea { width: 100%; }
@media (max-width: 720px) { .task-reqs td { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; } .task-reqs td[data-label]::before { flex-basis: 100%; } .task-reqs .num input { max-width: none; } }
/* блок 3: второстепенная кнопка в форме остаётся второстепенной (общее правило `.stacked-form button` красило все) */
.stacked-form button[type="submit"].btn-ghost, .card form button[type="submit"].btn-ghost { background: var(--panel); color: var(--text); border: 1px solid var(--border); padding: 6px 12px; }
.stacked-form button[type="submit"].btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
/* ТЗ 4.1: надписи и логотипы на фото */
.overlay-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin: 0 0 12px; }
.overlay-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.overlay-item { display: grid; grid-template-columns: minmax(0, 280px) minmax(0, 1fr); gap: 16px; align-items: start; }
.overlay-photo { margin: 0; }
.overlay-photo__frame { position: relative; display: inline-block; max-width: 100%; }
.overlay-photo__frame img { display: block; max-width: 100%; height: auto; border: 1px solid var(--border); border-radius: 6px; background: #fff; }
.overlay-box { position: absolute; border: 2px solid var(--error); border-radius: 3px; box-shadow: 0 0 0 1px #fff; }
.overlay-box--logo { border-style: dashed; border-color: var(--warn); }
.overlay-info p { margin: 0 0 6px; }
.overlay-info .btn-row { flex-wrap: wrap; gap: 6px; }
@media (max-width: 720px) { .overlay-item { grid-template-columns: minmax(0, 1fr); } }
.overlay-kpis .kpi { display: flex; flex-direction: column; gap: 2px; }
/* 22.10.2026: подбор — сворачиваемый общий блок и свой подбор в панели помещения */
.quick-sel__toggle > summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; cursor: pointer; list-style: none; padding: 2px 0; }
.quick-sel__toggle > summary::-webkit-details-marker { display: none; }
.quick-sel__title { font-size: 18px; font-weight: 600; }
.quick-sel__toggle > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.quick-sel__toggle[open] .quick-sel__summary-btn { display: none; }
.room-quick { border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 12px; margin: 0 0 12px; background: var(--panel); }
.room-quick__title { font-size: 16px; margin: 0 0 6px; }
.room-quick__row { display: flex; flex-wrap: wrap; gap: 6px; }
.room-quick__row input { flex: 1 1 220px; min-width: 0; min-height: 38px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; font: inherit; }
/* 22.10.2026: связанные товары на карточке */
.related-group { margin: 0 0 18px; }
.related-types { margin: 4px 0 10px; }
.related-types a.is-active { border-color: var(--accent); color: var(--accent); font-weight: 600; }
/* 22.10.2026: бронирование у поставщиков на шаге «Проверка и выпуск» */
.booking { border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; margin: 0 0 16px; background: var(--panel); }
.booking__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.booking__head .section-title { margin: 0; }
.booking__intro { margin: 6px 0; font-weight: 500; }
.booking-steps { display: flex; flex-wrap: wrap; gap: 4px 14px; padding-left: 18px; margin: 0 0 8px; }
.booking-progress { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; padding: 0; margin: 6px 0; }
.booking-progress li { font-size: 12px; padding: 2px 8px; border-radius: 100px; border: 1px solid var(--border); color: var(--muted); }
.booking-progress li.is-done { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.booking-progress li.is-current { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.booking-line__stock { display: block; }
.booking-outcome { flex-wrap: wrap; align-items: flex-end; gap: 8px; }
.booking-partial { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: flex-end; }
.booking-partial input { width: 90px; }
/* 23.10.2026: заголовок блока подбора — «Свернуть / Развернуть» и «Новый подбор» всегда видны */
.quick-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.quick-head .quick-sel__title { margin: 0; flex: 1 1 auto; }
.quick-head__summary { flex-basis: 100%; margin: 0; order: 3; }
.quick-head__actions { gap: 6px; }
.quick-body { margin-top: 10px; }
.quick-undo { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
/* 23.10.2026: форма финального КП — галочка рядом с текстом; шаги бронирования — с номерами и стрелками */
.issue-final__ack { display: flex; gap: 8px; align-items: flex-start; }
.stacked-form .issue-final__ack input[type=checkbox] { width: 18px; height: 18px; flex: 0 0 auto; margin-top: 2px; }
.booking-steps { list-style: none; counter-reset: bstep; padding-left: 0; display: flex; flex-wrap: wrap; gap: 4px 6px; }
.booking-steps li { counter-increment: bstep; }
.booking-steps li::before { content: counter(bstep) ". "; font-weight: 600; }
.booking-steps li:not(:last-child)::after { content: " →"; margin-left: 4px; }
