/* Дизайн портала (токены, оболочка, компоненты) — общий для chz и chzsale.
   Вынесено из templates/base.html 29.09.2026 без изменений. */
:root{
  --bg:#eef1f5; --panel:#ffffff; --ink:#111827; --muted:#6b7280; --line:#e5e7eb;
  --brand:#111827; --accent:#f5d90a; --accent-ink:#111827;
  --blue:#2563eb; --sidebar:#0f172a; --sidebar-ink:#cbd5e1; --sidebar-active:#1e293b;
  /* семантические статусы (отдельно от брендового акцента) — §56 */
  --ok:#059669; --warn:#d97706; --danger:#dc2626; --info:#2563eb;
  /* шкала отступов (§63) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-6:24px; --sp-8:32px; --sp-12:48px;
  /* типографика (§64) */
  --fs-title:20px; --fs-section:15px; --fs-body:14px; --fs-secondary:13px; --fs-caption:12px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font:14px/1.5 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
.layout{display:grid;grid-template-columns:230px 1fr;height:100vh;overflow:hidden}
/* sidebar — статичный, футер всегда внизу */
aside{background:var(--sidebar);color:var(--sidebar-ink);display:flex;flex-direction:column;padding:14px 12px;gap:4px;height:100vh}
aside .brand{color:#fff;font-weight:700;font-size:15px;padding:8px 10px 14px;display:flex;gap:8px;align-items:center}
aside nav a{display:flex;align-items:center;gap:10px;color:var(--sidebar-ink);padding:9px 12px;border-radius:8px;font-weight:500}
aside nav a:hover{background:var(--sidebar-active);text-decoration:none;color:#fff}
aside nav a.active{background:var(--sidebar-active);color:#fff}
aside nav a.disabled{opacity:.45;pointer-events:none}
/* группы навигации (Apple HIG §4): заголовок-разделитель + сворачивание */
.nav-group{margin-bottom:2px}
.nav-label{width:100%;display:flex;align-items:center;justify-content:space-between;
  background:none;border:none;cursor:pointer;color:#64748b;font-weight:600;
  font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;
  padding:10px 12px 4px;font-family:inherit}
.nav-label:hover{color:#94a3b8}
.nav-chev{width:13px;height:13px;transition:transform .15s;opacity:.7}
.nav-group.collapsed .nav-chev{transform:rotate(-90deg)}
.nav-group.collapsed .nav-items{display:none}
.nav-items{display:flex;flex-direction:column;gap:2px}
aside .spacer{flex:1}
aside .env{font-size:11px;color:#64748b;padding:8px 12px;border-top:1px solid #1e293b;margin-top:8px}
/* main — прокручивается только контент, шапка и меню статичны */
.main{display:flex;flex-direction:column;min-width:0;height:100vh;overflow:hidden}
header.top{background:var(--panel);border-bottom:1px solid var(--line);padding:12px 22px;display:flex;align-items:center;gap:14px;flex:0 0 auto}
header.top h1{font-size:16px;margin:0;font-weight:650}
header.top .right{margin-left:auto;display:flex;align-items:center;gap:14px;color:var(--muted)}
.content{padding:20px 22px;min-width:0;flex:1 1 auto;overflow:auto}
/* режим встраивания во фрейм (?embed=1): без сайдбара и шапки */
body.embed .layout{grid-template-columns:1fr}
body.embed aside,body.embed header.top{display:none}
body.embed #topIssues{display:none}   /* плашку «Не заполнено» уже показывает страница-хозяин */
body.embed .content{padding:14px 16px}
/* во фрейме рабочего стола содержимое тянется на всю ширину рабочей области */
body.embed .content > div[style*="max-width"]{max-width:none !important}
body.embed .nf,body.embed .ni,body.embed .settings-scope{max-width:none !important}
/* подменю раздела «Настройки»: Подключение / Ключи / Лог */
.subnav{display:flex;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.subnav a{padding:9px 16px;color:var(--muted);font-weight:600;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;margin-bottom:-1px}
.subnav a:hover{color:var(--ink);text-decoration:none;background:var(--panel)}
.subnav a.active{color:var(--ink);background:var(--panel);border-color:var(--line)}
/* раздел «Настройки»: единый размер колонки и единый вид карточек/заголовков */
.settings-scope{max-width:940px}
.settings-scope .subnav{max-width:none}
.settings-scope .card{max-width:none !important;overflow-x:auto}
.settings-scope .card h3{font-size:14px !important;font-weight:650 !important}
.settings-scope .card>b:first-child,
.settings-scope .card>div:first-child>b:first-child{font-size:14px;font-weight:650}
/* components */
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.badge{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
/* бейджи-баннеры (display:block) переносят текст, чтобы не распирать карточку */
.badge[style*="display:block"]{white-space:normal}
.b-new{background:#eef2ff;color:#3730a3}.b-progress{background:#fff7ed;color:#9a3412}
.b-done{background:#ecfdf5;color:#065f46}.b-error{background:#fef2f2;color:#991b1b}
.b-gray{background:#f1f5f9;color:#475569}.b-warn{background:#fefce8;color:#854d0e}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.btn{background:var(--accent);color:var(--accent-ink);border:none;padding:8px 16px;border-radius:8px;font-weight:600;cursor:pointer}
.btn:hover{filter:brightness(.96)}
/* заблокированное действие: читаемый серый на белом (без «размытия» opacity) */
.btn:disabled,.btn.is-off,.btn[disabled]{background:#e2e8f0;color:#334155;cursor:not-allowed;filter:none;opacity:1}
.btn:disabled:hover,.btn.is-off:hover,.btn[disabled]:hover{filter:none}
.btn:disabled svg.lucide,.btn.is-off svg.lucide,.btn[disabled] svg.lucide{opacity:.9}
/* система кнопок (§60): одна первичная на экран, остальные — вторичные/третичные/опасные */
.btn-secondary{background:#e5e7eb;color:#374151}
.btn-secondary:hover{filter:brightness(.97)}
/* дозагрузка крипто-хвостов (_crypto_tails.html): строка-приёмник файла в стиле списков HIG */
.ct{margin-top:10px}
.ct-drop{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px dashed var(--line);border-radius:12px;background:var(--panel);cursor:pointer;transition:border-color .15s,background .15s}
.ct-drop:hover,.ct-drop:focus-visible,.ct-drop.over{border-color:#0071e3;background:color-mix(in srgb,#0071e3 5%,transparent);outline:none}
.ct.busy .ct-drop{opacity:.6;cursor:progress}
.ct-ic{flex:0 0 32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,#0071e3 12%,transparent);color:#0071e3}
.ct-ic svg{width:17px;height:17px}
.ct-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ct-t{font-size:13px;font-weight:600}
.ct-s{font-size:12px;color:var(--muted);line-height:1.35}
.ct-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:980px;background:color-mix(in srgb,#0071e3 12%,transparent);color:#0071e3;font-size:12.5px;font-weight:500;white-space:nowrap}
.ct-btn svg{width:14px;height:14px}
/* компактно — хвосты не нужны для нанесения: строка без рамки-приёмника и без пояснения */
.ct-compact .ct-drop{border-style:solid;border-color:transparent;padding:6px 0;background:none}
.ct-compact .ct-drop:hover,.ct-compact .ct-drop:focus-visible,.ct-compact .ct-drop.over{border-color:#0071e3;padding:6px 8px}
.ct-compact .ct-ic{flex-basis:24px;height:24px;border-radius:6px}
.ct-compact .ct-ic svg{width:14px;height:14px}
.ct-compact .ct-s{display:none}
.ct-compact .ct-t{font-weight:500}
.ct-compact .ct-btn{background:none;padding:4px 6px}
.ct-msg{display:flex;gap:6px;align-items:flex-start;font-size:12.5px;padding:0 4px}
.ct-msg:not(:empty){margin-top:6px}
.ct-msg svg{width:15px;height:15px;flex:0 0 auto;margin-top:1px}
.ct-ok{color:var(--ok)} .ct-err{color:var(--danger)} .ct-warn{color:var(--warn)} .ct-wait{color:var(--muted)}
.ct-wait svg{animation:ct-spin 1s linear infinite}
@keyframes ct-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ct-wait svg{animation:none}}
@media (hover:none){.ct-dnd{display:none}}
@media (max-width:560px){.ct-drop{flex-wrap:wrap;align-items:flex-start}.ct-txt{flex:1 1 calc(100% - 44px)}.ct-btn{margin-left:44px}}
/* блок «Продажа» (_sale.html) */
/* сегментированный выбор (Apple HIG «segmented control»): радиокнопки, выбранный сегмент приподнят */
.seg-ctl{display:inline-flex;flex-wrap:wrap;gap:2px;padding:2px;border-radius:9px;background:rgba(118,118,128,.12);max-width:100%}
.seg-ctl__i{position:relative;display:block}
.seg-ctl__i input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
.seg-ctl__i span{display:block;padding:5px 12px;border-radius:7px;font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap;transition:background .15s,box-shadow .15s}
.seg-ctl__i input:checked+span{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04);font-weight:600}
.seg-ctl__i input:focus-visible+span{outline:2px solid #0071e3;outline-offset:1px}
.seg-ctl__i input:disabled{cursor:default}
.seg-ctl__i input:disabled+span{opacity:.55}
.sale-way{margin-top:12px;display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.sale-way__t{font-size:12px;color:var(--muted)}
/* передача на портале: № и дата УПД, цены и НДС — по желанию (нужны только для «Сформировать УПД для 1С») */
.sale-card[data-way="transfer"] .sale-req{display:none}
.sale-way__d{margin:0;font-size:12px;color:var(--muted);max-width:640px;line-height:1.45}
.sale-msg{display:flex;gap:6px;align-items:flex-start;padding:5px 8px;border-radius:8px;margin-top:4px}
.sale-err{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger)}
.sale-warn{background:color-mix(in srgb,var(--warn) 12%,transparent);color:var(--warn)}
.sale-ok{background:color-mix(in srgb,var(--ok) 10%,transparent);color:var(--ok)}
.sale-lines th{font-weight:600;font-size:12px;color:var(--muted);text-align:center}
.sale-grid label{min-width:0;display:flex;flex-direction:column;gap:3px}
.sale-grid input,.sale-grid select{box-sizing:border-box;width:100%;max-width:100%;height:34px;margin:0;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;font-size:13px;line-height:normal}
/* одна высота у всех полей реквизитов продажи: дата Safari иначе выше текста, текст — ниже списка */
.sale-grid input[type=date]{-webkit-appearance:none;appearance:none;display:block}
.sale-grid input[type=date]::-webkit-date-and-time-value{text-align:left;margin:0}
.sale-lines td,.sale-lines th{padding:6px 6px}
.sale-lines select{max-width:150px}
.sale-lines input{max-width:96px;box-sizing:border-box}
.sale-hint{font-size:10.5px;color:var(--muted);margin-top:2px;white-space:nowrap}  /* откуда подставлено значение строки продажи */
.btn-tertiary{background:none;color:var(--blue)}
.btn-tertiary:hover{background:#eff6ff;filter:none}
.btn-danger{background:#fee2e2;color:#b91c1c}
/* доступность (§65): видимый фокус с клавиатуры, крупные hit-области у ссылок-иконок */
a:focus-visible,button:focus-visible,.btn:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}
/* скелетон загрузки (§58): вместо глобального спиннера — контурная заглушка */
.skeleton{background:linear-gradient(90deg,#eef1f5 25%,#e2e8f0 37%,#eef1f5 63%);
  background-size:400% 100%;animation:skel 1.4s ease infinite;border-radius:6px;color:transparent!important}
@keyframes skel{0%{background-position:100% 0}100%{background-position:-100% 0}}
/* уважать системную настройку «уменьшить движение» */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important;
    scroll-behavior:auto !important}
  .skeleton{animation:none}
}
select,input[type=file]{padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit}
/* Иконки Lucide — единственный источник иконок в интерфейсе */
svg.lucide{width:1em;height:1em;vertical-align:-0.14em;display:inline-block;flex:none;stroke-width:2}
aside nav a svg.lucide,aside .brand svg.lucide{width:17px;height:17px}
.btn svg.lucide{vertical-align:-0.15em}
/* переключатель ключа в шапке — гибкая ширина */
.hdr-search input::placeholder{color:var(--muted)}
/* поиск живёт только в шапке — держим его видимым; прячем лишь на узких телефонах */
@media (max-width:768px){ .hdr-search{display:none !important} }

/* ===== Карточка ошибки ЧЗ с подсветкой и решением ===== */
.errcard{border:1px solid;border-left-width:4px;border-radius:9px;padding:9px 12px;margin:6px 0;font-size:12.5px}
.errcard--error{background:#fef2f2;border-color:#fecaca;border-left-color:#dc2626;color:#7f1d1d}
.errcard--warning{background:#fffbeb;border-color:#fde68a;border-left-color:#d97706;color:#78350f}
.errcard--info{background:#eff6ff;border-color:#bfdbfe;border-left-color:#2563eb;color:#1e3a8a}
.errcard__head{display:flex;align-items:center;gap:7px;font-weight:700}
.errcard__head svg.lucide{flex:none}
.errcard__body{margin:4px 0 0;opacity:.92}
.errcard__fix{display:flex;gap:7px;align-items:flex-start;margin-top:7px;padding:7px 9px;
  background:rgba(255,255,255,.6);border-radius:7px}
.errcard__fix svg.lucide{flex:none;margin-top:2px;color:#b45309}
.errcard__fix b{font-weight:700}
.errcard__tech{margin-top:6px}
.errcard__tech summary{cursor:pointer;color:var(--muted);font-size:11.5px}
.errcard__tech .mono{white-space:pre-wrap;font-size:11px;margin-top:4px;opacity:.85}

/* ================= Адаптив под разные разрешения ================= */
/* большие мониторы — чуть шире боковая панель */
@media (min-width:1800px){ .layout{grid-template-columns:250px 1fr} }
/* компактный десктоп/маленькое окно — сужаем боковую панель и шапку */
@media (max-width:1280px){
  .layout{grid-template-columns:208px 1fr}
  header.top{padding:12px 16px;gap:10px}
}
/* планшет/узкое окно — боковая панель только иконками */
@media (max-width:1024px){
  .layout{grid-template-columns:60px 1fr}
  aside{padding:12px 6px;align-items:center}
  aside .brand{justify-content:center;padding:6px 0 12px}
  aside nav{width:100%}
  aside nav a{justify-content:center;gap:0;padding:11px 0}
  aside .lbl,aside .env{display:none}
  /* иконочный режим: скрыть заголовки групп, все пункты видимы */
  .nav-label{display:none}
  .nav-group{display:contents}
  .nav-items{display:contents !important}
}
/* мобильные/очень узкие — верхняя панель + вертикальная прокрутка страницы */
@media (max-width:720px){
  html,body{height:auto}
  .layout{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto;min-height:100dvh;overflow:visible}
  aside{flex-direction:row;height:auto;align-items:center;gap:2px;padding:6px 8px;overflow-x:auto}
  aside .brand,aside .spacer,aside .env{display:none}
  aside nav{display:flex;flex-direction:row;width:auto;gap:2px}
  aside nav a{padding:9px 12px}
  .main{height:auto;min-height:0;overflow:visible}
  header.top{flex-wrap:wrap;height:auto;padding:10px 14px;gap:8px}
  header.top h1{width:100%;font-size:15px}
  header.top .right{width:100%;flex-wrap:wrap;gap:8px 10px}
  .content{padding:14px;overflow:visible}
}

/* регистрация компании по ЭЦП и загрузка её истории (static/company_registration.js) */
.reg-wrap{max-width:720px}
.reg-msg{padding:9px 12px;border-radius:8px;font-size:13px;margin:12px 0}
.reg-info{background:color-mix(in srgb,var(--info) 10%,transparent);color:var(--info)}
.reg-ok{background:color-mix(in srgb,var(--ok) 10%,transparent);color:var(--ok)}
.reg-err{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger)}
.reg-dl{display:grid;grid-template-columns:minmax(140px,220px) 1fr;gap:6px 14px;margin:0}
.reg-dl dt{color:var(--muted);font-size:12px}.reg-dl dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.reg-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-top:14px}
.reg-actions textarea{width:100%;min-height:60px;border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit}
.reg-certs{width:100%;margin-top:10px;padding:8px;border:1px solid var(--line);border-radius:8px;font:inherit}
.imp-step{padding:10px 0;border-bottom:1px solid var(--line)}
.imp-top{display:flex;gap:8px;align-items:center}.imp-top svg{width:16px;height:16px}
.imp-st{margin-left:auto;color:var(--muted);font-size:12px}
.imp-bar{height:6px;background:var(--line);border-radius:4px;margin:8px 0 4px;overflow:hidden}
.imp-bar span{display:block;height:100%;background:var(--ok);transition:width .4s}
.imp-indet span{background:var(--info);animation:imp-move 1.4s ease-in-out infinite}
@keyframes imp-move{0%{margin-left:-30%}100%{margin-left:100%}}
.imp-paused .imp-bar span{background:var(--warn)}.imp-failed .imp-bar span{background:var(--danger)}
.imp-note{font-size:12px;color:var(--muted)}.imp-err{font-size:12px;color:var(--danger)}
.imp-summary{margin-top:12px;font-weight:600}
@media (max-width:600px){.reg-dl{grid-template-columns:1fr}}

/* Портал однотемный (светлый): правил под prefers-color-scheme: dark нет — в тёмной теме macOS
   они давали светлый текст на белых блоках (нечитаемо, 02.10.2026).
   Слот действия (_action_slot.html, ядро services/step_slot): единое место следующего действия —
   первым элементом активного блока, у левого края. Главная кнопка залита, вторичные — ghost
   правее, обратные/опасные — в «⋯». */
.btn.ghost{background:rgba(0,113,227,.10);color:#0060c0}
.btn.ghost:hover{background:rgba(0,113,227,.16);filter:none}
.act-slot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-start;margin:2px 0 10px}
.act-slot > .btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.act-slot .btn.ghost{font-weight:500}
.slot-why{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}
.slot-more{position:relative}
.slot-more > summary{list-style:none;padding:8px 10px;display:inline-flex;align-items:center}
.slot-more > summary::-webkit-details-marker{display:none}
.slot-menu{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:220px;display:flex;flex-direction:column;gap:4px;
  padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--card,#fff);box-shadow:0 8px 24px rgba(0,0,0,.12)}
.slot-menu .btn{justify-content:flex-start;text-align:left;width:100%;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.btn.slot-danger{color:#d70015}
/* кнопка со списком (Apple HIG: split / pull-down button): основная часть и стрелка — одна капсула,
   список — меню с заголовком группы; пункты — строки, опасные — красным внизу */
.split{display:inline-flex;align-items:stretch;position:relative}
.split > .btn{border-top-right-radius:0;border-bottom-right-radius:0;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.split .split-more{position:static;display:flex}
.split .split-arrow{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:1px;padding:0 9px;height:100%;cursor:pointer}
.split-solo .split-arrow{border-radius:8px;padding:8px 12px;gap:6px}
.split .split-arrow svg{width:14px;height:14px}
.split .slot-menu{left:0;right:auto}
.slot-menu{min-width:220px;width:max-content;max-width:min(420px,calc(100vw - 24px))}
.slot-menu.flip{left:auto;right:0}
.slot-menu .btn{white-space:nowrap}
.slot-menu .slot-menu-h:not(:first-child){margin-top:4px;border-top:1px solid var(--line);padding-top:8px}
.slot-menu{gap:0}
.slot-menu-h{padding:6px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.slot-menu .btn,.slot-menu .btn.ghost{background:transparent;color:var(--ink,#1d1d1f);font-weight:400;border-radius:8px;padding:8px 10px;box-shadow:none}
.slot-menu .btn:hover,.slot-menu .btn:focus-visible{background:rgba(0,113,227,.10);color:#0060c0;outline:none;filter:none}
.slot-menu .btn.slot-danger{color:#d70015}
.slot-menu .btn.slot-danger:hover{background:rgba(255,59,48,.10);color:#d70015}
.slot-menu .btn svg{width:16px;height:16px;flex:none}
/* шаги проверки (app/pure/delivery.steps): пройденные · текущий · закрытые; подсказка текущего — под линейкой */
.track{list-style:none;margin:var(--sp-4) 0 0;padding:0;display:flex;gap:var(--sp-2);flex-wrap:wrap}
.track-step{flex:1 1 120px;display:flex;align-items:center;gap:var(--sp-2);padding:8px 10px;border-radius:10px;
  background:#f8fafc;color:var(--muted);font-size:var(--fs-secondary);font-weight:600;min-width:0}
.track-step svg.lucide{flex:none;width:16px;height:16px}
.track-step span{line-height:1.25}
.track-step--done{background:#ecfdf5;color:#065f46}
.track-step--current{background:#eff6ff;color:#1e3a8a;box-shadow:inset 0 0 0 1.5px var(--info)}
.track-step--waiting{background:#fffbeb;color:#92400e;box-shadow:inset 0 0 0 1.5px var(--warn)}
.track-step--failed{background:#fef2f2;color:#991b1b;box-shadow:inset 0 0 0 1.5px var(--danger)}
.track-step--todo{opacity:.7}
@media (max-width:600px){.track{flex-wrap:nowrap;gap:6px}.track-step{flex:1 1 0;justify-content:center;padding:7px 4px}.track-step span{display:none}}
.step-hint{margin:var(--sp-3) 0 0;padding:10px 12px;border-radius:10px;background:#f8fafc;font-size:var(--fs-body);
  display:flex;gap:var(--sp-2);align-items:flex-start}
.step-hint svg.lucide{flex:none;width:18px;height:18px;margin-top:1px}
.step-hint b{display:block}
.step-hint small{display:block;color:var(--muted);font-size:var(--fs-caption);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.step-actions{margin-top:var(--sp-3)}
.reason-form{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-3)}
.reason-form textarea{width:100%;min-height:64px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit;resize:vertical}
/* модальное окно (sheet) — единый паттерн портала: карточка по центру поверх затемнения
   (раньше стили жили копиями в products/organizations; страницы с копией работают как прежде) */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:60;
  align-items:flex-start;justify-content:center;padding:6vh 16px;overflow:auto}
.modal-overlay.open{display:flex}
.modal-sheet{background:var(--panel);border-radius:14px;width:640px;max-width:96vw;margin:0;
  box-shadow:0 24px 70px rgba(0,0,0,.28);padding:22px 24px}
.modal-sheet h3{margin:0 0 4px;font-size:17px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-wrap:wrap}
/* список выбора внутри окна: строка — флажок, название, число справа */
.pick-list{list-style:none;margin:12px 0 0;padding:0;border:1px solid var(--line,#e5e7eb);border-radius:10px;
  max-height:46vh;overflow:auto}
.pick-list li+li{border-top:1px solid var(--line,#e5e7eb)}
.pick-list label{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;min-height:24px}
.pick-list .num{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}
.modal-actions .btn{display:inline-flex;align-items:center;gap:6px}
.modal-actions .btn:disabled{opacity:.45;cursor:default}

/* контроль после отправки (ТЗ §5, services/out_watch): состояние и статусы по системам */
.out-watch{margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:var(--fs-secondary)}
.out-watch__head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.out-watch__reason{margin-top:6px;color:#991b1b}
.out-watch__systems{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:8px 0 4px}
.out-watch__systems dt{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.out-watch__systems dd{margin:2px 0 0;font-weight:600}
.out-watch__systems dd small{display:block;font-weight:400;color:var(--muted);font-size:11.5px}
.out-watch__close{margin-top:8px}.out-watch__close>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.out-watch__close>summary::-webkit-details-marker{display:none}
/* Формы по Apple HIG (карточка организации, общие настройки): однострочные поля и списки — одной
   высоты, одинаковые отступы и скругления; поле во всю ширину своей ячейки */
.form-hig input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]):not([type=range]),
.form-hig select{height:34px;box-sizing:border-box;padding:6px 10px;border:1px solid var(--line);border-radius:8px;
  background:#fff;font:inherit;font-size:14px;line-height:20px;max-width:100%}
.form-hig textarea{box-sizing:border-box;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:14px}
.form-hig input:disabled,.form-hig select:disabled,.form-hig textarea:disabled{background:#f5f5f7;color:#6e6e73}
.form-hig label.muted{display:block;margin-bottom:4px;font-size:12px}
.form-hig .btn{white-space:nowrap;min-height:34px;box-sizing:border-box}
/* статус выполнения по инвойсу (модуль ядра invoice_status, макрос _inv_progress.html):
   полоса на карточке (ipb-line) и в шапке инвойса (ipb-head); цвет — по состоянию */
.ipb{--ipb:#0071e3;display:flex;align-items:center;gap:8px;min-width:0;font-size:12px;color:var(--muted)}
.ipb[hidden]{display:none}
.ipb[data-state="ok"]{--ipb:#34c759}
.ipb[data-state="warn"]{--ipb:#ff9f0a}
.ipb[data-state="error"]{--ipb:#ff3b30}
.ipb-bar{position:relative;flex:1 1 auto;height:6px;border-radius:3px;background:color-mix(in srgb,var(--ipb) 16%,transparent);overflow:hidden}
.ipb-fill{display:block;height:100%;width:0;background:var(--ipb);border-radius:inherit;transition:width .6s ease,background-color .3s}
.ipb.ind .ipb-fill{width:35% !important;animation:ipb-run 1.4s ease-in-out infinite}
@keyframes ipb-run{0%{transform:translateX(-100%)}100%{transform:translateX(290%)}}
.ipb-txt{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ipb-txt b{color:var(--ink);font-weight:600}
.ipb-line{display:block;height:3px}
.ipb-line .ipb-bar{display:block;height:3px}
.ipb-line .ipb-txt{display:none}
.ipb-head{margin:0 0 12px;padding:8px 10px;border-radius:9px;background:color-mix(in srgb,var(--ipb) 7%,#fff)}
.ipb-head .ipb-bar{flex:0 0 200px}
.ipb-ic{display:inline-flex;flex:none;color:var(--ipb)}
.ipb-ic svg{width:15px;height:15px}
@media (max-width:640px){.ipb-head{flex-wrap:wrap}.ipb-head .ipb-bar{flex:1 1 100%;order:2}}
.ipb-cell{margin-top:6px;max-width:220px}

/* ---------- календарь выбора даты (static/datepicker.js): всплывающая панель в стиле Apple ---------- */
.dp-orig{display:none!important}
.dp-field{position:relative;display:inline-block;vertical-align:middle;max-width:100%;min-width:120px}
.dp-field>.dp-input{width:100%;max-width:100%;padding-right:32px!important;font-variant-numeric:tabular-nums}
.dp-input.dp-bad{border-color:var(--danger)!important;box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.dp-btn{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:0;background:none;color:#8e8e93;
  padding:4px;border-radius:6px;cursor:pointer;display:flex;line-height:0}
.dp-btn:hover:not(:disabled){color:#0071e3;background:rgba(0,113,227,.08)}
.dp-btn:disabled{opacity:.4;cursor:default}
.dp-pop{position:fixed;z-index:10000;width:276px;padding:12px 12px 8px;border-radius:14px;
  background:rgba(255,255,255,.97);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
  border:1px solid rgba(0,0,0,.08);box-shadow:0 12px 32px rgba(0,0,0,.16),0 2px 6px rgba(0,0,0,.06);
  font:13px/1.2 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,system-ui,sans-serif;color:#1d1d1f;
  user-select:none;-webkit-user-select:none}
.dp-pop[hidden]{display:none}
.dp-head{display:flex;align-items:center;gap:2px;margin:0 2px 8px 6px}
.dp-title{flex:1;font-weight:600;font-size:15px;letter-spacing:-.01em}
.dp-nav{border:0;background:none;color:#0071e3;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;
  justify-content:center;cursor:pointer}
.dp-nav:hover{background:rgba(0,113,227,.08)}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px;justify-items:center}
.dp-wd{font-size:11px;font-weight:600;color:#8e8e93;height:22px;line-height:22px}
.dp-wd.dp-we{color:#aeaeb2}
.dp-day{width:34px;height:34px;border:0;border-radius:50%;background:none;font:inherit;font-size:14px;color:#1d1d1f;
  cursor:pointer;font-variant-numeric:tabular-nums;padding:0;transition:background-color .12s}
.dp-day:hover{background:rgba(0,0,0,.05)}
.dp-day.dp-out{color:#c7c7cc}
.dp-day.dp-today{color:#0071e3;font-weight:600}
.dp-day.dp-sel,.dp-day.dp-sel:hover{background:#0071e3;color:#fff;font-weight:600}
.dp-day:focus-visible{outline:2px solid #0071e3;outline-offset:1px}
.dp-day:disabled{color:#d1d1d6;cursor:default;background:none}
.dp-foot{display:flex;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid rgba(0,0,0,.06)}
.dp-link{border:0;background:none;color:#0071e3;font:inherit;font-size:13px;padding:5px 8px;border-radius:7px;cursor:pointer}
.dp-link:hover{background:rgba(0,113,227,.08)}
@media (max-width:560px){.dp-pop{width:calc(100vw - 32px);max-width:320px}.dp-day{width:38px;height:38px}}

/* УПД из 1С в блоке «Продажа»: зона перетаскивания (static/sale.js saleSheet) и подсветка заполненного */
.sale-drop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin:0 0 12px;border:1.5px dashed rgba(0,0,0,.16);
  border-radius:12px;background:#fafafb;color:var(--muted);font-size:12.5px;transition:border-color .15s,background-color .15s}
.sale-drop>svg{color:#0071e3;flex:none}
.sale-drop>span{flex:1;min-width:200px}
.sale-drop__btn{cursor:pointer}
.sale-drop--over{border-color:#0071e3;background:rgba(0,113,227,.06);color:#0071e3}
.sale-sheet-res{margin:-4px 0 12px;font-size:12.5px}
.sale-sheet-res .sale-msg+.sale-msg{margin-top:4px}
.sale-filled{background:rgba(0,113,227,.07)!important;border-color:rgba(0,113,227,.5)!important}
.sale-lines .sale-sum{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.sale-lines tfoot td{border-top:1px solid var(--line);padding-top:8px}

/* документы ЭДО продажи (_edo_docs.html): список в стиле Apple — строка документа, статус, действия */
.edo-docs{margin-top:12px;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.edo-docs__head{display:flex;align-items:center;gap:6px;padding:9px 12px;font-size:13px;font-weight:600;background:#fafafb;border-bottom:1px solid var(--line)}
.edo-docs__head svg{color:#0071e3}
.edo-docs__all{margin-left:auto;font-weight:400;font-size:12px}
.edo-doc{display:flex;align-items:center;gap:10px;padding:10px 12px;flex-wrap:wrap}
.edo-doc+.edo-doc{border-top:1px solid #f0f1f3}
.edo-doc__ic{width:30px;height:30px;border-radius:8px;background:rgba(0,113,227,.08);color:#0071e3;display:flex;align-items:center;justify-content:center;flex:none}
.edo-doc__main{flex:1;min-width:180px}
.edo-doc__title{font-size:13.5px;font-weight:600}
.edo-doc__meta{font-size:12px;color:var(--muted);margin-top:1px}
.edo-doc__acts{display:flex;gap:6px;flex-wrap:wrap}
/* раздел «ЭДО»: все документы компании (edo.html) */
.edo-reg__bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.edo-reg__seg{text-decoration:none!important;color:inherit}
.edo-reg__seg.on span{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:600}
.edo-reg__search{margin-left:auto;position:relative;display:flex;align-items:center}
.edo-reg__search svg{position:absolute;left:9px;width:15px;height:15px;color:#8e8e93;pointer-events:none}
.edo-reg__search input{height:32px;width:240px;max-width:100%;padding:0 10px 0 30px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px}
.edo-reg__list{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.edo-reg__row{display:flex;align-items:center;gap:10px;padding:9px 12px;flex-wrap:wrap}
.edo-reg__row+.edo-reg__row{border-top:1px solid #f0f1f3}
.edo-reg__dir{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.edo-reg__dir.inbound{background:rgba(52,199,89,.12);color:#248a3d}
.edo-reg__dir.outbound{background:rgba(0,113,227,.1);color:#0071e3}
.edo-reg__main{flex:1;min-width:200px}
.edo-reg__title{font-size:13.5px;font-weight:600}
.edo-reg__meta{font-size:12px;color:var(--muted)}
.edo-reg__inv{font-size:12px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.edo-reg__acts{display:flex;gap:6px}
@media (max-width:560px){.edo-reg__search{margin-left:0;width:100%}.edo-reg__search input{width:100%}}
.edo-reg__seg span span{display:inline;padding:0;background:none!important;box-shadow:none!important;font-weight:400}
/* маршрут УПД (sale.js saleRoute): откуда — куда, строки выбора в стиле списков Apple */
.route-dlg{max-width:520px;width:calc(100vw - 32px)}
.route-sec{font-size:12px;font-weight:600;color:var(--muted);text-transform:none;margin:10px 0 4px}
.route-list{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.route-opt{display:grid;grid-template-columns:20px 1fr;column-gap:8px;padding:9px 12px;cursor:pointer;align-items:start}
.route-opt+.route-opt{border-top:1px solid #f0f1f3}
.route-opt input[type=radio]{margin:3px 0 0}
.route-opt__t{font-size:13.5px;font-weight:600}
.route-opt__d{grid-column:2;font-size:12px;color:var(--muted)}
.route-opt.off{opacity:.55;cursor:default}
.route-opt:has(input:checked){background:rgba(0,113,227,.06)}
/* окно-лист (sale.js: маршрут УПД, УПДи, УКД) — в стиле Apple */
.sheet-dlg{border:none;border-radius:14px;padding:18px 20px;box-shadow:0 20px 50px rgba(0,0,0,.22),0 2px 8px rgba(0,0,0,.08);
  max-height:calc(100vh - 48px);overflow:auto;font-size:13.5px}
.sheet-dlg::backdrop{background:rgba(0,0,0,.28);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.route-help,.route-more{margin-top:6px;font-size:12px}
.route-help summary,.route-more summary{cursor:pointer;color:#0071e3;list-style:none}
.route-help summary::-webkit-details-marker,.route-more summary::-webkit-details-marker{display:none}
.route-help ol{margin:6px 0 4px;padding-left:18px;color:var(--ink)}
.route-help li{margin:2px 0}
.route-more{margin-top:10px}
.route-more .route-opt{border:1px solid var(--line);border-radius:12px;margin-top:6px}
.route-sum{font-size:15px;font-weight:600;margin:0 0 12px}
.route-sum span{display:block;font-size:12.5px;font-weight:400;color:var(--muted);margin-top:2px}
.sale-msg.sale-wait{background:rgba(255,159,10,.1);color:#8a5300}
.route-roam{display:inline-block;font-size:11px;font-weight:500;padding:1px 7px;border-radius:7px;margin-left:6px;background:rgba(255,159,10,.14);color:#8a5300}
.route-roam.on{background:rgba(52,199,89,.14);color:#1f7a37}

/* Э1: переключатель компании в шапке (человек в нескольких компаниях) */
.co-switch{position:relative;display:inline-block}
.co-switch>summary{list-style:none;cursor:pointer}
.co-switch>summary::-webkit-details-marker{display:none}
.co-switch .co-list{position:absolute;right:0;top:calc(100% + 6px);z-index:50;min-width:240px;max-width:min(360px,90vw);
  background:var(--card,#fff);border:1px solid var(--line,#e5e7eb);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.15);padding:6px}
.co-switch .co-list form{margin:0}
.co-switch .co-list button{display:block;width:100%;text-align:left;padding:8px 10px;border:0;border-radius:7px;
  background:transparent;color:var(--ink,#111827);font:inherit;cursor:pointer}
.co-switch .co-list button:hover:not([disabled]){background:var(--hover,#f3f4f6)}
.co-switch .co-list button[disabled]{font-weight:600;cursor:default;opacity:.7}
