/*!
 * svitex-erp-ui.css — дизайн-система Svitex для веб-АРМ «Склад» (arm / sklad.svitex)
 * Подключать ПОСЛЕ /app.css:  <link rel="stylesheet" href="/svitex-erp-ui.css">
 * Ничего не требует от JS/HTML: переопределяет переменные app.css и базовые классы.
 * Сгенерировано src/gen_css.py — правь генератор.
 * Специфичность: правила, которые спорят со встроенными <style> страниц
 * (reports/screens/catalogs/ops.html), начинаются с `html ` — поэтому файл
 * работает и сразу после app.css, и в конце <head>.
 */

/* ───────────── 1. Токены ───────────── */
:root{
  /* Svitex (DESIGN.md §3) */
  --svx-ink:#2B2B2B; --svx-mid:#6B6B6B; --svx-faint:#767676; --svx-light:#A8A8A8; --svx-hair:#CFCFCF;
  --svx-ctl:#949494;            /* рамка контролов в ERP: 3.03:1 (WCAG 1.4.11), вместо #A8A8A8 2.38 */
  --svx-row-line:#E6E6E6;       /* разделитель строк таблицы */
  --svx-ink-hover:#404040; --svx-hover-bg:#F4F4F4; --svx-sel-bg:#F2F2F2;
  --svx-focus-ring:#EDEDED; --svx-error-bg:#FAFAFA; --svx-bg:#FFFFFF; --svx-field:#FFFFFF;
  --svx-on-ink:#FFFFFF;         /* текст на залитом акценте */
  --svx-backdrop:rgba(43,43,43,.32);
  --svx-stroke:2px; --svx-stroke-ui:1.5px; --svx-err-bar:3px;
  --svx-r-ctl:8px; --svx-r-input:10px; --svx-r-card:18px; --svx-r-pill:999px;
  --svx-font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --svx-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --svx-t:.15s;
  --svx-chevron:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 12 8%22%3E%3Cpath d=%22M1.5 1.5 6 6l4.5-4.5%22 fill=%22none%22 stroke=%22%236B6B6B%22 stroke-width=%221.8%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E"); --svx-check:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Cpath d=%22M3.5 8.5 6.8 11.5 12.5 4.5%22 fill=%22none%22 stroke=%22%232B2B2B%22 stroke-width=%222.2%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E");

  /* переменные app.css → Svitex */
  --ink:var(--svx-ink); --muted:var(--svx-mid); --faint:var(--svx-faint);
  --line:var(--svx-hair); --paper:var(--svx-bg); --panel:var(--svx-bg); --raised:var(--svx-bg);
  --accent:var(--svx-ink); --accent-ink:var(--svx-on-ink); --accent-dim:var(--svx-sel-bg);
  --focus:var(--svx-ink);
  /* статусы без цвета: различаются формой/иконкой/жирностью (см. §7) */
  --wait:var(--svx-ink); --draft:var(--svx-mid); --posted:var(--svx-ink); --danger:var(--svx-ink);
  --lamp-off:var(--svx-ink); --lamp-demo:var(--svx-ink); --lamp-on:var(--svx-ink);
  --shadow:none;
  --font:var(--svx-font); --mono:var(--svx-mono);
  --row:30px; --radius:var(--svx-r-ctl);
  color-scheme:light;
}
html.dark{
  --svx-ink:#EDEDED; --svx-mid:#A3A3A3; --svx-faint:#8F8F8F; --svx-light:#5E5E5E; --svx-hair:#3A3A3A;
  --svx-ctl:#6E6E6E; --svx-row-line:#262626;
  --svx-ink-hover:#D4D4D4; --svx-hover-bg:#222222; --svx-sel-bg:#2A2A2A;
  --svx-focus-ring:#333333; --svx-error-bg:#1F1F1F; --svx-bg:#171717; --svx-field:#1C1C1C;
  --svx-on-ink:#171717; --svx-backdrop:rgba(0,0,0,.6);
  --svx-chevron:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 12 8%22%3E%3Cpath d=%22M1.5 1.5 6 6l4.5-4.5%22 fill=%22none%22 stroke=%22%23A3A3A3%22 stroke-width=%221.8%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E"); --svx-check:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Cpath d=%22M3.5 8.5 6.8 11.5 12.5 4.5%22 fill=%22none%22 stroke=%22%23EDEDED%22 stroke-width=%222.2%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E");
  --ink:var(--svx-ink); --muted:var(--svx-mid); --faint:var(--svx-faint);
  --line:var(--svx-hair); --paper:var(--svx-bg); --panel:var(--svx-bg); --raised:#1C1C1C;
  --accent:var(--svx-ink); --accent-ink:var(--svx-on-ink); --accent-dim:var(--svx-sel-bg);
  --focus:var(--svx-ink);
  --wait:var(--svx-ink); --draft:var(--svx-mid); --posted:var(--svx-ink); --danger:var(--svx-ink);
  --lamp-off:var(--svx-ink); --lamp-demo:var(--svx-ink); --lamp-on:var(--svx-ink);
  --shadow:none;
  color-scheme:dark;
}

