/* Страницы и окна записей «Пульт · Лампа»: вход, Админка, запуски, конструктор ТЗ, инструкция InSales, проверка товаров, возвраты, окно товара, Акции, Главная.
   Подключается после app.css; общие части (таблицы, пилюли, фильтры, окна, шапка) — там. Одинаковый селектор в одном @media не объявляется в обоих файлах (tests/test_web_css.py). */
/* ===== Страницы, часть 1: вход, исследования, Админка, запуски, конструктор ТЗ, инструкция InSales, проверка товаров, возвраты, окно товара, Акции ===== */
/* ----- вход (2.148, В11): всегда новый вид; лист на фоне, лампа у названия ----- */
body.login { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: var(--fog); }
.login-box { background: var(--sheet); padding: 24px; border: 1px solid var(--line); display: flex; flex-direction: column; gap: 12px; width: min(340px, 92vw); border-radius: var(--radius-m); box-shadow: 0 1px 2px color-mix(in srgb, var(--ink) 10%, transparent); }
.login-box label { display: flex; flex-direction: column; gap: 4px; }
.login-form { display: flex; flex-direction: column; gap: 12px; }
.login-box h1 { margin: 0; }
.login-box .notice { margin: 0; padding: 10px 12px; border-radius: var(--radius-s); line-height: 1.4; }
.login-box .notice.good { background: var(--drr-good); }
.login-box .notice.error { background: var(--drr-bad); }
a.button.login-yandex { display: flex; align-items: center; justify-content: center; min-height: 44px; font-weight: 600; text-align: center; }
.login-hint { margin: -6px 0 0; text-align: center; }
.password-login { border-top: 1px solid var(--line); padding-top: 12px; }
.password-login > summary { cursor: pointer; list-style: none; text-align: center; color: var(--cobalt); padding: 8px;
  border-radius: var(--radius-s); }
.password-login > summary::-webkit-details-marker { display: none; }
.password-login > summary:hover { background: var(--cobalt-soft); }
.password-login[open] > summary { margin-bottom: 12px; color: var(--muted); }
mark.hit { background: var(--cobalt-soft); color: inherit; border-radius: 2px; box-shadow: inset 0 -2px 0 var(--amber); }
.diff .del { background: color-mix(in srgb, var(--minus) 15%, transparent); text-decoration: line-through; }
.diff .ins { background: color-mix(in srgb, var(--plus) 15%, transparent); }
.terms { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.terms span { border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; font-size: 13px; }
.terms span.ours { border-color: var(--plus); color: var(--plus); }
.tabulator-row.ours-row { box-shadow: inset 4px 0 0 var(--cobalt); font-weight: 500; }
.family-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px; align-items: end; }
/* 2.126: справочная строка «в т.ч.» под статьёй (P&L) — с отступом, приглушённая, в итоги не входит */
table.plain tr.sub-row td { color: var(--muted); font-size: 13px; }
table.plain tr.sub-row td:first-child { padding-left: 24px; }
table.plain tr.sub-row td span { white-space: nowrap; }
@media (max-width: 720px) {
  table.plain tr.sub-row td { white-space: normal; }
  table.plain tr.sub-row td:first-child { padding-left: 16px; }
}
/* сверка P&L: длинные подписи и суммы «a / b / c» переносятся, а не прячут значение за прокруткой карточки */
@media (max-width: 720px) {
  table.reconcile td:not(:first-child) { white-space: normal; }
}
#tab-research .toolbar label { display: inline; }
/* Новости Ozon (главная) */
.news-item { display: flex; flex-direction: column; gap: 6px; }
.news-meta { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: baseline; }
.news-text { white-space: pre-wrap; max-width: 90ch; }
.news-text.clamp { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.news-item .actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.news-item .news-expand { align-self: flex-start; }
/* «Исследовать вручную» */
.manual-steps { padding-left: 20px; display: flex; flex-direction: column; gap: 12px; }
.manual-steps textarea { min-height: 140px; margin-top: 6px; font-size: 13px; }
.manual-steps details summary { cursor: pointer; color: var(--cobalt); }
.manual-result table.plain td:nth-child(2), .manual-result table.plain th:nth-child(2) { text-align: left; }
/* /password: форма и «Сеансы входа» — по одному левому краю, кнопка под таблицей с отступом */
main > .login-box { margin: 16px 0 24px; }
.stack-form { display: grid; gap: 8px; }
.stack-form input, .stack-form select, .stack-form textarea { width: 100%; box-sizing: border-box; }
.stack-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); }
.stack-form .pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
/* Администрирование «Роли» (2.123): поиск и «Добавить роль» (кнопка шапки) в списке, название, права роли по разделам меню — две колонки
   карточек, на телефоне одна; пояснение действия справа от подписи, на телефоне — под ней */
.ad-find { width: 100%; margin-bottom: 4px; }
.ad-back { display: none; align-self: flex-start; }
@media (max-width: 900px) {
  .ad-back { display: inline-block; }
}
.ad-head .card-head { justify-content: space-between; align-items: flex-start; }
.ad-head .card-head > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ad-head .card-head h2 { overflow-wrap: anywhere; }
.ad-name { display: flex; gap: 8px 12px; align-items: flex-end; flex-wrap: wrap; }
.ad-name .tz-field { flex: 1 1 180px; }
.tz-strip.ad-sum { margin: 0 0 12px; }
.ad-people { margin: 0; }
/* «Люди» отдела: строка списка — имя и пометки слева, «Убрать» (маленькая кнопка) или подсказка справа */
.ad-mrow { display: flex; align-items: center; justify-content: space-between; gap: 6px 12px; flex-wrap: wrap; }
.ad-mname { min-width: 0; overflow-wrap: anywhere; }
.ad-mbtn { padding: 2px 10px; font-size: 13px; }
.ad-mrow > .ad-note-p { margin-left: auto; }
/* «Личное» → «Отдел»: панель действий вкладки и шапка с подписями сверху в одной строке */
.dp-bar { display: flex; align-items: flex-end; gap: 8px 12px; flex-wrap: wrap; }
.dp-bar .tz-field { flex: 0 1 220px; min-width: 150px; }
.dp-bar .dp-acts { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
/* «Люди»: карточка заявки и «Добавить человека» — сведения под заголовком, строка кнопок формы, галочка под полями */
.ad-head .ad-kv { margin-top: 12px; }
.ad-head > p.muted { margin: 8px 0 0; }
.ad-acts { display: flex; gap: 8px 12px; align-items: center; flex-wrap: wrap; margin-top: 12px; }
.ad-check { display: flex; gap: 8px; align-items: center; margin-top: 10px; }
.ad-note-p { font-size: 13px; }
#p-card .tz-sec > p { margin: 0; }
#p-card .tz-sec > .ad-acts { margin-top: 0; }
#p-card .tz-sec > div:empty { display: none; }
/* пустые места полос (вопрос, итог) не добавляют зазор раздела */
/* карточка человека: «активен» — в строке с ролью, команда нового ключа — моноширинным полем во всю ширину */
.ad-name > .ad-check { margin: 0 0 8px; }
#p-card details.tz-sec.card > summary ~ * + * { margin-top: 12px; }
/* свёрнутый раздел — тот же зазор, что gap у section.tz-sec */
.ad-cmd { min-height: 0; margin-top: 8px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; }
.ad-perms { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
.ad-perms .ad-gh { grid-column: 1 / -1; margin: 8px 0 0; }
.ad-perm { min-width: 0; border: 1px solid var(--line); border-radius: var(--radius-m); padding: 10px 12px; }
.ad-sect { display: flex; gap: 8px; align-items: flex-start; font-weight: 600; }
.ad-act { display: flex; gap: 8px; align-items: flex-start; padding: 6px 0 0 26px; font-size: 13.5px; }
.ad-act.off { color: var(--muted); }
.ad-perm input[type=checkbox] { flex: none; margin: 2px 0 0; padding: 0; width: 16px; height: 16px; accent-color: var(--cobalt); }
.ad-t { display: flex; flex-direction: column; min-width: 0; }
.ad-l { display: flex; flex-direction: column; gap: 1px; }   /* справка — строкой под названием (Ц2.5) */
.ad-hint { font-size: 12px; line-height: 1.35; color: var(--muted); }
.ad-sect .ad-hint { font-weight: 400; }
.ad-note { font-size: 12px; color: var(--amber); }
.ad-none { margin: 2px 0 0 26px; font-size: 12px; color: var(--muted); }
.ad-perm .tz-strip { margin: 6px 0 0 18px; padding: 6px 8px; }
.ad-perm .tz-strip > .ad-act { padding: 0; }
.ad-perm .ad-gone { margin-left: 0; }
/* «Раздел снят — сняты также» — во всю ширину карточки раздела */
@media (max-width: 720px) {
  .ad-perms { grid-template-columns: minmax(0, 1fr); }
  .stack-form .pair { grid-template-columns: 1fr; }
}
/* план 7.2: запуски и карточка для заведения */
.launch-admin { margin-top: 16px; }
.launch-admin summary { cursor: pointer; margin-bottom: 8px; }
/* план 7.3: «Старый формат» ТЗ на странице запуска (с 7.11 — «ТЗ как в документе») */
#old-format .copy-cell { visibility: hidden; padding: 0 6px; font-size: .85em; }
#old-format td:hover .copy-cell, #old-format p:hover .copy-cell, #old-format .copy-cell:focus { visibility: visible; }
@media (hover: none) {
  #old-format .copy-cell { visibility: visible; }
}
#old-format .pre { white-space: pre-wrap; max-width: 80ch; }
#old-format > p { overflow-wrap: anywhere; }
#old-format h3 { overflow-wrap: anywhere; margin-top: 20px; }
#old-format table.old-format td, #old-format table.old-format th { vertical-align: top; text-align: left; white-space: normal;
  overflow-wrap: break-word; position: relative; padding-left: 5px; padding-right: 5px; }
#old-format table.old-format .copy-cell { position: absolute; top: 4px; right: 2px; padding: 0 4px; background: var(--sheet); }
@media (hover: none) {
  #old-format table.old-format .copy-cell { position: static; display: block; margin-top: 4px; }
}
#old-format table.old-format.measuring { width: max-content; table-layout: auto; }
#old-format table.old-format.measuring td { white-space: nowrap; }
#old-format table.old-format.measuring .copy-cell, #old-format table.old-format.measuring .col-resize { display: none; }
#old-format .col-resize { position: absolute; top: 0; right: -4px; width: 8px; height: 100%; cursor: col-resize; z-index: 1;
  touch-action: none; }
