/* logos-ui-kit.css — классы .lk-* движка (server-rendered, без JS). Канон: UI-KIT-DESIGN §2. */
* { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, -apple-system, sans-serif; background: var(--lk-bg); color: var(--lk-text); }
.lk-app { max-width: 1040px; margin: 0 auto; padding: 24px; }
.lk-app:focus { outline: none; }   /* skip-link прыгает на main(tabindex=-1) — рамку на нём не рисуем */

/* Брендированный app-bar (шапка арендатора): цвет = --lk-brand (SC Potsdam → синий, LOGOS → navy). */
.lk-appbar { display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 10px 24px; background: var(--lk-brand); color: #fff;
  border-bottom: 3px solid var(--lk-accent);   /* фирменный keyline: navy шапка + красный акцент = айдентика (как логотип) */
  position: sticky; top: 0; z-index: 30; }   /* владелец п.1: навигационная строка зафиксирована сверху */
.lk-brand { display: inline-flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; font-weight: 700; }
.lk-brand-mark { width: 1.6em; height: 1.6em; }             /* герб-глиф (fallback, наследует белый) */
.lk-brand-logo { height: 34px; width: auto; display: block; }  /* реальный логотип арендатора (SVG) */
.lk-brand-name { font-size: 1.15rem; letter-spacing: 0.02em; }
.lk-brand-o { color: var(--lk-accent); }  /* §Фирменный знак: вторая O в «LOGOS» = акцент-красная буква (брендбук, как logos-erp.de) */
.lk-appbar-nav { display: flex; align-items: center; gap: 6px; }
.lk-appbar-link { display: inline-flex; align-items: center; gap: 0.4em; color: #fff; text-decoration: none;
  padding: 6px 10px; border-radius: var(--lk-radius); font-size: 0.9rem; }
.lk-appbar-link:hover { background: rgba(255, 255, 255, 0.16); }
.lk-appbar-logout { display: inline-flex; margin: 0; }
.lk-appbar-nav button.lk-appbar-link { background: transparent; border: 0; cursor: pointer; font: inherit; }  /* SEC-1: логаут-кнопка = вид ссылки */
.lk-appbar-left { display: inline-flex; align-items: center; gap: 12px; }
.lk-appbar-toggle-form { display: inline-flex; margin: 0; }
/* тумблер левой панели (hamburger) — квадратная кнопка в app-bar (POST-форма, Аудит #73). Сброс дефолт-хрома button. */
.lk-appbar-toggle { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px;
  color: #fff; text-decoration: none; border-radius: 8px; flex: none;
  background: transparent; border: 0; cursor: pointer; font: inherit; padding: 0; }
.lk-appbar-toggle:hover { background: rgba(255, 255, 255, 0.16); }
.lk-appbar-toggle svg { width: 22px; height: 22px; }
/* утилита «Печать» — нейтральная кнопка в ЕДИНОЙ панели тулбара (после разделителя), не семафор */
.lk-util-link { background: var(--lk-surface); color: var(--lk-text); border: 1px solid var(--lk-border); }
.lk-util-link:hover { border-color: var(--lk-brand); color: var(--lk-brand); }
/* R1: секция файлов документа */
.lk-files-table { max-width: 720px; }
.lk-file-name { display: flex; align-items: center; gap: 0.5em; }
.lk-file-name svg { width: 1.05em; height: 1.05em; color: var(--lk-muted); flex: none; }
.lk-file-size { color: var(--lk-muted); white-space: nowrap; text-align: right; }
.lk-file-actions { text-align: right; width: 1%; white-space: nowrap; }
.lk-file-del { display: inline; margin: 0; }
.lk-file-del-btn { padding: 5px 9px; }
.lk-file-upload { display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.lk-file-input { font-size: 0.9rem; max-width: 320px; }
.lk-toolbar-sep { width: 1px; align-self: stretch; background: var(--lk-border); margin: 2px 4px; }  /* разделитель действия|утилиты в единой панели */

/* App-shell: сайдбар (сгруппированная навигация) + область контента — единый каркас на каждой странице */
.lk-shell { display: flex; align-items: stretch; }
.lk-shell-nav-collapsed .lk-sidebar { display: none; }          /* свёрнута: панель скрыта, контент во всю ширину */
/* владелец п.2 (уточн.): основная часть адаптивна + центрирована ПО ГОРИЗОНТАЛИ, ПРИЖАТА К ВЕРХУ (не по
   вертикали — контент поднимается к верху экрана). margin: 0 auto = центр по H, top-align по V. */
.lk-content { min-height: calc(100vh - var(--lk-appbar-h)); }
.lk-content-inner { width: 100%; max-width: 1160px; margin: 0 auto; }
.lk-sidebar { flex: none; width: 236px; padding: 20px 12px; border-right: 1px solid var(--lk-border);
  background: var(--lk-surface); min-height: calc(100vh - var(--lk-appbar-h)); }
.lk-content { flex: 1; min-width: 0; padding: 24px 32px; }   /* max-width → .lk-content-inner (центрирование) */
.lk-nav-group { margin-bottom: 4px; }
.lk-nav-group-title { display: flex; align-items: center; gap: 0.5em; padding: 6px 10px; cursor: pointer;
  font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--lk-muted);
  list-style: none; user-select: none; border-radius: var(--lk-radius); }