/* ───────────── 2. База ───────────── */
[hidden]{display:none!important}  /* app.css .seg{display:…} перебивал hidden у #gpSeg */
html body{background:var(--paper);color:var(--ink);font-family:var(--font);font-size:13.5px;line-height:1.4;
  font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
::selection{background:var(--svx-ink);color:var(--svx-on-ink)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
kbd{font-family:var(--mono);font-size:10px;font-weight:500;border:1px solid var(--svx-light);background:transparent;
  color:var(--muted);border-radius:4px;padding:0 4px;line-height:15px}
.arm{background:var(--paper)}
a{color:inherit}

/* ───────────── 3. Шапка ───────────── */
.chrome{display:flex;flex-direction:column;background:var(--panel);border-bottom:2px solid var(--line)}
/* Линия выравнивания текста: --svx-edge от левого края окна. На ней стоят левый край «S» знака, первый пункт меню
   и текст сайдбара (поиск, заголовки групп, пункты). */
:root{--svx-edge:20px}
@media (max-width:900px){:root{--svx-edge:18px}}
.titlebar{order:-1;padding:12px 16px 10px var(--svx-edge);gap:16px}
.brand{gap:14px}
/* Логотип — словесный знак SVITEX как на signup/404/error (DESIGN.md §2): 700 14px, letter-spacing .32em, --ink (в dark светлый).
   + имя сервиса «arm» (экосистема: Svitex Arm / Drive / Colors…): строчными, 600 13px, без разрядки, --muted (#6B6B6B / #A3A3A3), без «/».
   Пустой <span class="mark"> из разметки заполняется ::before/::after — HTML и JS не меняются. */
html .mark{display:inline-flex;align-items:baseline;width:auto;height:auto;flex:none;border:0;border-radius:0;background:none;
  color:var(--ink);font:700 14px/1 var(--svx-font);letter-spacing:0;text-transform:none;white-space:nowrap;
  margin-left:var(--svx-mark-sb,0px);padding:2px 14px 2px 0;border-right:1px solid var(--line)}
/* Зазор SVITEX→arm = обычный пробел знака: хвост разрядки после «X» (.32em·14px ≈ 4.5px) не гасим + .3em·13px ≈ 3.9px
   ≈ 8.4px — ширина пробела, набранного той же разрядкой. Левый край «S» не меняется. */
html .mark::before{content:"SVITEX";letter-spacing:.32em}
/* Имя сервиса — ОДНА строка: --svx-service ("arm" | "drive" | "colors" …), задаётся в :root ниже.
   Приоритет: непустой data-service на <span class="mark"> → --svx-service → ничего (только SVITEX).
   Пусто = --svx-service:none (или не задавать): ::after не создаётся, лишнего зазора нет.
   :where() держит специфичность (0,1,2) — равной базовому правилу, чтобы локальные CSS сервисов (disk.css) могли перекрыть. */
:root{--svx-service:"arm"}
html .mark::after{content:var(--svx-service,none);margin-left:.3em;font-weight:600;font-size:13px;letter-spacing:0;text-transform:lowercase;color:var(--muted)}
html .mark:where([data-service]:not([data-service=""]))::after{content:attr(data-service)}
h1{font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.sub{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:2px}
.menubar{padding:0 12px 0 calc(var(--svx-edge) - 10px);gap:2px;border-bottom:0;flex-wrap:wrap}  /* без overflow: иначе обрезаются выпадающие .menu-dd */
.menu-dd{z-index:40}
html .menu-btn{display:inline-block;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;
  padding:8px 10px 7px;font-size:14px;font-weight:500;color:var(--muted);text-decoration:none;transition:color var(--svx-t),border-color var(--svx-t)}
html .menu-btn:hover,html .menu:focus-within .menu-btn{background:transparent;color:var(--ink);border-bottom-color:var(--svx-light)}
/* необязательный хук: <… class="menu-btn" aria-current="page"> */
html .menu-btn[aria-current="page"],html .menu-btn.on{color:var(--ink);font-weight:700;border-bottom-color:var(--ink)}
.menu-dd{background:var(--raised);border:1.5px solid var(--ink);border-radius:12px;padding:6px;box-shadow:none;min-width:260px;top:100%}
.menu-dd button,.menu-dd a{padding:7px 10px;border-radius:8px;color:var(--ink);font-size:13.5px}
.menu-dd button:hover,.menu-dd a:hover{background:var(--svx-hover-bg);color:var(--ink)}
.menu-dd button[data-stub]{color:var(--muted)}
.menu-dd button[data-stub]::after{content:"скоро";font-size:10px;font-weight:600;color:var(--muted);border:1px dashed var(--svx-ctl);
  border-radius:999px;padding:0 6px;line-height:16px;margin-left:10px}
.lamps{gap:14px}
.lamp{font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--muted)}
.lamp i,.lamp.on i,.lamp.demo i{width:10px;height:10px;border-radius:50%;box-shadow:none;background:transparent;border:2px solid var(--ink)}
.lamp.on{color:var(--ink)}
.lamp.on i{background:var(--ink)}                                       /* есть связь — круг залит */
.lamp.demo i{background:linear-gradient(90deg,var(--ink) 50%,transparent 50%)}  /* демо — половина */
.lamp:not(.on):not(.demo) i{border-style:dashed}                         /* нет связи — пунктирное кольцо */
#btnTheme{white-space:nowrap}

/* ───────────── 4. Сайдбар ───────────── */
.workspace{grid-template-columns:240px minmax(0,1fr)}
.types{background:var(--panel);border-right:1px solid var(--line);padding:10px 10px 16px}
html .types h3{margin:16px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
html .types h3:first-child{margin-top:6px}
html .types .hint{padding:14px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.type,html .types > button{display:flex;width:100%;text-align:left;justify-content:space-between;align-items:center;gap:8px;
  padding:7px 10px;margin:1px 0;border:0;background:transparent;border-radius:8px;color:var(--ink);font-size:13.5px;line-height:1.3;
  box-shadow:none;transition:background var(--svx-t)}
html .types a.type{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;text-decoration:none;color:var(--ink)}
.type small{font-family:var(--mono);font-size:10.5px;color:var(--faint);font-weight:400}
.type:hover:not(.on),html .types > button:hover:not(.active){background:var(--svx-hover-bg)}
.type.on,html .types button.active{background:var(--svx-sel-bg);color:var(--ink);font-weight:700;box-shadow:inset 3px 0 0 var(--ink)}
.type.on small{color:var(--muted)}
.type.off{opacity:1;color:var(--faint)}
.type.off span{text-decoration:line-through;text-decoration-thickness:1px}

/* ───────────── 5. Панели, тулбары, статус ───────────── */
.toolbar,.filters,.actions,.status{background:var(--panel);padding:10px 16px;gap:8px 10px}
.toolbar,.filters{border-bottom:1px solid var(--line)}
.actions{border-top:1px solid var(--line)}
.status-bar{background:var(--panel);border-top:1px solid var(--line);min-height:36px;padding:0 12px 0 0}
.status{font-family:var(--mono);font-size:12px;color:var(--muted);background:transparent}
html [data-tone]::before{content:none}
html #rStatus[data-tone],html #sStatus[data-tone]{display:flex;align-items:center;gap:7px}
html #rStatus[data-tone="ok"],html #sStatus[data-tone="ok"]{color:var(--ink)}
html #rStatus[data-tone="err"],html #sStatus[data-tone="err"]{color:var(--ink);font-weight:700}
html #rStatus[data-tone]::before,html #sStatus[data-tone]::before{content:"";width:14px;height:14px;flex:none;background:currentColor;
  -webkit-mask:var(--svx-m) center/contain no-repeat;mask:var(--svx-m) center/contain no-repeat}
html #rStatus[data-tone="ok"],html #sStatus[data-tone="ok"]{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M5.2 8.3 7.2 10.2 10.8 6%22/%3E%3C/svg%3E")}
html #rStatus[data-tone="err"],html #sStatus[data-tone="err"]{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.6v4.2%22/%3E%3Ccircle cx=%228%22 cy=%2211.3%22 r=%22.5%22 fill=%22%23000%22/%3E%3C/svg%3E");border-left:3px solid var(--ink);padding-left:10px}
html #rStatus[data-tone="busy"],html #sStatus[data-tone="busy"]{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M8 1.8a6.2 6.2 0 1 1-6.2 6.2%22/%3E%3C/svg%3E")}
html #rStatus[data-tone="busy"]::before,html #sStatus[data-tone="busy"]::before{animation:svx-spin 1s linear infinite}
html #rStatus[data-tone=""]::before,html #sStatus[data-tone=""]::before{content:none}
/* в .stage при скрытых строках 1fr достаётся футеру (баг сетки есть и в оригинале) — прижимаем статус-бар к низу */
html .stage>.status-bar{align-self:end}
html #rStatus[data-tone="busy"]::after,html #sStatus[data-tone="busy"]::after{content:""}
@keyframes svx-spin{to{transform:rotate(360deg)}}
.empty{color:var(--muted);font-size:13.5px}

/* ───────────── 6. Контролы ───────────── */
label{color:var(--muted);font-size:13px;gap:6px}
html :is(input[type="text"],input[type="search"],input[type="date"],input[type="number"],input:not([type]),select,textarea,.combo input),
html #q{
  font:inherit;font-size:13px;color:var(--ink);background:var(--svx-field);
  border:var(--svx-stroke-ui) solid var(--svx-ctl);border-radius:var(--svx-r-ctl);
  padding:4px 10px;min-height:30px;min-width:0;outline:none;
  transition:border-color var(--svx-t),box-shadow var(--svx-t)}
html :is(input,select,textarea)::placeholder{color:var(--faint);opacity:1}
html :is(input,select,textarea):hover{border-color:var(--muted)}
html :is(input,select,textarea):focus,html #q:focus{border-color:var(--ink);box-shadow:0 0 0 3px var(--svx-focus-ring)}
html :is(input,select,textarea)[readonly]{border-color:var(--line);background:var(--svx-field)}
html :is(input,select,textarea)[readonly]:focus{border-color:var(--muted)}
html :is(input,select,textarea,button):disabled{border-color:var(--line);border-style:solid;background:var(--svx-error-bg);color:var(--svx-light);
  cursor:not-allowed;opacity:1;box-shadow:none;transform:none}
/* ошибка: пунктир + полоса, без красного */
html :is(input,select,textarea)[aria-invalid="true"],html .bad :is(input,select),html :is(input,select):user-invalid{
  border:2px dashed var(--ink);background:var(--svx-error-bg)}
html :is(input,select,textarea)[aria-invalid="true"]:focus{border-style:solid}
.svx-err{display:flex;align-items:center;gap:7px;font-family:var(--font);margin:5px 0 0;padding:1px 0 1px 9px;border-left:3px solid var(--ink);
  font-size:12.5px;font-weight:700;color:var(--ink)}
.svx-err::before{content:"";width:14px;height:14px;flex:none;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.6v4.2%22/%3E%3Ccircle cx=%228%22 cy=%2211.3%22 r=%22.5%22 fill=%22%23000%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.6v4.2%22/%3E%3Ccircle cx=%228%22 cy=%2211.3%22 r=%22.5%22 fill=%22%23000%22/%3E%3C/svg%3E") center/contain no-repeat}
input[type="date"]{font-variant-numeric:tabular-nums}
input[type="date"]::-webkit-calendar-picker-indicator{opacity:.6;cursor:pointer}
html.dark input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(1)}
html select{appearance:none;-webkit-appearance:none;background-image:var(--svx-chevron);background-repeat:no-repeat;
  background-position:right 10px center;background-size:11px 8px;padding-right:30px}
html select:disabled{background-image:none}
.req,html .rep-form .req,html .scr-form .req{color:var(--ink);font-weight:700}
#flt_doc,#flt_summ{font-family:var(--mono)}
/* чекбокс: контур, галочка-штрих, без заливки */
html input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin:0;flex:none;
  border:var(--svx-stroke-ui) solid var(--svx-ctl);border-radius:4px;background:var(--svx-field) center/14px 14px no-repeat;
  cursor:pointer;transition:border-color var(--svx-t);vertical-align:middle}
html input[type="checkbox"]:hover{border-color:var(--ink)}
html input[type="checkbox"]:checked{border:2px solid var(--ink);background-image:var(--svx-check)}
html input[type="checkbox"]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--svx-focus-ring);border-color:var(--ink)}
.check{color:var(--ink);gap:7px}
/* combo: поле + кнопка «…» */
.combo{display:inline-flex}
html .combo input{border-top-right-radius:0;border-bottom-right-radius:0}
html .combo > button{min-height:30px;min-width:30px;padding:0 8px;border:var(--svx-stroke-ui) solid var(--svx-ctl);border-left:0;
  border-radius:0 var(--svx-r-ctl) var(--svx-r-ctl) 0;background:var(--svx-field);color:var(--ink);font-weight:700;letter-spacing:.04em}