#old-format .col-resize:hover, #old-format .col-resize:focus-visible { background: var(--line); outline: none; }
/* конструктор ТЗ (7.4, 7.10 §1): шапка, список товаров, карточка по разделам, «Готовность»; цвета — только переменные.
   `.tz-*` — общие классы раскладки 7.10: конструктор, страница запуска, окно товара проверки (7.11) */
.tz-top { display: flex; gap: 0 var(--gap); align-items: flex-start; flex-wrap: wrap; }
.tz-top > div:first-child { flex: 1 1 320px; min-width: 0; }
.tz-top h1 { margin-bottom: 4px; }
.tz-top p { margin: 0 0 12px; }
.tz-top .toolbar { margin-bottom: 12px; }
.tz-errors { color: var(--minus); border-color: var(--minus); font-weight: 600; }
/* «Ошибок: N» рядом с «Отправить» (2.148, В1) */
/* три колонки; на средней ширине «Готовность» и «Подсказки» — под карточкой (список во всю высоту слева), на узкой — всё в столбик */
.tz-layout { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr) minmax(260px, 330px); gap: var(--gap); align-items: start; }
.tz-list { min-width: 0; margin: 0; background: var(--sheet); border: 1px solid var(--line); border-radius: var(--radius-m); padding: 14px 16px; }
.tz-card { min-width: 0; display: flex; flex-direction: column; gap: var(--gap); }
.tz-side { min-width: 0; display: flex; flex-direction: column; gap: var(--gap);
  position: sticky; top: 12px; max-height: calc(100vh - 24px); overflow-y: auto; }
.tz-card > .card { margin: 0; }
.tz-side > .card { margin: 0; flex: none; overflow: visible; }
details.card.tz-sec { background: var(--sheet); border: 1px solid var(--line); border-radius: var(--radius-m); padding: 14px 16px; }
@media (max-width: 1240px) {
  .tz-layout { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); }
  .tz-list { grid-row: span 2; }
  .tz-side { grid-column: 2; position: static; max-height: none; overflow: visible; }
}
/* раскрытая рейка (≥1280, data-rail) отнимает от холста ещё 168 px: пороги окна сдвигаются на столько же (1240 → 1408) */
@media (max-width: 1408px) {
  :root[data-rail="open"] .tz-layout { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); }
  :root[data-rail="open"] .tz-list { grid-row: span 2; }
  :root[data-rail="open"] .tz-side { grid-column: 2; position: static; max-height: none; overflow: visible; }
}
@media (max-width: 900px) {
  .tz-layout { grid-template-columns: minmax(0, 1fr); }
  .tz-list { grid-row: auto; }
  .tz-side { grid-column: auto; }
}
.tz-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tz-grow { flex: 1 1 auto; min-width: 0; }
.tz-sec-h { display: flex; gap: 4px 10px; align-items: baseline; justify-content: space-between; flex-wrap: wrap; margin-bottom: 12px; }
.tz-sec-h h2 { margin: 0; }
.tz-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* список товаров */
.tz-list h2 { margin: 0; font-size: 16px; }
#tz-find { width: 100%; margin-top: 10px; }
#tz-pick-hint { margin: 6px 0 0; }
.tz-group-h { font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; margin: 14px 0 4px; }
.tz-item { display: flex; gap: 8px; align-items: flex-start; padding: 6px 8px; border-radius: var(--radius-s); cursor: pointer; }
.tz-item:hover { background: var(--row-alt); }
.tz-item.on { background: var(--cobalt-soft); }
.tz-pick { width: 16px; height: 16px; margin: 3px 0 0; padding: 0; flex: none; accent-color: var(--cobalt); }
.tz-item-b { flex: 1 1 auto; min-width: 0; border: 0; background: none; padding: 0; text-align: left; display: flex; flex-direction: column; }
.tz-item-b .t { font-size: 14px; line-height: 1.3; overflow-wrap: anywhere; }
.tz-item-b .t.mono { font-family: var(--rt-mono, ui-monospace, Menlo, monospace); font-size: 13px; }
.tz-item-b .s { font-size: 12px; color: var(--muted); overflow-wrap: anywhere; }
.tz-foreign { padding: 6px 8px; border-radius: var(--radius-s); }
.tz-foreign summary { cursor: pointer; display: flex; flex-direction: column; list-style: none; position: relative; padding-left: 16px; }
.tz-foreign summary::-webkit-details-marker { display: none; }
.tz-foreign summary::before { content: '▸'; position: absolute; left: 0; top: 0; color: var(--muted); }
/* flex убирает свой маркер */
.tz-foreign[open] > summary::before { content: '▾'; }
.tz-foreign summary .t { font-size: 14px; line-height: 1.3; overflow-wrap: anywhere; }
.tz-foreign summary .s { font-size: 12px; color: var(--muted); overflow-wrap: anywhere; }
.tz-foreign[open] { background: var(--row-alt); }
.tz-st { margin-left: auto; font-size: 12px; white-space: nowrap; padding-top: 1px; }
.tz-st.bad { font-weight: 600; }
.tz-more { font-size: 13px; margin-left: 32px; }
.tz-bar { position: sticky; bottom: 0; margin-top: 12px; padding: 10px 12px; border-radius: var(--radius-s); background: var(--cobalt-soft);
  display: grid; gap: 8px; font-size: 13px; }
