/* «Пульт · Лампа» — второй вид дашборда (спецификация 2026-10-18-pulpit-redesign-design.md, план 1.2).
   Всё под :root[data-ui="pulpit"], app.css и returns.css не меняются: токены Лампы/Ночи — новые значения прежних имён
   (--ink, --fog, --sheet, --cobalt, …), поэтому правила app.css получают новый вид сами. Макет — docs/ui/proposals/2026-10-18-fresh-look/;
   hex — только в трёх блоках токенов (tests/test_web_pulpit_theme.py). В окне (?embed=1) работают токены и шрифт, высота контролов .filters, button.primary, вид выбранного (button[aria-pressed]) и :focus-visible (так задумано), оболочка — только под body[data-shell].
   Шрифты — @fontsource 5.2.8, OFL (static/fonts/OFL-*.txt). Порог навигации — 860 px (K15). */
@font-face { font-family: "Golos Text"; font-weight: 400; font-display: swap; src: url(/static/fonts/golos-text-cyrillic-400-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-weight: 400; font-display: swap; src: url(/static/fonts/golos-text-latin-400-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2212; }
@font-face { font-family: "Golos Text"; font-weight: 500; font-display: swap; src: url(/static/fonts/golos-text-cyrillic-500-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-weight: 500; font-display: swap; src: url(/static/fonts/golos-text-latin-500-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2212; }
@font-face { font-family: "Golos Text"; font-weight: 600; font-display: swap; src: url(/static/fonts/golos-text-cyrillic-600-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-weight: 600; font-display: swap; src: url(/static/fonts/golos-text-latin-600-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2212; }
@font-face { font-family: "JetBrains Mono"; font-weight: 400; font-display: swap; src: url(/static/fonts/jetbrains-mono-cyrillic-400-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "JetBrains Mono"; font-weight: 400; font-display: swap; src: url(/static/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2212; }
@font-face { font-family: "JetBrains Mono"; font-weight: 500; font-display: swap; src: url(/static/fonts/jetbrains-mono-cyrillic-500-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "JetBrains Mono"; font-weight: 500; font-display: swap; src: url(/static/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2212; }

:root[data-ui="pulpit"] {
  color-scheme: light;
  --ink: #1c1a16; --fog: #f3f1ec; --sheet: #faf9f6; --line: #ddd6c8; --muted: #6a655c;
  --cobalt: #1f5f8b; --cobalt-soft: #e4eef5; --amber: #7a5e0a; --plus: #2f6b4f; --minus: #b42318;
  --on-accent: #ffffff; --row-alt: #f6f4ef; --drr-bad: #f6dcd8; --drr-good: #dcebe2; --grid: #e6e0d3;
  --chart-1: #1f5f8b; --chart-2: #1a7f7a; --chart-3: #b8860b; --chart-4: #7b3f8c; --chart-5: #8a8478;
  --mp-ozon: #005BFF; --mp-wb: #CB11AB; --mp-ym: #FFCC00; --mp-ozon-ink: #0047C7; --mp-wb-ink: #9B0B83; --mp-ym-ink: #5E4800;
  --accent: #1f5f8b; --accent-soft: #e4eef5; --accent-ink: #163e5c;
  --lamp: #c9a227; --rail: #17191d; --rail-on: #23262c; --rail-ink: #ece7dc; --rail-mute: #9a958a; --ctx: #ebe7df;
  --rail-w: 224px; --rail-w-min: 56px; --rail-col: var(--rail-w-min); --ctx-w: 268px; --q-w: 312px; --radius-s: 6px; --radius-m: 10px; --ctl-h: 36px;
  --sel: rgba(31, 95, 139, .14); --sel-edge: rgba(31, 95, 139, .45);
}
:root[data-ui="pulpit"][data-theme="dark"] {
  color-scheme: dark;
  --ink: #efe8d8; --fog: #161410; --sheet: #1a1814; --line: #3a362e; --muted: #9a9284;
  --cobalt: #7eb0d0; --cobalt-soft: #2a3138; --amber: #d4ad3a; --plus: #7dba98; --minus: #ec7e74;
  --on-accent: #0f0e0c; --row-alt: #262219; --drr-bad: #4a2824; --drr-good: #1f3a2c; --grid: #2a2720;
  --chart-1: #7eb0d0; --chart-2: #4fc2b8; --chart-3: #d4ad3a; --chart-4: #c792db; --chart-5: #a39b8c;
  --mp-ozon: #005BFF; --mp-wb: #CB11AB; --mp-ym: #FFCC00; --mp-ozon-ink: #8DB2FF; --mp-wb-ink: #EE8EDD; --mp-ym-ink: #FFD84D;
  --accent: #7eb0d0; --accent-soft: #2a3138; --accent-ink: #d7eaf4; --sel: rgba(126, 176, 208, .18); --sel-edge: rgba(126, 176, 208, .4);
  --lamp: #d4ad3a; --rail: #100f0d; --rail-on: #1c1a16; --rail-ink: #efe8d8; --rail-mute: #8f8778; --ctx: #262219;
}
@media (prefers-color-scheme: dark) {
  :root[data-ui="pulpit"]:not([data-theme="light"]) {
    color-scheme: dark;
    --ink: #efe8d8; --fog: #161410; --sheet: #1a1814; --line: #3a362e; --muted: #9a9284;
    --cobalt: #7eb0d0; --cobalt-soft: #2a3138; --amber: #d4ad3a; --plus: #7dba98; --minus: #ec7e74;
    --on-accent: #0f0e0c; --row-alt: #262219; --drr-bad: #4a2824; --drr-good: #1f3a2c; --grid: #2a2720;
    --chart-1: #7eb0d0; --chart-2: #4fc2b8; --chart-3: #d4ad3a; --chart-4: #c792db; --chart-5: #a39b8c;
    --mp-ozon: #005BFF; --mp-wb: #CB11AB; --mp-ym: #FFCC00; --mp-ozon-ink: #8DB2FF; --mp-wb-ink: #EE8EDD; --mp-ym-ink: #FFD84D;
    --accent: #7eb0d0; --accent-soft: #2a3138; --accent-ink: #d7eaf4; --sel: rgba(126, 176, 208, .18); --sel-edge: rgba(126, 176, 208, .4);
    --lamp: #d4ad3a; --rail: #100f0d; --rail-on: #1c1a16; --rail-ink: #efe8d8; --rail-mute: #8f8778; --ctx: #262219;
  }
}
:root[data-ui="pulpit"] body { font-family: "Golos Text", system-ui, sans-serif; }
:root[data-ui="pulpit"] .num, :root[data-ui="pulpit"] td.num { font-family: "JetBrains Mono", ui-monospace, monospace; }
:root[data-ui="pulpit"] button.primary, :root[data-ui="pulpit"] a.button.primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
:root[data-ui="pulpit"] :focus-visible { outline-color: var(--accent); }
/* Выбранное в новом виде — приглушённый голубой, не сплошная заливка (button.primary остаётся сплошным) */
:root[data-ui="pulpit"] button[aria-pressed="true"]:not(.primary) { background: var(--sel); border-color: var(--sel-edge); color: var(--accent-ink); }
:root[data-ui="pulpit"] button.fchips-h[aria-pressed="true"] { color: var(--accent-ink); }
/* Радиусы: контролы — --radius-s, панели и карточки — --radius-m, чипы — 999px; жёсткие значения app.css на токены */
:root[data-ui="pulpit"] .selbar { border-radius: var(--radius-s); }
:root[data-ui="pulpit"] .ws-split > .tz-list { border-radius: var(--radius-m); }
:root[data-ui="pulpit"] .ws-prop { border-radius: var(--radius-s); }
/* Переключатель над содержимым страницы — отступ до следующего блока (админка «Люди / Роли / Данные») */
:root[data-ui="pulpit"] main > .segmented { margin-bottom: 16px; }

/* ----- оболочка: рейка + колонка + холст (<main>) ----- */
:root[data-ui="pulpit"] body[data-shell="pulpit"] {
  display: grid; grid-template-columns: var(--rail-col) minmax(0, 1fr); align-items: start; min-height: 100vh; padding-bottom: 0;
}
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="tools"] { grid-template-columns: var(--rail-col) var(--ctx-w) minmax(0, 1fr); }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] { grid-template-columns: var(--rail-col) var(--q-w) minmax(0, 1fr); }
:root[data-ui="pulpit"][data-tools="collapsed"] body[data-shell="pulpit"][data-slot="tools"] { grid-template-columns: var(--rail-col) minmax(0, 1fr); }
:root[data-ui="pulpit"] body[data-shell="pulpit"] > nav.rail { grid-column: 1; grid-row: 1; }
:root[data-ui="pulpit"] body[data-shell="pulpit"] > aside { grid-row: 1; grid-column: 2; display: none; }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="tools"] > aside.context { display: block; }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > aside.queue { display: block; }
:root[data-ui="pulpit"][data-tools="collapsed"] body[data-shell="pulpit"] > aside.context { display: none; }
:root[data-ui="pulpit"] body[data-shell="pulpit"] > main { grid-row: 1; grid-column: -2; min-width: 0; max-width: none; margin: 0; width: 100%; padding: 24px 28px 32px; background: var(--sheet); min-height: 100vh; }
:root[data-ui="pulpit"] body[data-shell="pulpit"] > aside {
  position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: 18px 16px; background: var(--ctx); border-right: 1px solid var(--line);
  box-shadow: inset 0 3px 0 var(--lamp);
}
:root[data-ui="pulpit"] body[data-shell="pulpit"] > aside:empty { padding: 0; }

/* ----- рейка: список прокручивается внутри, блок пользователя закреплён ----- */
:root[data-ui="pulpit"] nav.rail { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; background: var(--rail); color: var(--rail-ink); }
:root[data-ui="pulpit"] nav.rail a, :root[data-ui="pulpit"] nav.rail button { color: var(--rail-ink); text-decoration: none; }
:root[data-ui="pulpit"] .rail-brand { flex: none; padding: 18px 18px 14px; font-weight: 600; font-size: 17px; letter-spacing: .01em; }
:root[data-ui="pulpit"] .rail-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 4px 8px 12px; display: flex; flex-direction: column; gap: 2px; }
:root[data-ui="pulpit"] .rail-item { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; padding: 8px 10px; min-height: var(--ctl-h);
  border: 0; border-radius: var(--radius-s); background: none; font: inherit; font-size: 14px; text-align: left; cursor: pointer; }
:root[data-ui="pulpit"] .rail-item:hover, :root[data-ui="pulpit"] .rail-item:focus-visible { background: var(--rail-on); }
:root[data-ui="pulpit"] .rail-item .ico { flex: none; width: 24px; height: 24px; color: var(--rail-mute); }
:root[data-ui="pulpit"] .rail-item.active .ico, :root[data-ui="pulpit"] .rail-group.active > .rail-item .ico { color: var(--lamp); }
:root[data-ui="pulpit"] .rail-item.active, :root[data-ui="pulpit"] .rail-group.active > .rail-item { background: var(--rail-on); font-weight: 500; }
:root[data-ui="pulpit"] .rail-item.active::before, :root[data-ui="pulpit"] .rail-group.active > .rail-item::before { content: ""; position: absolute; left: -8px; top: 6px; bottom: 6px; width: 3px; border-radius: 2px; background: var(--lamp); }
:root[data-ui="pulpit"] .rail-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:root[data-ui="pulpit"] .rail-caret::after { content: "▾"; font-size: 11px; color: var(--rail-mute); }
:root[data-ui="pulpit"] .rail-item[aria-expanded="true"] .rail-caret::after { content: "▴"; }
:root[data-ui="pulpit"] .rail-group > ul { list-style: none; margin: 0 0 4px; padding: 0 0 0 14px; }
:root[data-ui="pulpit"] .rail-item[aria-expanded="false"] + ul { display: none; }
:root[data-ui="pulpit"] .rail-group > ul a { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: var(--radius-s); font-size: 14px; color: var(--rail-mute); }
:root[data-ui="pulpit"] .rail-group > ul a:hover, :root[data-ui="pulpit"] .rail-group > ul a:focus-visible { background: var(--rail-on); color: var(--rail-ink); }
:root[data-ui="pulpit"] .rail-group > ul a.active { color: var(--lamp); font-weight: 500; }
:root[data-ui="pulpit"] nav.rail .badge { padding: 0 6px; font-size: 12px; line-height: 18px; background: var(--lamp); color: var(--rail); }
:root[data-ui="pulpit"] .rail-me { flex: none; padding: 10px 12px 14px; border-top: 1px solid var(--rail-on); display: grid; gap: 8px; }
:root[data-ui="pulpit"] .rail-user { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:root[data-ui="pulpit"] .rail-acts { display: flex; flex-wrap: wrap; gap: 6px; }
:root[data-ui="pulpit"] .rail-acts button { padding: 4px 10px; font-size: 13px; background: var(--rail-on); border: 1px solid var(--rail-on); border-radius: var(--radius-s); cursor: pointer; }
:root[data-ui="pulpit"] .rail-acts button:hover { border-color: var(--rail-mute); }
:root[data-ui="pulpit"] .rail-acts .theme-icon { width: 14px; height: 14px; vertical-align: -2px; }
:root[data-ui="pulpit"] nav.rail :focus-visible { outline-color: var(--lamp); }

/* ----- сворачиваемая рейка (2.148, В3; решение 23.10): в сетке — колонка иконок --rail-w-min. Раскрывает только ярлык-стрелка (наведение и Tab — нет).
   ≥1280 раскрытая рейка в сетке (--rail-w, сдвигает холст): html[data-rail="open"] — сервер из ui.rail, pulpit.js; 861–1279 лежит поверх холста
   на nav.rail[data-open] (не запоминается). Одна копия правил раскрытия — на оба атрибута (:is). z-index 20 ниже выпадающих (30),
   нижней панели (40), подписи загрузки (45) и окон .modal (50). ----- */
@media (min-width: 861px) {
  :root[data-ui="pulpit"] nav.rail { z-index: 20; justify-self: start; width: var(--rail-w-min); transition: width .15s ease, box-shadow .15s ease; }
  :root[data-ui="pulpit"] .rail-top { display: flex; align-items: center; justify-content: center; flex: none; padding: 14px 6px 8px; overflow: hidden; }
  :root[data-ui="pulpit"] .rail-me { overflow: hidden; }
  /* ярлык со стрелкой на правой границе рейки: наполовину на холсте, по центру экрана; рейка не обрезает (overflow у .rail-top / .rail-me), едет с краем при анимации ширины */
  :root[data-ui="pulpit"] .rail-toggle { position: absolute; z-index: 1; top: 50%; right: -7px; transform: translateY(-50%); width: 14px; height: 48px; padding: 0; display: flex; align-items: center; justify-content: center;
    color: var(--rail-mute); background: var(--rail); border: 1px solid var(--rail-on); border-radius: var(--radius-s); cursor: pointer; }
  :root[data-ui="pulpit"] .rail-toggle::before { content: ""; position: absolute; inset: 0 -9px; }   /* зона нажатия 32×48 */
  :root[data-ui="pulpit"] .rail-toggle:hover { color: var(--rail-ink); background: var(--rail-on); border-color: var(--rail-mute); }
  :root[data-ui="pulpit"] .rail-toggle svg { display: block; transition: transform .15s ease; }
  :root[data-ui="pulpit"] .rail-toggle[aria-expanded="true"] svg { transform: scaleX(-1); }
  :root[data-ui="pulpit"] .rail-brand { display: block; padding: 0; width: 100%; text-align: center; line-height: var(--ctl-h); }
  :root[data-ui="pulpit"] .rail-brand-rest { display: none; }
  :root[data-ui="pulpit"] .rail-list { padding: 4px 6px 12px; overflow-x: hidden; }
  :root[data-ui="pulpit"] .rail-item.active::before, :root[data-ui="pulpit"] .rail-group.active > .rail-item::before { left: -6px; }
  :root[data-ui="pulpit"] .rail-label, :root[data-ui="pulpit"] .rail-caret, :root[data-ui="pulpit"] .rail-group > ul, :root[data-ui="pulpit"] .rail-user { display: none; }
  /* бейдж заявок на свёрнутой рейке — точка на иконке (K14a) */
  :root[data-ui="pulpit"] nav.rail .badge { position: absolute; top: 6px; right: 6px; width: 9px; height: 9px; padding: 0; font-size: 0; line-height: 0; border-radius: 50%; border: 2px solid var(--rail); box-sizing: content-box; }
  :root[data-ui="pulpit"] .rail-me { padding: 10px 6px 14px; }
  :root[data-ui="pulpit"] .rail-acts { flex-direction: column; align-items: center; }
  :root[data-ui="pulpit"] .rail-acts > :not([data-theme-toggle]) { display: none; }
  :root[data-ui="pulpit"] .rail-acts [data-theme-toggle] { font-size: 0; width: var(--ctl-h); padding: 0; display: flex; align-items: center; justify-content: center; }
  :root[data-ui="pulpit"] .rail-acts .theme-icon { width: 16px; height: 16px; vertical-align: baseline; }
  /* раскрытая */
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) { width: var(--rail-w); }
  :root[data-ui="pulpit"] nav.rail[data-open] { box-shadow: 6px 0 24px color-mix(in srgb, var(--rail) 45%, transparent); }   /* тень — только у рейки поверх холста */
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-top { justify-content: flex-start; padding-left: 8px; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-brand { text-align: left; padding: 0 8px; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-brand-rest { display: inline; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-list { padding: 4px 8px 12px; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-item.active::before, :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-group.active > .rail-item::before { left: -8px; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) :is(.rail-label, .rail-user, .rail-caret) { display: block; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .badge { position: static; width: auto; height: auto; padding: 0 6px; font-size: 12px; line-height: 18px; border: 0; border-radius: var(--radius-s); box-sizing: border-box; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-group > ul { display: block; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-item[aria-expanded="false"] + ul { display: none; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-me { padding: 10px 12px 14px; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-acts { flex-direction: row; align-items: stretch; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-acts > :not([data-theme-toggle]) { display: inline-block; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-acts [data-theme-toggle] { font-size: 13px; width: auto; padding: 4px 10px; display: inline-block; }
  :root[data-ui="pulpit"] :is(nav.rail[data-open], :root[data-rail="open"] nav.rail) .rail-acts .theme-icon { width: 14px; height: 14px; vertical-align: -2px; }
}
/* ≥1280: раскрытая рейка входит в сетку (первая колонка --rail-w), без тени «поверх»; ниже — лежит поверх холста */
@media (min-width: 1280px) {
  :root[data-ui="pulpit"][data-rail="open"] { --rail-col: var(--rail-w); }
}
@media (prefers-reduced-motion: reduce) { :root[data-ui="pulpit"] nav.rail { transition: none; } }
@media (max-width: 860px) { :root[data-ui="pulpit"] .rail-toggle { display: none; } }

/* ----- контролы фильтров: одна высота (R5) ----- */
/* Одна высота контролов на всех панелях (2.148, В5): кнопки, списки и поля; чипы .fchip — метки, остаются мельче; строки очереди .tz-item-b — карточки списка. Проверка — PULPIT_PROBE в tools/ui_audit.py. */
:root[data-ui="pulpit"] :is(.rail, .context, #queue, .canvas-bar, main .toolbar, main .filters) :is(button, select, input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file])):not(.fchip):not(.tz-item-b) { min-height: var(--ctl-h); box-sizing: border-box; }
:root[data-ui="pulpit"] .rail .rail-item { height: var(--ctl-h); }   /* пункты рейки — однострочные, высота жёсткая (их собственный padding+строка дают 40) */

/* ----- подпись загрузки: шапки больше нет ----- */
:root[data-ui="pulpit"] #loading-note { top: 12px; }

/* ----- ≤860: рейки и колонки нет, нижняя панель ----- */
@media (max-width: 860px) {
  :root[data-ui="pulpit"] { --tabbar: 64px; }
  /* фон body = лист холста: на короткой странице (приёмка, /password) под <main> не видно полосы другого цвета */
  :root[data-ui="pulpit"] body[data-shell="pulpit"], :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot] { display: block; padding-bottom: calc(var(--tabbar) + 8px); background: var(--sheet); }
  :root[data-ui="pulpit"] body[data-shell="pulpit"] > nav.rail, :root[data-ui="pulpit"] body[data-shell="pulpit"] > aside { display: none !important; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"] > main { padding: 16px; min-height: 0; }
  :root[data-ui="pulpit"] nav.tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; height: var(--tabbar); background: var(--sheet);
    border-top: 1px solid var(--line); z-index: 40; padding-bottom: env(safe-area-inset-bottom); }
  :root[data-ui="pulpit"] nav.tabbar > a, :root[data-ui="pulpit"] nav.tabbar summary { flex: 1; display: flex; align-items: center; justify-content: center; text-align: center;
    color: var(--ink); text-decoration: none; font-size: 13px; padding: 4px; list-style: none; cursor: pointer; }
  :root[data-ui="pulpit"] nav.tabbar > a[aria-current="page"] { color: var(--accent); font-weight: 600; background: var(--accent-soft); }
  :root[data-ui="pulpit"] nav.tabbar details.more > summary[aria-current="page"], :root[data-ui="pulpit"] nav.tabbar details.more > div a[aria-current="page"] { color: var(--accent); font-weight: 600; background: var(--accent-soft); }
  :root[data-ui="pulpit"] nav.tabbar details.more { flex: 1; display: flex; }
  :root[data-ui="pulpit"] nav.tabbar details.more > div { position: fixed; bottom: var(--tabbar); left: 0; right: 0; background: var(--sheet);
    border-top: 1px solid var(--line); display: flex; flex-direction: column; padding: 8px 16px; max-height: calc(100vh - var(--tabbar)); overflow-y: auto; }
  :root[data-ui="pulpit"] nav.tabbar details.more > div a, :root[data-ui="pulpit"] nav.tabbar details.more > div button { display: flex; align-items: center; padding: 12px 8px; text-align: left; border: 0;
    border-bottom: 1px solid var(--line); border-radius: 0; background: none; min-height: 44px; color: var(--ink); text-decoration: none; font-size: 15px; }
  :root[data-ui="pulpit"] nav.tabbar details.more > div a[aria-current="page"] { background: var(--accent-soft); }
  :root[data-ui="pulpit"][data-embed] { --tabbar: 0px; }
  :root[data-ui="pulpit"][data-embed] body { padding-bottom: 0; }
  :root[data-ui="pulpit"] #loading-note { top: 12px; }
}
@media (max-width: 720px) {
  :root[data-ui="pulpit"] { --ctl-h: 44px; }   /* телефон: одна высота контролов 44 px (В5) */
}

/* ----- колонка фильтров: кнопки и строка-сводка (1.3); логика — pulpit.js ----- */
:root[data-ui="pulpit"] .canvas-bar { display: none; align-items: center; gap: 12px; margin: 0 0 12px; min-width: 0; }
:root[data-ui="pulpit"] body[data-slot="tools"] .canvas-bar { display: flex; }
:root[data-ui="pulpit"] .canvas-bar .tools-open { display: none; }
:root[data-ui="pulpit"][data-tools="collapsed"] .canvas-bar .tools-open { display: inline-block; }
:root[data-ui="pulpit"] .tools-summary { display: none; color: var(--muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
:root[data-ui="pulpit"][data-tools="collapsed"] .tools-summary:not(:empty) { display: block; }
:root[data-ui="pulpit"] .ctx-close { display: block; margin: 0 0 8px auto; }   /* «Свернуть» — своя строка над содержимым колонки, не обтекается */
:root[data-ui="pulpit"] [data-for][hidden] { display: none; }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="queue"] > aside.queue { display: block; }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="queue"] > aside.context { display: none; }
/* Страница с очередью и вкладками (возвраты, 3.2): data-slot="queue" от сервера, сетку и колонку дальше задаёт режим
   видимой вкладки (data-mode из pulpit.js): queue — список, tools — фильтры (сворачиваются), none — вкладка без колонки */
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="queue"] { grid-template-columns: var(--rail-col) var(--q-w) minmax(0, 1fr); }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="tools"] { grid-template-columns: var(--rail-col) var(--ctx-w) minmax(0, 1fr); }
:root[data-ui="pulpit"][data-tools="collapsed"] body[data-shell="pulpit"][data-mode="tools"],
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="none"] { grid-template-columns: var(--rail-col) minmax(0, 1fr); }
:root[data-ui="pulpit"]:not([data-tools="collapsed"]) body[data-shell="pulpit"][data-mode="tools"] > aside.context { display: block; }
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="tools"] > aside.queue,
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="none"] > aside.queue,
:root[data-ui="pulpit"] body[data-shell="pulpit"][data-mode="none"] > aside.context { display: none; }
:root[data-ui="pulpit"] body[data-mode="tools"] .canvas-bar { display: flex; }
:root[data-ui="pulpit"] body[data-mode="queue"] .canvas-bar, :root[data-ui="pulpit"] body[data-mode="none"] .canvas-bar { display: none; }
@media (max-width: 860px) {
  :root[data-ui="pulpit"] body[data-slot="tools"] .canvas-bar .tools-open { display: inline-block; }
  :root[data-ui="pulpit"] .tools-summary:not(:empty) { display: block; }
  :root[data-ui="pulpit"][data-tools-open] body[data-shell="pulpit"][data-slot="tools"] > aside.context { display: block !important; position: static; height: auto; width: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  :root[data-ui="pulpit"] .ctx-close { display: none; }
  :root[data-ui="pulpit"][data-tools-open] .ctx-close { display: block; }
  :root[data-ui="pulpit"] body[data-mode="tools"] .canvas-bar .tools-open { display: inline-block; }
  :root[data-ui="pulpit"][data-tools-open] body[data-shell="pulpit"][data-mode="tools"] > aside.context { display: block !important; position: static; height: auto; width: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  /* очередь на узком — список во всю ширину под заголовком и вкладками холста (карточка — окном, NARROW страницы) */
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] { display: flex; flex-direction: column; align-items: stretch; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > aside.queue { order: -1; }   /* действия и поиск колонки — над содержимым холста (ошибки, карточка) */
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"]:not([data-mode="tools"]):not([data-mode="none"]) > aside.queue {
    display: block !important; position: static; height: auto; width: auto; overflow: visible; border-right: 0; box-shadow: none; padding: 0 16px 16px; background: none; }
  /* 2.148 В7: на ≤860 заголовок остаётся на холсте, а очередь стоит над холстом (order:-1) — поднимаем над ней заголовок и вкладки:
     <main> растворяется, его дети — элементы колонки body (поля 16 px вместо padding main; фон body у холста тот же) */
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main { display: contents; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main > * { margin-left: 16px; margin-right: 16px; min-width: 0; max-width: calc(100% - 32px); }
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main > h1 { order: -3; margin-top: 16px; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main > .filters-tight,
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main > .segmented { order: -2; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"][data-slot="queue"] > main > :last-child:not(script) { margin-bottom: 16px; }
}

/* 2.148 В7: заголовок страницы — первая строка колонки (pulpit.js, placeTitle); шапка холста без пустой строки, пока колонка открыта */
:root[data-ui="pulpit"] :is(aside.context, aside.queue) > h1 { margin: 0 0 14px; font-size: 18px; line-height: 1.25; font-weight: 600; letter-spacing: -.01em; overflow-wrap: anywhere; }
@media (min-width: 861px) {
  :root[data-ui="pulpit"]:not([data-tools="collapsed"]) body[data-mode="tools"] > main > .canvas-bar,
  :root[data-ui="pulpit"]:not([data-tools="collapsed"]) body[data-slot="tools"]:not([data-mode]) > main > .canvas-bar { display: none; }
}

:root[data-ui="pulpit"] .rail-group > ul .ico { width: 18px; height: 18px; flex: none; }

/* ----- Главная (1.4): плитки .dials, доска «работа слева, аномалии и новости справа», новости в <details> ----- */
:root[data-ui="pulpit"] .tool-group .list.rows > li { flex-wrap: wrap; }
:root[data-ui="pulpit"] .dials { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0; margin-bottom: 24px;
  border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--sheet); overflow: hidden; }
:root[data-ui="pulpit"] .dials .tile { border: 0; border-radius: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: none; box-shadow: none; }
:root[data-ui="pulpit"] .dials .tile-value { font-family: "JetBrains Mono", ui-monospace, monospace; font-variant-numeric: tabular-nums; }
:root[data-ui="pulpit"] .board { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
:root[data-ui="pulpit"] .board-h { margin: 0 0 4px; font-size: 15px; font-weight: 600; }
:root[data-ui="pulpit"] .board .stack { display: grid; gap: var(--gap); align-content: start; }
:root[data-ui="pulpit"] .board .stack > [hidden] { display: none; }
:root[data-ui="pulpit"] .news-details > summary { cursor: pointer; font-weight: 600; font-size: 15px; padding: 8px 0; min-height: var(--ctl-h); box-sizing: border-box; }
:root[data-ui="pulpit"] .news-details .news-card > .card-head h2 { display: none; }
:root[data-ui="pulpit"] .news-details .news-card > .card-head { justify-content: flex-end; }
@media (max-width: 860px) { :root[data-ui="pulpit"] .board { grid-template-columns: 1fr; } }

/* 2.148 В3: общие правила app.css «≤900 — одна колонка» в новом виде включаются на ≤860 (порог навигации): на 861–900 возвращаем двухколонную раскладку.
   «≤1240: Готовность под карточкой» (app.css) оставлена: она считает от ширины холста, а не окна (холст = окно − рейка − колонка) */
@media (min-width: 861px) and (max-width: 900px) {
  :root[data-ui="pulpit"] .cols { grid-template-columns: 1fr 1fr; }
  :root[data-ui="pulpit"] .tz-layout { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); }
  :root[data-ui="pulpit"] .tz-list { grid-row: span 2; }
  :root[data-ui="pulpit"] .tz-side { grid-column: 2; }
  :root[data-ui="pulpit"] .ws-split { grid-template-columns: minmax(260px, 380px) minmax(0, 1fr); }
  :root[data-ui="pulpit"] .ws-split > .tz-card { position: sticky; }
  :root[data-ui="pulpit"] .ad-back { display: none; }
}


/* ----- окна товаров и вложенные страницы (2.6): .pw-win, .modal, .cw-*; раскладка прежняя, только токены Лампы/Ночи ----- */
:root[data-ui="pulpit"] .modal { background: color-mix(in srgb, var(--ink) 40%, transparent); }
:root[data-ui="pulpit"] .modal .dialog { border: 1px solid var(--line); box-shadow: 0 16px 40px color-mix(in srgb, var(--ink) 16%, transparent); }
:root[data-ui="pulpit"] .pw-win { border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--fog);
  box-shadow: 0 16px 40px color-mix(in srgb, var(--ink) 16%, transparent); }   /* тёплая тень от --ink, без холодной синевы */
:root[data-ui="pulpit"] .pw-head { background: var(--sheet); border-bottom: 1px solid var(--line); }
:root[data-ui="pulpit"] .pw-title { font-weight: 600; }
:root[data-ui="pulpit"] .pw-frame { background: var(--fog); }
:root[data-ui="pulpit"] .cw-title h1 { font-size: 22px; font-weight: 600; letter-spacing: -.01em; }
:root[data-ui="pulpit"] .cw-meta { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 12px; }
:root[data-ui="pulpit"] .cw-main > .card, :root[data-ui="pulpit"] .cw-side > .card { background: var(--sheet); border: 1px solid var(--line); box-shadow: none; }
:root[data-ui="pulpit"] .cw-kv dd { font-variant-numeric: tabular-nums; }
:root[data-ui="pulpit"] .cw-lost { background: color-mix(in srgb, var(--minus) 8%, var(--sheet)); }
:root[data-ui="pulpit"] .cw-grp { letter-spacing: .04em; }
@media (max-width: 720px) {
  :root[data-ui="pulpit"] .pw-win { border: 0; border-radius: 0; box-shadow: none; }
}

/* Возвраты в новом виде без theme-returns: returns.css задаёт эти переменные только под ним (rv-mono, rv-tile) */
:root[data-ui="pulpit"] { --rt-display: "Golos Text", system-ui, sans-serif; --rt-mono: "JetBrains Mono", ui-monospace, Menlo, monospace; }

/* Возвраты, «Что сделать» (3.2): список очереди — колонка (block queue), карточка выбранного — холст; пустая карточка не рисуется;
   ≤860 карточка — окном (NARROW страницы) */
:root[data-ui="pulpit"] aside.queue .tz-list { border: 0; background: none; padding: 0; border-radius: 0; }
:root[data-ui="pulpit"] #todo-card:empty { display: none; }
:root[data-ui="pulpit"] .rv-gone h2 { margin: 0 0 6px; font-size: 17px; }
:root[data-ui="pulpit"] .rv-gone p { margin: 6px 0 0; }
@media (max-width: 860px) { :root[data-ui="pulpit"] body[data-shell="pulpit"] #todo-card { display: none; } }

/* Запуски InSales (4.1): очередь — колонка (фильтры, форма, список), запуск — на холсте iframe страницы ?embed=1 (высоту до низа окна
   ставит launches_queue.js); холст уже настольной раскладки запуска или ≤860 — окном (#tab-launches[data-view=window]), с колонкой — подсказка */
:root[data-ui="pulpit"] .ln-queue > .toolbar { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin: 0 0 8px; }
:root[data-ui="pulpit"] .ln-queue details.launch-admin { margin: 0 0 8px; }
:root[data-ui="pulpit"] .ln-queue details.launch-admin form.inline { display: flex; flex-direction: column; align-items: stretch; gap: 6px; margin: 8px 0; }
:root[data-ui="pulpit"] .ln-queue details.launch-admin .toolbar { display: flex; flex-direction: column; align-items: stretch; gap: 6px; margin: 8px 0 0; }
:root[data-ui="pulpit"] .ln-queue > p.muted { font-size: 12px; margin: 16px 0 0; }
:root[data-ui="pulpit"] .ln-canvas-head { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; margin: 12px 0 8px; }
:root[data-ui="pulpit"] .ln-canvas-t { font-weight: 600; font-size: 17px; min-width: 0; overflow-wrap: anywhere; }
:root[data-ui="pulpit"] .ln-canvas-head .button { margin-left: auto; }
:root[data-ui="pulpit"] .ln-frame { display: block; width: 100%; height: 70vh; border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--fog); }
:root[data-ui="pulpit"] .ln-gone h2 { margin: 0 0 6px; font-size: 17px; }
:root[data-ui="pulpit"] .ln-gone p { margin: 6px 0 0; }
:root[data-ui="pulpit"] #launch-hint { display: none; }
@media (min-width: 861px) {
  :root[data-ui="pulpit"] body[data-shell="pulpit"] #tab-launches[data-view="window"] #launch-hint { display: block; margin: 8px 0 0; }
  :root[data-ui="pulpit"] body[data-shell="pulpit"] #tab-launches #launch-gone:not([hidden]) ~ #launch-hint { display: none; }
}
:root[data-ui="pulpit"] #tab-launches[data-view="window"] #launch-canvas { display: none; }

/* Страйки (5.2): очередь — колонка («Подгрузить жалобы», панель «Указать игру», список групп), карточка жалобы — холст;
   ≤860 карточка — окном (NARROW в strikes.js); «Все жалобы» и «Сводка» — период в колонке */
:root[data-ui="pulpit"] .sk-sync { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
:root[data-ui="pulpit"] .sk-sync .muted { font-size: 12px; }
:root[data-ui="pulpit"] .sk-queue #refresh-msg { margin: 6px 0 0; font-size: 13px; }
:root[data-ui="pulpit"] .sk-queue #refresh-msg:empty { display: none; }
:root[data-ui="pulpit"] .sk-untagged { margin: 12px 0 4px; padding: 10px 0 0; border-top: 1px solid var(--line); }
:root[data-ui="pulpit"] .sk-untagged > p { margin: 0 0 8px; font-size: 12px; }
:root[data-ui="pulpit"] .sk-bulk { display: flex; flex-direction: column; gap: 6px; }
:root[data-ui="pulpit"] .sk-bulk-acts { display: flex; flex-wrap: wrap; gap: 6px; }
:root[data-ui="pulpit"] .sk-bulk input, :root[data-ui="pulpit"] .sk-bulk button { min-height: var(--ctl-h); box-sizing: border-box; }
:root[data-ui="pulpit"] .sk-bulk input { width: 100%; }
:root[data-ui="pulpit"] .sk-bulk #confirm-hints { align-self: flex-start; }
:root[data-ui="pulpit"] .sk-find { width: 100%; min-height: var(--ctl-h); box-sizing: border-box; margin: 12px 0 0; }
:root[data-ui="pulpit"] .sk-bulk h2 { margin: 0; font-size: 13px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
:root[data-ui="pulpit"] .modal .sk-card-h h2 { display: none; }   /* в окне название — в шапке окна */
:root[data-ui="pulpit"] .sk-bulk .muted:empty { display: none; }
:root[data-ui="pulpit"] .sk-card { display: grid; gap: 14px; min-width: 0; max-width: 920px; }
:root[data-ui="pulpit"] main > .panel > .sk-card { border: 1px solid var(--line); border-radius: var(--radius-m); padding: 16px 18px; background: var(--sheet); }
:root[data-ui="pulpit"] #strike-card:empty { display: none; }
:root[data-ui="pulpit"] .sk-card-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
:root[data-ui="pulpit"] .sk-card-h h2 { margin: 0 auto 0 0; font-size: 20px; font-weight: 600; overflow-wrap: anywhere; }
:root[data-ui="pulpit"] .sk-card .cw-kv { font-size: 14px; gap: 6px 14px; }
:root[data-ui="pulpit"] .sk-goods, :root[data-ui="pulpit"] .sk-tries { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px; }
:root[data-ui="pulpit"] .sk-sec { display: grid; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); min-width: 0; }
:root[data-ui="pulpit"] .sk-sec h3 { margin: 0; font-size: 15px; }
:root[data-ui="pulpit"] .sk-text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
:root[data-ui="pulpit"] .sk-acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
:root[data-ui="pulpit"] .sk-acts > * { min-height: var(--ctl-h); box-sizing: border-box; }
:root[data-ui="pulpit"] .sk-acts input { flex: 1 1 220px; min-width: 0; max-width: 360px; }
:root[data-ui="pulpit"] .sk-msg { margin: 0; }
:root[data-ui="pulpit"] .sk-msg:empty { display: none; }
:root[data-ui="pulpit"] .sk-chat { display: grid; gap: 8px; }
:root[data-ui="pulpit"] .sk-chat-m { border: 1px solid var(--line); border-radius: var(--radius-s); padding: 8px 10px; background: var(--fog); min-width: 0; }
:root[data-ui="pulpit"] .sk-chat-m.me { background: var(--accent-soft); }
:root[data-ui="pulpit"] .sk-chat-m .t { margin-top: 4px; white-space: pre-wrap; overflow-wrap: anywhere; }
:root[data-ui="pulpit"] .sk-gone h2 { margin: 0 0 6px; font-size: 17px; }
:root[data-ui="pulpit"] .sk-gone p { margin: 6px 0 0; }
:root[data-ui="pulpit"] #context #period-bar .filters { display: flex; flex-direction: column; align-items: stretch; gap: 10px; min-width: 0; }
@media (max-width: 860px) { :root[data-ui="pulpit"] body[data-shell="pulpit"] #strike-card { display: none; } }

/* ----- колонка фильтров: группы «заголовок — варианты» (fb1.2, правило колонки): макрос tool_group в _tools.html ----- */
:root[data-ui="pulpit"] .context .tool-group { margin: 0 0 18px; min-width: 0; }
:root[data-ui="pulpit"] .context .tool-group > .tg-title { margin: 0 0 6px; padding-left: 2px; font-size: 10.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
:root[data-ui="pulpit"] .context .tool-group > button, :root[data-ui="pulpit"] .context .tool-group > select { width: 100%; max-width: 100%; }
:root[data-ui="pulpit"] .context select { width: 100%; max-width: 100%; min-width: 0; }
:root[data-ui="pulpit"] .context .tool-group + .tool-group > .tg-title { margin-top: 0; }
:root[data-ui="pulpit"] .context .segmented { display: flex; flex-direction: column; gap: 2px; width: 100%; max-width: 100%; overflow: visible; }
:root[data-ui="pulpit"] .context .segmented button { display: flex; align-items: center; width: 100%; margin: 0; padding: 0 10px; border: 1px solid transparent; border-radius: var(--radius-s); background: transparent; text-align: left; white-space: normal; box-shadow: none; }
:root[data-ui="pulpit"] .context .segmented button:hover:not(:disabled) { background: color-mix(in srgb, var(--ink) 6%, transparent); }
:root[data-ui="pulpit"] .context .segmented button[aria-pressed="true"]:not(.primary) { background: var(--sel); border-color: var(--sel-edge); color: var(--accent-ink); }
:root[data-ui="pulpit"] .context .segmented button[aria-pressed="true"]::after { content: "✓"; margin-left: auto; padding-left: 8px; font-size: 12px; color: var(--accent); }
:root[data-ui="pulpit"] .context .segmented button:disabled { opacity: .5; cursor: default; }
:root[data-ui="pulpit"] .context .period { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; align-items: stretch; max-width: 100%; min-width: 0; }
:root[data-ui="pulpit"] .context .period .chips { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; overflow: visible; max-width: 100%; }
:root[data-ui="pulpit"] .context .period .chips button { margin: 0; padding: 0; justify-content: center; border: 1px solid transparent; border-radius: var(--radius-s); background: transparent; font-variant-numeric: tabular-nums; }
:root[data-ui="pulpit"] .context .period .chips button:hover { background: color-mix(in srgb, var(--ink) 6%, transparent); }
:root[data-ui="pulpit"] .context .period .chips button[aria-pressed="true"]:not(.primary), :root[data-ui="pulpit"] .context .period .chips button.on { background: var(--sel); border-color: var(--sel-edge); color: var(--accent-ink); }
:root[data-ui="pulpit"] .context .period .chips .d-sfx { display: none; }
:root[data-ui="pulpit"] .context .period details.dates { display: block; min-width: 0; }
:root[data-ui="pulpit"] .context .period details.dates[open] { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px; font-size: 0; }
:root[data-ui="pulpit"] .context .period details.dates > * { font-size: 14px; }
:root[data-ui="pulpit"] .context .period details.dates summary { display: flex; align-items: center; min-height: var(--ctl-h); box-sizing: border-box; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius-s); background: var(--sheet); color: var(--muted); cursor: pointer; list-style: none; }
:root[data-ui="pulpit"] .context .period details.dates summary::-webkit-details-marker { display: none; }
:root[data-ui="pulpit"] .context .period details.dates summary::before { content: "▸"; margin-right: 6px; }
:root[data-ui="pulpit"] .context .period details.dates[open] summary { flex: 1 0 100%; color: var(--accent-ink); }
:root[data-ui="pulpit"] .context .period details.dates[open] summary::before { content: "▾"; }
:root[data-ui="pulpit"] .context .period details.dates input { flex: 1 0 100%; min-width: 0; max-width: 100%; }
:root[data-ui="pulpit"] .context label { display: flex; gap: 8px; align-items: center; min-height: var(--ctl-h); padding: 0 8px; border-radius: var(--radius-s); cursor: pointer; }
:root[data-ui="pulpit"] .context label:hover { background: color-mix(in srgb, var(--ink) 6%, transparent); }
:root[data-ui="pulpit"] .context .toolbar-legend { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; white-space: normal; padding: 0 2px 8px; }
:root[data-ui="pulpit"] .context .filters-note { margin: 0; padding: 0 2px; font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
:root[data-ui="pulpit"] .context .tool-group > .filters-note { margin-top: 8px; }

/* fb1.3: InSales — «Яндекс Диск» кнопкой справа в строке вкладок (на всех вкладках) */
:root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) { display: flex; align-items: center; width: 100%; overflow-x: auto; scrollbar-width: thin; }
:root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) > * { flex: 0 0 auto; white-space: nowrap; }   /* 861–1000: пять вкладок и кнопка не помещаются — строка прокручивается сама, не страница (2.148) */
:root[data-ui="pulpit"] main > .segmented > a[href="/insales/disk"] { margin-left: auto; }
:root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) > button:nth-last-child(2) { border-radius: 0 var(--radius-s) var(--radius-s) 0; }
@media (max-width: 720px) {
  :root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) > button:nth-last-child(2) { border-radius: var(--radius-s); }
}
:root[data-ui="pulpit"] .tsearch-input { border-radius: var(--radius-s); min-height: var(--ctl-h); }
:root[data-ui="pulpit"] .tsearch-hint { color: var(--muted); }

/* ЮЭ / «Цены и РРЦ», галочки строк (makeTable pick): без рамки вокруг столбца и шапки, чекбокс по центру строки */
:root[data-ui="pulpit"] .tabulator-row .tabulator-cell.pick-cell { border: 0; }
:root[data-ui="pulpit"] .tabulator .tabulator-header .pick-cell { border: 0; }
/* чекбокс — по строке текста: ячейка 9+18+9 = 36, строка с границей 37, без выравнивания по базовой линии */
:root[data-ui="pulpit"] .tabulator .tabulator-row .pick-cell { padding-top: 9px; padding-bottom: 9px; }
:root[data-ui="pulpit"] .tabulator .pick-cell input { display: block; margin: 0 auto; }
/* закреплённые строки: голубой фон (--sel поверх непрозрачного --sheet: замороженные ячейки наследуют фон строки, полупрозрачный лёг бы дважды) и цветная полоса слева */
:root[data-ui="pulpit"] .tabulator .tabulator-frozen-rows-holder .tabulator-row .tabulator-cell { background-image: linear-gradient(var(--sel), var(--sel)); }
:root[data-ui="pulpit"] .tabulator .tabulator-frozen-rows-holder .tabulator-row .tabulator-cell:first-child { box-shadow: inset 3px 0 0 var(--accent); }

/* шапка таблицы: фильтров под подписями больше нет, а высоту шапки задаёт самая длинная подпись — короткие подписи прижаты книзу, к строкам (раньше под ними оставалась пустота) */
:root[data-ui="pulpit"] .tabulator .tabulator-header .tabulator-col .tabulator-col-content { justify-content: flex-end; }

/* «Карточки»: поле поиска вплотную над таблицей, «Что поправить» и счётчик — выше (порядок только в новом виде, разметка общая) */
:root[data-ui="pulpit"]:not([data-embed]) #tab-list:not(.is-hidden) { display: flex; flex-direction: column; }   /* иначе перебивает .panel.is-hidden — «Товары» видны на всех вкладках */
:root[data-ui="pulpit"]:not([data-embed]) #tab-list > #cards-chips { order: 1; }
:root[data-ui="pulpit"]:not([data-embed]) #tab-list > .toolbar { order: 2; }
:root[data-ui="pulpit"]:not([data-embed]) #tab-list > .filters { order: 3; margin-bottom: 6px; }
:root[data-ui="pulpit"]:not([data-embed]) #tab-list > #cards { order: 4; }

/* step7-fix (замечания 1-4, 8-10): правки только нового вида */
/* «Рынок» на узком: «Выгрузка» + select не шире экрана (select раздвигал всю страницу до 434 px) */
@media (max-width: 720px) {
  :root[data-ui="pulpit"] .toolbar > label:has(> select) { display: flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; }
  :root[data-ui="pulpit"] .toolbar > label > select { min-width: 0; flex: 1 1 auto; max-width: 100%; }
}
/* «Карточки» · Товары: подписи столбцов целиком (перенос слов, без «ТЕРЯЕМ…») */
:root[data-ui="pulpit"] #cards .tabulator-header .tabulator-col .tabulator-col-title { font-size: 11px; letter-spacing: 0; text-overflow: clip; overflow-wrap: break-word; }
:root[data-ui="pulpit"] #cards .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { padding-right: 12px; }
:root[data-ui="pulpit"] #cards .tabulator-header .tabulator-col .tabulator-col-content { padding-left: 6px; padding-right: 4px; }
/* пагинатор на телефоне: Tabulator сам прячет номера страниц, если ряд не влез (оставались «Вперёд» без «2»); «Первая»/«Последняя» убираем, номера помещаются */
@media (max-width: 720px) {
  :root[data-ui="pulpit"] .tabulator .tabulator-footer .tabulator-page[data-page="first"],
  :root[data-ui="pulpit"] .tabulator .tabulator-footer .tabulator-page[data-page="last"] { display: none; }
}
/* /password: форма и «Сеансы входа» — по одному левому краю, кнопка под таблицей с отступом */
:root[data-ui="pulpit"] main > .login-box { margin: 16px 0 24px; }
:root[data-ui="pulpit"] .sessions-box .toolbar { margin-top: 12px; }
/* InSales на телефоне: вкладки — одна прокручиваемая строка (были три); пояснение очереди — над списком, а не под ним */
@media (max-width: 860px) {
  :root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) { flex-wrap: nowrap; overflow-x: auto; gap: 6px; scrollbar-width: thin; padding-bottom: 4px; }
  :root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) > * { flex: 0 0 auto; white-space: nowrap; }
  :root[data-ui="pulpit"] main > .segmented:has(> a[href="/insales/disk"]) > a[href="/insales/disk"] { margin-left: 0; }
  :root[data-ui="pulpit"] .ln-queue { display: flex; flex-direction: column; }
  :root[data-ui="pulpit"] .ln-queue > p.muted { order: -1; margin: 0 0 12px; font-size: 13px; }
}
/* Главная: подпись плитки переносится (не «Маржа (по начислениям…»); на телефоне — две плитки в ряд, «Сделать сегодня» ближе к верху */
:root[data-ui="pulpit"] .dials .tile-label { white-space: normal; }
@media (max-width: 720px) {
  :root[data-ui="pulpit"] .dials { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 16px; }
  :root[data-ui="pulpit"] .dials .tile { min-height: 0; padding: 10px 12px; }
  :root[data-ui="pulpit"] .dials .tile-value { font-size: 18px; }
  :root[data-ui="pulpit"] .dials .tile-usual, :root[data-ui="pulpit"] .dials .tile-delta, :root[data-ui="pulpit"] .dials .tile-week { font-size: 12px; }
}

/* ----- вход (2.148, В11): всегда новый вид; лист на фоне, лампа у названия ----- */
:root[data-ui="pulpit"] body.login { background: var(--fog); }
:root[data-ui="pulpit"] .login-box { border-radius: var(--radius-m); box-shadow: 0 1px 2px color-mix(in srgb, var(--ink) 10%, transparent); }
:root[data-ui="pulpit"] .login-box .brand { display: flex; align-items: center; gap: 8px; font-size: 18px; }
:root[data-ui="pulpit"] .login-box .brand::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--lamp); }
:root[data-ui="pulpit"] .login-box input, :root[data-ui="pulpit"] .login-box button, :root[data-ui="pulpit"] .login-box a.button { min-height: var(--ctl-h); box-sizing: border-box; }   /* «Войти через Яндекс» (app.css: 44) — той же высоты, что кнопка пароля */
@media (max-width: 720px) {
  :root[data-ui="pulpit"] .login-box input, :root[data-ui="pulpit"] .login-box button, :root[data-ui="pulpit"] .login-box a.button, :root[data-ui="pulpit"] .login-box summary { min-height: 44px; }
}

/* 2.148 В3: правила returns.css «≤959» в новом виде действуют на ≤860 (порог навигации); на 861–959 возвращаем широкую раскладку */
@media (min-width: 861px) and (max-width: 959px) {
  :root[data-ui="pulpit"] .rv-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  :root[data-ui="pulpit"] .rv-two { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  :root[data-ui="pulpit"] .rv-bar { grid-template-columns: 150px minmax(0, 1fr) 110px; }
  :root[data-ui="pulpit"] .rv-btns > button { flex: 0 0 auto; min-height: 0; }
}