html .combo > button:hover{background:var(--svx-hover-bg);color:var(--ink)}

/* ───────────── 7. Кнопки ───────────── */
/* Вторичная (контур): .ghost, .btns button и «голые» кнопки в формах/тулбарах.
   Все селекторы в :is() одной специфичности (0,1,1) — чтобы .seg/.combo/.pager ниже их перебивали. */
html :is(.ghost,.btns button,.toolbar button,.filters button,.rep-form button,.scr-form button,
  .dlg button,.cat-form-panel button,.doc-actions button,.card-head button,.line-edit button,.ops-pane button){
  display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:30px;padding:0 14px;
  font:inherit;font-size:13px;font-weight:600;line-height:1;color:var(--ink);white-space:nowrap;
  background:var(--svx-field);border:var(--svx-stroke-ui) solid var(--svx-ctl);border-radius:var(--svx-r-pill);
  cursor:pointer;transition:background var(--svx-t),border-color var(--svx-t),color var(--svx-t)}
html :is(.ghost,.btns button,.toolbar button,.filters button,.rep-form button,.scr-form button,
  .dlg button,.cat-form-panel button,.doc-actions button,.card-head button,.line-edit button,.ops-pane button):hover:not(:disabled){
  border-color:var(--ink);background:var(--svx-hover-bg);color:var(--ink)}
