/* [2026-07-08][CLX][VERIFICATION-PILOT] Сверка-стол (пилот VELAR). Спокойный вид:
   медь = единственный акцент (выделение, кнопки, выбранная ячейка); статусы — мягкие точки;
   всё остальное нейтрально-серое. 3-зонный grid: аспекты | правила+позиции | чат. */

.pdash, .vtable {
  --pr-accent: #BC6C46; --pr-accent-soft: rgba(188, 108, 70, .10); --pr-accent-dark: #A85D3A;
  --pr-free: #9aa0a6; --pr-prog: #E8943A; --pr-done: #2E9E5B; --pr-issue: #D44333; --pr-na: #c4b8a8;
  --pr-card: var(--c-surface, #ffffff);
  --pr-card-2: var(--c-surface-2, #faf7f3);
  --pr-line: var(--c-border, rgba(44, 24, 16, .10));
  --pr-line-2: var(--c-border-strong, rgba(44, 24, 16, .18));
  --pr-text: var(--c-text, #2b2520);
  --pr-muted: var(--c-text-muted, #8a807a);
  color: var(--pr-text);
}

.state-box { display:flex; align-items:center; gap:10px; justify-content:center; padding:48px 16px; color:var(--pr-muted); }
.spinner { width:18px; height:18px; border:2px solid var(--pr-line-2); border-top-color:var(--pr-accent); border-radius:50%; animation:prspin .8s linear infinite; }
@keyframes prspin { to { transform: rotate(360deg); } }

/* ───────────────────────── ДАШБОРД ───────────────────────── */
.pdash { padding: 8px 4px 32px; }
.pdash__top { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:6px; }
.pdash__top h2 { margin:0; font-weight:500; font-size:20px; }
.pdash__bar { flex:1; min-width:160px; height:8px; background:var(--pr-line); border-radius:6px; overflow:hidden; }
.pdash__bar i { display:block; height:100%; background:var(--pr-accent); border-radius:6px; transition: width .4s; }
.pdash__label { color:var(--pr-muted); font-size:13px; }
.pdash__hint { color:var(--pr-muted); font-size:13px; margin:6px 0 18px; max-width:760px; }
.pdash__grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap:12px; }
.pcard { background:var(--pr-card); border:1px solid var(--pr-line); border-radius:10px; padding:14px 14px 12px; cursor:pointer; transition: border-color .15s, box-shadow .15s; }
.pcard:hover { border-color:var(--pr-line-2); box-shadow:0 1px 6px rgba(44,24,16,.06); }
.pcard__name { font-weight:500; font-size:15px; margin-bottom:10px; }
.pcard__bar { height:6px; background:var(--pr-line); border-radius:5px; overflow:hidden; margin-bottom:8px; }
.pcard__bar i { display:block; height:100%; background:var(--pr-accent); }
.pcard__meta { display:flex; gap:10px; font-size:12px; color:var(--pr-muted); flex-wrap:wrap; }
.pcard__work { color:var(--pr-prog); }
.pcard__iss { color:var(--pr-issue); font-weight:600; }

/* ───────────────────────── СВЕРКА-СТОЛ ───────────────────────── */
.vtable { display:flex; flex-direction:column; height:calc(100vh - 96px); min-height:560px; }
.vtable__top { display:flex; align-items:center; gap:16px; padding:6px 2px 12px; border-bottom:1px solid var(--pr-line); }
.vtable__back { background:none; border:none; color:var(--pr-muted); cursor:pointer; font-size:14px; padding:6px 4px; }
.vtable__back:hover { color:var(--pr-accent); }
.vtable__title { display:flex; align-items:baseline; gap:10px; flex:1; min-width:0; }
.vtable__title h1 { margin:0; font-size:20px; font-weight:500; }
.vtable__count { color:var(--pr-muted); font-size:13px; }
.vtable__claim { display:flex; align-items:center; gap:8px; }

.tbl-btn { font:inherit; font-size:13px; padding:7px 14px; border-radius:8px; border:1px solid var(--pr-line-2); background:var(--pr-card); color:var(--pr-text); cursor:pointer; transition: background .12s, border-color .12s; }
.tbl-btn:hover { border-color:var(--pr-accent); }
.tbl-btn--accent { background:var(--pr-accent); color:#fff; border-color:var(--pr-accent); }
.tbl-btn--accent:hover { background:var(--pr-accent-dark); border-color:var(--pr-accent-dark); }
.tbl-btn--issue { background:transparent; color:var(--pr-issue); border-color:var(--pr-issue); }
.tbl-btn--issue:hover { background:rgba(212,67,51,.08); }
.tbl-btn--ghost { background:transparent; color:var(--pr-muted); }
.tbl-tag { font-size:12px; padding:5px 10px; border-radius:6px; background:var(--pr-accent-soft); color:var(--pr-accent); }
.tbl-tag--warn { background:rgba(232,148,58,.12); color:var(--pr-prog); }

.vtable__grid { display:grid; grid-template-columns: 232px minmax(0,1fr) 348px; gap:14px; flex:1; min-height:0; padding-top:14px; }
@media (max-width: 1180px) { .vtable__grid { grid-template-columns: 210px minmax(0,1fr) 320px; } }
@media (max-width: 980px) { .vtable__grid { grid-template-columns: 1fr; grid-auto-rows:auto; } .vcol { min-height:auto !important; } }

.vcol { background:var(--pr-card); border:1px solid var(--pr-line); border-radius:10px; display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.vcol__head { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:11px 14px; border-bottom:1px solid var(--pr-line); font-size:13px; color:var(--pr-muted); font-weight:500; flex:0 0 auto; }

/* ЛЕВО — аспекты */
.vacp__list { display:flex; flex-direction:column; padding:6px; overflow-y:auto; flex:1; }
.vacp { display:flex; align-items:center; gap:9px; width:100%; text-align:left; background:none; border:none; border-radius:8px; padding:9px 10px; cursor:pointer; color:var(--pr-text); font:inherit; font-size:13px; transition: background .12s; }
.vacp:hover { background:var(--pr-card-2); }
.vacp--sel { background:var(--pr-accent-soft); }
.vacp--sel .vacp__lbl { color:var(--pr-accent); font-weight:600; }
.vacp__dot { width:8px; height:8px; border-radius:50%; background:var(--pr-free); flex:0 0 auto; }
.vacp--in_progress .vacp__dot { background:var(--pr-prog); }
.vacp--done .vacp__dot { background:var(--pr-done); }
.vacp--issues .vacp__dot { background:var(--pr-issue); }
.vacp--na .vacp__dot { background:var(--pr-na); }
.vacp__lbl { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vacp__chips { display:flex; gap:4px; }
.vacp__chip, .vacp__iss { font-size:10px; padding:1px 5px; border-radius:5px; line-height:1.5; }
.vacp__chip { background:var(--pr-line); color:var(--pr-muted); }
.vacp__iss { background:rgba(212,67,51,.12); color:var(--pr-issue); font-weight:600; }
.vacp__st { font-size:11px; color:var(--pr-muted); width:32px; text-align:right; flex:0 0 auto; }
.vacp--done .vacp__st { color:var(--pr-done); }
.vacp--issues .vacp__st { color:var(--pr-issue); font-weight:700; }

/* ЦЕНТР — правила + позиции */
.vcen__body { padding:12px 14px; overflow-y:auto; flex:1; }
.vcen__title { color:var(--pr-text); font-weight:600; font-size:14px; }
.vcen__st { font-size:11px; padding:2px 8px; border-radius:10px; background:var(--pr-line); color:var(--pr-muted); }
.vcen__st--in_progress { background:rgba(232,148,58,.14); color:var(--pr-prog); }
.vcen__st--done { background:rgba(46,158,91,.14); color:var(--pr-done); }
.vcen__st--issues { background:rgba(212,67,51,.14); color:var(--pr-issue); }

.vsrc { margin-bottom:16px; }
.vsrc__cap, .vrules__cap { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--pr-muted); margin-bottom:7px; }
.vsrc__item { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; padding:5px 0; border-bottom:1px solid var(--pr-line); }
.vsrc__item:last-child { border-bottom:none; }
.vsrc__t { font-size:11px; padding:1px 7px; border-radius:5px; background:var(--pr-line); color:var(--pr-muted); text-transform:uppercase; }
.vsrc__item a { color:var(--pr-accent); text-decoration:none; }
.vsrc__item a:hover { text-decoration:underline; }
.vsrc__prim { font-size:11px; padding:1px 6px; border-radius:5px; background:var(--pr-accent-soft); color:var(--pr-accent); }
.vsrc__empty { font-size:13px; color:var(--pr-muted); padding:8px 0; }

.vrules__cap { margin-top:4px; }
.vrow__list { display:flex; flex-direction:column; }
.vrow { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; padding:8px 0; border-bottom:1px solid var(--pr-line); font-size:13px; }
.vrow:last-child { border-bottom:none; }
.vrow__main { flex:1; min-width:140px; }
.vrow__val { color:var(--pr-accent); font-weight:600; }
/* «Признак не заведён» и подобное в листе — красным (не молчать о дыре). */
.vrow--warn .vrow__main, .vrow--warn .vrow__val { color:var(--pr-issue); }
.vrow__free, .vrow__pat { font-size:11px; color:var(--pr-muted); width:100%; }
.vrow__src { color:var(--pr-accent); text-decoration:none; font-size:11px; margin-left:auto; }
.vrow__src:hover { text-decoration:underline; }
.vrules__empty, .vrules__hint { font-size:13px; color:var(--pr-muted); padding:6px 0; line-height:1.5; }

.vrules__series { margin-top:16px; }
.vrules__scap { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--pr-muted); margin-bottom:8px; }
.vser { display:inline-flex; align-items:center; gap:5px; padding:4px 9px; margin:0 5px 6px 0; border:1px solid var(--pr-line); border-radius:14px; font-size:12px; cursor:pointer; background:var(--pr-card); transition: border-color .12s; }
.vser:hover { border-color:var(--pr-accent); color:var(--pr-accent); }
.vser i { font-style:normal; color:var(--pr-muted); font-size:11px; }
.vser__more { color:var(--pr-muted); font-size:12px; }

/* История сверки (аудит-трейл из verification_log) */
.vlog { margin-top:18px; }
.vlog__empty { font-size:13px; color:var(--pr-muted); padding:6px 0; }
.vlog__row { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; padding:5px 0; border-bottom:1px solid var(--pr-line); font-size:12px; }
.vlog__row:last-child { border-bottom:none; }
.vlog__act { font-weight:600; min-width:120px; }
.vlog__act--claim { color:var(--pr-prog); }
.vlog__act--done { color:var(--pr-done); }
.vlog__act--issues { color:var(--pr-issue); }
.vlog__act--release, .vlog__act--reopen { color:var(--pr-muted); }
.vlog__who { color:var(--pr-text); }
.vlog__at { color:var(--pr-muted); margin-left:auto; }
.vlog__note { width:100%; color:var(--pr-muted); font-size:11px; }

/* ПРАВО — чат */
.vchat__actions { display:flex; gap:6px; flex-wrap:wrap; padding:10px 12px; border-bottom:1px solid var(--pr-line); flex:0 0 auto; }
.vchat { flex:1; overflow-y:auto; padding:10px 12px; display:flex; flex-direction:column; gap:10px; min-height:0; }
.vchat__empty { margin:auto; color:var(--pr-muted); font-size:13px; text-align:center; padding:24px 12px; line-height:1.5; }
.vmsg { display:flex; flex-direction:column; max-width:88%; }
.vmsg--mine { align-self:flex-end; }
.vmsg__bubble { padding:8px 11px; border-radius:12px; background:var(--pr-card-2); border:1px solid var(--pr-line); font-size:13px; line-height:1.4; }
.vmsg--mine .vmsg__bubble { background:var(--pr-accent-soft); border-color:transparent; }
.vmsg--issue .vmsg__bubble { border-color:rgba(212,67,51,.3); }
.vmsg__kind { display:inline-block; font-size:10px; padding:1px 6px; border-radius:5px; margin-bottom:4px; text-transform:uppercase; letter-spacing:.03em; }
.vmsg__kind--issue { background:rgba(212,67,51,.14); color:var(--pr-issue); }
.vmsg__kind--prop { background:var(--pr-accent-soft); color:var(--pr-accent); }
.vmsg__body { word-wrap:break-word; }
.vmsg__prop { margin-top:5px; font-size:12px; color:var(--pr-muted); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.vmsg__prop b { color:var(--pr-text); }
.vmsg__apply { font:inherit; font-size:11px; padding:2px 8px; border:1px solid var(--pr-accent); background:transparent; color:var(--pr-accent); border-radius:5px; cursor:pointer; }
.vmsg__apply:hover { background:var(--pr-accent); color:#fff; }
.vmsg__done { font-size:11px; color:var(--pr-done); }
.vmsg__ref { margin-top:4px; font-size:11px; color:var(--pr-muted); }
.vmsg__ref a { color:var(--pr-accent); cursor:pointer; }
.vmsg__att { display:flex; gap:4px; margin-top:6px; flex-wrap:wrap; }
.vmsg__att img { width:54px; height:54px; object-fit:cover; border-radius:6px; cursor:pointer; border:1px solid var(--pr-line); }
.vmsg__meta { display:flex; gap:8px; font-size:11px; color:var(--pr-muted); padding:2px 4px 0; }

.vcompose { border-top:1px solid var(--pr-line); padding:9px 12px 11px; flex:0 0 auto; background:var(--pr-card); }
.vcompose__kinds { display:flex; gap:5px; margin-bottom:7px; }
.vcmp__kind { font:inherit; font-size:11px; padding:3px 9px; border:1px solid var(--pr-line-2); background:transparent; color:var(--pr-muted); border-radius:12px; cursor:pointer; }
.vcmp__kind.active { background:var(--pr-accent); color:#fff; border-color:var(--pr-accent); }
.vcompose__propose { display:none; gap:6px; margin-bottom:7px; }
.vcompose__propose.show { display:flex; }
.vcompose__propose select, .vcompose__propose input { font:inherit; font-size:12px; padding:5px 8px; border:1px solid var(--pr-line-2); border-radius:6px; background:var(--pr-card); color:var(--pr-text); }
.vcompose__propose select { flex:0 0 auto; }
.vcompose__propose input { flex:1; min-width:0; }
.vcompose__sku { font-size:11px; color:var(--pr-muted); margin-bottom:6px; }
.vcompose__sku input { font:inherit; font-size:12px; width:100px; padding:4px 7px; border:1px solid var(--pr-line-2); border-radius:6px; margin-left:4px; }
.vcompose__previews { display:flex; gap:4px; margin-bottom:6px; flex-wrap:wrap; }
.vcompose__previews img { width:42px; height:42px; object-fit:cover; border-radius:5px; border:1px solid var(--pr-line); }
.vcompose__main { display:flex; gap:6px; align-items:flex-end; }
.vcompose__att { font:inherit; font-size:18px; line-height:1; width:34px; height:34px; flex:0 0 auto; border:1px solid var(--pr-line-2); background:var(--pr-card-2); border-radius:8px; cursor:pointer; color:var(--pr-muted); }
.vcompose__att:hover { color:var(--pr-accent); border-color:var(--pr-accent); }
.vcompose textarea { font:inherit; font-size:13px; flex:1; min-width:0; resize:none; padding:8px 10px; border:1px solid var(--pr-line-2); border-radius:8px; background:var(--pr-card); color:var(--pr-text); max-height:96px; }
.vcompose__send { font:inherit; font-size:12px; padding:0 14px; height:34px; flex:0 0 auto; background:var(--pr-accent); color:#fff; border:none; border-radius:8px; cursor:pointer; }
.vcompose__send:hover { background:var(--pr-accent-dark); }
.vcompose__send:disabled { opacity:.5; }

/* ── [2026-07-09][CLX][PILOT-VELAR] Ценообразующий срез: диапазоны, drill, легенда, «Проверено с исходом» ── */

/* Легенда статусов под списком аспектов */
.vacp__legend { display:flex; flex-wrap:wrap; gap:10px 14px; padding:10px 4px 2px; margin-top:8px; border-top:1px solid var(--pr-line); }
.vacp__legend span { display:inline-flex; align-items:center; gap:6px; font-size:11px; color:var(--pr-muted); }
.vacp__legend .lg { width:8px; height:8px; border-radius:50%; flex:0 0 auto; }
.lg--free { background:var(--pr-free); }
.lg--in_progress { background:var(--pr-prog); }
.lg--done { background:var(--pr-done); }
.lg--issues { background:var(--pr-issue); }

/* Таблица диапазонов по сериям (Размеры/Секции/Мощность/Наценки) */
.vrng__wrap { overflow-x:auto; margin:2px 0 4px; }
.vrng { border-collapse:collapse; width:100%; font-size:12px; }
.vrng th, .vrng td { padding:6px 10px; text-align:right; white-space:nowrap; border-bottom:1px solid var(--pr-line); }
.vrng th:first-child, .vrng td:first-child { text-align:left; }
.vrng thead th { color:var(--pr-muted); font-weight:600; border-bottom:1px solid var(--pr-line-2); }
.vrng th.em, .vrng td.em { background:var(--pr-accent-soft); color:var(--pr-accent); font-weight:600; }
.vrng__row { cursor:pointer; }
.vrng__row:hover td { background:var(--pr-card-2); }
.vrng__row:hover td.em { background:var(--pr-accent-soft); }
.vrng__drill { font:inherit; font-size:11px; padding:3px 9px; border:1px solid var(--pr-line-2); background:var(--pr-card); color:var(--pr-accent); border-radius:12px; cursor:pointer; white-space:nowrap; }
.vrng__drill:hover { border-color:var(--pr-accent); background:var(--pr-accent-soft); }

/* Панель раскрытия позиций серии НА МЕСТЕ (U2-фикс) */
.vdrill { margin:4px 0 2px; }
.vdrill:empty { display:none; }
.vdrill__load { padding:10px; color:var(--pr-muted); font-size:12px; }
.vdrill__head { display:flex; align-items:center; gap:10px; padding:8px 2px; font-size:13px; border-bottom:1px solid var(--pr-line-2); }
.vdrill__close { margin-left:auto; font:inherit; font-size:11px; background:none; border:1px solid var(--pr-line-2); color:var(--pr-muted); border-radius:12px; padding:3px 10px; cursor:pointer; }
.vdrill__close:hover { color:var(--pr-accent); border-color:var(--pr-accent); }
.vdrill__wrap { overflow:auto; max-height:280px; margin-top:6px; }
.vdrill__tbl { border-collapse:collapse; width:100%; font-size:12px; }
.vdrill__tbl th, .vdrill__tbl td { padding:5px 9px; text-align:right; white-space:nowrap; border-bottom:1px solid var(--pr-line); }
.vdrill__tbl th:first-child, .vdrill__tbl td:first-child { text-align:left; }
.vdrill__tbl thead th { position:sticky; top:0; background:var(--pr-card); color:var(--pr-muted); font-weight:600; }
.vdrill__fix { font:inherit; font-size:11px; padding:2px 8px; border:1px solid var(--pr-line-2); background:var(--pr-card); color:var(--pr-accent); border-radius:10px; cursor:pointer; }
.vdrill__fix:hover { border-color:var(--pr-accent); background:var(--pr-accent-soft); }

/* Правила-ограничения (Опции): action-бейдж + примечание */
.vrow--constraint .vrow__act { font-size:11px; padding:1px 8px; border-radius:10px; background:var(--pr-card-2); color:var(--pr-muted); }
.vrow__act--restrict, .vrow__act--only_series, .vrow__act--hide { background:rgba(212,67,51,.10); color:var(--pr-issue); }
.vrow__act--surcharge_warn { background:rgba(232,148,58,.14); color:var(--pr-prog); }
.vrow__note { width:100%; font-size:11px; color:var(--pr-muted); }
.vrow__off { font-size:10px; color:var(--pr-issue); }
.vrow__val--price { color:var(--pr-accent); }

/* Текущее значение в форме правки + инлайн-ошибки */
.vcompose__att { display:inline-flex; align-items:center; justify-content:center; }
.vcompose__cur { font-size:11px; color:var(--pr-muted); align-self:center; white-space:nowrap; }
.vcompose__arr { color:var(--pr-muted); align-self:center; }
.vcompose__sku label { font-weight:600; color:var(--pr-text); }
.vcompose__sku input { width:150px; }
.vsrc__list { max-height:132px; overflow-y:auto; }
.vfield--err { border-color:var(--pr-issue) !important; background:rgba(212,67,51,.05) !important; }
.vcompose__err { font-size:11px; color:var(--pr-issue); margin-top:5px; }

/* «Проверено» с исходом */
.vdone { display:flex; flex-direction:column; gap:6px; width:100%; }
.vdone__q { font-size:11px; color:var(--pr-muted); }
.vdone select, .vdone input { font:inherit; font-size:12px; padding:5px 8px; border:1px solid var(--pr-line-2); border-radius:6px; background:var(--pr-card); color:var(--pr-text); }
.vdone__btns { display:flex; gap:6px; }

/* [2026-07-11][CLX][ANOMALY-V1] Автопроверка ряда: блок аномалий над таблицей позиций + подсветка строк */
.vdrill__anoms { margin:8px 0 10px; padding:10px 12px; border:1px solid rgba(212,67,51,.35); border-radius:10px; background:rgba(212,67,51,.06); }
.vdrill__anoms-cap { font-weight:700; font-size:12px; color:var(--pr-issue); margin-bottom:6px; }
.vdrill__anom { font-size:12px; padding:3px 0; color:var(--pr-text); }
.vdrill__anom b { font-variant-numeric:tabular-nums; }
.vdrill__anom-go { color:var(--pr-accent); cursor:pointer; text-decoration:underline; text-underline-offset:2px; }
.vdrill__anoms-note { font-size:11px; color:var(--pr-muted); margin-top:6px; }
.vdrill__clean { margin:8px 0 10px; font-size:12px; color:var(--pr-done, #3F7A52); }
.vdrill__bad td { background:rgba(212,67,51,.10); }
.vdrill__bad--pulse td { background:rgba(212,67,51,.28); transition:background .5s; }

/* [2026-07-11][CLX][MATRIX-G] Матрица завод → линейка → серия + лист проверки */
.vtable__grid--g { grid-template-columns: minmax(0,1fr) 320px; }
/* [2026-07-14][CLX][MATRIX-AG] Матрица на движке портала (AG-Grid, тема quartz) — как таблица
   каталога-витрины и таблицы MA: БЕЗ собственной рамки и радиуса (грид лежит внутри карточки
   .vcol — своя рамка давала «модалку в модалке», фидбек Александра), шапка в тон поверхности,
   разделители колонок, плотность движка (шрифт 13px DM Sans, паддинг ячейки 12px).
   ЛЕЙАУТ (урок [[css-flex-parent-chain-scroll]]): #vMatrix был display:block посреди flex-цепочки
   → лист проверки не сжимал грид, а вылезал за .vcol{overflow:hidden} и скролл ломался
   («надо сначала закрыть область»). Теперь вся цепочка flex: центр → #vMatrix → #vGrid(flex:1),
   лист снизу со СВОИМ скроллом. */
.vcol--center { display:flex; flex-direction:column; min-height:0; }
#vMatrix { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }
#vLineup { flex:0 0 auto; }
#vOff { flex:0 0 auto; }
#vSheet { flex:0 0 auto; max-height:45%; overflow-y:auto; border-top:1px solid var(--pr-line); }

/* Якорь специфичности (0,2,0): AG-Grid инжектит РАНТАЙМ-стиль `.ag-theme-quartz{--ag-font-size:14px}`
   при создании грида и перебивал наш 13px — канон MA (aggrid-grouping.css) предупреждает ровно об этом. */
.ag-theme-quartz.gmx-ag {
  flex: 1 1 auto;
  min-height: 160px;
  width: 100%;
  --ag-background-color: var(--pr-card);
  --ag-foreground-color: var(--pr-text);
  --ag-border-color: var(--pr-line);
  --ag-row-border-color: var(--pr-line);
  --ag-header-background-color: var(--pr-card-2);
  --ag-header-foreground-color: var(--pr-muted);
  --ag-odd-row-background-color: var(--pr-card);
  --ag-row-hover-color: var(--pr-card-2);
  --ag-active-color: var(--pr-accent);
  --ag-font-family: var(--sr-font-ui, 'DM Sans', system-ui, sans-serif);
  --ag-font-size: 13px;
  --ag-cell-horizontal-padding: 0px;   /* .gcell = кнопка во всю ячейку, свой паддинг 12px */
  --ag-grid-size: 5px;
}
.gmx-ag .ag-root-wrapper { border:none; border-radius:0; }
.gmx-ag .ag-header { border-bottom:1px solid var(--pr-line); }
.gmx-ag .ag-header-cell { font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; font-weight:600; border-right:1px solid var(--pr-line); padding:0 12px; }
.gmx-ag .ag-cell { display:flex; align-items:center; border-right:1px solid var(--pr-line); padding:0; overflow:hidden; }
/* Строки завода и линейки — подложка (иерархия читается без отступов-«ёлочки»). */
.gmx-ag .gmx-row--factory .ag-cell, .gmx-ag .gmx-row--line .ag-cell { background: var(--pr-card-2); }
.gmx-ag .gmx-name { font-weight:600; padding:0 12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gmx-ag .gmx-name small { display:block; font-weight:400; color:var(--pr-muted); font-size:10.5px; }
.gmx-ag .gmx-cnt { justify-content:flex-end; padding:0 12px; color:var(--pr-muted); font-variant-numeric:tabular-nums; }
.gmx-ag .gcell { min-height:0; height:100%; padding:0 12px; }
/* Дыра в данных каталога — видимая, а не «—» (правило: не молчать о пропусках). */
.gmiss { color:var(--pr-issue); font-weight:600; }
/* Номер позиции — моноширинно-табличный, чтобы не путался с моделью. */
.vdrill__pos { font-variant-numeric:tabular-nums; color:var(--pr-muted); }

/* Плашка «Состав каталога» = шапка карточки (не вложенная рамка). */
.gcell--lineup.gcell--lineup { border:none; border-bottom:1px solid var(--pr-line); border-radius:0; margin:0; min-height:44px; padding:0 12px; background:var(--pr-card); }

/* Чат — сворачиваемый (фидбек Александра 2026-07-14): широкий столбец съедает матрицу. */
.vtable__grid--g.vtable__grid--chat-off { grid-template-columns: minmax(0,1fr) 40px; }
.vcol--chat.vcol--chat-off { align-items:center; }
.vcol--chat.vcol--chat-off > *:not(.vchat-toggle) { display:none; }
.vchat-toggle { flex:0 0 auto; width:100%; display:flex; align-items:center; justify-content:center; gap:6px; background:none; border:none; border-bottom:1px solid var(--pr-line); color:var(--pr-muted); cursor:pointer; font:inherit; font-size:12px; padding:11px 8px; }
.vchat-toggle:hover { color:var(--pr-accent); }
.vcol--chat-off .vchat-toggle { height:100%; border-bottom:none; writing-mode:vertical-rl; text-orientation:mixed; padding:12px 0; }
.vchat-toggle i { font-style:normal; color:var(--pr-accent); font-weight:600; }
.vcol__head .vchat-toggle { width:auto; border:none; padding:2px 6px; font-size:15px; line-height:1; }

.gmx-wrap { overflow-x:auto; border:1px solid var(--pr-line); border-radius:12px; background:var(--pr-card); margin-top:10px; }
.gmx { border-collapse:collapse; width:100%; font-size:12.5px; }
.gmx th { font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--pr-muted); text-align:left; padding:9px 10px; border-bottom:1px solid var(--pr-line); white-space:nowrap; }
.gmx td { border-bottom:1px solid var(--pr-line-2); padding:0; vertical-align:middle; }
.gmx tr:last-child td { border-bottom:none; }
.gmx-name { font-weight:600; padding:8px 10px; white-space:nowrap; }
.gmx-name small { display:block; font-weight:400; color:var(--pr-muted); font-size:10.5px; }
.gmx-name--ser { padding-left:22px; }
.gmx-cnt { padding:8px 10px; color:var(--pr-muted); font-variant-numeric:tabular-nums; }
.gmx-factory td, .gmx-line td { background:var(--pr-card-2); }
.gcell { display:flex; align-items:center; gap:6px; width:100%; min-height:38px; padding:5px 10px; border:none; background:transparent; font:inherit; font-size:12.5px; color:var(--pr-text); cursor:pointer; text-align:left; white-space:nowrap; }
button.gcell:hover { background:var(--pr-accent-soft); }
.gcell--sel { box-shadow:inset 0 0 0 2px var(--pr-accent); border-radius:8px; }
.gcell--mute { color:var(--pr-muted); cursor:default; font-size:12px; }
/* [2026-07-18][CLX][SVERKA-POLISH] Точка-статус горит ТОЛЬКО при вердикте — серые точки на
   непроверенных ячейках были визуальным шумом (declutter). */
.gdot { flex:none; width:7px; height:7px; border-radius:50%; display:none; }
.gcell--ok .gdot, .gcell--issue .gdot, .gcell--ask .gdot, .gcell--stale .gdot { display:block; }
.gcell--ok .gdot { background:var(--pr-done, #3F7A52); }
.gcell--issue .gdot { background:var(--pr-issue); }
.gcell--ask .gdot { background:var(--pr-prog, #E8943A); }
.gcell--stale .gdot { background:var(--pr-muted); }
.gstale { font-size:10.5px; color:var(--pr-prog, #E8943A); font-weight:600; }
.gcol { display:flex; flex-direction:column; line-height:1.25; overflow:hidden; }
.gcol .gsub { font-size:11px; color:var(--pr-muted); font-variant-numeric:tabular-nums; }
.gfree { color:var(--pr-done, #3F7A52); font-weight:600; }
/* Ориентация: «верт+гориз» = поворотная серия (акцент медь), просто «только …» — нейтрально. */
.gori { font-weight:600; color:var(--pr-text); }
.gori--both { color:var(--pr-accent); }
.ginh { color:var(--pr-muted); }
.gpending { color:var(--pr-prog, #E8943A); font-size:11.5px; white-space:normal; }
.gexc { background:rgba(232,148,58,.14); color:var(--pr-prog, #E8943A); border-radius:6px; padding:1px 7px; font-size:10.5px; font-weight:600; margin-left:4px; }
.gcell--lineup { border:1px solid var(--pr-line); border-radius:10px; background:var(--pr-card); margin:0 0 4px; min-height:42px; }
.glineup { white-space:normal; }
.glineup-go { margin-left:auto; color:var(--pr-accent); font-size:12px; white-space:nowrap; }
.goff { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:0; padding:8px 12px; border-top:1px solid var(--pr-line); background:var(--pr-card); }
.goff-cap { font-size:11px; color:var(--pr-muted); }
.goff-chip { font:inherit; font-size:11.5px; padding:3px 10px; border:1px solid var(--pr-line-2); border-radius:12px; background:var(--pr-card); color:var(--pr-muted); cursor:pointer; }
.goff-chip i { font-style:normal; color:var(--pr-accent); }
.goff-chip--sel, .goff-chip:hover { border-color:var(--pr-accent); color:var(--pr-text); }
.gsheet { border:1px solid var(--pr-line); border-radius:12px; background:var(--pr-card); margin-top:12px; padding:12px 14px; }
.gsheet-hint { margin-top:12px; padding:12px 14px; border:1px dashed var(--pr-line); border-radius:12px; color:var(--pr-muted); font-size:12.5px; }
.gsheet-head { display:flex; align-items:center; gap:10px; font-size:14px; }
.gsheet-head .vdrill__close { margin-left:auto; }
.gsheet-scope { color:var(--pr-muted); }
.gsheet-st { font-size:11px; padding:2px 9px; border-radius:10px; background:var(--pr-card-2); color:var(--pr-muted); }
.gsheet-st--ok { background:rgba(63,122,82,.12); color:var(--pr-done, #3F7A52); }
.gsheet-st--issue { background:rgba(212,67,51,.10); color:var(--pr-issue); }
.gsheet-st--ask, .gsheet-st--stale { background:rgba(232,148,58,.14); color:var(--pr-prog, #E8943A); }
.gsheet-src { font-size:11.5px; color:var(--pr-muted); margin:6px 0 10px; }
.gsheet-src .gsrc a { color:var(--pr-accent); }
.gsheet-src .gsrc { margin-right:12px; }
.gsheet-verdict { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.gdims-cap { font-weight:600; font-size:12px; margin:8px 0 4px; }
.gchips { display:flex; flex-wrap:wrap; gap:4px; }
.gchip { border:1px solid var(--pr-line-2); border-radius:6px; padding:1px 7px; font-size:11.5px; background:var(--pr-card); font-variant-numeric:tabular-nums; }
.gspot { border-collapse:collapse; margin-top:4px; font-variant-numeric:tabular-nums; }
.gspot th, .gspot td { padding:4px 10px; border-bottom:1px solid var(--pr-line-2); text-align:right; font-size:12px; }
.gspot th { color:var(--pr-muted); font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; }
.gspot td:first-child, .gspot th:first-child { text-align:left; }