.tz-bar .toolbar { margin: 0; }
/* карточка товара */
section.tz-sec { display: flex; flex-direction: column; gap: 12px; }
details.tz-sec[open] > summary { margin-bottom: 12px; }
details.tz-sec > summary { cursor: pointer; }
details.tz-sec > summary h3 { display: inline; }
.tz-sec h3 { margin: 0; }
.tz-sec:focus { outline: none; }
.tz-kicker { margin: 0; }
@media (max-width: 700px) {
  #tz-card-head { flex-basis: 100%; }
}
#tz-card-title { margin: 0; font-size: 20px; overflow-wrap: anywhere; }
.tz-grid1 { display: grid; gap: 12px 16px; }
.tz-grid2 { display: grid; gap: 12px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tz-grid3 { display: grid; gap: 12px 16px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tz-grid4 { display: grid; gap: 12px 16px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1280px) {
  .tz-grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1448px) {
  :root[data-rail="open"] .tz-grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .tz-grid2, .tz-grid3, .tz-grid4 { grid-template-columns: minmax(0, 1fr); }
}
.tz-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tz-field.wide { grid-column: 1 / -1; }
.tz-label { font-size: 13px; color: var(--muted); }
.tz-field input:not([type=checkbox]), .tz-field select { width: 100%; min-width: 0; }
.tz-field textarea { width: 100%; min-width: 0; min-height: 0; resize: vertical; }
.tz-bool { display: inline-flex; gap: 6px; align-items: center; min-height: 36px; }
.tz-miss { border-color: var(--amber) !important; }
.tz-bad { border-color: var(--minus) !important; box-shadow: 0 0 0 1px var(--minus); }
.tz-seg { display: inline-flex; align-self: flex-start; max-width: 100%; flex-wrap: wrap; border: 1px solid var(--line);
  border-radius: var(--radius-s); overflow: hidden; }
.tz-seg button { flex: 0 0 auto; border: 0; border-right: 1px solid var(--line); border-radius: 0; font-size: 13px; padding: 6px 12px; }
.tz-seg button:last-child { border-right: 0; }
/* на телефоне кнопки типа переносятся — отдельными плашками */
@media (max-width: 700px) {
  .tz-seg { border: 0; overflow: visible; gap: 6px; }
  .tz-seg button, .tz-seg button:last-child { border: 1px solid var(--line); border-radius: var(--radius-s); }
}
.tz-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 38px; border: 1px solid var(--line);
  border-radius: var(--radius-s); padding: 3px 6px; background: var(--sheet); }
.tz-tags:focus-within { border-color: var(--cobalt); }
.tz-tags > span { display: contents; }
.tz-field .tz-tags input { flex: 1 1 120px; width: auto; min-width: 80px; border: 0; padding: 4px; background: transparent; }
.tz-field .tz-tags input:focus-visible { outline: none; }
.tz-chip { display: inline-flex; align-items: center; gap: 2px; font-size: 13px; background: var(--cobalt-soft); color: var(--ink);
  border-radius: 999px; padding: 1px 2px 1px 10px; overflow-wrap: anywhere; }
.tz-chip button { border: 0; background: none; padding: 0; width: 24px; height: 24px; min-height: 0; line-height: 1; color: var(--muted); border-radius: 50%; }
.tz-chip button:hover { color: var(--ink); }
.tz-strip { display: flex; gap: 2px 12px; align-items: baseline; flex-wrap: wrap; padding: 8px 12px; margin-top: 8px; font-size: 13px;
  border: 1px solid var(--amber); border-left-width: 4px; border-radius: var(--radius-s); background: color-mix(in srgb, var(--amber) 8%, var(--sheet)); }
.tz-strip.bad { border-color: var(--minus); background: color-mix(in srgb, var(--minus) 8%, var(--sheet)); }
.tz-strip .link-button, ul.tz-checks .link-button { padding: 0; text-align: left; }
.tz-badges { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.tz-badges:empty { display: none; }
.src-badge { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px;
  line-height: 16px; padding: 0 6px; border-radius: 999px; background: var(--fog); color: var(--muted); }
.src-badge.auto { background: var(--cobalt-soft); color: var(--cobalt); }
.offer { font-size: 12px; padding: 0 8px; border: 1px dashed var(--cobalt); border-radius: var(--radius-s); background: transparent;
  color: var(--cobalt); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* рассрочка (7.10 §5): переключатель, степпер частей, график */
.tz-inst { display: flex; flex-direction: column; gap: 12px; }
[data-sec-x]:empty, .tz-inst [data-inst-part]:empty { display: none; }
.tz-inst [data-inst-part]:focus { outline: none; }
.tz-switch { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; min-height: 36px; cursor: pointer; }
.tz-switch input { appearance: none; position: relative; flex: none; width: 36px; height: 20px; margin: 0; padding: 0; border: 0;
  border-radius: 999px; background: var(--muted); cursor: pointer; transition: background .15s; }
.tz-switch input::before { content: ""; position: absolute; left: 2px; top: 2px; width: 16px; height: 16px; border-radius: 50%;
  background: var(--sheet); transition: transform .15s; }
.tz-switch input:checked { background: var(--cobalt); }
.tz-switch input:checked::before { transform: translateX(16px); }
.tz-step { display: inline-flex; align-self: flex-start; border: 1px solid var(--line); border-radius: var(--radius-s); overflow: hidden; }
.tz-step button { width: 36px; min-height: 36px; padding: 0; border: 0; border-radius: 0; background: var(--fog); font-size: 16px; }
.tz-field .tz-step input { width: 52px; border: 0; border-left: 1px solid var(--line); border-right: 1px solid var(--line); border-radius: 0;
  text-align: center; font-weight: 600; }
.tz-inst-hint { margin: 0; font-size: 13px; }
.tz-inst-hint .link-button { padding: 0; }
.tz-inst-tot { margin: 0; display: flex; gap: 4px 12px; flex-wrap: wrap; align-items: baseline; font-size: 15px; }
[data-inst-part="total"].tz-bad { border-radius: var(--radius-s); padding: 4px 8px; }
table.tz-inst-sched td, table.tz-inst-sched th { text-align: left; vertical-align: middle; }
table.tz-inst-sched .n { text-align: right; }
table.tz-inst-sched input.date-text { padding: 4px 6px; }
.tz-inst-note { display: block; font-size: 12px; }
.tz-inst-fold td { color: var(--muted); font-size: 13px; }
/* состав комплекта (7.10 §4): позиции, итог, панель «Добавить позицию» */
[data-bp-part="table"]:focus { outline: none; }
[data-bp-part="table"].tz-miss, [data-bp-part="table"].tz-bad { border: 1px solid; border-radius: var(--radius-s); padding: 4px 8px; }
table.tz-btbl td, table.tz-btbl th { text-align: left; vertical-align: middle; }
table.tz-btbl .n { text-align: right; }
table.tz-btbl td.wrap { min-width: 12em; }
table.tz-btbl .link-button { padding: 0; text-align: left; }
.tz-x { width: 32px; height: 32px; min-height: 0; padding: 0; border: 0; background: none; color: var(--muted); font-size: 18px; line-height: 1; }
.tz-x:hover { color: var(--ink); background: var(--fog); }
.tz-bsum { display: flex; gap: 4px 24px; flex-wrap: wrap; justify-content: flex-end; align-items: baseline; margin: 8px 0 0; font-size: 13px; }
.tz-bsum b { font-size: 15px; }
.tz-blegacy { margin-top: 4px; font-size: 13px; }
.tz-bpick { margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-m); padding: 10px 12px; }
.tz-bpick[open] { border-color: var(--cobalt); }
.tz-bpick > summary { cursor: pointer; font-weight: 600; }
.tz-bpick-b { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.tz-bpick-b .tz-group-h { margin: 6px 0 0; }
.tz-bpick-b input[type=search] { width: 100%; }
.tz-pk { display: flex; gap: 4px 10px; align-items: baseline; padding: 6px 4px; border-bottom: 1px solid var(--line); font-size: 13px; cursor: pointer; }
.tz-pk.off { color: var(--muted); cursor: default; flex-wrap: wrap; }
.tz-pk input { flex: none; margin: 0; padding: 0; align-self: center; accent-color: var(--cobalt); }
.tz-pk .t { min-width: 0; overflow-wrap: anywhere; }
.tz-pk .s { overflow-wrap: anywhere; }
.tz-pk .p { margin-left: auto; white-space: nowrap; color: var(--muted); }
.tz-pk .link-button { padding: 0; }
.tz-bp-hint { margin: 0; font-size: 12px; }
/* на телефоне: название и цена, под названием — артикул */
@media (max-width: 700px) {
  .tz-pk, .tz-pk.off { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px 10px; }
  .tz-pk input { grid-row: 1 / span 2; align-self: start; margin-top: 2px; }
  .tz-pk .t { grid-column: 2; grid-row: 1; }
  .tz-pk .p { grid-column: 3; grid-row: 1; }
  .tz-pk .s, .tz-pk .bad { grid-column: 2 / span 2; grid-row: 2; }
}
/* окно «Обновить из Портала» (7.10 §6): сводка, расхождения, новые товары, свёрнутые списки; низ окна прилипает */
.tz-pd-body { display: flex; flex-direction: column; gap: 12px; }
.tz-pd-body h3 { margin: 4px 0 0; }
.tz-pd-sum { display: flex; gap: 8px; flex-wrap: wrap; margin: 0; }
.tz-pill { font-size: 13px; border-radius: var(--radius-s); padding: 4px 10px; background: var(--fog); }
.tz-pill.diff { background: color-mix(in srgb, var(--amber) 14%, var(--sheet)); }
table.tz-pd td, table.tz-pd th { text-align: left; vertical-align: top; }
table.tz-pd .n { text-align: right; }
table.tz-pd td.wrap { min-width: 10em; }
table.tz-pd tr.tz-pd-p th { padding-top: 10px; background: var(--row-alt); color: var(--ink); font-size: 13px; font-weight: 600; white-space: normal; }
table.tz-pd td.old { color: var(--muted); }
table.tz-pd td.new { font-weight: 500; }
.tz-pd-chk { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin: -6px 0 -6px -6px; cursor: pointer; }
.tz-pd-chk input { width: 16px; height: 16px; margin: 0; padding: 0; accent-color: var(--cobalt); cursor: pointer; }
.src-badge.man { background: color-mix(in srgb, var(--amber) 14%, var(--sheet)); color: var(--amber); }
.tz-pd-hint { margin: 0; }
.tz-pd-more > summary { cursor: pointer; font-size: 13px; padding: 4px 0; }
.tz-pd-more ul.list li { padding: 4px 0; font-size: 13px; }
.tz-pd-foot { position: sticky; bottom: -20px; display: flex; gap: 8px 10px; align-items: center; justify-content: flex-end; flex-wrap: wrap;
  margin: 16px -20px -20px; padding: 12px 20px; border-top: 1px solid var(--line); background: var(--sheet); }
/* на телефоне столбец «В Портале» виден без прокрутки: текст переносится */
@media (max-width: 700px) {
  .tz-pd-chk { width: 44px; height: 44px; margin: -12px 0 -12px -12px; }
  table.plain.tz-pd td, table.plain.tz-pd th { white-space: normal; overflow-wrap: break-word; }
  table.tz-pd td.wrap { min-width: 0; }
  table.tz-pd td.old .src-badge { display: table; margin-top: 2px; }
  .tz-pd-body .tz-row h3 { flex-basis: 100%; }
}
/* «Предпросмотр карточек» (7.10 §8): окно во всю ширину; на компьютере список и карточка прокручиваются отдельно */
.modal .dialog.tz-pv-dlg { width: min(1360px, 96vw); height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
.tz-pv-dlg .dialog-body { flex: 1 1 auto; min-height: 0; }
.tz-pv { display: grid; grid-template-columns: minmax(220px, 290px) minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); gap: 12px 20px; height: 100%; }
.tz-pv-top { grid-column: 1 / -1; display: flex; gap: 8px 12px; align-items: center; flex-wrap: wrap; }
.tz-pv-top p { margin: 0; }
.tz-pv-side { min-height: 0; overflow: auto; padding: 10px; border-radius: var(--radius-m); background: var(--row-alt); border: 1px solid var(--line); }
.tz-pv-side > p { margin: 0; }
.tz-pv-side .tz-group-h { margin: 12px 0 4px; }
.tz-pv-it { display: flex; gap: 8px; align-items: baseline; width: 100%; padding: 6px 8px; border: 0; border-radius: var(--radius-s);
  background: none; text-align: left; font-size: 13px; cursor: pointer; }
.tz-pv-it:hover { background: color-mix(in srgb, var(--cobalt-soft) 60%, transparent); }
.tz-pv-it.on { background: var(--cobalt-soft); font-weight: 500; }
.tz-pv-it .t { min-width: 0; overflow-wrap: anywhere; }
.tz-pv-it .c { margin-left: auto; font-size: 12px; font-weight: 400; white-space: nowrap; }
.tz-pv-main { min-width: 0; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 16px; padding-right: 4px; }
.tz-pv-hero { display: flex; gap: 16px 20px; flex-wrap: wrap; align-items: flex-start; padding: 16px; border: 1px solid var(--line); border-radius: var(--radius-m); }
.tz-pv-ph { flex: none; width: 168px; height: 120px; padding: 8px 10px; border-radius: var(--radius-s); background: var(--fog); color: var(--muted);
  font-size: 12px; line-height: 1.35; white-space: pre-line; overflow: hidden; overflow-wrap: anywhere; }
.tz-pv-hero-b { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.tz-pv-hero-b h2 { margin: 0; font-size: 18px; overflow-wrap: anywhere; }
.tz-pv-hero-b .muted { overflow-wrap: anywhere; }
.tz-pv-hero-b .link-button { padding: 0; }
.tz-pv-price { font-size: 22px; font-weight: 600; }
.tz-pv-old { margin-left: 8px; color: var(--muted); }
.tz-pv-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.tz-pv-chip { font-size: 13px; padding: 4px 12px; border-radius: 999px; }
.tz-pv-chip.on { background: var(--cobalt); border-color: var(--cobalt); color: var(--on-accent); }
.tz-pv-blocks { columns: 2; column-gap: 16px; }
.tz-pv-blk { break-inside: avoid; margin: 0 0 16px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-m); }
.tz-pv-blk h3 { margin: 0 0 4px; font-size: 14px; }
.tz-pv-main > .tz-pv-blk { margin: 0; }
table.plain.tz-pv-kv td { padding: 5px 6px 5px 0; text-align: left; white-space: normal; overflow-wrap: anywhere; font-size: 13px; }
table.plain.tz-pv-kv tr td, table.plain.tz-pv-kv tr:hover td { background: none; }
table.plain.tz-pv-kv tr:last-child td { border-bottom: 0; }
table.tz-pv-kv td.k { width: 40%; color: var(--muted); padding-right: 10px; }
table.tz-pv-kv td.v { white-space: pre-line; }
table.plain.tz-pv-kv td.s { width: 1%; padding-right: 0; text-align: right; white-space: nowrap; }
.tz-pv-clip { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.tz-pv-kv .link-button { padding: 2px 0 0; font-size: 12px; }
.tz-pv-empty { padding: 0 6px; border-radius: var(--radius-s); font-size: 12px; color: var(--amber); background: color-mix(in srgb, var(--amber) 12%, var(--sheet)); }
.src-badge.tz { background: var(--cobalt-soft); color: var(--cobalt); }
table.tz-pv-sch td, table.tz-pv-sch th { text-align: left; }
table.tz-pv-sch .n { text-align: right; }
/* узко: список над карточкой, окно прокручивается целиком, кнопка «следующая» прилипает */
@media (max-width: 900px) {
  .modal .dialog.tz-pv-dlg { display: block; height: auto; overflow: auto; }
  .tz-pv { display: flex; flex-direction: column; height: auto; }
  .tz-pv-top { display: contents; }
  .tz-pv-top button { position: sticky; top: -8px; z-index: 2; box-shadow: 0 0 0 8px var(--sheet); }
  .tz-pv-dlg .dialog-head { position: static; }
}
/* прилипает кнопка «следующая», а не шапка (7.11: иначе она закрывает ×) */
@media (max-width: 900px) {
  .tz-pv-side { max-height: 32vh; }
  .tz-pv-main { overflow: visible; padding-right: 0; }
  .tz-pv-blocks { columns: 1; }
}
@media (max-width: 720px) {
  .modal .dialog.tz-pv-dlg { width: 100vw; display: block; height: auto; }
  .tz-pv-ph { width: 100%; height: auto; max-height: 96px; }
  table.tz-pv-kv td.k { width: 36%; }
}
/* «Готовность» и «Подсказки» */
#tz-ready h2, #tz-hints h2 { margin: 0 0 4px; }
#tz-ready h3, #tz-hints h3 { margin: 12px 0 4px; }
#tz-hints { font-size: 13px; }
#tz-hints > p { margin: 0; }
#tz-hints .link-button { text-align: left; }
.tz-sum { margin: 8px 0 0; font-size: 13px; }
.tz-ready-bar { display: flex; height: 8px; border-radius: 4px; overflow: hidden; background: var(--fog); margin: 8px 0 4px; }
.tz-ready-bar .ok { background: var(--plus); }
.tz-ready-bar .gap { background: var(--amber); }
.tz-ready-bar .err { background: var(--minus); }
ul.tz-checks { list-style: none; margin: 0; padding: 0; }
ul.tz-checks li { display: flex; gap: 8px; padding: 5px 0; font-size: 13px; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
ul.tz-checks li:last-child { border-bottom: 0; }
ul.tz-checks li > button { flex: none; }
ul.tz-checks li.muted .link-button { color: var(--muted); }
/* пункт WS.ready с cls: 'muted' — приглушён и текстом («После вердикта») */
#tz-ready details > summary { cursor: pointer; font-size: 13px; padding: 6px 0; }
.tz-offers { font-size: 13px; margin: 12px 0 0; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
/* Инструкция InSales: читаемый текст, разделы — листы, образцы с копированием */
.ins-views { margin-bottom: 12px; }
.ins-types { flex-wrap: wrap; gap: 6px; }
.ins-body { max-width: 880px; }
.ins-section { background: var(--sheet); border: 1px solid var(--line); border-radius: var(--radius-s); padding: 4px 20px 8px; margin-bottom: 16px; }
.ins-section h2 { margin: 12px 0 4px; }
.ins-point { padding: 10px 0; border-top: 1px solid var(--line); }
.ins-section h2 + .ins-point { border-top: 0; }
.ins-point h3 { font-size: 16px; margin: 0 0 4px; }
.ins-point p, .ins-point ul { margin: 4px 0; max-width: 75ch; }
.ins-example { display: flex; gap: 8px; align-items: flex-start; background: var(--fog); border-radius: var(--radius-s); padding: 6px 10px; margin: 6px 0; }
.ins-example pre { flex: 1; margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: 14px; }
.ins-example .ins-copy { font-size: 13px; padding: 2px 8px; }
.ins-meta { display: flex; flex-wrap: wrap; gap: 2px 14px; font-size: 13px; }
.ins-type-select { display: none; margin-bottom: 12px; }
@media (max-width: 640px) {
  .ins-section { padding: 4px 12px 8px; }
  .ins-example { flex-direction: column; }
  .ins-types { display: none; }
  .ins-type-select { display: block; }
}
#h-checks li { overflow-wrap: anywhere; }
#h-due { color: var(--ink); }
#h-due[hidden] { display: none; }
#h-manual { overflow-wrap: anywhere; display: grid; gap: 8px; padding-top: 8px; border-top: 1px solid var(--line); }
#h-manual[hidden] { display: none; }
.tz-st.mute { color: var(--muted); }
/* P&L «Период» (план 55): таблица статей — заголовки групп, жирные итоговые строки, «к прошлому»; без чередования строк.
   На телефоне «Прошлый» и «Доля» уходят в мелкую строку под названием (.ph-only), слово «к прошлому» — в короткий вид */
table.plain.stat tr:nth-child(even) td { background: transparent; }
table.plain.stat tr:hover td { background: var(--cobalt-soft); }
table.plain.stat tr.key-row td, table.plain.stat tr.key-row:hover td { background: var(--cobalt-soft); }
table.plain.stat tr.group-row td, table.plain.stat tr.group-row:hover td { background: var(--row-alt); color: var(--muted); font-size: 13px; font-weight: 600; }
table.plain.stat tr.group-row td:first-child { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
table.plain.stat tr.tot-row td { font-weight: 600; }
table.plain.stat tr.more-row td, table.plain.stat tr.more-row:hover td { background: transparent; text-align: left; font-size: 13px; }
table.plain.stat tr.more-row .link-button { text-decoration: none; color: var(--muted); }
.ph-only { display: none; }
@media (max-width: 720px) {
  table.plain.stat .col-wide, table.plain.stat .wide-only { display: none; }
  .ph-only { display: inline; }
  table.plain.stat .pl-sub.ph-only { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; white-space: normal; }
}
/* «Сверка подробно» на P&L */
#reconcile-box { margin-bottom: 16px; }
#reconcile-box summary { cursor: pointer; }
#reconcile-box[open] summary { margin-bottom: 8px; }
/* P&L «По месяцам» (план 55): ручная таблица во всю ширину карточки, прокручивается только она; первая колонка (статья) закреплена
   слева — ячейка непрозрачная (цвет строки), иначе числа проезжают под подписью. Неполный месяц (.part) — штриховка столбца */
section.card.m-wrap { padding: 0; }
.sum-text { white-space: pre-wrap; max-width: 90ch; margin: 8px 0 12px; }
table.plain.stat.mon { width: max-content; min-width: 100%; font-size: 13px; }
table.plain.stat.mon th, table.plain.stat.mon td { padding: 6px 10px; }
table.plain.stat.mon td:first-child { position: sticky; left: 0; z-index: 1; min-width: 190px; max-width: 280px; background: var(--sheet); border-right: 1px solid var(--line); }
table.plain.stat.mon th:first-child { position: sticky; left: 0; min-width: 190px; max-width: 280px; background: var(--sheet); border-right: 1px solid var(--line); z-index: 2; }
table.plain.stat.mon tr.group-row td:first-child { background: var(--row-alt); }
table.plain.stat.mon tr.key-row td:first-child { background: var(--cobalt-soft); }
table.plain.stat.mon tr:hover td:first-child { background: var(--sheet); }
table.plain.stat.mon tr.group-row:hover td:first-child { background: var(--row-alt); }
table.plain.stat.mon tr.key-row:hover td:first-child { background: var(--cobalt-soft); }
table.plain.stat.mon tr.sub-row td:first-child { padding-left: 24px; }
/* «Общие расходы» — заголовок группы (group-row) с суммой и кнопкой раскрытия: подпись группы как у заголовков, «· N статей» — строчными */
table.plain.stat.mon tr.fold-row .link-button { font: inherit; text-transform: inherit; letter-spacing: inherit; text-align: left;
  text-decoration: none; color: inherit; padding: 0; }
table.plain.stat.mon tr.fold-row .m-fold { text-transform: none; letter-spacing: 0; font-size: 13px; font-weight: 500; }
/* на компьютере — одной строкой: колонка статей шире 280 px ради этой строки */
@media (min-width: 721px) {
  table.plain.stat.mon tr.fold-row td:first-child { max-width: none; }
  table.plain.stat.mon tr.fold-row .link-button { white-space: nowrap; }
}
table.plain.stat.mon .part { background-image: repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in srgb, var(--muted) 14%, transparent) 6px 7px); }
.m-tag { display: block; font-size: 11px; font-weight: 500; color: var(--muted); }
@media (max-width: 720px) {
  table.plain.stat.mon th:first-child, table.plain.stat.mon td:first-child { min-width: 128px; max-width: 150px; }
  table.plain.stat.mon tr.sub-row td:first-child { padding-left: 16px; }
}
#tab-queue > #refresh-msg { margin: 0 0 8px; font-size: 13px; }
#tab-queue > #refresh-msg:empty { display: none; }
[data-embed] .ln-head > div:first-child { display: none; }
@media (max-width: 720px) {
  :root[data-embed] { --tabbar: 0px; }
}
/* страница запуска (7.11 §3): шапка с главным действием и «Ещё», список товаров, строки полей «Что поправить | Все поля» */
.ln-head { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: flex-start; }
.ln-head > div:first-child { flex: 1 1 360px; min-width: 0; }
.ln-head h1 { margin: 0 0 4px; overflow-wrap: anywhere; }
.ln-head > div:first-child > p, .ln-info > p { margin: 0 0 6px; }
.ln-info { flex: 1 1 100%; min-width: 0; }
/* шапка запуска: заголовок, ряд кнопок, потом текст — рост текста после загрузки ряд не сдвигает */
#l-status { font-size: 13px; }
#l-st .pill { white-space: normal; }
#l-problems { font-size: 13px; }
.ln-cardhead .ln-head > div:first-child { flex-basis: 240px; }
/* длинный статус переносится, а не раздвигает страницу */
.ln-headr { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; flex-basis: 100%; min-width: 0; max-width: 100%; }
/* ряд кнопок — всегда отдельной строкой: длина текста слева (до/после загрузки) его не двигает */
.ln-msgs { margin: 0; font-size: 13px; text-align: left; }
/* статус — с начала строки, у «Проверить InSales» */
#ac-open[data-pending] { visibility: hidden; }
/* место под «Создать в InSales…» до ответа API */
#l-assignee { min-width: 14em; }
/* резерв под имя: пустой select до загрузки той же ширины, что после */
.ln-msgs:not(:has(span:not(:empty))) { display: none; }
.ln-acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ln-layout { margin-top: 12px; }
details.tool-more[data-menu] { position: relative; }
details.tool-more[data-menu] > summary { display: inline-flex; align-items: center; justify-content: center; padding: 6px 12px; font-size: inherit;
  border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--sheet); cursor: pointer; list-style: none; white-space: nowrap; }
details.tool-more[data-menu] > summary:hover { border-color: var(--cobalt); }
details.tool-more[data-menu] > summary::-webkit-details-marker { display: none; }
details.tool-more[data-menu][open] > div { position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; flex-direction: column;
  align-items: stretch; min-width: 240px; padding: 8px; background: var(--sheet); border: 1px solid var(--line);
  border-radius: var(--radius-m); box-shadow: 0 8px 24px color-mix(in srgb, var(--ink) 18%, transparent); }
details.tool-more[data-menu] label { display: flex; flex-direction: column; align-items: stretch; gap: 4px; font-size: 13px; color: var(--muted); }
details.tool-more[data-menu] select { color: var(--ink); }
#ln-find { width: 100%; margin-top: 10px; }
.ln-legend { margin: 14px 0 0; padding-top: 10px; border-top: 1px solid var(--grid); font-size: 12px; }
.ln-cardhead { display: flex; flex-direction: column; gap: 12px; }
.ln-cardhead > p { margin: 0; }
#ln-kicker { margin: 0 0 2px; }
#ln-title { margin: 0; font-size: 20px; overflow-wrap: anywhere; }
.ln-viewrow { justify-content: space-between; }
.ln-viewrow .segmented { margin: 0; }
#ln-secs { display: flex; flex-direction: column; gap: var(--gap); }
#ln-secs > .card { margin: 0; }
#ln-secs .tz-sec-h { margin-bottom: 0; }
.ln-f { display: grid; grid-template-columns: 180px minmax(0, 1fr) 176px; gap: 6px 16px; padding: 10px 0; border-top: 1px solid var(--grid); align-items: start; }
.ln-f:first-of-type { border-top: 0; }
.ln-f:focus { outline: none; }
.ln-f .l { font-size: 13px; color: var(--muted); padding-top: 2px; overflow-wrap: anywhere; }
.ln-hint { display: block; font-size: 12px; }
.ln-f .v { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.ln-f .val { overflow-wrap: anywhere; }
.ln-f .val pre { white-space: pre-wrap; overflow-wrap: anywhere; margin: 0; font-size: .85em; max-height: 16em; overflow: auto; }
.learn-text { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 30vh; overflow: auto; margin: 4px 0; }
.ln-f .meta { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; font-size: 12.5px; }
.ln-f .meta:empty { display: none; }
.ln-f .meta .offer { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ln-act { display: flex; flex-wrap: wrap; gap: 6px 8px; justify-content: flex-end; align-items: center; }
.ln-act .link-button { font-size: 13px; }
.ln-btn { font-size: 13px; padding: 2px 10px; }
.ln-f.hot { margin: 4px -8px 0; padding: 10px 8px; border: 1px solid color-mix(in srgb, var(--amber) 30%, var(--line)); border-radius: var(--radius-s);
  background: color-mix(in srgb, var(--amber) 6%, var(--sheet)); }
.ln-f.hot + .ln-f { border-top: 0; }
.ln-rest { display: flex; flex-wrap: wrap; gap: 6px 12px; justify-content: space-between; align-items: center; padding: 10px 16px;
  background: var(--sheet); border: 1px solid var(--line); border-radius: var(--radius-m); font-size: 13.5px; }
.ln-rest .link-button { padding: 0; }
.ln-note { margin: 0; font-size: 13px; }
.ln-tznote { white-space: pre-line; }
#ln-tznote .tz-strip { margin: 0; }
/* отступ даёт gap шапки карточки */
.ln-allgood { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; justify-content: space-between; }
.ln-allgood p { margin: 0; }
.ln-allgood .ln-note { flex-basis: 100%; }
p.ln-meta { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; margin: 0; font-size: 13px; }
p.ln-meta .link-button { padding: 0; }
table.plain.ln-series td, table.plain.ln-series th { text-align: left; vertical-align: top; white-space: normal; }
table.plain.ln-series td.n, table.plain.ln-series th.n { text-align: right; white-space: nowrap; }
table.plain.ln-series td.nowrap { white-space: nowrap; }
table.plain.ln-series td.t { min-width: 12em; }
table.plain.ln-series td.p { min-width: 10em; font-size: 12px; color: var(--muted); }
table.ln-series .ln-btn { display: block; margin-top: 4px; }
/* телефон: часть рассрочки — блоком, подписи вместо шапки столбцов */
@media (max-width: 700px) {
  table.plain.ln-series thead { display: none; }
  table.plain.ln-series, table.plain.ln-series tbody { display: block; }
  table.plain.ln-series tr { display: block; padding: 8px 0; border-bottom: 1px solid var(--line); }
  table.plain.ln-series td.n { border: 0; padding: 2px 0; min-width: 0; text-align: left; }
  table.plain.ln-series td { display: block; border: 0; padding: 2px 0; min-width: 0; text-align: left; }
  table.plain.ln-series td[data-l]::before { content: attr(data-l) ": "; color: var(--muted); font-size: 12px; }
}
#l-problems details > summary { cursor: pointer; color: var(--cobalt); }
.ln-sum { display: flex; gap: 6px; flex-wrap: wrap; margin: 10px 0 0; }
#ln-ready h2, #ln-launch h2 { margin: 0; }
#ln-ready .tz-group-h { margin: 16px 0 4px; }
#ln-ready ul.tz-checks .link-button { padding: 0; text-align: left; }
#ln-ready ul.tz-checks li { align-items: baseline; }
/* точка — на строке текста: на телефоне кнопка-ссылка 44 px */
.ln-racts { display: block; margin-top: 2px; }
.ln-kv { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; font-size: 13px; margin: 8px 0 0; }
.ln-kv dt { color: var(--muted); }
.ln-kv dd { margin: 0; overflow-wrap: anywhere; }
.ln-path { display: block; font-size: 12px; color: var(--muted); }
#ln-launch .ln-acts { margin-top: 12px; }
@media (max-width: 700px) {
  .ln-f { grid-template-columns: minmax(0, 1fr); }
  .ln-act { justify-content: flex-start; }
  .ln-acts > * { flex: 1 1 auto; }
  .ln-rest .link-button { flex-basis: 100%; text-align: left; }
  .ln-headr { align-items: stretch; }
  details.tool-more[data-menu] > summary { width: 100%; }
}
/* окно «Создать в InSales» (7.11 §4): блоки колонкой, товары по группам, категории и параметры рядом, ход и отчёт внизу */
.ac-body { display: flex; flex-direction: column; gap: 12px; }
.ac-body > p { margin: 0; }
.ac-body .card { margin: 0; }
.ac-body .tz-sec-h { margin-bottom: 4px; }
.ac-body .tz-sec-h h3, .ac-body .card > h3 { margin: 0 0 4px; }
.ac-body .tz-sec-h .link-button { padding: 0; }
.ac-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
.ac-it { display: flex; gap: 8px; align-items: flex-start; padding: 8px 0; border-top: 1px solid var(--grid); }
.tz-group-h + .ac-it, .ac-body .card > h3 + .ac-it { border-top: 0; }
.ac-it input[type=checkbox] { margin-top: 3px; accent-color: var(--cobalt); }
.ac-it .b { flex: 1 1 auto; min-width: 0; }
.ac-it .t { font-weight: 500; overflow-wrap: anywhere; }
.ac-it label.t { display: block; cursor: pointer; }
.ac-meta { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; font-size: 12.5px; color: var(--muted); }
.ac-meta .pill { white-space: normal; border-radius: 10px; }
/* длинная причина «не создаём» переносится, а не раздвигает окно */
.ac-sub { display: inline-flex; gap: 6px; align-items: center; font-size: 12.5px; color: var(--muted); white-space: nowrap; cursor: pointer; }
.ac-sub input { margin: 0; accent-color: var(--cobalt); }
.ac-it details { margin-top: 4px; font-size: 13px; }
.ac-it details > summary { cursor: pointer; color: var(--cobalt); font-size: 12.5px; }
.ac-it pre { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 12px; max-height: 320px; overflow: auto; margin: 4px 0; }
.ac-it.off { opacity: .55; }
.ac-cat { display: flex; flex-direction: column; gap: 6px; padding: 8px 0; border-top: 1px solid var(--grid); }
.ac-body .card > h3 + .ac-cat { border-top: 0; }
.ac-cat.off .ac-path { opacity: .6; }
.ac-row { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.ac-row .ac-path { flex: 1 1 200px; min-width: 0; overflow-wrap: anywhere; }
.ac-row > label:not(.ac-sub) { display: flex; flex-direction: column; gap: 2px; flex: 1 1 200px; min-width: 0; font-size: 12.5px; color: var(--muted); }
.ac-cat input[list], .ac-row input:not([type=checkbox]) { width: 100%; min-width: 0; }
.ac-body .tz-switch { margin: 0 0 4px; }
.ac-line { margin: 0; font-size: 13px; }
.ac-line:not(:has(span:not(:empty))) { display: none; }
#ac-report p { margin: 4px 0; font-size: 13px; overflow-wrap: anywhere; }
#ac-report h3 { margin: 12px 0 4px; }
.ac-log:has(#ac-report:not(:empty)) .ac-hint, .ac-log:has(.ac-line span:not(:empty)) .ac-hint { display: none; }
.ac-hint { margin: 0; }
.ac-pwait { margin: 0; padding: 6px 16px; background: var(--sheet); border-bottom: 1px solid var(--line); font-size: 13px; }
@media (max-width: 760px) {
  .ac-two { grid-template-columns: minmax(0, 1fr); }
}
/* «Проверка товаров» (7.11 §5) */
.ck-add { margin-left: auto; }
.ck-add > summary { display: inline; cursor: pointer; }
.ck-add[open] { flex-basis: 100%; }
.ck-add form { margin-top: 8px; }
@media (max-width: 720px) {
  .ck-add { margin-left: 0; }
}
/* окно товара проверки (7.11 §5): пункты по разделам слева, «Готовность» и «Товар в проверке» справа */
.ck-win { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 320px); gap: 16px; align-items: start; }
.ck-main { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.ck-side { display: flex; flex-direction: column; gap: 12px; min-width: 0; position: sticky; top: 0; }
.ck-win .card { margin: 0; }
.ck-win section.tz-sec { gap: 0; }
/* между заголовком раздела и полосой — отступ полосы, а не ещё и зазор */
.ck-acts { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; }
.ck-msg { grid-column: 1 / -1; margin: 0; font-size: 13px; }
.ck-msg:empty { display: none; }
.ck-kicker { font-weight: 400; font-size: 13px; }
/* серая полоса: оформление в «Проверке товаров» и WS.strip('mute') — идёт эксперимент, карточку не трогаем (2.89 §3) */
.tz-strip.design, .tz-strip.mute { border-color: var(--line); border-left-color: var(--muted); background: var(--row-alt); }
.ck-win .tz-strip > * { flex-basis: 100%; }
.ck-sh { display: flex; gap: 4px 8px; align-items: baseline; justify-content: space-between; }
.ck-sh strong { flex: 1 1 auto; min-width: 0; font-weight: 500; overflow-wrap: anywhere; }
.ck-sh:focus { outline: none; }
.ck-pair { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 2px 12px; margin: 4px 0 0; }
.ck-pair dt { color: var(--muted); }
.ck-pair dd { margin: 0; overflow-wrap: anywhere; }
.ck-hint { margin: 2px 0 0; }
.ck-ex { padding: 8px 0; color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.ck-ex .link-button { padding: 0; }
.ck-ex-form { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin-top: 4px; }
.ck-ex-form label { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; flex: 1 1 280px; min-width: 0; color: var(--muted); }
.ck-ex-form input { flex: 1 1 200px; min-width: 0; }
.ck-ok > summary { cursor: pointer; font-size: 13px; padding: 6px 0; color: var(--plus); }
.ck-side .card h3 { margin: 0 0 10px; }
.ck-side .tz-checks li { align-items: center; }
.ck-side .tz-checks li > span:last-child:has(> .link-button) { display: contents; }
/* кнопка пункта WS.ready — прямо в строке: многоточие по ширине */
.ck-side .tz-checks .link-button { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; text-align: left; }
.ck-field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); }
.ck-field select { width: 100%; }
.ck-check { display: flex; gap: 6px; align-items: center; margin-top: 12px; }
.ck-note { margin: 4px 0 0; }
#ck-exclude { width: 100%; margin-top: 14px; }
.ck-mark p { margin: 0 0 4px; }
@media (max-width: 900px) {
  .ck-win { grid-template-columns: minmax(0, 1fr); }
  .ck-side { position: static; order: -1; }
  .ck-acts { order: -2; }
}
@media (max-width: 720px) {
  .ck-pair { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .ck-pair dd { margin-bottom: 6px; }
  .ck-sh { flex-direction: column; align-items: flex-start; }
  .ck-sh .pill { order: -1; }
  .ck-acts > * { flex: 1 1 auto; }
}
/* плашка сообщения (.rt-msg): осталась от пилота приёмки 2.90, используется на других страницах */
.rt-msg { margin: 0 0 12px; padding: 10px 12px; border-radius: var(--radius-s); background: var(--sheet); border: 1px solid var(--line); }
.rt-msg.good { background: var(--drr-good); border-color: transparent; }
.rt-msg.error { background: var(--drr-bad); border-color: transparent; }
.rt-msg.warn { background: color-mix(in srgb, var(--amber) 14%, var(--sheet)); border-color: transparent; }
.todo-cell { display: flex; flex-wrap: wrap; gap: 2px 10px; white-space: normal; }
.todo-cell > span { display: inline-flex; gap: 5px; align-items: center; }
/* телефон: длинная пилюля в «Что сделать» (/ads) переносится внутри себя, строка растёт — а не обрезается краем ячейки */
@media (max-width: 720px) {
  .todo-cell .pill { white-space: normal; line-height: 16px; padding: 1px 8px; }
}
/* телефон: название рядом с «Что сделать» узкое — переносится, а не обрезается многоточием */
@media (max-width: 720px) {
  #cards .tabulator-cell[tabulator-field="name"] { white-space: normal; overflow-wrap: anywhere; }
}
/* 2.89 §3: окно товара «Карточек» (card.html, макеты cards/CardWindow и Accessory) — шапка с действиями справа, разделы
   слева, «Что сделать» и «Товар» справа (280–320 px; на узком — под разделами) */
.cw-head { display: flex; gap: 8px 16px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; margin-bottom: 8px; }
.cw-title { flex: 1 1 360px; min-width: 0; }
.cw-meta { margin: 0 0 2px; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 12px; }
.cw-title h1 { margin: 0; overflow-wrap: anywhere; font-size: 22px; font-weight: 600; letter-spacing: -.01em; }
.cw-acts { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.cw-body { display: flex; gap: var(--gap); align-items: flex-start; flex-wrap: wrap; }
.cw-main { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.cw-side { flex: 1 1 280px; max-width: 320px; min-width: 0; display: flex; flex-direction: column; gap: 12px; position: sticky; top: 12px; }
.cw-main > p { margin: 0; }
.cw-main > .card { margin: 0; background: var(--sheet); border: 1px solid var(--line); box-shadow: none; }
.cw-side > .card { margin: 0; background: var(--sheet); border: 1px solid var(--line); box-shadow: none; }
.cw-main .tz-sec h2 { font-size: 16px; margin: 0; }
details.tz-sec > summary h2 { display: inline; }
.cw-main section.tz-sec { gap: 10px; }
.cw-main .tz-sec-h { margin-bottom: 0; }
#content-box { display: flex; flex-direction: column; gap: 8px; }
.cw-main .tz-strip { gap: 6px; padding: 10px 12px; margin: 0; }
.cw-main .tz-strip > * { flex-basis: 100%; }
/* полоса общей части (app.js askAt/inputAt/msgAt) выглядит одинаково в любом контейнере: страничные «дети на всю ширину» её не касаются */
.ck-win .tz-strip.dlg-strip > *, .cw-main .tz-strip.dlg-strip > * { flex-basis: auto; }
.cw-strip-h { display: flex; gap: 4px 10px; align-items: baseline; justify-content: space-between; flex-wrap: wrap; }
.cw-strip-t { font-size: 14px; font-weight: 500; }
.cw-kv { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 2px 12px; margin: 0; font-size: 13px; }
.cw-kv dt { color: var(--muted); }
.cw-kv dd { margin: 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.cw-side .cw-kv { grid-template-columns: 120px minmax(0, 1fr); margin-top: 8px; }
.cw-done { display: flex; gap: 4px 12px; justify-content: space-between; flex-wrap: wrap; font-size: 13px; color: var(--muted); }
.cw-after { margin: 0; padding-left: 18px; }
.cw-lost { margin-top: 8px; padding: 8px 10px; border-radius: var(--radius-s); font-size: 13px; background: color-mix(in srgb, var(--minus) 8%, var(--sheet)); }
.cw-lost b { color: var(--minus); font-weight: 600; }
.cw-side .card h3 { margin: 0; }
.cw-side ul.tz-checks { margin-top: 4px; }
.cw-side ul.tz-checks li { align-items: baseline; }
.cw-side .dot { position: relative; top: -1px; }
.cw-more > summary { cursor: pointer; font-weight: 600; font-size: 14px; padding: 4px 0; }
.cw-more[open] > summary { margin-bottom: 8px; }
/* разделы «Ключи», «Подсказки», «Конкуренты» (2.89 §3): подзаголовок группы, как .grp макета; группа предложений; строки
   «почему» у конкурента; ряд ссылок «Скопировать / показать» */
.cw-grp { margin: 4px 0 0; font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.cw-stack { display: flex; flex-direction: column; gap: 12px; }
.cw-props { display: flex; flex-direction: column; gap: 6px; }
.cw-props > .ws-prop, details.cw-props > .ws-prop { margin: 0; }
.cw-props .cw-grp { margin: 0; }
.ws-prop-why > .cw-line { display: block; }
.cw-links { display: inline-flex; gap: 4px 14px; flex-wrap: wrap; }
.cw-links .link-button, .cw-done .link-button { padding: 0; }
#key-msg:empty { display: none; }
#key-msg { margin: 0; }
@media (max-width: 900px) {
  .cw-side { max-width: none; position: static; }
}
@media (max-width: 720px) {
  .cw-kv, .cw-side .cw-kv { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .cw-kv dd + dt { margin-top: 4px; }
}
/* 2.89 §4: окно семейства «Исследования» (cards.html, familyHtml; макет cards/Family) — та же раскладка .cw-*: подпись над
   названием в шапке, сообщение, «Отметить все / Принять / Отклонить отмеченные», строки товаров с переносом, форма названий */
.cw-kicker { font-weight: 400; }
.cw-msg { margin: 0; }
.cw-msg:empty, #cw-status:empty { display: none; }
.cw-pickall { margin: 8px 0 0; }
.cw-mem { display: flex; gap: 6px 10px; align-items: center; flex-wrap: wrap; padding: 6px 0; border-top: 1px solid var(--line); font-size: 13px; }
.cw-mem:first-child { border-top: 0; }
.cw-mem-n { flex: 1 1 240px; min-width: 0; overflow-wrap: anywhere; }
.cw-mem select { width: auto; flex: 0 1 240px; min-width: 0; max-width: 100%; }
.cw-names { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.cw-names label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); }
.cw-names button { align-self: flex-start; }
.cw-names p { margin: 0; font-size: 13px; }
/* 2.97 §4: окно товара ЮЭ (product.html, макеты ue/ProductWindow и ProductPhone) — та же раскладка .cw-*; cw-side-first —
   на узком колонка справа идёт над разделами; графики — внутри раздела без своей рамки; «Статьи» — три столбца
   (подпись, сумма, % выручки), итог «Маржа» — под чертой; подвал таблицы — счётчик слева, сумма справа */
.cw-side-first > .cw-side { flex-basis: 300px; max-width: 340px; }
.cw-side-first .cw-side .cw-kv { grid-template-columns: 110px minmax(0, 1fr); }
@media (max-width: 900px) {
  .cw-side-first > .cw-side { order: -1; max-width: none; }
}
.cw-main .tz-sec > .chart { margin: 0; padding: 0; border: 0; border-radius: 0; background: none; }
.cw-main .tz-sec > .chart + .chart { padding-top: 16px; border-top: 1px solid var(--grid); }
.cw-side-h { display: flex; gap: 4px 10px; align-items: baseline; justify-content: space-between; flex-wrap: wrap; }
.cw-side-h h3 { margin: 0; }
.cw-art { display: grid; grid-template-columns: minmax(0, 1fr) auto 56px; margin-top: 10px; font-size: 13px; }
.cw-art > span { padding: 5px 0; border-top: 1px solid var(--grid); }
.cw-art > span:nth-child(-n+3) { border-top: 0; }
.cw-art-v { text-align: right; white-space: nowrap; padding-left: 12px; }
.cw-art-p { text-align: right; white-space: nowrap; color: var(--muted); font-size: 12px; }
.cw-art .cw-art-b { font-weight: 600; }
.cw-art .cw-art-tot { border-top: 2px solid var(--ink); font-weight: 600; font-size: 14px; padding-top: 7px; }
.cw-art .cw-art-p.cw-art-tot { font-size: 12px; }
.cw-art-p.good { color: var(--plus); }
.cw-art-p.bad { color: var(--minus); }
.cw-art > .muted { grid-column: 1 / -1; border-top: 0; }
.cw-zero { margin: 8px 0 0; font-size: 12px; }
.cw-tfoot { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--muted); }
@media (max-width: 720px) {
  .cw-meta-full { display: none; }
  .cw-acts { min-width: 0; max-width: 100%; }
  .cw-acts > .period { flex: 1 1 100%; min-width: 0; max-width: 100%; }
}
/* чипы периода листаются внутри, а не за край */
@media (max-width: 720px) {
  .cw-side-first .cw-side .cw-kv { gap: 2px 12px; }
  .cw-side-first .cw-kv dd + dt { margin-top: 0; }
}
/* 2.97 §1: сводка одной строкой (ЮЭ, «Цены и РРЦ»): подпись «по чему» слева, показатели рядом; значения — как пришли с сервера */
.sumbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 0; padding: 10px 16px; }
.sumbar-cap { display: flex; flex-direction: column; gap: 2px; min-width: 150px; margin-right: 4px; padding-right: 20px; border-right: 1px solid var(--grid); }
.sumbar-cap b { font-size: 14px; font-weight: 600; }
.sumbar-st { display: flex; flex-direction: column; gap: 1px; min-width: 0; padding: 0 20px; border-left: 1px solid var(--grid); }
.sumbar-cap + .sumbar-st { border-left: 0; }
.sumbar-st .k { font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.sumbar-st .v { font-size: 17px; font-weight: 600; white-space: nowrap; }
.sumbar-st .s { font-size: 12px; color: var(--muted); }
@media (max-width: 720px) {
  .sumbar-cap { flex-basis: 100%; border-right: 0; padding-right: 0; grid-column: 1 / -1; }
  .sumbar-st { border-left: 0; padding: 0; }
}
/* 2.108: экран «Акции» (promos.html, promo_product.html, promo_action.html; макеты docs/ui/mockups/promos) */
.pr-bad { display: inline-block; padding: 1px 6px; border-radius: var(--radius-s); background: var(--drr-bad); color: var(--minus); }
.pr-hint { color: var(--cobalt); cursor: help; }
.pr-sub { font-size: 12px; line-height: 14px; }
/* подпись «по тарифам» второй строкой под долей: не режется многоточием ячейки */
.pr-say { margin: 0 0 4px; }
.pr-price { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.pr-price input { width: 120px; }
.pr-lim { margin: 8px 0 0; font-size: 12.5px; }
.pr-cond { white-space: pre-line; margin: 8px 0 0; }
/* 2.109 §5: запись в Ozon — панель над таблицей и окно подтверждения (promo_write.js) */
.pw-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 8px 0; }
.pw-bar .pw-n { margin-right: auto; }
.pw-bar button:disabled { opacity: .5; cursor: default; }
/* неактивны, пока ничего не отмечено */
.pw-pick { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; }
.pw-pick select { min-width: 0; max-width: 100%; }
.pw-note { margin: 0 0 8px; font-size: 12.5px; }
.pw-all { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 10px; }
.pw-all input { width: 110px; }
.pw-scroll { overflow-x: auto; }
.pw-t td.pw-text, .pw-t th.pw-text { text-align: left; white-space: normal; min-width: 180px; }
.pw-t td { vertical-align: middle; }
.pw-t .pw-price { width: 110px; text-align: right; }
.pw-t tr.pw-more td { padding-top: 0; border-top: 0; font-size: 12.5px; }
.pw-t tr.pw-more .pw-text { min-width: 0; }
.pw-res td.pw-text { min-width: 0; }
.pw-res .pill { white-space: normal; }
.pj-wrap .tabulator-cell { white-space: normal; overflow-wrap: anywhere; }
.pw-t tr.pw-off td { color: var(--muted); }
.pw-sum { margin: 0 0 8px; }
.pw-err { flex: 1 1 100%; }
/* ===== Страницы, часть 2: очереди (Возвраты, Запуски, Страйки), Главная, вход, шапки окон ===== */
.board { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); }
/* Ц1.1: пропорция макета Home-A */
.board .stack { display: grid; gap: var(--gap); align-content: start; }
.board .stack > [hidden] { display: none; }
.news-details > summary { cursor: pointer; font-weight: 600; font-size: 15px; padding: 8px 0; min-height: var(--ctl-h); box-sizing: border-box; }
.news-details .news-card > .card-head h2 { display: none; }
.news-details .news-card > .card-head { justify-content: flex-end; }
@media (max-width: 860px) {
  .board { grid-template-columns: 1fr; }
}
@media (min-width: 861px) and (max-width: 900px) {
  .board { grid-template-columns: 1fr 1fr; }
  .tz-layout { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); }
  .tz-list { grid-row: span 2; }
  .tz-side { grid-column: 2; }
  .ad-back { display: none; }
}
/* Возвраты, «Что сделать» (3.2): список очереди — колонка (block queue), карточка выбранного — холст; пустая карточка не рисуется;
   ≤860 карточка — окном (NARROW страницы) */
aside.queue .tz-list { border: 0; background: none; padding: 0; border-radius: 0; }
#todo-card:empty { display: none; }
.rv-gone h2 { margin: 0 0 6px; font-size: 17px; }
.rv-gone p { margin: 6px 0 0; }
@media (max-width: 860px) {
  body[data-shell="pulpit"] #todo-card { display: none; }
}
/* Запуски InSales (4.1): очередь — колонка (фильтры, форма, список), запуск — на холсте iframe страницы ?embed=1 (высоту до низа окна
   ставит launches_queue.js); холст уже настольной раскладки запуска или ≤860 — окном (#tab-launches[data-view=window]), с колонкой — подсказка */
.ln-queue > .toolbar { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin: 0 0 8px; }
.ln-queue details.launch-admin { margin: 0 0 8px; }
.ln-queue details.launch-admin form.inline { display: flex; flex-direction: column; align-items: stretch; gap: 6px; margin: 8px 0; }
.ln-queue details.launch-admin .toolbar { display: flex; flex-direction: column; align-items: stretch; gap: 6px; margin: 8px 0 0; }
.ln-queue > p.muted { font-size: 12px; margin: 16px 0 0; }
.ln-canvas-head { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; margin: 12px 0 8px; }
.ln-canvas-t { font-weight: 600; font-size: 17px; min-width: 0; overflow-wrap: anywhere; }
.ln-canvas-head .button { margin-left: auto; }
.ln-frame { display: block; width: 100%; height: 70vh; border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--fog); }
.ln-gone h2 { margin: 0 0 6px; font-size: 17px; }
.ln-gone p { margin: 6px 0 0; }
#launch-hint { display: none; }
@media (min-width: 861px) {
  body[data-shell="pulpit"] #tab-launches[data-view="window"] #launch-hint { display: block; margin: 8px 0 0; }
  body[data-shell="pulpit"] #tab-launches #launch-gone:not([hidden]) ~ #launch-hint { display: none; }
}
#tab-launches[data-view="window"] #launch-canvas { display: none; }
.sk-queue #refresh-msg { margin: 6px 0 0; font-size: 13px; }
.sk-queue #refresh-msg:empty { display: none; }
.sk-untagged { margin: 12px 0 4px; padding: 10px 0 0; border-top: 1px solid var(--line); }
.sk-untagged > p { margin: 0 0 8px; font-size: 12px; }
.sk-bulk { display: flex; flex-direction: column; gap: 6px; }
.sk-bulk-acts { display: flex; flex-wrap: wrap; gap: 6px; }
.sk-bulk button { min-height: var(--ctl-h); box-sizing: border-box; }
.sk-bulk input { min-height: var(--ctl-h); box-sizing: border-box; width: 100%; }
.sk-bulk #confirm-hints { align-self: flex-start; }
.sk-find { width: 100%; min-height: var(--ctl-h); box-sizing: border-box; margin: 12px 0 0; }
.sk-bulk h2 { margin: 0; font-size: 13px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
/* в окне название — в шапке окна */
.sk-bulk .muted:empty { display: none; }
.sk-card { display: grid; gap: 14px; min-width: 0; max-width: 920px; }
main > .panel > .sk-card { border: 1px solid var(--line); border-radius: var(--radius-m); padding: 16px 18px; background: var(--sheet); }
#strike-card:empty { display: none; }
.sk-card-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
.sk-card-h h2 { margin: 0 auto 0 0; font-size: 20px; font-weight: 600; overflow-wrap: anywhere; }
.sk-card .cw-kv { font-size: 14px; gap: 6px 14px; }
.sk-goods, .sk-tries { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px; }
.sk-sec { display: grid; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); min-width: 0; }
.sk-sec h3 { margin: 0; font-size: 15px; }
.sk-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.sk-acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.sk-acts > * { min-height: var(--ctl-h); box-sizing: border-box; }
.sk-acts input { flex: 1 1 220px; min-width: 0; max-width: 360px; }
.sk-msg { margin: 0; }
.sk-msg:empty { display: none; }
.sk-chat { display: grid; gap: 8px; }
.sk-chat-m { border: 1px solid var(--line); border-radius: var(--radius-s); padding: 8px 10px; background: var(--fog); min-width: 0; }
.sk-chat-m.me { background: var(--accent-soft); }
.sk-chat-m .t { margin-top: 4px; white-space: pre-wrap; overflow-wrap: anywhere; }
.sk-gone h2 { margin: 0 0 6px; font-size: 17px; }
.sk-gone p { margin: 6px 0 0; }
@media (max-width: 860px) {
  body[data-shell="pulpit"] #strike-card { display: none; }
}
/* подпись группы очереди (WS.list с level: 2 — «Возвраты», «InSales»): h2 ради уровней заголовков (h1 → h2), вид — как у прежнего h3
   (.tz-group-h, app.css); общие правила h2 (app.css, .tz-list h2, returns.css main h2) сюда не доходят */
h2.tz-group-h { font-family: inherit; font-size: 12px; font-weight: 600; line-height: inherit; margin: 14px 0 4px; }
.tz-group-row > h2.tz-group-h { margin: 0; }
/* «Карточки» · Товары: подписи столбцов целиком (перенос слов, без «ТЕРЯЕМ…») */
#cards .tabulator-header .tabulator-col .tabulator-col-title { font-size: 11px; letter-spacing: 0; text-overflow: clip; }
#cards .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { padding-right: 16px; }
#cards .tabulator-header .tabulator-col .tabulator-col-content { padding-left: 6px; padding-right: 4px; }
.sessions-box .toolbar { margin-top: 12px; }
@media (max-width: 860px) {
  .ln-queue { display: flex; flex-direction: column; }
  .ln-queue > p.muted { order: -1; margin: 0 0 12px; font-size: 13px; }
}
/* Ц1.1 Главная: шапка (h1 + мета дня), полоса чисел .strip (макет Home-A), жёлтая строка синхронизации.
   Высота ячейки одна до и после загрузки (скелет .is-loading): подпись, значение и две строки под ним — по одной строке, длинное обрезается (полный текст — title) */
.home-hd { display: flex; align-items: center; flex-wrap: wrap; gap: 0 12px; margin-bottom: 16px; }
.home-hd .page-head { margin: 0; }
.home-hd .page-head h1 { margin-right: 0; }
.home-meta { min-height: 1.3em; font-size: 13px; line-height: 1.3; color: var(--muted); }
.note-warn { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 16px; padding: 8px 12px; font-size: 13px;
  color: var(--amber); border: 1px solid var(--amber); border-radius: 8px; background: color-mix(in srgb, var(--amber) 12%, var(--sheet)); }
.note-warn[hidden] { display: none; }
.note-warn .sp { flex: 1; }
.note-warn a { color: inherit; white-space: nowrap; }
.note-warn .sync-more > summary { cursor: pointer; }
.login-box .brand { display: flex; align-items: center; gap: 8px; font-size: 18px; }
.login-box .brand::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--lamp); }
.login-box input, .login-box button, .login-box a.button { min-height: var(--ctl-h); box-sizing: border-box; }
/* «Войти через Яндекс» (app.css: 44) — той же высоты, что кнопка пароля */
@media (max-width: 720px) {
  .login-box input, .login-box button, .login-box a.button, .login-box summary { min-height: 44px; }
}
/* P&L: у «Результата» итога нет (себестоимость известна не полностью) — слово без выделения итога (guide §0) */
/* только background-color: штриховка неполного месяца (.part — background-image, app.css) остаётся; при наведении — как обычная строка */
table.plain tr.key-row.no-total td { background-color: transparent; font-weight: 400; font-size: .92em; }
table.plain tr.key-row.no-total:hover td { background-color: var(--cobalt-soft); }
/* «По месяцам»: закреплённая подпись строки — непрозрачная, иначе числа проезжают под ней при прокрутке (app.css, table.plain.stat.mon) */
table.plain.stat.mon tr.key-row.no-total td:first-child, table.plain.stat.mon tr.key-row.no-total:hover td:first-child { background-color: var(--sheet); }
/* окно и страница карточки: «Целевые» / «Базовые» ключи — сворачиваемые разделы (guide §3.7) */
details.cw-fold { margin-top: 8px; }
details.cw-fold > summary.cw-grp { cursor: pointer; padding: 4px 0; }
details.cw-fold[open] > summary.cw-grp { margin-bottom: 6px; }
/* сводка ЮЭ: три колонки, показатели с примечанием («Маржа») занимают две — пять показателей идут 3 + 2 */
@media (max-width: 720px) {
  .sumbar { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 8px; align-items: start; }
  .sumbar-st:has(.s) { grid-column: span 2; }
  .sumbar-st .v { font-size: 15px; }
}
/* окно записи в акцию: «Применить ко всем:» — строкой, под ней выбор и «Применить» */
@media (max-width: 720px) {
  .pw-all { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 8px; }
  .pw-all > label { display: contents; }
  .pw-all select { grid-column: 1; grid-row: 2; min-width: 0; }
  .pw-all #pw-val { grid-column: 1; grid-row: 3; width: 100%; }
  .pw-all #pw-apply { grid-column: 2; grid-row: 2; }
  .pw-all #pw-applied { grid-column: 1 / -1; grid-row: 4; }
}
/* Ц1.1 Главная: «Что сделать» (число крупно · текст · тихая кнопка раздела), «Выбились вчера» (изменение крупно · название · причина) */
#attention .list-group { margin: 10px 0 2px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
#attention .list.rows > li { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.att-n { flex: none; min-width: 40px; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
#attention .row-main { flex: 1; min-width: 0; }
a.button.att-go { flex: none; margin-left: auto; border-color: transparent; background: transparent; color: var(--accent-ink); font-size: 13px; white-space: nowrap; }
#anomalies > li { display: flex; align-items: baseline; gap: 12px; padding: 6px 0; }
#anomalies > li.muted { display: block; }
#anomalies > li.row-open { cursor: pointer; }
#anomalies > li.row-open:hover { background: var(--hover, color-mix(in srgb, var(--line) 35%, transparent)); }
.an-d { flex: none; min-width: 64px; font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
#anomalies .row-main { flex: 1; min-width: 0; }
#anomalies .an-name { color: inherit; font-weight: 600; text-decoration: none; }
/* Ц1.1 Акции: колонка — «Участие» со счётчиками, «Риск» чипами с точками (макет Promos-B); пояснение оценки — третья ячейка полосы */
.context .fchips-col { display: flex; flex-direction: column; gap: 2px; }
.context .fchips-col .fchip { display: flex; align-items: center; gap: 8px; width: 100%; max-width: 100%; min-height: calc(var(--ctl-h) - 2px); padding: 0 10px; border: 1px solid transparent; border-radius: var(--radius-s); background: transparent; text-align: left; box-shadow: none; font-size: inherit; }
.context .fchips-col .fchip:hover { background: color-mix(in srgb, var(--ink) 6%, transparent); }
.context .fchips-col .fchip[aria-pressed="true"] { background: var(--sel); border-color: var(--sel-edge); color: var(--accent-ink); }
.context .fchips-col .fchip .t { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.context .fchips-col .fchip .n, .context .segmented button .n { margin-left: auto; color: var(--muted); font-variant-numeric: tabular-nums; }
.context .fchips-sub { margin: 8px 0 2px; padding-left: 2px; font-size: 12px; color: var(--muted); }
#tab-products .strip .cell, #tab-actions .strip .cell { padding-inline: 8px; }

/* окно «Инструкция» (Ц2.3, help.js): корень текста — .help-text; разметка — web/help.py */
.help-text { line-height: 1.5; overflow-wrap: anywhere; }
.help-text :is(h1, h2, h3) { scroll-margin-top: 104px; line-height: 1.25; }
.help-text h2 { margin: 24px 0 8px; font-size: 16px; }
.help-text h3 { margin: 16px 0 6px; font-size: 14px; }
.help-text p { margin: 0 0 10px; }
.help-text ul, .help-text ol { margin: 0 0 10px; padding-left: 22px; }
.help-text details { border: 1px solid var(--line); border-radius: var(--radius-m); padding: 8px 12px; margin: 0 0 10px; }
.help-text summary { cursor: pointer; font-weight: 600; }
.help-text details[open] > summary { margin-bottom: 8px; }
.help-text .help-table { overflow-x: auto; margin: 0 0 10px; }
.help-text .help-table table { border-collapse: collapse; }
.help-text .help-table th, .help-text .help-table td { border: 1px solid var(--line); padding: 4px 8px; text-align: left; vertical-align: top; }
.help-text a { color: var(--cobalt); }

/* ===== Окно товара каталога склада (З2.5, S/sklad_catalog_item.js; guide §10) ===== */
.cc-art { margin: 0; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 20px; overflow-wrap: anywhere; display: inline; }
.cc-dl { display: grid; grid-template-columns: minmax(120px, 200px) minmax(0, 1fr); gap: 6px 16px; margin: 12px 0; }
.cc-dl dt { color: var(--muted); }
.cc-dl dd { margin: 0; overflow-wrap: anywhere; }
.cc-edit { display: grid; gap: 10px; border-top: 1px solid var(--line); padding-top: 12px; }
.cc-chz { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cc-hint { margin: 0; }
.cc-nb { display: grid; gap: 8px; margin: 0 0 12px; }
.cc-nb-act { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cc-nb-note, .cc-nb-rel { margin: 0; }
.cc-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 8px; align-items: end; }
.cc-field label { display: grid; gap: 4px; min-width: 0; }
.cc-field input { width: 100%; box-sizing: border-box; min-width: 0; }
.cc-err { grid-column: 1 / -1; color: var(--minus); }
.cc-chz-err, .cc-nb-err { color: var(--minus); }
@media (max-width: 860px) { .cc-dl { grid-template-columns: 1fr; gap: 0; } .cc-dl dd { margin-bottom: 8px; } }
/* Каталог склада: окно загрузки выгрузки 1С (sklad_catalog_upload.js, З2.5) */
.cu-sum { margin: 8px 0; padding-left: 18px; }
.cu-err { color: var(--minus); margin: 8px 0; }
.cu-new { margin: 8px 0; } .cu-new > summary { cursor: pointer; } .cu-new p { margin: 4px 0 0; overflow-wrap: anywhere; }
.cu-err ul { margin: 4px 0; padding-left: 18px; }
.cu-warn { display: flex; gap: 8px; align-items: flex-start; margin: 8px 0; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, var(--amber) 14%, var(--sheet)); }
.cu-grp { margin-top: 16px; }
.cu-gh { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; }
.cu-gh h4 { margin: 0; }
.cu-hint { margin: 4px 0 8px; }
table.plain.cu-t td, table.plain.cu-t th { text-align: left; }
table.plain.cu-t td:not(:first-child), table.plain.cu-t th:not(:first-child) { white-space: normal; overflow-wrap: anywhere; }
table.plain.cu-t td:first-child, table.plain.cu-t th:first-child { width: 28px; }

/* окно загрузки PDF кодов ЧЗ — ChzUpload, /chz и /returns */
.chz-up-t { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 13px; }
.chz-up-t th, .chz-up-t td { text-align: left; padding: 4px 6px; border-bottom: 1px solid var(--line); }
.chz-up-warn { margin: 8px 0; padding: 8px 12px; border: 1px solid var(--amber); border-radius: var(--radius-m); background: color-mix(in srgb, var(--lamp) 20%, var(--sheet)); font-size: 13px; }
.chz-up-warn p { margin: 0 0 4px; }
.chz-up-l { margin: 0 0 6px; padding-left: 18px; }
.chz-up-err { color: var(--minus); font-size: 13px; margin: 8px 0 0; }