html :is(.ghost,.btns button,.rep-form button,.toolbar button,.dlg button):active:not(:disabled){transform:translateY(1px)}
/* Сильная (контур 2px): сохранить / ОК */
html :is(#btnSave,#btnOk,#bomAdd,#setAdd,#trAdd){border:2px solid var(--ink)}
/* Опасная: пунктир. Не красная. */
html :is(#Button6,#btnDel,.bom-del){border-style:dashed;border-color:var(--ink);color:var(--ink)}
html #nm2pick button{min-height:30px;padding:0 14px;border:1.5px solid var(--svx-ctl);border-radius:999px;background:var(--svx-field);color:var(--ink);font:600 13px var(--font)}
html #nm2pick .seg button{border:0;min-height:24px}
html #nm2pick .seg button.on{box-shadow:inset 0 0 0 2px var(--ink);font-weight:700}
html .bom-del{min-height:22px;min-width:22px;padding:0 6px;border-width:1.5px}
/* ЕДИНСТВЕННАЯ залитая кнопка экрана: журнал — «Добавить», отчёт — «Сформировать», экран — «Показать» */
html :is(#Button7,#btnRun,#sRun,.svx-primary){background:var(--ink);color:var(--svx-on-ink);border:2px solid var(--ink)}
html :is(#Button7,#btnRun,#sRun,.svx-primary):hover:not(:disabled){background:var(--svx-ink-hover);border-color:var(--svx-ink-hover);color:var(--svx-on-ink)}
html :is(#Button7,#btnRun,#sRun,.svx-primary):disabled{background:var(--svx-error-bg);color:var(--svx-light);border-color:var(--line)}
html #Button7 kbd{background:transparent;color:inherit;border-color:currentColor;opacity:.7}
.btns{gap:8px}
.btns button kbd{margin-left:2px}
.defaults{gap:16px}
.defaults label{font-size:12px}

/* Сегменты (период, тип, видимость) */
.seg{display:inline-flex;gap:2px;padding:2px;border:var(--svx-stroke-ui) solid var(--svx-ctl);border-radius:var(--svx-r-pill);background:var(--svx-field);overflow:visible}
html .seg > button{min-height:24px;padding:0 12px;border:0;border-radius:var(--svx-r-pill);background:transparent;color:var(--muted);
  font-size:13px;font-weight:500;box-shadow:none;transition:color var(--svx-t),background var(--svx-t)}
html .seg > button + button{border-left:0}
html .seg > button:hover:not(.on){color:var(--ink);background:var(--svx-hover-bg);border:0}
html .seg > button.on{background:transparent;color:var(--ink);font-weight:700;box-shadow:inset 0 0 0 2px var(--ink)}

/* ───────────── 8. Таблицы ───────────── */
.grid-wrap{background:var(--paper)}
.grid{font-size:13px;border-collapse:separate;border-spacing:0}
.grid thead th{position:sticky;top:0;z-index:2;background:var(--panel);color:var(--muted);font-size:12px;font-weight:600;
  letter-spacing:.01em;padding:8px 12px 7px;border-bottom:2px solid var(--ink);text-align:left}
.grid tbody td{height:var(--row);padding:0 12px;border-bottom:1px solid var(--svx-row-line);color:var(--ink);background:var(--paper)}
/* «зебра контуром»: каждая 5-я строка закрыта линией #CFCFCF — глаз держит строку в длинных листах без заливок */
.grid tbody tr:nth-child(5n) td{border-bottom-color:var(--line)}
.grid tbody tr:hover td{background:var(--svx-hover-bg)}
html .grid tbody tr.sel td{background:var(--svx-sel-bg);font-weight:600;
  box-shadow:inset 0 1.5px 0 var(--ink),inset 0 -1.5px 0 var(--ink)}
html .grid tbody tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--ink),inset 0 1.5px 0 var(--ink),inset 0 -1.5px 0 var(--ink)}
html .grid tbody tr.sel td:last-child{box-shadow:inset -1.5px 0 0 var(--ink),inset 0 1.5px 0 var(--ink),inset 0 -1.5px 0 var(--ink)}
.grid .num,.grid .money,.grid .qty{font-variant-numeric:tabular-nums;font-size:13px}
.grid .num{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.grid tr.sel .num{color:var(--ink)}
.grid .money,.grid .qty{font-family:var(--font);text-align:right}
html .grid tbody tr.group td{font-weight:700;background:var(--panel);border-bottom:1.5px solid var(--ink);padding-top:8px}
html .grid tbody tr.total td{font-weight:700;background:var(--panel);border-top:2px solid var(--ink);border-bottom:0;
  position:sticky;bottom:0;z-index:1}
html .grid tbody tr.drill{cursor:context-menu}
/* отчёты/экраны: первая колонка закреплена — нужно для листов sheet на сотни колонок */
html :is(#rGrid,.scr-out .grid) :is(th,td):first-child{position:sticky;left:0;z-index:1;box-shadow:inset -1.5px 0 0 var(--line)}
html :is(#rGrid,.scr-out .grid) thead th:first-child{z-index:3}
html :is(#rGrid,.scr-out .grid) tbody tr.total td:first-child{z-index:2}
html :is(#rGrid,.scr-out .grid) tbody td:first-child{max-width:240px}
/* вложенные таблицы в карточке справочника (s_kp, s_nb, t_tr) */
html .cat-form-panel .grid{font-size:12px}
html .cat-form-panel .grid thead th{position:static;border-bottom-width:1.5px;padding:6px 8px}
html .cat-form-panel .grid tbody td{height:28px;padding:0 8px;white-space:normal}

/* Бейджи статусов: форма и иконка вместо цвета */
html .chip{height:22px;padding:0 9px 0 6px;gap:5px;border-radius:var(--svx-r-pill);font-size:11.5px;font-weight:600;
  background:transparent;color:var(--ink);border:1.5px solid var(--svx-ctl);white-space:nowrap}
html .chip::before{width:12px;height:12px;border-radius:0;background:currentColor;
  -webkit-mask:var(--svx-m) center/contain no-repeat;mask:var(--svx-m) center/contain no-repeat;--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%222.6%22 fill=%22%23000%22/%3E%3C/svg%3E")}
html .chip.posted{border-color:var(--ink);font-weight:700;--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M5.2 8.3 7.2 10.2 10.8 6%22/%3E%3C/svg%3E")}            /* проведён: сплошной, галочка, жирный */
html .chip.wait{border-style:dashed;border-color:var(--ink);--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.8V8l2.2 1.6%22/%3E%3C/svg%3E")}            /* ждёт: пунктир, часы */
html .chip.draft{color:var(--muted);border-style:dotted;font-weight:500;--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22 stroke-dasharray=%222.4 2.6%22/%3E%3C/svg%3E")} /* черновик: точки, пунктирный круг */
html .chip.other{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%222.6%22 fill=%22%23000%22/%3E%3C/svg%3E")}
html .chip.posted::before{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M5.2 8.3 7.2 10.2 10.8 6%22/%3E%3C/svg%3E")}
html .chip.wait::before{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.8V8l2.2 1.6%22/%3E%3C/svg%3E")}
html .chip.draft::before{--svx-m:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22 stroke-dasharray=%222.4 2.6%22/%3E%3C/svg%3E")}

/* ───────────── 9. Пагинация ───────────── */
.pager{gap:6px;font-family:var(--font);font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
html .pager > button{min-width:30px;height:30px;padding:0;border:var(--svx-stroke-ui) solid var(--svx-ctl);border-radius:50%;
  background:var(--svx-field);color:var(--ink);font-size:15px;line-height:1}
html .pager > button:hover:not(:disabled){border-color:var(--ink);background:var(--svx-hover-bg)}
html .pager > button:disabled{border-style:dashed;border-color:var(--line);background:transparent;color:var(--svx-light);opacity:1}
#pageInfo{color:var(--ink);font-weight:700;min-width:4.5em}
.pager-size{color:var(--muted);border-left:1px solid var(--line);padding-left:10px;margin-left:4px}

/* ───────────── 10. Отчёты / экраны ───────────── */
html .rep-search,html .scr-search{margin:2px 0 8px;width:100%}
html .rep-form,html .scr-form{gap:8px 12px}
html .rep-form .combo input{width:180px}
html .rep-meta{gap:4px 18px;padding:7px 16px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel)}
html .rep-meta b{color:var(--ink)}
html .rep-meta .warn,html .rep-meta .warn *{color:var(--ink);font-weight:700;font-style:normal}
html .rep-meta .warn::before{content:"";display:inline-block;width:12px;height:12px;margin-right:5px;vertical-align:-2px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.6v4.2%22/%3E%3Ccircle cx=%228%22 cy=%2211.3%22 r=%22.5%22 fill=%22%23000%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%228%22 cy=%228%22 r=%226.2%22/%3E%3Cpath d=%22M8 4.6v4.2%22/%3E%3Ccircle cx=%228%22 cy=%2211.3%22 r=%22.5%22 fill=%22%23000%22/%3E%3C/svg%3E") center/contain no-repeat}
html .rep-note{background:var(--panel);border-bottom:1px solid var(--line);box-shadow:inset 3px 0 0 var(--ink);padding:7px 16px;font-size:12.5px;color:var(--ink)}
html .rep-empty-state,html .scr-empty-state{padding:40px 32px;color:var(--muted);font-size:14px}
html .scr-h{font-size:13.5px;font-weight:700;margin:14px 16px 6px}
html .scr-cnt{padding:2px 16px;color:var(--muted)}
html .scr-pre{font:12px/1.5 var(--mono);color:var(--ink)}
html .scr-err{color:var(--ink);font-weight:700;border-left:3px solid var(--ink);padding-left:10px}
html .scr-img{border:1.5px solid var(--line);border-radius:10px}
html .scr-form .pname{color:var(--muted)}
html .scr-form button[data-write]:disabled{opacity:1}
html .scr-kv th{color:var(--muted);font-weight:600}

/* ───────────── 11. Справочники: карточка и дерево ───────────── */
html .cat-form-panel{width:360px;background:var(--panel);border-left:1px solid var(--line);padding:12px 16px 24px}
html .cat-form-panel > p:first-child{margin:2px 0 10px;font-size:15px;line-height:1.3}
html .cat-form-panel > p:first-child strong{font-weight:700}
html .cat-form-panel label{display:block;margin-top:9px;font-family:var(--mono);font-size:11px;color:var(--muted)}
html .cat-form-panel :is(input,select){width:100%;margin-top:3px;font-family:var(--font);border-radius:var(--svx-r-ctl);background:var(--svx-field)}
html .cat-form-panel .muted{color:var(--muted)}
html .cat-form-panel [id$="Box"]{border-top:1.5px solid var(--line)!important}
html #q{min-width:200px}
html .tree{padding:8px 16px 16px}
html .tree ul{list-style:none;margin:0;padding-left:0}
html .tree ul ul{margin-left:11px;padding-left:14px;border-left:1px dashed var(--svx-ctl)}
html .tree li{margin:1px 0;position:relative}
html .tree ul ul > li::before{content:"";position:absolute;left:-14px;top:14px;width:10px;border-top:1px dashed var(--svx-ctl)}
html .tree .node{display:inline-block;padding:4px 8px;border-radius:6px;border:1.5px solid transparent;line-height:1.3;cursor:pointer;
  font-variant-numeric:tabular-nums}
html .tree .node:hover{background:var(--svx-hover-bg);border-color:transparent}
html .tree .node.sel{background:var(--svx-sel-bg);border-color:var(--ink);font-weight:700}

/* ───────────── 12. Вкладки (/ops) ───────────── */
html .ops-tabs{gap:2px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line);overflow-x:auto}
html .ops-tabs button,html .ops-tabs button.ghost{min-height:38px;padding:0 12px;border:0;border-bottom:2px solid transparent;border-radius:0;
  background:transparent;color:var(--muted);font-weight:500;font-size:13.5px}
html .ops-tabs button:hover:not(.on){color:var(--ink);border-bottom-color:var(--svx-light);background:transparent}
html .ops-tabs button.on{color:var(--ink);font-weight:700;border-bottom-color:var(--ink);background:transparent}
html .ops-pane :is(input,select){padding:4px 10px;border-radius:var(--svx-r-ctl);background:var(--svx-field)}
html .sql-preview{font:12px/1.5 var(--mono);background:var(--panel);border-top:1px solid var(--line);color:var(--ink)}
html .rights-grid .head{color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}

/* ───────────── 13. Модалки, тост, бейдж записи ───────────── */
dialog{border:2px solid var(--ink);border-radius:var(--svx-r-card);background:var(--panel);color:var(--ink);box-shadow:none;width:min(460px,92vw);padding:0}
dialog::backdrop{background:var(--svx-backdrop)}
.dlg{padding:20px 20px 18px;gap:12px}
.dlg h2{font-size:17px;font-weight:700;letter-spacing:-.01em}
html #pickerList,html #drillList{list-style:none;margin:0;padding:4px;max-height:320px;overflow:auto;border:1.5px solid var(--line);border-radius:12px;background:var(--svx-field)}
html #pickerList button,html #drillList button{width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:8px 10px;color:var(--ink);border-bottom:0}
html #pickerList li + li,html #drillList li + li{border-top:1px solid var(--svx-row-line)}
html #pickerList button:hover:not(:disabled),html #drillList button:hover:not(:disabled){background:var(--svx-hover-bg)}
html #pickerList button:disabled{background:none;color:var(--muted)}
html #pickerList small{color:var(--faint);font-family:var(--mono)}
.dlg menu{gap:8px;padding:0}
/* оверлей выбора номенклатуры из catalogs.js (стили заданы inline → !important) */
html #nm2pick{background:var(--svx-backdrop)!important}
html #nm2pick > div{background:var(--panel)!important;border:2px solid var(--ink)!important;border-radius:var(--svx-r-card)!important;padding:18px 20px!important;gap:0}
html #nm2pick > div > div:first-child strong{font-size:17px}
html #nm2pick #nm2list{border:1.5px solid var(--line);border-radius:12px;padding:4px}
html #nm2pick .seg{align-self:flex-start}
html #nm2pick .node{border-radius:0!important;padding:7px 10px!important}
html #nm2pick .node + .node{border-top:1px solid var(--svx-row-line)}
html #nm2pick .node:hover{background:var(--svx-hover-bg)!important}
html #nm2pick .muted{color:var(--muted)}
#toast{background:var(--ink);color:var(--svx-on-ink);border-radius:var(--svx-r-pill);padding:9px 18px;font-size:13px;font-weight:600;box-shadow:none}
html #armWriteBadge{background:var(--panel)!important;color:var(--ink)!important;border:1.5px dashed var(--ink)!important;
  border-radius:999px!important;font:600 12px var(--font)!important;opacity:1!important;padding:4px 12px!important}

/* ───────────── 14. Карточка документа (doc.html) ───────────── */
.card-form{background:var(--panel);border-bottom:1px solid var(--line)}
.flags,.line-edit,.doc-actions{border-color:var(--line)}
.card-head,.flags,.line-edit,.doc-actions{padding:10px 16px}
.sum-label strong{font-family:var(--font);font-size:17px;font-weight:700;color:var(--ink)}

/* ───────────── 14b. Карточка товара s_nm (svx-card) — новые классы, см. INTEGRATION §Карточка ───────────── */
/* поиск товара над карточкой: поле + выпадающие подсказки (role=listbox) */
.svx-find{display:flex;align-items:center;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--panel)}
.svx-find > label{font-weight:600;color:var(--ink);white-space:nowrap}
.svx-find-in{position:relative;flex:1;max-width:620px;display:flex}
html .svx-find-in input[type="search"]{flex:1;min-height:34px;padding-left:34px;border-radius:var(--svx-r-pill)}
.svx-find-ico{position:absolute;left:13px;top:50%;width:14px;height:14px;margin-top:-7px;background:var(--muted);pointer-events:none;z-index:1;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%227%22 cy=%227%22 r=%224.6%22/%3E%3Cpath d=%22m10.4 10.4 3.6 3.6%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%227%22 cy=%227%22 r=%224.6%22/%3E%3Cpath d=%22m10.4 10.4 3.6 3.6%22/%3E%3C/svg%3E") center/contain no-repeat}
.svx-find-acts{margin-left:auto;display:flex;gap:6px}
.svx-suggest{position:absolute;z-index:30;top:calc(100% + 6px);left:0;width:100%;min-width:520px;
  margin:0;padding:6px;list-style:none;background:var(--panel);border:2px solid var(--ink);border-radius:12px}
.svx-suggest [role="option"]{display:grid;grid-template-columns:minmax(0,1fr) 56px 30px 64px;gap:12px;align-items:baseline;
  padding:7px 10px;border-radius:var(--svx-r-ctl);cursor:pointer;color:var(--ink)}
.svx-suggest [role="option"]:hover{background:var(--svx-hover-bg)}
.svx-suggest [role="option"][aria-selected="true"]{background:var(--svx-sel-bg);box-shadow:inset 3px 0 0 var(--ink);font-weight:600}
.svx-suggest b{font-weight:700;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
.svx-suggest .num{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:right}
.svx-suggest .money{text-align:right}
.svx-suggest .sub{color:var(--muted);font-size:12px}
.svx-suggest-foot{display:flex;justify-content:space-between;gap:12px;margin-top:4px;padding:7px 10px 3px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}

/* карточка */
.svx-card{flex:1;min-height:0;overflow:auto;background:var(--paper)}
.svx-card-head{display:flex;align-items:flex-end;gap:16px;padding:16px 20px 12px}
.svx-crumbs{margin:0 0 4px;font-size:12px;color:var(--muted)}
.svx-crumbs a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line)}
.svx-card-head h2{margin:0;font-size:20px;line-height:1.25;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.svx-card-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.svx-chip{display:inline-flex;align-items:center;gap:5px;min-height:22px;padding:0 9px;border:1px solid var(--line);border-radius:var(--svx-r-pill);
  font-size:12px;color:var(--muted);white-space:nowrap}
.svx-chip strong{color:var(--ink);font-weight:600}
.svx-chip.is-id{font-family:var(--mono);color:var(--ink);border-color:var(--ink)}
/* вкладки: role=tablist, активная — aria-selected (как .ops-tabs .on, но для карточки) */
.svx-tabs{position:sticky;top:0;z-index:5;display:flex;gap:2px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line);overflow-x:auto}
html .svx-tabs [role="tab"]{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 12px;border:0;border-bottom:2px solid transparent;
  border-radius:0;background:transparent;color:var(--muted);font:600 13px var(--font);cursor:pointer;white-space:nowrap}
html .svx-tabs [role="tab"]:hover{color:var(--ink);border-bottom-color:var(--svx-light)}
html .svx-tabs [role="tab"][aria-selected="true"]{color:var(--ink);font-weight:700;border-bottom-color:var(--ink)}
.svx-tabs .svx-n{min-width:18px;padding:0 5px;border:1px solid var(--line);border-radius:var(--svx-r-pill);font:600 11px/16px var(--mono);color:var(--muted);text-align:center}
.svx-tabs [aria-selected="true"] .svx-n{border-color:var(--ink);color:var(--ink)}
.svx-panel{padding:16px 20px 28px;max-width:1120px}
.svx-panel > p.svx-lead{margin:0 0 14px;color:var(--muted);font-size:12.5px;max-width:760px}

/* поля: подпись по-русски, техническое имя — .svx-key и title */
.svx-fields{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px 16px}
fieldset.svx-group{margin:0 0 18px;padding:0;border:0;min-width:0}
fieldset.svx-group > legend{padding:0;margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
html .svx-field{display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:4px;min-width:0;grid-column:span 2;margin:0}
.svx-field.is-wide{grid-column:1 / -1}
.svx-field.is-half{grid-column:span 3}
.svx-field.is-1{grid-column:span 1}
.svx-field > .svx-lbl{width:100%;justify-content:flex-start;display:flex;align-items:baseline;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink)}
.svx-key{font:500 10.5px var(--mono);color:var(--faint);cursor:help}
.svx-field input,.svx-field select{width:100%}
.svx-field .money,.svx-field input.qty{text-align:right;font-variant-numeric:tabular-nums}
.svx-field .svx-hint{font-size:12px;color:var(--muted)}
html .svx-field.is-check{flex-direction:row;align-items:center;gap:8px;grid-column:span 2;color:var(--ink);font-size:13px;padding-top:4px}
html .svx-field.is-wide input{min-height:36px;font-size:15px;font-weight:600}
/* счётчик символов x/N: обычный — muted; ≥90% — ink 700; превышение — пунктир как у ошибки (см. §6) */
.svx-count{margin-left:auto;font:500 11.5px var(--mono);color:var(--muted);white-space:nowrap}
.svx-count.is-near{color:var(--ink);font-weight:700}
.svx-count.is-over{color:var(--ink);font-weight:700;border-bottom:2px dashed var(--ink)}
.svx-ref{display:flex;gap:0;min-width:0}
.svx-ref input{flex:0 0 92px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;font-family:var(--mono)}
.svx-ref .svx-ref-name{flex:1;min-width:0;display:flex;align-items:center;padding:0 10px;border:var(--svx-stroke-ui) solid var(--line);border-left:0;
  border-radius:0;color:var(--ink);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html .combo > button.ghost{min-height:30px;border-left:0;border-radius:0 var(--svx-r-ctl) var(--svx-r-ctl) 0;padding:0 10px}
.svx-ref .svx-ref-name.is-empty{color:var(--faint)}

/* Комплектация */
.svx-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:0 0 12px}
.svx-bar .svx-field{grid-column:auto}
.svx-bar .svx-sp{flex:1}
html .svx-bom{width:100%;font-size:13px}
html .svx-bom thead th{position:static}
html .svx-bom td.svx-na{color:var(--faint);text-align:center}
html .svx-bom tbody tr.is-edit td{height:auto;padding:6px 8px;background:var(--svx-sel-bg);border-bottom:1.5px solid var(--ink);vertical-align:middle}
html .svx-bom tbody tr.is-edit td:first-child{box-shadow:inset 3px 0 0 var(--ink)}
html .svx-bom tbody tr.is-edit:hover td{background:var(--svx-sel-bg)}
html .svx-bom tr.is-edit input{width:100%;min-height:28px}
html .svx-bom tr.is-edit .combo{display:flex;width:100%}
html .svx-bom tr.is-edit .combo input{flex:1}
.svx-row-acts{display:flex;gap:6px;justify-content:flex-end}
html .svx-row-acts .ghost{min-height:26px;padding:0 10px;font-size:12px}
html .svx-bom tbody tr.is-pick td{background:var(--svx-sel-bg)}
html .svx-bom tbody td input[type="checkbox"]{margin:0 2px}
html #svxCard .svx-bom .bom-del{border-color:transparent}  /* #svxCard: правило app/§7 для .bom-del идёт через :is(#…) — id-специфичность */  /* тихо в покое, пунктир при наведении/фокусе строки */
html #svxCard .svx-bom tr:is(:hover,:focus-within) .bom-del{border-color:var(--ink)}
.svx-cost{position:sticky;bottom:0;z-index:2;background:var(--panel);display:grid;grid-template-columns:minmax(0,1fr) auto auto auto auto;gap:6px 24px;align-items:baseline;margin-top:0;padding:12px 12px 4px;
  border-top:2px solid var(--ink)}
.svx-cost .svx-cost-t{font-weight:700;color:var(--ink)}
.svx-cost .svx-cost-t small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.svx-cost .svx-cost-v > span{font-size:12px;color:var(--muted)}
.svx-cost .svx-cost-v > b{font-weight:700;text-align:right;min-width:72px}
.svx-cost .svx-cost-v{display:flex;flex-direction:column;gap:2px;align-items:flex-end}
.svx-cost .svx-cost-v.is-total > b{font-size:18px}

/* пустые состояния вкладок (Набор, Тарифы, Штрихкоды, Фото) */
.svx-empty{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px 16px;border:1.5px dashed var(--line);border-radius:12px;color:var(--muted);font-size:13px}
.svx-empty strong{color:var(--ink);font-size:14px}
.svx-add{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.svx-add .svx-field{grid-column:auto}
.svx-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
.svx-ean{display:flex;align-items:center;gap:16px;padding:14px 16px;border:1.5px solid var(--line);border-radius:12px}
.svx-ean code{font:600 18px var(--mono);letter-spacing:.06em;color:var(--ink)}
.svx-photo{display:flex;flex-direction:column;align-items:center;justify-content:center;width:320px;aspect-ratio:3/4;border:1.5px dashed var(--line);border-radius:12px;color:var(--muted);text-align:center;font-size:13px;padding:16px}
.svx-photo::before{content:"";display:block;width:36px;height:36px;margin:0 auto 10px;background:var(--svx-light);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%221.8%22 y=%223%22 width=%2212.4%22 height=%2210%22 rx=%222%22/%3E%3Ccircle cx=%226%22 cy=%227%22 r=%221.3%22/%3E%3Cpath d=%22m2.5 12 3.8-3.4 2.6 2.2 2-1.6 2.8 2.6%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%221.8%22 y=%223%22 width=%2212.4%22 height=%2210%22 rx=%222%22/%3E%3Ccircle cx=%226%22 cy=%227%22 r=%221.3%22/%3E%3Cpath d=%22m2.5 12 3.8-3.4 2.6 2.2 2-1.6 2.8 2.6%22/%3E%3C/svg%3E") center/contain no-repeat}
@media (max-width:900px){
  .svx-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
  .svx-field,.svx-field.is-half,html .svx-field.is-check{grid-column:span 1}
  .svx-split{grid-template-columns:minmax(0,1fr)}
  .svx-find{flex-wrap:wrap}
  .svx-cost{grid-template-columns:minmax(0,1fr) auto}
}

/* ───────────── 15. Адаптив ───────────── */
@media (max-width:1100px){
  .workspace{grid-template-columns:200px minmax(0,1fr)}
  html .cat-form-panel{width:300px}
}
@media (max-width:900px){
  html body,html .arm{height:auto;max-height:none;min-height:100%;overflow:auto}
  .workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .types{border-right:0;border-bottom:1px solid var(--line);max-height:38vh;padding:6px 8px}
  html .types h3{margin:10px 10px 4px}
  .titlebar{flex-wrap:wrap;gap:10px}
  h1{white-space:normal;font-size:15px}
  .lamps{order:3}
  html .cat-split{flex-direction:column}
  html .cat-form-panel{width:auto;border-left:0;border-top:2px solid var(--line);max-height:none}
  .grid-wrap{min-height:55vh}
  .actions{flex-direction:column;align-items:stretch}
  .defaults{flex-wrap:wrap}
}
@media (max-width:480px){
  html .brand{flex-wrap:wrap;row-gap:8px}
  html .mark{flex-basis:100%;border-right:0;padding-right:0}  /* знак отдельной строкой над заголовком */
  .toolbar,.filters,.actions{padding:8px 10px}
  html .seg{max-width:100%;overflow-x:auto}
  html :is(input[type="text"],input[type="search"],input[type="date"],input:not([type]),select){font-size:16px}  /* без зума на iOS */
  dialog{border-radius:16px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}
@media print{
  .chrome,.types,.status-bar,.toolbar,.filters,.actions{display:none!important}
  .grid thead th{position:static}
}