.lk-nav-group-title:hover { background: var(--lk-bg); }
.lk-nav-group-title::-webkit-details-marker { display: none; }   /* убрать дефолт-маркер details */
.lk-nav-group-title::after { content: "▸"; margin-left: auto; font-size: 0.75rem; }   /* свёрнута */
details[open] > .lk-nav-group-title::after { content: "▾"; }     /* раскрыта */
.lk-nav-group-title .lk-ico { width: 0.95em; height: 0.95em; }
.lk-nav-group-items { padding-bottom: 6px; }
.lk-nav-group-label { flex: 1; }   /* п.3: толкает бейдж-счётчик секции вправо (перед маркером ▸/▾) */
/* 1.5: разделитель видов внутри подсистемы (Документы | Отчёты | НСИ) */
.lk-nav-divider { height: 1px; background: var(--lk-border, #e2e4e8); margin: 5px 10px; }
.lk-nav-link { display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 7px 10px; border-radius: var(--lk-radius); color: var(--lk-text);
  text-decoration: none; font-size: 0.9rem; }
/* п.3: бейдж-счётчик задач (индикатор внимания) — пилюля справа от пункта/на заголовке секции */
.lk-nav-badge { display: inline-block; min-width: 1.5em; padding: 0 6px; border-radius: 999px;
  font-size: 0.72rem; font-weight: 700; text-align: center; line-height: 1.6; }
.lk-nav-badge-red { background: var(--lk-danger); color: #fff; }
.lk-nav-badge-gray { background: var(--lk-muted); color: #fff; }
.lk-nav-link-active .lk-nav-badge { background: #fff; color: var(--lk-brand); }   /* контраст на активном (брендовом) пункте */
.lk-nav-link:hover { background: var(--lk-bg); }
.lk-nav-link-active { background: var(--lk-brand); color: #fff; font-weight: 600; }
/* 1.7: активный (красный) пункт при ховере НЕ должен светлеть — иначе белый текст исчезал. Держим бренд-фон
   (чуть темнее), текст белый. Специфичнее generic :hover → перекрывает его. */
.lk-nav-link-active:hover { background: var(--lk-brand); filter: brightness(0.92); color: #fff; }
@media (max-width: 900px) { .lk-sidebar { display: none; } .lk-content { padding: 16px; } }

/* Идентификация (login) — bare: центрированная карточка с лого ВНУТРИ, без хедера */
.lk-auth-main { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 24px; }
.lk-auth-card { background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: 14px;
  padding: 32px 30px; width: 100%; max-width: 400px; box-shadow: 0 10px 34px rgba(0, 0, 0, 0.09); }
.lk-auth-brand { display: flex; flex-direction: column; align-items: center; gap: 12px; margin-bottom: 24px; }
.lk-auth-logo { height: 68px; width: auto; }
.lk-auth-name { font-size: 1.3rem; font-weight: 700; color: var(--lk-navy); letter-spacing: 0.01em; }
.lk-auth-card .lk-field { flex-direction: column; align-items: stretch; gap: 5px; }
.lk-auth-card .lk-field-label { min-width: 0; }
.lk-auth-error { color: #fff; background: var(--lk-action-delete); padding: 9px 12px; border-radius: var(--lk-radius);
  margin-bottom: 14px; font-size: 0.9rem; }
.lk-btn-block { width: 100%; justify-content: center; margin-top: 6px; }

/* --- FND-10 · a11y (BFSG): skip-link · sr-only · видимый фокус (см. канон UI-ENGINE-A11Y.md) --- */
.lk-sr-only {   /* только для скринридера: убрано из потока, но НЕ display:none (иначе AT не прочтёт) */
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.lk-skip {   /* 2.4.1: скрыт до :focus, при табе — всплывает в левый-верх, перекрывая шапку */
  position: absolute; left: 8px; top: -48px; z-index: 1000; padding: 8px 14px;
  background: var(--lk-surface); color: var(--lk-text); border: 1px solid var(--lk-border);
  border-radius: var(--lk-radius); text-decoration: none; transition: top 0.12s ease; }
.lk-skip:focus { top: 8px; }
/* 2.4.7 Focus Visible — единая видимая рамка для КЛАВИАТУРЫ (мышь :focus-visible не триггерит) */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--lk-focus); outline-offset: 2px; border-radius: 2px; }

.lk-page-header { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.lk-page-title { font-size: 1.5rem; margin: 0; color: var(--lk-navy); }
/* 4.1 ①: статус документа (проведение) — точка+метка рядом с заголовком (ортогонален wf-callout ②) */
.lk-page-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.lk-page-ic { flex: none; display: inline-flex; color: var(--lk-brand); }   /* Iconografika: глиф объекта у заголовка (дуотон-подложка --lk-icon-accent) */
.lk-page-ic svg { width: 1.5rem; height: 1.5rem; }
.lk-docstatus { display: inline-flex; align-items: center; gap: 6px; font-size: 0.85rem; font-weight: 600; color: var(--lk-muted); }
.lk-docstatus-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--lk-dot-neutral); flex: 0 0 auto; }
.lk-docstatus-green .lk-docstatus-dot { background: var(--lk-success); }
.lk-docstatus-gray .lk-docstatus-dot { background: var(--lk-dot-neutral); }
.lk-docstatus-tomato .lk-docstatus-dot { background: var(--lk-danger); }
.lk-docstatus-green { color: var(--lk-success); }
.lk-docstatus-tomato { color: var(--lk-danger); }

/* Навигация окна (N-nav): «назад» (came-from) + хлебные крошки пути (сохранение последовательности окон). */
.lk-header-nav { display: flex; align-items: center; flex-wrap: wrap; gap: var(--lk-gap); }
.lk-crumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 0.85rem; }
.lk-crumb { color: var(--lk-muted); text-decoration: none; }
.lk-crumb:hover { color: var(--lk-navy); text-decoration: underline; }
.lk-crumb-sep { color: var(--lk-border); }

.lk-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.45em; padding: 8px 14px;
  border: 1px solid var(--lk-border); border-radius: var(--lk-radius);
  background: var(--lk-surface); color: var(--lk-text); text-decoration: none; cursor: pointer; font-size: 0.9rem; }
.lk-ico { flex: none; display: block; width: 1em; height: 1em; }   /* глиф: currentColor, центрируется в flex-кнопке */
/* LOGOS Iconografika — ДУОТОН-АКЦЕНТ (сигнатура): акцент-подложка `.lk-ico-fill` скрыта по умолчанию
   (штриховая иконка чистая в тулбарах); в `.lk-ico-accent`-контексте (разделы/KPI/пусто/статус) —
   показывается брендовым акцентом → иконка «дуотон». Один глиф, два режима. */
.lk-ico-fill { fill: none; stroke: none; }
.lk-ico-accent .lk-ico-fill { fill: var(--lk-icon-accent); stroke: none; }
/* глиф в НЕ-flex контексте (заголовок раздела / пустое состояние) — инлайн, с отступом от текста */
.lk-section-title .lk-ico, .lk-empty .lk-ico { vertical-align: -0.12em; margin-right: 0.45em; }
.lk-empty .lk-ico { color: var(--lk-muted); }
/* пустое состояние — дуотон-иконка (акцент-подложка): «пусто» читается инфографикой, не только текстом
   (владелец п.1: иконка+текст в ОДНУ строку сохранены; акцент лишь добавляет брендовость). */
.lk-empty .lk-ico.lk-ico-accent { color: var(--lk-brand); }
.lk-btn-back { background: transparent; }
.lk-action-primary { background: var(--lk-brand); color: #fff; border-color: transparent; }  /* нейтральный primary = БРЕНД (login/Anwenden/Passwort) */
.lk-action-primary:hover { filter: brightness(0.93); }
.lk-action-edit { background: var(--lk-action-edit); color: #fff; border-color: transparent; }
.lk-action-mark { background: var(--lk-action-mark); color: var(--lk-text); border-color: transparent; }  /* FND-10: тёмный текст на оранжевом = AA (5.64:1) */
.lk-action-delete { background: var(--lk-action-delete); color: #fff; border-color: transparent; }
/* 4.5: workflow-danger-команды (Stornieren/unpost, reject) — slate, ОТЛИЧНО от tomato-«Löschen» (необратимого) */
.lk-action-caution { background: var(--lk-action-caution); color: #fff; border-color: transparent; }
.lk-action-caution:hover { filter: brightness(0.93); }
.lk-action-create { background: var(--lk-action-create); color: #fff; border-color: transparent; }

.lk-toolbar { display: flex; flex-wrap: wrap; gap: var(--lk-gap); margin-bottom: 16px; }
.lk-action-form { display: inline-flex; margin: 0; }   /* workflow-команда: форма-обёртка не ломает flex-тулбар */
.lk-section { background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius);
  padding: 16px; margin-bottom: 16px; }
.lk-section-title { font-size: 1rem; margin: 0 0 12px; color: var(--lk-navy); }
/* владелец п.10: на лендинге иконка раздела + название — В ОДНУ СТРОКУ (flex; svg по умолчанию block ⇒
   в обычном h2 переносил текст под иконку). Детальные секции (без иконки) не затронуты. */
.lk-nav-section > .lk-section-title { display: flex; align-items: center; gap: 0.45em; }
.lk-nav-section > .lk-section-title svg { width: 1.05em; height: 1.05em; flex: none; }

.lk-fields { margin: 0; }
.lk-field { display: flex; gap: var(--lk-gap); padding: 6px 0; border-bottom: 1px solid var(--lk-border); }
.lk-field:last-child { border-bottom: 0; }
.lk-field-label { min-width: 220px; color: var(--lk-muted); }
.lk-field-value { color: var(--lk-text); margin: 0; }   /* <dd> сброс дефолтного margin-inline-start */
/* 1.3.2: json-словарь-значение → таблица Ключ:Значение (2 колонки через grid+display:contents) */
.lk-kv { display: grid; grid-template-columns: max-content 1fr; gap: 2px 14px; }
.lk-kv-row { display: contents; }
.lk-kv-key { color: var(--lk-muted); }
.lk-kv-val { color: var(--lk-text); }
.lk-masked { letter-spacing: 2px; color: var(--lk-muted); }

/* Бейдж статуса (F1): цвет-по-статусу из SSOT workflow.constants (Radix-палитра, soft-look). */
.lk-badge { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
.lk-badge-gray   { background: #e5e7eb; color: #374151; }
.lk-badge-amber  { background: #fef3c7; color: #92400e; }
.lk-badge-green  { background: #d1fae5; color: #065f46; }
.lk-badge-violet { background: #ede9fe; color: #5b21b6; }
.lk-badge-red    { background: #fee2e2; color: #991b1b; }
.lk-badge-orange { background: #ffedd5; color: #9a3412; }
.lk-badge-teal   { background: #ccfbf1; color: #115e57; }
.lk-badge-blue   { background: #dbeafe; color: #1e40af; }
/* Д-2: статус① документа в СПИСКЕ — только цветная точка (проведение), метка — sr-only (a11y) */
.lk-status-dot { display: inline-block; width: 11px; height: 11px; border-radius: 50%; vertical-align: middle; }
.lk-status-dot-green { background: var(--lk-success); }
.lk-status-dot-gray  { background: var(--lk-dot-neutral); }
.lk-status-dot-red   { background: var(--lk-danger); }

.lk-table { width: 100%; border-collapse: collapse; background: var(--lk-surface);
  border: 1px solid var(--lk-border); border-radius: var(--lk-radius); overflow: hidden; }
.lk-th { text-align: center; vertical-align: middle; padding: 10px 12px; background: var(--lk-navy); color: #fff; font-weight: 600; font-size: 0.85rem; }  /* п.7.1 шапка — центр h+v */
.lk-td { padding: 10px 12px; border-top: 1px solid var(--lk-border); font-size: 0.9rem; }
.lk-num { text-align: right; font-variant-numeric: tabular-nums; }   /* п.7.2 числа тела/подвала — вправо, моноширинные цифры */
.lk-total .lk-td { border-top: 2px solid var(--lk-border); font-weight: 600; background: var(--lk-hover); }   /* п.4 итоговая строка ТЧ (нейтральная подсветка = единый токен) */
/* R2: ситуативный wf-статус-callout документа */
/* 2.5.2: отступ между callout «Информация о согласовании» и секцией «Основное» (все document-детали). */
.lk-callout { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; padding: 10px 14px; border-radius: 8px; border-left: 4px solid; margin-bottom: var(--lk-gap); }
.lk-callout-title { font-weight: 600; }
.lk-callout-detail { color: var(--lk-muted); font-size: 0.9rem; }
/* T6: причина отклонения/отмены — своя строка (full-width), выделена (не muted), метка полужирная */
.lk-callout-reason { flex-basis: 100%; font-size: 0.92rem; color: var(--lk-text); margin-top: 2px; }
.lk-callout-reason-label { font-weight: 600; }
/* Д-4: ссылка «К маршруту →» в баннере — справа, акцент-цвет (переход на страницу процесса) */
.lk-callout-route { margin-left: auto; font-weight: 600; color: var(--lk-action-edit); text-decoration: none; white-space: nowrap; }
.lk-callout-route:hover { text-decoration: underline; }
.lk-callout-blue { background: #eef4ff; border-color: var(--lk-info); }
.lk-callout-red { background: #fdecec; border-color: var(--lk-danger); }
.lk-callout-green { background: #eaf7ee; border-color: var(--lk-success); }
.lk-callout-gray { background: #f2f3f5; border-color: var(--lk-dot-neutral); }
.lk-tr:hover { background: var(--lk-hover); cursor: pointer; }   /* 1.4: строка кликабельна → деталь */
.lk-link { color: var(--lk-action-edit); text-decoration: none; font-weight: 600; }
.lk-link:hover { text-decoration: underline; }
/* 1.4: ссылка-строка заполняет ячейку целиком (padding+отриц.margin = поверх padding td) → клик в любом
   месте строки ведёт в деталь. Обычный цвет текста (не «ссылка»); первая ячейка (идентификатор) — акцент. */
.lk-row-link { display: block; padding: 10px 12px; margin: -10px -12px; color: inherit; text-decoration: none; }
/* 2.6: первая ячейка (идентификатор) — только АКЦЕНТ-ВЕС, без ссылка-цвета: клик по ВСЕЙ строке открывает
   запись, отдельная «ссылка с имени» неактуальна и путала (проект-wide для всех списков). */
.lk-row-link-lead { color: inherit; font-weight: 700; }
/* владелец п.1: пустое состояние — иконка + текст В ОДНУ СТРОКУ, ЦЕНТРИРОВАНО (svg по умолчанию block ⇒
   раньше переносил текст под иконку). flex-row + justify-center. */
.lk-empty { color: var(--lk-muted); padding: 32px 16px; display: flex; align-items: center;
  justify-content: center; gap: 0.5em; }
.lk-empty svg { width: 1.2em; height: 1.2em; flex: none; }

/* Отчёт (СКД-композер): числа — right-align моно, итог/подытог — жирный фон. */
.lk-grid-num { text-align: right; font-variant-numeric: tabular-nums; }
.lk-num-neg { color: var(--lk-action-delete); }   /* отрицательное число — красный знак (accounting) */
.lk-grid-total { font-weight: 700; background: var(--lk-hover); }
.lk-grid-total .lk-td { border-top: 2px solid var(--lk-border); }

.lk-form { background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius);
  padding: 16px; max-width: 540px; display: flex; flex-direction: column; gap: var(--lk-gap); }
/* 2.4: форма с табличной частью — ШИРЕ (7-колоночная ТЧ не влезала в 540px → мелкие поля). */
.lk-form-wide { max-width: 1000px; }
/* 2.4: «Сохранить» канон-размер — auto-width в actions-контейнере (не растянут на всю форму). */
.lk-form-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }   /* 3b: Speichern/Abbrechen к правому краю */
/* 1.1: тулбар ТЧ — «+ строка» СЛЕВА над таблицей (стандартная позиция панели инструментов). */
.lk-tabedit .lk-section-title { margin: 0 0 8px; }
.lk-tabedit-toolbar { display: flex; justify-content: flex-start; gap: 8px; margin-bottom: 8px; }
.lk-tabedit-add { background: var(--lk-action-create); color: #fff; border-color: var(--lk-action-create); }   /* 5: «+ Zeile» = create-семафор (зелёная, с глифом) */
.lk-tabedit-add:hover { filter: brightness(0.94); }
/* 4: значения статус-колонок (Status ①, Genehmigung ②) центрируются, как и заголовки */
.lk-td:has(.lk-badge), .lk-td:has(.lk-docstatus), .lk-td:has(.lk-status-dot) { text-align: center; }
.lk-tabedit .lk-td .lk-input { min-width: 5.5rem; }   /* ячейки ТЧ — не микроскопические (комфортный ввод) */
/* 1.3: подвал ТЧ — строка-итог (Сумма), выделена. */
.lk-tr-total td { font-weight: 700; background: var(--lk-hover); border-top: 2px solid var(--lk-border); }
.lk-tabedit-total-label { color: var(--lk-muted); }
/* 1.2: «Отмена» — нейтральная (secondary) кнопка рядом с «Сохранить». */
.lk-btn-cancel { background: var(--lk-surface); color: var(--lk-text); border-color: var(--lk-border); text-decoration: none; }
.lk-btn-cancel:hover { background: var(--lk-hover); }
.lk-input { width: 100%; padding: 8px 10px; border: 1px solid var(--lk-border); border-radius: 6px; font-size: 0.9rem; }
/* 1.5: поле ДАТЫ в форме-строке (не в ТЧ) — компактное, не растянуто на всю ширину. */
.lk-form > .lk-field .lk-input[type="date"] { max-width: 14rem; }

/* «Форма выбора» (1С-подбор): текущая метка + компактная «…»-кнопка открытия lookup. */
.lk-picker { display: inline-flex; align-items: center; gap: 8px; width: 100%; }
.lk-picker-label { flex: 1; padding: 8px 10px; border: 1px solid var(--lk-border); border-radius: 6px;
  background: var(--lk-surface); color: var(--lk-text); font-size: 0.9rem; min-height: 20px; }
.lk-picker-btn { padding: 8px 12px; font-weight: 700; }

/* Поиск + сортировка динсписка (P1b): поле поиска над таблицей + кликабельные заголовки (▲/▼). */
.lk-search { display: flex; gap: 8px; margin-bottom: 16px; max-width: 480px; }
.lk-search-input { flex: 1; }
.lk-th-sort { color: #fff; text-decoration: none; display: inline-block; white-space: nowrap; }
.lk-th-sort:hover { text-decoration: underline; }

/* Группировка динсписка (P2: «список = композер»): чипы осей → композер даёт count-подытоги. */
.lk-group-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 16px; }
.lk-group-label { color: var(--lk-muted); font-size: 0.85rem; }
.lk-group-chip { padding: 4px 12px; border: 1px solid var(--lk-border); border-radius: 999px;
  color: var(--lk-navy); text-decoration: none; font-size: 0.85rem; background: var(--lk-surface); }
.lk-group-chip:hover { border-color: var(--lk-navy); background: var(--lk-hover); }

/* владелец п.5: ЕДИНАЯ компактная панель инструментов списка (Создать + поиск-лупа + группировка-иконка) */
.lk-listbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 16px; }
.lk-listbar > .lk-toolbar { margin-bottom: 0; }
.lk-listbar > .lk-search { margin-bottom: 0; max-width: 320px; gap: 0; }
.lk-listbar .lk-search-input { border-top-right-radius: 0; border-bottom-right-radius: 0; }  /* CSS-DUP: scope — не течь в standalone .lk-search */
.lk-search-btn { border-top-left-radius: 0; border-bottom-left-radius: 0; padding: 8px 12px;
  background: var(--lk-surface); border: 1px solid var(--lk-border); border-left: 0; color: var(--lk-muted); }
.lk-search-btn:hover { color: var(--lk-brand); border-color: var(--lk-brand); }
.lk-search-btn svg { width: 1.15em; height: 1.15em; }
/* группировка = иконка-dropdown (details, CSP-safe) */
.lk-group-menu { position: relative; }
.lk-group-summary { list-style: none; cursor: pointer; background: var(--lk-surface);
  color: var(--lk-text); border: 1px solid var(--lk-border); }
.lk-group-summary::-webkit-details-marker { display: none; }
.lk-group-summary:hover { border-color: var(--lk-brand); color: var(--lk-brand); }
.lk-group-drop { position: absolute; top: calc(100% + 4px); left: 0; z-index: 25; min-width: 210px;
  display: flex; flex-direction: column; gap: 4px; padding: 8px; background: var(--lk-surface);
  border: 1px solid var(--lk-border); border-radius: var(--lk-radius); box-shadow: 0 6px 20px rgba(0,0,0,.12); }
.lk-group-drop .lk-group-chip { border-radius: var(--lk-radius); }

/* владелец п.3 + R4: чипы-контролы у заголовка (период/фильтр) + общий overlay-модал (DUP-3) */
.lk-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 16px; }
.lk-modal-wrap { position: relative; display: inline-flex; }
.lk-period-modal { display: inline-flex; }
.lk-filter-trigger { position: relative; }
.lk-filter-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px;
  padding: 0 5px; border-radius: 999px; background: var(--lk-brand); color: #fff; font-size: 0.72rem; font-weight: 700; }
.lk-filter-form .lk-field { flex-direction: column; align-items: stretch; gap: 4px; border-bottom: 0; padding: 4px 0; }
.lk-filter-form .lk-field-label { min-width: 0; }
.lk-filter-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 14px; }
.lk-modal-toggle { position: absolute; width: 1px; height: 1px; opacity: 0; margin: 0; pointer-events: none; }
.lk-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; cursor: pointer;
  border: 1px solid var(--lk-border); border-radius: 999px; background: var(--lk-surface); color: var(--lk-text);
  font-size: 0.9rem; user-select: none; }
.lk-chip:hover { border-color: var(--lk-brand); color: var(--lk-brand); }
.lk-chip svg { width: 1.05em; height: 1.05em; }
.lk-period-trigger::after { content: "▾"; margin-left: 2px; color: var(--lk-muted); }
.lk-modal-overlay { display: none; position: fixed; inset: 0; z-index: 100; align-items: center; justify-content: center; padding: 20px; }
.lk-modal-toggle:checked ~ .lk-modal-overlay { display: flex; }        /* :checked → показать overlay */
.lk-modal-backdrop { position: absolute; inset: 0; background: rgba(15, 23, 42, 0.45); cursor: pointer; }
.lk-modal-panel { position: relative; z-index: 1; background: var(--lk-surface); border-radius: var(--lk-radius);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.28); padding: 20px 22px; max-width: 640px; width: 100%; }
.lk-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.lk-modal-title { font-size: 1.1rem; font-weight: 700; color: var(--lk-navy); }
.lk-modal-close { display: inline-flex; cursor: pointer; color: var(--lk-muted); border-radius: 6px; }
.lk-modal-close:hover { color: var(--lk-action-delete); }
.lk-modal-close svg { width: 1.4em; height: 1.4em; }
.lk-modal-panel .lk-period { flex-direction: column; align-items: stretch; gap: 12px; }

/* владелец п.4: панель виджетов закрываема — «×» (checkbox-hack, сброс на навигации) */
.lk-kpi-wrap { position: relative; }
.lk-kpi-toggle { position: absolute; width: 1px; height: 1px; opacity: 0; margin: 0; pointer-events: none; }
.lk-kpi-x { position: absolute; top: -6px; right: -6px; z-index: 2; display: inline-flex; cursor: pointer;
  color: var(--lk-muted); background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: 999px; }
.lk-kpi-x:hover { color: var(--lk-action-delete); border-color: var(--lk-action-delete); }
.lk-kpi-x svg { width: 1.25em; height: 1.25em; }
.lk-kpi-toggle:checked ~ .lk-kpi-strip { display: none; }              /* × → скрыть полосу виджетов */
.lk-kpi-toggle:checked ~ .lk-kpi-x { display: none; }                  /* и сам крестик (панель убрана целиком) */

/* Сворачиваемый отчёт (P1c): ROLLUP-уровни через нативный <details> — сворачивание БЕЗ JS (item 3). */
.lk-grid-collapsible { background: var(--lk-surface); border: 1px solid var(--lk-border);
  border-radius: var(--lk-radius); overflow: hidden; }
.lk-gt-headers, .lk-gt-head { display: flex; align-items: baseline; gap: var(--lk-gap); }
.lk-gt-headers { padding: 10px 12px; background: var(--lk-navy); color: #fff; font-weight: 600; font-size: 0.85rem; }
.lk-gt-hlabel, .lk-gt-label { flex: 1; }
.lk-gt-hvals, .lk-gt-vals { display: inline-flex; gap: 18px; font-variant-numeric: tabular-nums; }
.lk-gt-hcol, .lk-gt-val { min-width: 90px; text-align: right; }
.lk-gt-sum { cursor: pointer; padding: 8px 12px; list-style: none; border-top: 1px solid var(--lk-border); }
.lk-gt-sum::-webkit-details-marker { display: none; }
.lk-gt-sum::before { content: "▸"; display: inline-block; width: 1em; color: var(--lk-muted); }
.lk-gt-node[open] > .lk-gt-sum::before { content: "▾"; }
.lk-gt-sum:hover { background: var(--lk-hover); }
.lk-gt-children { margin-left: 18px; border-left: 2px solid var(--lk-border); }
.lk-gt-leaf { padding: 8px 12px 8px 24px; border-top: 1px solid var(--lk-border); }
.lk-grid-collapsible .lk-grid-total > .lk-gt-sum, .lk-grid-collapsible .lk-gt-leaf.lk-grid-total { font-weight: 700; }

/* Пагинация динсписка (P1a keyset): «дальше» по курсору — по центру под таблицей. */
.lk-list-more { display: flex; justify-content: center; margin-top: 16px; }

/* Период (DP): единый выбор — пресеты-чипы + произвольный диапазон (нативные date). Однотипно везде. */
.lk-period { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lk-gap);
  background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius);
  padding: 10px 12px; margin-bottom: 16px; }
.lk-period-presets { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.lk-period-preset { padding: 5px 12px; border: 1px solid var(--lk-border); border-radius: 999px;
  color: var(--lk-text); text-decoration: none; font-size: 0.85rem; background: var(--lk-bg); }
.lk-period-preset:hover { border-color: var(--lk-navy); }
.lk-period-active { background: var(--lk-navy); color: #fff; border-color: transparent; }
.lk-period-range { display: inline-flex; align-items: center; gap: 8px; margin: 0; }
.lk-period-date { width: auto; }
.lk-period-dash { color: var(--lk-muted); }

/* Дерево (T-tree): иерархич. справочник через нативный <details>/<summary> — сворачивание БЕЗ JS. */
.lk-tree { display: flex; flex-direction: column; gap: 2px; }
.lk-tree-node { border-left: 2px solid var(--lk-border); }
.lk-tree-node[open] > .lk-tree-sum { color: var(--lk-navy); }
.lk-tree-sum { cursor: pointer; padding: 8px 10px; list-style: none; border-radius: var(--lk-radius); }
.lk-tree-sum::-webkit-details-marker { display: none; }
.lk-tree-sum::before { content: "▸"; display: inline-block; width: 1em; color: var(--lk-muted); transition: none; }
.lk-tree-node[open] > .lk-tree-sum::before { content: "▾"; }
.lk-tree-sum:hover { background: var(--lk-hover); }
.lk-tree-children { margin-left: 16px; display: flex; flex-direction: column; gap: 2px; }
.lk-tree-leaf { padding: 8px 10px 8px 26px; }   /* отступ под ширину маркера листа (выравнивание с узлами) */
.lk-tree-headline { display: inline-flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.lk-tree-sec { color: var(--lk-muted); font-size: 0.85rem; }

/* Страницы ошибок (§5a): единый блок, дизайн-система; вертикальный стек заголовок/текст/«назад». */
/* Экспресс-аудит 2.1: страница ошибки/пустого доступа — ЦЕНТРИРОВАНА (гориз. margin auto + верт. отступ +
   контент по центру), брендированный app_page-шелл вокруг. Применяется ко ВСЕМ 4xx/5xx-макетам. */
.lk-error { display: flex; flex-direction: column; gap: var(--lk-gap); align-items: center; text-align: center;
  justify-content: center; background: var(--lk-surface); border: 1px solid var(--lk-border);
  border-radius: var(--lk-radius); padding: 40px 24px; max-width: 540px; margin: 12vh auto 0; }
.lk-error .lk-empty { justify-content: center; }

/* Рабочий стол: шапка + секции по виду + адаптивная сетка карточек (когнит. нагрузка/узнаваемость). */
.lk-home-head { margin-bottom: 20px; }
.lk-home-hint { color: var(--lk-muted); margin: 4px 0 0; }
.lk-nav-section { margin-bottom: 24px; }
.lk-nav-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--lk-gap); }
.lk-nav-card { display: block; padding: 14px 16px; background: var(--lk-surface);
  border: 1px solid var(--lk-border); border-radius: var(--lk-radius); color: var(--lk-navy);
  text-decoration: none; font-weight: 600; }
.lk-nav-card:hover { border-color: var(--lk-navy); background: var(--lk-hover); }

/* Адаптивность: горизонтальный скролл таблицы на узких, поля стекаются, тулбар переносится. */
.lk-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
@media (max-width: 640px) {
  .lk-app { padding: 12px; }
  .lk-page-title { font-size: 1.2rem; }
  .lk-toolbar { flex-wrap: wrap; }
  .lk-field { flex-direction: column; gap: 2px; }
  .lk-field-label { min-width: 0; font-size: 0.8rem; }
  /* 3.2 — узкий экран: тулбар-кнопки становятся ИКОНОЧНЫМИ (метка визуально скрыта, но остаётся для
     скринридера — доступное имя кнопки не теряется). Глиф центрируется, паддинг квадратный. */
  .lk-toolbar .lk-btn-label {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }
  .lk-toolbar .lk-btn { padding: 9px 11px; gap: 0; }
  .lk-toolbar .lk-ico { width: 1.2em; height: 1.2em; }
  .lk-appbar { padding: 10px 14px; }
  .lk-appbar-link .lk-btn-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }   /* аккаунт → иконки */
}

/* §6 экспорт-бар (кнопки xlsx/csv/pdf при праве .export) */
.lk-export-bar { display: flex; align-items: center; gap: 8px; margin: 8px 0; }
.lk-export-label { color: var(--lk-muted); font-size: 0.85rem; }
.lk-export-link { padding: 4px 10px; font-size: 0.8rem; border-color: var(--lk-brand); color: var(--lk-brand); }

/* §7 server-SVG диаграмма (CSP-safe, без JS) */
.lk-chart-wrap { margin: 12px 0 4px; padding: 8px 4px; background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius); }
.lk-chart-title { display: block; font-size: 0.85rem; color: var(--lk-muted); margin: 0 0 4px 6px; }
.lk-chart { width: 100%; height: auto; max-height: 260px; display: block; }
.lk-chart-bar rect { transition: opacity .15s; }
.lk-chart-bar:hover rect { opacity: .82; }
.lk-chart-val { font-size: 10px; fill: var(--lk-text); font-weight: 600; }
.lk-chart-lbl { font-size: 10px; fill: var(--lk-muted); }

/* §7 кольцевая диаграмма (структура доли от Σ) + HTML-легенда (текст+процент, не только цвет — §5).
   Палитра .lk-cat-N: fill для SVG-секторов, background для swatch легенды — из --lk-cat-N (brand-слой).
   Инлайн-style НЕ используем (CSP style-src 'self') — цвет через класс. */
.lk-donut-wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; padding: 4px 8px; }
.lk-donut { width: 200px; height: 200px; flex: 0 0 auto; }
.lk-seg { transition: opacity .15s; }
.lk-seg:hover { opacity: .82; }
.lk-donut-total { font-size: 18px; font-weight: 700; fill: var(--lk-brand); }
.lk-donut-legend { flex: 1 1 240px; min-width: 220px; display: flex; flex-direction: column; gap: 4px; }
.lk-legend-item { display: grid; grid-template-columns: 14px 1fr auto auto; align-items: center; gap: 8px; font-size: 0.85rem; }
.lk-legend-swatch { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.lk-legend-lbl { color: var(--lk-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lk-legend-val { color: var(--lk-text); font-variant-numeric: tabular-nums; }
.lk-legend-pct { color: var(--lk-muted); font-variant-numeric: tabular-nums; min-width: 3.4em; text-align: right; }
.lk-cat-1 { fill: var(--lk-cat-1); background: var(--lk-cat-1); }
.lk-cat-2 { fill: var(--lk-cat-2); background: var(--lk-cat-2); }
.lk-cat-3 { fill: var(--lk-cat-3); background: var(--lk-cat-3); }
.lk-cat-4 { fill: var(--lk-cat-4); background: var(--lk-cat-4); }
.lk-cat-5 { fill: var(--lk-cat-5); background: var(--lk-cat-5); }
.lk-cat-6 { fill: var(--lk-cat-6); background: var(--lk-cat-6); }
.lk-cat-7 { fill: var(--lk-cat-7); background: var(--lk-cat-7); }
.lk-cat-8 { fill: var(--lk-cat-8); background: var(--lk-cat-8); }
.lk-cat-masked { fill: var(--lk-muted); background: var(--lk-muted); }   /* F-CHT1: k-anon сегмент приглушён */

/* §8 KPI-карточки (адаптивная сетка auto-fit — §5 адаптив без JS) + спарклайн */
.lk-kpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; margin: 12px 0; }
.lk-kpi { position: relative; background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius); padding: 10px 12px; overflow: hidden; }
.lk-kpi::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--lk-brand); }
.lk-kpi-green::before { background: var(--lk-action-create); }
.lk-kpi-red::before { background: var(--lk-action-delete); }
.lk-kpi-gray::before { background: var(--lk-muted); }
.lk-kpi-blue::before { background: var(--lk-info); }   /* T5: статус «submitted/Eingereicht» — семафор процесса (document_state) */
.lk-kpi-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lk-kpi-label { display: block; font-size: 0.75rem; color: var(--lk-muted); text-transform: uppercase; letter-spacing: .03em; }
.lk-kpi-ic { flex: none; display: inline-flex; color: var(--lk-brand); }   /* Iconografika: доменный глиф KPI (дуотон-подложка --lk-icon-accent) */
.lk-kpi-ic svg { width: 1.3rem; height: 1.3rem; }
/* статус-карточка: глиф И его дуотон-подложка перекрашиваются в тон семафора (не бренд) — цвет+форма кодируют статус */
.lk-kpi-green .lk-kpi-ic { color: var(--lk-action-create); --lk-icon-accent: color-mix(in srgb, var(--lk-action-create) 20%, transparent); }
.lk-kpi-red   .lk-kpi-ic { color: var(--lk-action-delete); --lk-icon-accent: color-mix(in srgb, var(--lk-action-delete) 20%, transparent); }
.lk-kpi-blue  .lk-kpi-ic { color: var(--lk-info); --lk-icon-accent: color-mix(in srgb, var(--lk-info) 20%, transparent); }
.lk-kpi-gray  .lk-kpi-ic { color: var(--lk-muted); --lk-icon-accent: color-mix(in srgb, var(--lk-muted) 20%, transparent); }
.lk-kpi-value { display: block; font-size: 1.6rem; font-weight: 700; color: var(--lk-brand); line-height: 1.2; }
.lk-kpi-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 2px; }
.lk-kpi-sub { font-size: 0.75rem; color: var(--lk-muted); }
.lk-spark { width: 88px; height: 24px; }

/* self-service «мой аккаунт» (/me): сетка карточек + нотис результата смены пароля (§ Profile) */
.lk-profile { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--lk-gap); align-items: start; }
.lk-card { background: var(--lk-surface); border: 1px solid var(--lk-border); border-radius: var(--lk-radius); padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.lk-notice { border-radius: var(--lk-radius); padding: 8px 12px; font-size: 0.9rem; border: 1px solid var(--lk-border); }
.lk-notice-ok { background: #e9f6ec; border-color: #b6ddc0; color: #1c6b34; }
.lk-notice-err { background: #fdecec; border-color: #f2c0c2; color: #a5282c; }
.lk-profile-name { font-size: 1.15rem; font-weight: 700; color: var(--lk-text); }
/* Д-4: таймлайн маршрута процесса (ProcessFlowVM) — упорядоченный список шагов-карточек с номером-маркером */
.lk-flow { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.lk-flow-step { gap: 6px; }
.lk-flow-step-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lk-flow-step-num { flex: none; width: 1.7em; height: 1.7em; border-radius: 999px; background: var(--lk-navy);
  color: #fff; font-size: 0.85rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.lk-flow-step-head .lk-profile-name { font-size: 1rem; flex: 1 1 auto; }
/* форма внутри карточки (смена пароля/язык): поля стекаются — метка над полем, input во всю ширину */
.lk-tabs .lk-form { max-width: 520px; }
.lk-tabs .lk-form .lk-field { flex-direction: column; align-items: stretch; gap: 4px; padding: 4px 0; border-bottom: 0; }
.lk-tabs .lk-form .lk-field-label { min-width: 0; }
.lk-form-hint { color: var(--lk-muted); font-size: 0.85rem; margin: 0 0 4px; }

/* ── CSS-only вкладки /me (radio + :checked, CSP-safe, БЕЗ JS) ─────────────────────────────────── */
.lk-tabs { position: relative; }
/* radio-триггеры sr-only, но фокусируемы (клавиатура: Tab→радио, стрелки листают) */
.lk-tab-radio { position: absolute; width: 1px; height: 1px; opacity: 0; margin: 0; }
.lk-tablist { display: flex; flex-wrap: wrap; gap: 2px; border-bottom: 1px solid var(--lk-border); margin-bottom: 20px; }
.lk-tab-label { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; cursor: pointer;
                color: var(--lk-muted); font-weight: 600; font-size: 0.92rem; border-bottom: 2px solid transparent;
                margin-bottom: -1px; user-select: none; }
.lk-tab-label:hover { color: var(--lk-text); }
.lk-tab-panel { display: none; }
/* активная вкладка + её панель — по :checked соответствующего радио (сиблинги ~) */
#me-tab-account:checked  ~ .lk-tablist label[for="me-tab-account"],
#me-tab-personal:checked ~ .lk-tablist label[for="me-tab-personal"],
#me-tab-settings:checked ~ .lk-tablist label[for="me-tab-settings"],
#me-tab-password:checked ~ .lk-tablist label[for="me-tab-password"] { color: var(--lk-brand); border-bottom-color: var(--lk-brand); }
#me-tab-account:checked  ~ .lk-tab-panels .lk-panel-account,
#me-tab-personal:checked ~ .lk-tab-panels .lk-panel-personal,
#me-tab-settings:checked ~ .lk-tab-panels .lk-panel-settings,
#me-tab-password:checked ~ .lk-tab-panels .lk-panel-password { display: block; }
/* видимый фокус на активной вкладке при клавиатурной навигации */
#me-tab-account:focus-visible  ~ .lk-tablist label[for="me-tab-account"],
#me-tab-personal:focus-visible ~ .lk-tablist label[for="me-tab-personal"],
#me-tab-settings:focus-visible ~ .lk-tablist label[for="me-tab-settings"],
#me-tab-password:focus-visible ~ .lk-tablist label[for="me-tab-password"] { outline: 2px solid var(--lk-brand); outline-offset: 2px; border-radius: 4px; }

/* группа радио (выбор языка) */
.lk-radio-group { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 12px; }
.lk-radio-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--lk-border);
                border-radius: var(--lk-radius); cursor: pointer; color: var(--lk-text); }
.lk-radio-row:hover { border-color: var(--lk-brand); }
.lk-radio { accent-color: var(--lk-brand); width: 16px; height: 16px; }

/* Слой 0 — экран НАЗНАЧЕНИЯ связей (universal junction-редактор): toggle-список владелец↔цели (no-JS) */
.lk-assign-list { display: flex; flex-direction: column; }
.lk-assign-row { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--lk-border); }
.lk-assign-row:last-child { border-bottom: 0; }
.lk-assign-main { flex: 1; min-width: 0; }
.lk-assign-label { font-weight: 600; color: var(--lk-text); }
.lk-assign-sub { color: var(--lk-muted); font-size: 0.8rem; margin-left: 8px; }
.lk-assign-form { display: inline-flex; margin: 0; }
/* §2.1 — матрица прав роли: цель гранта выделена + чипы-действия (toggle) */
.lk-perm-target { font-weight: 600; color: var(--lk-navy); }
.lk-perm-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.lk-perm-chipform { display: inline-flex; margin: 0; }
.lk-perm-chip { font-size: 0.72rem; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--lk-border);
  background: var(--lk-surface); color: var(--lk-muted); cursor: pointer; line-height: 1.5; white-space: nowrap; }
.lk-perm-on { background: color-mix(in srgb, var(--lk-success) 15%, transparent); border-color: var(--lk-success);
  color: var(--lk-success); font-weight: 700; }
.lk-perm-off:hover { border-color: var(--lk-brand); color: var(--lk-brand); }
.lk-perm-on:hover { filter: brightness(0.95); }
.lk-perm-ro, .lk-perm-ro:hover { cursor: default; border-color: var(--lk-border); color: var(--lk-muted); filter: none; }


/* §5.1(b): read-only таблица шагов маршрута согласования (Routenschritte) */
.lk-mini-table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.lk-mini-table th { text-align: left; padding: 4px 14px 6px 0; border-bottom: 2px solid var(--lk-border); color: var(--lk-muted); font-weight: 600; white-space: nowrap; }
.lk-mini-table td { padding: 8px 14px 8px 0; border-bottom: 1px solid var(--lk-border); vertical-align: top; }
.lk-mini-table tr:last-child td { border-bottom: none; }
.lk-mini-table th:first-child, .lk-mini-table td:first-child { width: 2.5rem; text-align: center; color: var(--lk-muted); }
