/* ============================================================
   Mar.Hub — Meridian design system
   Внутренняя платформа управления маркетинговыми задачами (Codex)
   Один общий стиль для всех экранов. Светлая и тёмная темы.
   ============================================================ */
:root{
  --bg:#f5f7f9;
  --bg:oklch(97.5% 0.004 255);
  --panel:#ffffff;
  --panel-2:#f8fafc;
  --panel-2:oklch(98.4% 0.004 255);
  --line:#dfe1e5;
  --line:oklch(91% 0.006 255);
  --line-2:#cdd1d6;
  --line-2:oklch(86% 0.008 255);
  --text:#1a1f29;
  --text:oklch(24% 0.021 262);
  --muted:#636974;
  --muted:oklch(52% 0.018 262);
  --soft:#3d434d;
  --soft:oklch(38% 0.02 262);
  --accent:#d62c2b;
  --accent:oklch(57% 0.205 27);
  --accent-soft:#ffebe7;
  --accent-soft:oklch(96% 0.03 27);
  --accent-line:#fcc0b8;
  --accent-line:oklch(86% 0.07 27);
  --green:#249057;
  --green:oklch(58% 0.13 155);
  --green-soft:#defae6;
  --green-soft:oklch(96% 0.04 155);
  --amber:#be7620;
  --amber:oklch(63% 0.13 65);
  --amber-soft:#ffefd5;
  --amber-soft:oklch(96% 0.04 75);
  --blue:#2a75ba;
  --blue:oklch(55% 0.13 250);
  --blue-soft:#e3f4ff;
  --blue-soft:oklch(96% 0.03 250);
  --side:#1d2431;
  --side:oklch(26% 0.026 262);
  --side-2:#283040;
  --side-2:oklch(31% 0.03 262);
  --side-line:#353d4d;
  --side-line:oklch(36% 0.03 262);
  --side-text:#bdc4d1;
  --side-text:oklch(82% 0.02 262);
  --side-muted:#848d9c;
  --side-muted:oklch(64% 0.025 262);
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 1px 3px rgba(16,24,40,.06);
  --shadow-lg:0 12px 32px -12px rgba(16,24,40,.18);
  --side-w:256px;
  /* Синонимы: контент-план и часть компонентов исторически писались через
     --brand/--err. Переменных с такими именами не существовало, и обращения
     молча падали на светлые хардкоды — в тёмной теме раздел выбивался из
     общего вида. Заводим их как псевдонимы основной палитры. */
  --brand:var(--accent);
  --err:var(--accent);
}
html[data-theme="dark"]{
  --bg:#0e1116;
  --bg:oklch(17.5% 0.012 262);
  --panel:#161a20;
  --panel:oklch(21.5% 0.014 262);
  --panel-2:#1d2128;
  --panel-2:oklch(24.5% 0.015 262);
  --line:#272b34;
  --line:oklch(29% 0.016 262);
  --line-2:#333842;
  --line-2:oklch(34% 0.018 262);
  --text:#eceef3;
  --text:oklch(95% 0.006 262);
  --muted:#8f96a2;
  --muted:oklch(67% 0.02 262);
  --soft:#b1b8c3;
  --soft:oklch(78% 0.018 262);
  --accent:#e95145;
  --accent:oklch(64% 0.19 28);
  --accent-soft:#451915;
  --accent-soft:oklch(28% 0.07 27);
  --accent-line:#742e29;
  --accent-line:oklch(40% 0.1 27);
  --green:#3db87c;
  --green:oklch(70% 0.14 158);
  --green-soft:#06321d;
  --green-soft:oklch(28% 0.06 158);
  --amber:#e4a249;
  --amber:oklch(76% 0.13 72);
  --amber-soft:#402804;
  --amber-soft:oklch(30% 0.06 72);
  --blue:#64a2e7;
  --blue:oklch(70% 0.12 252);
  --blue-soft:#102a45;
  --blue-soft:oklch(28% 0.06 252);
  --side:#080a0f;
  --side:oklch(14.5% 0.012 262);
  --side-2:#13161d;
  --side-2:oklch(20% 0.014 262);
  --side-line:#20242c;
  --side-line:oklch(26% 0.016 262);
  --side-text:#bdc4d1;
  --side-text:oklch(82% 0.02 262);
  --side-muted:#79818e;
  --side-muted:oklch(60% 0.022 262);
  --shadow:0 1px 2px rgba(0,0,0,.3);
  --shadow-lg:0 16px 40px -16px rgba(0,0,0,.55);
  --brand:var(--accent);
  --err:var(--accent);
}
*{box-sizing:border-box;}
/* Прямые углы — осознанная часть оформления, и этим же сбросом выравниваются
   чужие стили (редактор TinyMCE и другие готовые компоненты тянут своё
   скругление). Сброс идёт с !important, поэтому обычное объявление
   border-radius в наших правилах не сработает: полсотни таких объявлений
   годами лежали мёртвым грузом и были убраны. Если элементу скругление
   действительно нужно — кружок аватара, «таблетка» счётчика — пишите его
   с !important; таких исключений сейчас десяток, и все они на виду. */
*,*::before,*::after{border-radius:0 !important;}
html,body{margin:0;}
/* Место под скроллбар зарезервировано всегда: при overflow:hidden (модалки)
   ширина контента не меняется и страница не «прыгает». */
html{scrollbar-gutter:stable;}
body{
  background:var(--bg);color:var(--text);
  font-family:"IBM Plex Sans",system-ui,-apple-system,Segoe UI,sans-serif;
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
.mono{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;}
/* Ссылка «Перейти к содержимому»: невидима, пока не получит фокус с клавиатуры. */
.skip-link{position:fixed;top:10px;left:10px;z-index:200;padding:10px 16px;
  background:var(--accent);color:#fff;font-weight:600;font-size:13px;
  transform:translateY(-200%);transition:transform .15s ease;}
.skip-link:focus-visible{transform:translateY(0);}
svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
/* TinyMCE (Oxide) рисует иконки заливкой — глобальный stroke их размывает.
   Сбрасываем правила только внутри UI редактора. */
.tox svg,.tox svg *{fill:currentColor;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;}
svg.ic{width:18px;height:18px;flex:0 0 auto;}
a{color:inherit;text-decoration:none;}
.sprite{position:absolute;width:0;height:0;overflow:hidden;}
.shell{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100vh;min-height:100dvh;}
/* ---------- Sidebar ---------- */
.side{background:var(--side);color:var(--side-text);padding:12px 10px;display:flex;flex-direction:column;gap:8px;border-right:1px solid var(--side-line);position:sticky;top:0;height:100vh;height:100dvh;overflow:auto;scrollbar-width:thin;}
.logo{display:flex;align-items:center;gap:9px;padding:0 4px 2px;}
.logo-mark{width:30px;height:30px;background:var(--accent);display:grid;place-items:center;flex:0 0 auto;box-shadow:0 2px 8px -2px oklch(57% 0.205 27 / .55);}
.logo-mark svg{width:18px;height:18px;stroke:#fff;stroke-width:1.7;}
.logo-name{font-weight:700;font-size:16.5px;letter-spacing:-.01em;color:#fff;}
.logo-name span{color:oklch(72% 0.14 27);}
.logo-name .logo-ver{color:var(--side-muted);font-size:11px;font-weight:500;letter-spacing:0;margin-left:5px;}
.logo-sub{font-size:11px;color:var(--side-muted);margin-top:1px;letter-spacing:.02em;}
.nav-grp{display:flex;flex-direction:column;gap:1px;}
.nav-grp + .nav-grp{margin-top:6px;padding-top:6px;border-top:1px solid var(--side-line);}
.nav-i{display:flex;align-items:center;gap:9px;padding:6px 9px;color:var(--side-text);font-weight:500;font-size:13px;position:relative;width:100%;background:none;border:0;cursor:pointer;text-align:left;font-family:inherit;}
.nav-i svg{width:17px;height:17px;color:var(--side-muted);flex:0 0 auto;}
.nav-i-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nav-i:hover{background:var(--side-2);color:#fff;}
.nav-i .count{margin-left:auto;font-size:11px;font-weight:600;color:var(--side-muted);background:rgba(255,255,255,.07);padding:1px 7px;flex:0 0 auto;}
.nav-i .count.danger{color:#ff6b61;background:rgba(230,20,10,.16);font-weight:700;}
.nav-i.active{background:var(--side-2);color:#fff;}
.nav-i.active svg{color:#fff;}
.nav-i.active::before{content:"";position:absolute;left:-10px;top:4px;bottom:4px;width:3px;background:var(--accent);}
/* направления — в цвет направления */
.nav-i--section svg{color:var(--nav-section-color);}
.nav-i--section:hover svg,.nav-i--section.active svg{color:var(--nav-section-color);}
.nav-i--section.active{background:color-mix(in srgb, var(--nav-section-color) 16%, var(--side));}
.nav-i--section.active::before{background:var(--nav-section-color);}
/* выпадающее «Администрирование» */
.nav-chev{width:13px !important;height:13px !important;margin-left:auto;color:var(--side-muted);transition:transform .15s ease;flex:0 0 auto;}
.nav-sub{display:none;flex-direction:column;gap:1px;margin:1px 0 0;}
.nav-sub-wrap.open > .nav-sub{display:flex;}
.nav-sub-wrap.open > .nav-sub-toggle .nav-chev{transform:rotate(180deg);}
/* Вложенный пункт: иконка встаёт туда, где у родителя начинается подпись */
.nav-sub-i{padding-left:26px;}
.side-foot{margin-top:auto;border-top:1px solid var(--side-line);padding-top:8px;display:grid;gap:4px;}
.side-help{margin:0;}
/* ---- сворачиваемое меню (только десктоп) ---- */
.collapse-btn{display:none;}
@media(min-width:1101px){.collapse-btn{display:grid;}
.collapse-btn svg{transition:transform .15s ease;}
.side-collapsed .collapse-btn svg{transform:rotate(180deg);}
.hub-shell.side-collapsed{--side-w:72px;}
.side-collapsed .side{padding:12px 8px;gap:8px;}
.side-collapsed .logo{justify-content:center;padding:0;}
.side-collapsed .logo-link{justify-content:center;}
.side-collapsed .logo-link>span:not(.logo-mark){display:none;}
.side-collapsed .side-close{display:none;}
.side-collapsed .nav-grp + .nav-grp{padding-top:6px;}
.side-collapsed .nav-i-label,.side-collapsed .nav-chev{display:none;}
.side-collapsed .nav-i{justify-content:center;gap:0;padding:8px 0;}
.side-collapsed .nav-i .count{display:none;}
.side-collapsed .nav-i.active::before{left:-8px;}
.side-collapsed .nav-sub{display:flex !important;}
.side-collapsed .nav-sub-i{padding-left:0;}
.side-collapsed .nav-sub-toggle{display:none;}
}
/* mobile drawer plumbing */
.scrim{display:none;position:fixed;inset:0;background:rgba(8,12,20,.5);z-index:40;}
.menu-btn,.side-close{display:none;}
/* ---------- Header ---------- */
.layout{display:flex;flex-direction:column;min-width:0;}
.header{height:72px;flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:0 28px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;overflow:hidden;}
.crumb-bar{border-bottom:1px solid var(--line);background:var(--panel);}
.crumb-bar .wrap{padding:12px 40px;}
.crumbs{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:500;min-width:0;}
.crumbs a:hover{color:var(--text);}
.crumbs b{color:var(--text);font-weight:600;}
.crumbs .sep{color:var(--line-2);}
.crumbs svg{width:15px;height:15px;color:var(--muted);}
.search{margin-left:6px;flex:1;max-width:420px;position:relative;display:flex;align-items:center;}
.search-btn{position:absolute;left:0;top:0;width:40px;height:40px;border:none;background:transparent;display:grid;place-items:center;color:var(--muted);cursor:pointer;}
.search-btn svg{width:17px;height:17px;}
.search input{width:100%;height:40px;padding:0 14px 0 40px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-size:13px;}
.search input::placeholder{color:var(--muted);}
.search input:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft);background:var(--panel);}
.header-r{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:0;}
.header-r .btn{height:40px;}
.icon-btn{width:40px;height:40px;border:1px solid var(--line);background:var(--panel);display:grid;place-items:center;color:var(--soft);position:relative;cursor:pointer;flex:0 0 auto;}
.header .menu-btn{display:none;}
.icon-btn:hover{border-color:var(--line-2);color:var(--text);}
.icon-btn .dot{position:absolute;top:0;right:0;min-width:20px;height:20px;padding:0 5px;border-radius:999px!important;background:var(--accent);border:2px solid var(--panel);color:#fff;font-size:10px;font-weight:700;line-height:1;display:grid;place-items:center;z-index:2;animation:mh-badge-pulse 1.8s ease-out infinite;}
@keyframes mh-badge-pulse{0%{box-shadow:0 0 0 0 rgba(195,53,47,.55);}70%{box-shadow:0 0 0 8px rgba(195,53,47,0);}100%{box-shadow:0 0 0 0 rgba(195,53,47,0);}}
@media (prefers-reduced-motion:reduce){.icon-btn .dot{animation:none;box-shadow:0 6px 16px rgba(195,53,47,.28);}
}
@media (hover:none), (pointer:coarse){.icon-btn .dot{animation:none;box-shadow:none;}
.dir:hover,.kb-card:hover,.issue-card:hover,.att-thumb:hover{transform:none;box-shadow:var(--shadow);}
.post-mockup__media a:hover img{transform:none;}
}
.icon-btn .moon{display:none;}
html[data-theme="dark"] .icon-btn .moon{display:block;}
html[data-theme="dark"] .icon-btn .sun{display:none;}
.profile{display:flex;align-items:center;gap:10px;min-height:40px;padding:3px 12px 3px 4px;border:1px solid var(--line);background:var(--panel);cursor:pointer;}
.profile:hover{border-color:var(--line-2);}
.av{width:30px;height:30px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:600;font-size:12px;flex:0 0 auto;}
.user-avatar{display:grid;place-items:center;overflow:hidden;background:var(--accent);color:#fff;font-weight:700;line-height:1;flex:0 0 auto;}
img.user-avatar{object-fit:cover;display:block;}
.user-avatar--xs{width:24px;height:24px;font-size:10px;}
.user-avatar--sm{width:34px;height:34px;font-size:12px;}
.user-avatar--md{width:40px;height:40px;font-size:14px;}
.user-avatar--lg{width:72px;height:72px;font-size:26px;}
.user-avatar--xl{width:120px;height:120px;font-size:42px;}
.user-avatar--header{width:34px;height:34px;font-size:12px;}
.av-lg{width:120px;height:120px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:42px;font-weight:700;}
.profile-logo{width:120px;height:120px;object-fit:cover;border:1px solid var(--line);}
.user-link{display:inline-flex;align-items:center;gap:10px;min-width:0;color:inherit;}
.user-link:hover .user-link__name{text-decoration:underline;text-underline-offset:2px;}
.user-link--stacked .user-link__text{display:grid;gap:2px;min-width:0;}
.user-link--inline{gap:8px;}
.user-link--inline .user-link__text{min-width:0;}
.user-link__name{display:block;font-size:13px;font-weight:600;line-height:1.15;overflow-wrap:anywhere;word-break:break-word;}
.user-link__meta{display:block;color:var(--muted);font-size:11.5px;line-height:1.25;overflow-wrap:anywhere;word-break:break-word;}
.profile .pn{font-weight:600;font-size:13px;line-height:1.1;}
.profile .pr{font-size:11px;color:var(--muted);}
/* ---------- Main / layout primitives ---------- */
.main{flex:1;min-width:0;padding:34px 40px 56px;}
.wrap{max-width:none;margin:0 auto;}
.wrap.narrow{max-width:1100px;}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px;}
.kicker{display:none !important;}
h1{margin:0;font-size:28px;line-height:1.15;letter-spacing:-.02em;font-weight:700;overflow-wrap:anywhere;}
.page-head p{margin:9px 0 0;color:var(--muted);font-size:14.5px;max-width:58ch;}
.section{margin-top:28px;}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px;}
.sec-head h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em;}
.sec-head p{margin:3px 0 0;color:var(--muted);font-size:13px;}
.link{font-size:13px;font-weight:600;color:var(--accent);display:inline-flex;align-items:center;gap:5px;cursor:pointer;}
.link svg{width:15px;height:15px;}
.muted{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;}
/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:42px;padding:0 18px;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit;font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap;transition:border-color .13s ease,background-color .13s ease,color .13s ease,box-shadow .13s ease,filter .13s ease;}
.btn:hover{border-color:var(--line-2);box-shadow:var(--shadow);}
.btn svg{width:17px;height:17px;}
.btn.sm{height:36px;padding:0 13px;font-size:13px;}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 10px -3px oklch(57% 0.205 27 / .5);}
.btn.primary:hover{filter:brightness(1.04);box-shadow:0 6px 18px -5px oklch(57% 0.205 27 / .55);}
.btn.green{background:var(--green);border-color:var(--green);color:#fff;}
.btn.green:hover{filter:brightness(1.04);}
.btn.blue{background:var(--blue);border-color:var(--blue);color:#fff;}
.btn.blue:hover{filter:brightness(1.04);}
.btn.amber{background:var(--amber-soft);border-color:transparent;color:var(--amber);}
.btn.ghost{background:transparent;}
.btn.block{width:100%;}
.actions{display:flex;flex-wrap:wrap;gap:10px;}
/* ---------- Metrics ---------- */
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.metric{background:var(--panel);border:1px solid var(--line);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;}
.metric-top{display:flex;align-items:center;justify-content:space-between;}
.metric-cap{font-size:12.5px;color:var(--muted);font-weight:500;}
.metric-ic{width:32px;height:32px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.metric-ic svg{width:17px;height:17px;}
.metric-ic.am{background:var(--amber-soft);color:var(--amber);}
.metric-ic.gr{background:var(--green-soft);color:var(--green);}
.metric-ic.rd{background:var(--accent-soft);color:var(--accent);}
.metric-num{font-family:"IBM Plex Mono",monospace;font-size:34px;font-weight:600;letter-spacing:-.02em;line-height:1;}
.metric-foot{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;}
.metric-foot .up{color:var(--green);font-weight:600;display:inline-flex;align-items:center;gap:3px;}
.metric-foot .up svg{width:13px;height:13px;}
/* ---------- Cards / panels ---------- */
.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);}
.panel.pad{padding:20px;}
@supports (content-visibility:auto){.panel,.metric,.analytics-kpi,.analytics-insight,.job-row,.task,.tbl tbody tr{content-visibility:auto;contain-intrinsic-size:1px 220px;}
}
.grid{display:grid;gap:14px;}
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
.split{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.9fr);gap:18px;align-items:start;}
.split-rev{display:grid;grid-template-columns:minmax(320px,1fr) minmax(0,2fr);gap:18px;align-items:start;}
/* Раздел «Справки»: aside визуально «в два раза меньше» — уже, компактнее внутри,
   но всё содержимое остаётся видимым. Ширина колонки ~ вдвое меньше исходной,
   внутренние отступы, шрифты и элементы упакованы плотнее. */
.split-rev--narrow-aside{grid-template-columns:minmax(220px,1fr) minmax(0,4fr);gap:22px;}
/* Отключаем paint-clip на самих панелях, но каждая .panel остаётся с
   overflow:hidden — тогда её содержимое переносится и не заезжает в промежуток
   между колонками (иначе строки «толкали» соседний блок вплотную). */
.split-rev--narrow-aside .task-shell-panel,
.split-rev--narrow-aside .task-shell-panel *{contain:none;}
.split-rev--narrow-aside .task-shell-panel{font-size:12.5px;min-width:0;overflow-wrap:anywhere;word-break:break-word;}
.split-rev--narrow-aside .task-shell-panel > .panel,
.split-rev--narrow-aside .task-shell-panel .panel.pad{padding:12px 14px;overflow:hidden;}
.split-rev--narrow-aside .task-shell-panel h2{font-size:13px !important;margin-bottom:8px !important;}
.split-rev--narrow-aside .task-shell-panel .grid{gap:8px !important;}
.split-rev--narrow-aside .task-shell-panel .muted{font-size:11px !important;}
.split-rev--narrow-aside .task-shell-panel .chip,
.split-rev--narrow-aside .task-shell-panel .badge{font-size:11px;padding:2px 6px;white-space:normal;}
/* Заголовок шага согласования: не растягиваем в space-between, а даём переноситься. */
.split-rev--narrow-aside .task-shell-panel .chain-step__head{flex-wrap:wrap;justify-content:flex-start;gap:6px;}
.split-rev--narrow-aside .task-shell-panel .chain-step__head b{font-size:12px;}
.split-rev--narrow-aside .task-shell-panel .chain-step__head small{font-size:10px;white-space:normal;}
.split-rev--narrow-aside .task-shell-panel .chain-step{padding:6px 8px;}
.split-rev--narrow-aside .task-shell-panel .chain-step__people{gap:4px;}
.split-rev--narrow-aside .task-shell-panel .chain-step__person{flex-wrap:wrap;}
.split-rev--narrow-aside .task-shell-panel .file-row{padding:6px 8px;font-size:12px;}
/* На узких экранах — совсем в одну колонку, а не в 1:4. */
@media (max-width:900px){.split-rev--narrow-aside{grid-template-columns:1fr;}
}
.stack{display:grid;gap:18px;}
.inline-note{display:flex;gap:14px;align-items:flex-start;padding:18px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);}
.inline-note .metric-ic{flex:0 0 auto;width:38px;height:38px;}
.inline-note b{font-size:14px;display:block;}
.inline-note p{margin:5px 0 0;color:var(--muted);font-size:13px;max-width:74ch;}
/* modal */
body.modal-open{overflow:hidden;}
.modal{padding:0;border:none;max-width:min(760px, calc(100vw - 32px));width:100%;background:transparent;color:inherit;}
.modal::backdrop{background:rgba(8,12,20,.56);}
.modal-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg);padding:22px;}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;}
.modal-head h2{margin:0;font-size:18px;line-height:1.2;}
.modal-head p{margin:6px 0 0;color:var(--muted);font-size:13px;max-width:58ch;}
.modal-close{width:38px;height:38px;padding:0;}
.mh-confirm{max-width:min(440px, calc(100vw - 32px));}
.mh-confirm__card{padding:22px 22px 18px;}
.mh-confirm__text{margin:0 0 18px;font-size:14px;line-height:1.45;color:var(--text);}
.mh-confirm__actions{display:flex;justify-content:flex-end;gap:8px;}
.mh-confirm__actions .btn{min-width:96px;}
.att-list{display:grid;gap:10px;margin-top:10px;}
.att-list:empty{margin-top:0;}
.att-tile{display:grid;grid-template-columns:auto 72px 1fr auto;gap:12px;padding:10px;border:1px solid var(--line);background:var(--panel-2);align-items:center;}
.att-tile__drag{display:inline-flex;align-items:center;justify-content:center;width:22px;height:36px;color:var(--muted);cursor:grab;}
.att-tile__drag:hover{background:var(--panel);color:var(--text);}
.att-tile__drag:active{cursor:grabbing;}
.att-tile__drag svg{width:15px;height:15px;stroke:currentColor;fill:none;}
.att-tile.is-dragging{opacity:.45;outline:2px dashed var(--accent-line);}
.post-mockup__media figure.is-dragging{opacity:.45;outline:2px dashed var(--accent-line);}
[data-media-sortable] figure{cursor:grab;}
[data-media-sortable] figure:active{cursor:grabbing;}
.att-tile.is-uploading{opacity:.55;}
.att-tile.is-error{border-color:var(--err,#c52828);}
.att-tile__thumb{width:72px;height:72px;display:flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line);overflow:hidden;}
.att-tile__thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.att-tile__thumb svg{width:30px;height:30px;opacity:.55;}
.att-tile__body{min-width:0;}
.att-tile__name{font-size:13px;line-height:1.3;word-break:break-word;}
.att-tile__name b{font-weight:600;}
.att-tile__name small{display:block;color:var(--muted);font-size:11px;margin-top:2px;}
.att-tile__caption{width:100%;margin-top:8px;padding:7px 9px;font:inherit;font-size:12px;border:1px solid var(--line);background:var(--panel);color:inherit;}
.att-tile__caption:focus{outline:none;border-color:var(--accent);}
.att-tile__status{display:block;margin-top:4px;font-size:11px;}
.att-tile__status.is-error{color:var(--err,#c52828);}
.att-tile__del{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;}
.att-tile__del svg{width:16px;height:16px;}
.att-caption-text{display:block;color:var(--muted);font-size:11px;margin-top:3px;font-style:italic;}
.post-mockup{display:grid;gap:14px;}
.post-mockup__media{display:grid;gap:6px;width:75%;margin-inline:auto;}
.post-mockup__media--1{grid-template-columns:1fr;}
.post-mockup__media--1 figure a{aspect-ratio:16/9;}
.post-mockup__media--2{grid-template-columns:1fr 1fr;}
.post-mockup__media--3{grid-template-columns:1fr 1fr 1fr;}
.post-mockup__media--many{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));}
.post-mockup__media figure{margin:0;display:flex;flex-direction:column;}
.post-mockup__media a{display:block;aspect-ratio:1/1;overflow:hidden;background:var(--panel-2);border:1px solid var(--line);}
.post-mockup__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease;}
.post-mockup__media a:hover img{transform:scale(1.03);}
.post-mockup__media figcaption{font-size:11px;color:var(--muted);font-style:italic;margin-top:4px;padding:0 2px;line-height:1.3;}
.post-mockup__text{margin:0;}
.post-mockup__video{width:100%;background:#000;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;}
.post-mockup__video video{width:100%;max-height:520px;display:block;}
.att-tile__thumb video{width:100%;height:100%;object-fit:cover;display:block;}
.post-mockup__docs{display:grid;gap:8px;}
.post-mockup__hint{font-size:11px;color:var(--muted);font-style:italic;margin:0 0 -4px;}
.perm-grid{margin-top:14px;padding:14px;border:1px solid var(--line);background:var(--panel-2);display:grid;gap:10px;}
.perm-grid__head h3{margin:0 0 4px;font-size:14px;}
.perm-grid__head p{margin:0;font-size:12.5px;}
.perm-row{display:grid;grid-template-columns:minmax(180px,1.4fr) repeat(3,minmax(0,1fr));gap:14px;align-items:center;padding:8px 10px;background:var(--panel);border:1px solid var(--line);}
.perm-row__name{font-weight:600;}
.perm-row .inline-check{font-size:13px;}
@media (max-width:720px){.perm-row{grid-template-columns:1fr;gap:6px;}
}
.mh-confirm-modal{max-width:min(480px, calc(100vw - 32px));}
.mh-confirm-card{padding:22px;}
.mh-confirm-card .modal-head{margin-bottom:18px;}
.mh-confirm-card p{font-size:13.5px;line-height:1.55;color:var(--soft);}
.image-preview-modal{max-width:min(1200px, calc(100vw - 32px));}
.image-preview-card{padding:18px;}
.image-preview-body{display:flex;align-items:center;justify-content:center;background:var(--panel-2);border:1px solid var(--line);padding:14px;max-height:75vh;overflow:auto;}
.image-preview-body img{display:block;max-width:100%;max-height:70vh;height:auto;width:auto;object-fit:contain;}
.choice-card[hidden],.template-choice[hidden],.regulation-hint[hidden],.user-edit-row[hidden],.skills-panel[hidden],.user-modal-panel[hidden],label.field[hidden]{display:none !important;}
/* directions */
.dir{background:var(--panel);border:1px solid var(--line);padding:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease;}
.dir:hover{border-color:var(--line-2);box-shadow:var(--shadow-lg);transform:translateY(-2px);}
.dir-top{display:flex;align-items:center;gap:13px;}
.dir-ic{width:44px;height:44px;display:grid;place-items:center;flex:0 0 auto;background:var(--blue-soft);color:var(--blue);}
.dir-ic svg{width:21px;height:21px;}
.dir-ic.s{background:var(--accent-soft);color:var(--accent);}
.dir-ic.p{background:var(--amber-soft);color:var(--amber);}
.dir h3{margin:0;font-size:15.5px;font-weight:600;}
.dir-top small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px;}
.dir-desc{color:var(--soft);font-size:13px;line-height:1.5;margin:0;flex:1;}
/* chips & badges */
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;font-size:11.5px;font-weight:600;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);}
.chip.rev{background:var(--amber-soft);border-color:transparent;color:var(--amber);}
.chip.ok{background:var(--green-soft);border-color:transparent;color:var(--green);}
.chip.blue{background:var(--blue-soft);border-color:transparent;color:var(--blue);}
.chip .pdot{width:6px;height:6px;border-radius:50%!important;background:currentColor;}
.badges{display:flex;flex-wrap:wrap;gap:7px;}
/* Длинная подпись («Передан в дизайн и типографию») переносится на вторую
   строку — плашка растёт вместе с текстом, а не обрезает его. */
.badge{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:4px 11px;line-height:1.25;font-size:12px;font-weight:600;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);}
.badge .pdot{flex:0 0 auto;}
.badge .pdot{width:6px;height:6px;border-radius:50%!important;background:currentColor;}
.badge.rev{background:var(--amber-soft);border-color:transparent;color:var(--amber);}
.badge.wait{background:var(--blue-soft);border-color:transparent;color:var(--blue);}
.badge.ok{background:var(--green-soft);border-color:transparent;color:var(--green);}
/* ---------- Task list ---------- */
.filterbar{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:nowrap;}
.filter-search{flex:1;min-width:140px;max-width:340px;position:relative;display:flex;align-items:center;}
.filter-search svg{position:absolute;left:11px;width:16px;height:16px;color:var(--muted);}
.filter-search input{width:100%;height:38px;padding:0 12px 0 36px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-size:13px;}
.filter-search input:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft);}
.sel{height:38px;flex:0 0 auto;width:160px;padding:0 32px 0 12px;border:1px solid var(--line);background:var(--panel-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%23667085' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 5l4 4 4-4'/></svg>") no-repeat right 10px center;color:var(--text);font:inherit;font-size:13px;font-weight:500;cursor:pointer;appearance:none;}
.tasks-list{display:flex;flex-direction:column;}
.task{display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:15px 18px;border-bottom:1px solid var(--line);transition:background-color .12s;}
.task:last-child{border-bottom:none;}
.task:hover{background:var(--panel-2);}
.task-ic{width:36px;height:36px;display:grid;place-items:center;}
.task-ic svg{width:18px;height:18px;}
.t-name{font-weight:600;font-size:14px;overflow-wrap:anywhere;word-break:break-word;}
.t-sub{color:var(--muted);font-size:12.5px;margin-top:3px;overflow-wrap:anywhere;word-break:break-word;}
.t-date{font-size:12.5px;color:var(--muted);font-family:"IBM Plex Mono",monospace;white-space:nowrap;}
/* ---------- Массовый выбор задач ---------- */
.task-check{display:none;width:20px;height:20px;border:1.5px solid var(--line);background:var(--panel);align-items:center;justify-content:center;flex:0 0 auto;}
.task-check svg{width:12px;height:12px;stroke:var(--panel);opacity:0;}
.bulk-mode .task{grid-template-columns:20px 36px minmax(0,1fr) auto auto;cursor:pointer;}
.bulk-mode .task .task-check{display:flex;}
.bulk-mode .task.bulk-selected{background:var(--accent-soft);}
.bulk-mode .task.bulk-selected .task-check{background:var(--accent);border-color:var(--accent);}
.bulk-mode .task.bulk-selected .task-check svg{opacity:1;stroke:#fff;}
.bulk-bar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--panel);border:1px solid var(--line);box-shadow:0 8px 30px rgba(0,0,0,.18);flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 24px);}
.bulk-bar[hidden]{display:none;}
.bulk-count{font-weight:600;font-size:13px;white-space:nowrap;}
.bulk-sep{width:1px;height:22px;background:var(--line);}
.bulk-user-list{display:flex;flex-direction:column;max-height:300px;overflow:auto;border:1px solid var(--line);margin:14px 0;}
.bulk-user-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13.5px;}
.bulk-user-row:last-child{border-bottom:none;}
.bulk-user-row:hover{background:var(--panel-2);}
.bulk-user-row input{accent-color:var(--accent);}
.bulk-warn{background:var(--amber-soft);border:1px solid transparent;padding:12px 14px;margin-bottom:12px;display:grid;gap:8px;font-size:13px;}
.bulk-warn label{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:500;}
/* ---------- Forms ---------- */
.form{display:grid;gap:18px;}
.form-section{display:grid;gap:16px;background:var(--panel);border:1px solid var(--line);padding:20px;box-shadow:var(--shadow);}
.form-section > header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--line);}
.form-section > header h2{margin:0;font-size:16px;font-weight:600;}
.form-section small,.hint{color:var(--muted);line-height:1.5;font-size:12.5px;display:block;margin-top:3px;}
label.field{display:grid;gap:7px;font-weight:600;font-size:13px;}
label.field .opt{color:var(--muted);font-weight:500;}
input[type=text],input[type=email],input[type=password],input[type=datetime-local],input[type=date],input[type=number],input[type=tel],input[type=url],input[type=search],input:not([type]),select,textarea{width:100%;min-width:0;background:var(--panel);color:var(--text);border:1px solid var(--line);padding:11px 12px;font:inherit;font-size:13.5px;}
input[type=number]{appearance:textfield;-moz-appearance:textfield;}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%23667085' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 5l4 4 4-4'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px;cursor:pointer;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft);}
input::placeholder,textarea::placeholder{color:var(--muted);}
textarea{min-height:120px;resize:vertical;line-height:1.55;}
textarea.sm{min-height:84px;}
textarea.md{min-height:150px;}
/* Редактор материала и HTML-шаблона — всегда светлая подложка с тёмным текстом.
   Иначе вставка из Word с inline color:#000 не видна на тёмной теме. */
textarea.md,textarea[data-editor-text],textarea[data-editor-html],textarea[data-channel-text]{background:var(--panel);color:var(--text);caret-color:var(--text);}
textarea.md::placeholder,textarea[data-editor-text]::placeholder,textarea[data-editor-html]::placeholder,textarea[data-channel-text]::placeholder{color:var(--muted);}
/* choice cards */
.choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.choice-card{display:grid;grid-template-columns:20px minmax(0,1fr);gap:12px;align-items:start;border:1px solid var(--line);background:var(--panel-2);padding:16px;cursor:pointer;transition:border-color .13s ease,background-color .13s ease;}
.choice-card:hover{border-color:var(--line-2);}
.choice-card .radio{width:20px;height:20px;border:1.5px solid var(--line-2);border-radius:50%!important;display:grid;place-items:center;margin-top:1px;}
.choice-card .radio::after{content:"";width:9px;height:9px;border-radius:50%!important;background:var(--accent);transform:scale(0);transition:.12s;}
.choice-card b{font-size:14px;font-weight:600;display:block;}
.choice-card small{color:var(--muted);font-size:12.5px;margin-top:3px;display:block;line-height:1.4;}
.choice-card input{position:absolute;opacity:0;pointer-events:none;}
.choice-card.selected{border-color:var(--accent);background:var(--accent-soft);}
.choice-card.selected .radio{border-color:var(--accent);}
.choice-card.selected .radio::after{transform:scale(1);}
/* checkbox chips */
.checks{display:flex;flex-wrap:wrap;gap:8px;}
.checks label{display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--soft);border:1px solid var(--line);background:var(--panel-2);padding:9px 12px;font-size:13px;cursor:pointer;}
.checks input{appearance:none;width:16px;height:16px;border:1.5px solid var(--line-2);position:relative;cursor:pointer;}
.checks input:checked{background:var(--accent);border-color:var(--accent);}
.checks input:checked::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M3 6.5 5.5 9 10 3.5'/></svg>") no-repeat center;}
.inline-panel{display:grid;gap:10px;border:1px solid var(--line);background:var(--panel-2);padding:16px;}
.token-editor{gap:14px;}
.token-list{display:grid;gap:10px;}
.token-wrap{display:flex;flex-wrap:wrap;gap:10px;}
.token-chip{display:inline-flex;align-items:center;gap:10px;padding:8px 10px 8px 12px;border:1px solid var(--line);background:var(--panel-2);font-size:13px;font-weight:600;color:var(--soft);}
.token-remove{width:22px;height:22px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;font-size:14px;line-height:1;}
.token-add{display:flex;gap:10px;align-items:center;}
.token-add input{flex:1;}
/* file dropzone */
.dropzone{position:relative;border:1.5px dashed var(--line-2);background:var(--panel-2);padding:24px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;cursor:pointer;transition:border-color .13s,background-color .13s,box-shadow .13s;}
.dropzone:hover{border-color:var(--accent-line);background:var(--accent-soft);}
.dropzone:focus-within{border-color:var(--accent-line);background:var(--accent-soft);box-shadow:0 0 0 3px color-mix(in oklab, var(--accent) 14%, transparent);}
.dropzone .dz-ic{width:42px;height:42px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--line);color:var(--accent);}
.dropzone .dz-ic svg{width:20px;height:20px;}
.dropzone b{font-size:13.5px;}
.dropzone .file-upload-input{position:absolute;inset:0;opacity:0;cursor:pointer;}
.file-list{display:grid;gap:8px;}
.file-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:11px;align-items:center;border:1px solid var(--line);background:var(--panel-2);padding:10px 12px;}
.file-row .f-ic{width:34px;height:34px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.file-row .f-ic svg{width:17px;height:17px;}
.file-row > div{min-width:0;}
.file-row b{font-size:13px;font-weight:600;display:block;overflow-wrap:anywhere;word-break:break-word;}
.file-row small{color:var(--muted);font-size:11.5px;display:block;overflow-wrap:anywhere;word-break:break-word;}
.file-row .x{color:var(--muted);cursor:pointer;width:28px;height:28px;display:grid;place-items:center;}
.file-row .x:hover{color:var(--accent);}
.related-row{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--panel-2);padding:8px 10px;}
.related-row__link{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;}
.related-row__ic{flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.related-row__ic svg{width:16px;height:16px;}
.related-row__body{display:flex;flex-direction:column;min-width:0;flex:1;}
.related-row__title{font-size:13px;font-weight:600;display:block;word-break:break-word;}
.related-row__meta{color:var(--muted);font-size:11.5px;display:block;}
.related-row__del-form{flex:0 0 auto;margin:0;}
.related-row__del{padding:0;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;}
.related-row__del svg{width:14px;height:14px;}
.reviewer-chain{display:flex;flex-direction:column;gap:10px;}
.reviewer-chain__step{border:1px solid var(--line);background:var(--panel-2);padding:10px 12px;display:flex;flex-direction:column;gap:8px;}
.reviewer-chain__step-head{display:flex;align-items:center;justify-content:space-between;}
.reviewer-chain__step-head b{font-size:13px;}
.reviewer-chain__reviewers{display:flex;flex-direction:column;gap:6px;}
.reviewer-chain__reviewer{display:flex;align-items:center;gap:6px;}
.reviewer-chain__reviewer select{flex:1;min-width:0;}
.reviewer-chain__remove,.reviewer-chain__remove-step{padding:0;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.reviewer-chain__add-parallel,.reviewer-chain__add-step{align-self:flex-start;}
.reviewer-chain__step:only-child .reviewer-chain__remove-step{display:none;}
.reviewer-chain__reviewer:only-child .reviewer-chain__remove{visibility:hidden;}
.chain-list{display:flex;flex-direction:column;gap:8px;}
.chain-step{border:1px solid var(--line);background:var(--panel-2);padding:8px 10px;display:flex;flex-direction:column;gap:6px;}
.chain-step--current{border-color:var(--accent);background:var(--accent-soft);}
.chain-step--approved{opacity:.75;}
.chain-step__head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.chain-step__head b{font-size:12px;font-weight:600;}
.chain-step__people{display:flex;flex-direction:column;gap:3px;font-size:12.5px;}
.chain-step__person{display:flex;align-items:center;gap:6px;}
.chain-step__dot{width:8px;height:8px;background:var(--muted);flex:0 0 auto;display:inline-block;}
.chain-step__dot.is-done{background:var(--green);}
.discussion-list{display:grid;gap:10px;margin-bottom:14px;}
.discussion-form{margin-top:14px;}
.discussion-card{display:grid;gap:12px;border:1px solid var(--line);background:var(--panel-2);padding:14px 16px;}
.discussion-card--correction{border-left:3px solid var(--accent);}
.discussion-card--resolved{background:var(--panel);border-color:var(--line);}
.discussion-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0;}
.discussion-card__author{min-width:0;flex:1 1 auto;}
.discussion-card__meta{color:var(--muted);font-size:12px;line-height:1.3;flex:0 0 auto;text-align:right;}
.discussion-card__body{font-size:13px;line-height:1.6;color:var(--soft);overflow-wrap:anywhere;word-break:break-word;}
.discussion-card__body a{color:var(--accent);text-decoration:underline;}
.discussion-quote{display:block;margin:0 0 8px;padding:6px 10px;border-left:3px solid var(--line);background:var(--panel);color:var(--muted);font-size:12px;}
.discussion-card__actions{display:flex;justify-content:flex-start;}
.discussion-card__badge{width:36px;height:36px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);flex:0 0 auto;}
.discussion-card__badge svg{width:16px;height:16px;}
.discussion-card__title{display: grid;gap: 4px;min-width: 0;grid-auto-flow: column;align-items: center;}
.discussion-card__title h3{margin:0;font-size:14px;font-weight:600;}
.discussion-archive{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;}
.discussion-archive-wrap{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);}
.discussion-archive--compact{grid-template-columns:1fr;}
.discussion-card--resolved .discussion-card__head{align-items:center;}
.discussion-card--resolved .discussion-card__title{flex:1 1 auto;}
/* ---------- Tabs ---------- */
.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--line);}
.tab{appearance:none;border:none;outline:none;box-shadow:none;background:transparent;display:inline-flex;gap:7px;align-items:center;white-space:nowrap;padding:10px 14px;color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;}
.tab:hover{color:var(--text);}
.tab.active{color:var(--accent);border-bottom-color:var(--accent);}
/* Вкладки-ссылки вверху страницы: заменяют собой подпункты бокового меню. */
/* Не переносим на вторую строку: на узком экране полоса просто прокручивается вбок. */
/* Полоса прокручивается вбок, поэтому по вертикали не должна вылезать ни на пиксель:
   иначе браузер рисует рядом лишнюю вертикальную полосу прокрутки. Обычные вкладки
   «наезжают» на нижнюю линию отрицательным отступом — здесь он и давал этот лишний
   пиксель, поэтому убираем его. */
/* Вкладок в «Администрировании» стало много, и в одну строку они уже не
   помещались — полоса уезжала вбок и рисовала прокрутку. Переносим на вторую
   строку: прокрутки нет, все вкладки видны сразу. */
.page-tabs{margin:0 0 16px;gap:2px;flex-wrap:wrap;}
.page-tabs .tab{text-decoration:none;margin-bottom:0;padding:7px 10px;gap:6px;font-size:12.5px;}
.page-tabs .tab .ic{width:14px;height:14px;flex:0 0 auto;}
.page-tabs .tab .count{font-size:11px;font-weight:600;color:var(--muted);background:var(--panel-2);padding:1px 5px;}
.page-tabs .tab .count.danger{color:#fff;background:var(--accent);font-weight:700;}
/* На телефоне переносить нечего: десять вкладок дадут шесть рядов и отожмут
   страницу вниз. Там полоса снова одна и прокручивается вбок. По вертикали
   при этом не должна вылезать ни на пиксель — иначе браузер пририсует рядом
   лишнюю вертикальную прокрутку. */
@media(max-width:720px){
  .page-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;}
}
.skills-tabs{gap:0;padding:0;background:transparent;border-bottom:1px solid var(--line);}
.skills-tabs .tab{
  appearance:none;
  border:none;
  outline:none;
  box-shadow:none;
  border-radius:0 !important;
  background:transparent;
  padding:0 14px 14px;
  margin:0 18px -1px 0;
  min-height:0;
  font-size:14px;
  font-weight:600;
  line-height:1.2;
  color:var(--muted);
  border-bottom:2px solid transparent;
}
.skills-tabs .tab:last-child{margin-right:0;}
.skills-tabs .tab:hover{color:var(--text);}
.skills-tabs .tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.skills-tabs .tab:focus-visible{color:var(--text);border-bottom-color:var(--accent);}
.skills-tabs .tab-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:28px;
  height:22px;
  margin-left:4px;
  padding:0 8px;
  border:1px solid var(--line);
  background:var(--panel-2);
  color:var(--muted);
  font-size:12px;
  font-weight:600;
  line-height:1;
}
/* channel-editor sub-tabs (rendered below main result/editor tabs — must look distinct) */
[data-channel-editor-tabs]{display:inline-flex;flex-wrap:wrap;gap:0;padding:4px;background:var(--panel-2);border:1px solid var(--line);width:fit-content;margin:4px 0 4px;border-bottom:1px solid var(--line);}
[data-channel-editor-tabs] .tab{padding:8px 16px;margin:0;font-size:12.5px;font-weight:600;color:var(--muted);background:transparent;border:none;border-bottom:none !important;min-height:0;line-height:1.2;transition:background-color .12s, color .12s;}
[data-channel-editor-tabs] .tab:hover{color:var(--text);background:var(--panel);}
[data-channel-editor-tabs] .tab.active,
[data-channel-editor-tabs] .tab.active:hover{color:#fff;background:var(--accent);border-bottom-color:transparent !important;}
/* version pills */
.vtabs{display:flex;flex-wrap:wrap;gap:8px;}
.vtab{display:inline-flex;gap:7px;align-items:center;padding:8px 12px;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-weight:600;font-size:12.5px;cursor:pointer;}
.vtab.active{border-color:var(--accent);background:var(--panel);color:var(--text);}
/* ---------- Email preview ---------- */
.email-preview{display:grid;gap:14px;border:1px solid var(--line);background:var(--panel-2);padding:16px;}
.email-frame{width:100%;min-height:520px;border:1px solid var(--line);background:#fff;display:block;}
.email-bar{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--panel);border:1px solid var(--line);font-size:12.5px;color:var(--muted);}
.email-bar .dots{display:flex;gap:5px;}
.email-bar .dots i{width:9px;height:9px;border-radius:50%!important;background:var(--line-2);display:block;}
/* ---------- Prose ---------- */
.prose{max-width:74ch;color:var(--text);overflow-wrap:anywhere;}
/* Превью материала — тема-зависимая «бумага».
   Inline color/background из Word-вставок уже вычищены сервером
   (см. WorkspaceController::renderMaterialHtml), поэтому текст
   спокойно наследует цвет темы и читается и на светлой, и на тёмной. */
.material-box{background:var(--panel);color:var(--text);padding:18px 20px;border:1px solid var(--line);box-shadow:var(--shadow);}
.material-box *{color:inherit;background-color:transparent;}
.material-box p,.material-box li,.material-box h1,.material-box h2,.material-box h3,.material-box h4,.material-box h5,.material-box h6,.material-box blockquote,.material-box td,.material-box th,.material-box span,.material-box div{color:var(--text);}
.material-box a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;}
.material-box pre,.material-box code{background:var(--panel-2);color:var(--text);border:1px solid var(--line);}
.material-box pre{padding:10px 12px;overflow:auto;}
.material-box code{padding:1px 5px;font-size:.92em;}
.material-box img{max-width:100%;height:auto;}
.material-box table{border-collapse:collapse;}
.material-box th,.material-box td{border:1px solid var(--line);padding:6px 10px;}
/* Пресс-релизы — длинный документ, не ограничиваем по ширине абзацев. */
.prose--wide{max-width:none;}
.prose h1{font-size:20px;margin:0 0 10px;}
.prose h2{font-size:15.5px;margin:20px 0 8px;font-weight:600;}
.prose p{margin:8px 0;color:var(--soft);line-height:1.6;}
.prose ul,.prose ol{margin:8px 0;padding-left:20px;}
.prose li{margin:5px 0;color:var(--soft);}
.prose pre{background:oklch(20% 0.015 262);color:#e9edf5;padding:14px;overflow:auto;white-space:pre-wrap;font-family:"IBM Plex Mono",monospace;font-size:12.5px;line-height:1.6;}
/* decision / review */
.empty{border:1px dashed var(--line-2);padding:16px;color:var(--muted);background:var(--panel-2);font-size:13px;}
.error-text{color:var(--accent);font-weight:600;}
.diff-summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 4px;}
.diff-toggle{margin-left:auto;}
.diff-toggle[aria-pressed="true"]{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft);}
.diff-head{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.diff-head__side{display:flex;align-items:center;justify-content:space-between;padding:0 4px;color:var(--muted);font-size:12px;}
.diff-head__label{text-transform:uppercase;letter-spacing:.08em;font-size:11px;}
.diff-list{display:grid;gap:8px;}
.diff-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.diff-row[hidden]{display:none;}
.diff-side{font-family:"IBM Plex Mono",monospace;font-size:12px;line-height:1.5;padding:10px 12px;border:1px solid var(--line);background:var(--panel-2);min-width:0;}
.diff-side__text{white-space:pre-wrap;word-break:break-word;}
.diff-side__meta{display:block;margin-bottom:6px;color:var(--muted);font-size:11px;font-family:"IBM Plex Sans",sans-serif;}
.diff-side--empty{background:transparent;border-style:dashed;opacity:.55;}
.diff-same .diff-side{opacity:.75;}
.diff-mark{padding:0 1px;color:inherit;background:transparent;}
.diff-mark--del{background:color-mix(in oklab, var(--accent) 24%, transparent);}
.diff-mark--ins{background:color-mix(in oklab, var(--green) 30%, transparent);}
.diff-skip{display:block;width:100%;padding:8px 12px;border:1px dashed var(--line);background:transparent;color:var(--muted);font-size:12px;font-family:inherit;text-align:center;cursor:pointer;}
.diff-skip:hover{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft);}
.diff-machine__json{margin:0;padding:12px;border:1px solid var(--line);background:var(--panel-2);font-family:"IBM Plex Mono",monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto;}
/* accordion (details) */
.acc{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);transition:border-color .15s, box-shadow .15s, transform .15s;}
.acc:hover{border-color:var(--accent-line);box-shadow:0 6px 18px rgba(0,0,0,.08);}
.acc + .acc{margin-top:12px;}
.acc > summary{display:flex;justify-content:space-between;gap:14px;align-items:center;cursor:pointer;list-style:none;padding:16px 18px;transition:background-color .15s;}
.acc > summary:hover{background:var(--panel-2);}
.acc > summary::-webkit-details-marker{display:none;}
.acc > summary .s-main{min-width:0;display:grid;gap:3px;}
.acc > summary .s-main b{font-size:14.5px;}
.acc > summary .s-main small{color:var(--muted);font-size:12.5px;}
.acc > summary .chev{color:var(--muted);transition:transform .15s, color .15s;flex:0 0 auto;font-size:26px;line-height:1;font-weight:700;width:28px;text-align:center;}
.acc:hover > summary .chev{color:var(--accent);}
.acc[open] > summary .chev{transform:rotate(90deg);color:var(--accent);}
.acc[open] > summary{border-bottom:1px solid var(--line);background:var(--panel-2);}
.acc .acc-body{padding:18px;}
/* job rows (queue) */
.job-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--line);background:var(--panel);padding:14px 16px;box-shadow:var(--shadow);}
.job-row + .job-row{margin-top:10px;}
.job-ic{width:40px;height:40px;display:grid;place-items:center;}
.job-ic svg{width:19px;height:19px;}
.job-ic.ok{background:var(--green-soft);color:var(--green);}
.job-ic.wait{background:var(--blue-soft);color:var(--blue);}
.job-ic.rev{background:var(--amber-soft);color:var(--amber);}
.job-ic.err{background:var(--accent-soft);color:var(--accent);}
.job-row b{font-size:14px;display:block;}
.job-row .j-sub{color:var(--muted);font-size:12.5px;margin-top:2px;}
/* ---------- Data table (users) ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px;}
.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--panel-2);}
.tbl td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle;}
.tbl tr:last-child td{border-bottom:none;}
.tbl tbody tr:hover{background:var(--panel-2);}
.u-cell{display:flex;align-items:center;gap:11px;}
.u-cell .av,.u-cell .user-avatar{width:34px;height:34px;}
.u-cell b{font-size:13.5px;}
.u-cell small{color:var(--muted);font-size:12px;display:block;}
.role-pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;font-size:12px;font-weight:600;background:var(--panel-2);border:1px solid var(--line);}
.role-pill.admin{background:var(--accent-soft);border-color:transparent;color:var(--accent);}
.row-actions{display:flex;gap:6px;justify-content:flex-end;}
.row-actions .icon-btn{width:34px;height:34px;}
.row-actions .icon-btn svg{width:16px;height:16px;}
/* avatar block (account) */
.profile-layout{align-items:stretch;}
.profile-side{display:flex;min-height:100%;}
.profile-summary{display:flex;flex-direction:column;justify-content:space-between;gap:22px;min-height:100%;width:100%;text-align:center;}
.profile-summary-main{display:grid;justify-items:center;gap:14px;}
.profile-summary-stats{display:grid;gap:10px;padding-top:16px;border-top:1px solid var(--line);}
.profile-stat{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;}
.profile-stat b{font-size:16px;}
/* knowledge base */
.kb-card{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;border:1px solid var(--line);background:var(--panel);padding:18px;box-shadow:var(--shadow);transition:border-color .14s,box-shadow .14s,transform .14s;}
.kb-card:hover{border-color:var(--line-2);box-shadow:var(--shadow-lg);transform:translateY(-2px);}
.kb-top{display:flex;align-items:center;gap:11px;}
.kb-ic{width:38px;height:38px;display:grid;place-items:center;background:var(--green-soft);color:var(--green);flex:0 0 auto;}
.kb-ic svg{width:18px;height:18px;}
.kb-card h3{margin:0;font-size:14.5px;font-weight:600;}
.kb-card p{margin:0;color:var(--soft);font-size:13px;line-height:1.5;}
.kb-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;color:var(--muted);font-size:12px;padding-top:10px;border-top:1px solid var(--line);}
.kb-card details.acc{box-shadow:none;margin-top:14px;}
/* process list */
.process{display:grid;gap:14px;counter-reset:step;}
.process li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start;list-style:none;}
.process li::before{counter-increment:step;content:counter(step);width:28px;height:28px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:13px;font-family:"IBM Plex Mono",monospace;}
.process li b{font-size:13.5px;}
.process li small{color:var(--muted);font-size:12.5px;display:block;margin-top:2px;}
/* search inputs — keep left room for the icon (override generic input rule) */
.header .search input{padding:0 14px 0 40px;}
.filterbar .filter-search input{padding:0 12px 0 38px;}
[data-panel="html"] pre{margin:12px 0 0;background:var(--panel-2);border:1px solid var(--line);padding:14px;overflow:auto;white-space:pre;font-family:"IBM Plex Mono",monospace;font-size:12.5px;line-height:1.6;color:var(--soft);}
/* ---------- Analytics ---------- */
.analytics-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 88%, var(--blue-soft)),var(--panel));}
.analytics-hero::after{content:"";position:absolute;inset:auto -80px -120px auto;width:280px;height:280px;background:radial-gradient(circle,var(--blue-soft),transparent 68%);pointer-events:none;opacity:.9;}
.analytics-hero__head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:end;position:relative;z-index:1;}
.analytics-hero__eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 10px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--blue);}
.analytics-hero__eyebrow svg{width:14px;height:14px;}
.analytics-hero__title{margin:0 0 10px;font-size:30px;line-height:1.08;max-width:860px;}
.analytics-hero__text{margin:0;max-width:820px;color:var(--muted);font-size:14px;line-height:1.7;}
.analytics-hero__chips{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:flex-end;}
.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;background:rgba(255,255,255,.04);border:1px solid var(--line);font-size:12px;color:var(--muted);}
.chip b{color:var(--text);font-weight:700;}
.chip--warn{border-color:color-mix(in srgb,var(--amber) 46%, var(--line));background:color-mix(in srgb,var(--amber-soft) 82%, transparent);}
.analytics-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}
/* Четыре плитки в строку — для сводок, где показателей ровно четыре. */
.analytics-kpis--four{grid-template-columns:repeat(4,minmax(0,1fr));}
.analytics-kpi{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);padding:18px;display:grid;gap:8px;}
.analytics-kpi::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--blue);opacity:.9;}
.analytics-kpi--green::before{background:var(--green);}
.analytics-kpi--amber::before{background:var(--amber);}
.analytics-kpi--accent::before{background:var(--accent);}
.analytics-kpi__icon{width:38px;height:38px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.analytics-kpi--green .analytics-kpi__icon{background:var(--green-soft);color:var(--green);}
.analytics-kpi--amber .analytics-kpi__icon{background:var(--amber-soft);color:var(--amber);}
.analytics-kpi--accent .analytics-kpi__icon{background:var(--accent-soft);color:var(--accent);}
.analytics-kpi__icon svg{width:18px;height:18px;}
.analytics-kpi__value{font-family:"IBM Plex Mono",monospace;font-size:34px;font-weight:700;line-height:1;letter-spacing:-.03em;}
.analytics-kpi__title{font-size:14px;font-weight:700;}
.analytics-kpi__meta{margin:0;color:var(--muted);font-size:12.5px;line-height:1.6;}
.analytics-grid{display:grid;gap:18px;align-items:stretch;}
.analytics-grid--primary{grid-template-columns:minmax(0,1.55fr) minmax(320px,.85fr);}
.analytics-grid--secondary{grid-template-columns:repeat(2,minmax(0,1fr));}
.analytics-grid--triad{grid-template-columns:repeat(3,minmax(0,1fr));}
.analytics-panel-card{height:100%;display:flex;flex-direction:column;}
.analytics-panel-card > .analytics-ranked__list,.analytics-panel-card > .analytics-insights__list,.analytics-panel-card > .analytics-chart{flex:1;}
.analytics-card-head,.analytics-table-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;}
.analytics-card-title{margin:0;font-size:18px;line-height:1.2;}
.analytics-card-text{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.6;max-width:720px;}
.analytics-chart-card{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 92%, var(--blue-soft)),var(--panel));height:100%;display:flex;flex-direction:column;}
.analytics-chart-summary{display:grid;gap:2px;min-width:160px;text-align:right;}
.analytics-chart-summary__label,.analytics-chart-summary__meta{font-size:12px;color:var(--muted);}
.analytics-chart-summary__value{font-family:"IBM Plex Mono",monospace;font-size:34px;line-height:1;letter-spacing:-.03em;}
.analytics-chart{display:grid;gap:12px;flex:1;align-content:start;}
.analytics-chart__stage{position:relative;padding:12px 8px 0;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.015),transparent);overflow:hidden;isolation:isolate;}
.analytics-chart__svg{width:100%;height:auto;display:block;overflow:visible;}
.analytics-chart__grid{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke;}
.analytics-chart__y-label{fill:var(--muted);font-size:11px;font-family:"IBM Plex Mono",monospace;}
.analytics-chart__line{fill:none;stroke:var(--blue);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;}
.analytics-chart__dot{fill:var(--panel);stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke;transition:fill .18s ease,stroke .18s ease,r .18s ease;}
.analytics-chart__dot.is-active{fill:var(--blue);stroke:color-mix(in srgb,var(--blue) 82%, white);}
.analytics-chart__hit{position:absolute;top:0;bottom:0;border:0;background:transparent;padding:0;cursor:pointer;z-index:2;appearance:none;-webkit-appearance:none;}
.analytics-chart__hit.is-active{background:linear-gradient(180deg,rgba(70,137,255,.08),transparent 68%);}
.analytics-chart__tooltip{position:absolute;left:0;top:0;display:grid;gap:2px;padding:10px 12px;min-width:132px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);pointer-events:none;transition:opacity .18s ease,left .18s ease,top .18s ease;z-index:2;}
.analytics-chart__tooltip strong{font-family:"IBM Plex Mono",monospace;font-size:22px;line-height:1;}
.analytics-chart__tooltip span,.analytics-chart__tooltip small{color:var(--muted);font-size:12px;line-height:1.45;}
.analytics-chart__axis{display:flex;justify-content:space-between;gap:12px;font-size:12px;}
.analytics-insights__list{display:grid;gap:12px;}
.analytics-insights__list--stretch{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;align-content:start;}
.analytics-insight{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;align-items:start;padding:12px;border:1px solid var(--line);background:var(--panel-2);}
.analytics-insight--fill{height:100%;align-content:start;}
.analytics-insight__icon{width:40px;height:40px;display:grid;place-items:center;background:rgba(255,255,255,.03);color:var(--blue);}
.analytics-insight__icon svg{width:18px;height:18px;}
.analytics-insight b{display:block;font-size:16px;line-height:1.1;margin-bottom:4px;}
.analytics-insight p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.6;}
.analytics-ranked__list{display:grid;gap:12px;}
.analytics-ranked__row{display:grid;gap:6px;}
.analytics-ranked__head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;}
.analytics-ranked__head b{font-family:"IBM Plex Mono",monospace;font-size:18px;line-height:1;}
.analytics-ranked__bar{height:10px;background:var(--panel-2);overflow:hidden;border:1px solid var(--line);}
.analytics-ranked__bar span{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--blue) 80%, white),var(--blue));}
.analytics-ranked--green .analytics-ranked__bar span{background:linear-gradient(90deg,color-mix(in srgb,var(--green) 78%, white),var(--green));}
.analytics-ranked--accent .analytics-ranked__bar span{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 78%, white),var(--accent));}
.analytics-table-wrap{overflow:auto;}
.analytics-table td,.analytics-table th{white-space:nowrap;}
@media(max-width:1100px){.analytics-kpis,.analytics-kpis--four{grid-template-columns:repeat(2,minmax(0,1fr));}
.analytics-grid--primary,.analytics-grid--secondary,.analytics-grid--triad{grid-template-columns:1fr;}
}
@media(max-width:900px){.analytics-card-head,.analytics-table-head{grid-template-columns:1fr;display:grid;}
.analytics-hero__chips{justify-content:flex-start;}
}
@media(max-width:720px){.analytics-kpis,.analytics-kpis--four{grid-template-columns:1fr;}
.analytics-insights__list--stretch{grid-template-columns:1fr;}
.analytics-hero__title{font-size:24px;}
.analytics-chart-summary{text-align:left;min-width:0;}
.analytics-chart__stage{padding:10px 2px 0;}
.analytics-chart__tooltip{min-width:116px;padding:8px 10px;}
.analytics-kpi__value,.analytics-chart-summary__value{font-size:28px;}
}
/* ============================================================
   Responsive
   ============================================================ */
@media(max-width:1100px){.dir-grid,.choice-grid,.three{grid-template-columns:repeat(2,minmax(0,1fr));}
.metrics{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:900px){.split,.split-rev,.cols-2{grid-template-columns:minmax(0,1fr);}
/* Колонка сетки по умолчанию не уже своего содержимого, поэтому широкая
   карточка растягивала дорожку шире экрана, и вся страница ехала вбок.
   Разрешаем колонкам сжиматься — содержимое переносится само. */
.split>*,.split-rev>*,.cols-2>*{min-width:0;}
.grid{grid-template-columns:minmax(0,1fr);}
.grid>*{min-width:0;}
}
@media(max-width:720px){.discussion-card__head{flex-direction:column;align-items:flex-start;}
.discussion-card__meta{text-align:left;}
}
@media(max-width:1100px){:root{--side-w:0px;}
.shell{display:block;}
.side{position:fixed;top:0;left:0;width:100vw;max-width:100vw;height:100vh;height:100dvh;z-index:50;transform:translateX(-100%);transition:transform .22s ease;}
body.nav-open .side{transform:translateX(0);box-shadow:0 0 60px rgba(0,0,0,.4);}
body.nav-open .scrim{display:block;}
.side-close{display:grid;place-items:center;width:34px;height:34px;color:var(--side-muted);cursor:pointer;margin-left:auto;border:0;background:none;padding:0;}
.header .menu-btn{display:grid;}
.collapse-btn{display:none !important;}
.part-row,.pub-row{flex-wrap:wrap;}
.header{padding:0 16px;gap:10px;}
.crumb-bar .wrap{padding:12px 16px;}
.main{padding:22px 16px 64px;}
}
@media(max-width:720px){.header{height:60px;}
/* На телефоне поля ввода не мельче 16px: iOS Safari иначе приближает всю
   страницу при фокусе на поле. */
input[type=text],input[type=email],input[type=password],input[type=datetime-local],input[type=date],input[type=number],input[type=tel],input[type=url],input[type=search],input:not([type]),select,textarea,.sel,.filter-search input{font-size:16px;}
.search{display:none;}
.profile .pn,.profile .pr{display:none;}
.profile{padding:5px;border:none;flex:0 0 auto;}
/* «Создать задачу» с подписью занимает половину шапки, и аватар справа
   срезается. На телефоне оставляем один плюс — действие узнаваемо. */
.header .btn.primary .btn-label{display:none;}
.header .btn.primary{padding:0 12px;}
.header-r{min-width:0;}
.page-head{flex-direction:column;align-items:stretch;gap:16px;}
.page-head .actions,.page-head .btn{width:100%;}
.page-head .actions .btn{flex:1;}
h1{font-size:23px;}
.metrics,.dir-grid,.choice-grid,.two,.three{grid-template-columns:minmax(0,1fr);}
.metrics>*,.dir-grid>*,.choice-grid>*,.two>*,.three>*{min-width:0;}
.sec-head{flex-direction:column;align-items:flex-start;gap:8px;}
.task{grid-template-columns:32px minmax(0,1fr);gap:12px;}
.task .badge,.task .t-date{grid-column:2;justify-self:start;}
.filterbar{flex-direction:column;align-items:stretch;}
.filter-search{max-width:none;}
.sel{width:100%;}
.modal{max-width:calc(100vw - 20px);}
.modal-card{padding:18px;}
.tbl thead{display:none;}
.tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%;}
.tbl tr{border:1px solid var(--line);margin-bottom:10px;padding:6px 0;}
.tbl td{border:none;padding:8px 16px;}
/* Кнопки строки в столбик не помещались и растягивали карточку вбок. */
.row-actions{justify-content:flex-start;flex-wrap:wrap;}
.tbl td.mono,.tbl td .mono{white-space:normal;}
.job-row{grid-template-columns:32px minmax(0,1fr) !important;align-items:start;}
.job-row > :last-child{grid-column:2;justify-self:start;text-align:left !important;}
.email-preview{padding:12px;}
.email-bar{flex-wrap:wrap;}
.email-frame{min-height:420px;}
.crumbs .crumb-hide{display:none;}
.diff-row{grid-template-columns:1fr;}
.diff-side--empty{display:none;}
.post-mockup__media{width:100%;}
}
/* ---------- Task Page ---------- */
.task-shell-panel,.task-content-panel,#task-discussion,#task-jobs-panel,.post-mockup,.email-preview,.att-list,.chain-list{contain:layout paint;}
@supports (content-visibility:auto){#task-discussion,#task-jobs-panel,.post-mockup,.email-preview,.att-list,.chain-list,.related-row{content-visibility:auto;contain-intrinsic-size:1px 260px;}
}
.tox-tinymce { border-color: var(--line) !important; border-radius: 0 !important; }
.tox .tox-toolbar, .tox .tox-toolbar__overflow, .tox .tox-toolbar__primary { background: var(--panel-2) !important; }
.tox .tox-tbtn { border-radius: 0 !important; }
.tox .tox-edit-area__iframe { background: var(--panel) !important; }
.tox-statusbar { border-top: 1px solid var(--line) !important; }
/* Оформление панели редактора берётся из скина, который выбирается один раз
   при открытии. Если тему переключить, не закрывая редактор, скин остаётся
   прежним: тёмные значки на тёмной панели или белые на белой — кнопок не
   видно. Поэтому цвета панели задаём сами, по текущей теме. */
html[data-theme="light"] .tox .tox-tbtn,
html[data-theme="light"] .tox .tox-tbtn__select-label,
html[data-theme="light"] .tox .tox-mbtn,
html[data-theme="light"] .tox .tox-tbtn__select-chevron svg,
html[data-theme="light"] .tox .tox-split-button__chevron svg { color: #222f3e !important; fill: #222f3e !important; }
html[data-theme="light"] .tox .tox-tbtn svg { fill: #222f3e !important; }
html[data-theme="light"] .tox .tox-tbtn:hover,
html[data-theme="light"] .tox .tox-tbtn:focus { background: rgba(0,0,0,.06) !important; }
html[data-theme="light"] .tox .tox-tbtn--enabled,
html[data-theme="light"] .tox .tox-tbtn--enabled:hover { background: rgba(0,0,0,.10) !important; }
html[data-theme="light"] .tox .tox-tbtn--disabled svg,
html[data-theme="light"] .tox .tox-tbtn--disabled:hover svg { fill: rgba(34,47,62,.35) !important; }
html[data-theme="light"] .tox .tox-toolbar__group { border-color: rgba(0,0,0,.12) !important; }
html[data-theme="light"] .tox-statusbar,
html[data-theme="light"] .tox-statusbar a,
html[data-theme="light"] .tox-statusbar__text-container,
html[data-theme="light"] .tox-statusbar__wordcount { color: #4b5563 !important; }
html[data-theme="light"] .tox .tox-tbtn--select,
html[data-theme="light"] .tox .tox-tbtn--bespoke,
html[data-theme="light"] .tox .tox-tbtn--select .tox-tbtn__select-label { background: rgba(0,0,0,.04) !important; color: #222f3e !important; }
html[data-theme="light"] .tox .tox-tbtn--select:hover,
html[data-theme="light"] .tox .tox-tbtn--bespoke:hover { background: rgba(0,0,0,.10) !important; }
html[data-theme="light"] .tox .tox-menu,
html[data-theme="light"] .tox .tox-collection,
html[data-theme="light"] .tox .tox-collection__group,
html[data-theme="light"] .tox .tox-collection--list,
html[data-theme="light"] .tox .tox-collection--toolbar,
html[data-theme="light"] .tox .tox-dialog,
html[data-theme="light"] .tox .tox-dialog__header,
html[data-theme="light"] .tox .tox-dialog__body,
html[data-theme="light"] .tox .tox-dialog__footer { background: #ffffff !important; color: #222f3e !important; border-color: #e5e7eb !important; }
html[data-theme="light"] .tox .tox-collection__item { color: #222f3e !important; }
html[data-theme="light"] .tox .tox-collection__item--active,
html[data-theme="light"] .tox .tox-collection__item:hover { background: rgba(0,0,0,.06) !important; }
html[data-theme="light"] .tox .tox-collection__item-label,
html[data-theme="light"] .tox .tox-collection__item-icon svg { color: #222f3e !important; fill: #222f3e !important; }
html[data-theme="dark"] .tox .tox-tbtn,
html[data-theme="dark"] .tox .tox-tbtn__select-label,
html[data-theme="dark"] .tox .tox-mbtn,
html[data-theme="dark"] .tox .tox-tbtn__select-chevron svg,
html[data-theme="dark"] .tox .tox-split-button__chevron svg { color: #f3f4f6 !important; fill: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-tbtn svg { fill: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-tbtn:hover,
html[data-theme="dark"] .tox .tox-tbtn:focus { background: rgba(255,255,255,.08) !important; }
html[data-theme="dark"] .tox .tox-tbtn:hover svg,
html[data-theme="dark"] .tox .tox-tbtn:focus svg { fill: #ffffff !important; }
html[data-theme="dark"] .tox .tox-tbtn--enabled,
html[data-theme="dark"] .tox .tox-tbtn--enabled:hover { background: rgba(255,255,255,.14) !important; }
html[data-theme="dark"] .tox .tox-tbtn--enabled svg { fill: #ffffff !important; }
html[data-theme="dark"] .tox .tox-tbtn--disabled svg,
html[data-theme="dark"] .tox .tox-tbtn--disabled:hover svg { fill: rgba(243,244,246,.35) !important; }
html[data-theme="dark"] .tox .tox-toolbar__group { border-color: rgba(255,255,255,.12) !important; }
html[data-theme="dark"] .tox-statusbar,
html[data-theme="dark"] .tox-statusbar a,
html[data-theme="dark"] .tox-statusbar__text-container,
html[data-theme="dark"] .tox-statusbar__wordcount { color: #d1d5db !important; }
html[data-theme="dark"] .tox .tox-tbtn--select,
html[data-theme="dark"] .tox .tox-tbtn--bespoke,
html[data-theme="dark"] .tox .tox-tbtn--select .tox-tbtn__select-label { background: rgba(255,255,255,.06) !important; color: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-tbtn--select:hover,
html[data-theme="dark"] .tox .tox-tbtn--bespoke:hover { background: rgba(255,255,255,.14) !important; }
html[data-theme="dark"] .tox .tox-tbtn__select-label { color: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-menu,
html[data-theme="dark"] .tox .tox-collection,
html[data-theme="dark"] .tox .tox-collection__group,
html[data-theme="dark"] .tox .tox-collection--list,
html[data-theme="dark"] .tox .tox-collection--toolbar,
html[data-theme="dark"] .tox .tox-dialog,
html[data-theme="dark"] .tox .tox-dialog__header,
html[data-theme="dark"] .tox .tox-dialog__body,
html[data-theme="dark"] .tox .tox-dialog__footer { background: #1a2233 !important; color: #f3f4f6 !important; border-color: #2c3550 !important; }
html[data-theme="dark"] .tox .tox-collection__item { color: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-collection__item--active,
html[data-theme="dark"] .tox .tox-collection__item:hover { background: rgba(255,255,255,.10) !important; }
html[data-theme="dark"] .tox .tox-collection__item-label,
html[data-theme="dark"] .tox .tox-collection__item-label * { color: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-collection__item-icon svg { fill: #f3f4f6 !important; }
html[data-theme="dark"] .tox .tox-collection__item-accessory { color: #aab2c4 !important; }
html[data-theme="dark"] .tox .tox-dialog input,
html[data-theme="dark"] .tox .tox-dialog textarea,
html[data-theme="dark"] .tox .tox-dialog select { background: #0f1626 !important; color: #f3f4f6 !important; border-color: #2c3550 !important; }
html[data-theme="dark"] .tox .tox-label { color: #d1d5db !important; }
/* ===== Magazine: Almanac ("Альманах аддитивщика") ===== */
.tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;font-size:11.5px;font-weight:600;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);}
/* Issue cards grid on the section dashboard */
.issue-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;}
.issue-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);text-decoration:none;color:inherit;overflow:hidden;transition:border-color .15s,box-shadow .15s;}
.issue-card:hover{border-color:var(--line-2);box-shadow:0 6px 20px -10px rgba(0,0,0,.25);}
/* Обложка — целая полоса A4: показываем её полностью, не обрезая края. */
.issue-card__cover{aspect-ratio:1/1.414;background:var(--panel-2);overflow:hidden;}
.issue-card__cover img{width:100%;height:100%;object-fit:contain;display:block;}
.issue-card__cover-empty{width:100%;height:100%;display:grid;place-items:center;color:var(--line-2);}
.issue-card__cover-empty svg{width:48px;height:48px;}
.issue-card__body{padding:12px 14px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;}
.issue-card__body > *{max-width:100%;}
.issue-card__num{font-weight:800;font-size:18px;}
.issue-card__period{font-size:13px;color:var(--muted);}
.issue-card__theme{font-size:13px;line-height:1.35;}
.issue-card__foot{margin-top:6px;display:flex;flex-direction:column;gap:5px;font-size:12px;}
.issue-card__bar{display:block;height:6px;background:var(--panel-2);border:1px solid var(--line);overflow:hidden;}
.issue-card__bar span{display:block;height:100%;background:var(--green);}
/* Issue overview layout */
.issue-layout{display:grid;grid-template-columns:300px 1fr;gap:24px;align-items:start;}
.issue-aside{position:sticky;top:88px;}
.issue-cover{aspect-ratio:3/4;background:var(--panel-2);border:1px solid var(--line);overflow:hidden;}
.issue-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.issue-cover-empty{width:100%;height:100%;display:grid;place-content:center;justify-items:center;gap:8px;color:var(--line-2);text-align:center;padding:16px;}
.issue-cover-empty svg{width:56px;height:56px;}
.issue-cover-empty span{font-size:12px;color:var(--muted);}
.issue-readiness{margin-top:14px;}
.issue-readiness__head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:13px;}
.issue-meta{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px;}
.issue-meta dt{color:var(--muted);}
.issue-meta dd{margin:0;text-align:right;font-weight:600;}
/* Table of contents / article list */
.toc-list{display:flex;flex-direction:column;border:1px solid var(--line);background:var(--panel);}
.toc-item{border-bottom:1px solid var(--line);}
.toc-item:last-child{border-bottom:none;}
.toc-item__row{display:flex;align-items:center;gap:12px;padding:12px 14px;list-style:none;cursor:pointer;text-decoration:none;color:inherit;}
.toc-item__row::-webkit-details-marker{display:none;}
.toc-item__row:hover{background:var(--panel-2);}
.toc-item__order{flex:0 0 auto;width:26px;height:26px;display:grid;place-items:center;background:var(--panel-2);border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--muted);}
.toc-item__text{flex:1;min-width:0;}
.toc-item__title{display:block;font-weight:600;}
.toc-item__sub{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
.toc-item__sub:empty{display:none;}
.toc-item .badge{flex:0 0 auto;}
.toc-item .badge svg{width:14px;height:14px;}
.toc-item__chev{flex:0 0 auto;width:16px;height:16px;color:var(--muted);transition:transform .15s;}
.toc-item[open] .toc-item__chev{transform:rotate(180deg);}
.toc-item__panel{padding:4px 14px 16px;border-top:1px solid var(--line);background:var(--panel-2);}
.toc-item__panel-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;}
.toc-item__panel-left{display:flex;align-items:center;gap:8px;}
.issue-settings-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line);}
/* Файлы номера: готовый PDF и исходники рядом с настройками выпуска. */
.issue-files{margin-top:16px;padding-top:16px;border-top:1px solid var(--line);}
.issue-file{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);background:var(--panel-2);margin-bottom:6px;font-size:13px;}
.issue-file .ic{width:16px;height:16px;flex:0 0 auto;color:var(--muted);}
.issue-file form{margin:0;}
.issue-file-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;}
.issue-file-add input[type=file]{font-size:12.5px;max-width:100%;}
@media (max-width:900px){.issue-layout{grid-template-columns:1fr;}
.issue-aside{position:static;}
}
/* ===== Attachment thumbnails + image lightbox ===== */
.att-grid{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px;}
.att-thumb{padding:0;border:1px solid var(--line);background:var(--panel-2);width:120px;height:90px;overflow:hidden;cursor:zoom-in;display:block;transition:border-color .15s,transform .1s;}
.att-thumb:hover{border-color:var(--accent-line);transform:translateY(-1px);}
.att-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.mh-lightbox{max-width:min(94vw,1400px);background:transparent;border:none;overflow:visible;}
.mh-lightbox::backdrop{background:rgba(6,9,15,.82);}
.mh-lightbox__fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px;}
.mh-lightbox__fig img{max-width:94vw;max-height:84vh;object-fit:contain;background:var(--panel);box-shadow:var(--shadow-lg);}
.mh-lightbox__cap{font-size:13px;color:#e7ebf2;text-align:center;word-break:break-all;text-shadow:0 1px 3px rgba(0,0,0,.6);}
.mh-lightbox__close{position:fixed;top:18px;right:22px;width:44px;height:44px;display:grid;place-items:center;border:none;background:rgba(20,26,36,.7);color:#fff;cursor:pointer;}
.mh-lightbox__close:hover{background:rgba(40,48,62,.9);}
.mh-lightbox__close svg{width:20px;height:20px;}
.loose-attach{display:flex;gap:6px;align-items:center;flex:0 0 auto;}
.loose-attach .sel{height:32px;font-size:13px;min-width:150px;}
/* drag-and-drop сортировка статей в выпуске */
.toc-item__drag{flex:0 0 auto;display:grid;place-items:center;width:22px;height:22px;color:var(--line-2);cursor:grab;}
.toc-item__drag:hover{color:var(--muted);}
.toc-item__drag svg{width:16px;height:16px;pointer-events:none;}
.toc-item.dragging{opacity:.45;background:var(--panel-2);}
.toc-list.drop-active{outline:2px dashed var(--accent-line);outline-offset:-2px;}
/* верх правой колонки выпуска вровень с обложкой слева */
.issue-main > .section:first-child{margin-top:0;}
/* селекты в полях форм — на всю ширину, вровень с инпутами */
.field .sel{width:100%;flex:1 1 auto;}
/* поле с кнопкой добавления (серия + плюс) */
.field-row{display:flex;gap:6px;align-items:center;}
.field-add{flex:0 0 auto;height:38px;padding:0 11px;}
/* ===== Magazine layout: page, blocks ===== */
.mag-page{position:relative;width:794px;height:1123px;box-sizing:border-box;overflow:hidden;background:#fff;color:#111;font-family:'IBM Plex Sans',system-ui,sans-serif;flex:0 0 auto;}
.mag-page--blank{background:#f3f4f6;}
.mag-block{position:absolute;box-sizing:border-box;}
.mag-text__body{width:100%;height:100%;overflow:hidden;box-sizing:border-box;}
.mag-text{box-sizing:border-box;overflow:hidden;}
.mag-dropcap p:first-of-type::first-letter{float:left;font-size:3.2em;line-height:.82;font-weight:700;padding:.03em .12em 0 0;}
.mag-shape__body{width:100%;height:100%;box-sizing:border-box;}
.mag-image__caption{position:absolute;left:0;right:0;bottom:0;padding:6px 10px;font-size:12px;line-height:1.35;color:#fff;background:rgba(15,17,22,.6);font-family:'IBM Plex Sans',system-ui,sans-serif;}
.mag-text__body p{margin:0 0 .6em;}
.mag-text__body h1{margin:0 0 .3em;font-size:1.7em;line-height:1.1;}
.mag-text__body h2{margin:0 0 .35em;font-size:1.35em;line-height:1.15;}
.mag-text__body h3{margin:0 0 .35em;font-size:1.1em;}
.mag-text__body ul,.mag-text__body ol{margin:0 0 .6em;padding-left:1.3em;}
.mag-image__frame{position:relative;width:100%;height:100%;overflow:hidden;background:#e6e8ec;box-sizing:border-box;}
.mag-image__frame img{width:100%;height:100%;display:block;}
.mag-image__empty{display:flex;width:100%;height:100%;align-items:center;justify-content:center;color:#9aa1ad;font-size:13px;text-align:center;padding:10px;}
.mag-pageno{position:absolute;left:0;right:0;text-align:center;font-size:13px;color:#666;}
/* ===== Editor ===== */
.mag-editor{display:flex;flex-direction:column;gap:0;height:calc(100vh - 170px);min-height:560px;}
.mag-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);flex-wrap:wrap;}
.mag-toolbar form{display:inline;}
.mag-toolbar__sep{width:1px;height:24px;background:var(--line);}
.mag-toolbar__spacer{flex:1;}
.mag-save{font-size:12px;color:var(--muted);min-width:96px;text-align:right;}
.mag-menu{position:relative;}
.mag-menu>summary{list-style:none;cursor:pointer;}
.mag-menu>summary::-webkit-details-marker{display:none;}
.mag-menu__list{position:absolute;z-index:130;top:calc(100% + 4px);left:0;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg);min-width:180px;padding:4px;}
.mag-menu__list form{display:block;}
.mag-menu__list button{display:block;width:100%;text-align:left;padding:8px 10px;border:none;background:transparent;color:var(--text);font:inherit;cursor:pointer;}
.mag-menu__list button:hover{background:var(--panel-2);}
.mag-workspace{flex:1;min-height:0;display:grid;grid-template-columns:130px 1fr 320px;gap:0;border:1px solid var(--line);border-top:none;}
.mag-thumbs{overflow-y:auto;background:var(--panel);border-right:1px solid var(--line);padding:10px;display:flex;flex-direction:column;gap:8px;}
.mag-thumb{position:relative;border:1px solid var(--line);background:var(--panel-2);padding:10px 8px;cursor:pointer;aspect-ratio:794/1123;display:flex;flex-direction:column;justify-content:space-between;}
.mag-thumb.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.mag-thumb__no{font-weight:800;font-size:16px;}
.mag-thumb__kind{font-size:11px;color:var(--muted);}
.mag-thumb__ops{display:flex;gap:4px;}
.mag-thumb__ops button{flex:1;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;font-size:10px;line-height:1;padding:3px 0;}
.mag-thumb__ops button:hover{color:var(--text);}
.mag-canvas{overflow:auto;background:#3a3d44;display:flex;padding:24px;}
.mag-stage{position:relative;flex:0 0 auto;margin:auto;box-shadow:0 10px 40px rgba(0,0,0,.5);}
.mag-page--edit{transform-origin:top left;position:absolute;top:0;left:0;}
.mag-margins{position:absolute;border:1px dashed rgba(120,130,150,.5);pointer-events:none;}
.mag-block.selected{outline:2px solid var(--accent);outline-offset:0;}
.mag-block.mag-block--locked.selected{outline-style:dashed;}
.mag-block:hover{outline:1px solid var(--accent-line);}
.mag-h{position:absolute;width:12px;height:12px;background:#fff;border:2px solid var(--accent);box-sizing:border-box;z-index:20;}
.mag-block:not(.selected) .mag-h,.mag-block--locked .mag-h{display:none;}
.mag-h--nw{left:-6px;top:-6px;cursor:nwse-resize;}
.mag-h--n{left:calc(50% - 6px);top:-6px;cursor:ns-resize;}
.mag-h--ne{right:-6px;top:-6px;cursor:nesw-resize;}
.mag-h--e{right:-6px;top:calc(50% - 6px);cursor:ew-resize;}
.mag-h--se{right:-6px;bottom:-6px;cursor:nwse-resize;}
.mag-h--s{left:calc(50% - 6px);bottom:-6px;cursor:ns-resize;}
.mag-h--sw{left:-6px;bottom:-6px;cursor:nesw-resize;}
.mag-h--w{left:-6px;top:calc(50% - 6px);cursor:ew-resize;}
.mag-guide{position:absolute;background:#ff4fa3;z-index:900;pointer-events:none;}
.mag-guide--v{width:1px;top:0;bottom:0;}
.mag-guide--h{height:1px;left:0;right:0;}
.mag-zoom{display:inline-flex;gap:4px;align-items:center;}
.mag-zoom .btn[data-zoom-label]{min-width:58px;justify-content:center;}
.mag-textbar{position:absolute;z-index:60;display:flex;gap:2px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg);padding:4px;}
.mag-textbar button{border:1px solid transparent;background:transparent;color:var(--text);font-size:13px;line-height:1;min-width:28px;padding:6px 7px;cursor:pointer;}
.mag-textbar button:hover{background:var(--panel-2);border-color:var(--line);}
.mag-alignrow{display:flex;gap:4px;margin:0 0 10px;}
.mag-alignrow button{flex:1;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:13px;line-height:1;padding:7px 0;cursor:pointer;}
.mag-alignrow button:hover{background:var(--panel);border-color:var(--accent-line);}
.mag-panel{overflow-y:auto;background:var(--panel);border-left:1px solid var(--line);padding:14px;}
.mag-props__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.mag-panel .field{margin-bottom:10px;}
.mag-panel .field>span{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;}
/* ===== Reader (spread) ===== */
.mag-reader{--mag-scale:1;display:flex;flex-direction:column;align-items:center;gap:26px;background:#3a3d44;padding:26px;border:1px solid var(--line);}
.mag-spread{display:flex;gap:18px;justify-content:center;}
.mag-pagebox{flex:0 0 auto;width:calc(794px * var(--mag-scale));height:calc(1123px * var(--mag-scale));}
.mag-pagebox .mag-page{transform:scale(var(--mag-scale));transform-origin:top left;box-shadow:0 8px 30px rgba(0,0,0,.4);}
@media (max-width:1100px){.mag-workspace{grid-template-columns:96px 1fr 260px;}
}
/* обтекаемое фото внутри текстового блока + переносы */
.mag-text__html{display:block;}
.mag-wrap{overflow:hidden;}
.mag-wrap img{display:block;width:100%;height:auto;}
.mag-wrap--right{float:right;margin:2px 0 10px 16px;}
.mag-wrap--left{float:left;margin:2px 16px 10px 0;}
.mag-wrapbox{border-top:1px solid var(--line);padding-top:8px;margin-top:8px;}
/* мини-превью полос в боковой ленте */
.mag-thumbs{align-items:center;}
.mag-thumb{position:relative;border:1px solid var(--line);background:var(--panel-2);padding:0;aspect-ratio:auto;cursor:pointer;display:block;overflow:hidden;width:106px;}
.mag-thumb.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.mag-thumb__mini{overflow:hidden;background:#fff;border-bottom:1px solid var(--line);pointer-events:none;}
.mag-thumb__bar{display:flex;align-items:center;gap:6px;padding:5px 7px;}
.mag-thumb__no{font-weight:800;font-size:13px;}
.mag-thumb__kind{font-size:10px;color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mag-thumb__ops{display:flex;gap:3px;}
.mag-thumb__ops button{border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;font-size:9px;line-height:1;padding:2px 3px;}
.mag-thumb__ops button:hover{color:var(--text);}
.mag-thumb__mini .mag-block{outline:none !important;}
/* экшены в шапке страницы — в один ряд (в т.ч. формы-кнопки) */
.page-head__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.page-head__actions form{margin:0;}
/* ===== Журнал «Альманах»: адаптив под телефоны ===== */
@media (max-width:720px){/* Витрина выпусков: карточки в 2 колонки на узком экране */
.issue-cards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;}
.issue-card__num{font-size:16px;}
/* Строка оглавления: заголовок + бейдж в ряд, остальное переносим вниз */
.toc-item__row{flex-wrap:wrap;gap:8px 10px;padding:11px 12px;}
.toc-item__text{flex:1 1 100%;order:2;}
.toc-item__order{order:1;}
.toc-item .badge{order:1;margin-left:auto;}
.toc-item__chev{order:1;}
.toc-item__drag{order:1;}
/* Форма «в выпуск…» из статей вне выпусков — на всю ширину */
.loose-attach{flex:1 1 100%;order:3;}
.loose-attach .sel{min-width:0;flex:1;}
/* Низ карточек настроек/статьи — в столбик, кнопки на всю ширину */
.toc-item__panel-foot,
  .issue-settings-foot{flex-direction:column;align-items:stretch;gap:10px;}
.toc-item__panel-left{flex-wrap:wrap;}
.toc-item__panel-foot .btn,
  .issue-settings-foot > .btn{justify-content:center;}
/* Просмотр журнала: разворот складывается в один столбец (страница под страницей) */
.mag-reader{padding:14px;gap:16px;}
.mag-spread{flex-direction:column;align-items:center;gap:14px;}
/* Редактор вёрстки: три колонки превращаем в стопку,
     ленту полос делаем горизонтальной полосой сверху */
.mag-editor{height:auto;min-height:0;}
.mag-toolbar{position:sticky;top:0;z-index:5;}
.mag-workspace{display:flex;flex-direction:column;}
.mag-thumbs{flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:none;border-bottom:1px solid var(--line);max-height:none;}
.mag-canvas{padding:14px;min-height:60vh;}
.mag-panel{border-left:none;border-top:1px solid var(--line);max-height:none;}
}
/* ===== Inline corrections (правки прямо в тексте) ===== */
:root{
  --mh-inline-corr-bg:#fff3a8;
  --mh-inline-corr-line:#d63d3d;
  --mh-inline-comm-bg:#e6f1ff66;
  --mh-inline-comm-line:#2b7bd6;
  --mh-inline-resolved-bg:#e6f5e0;
  --mh-stale-bg:#fff0d6;
  --mh-stale-text:#a05c00;
  --mh-anchor-btn-bg:#fff3a8;
  --mh-anchor-btn-bd:#d6b94a;
  --mh-anchor-btn-tx:#7a5a00;
  --mh-anchor-btn-bg-hover:#ffe890;
  --mh-toggle-active-bg:#ffe48a;
  --mh-toggle-active-bd:#ffb454;
  --mh-popup-bg:#ffffff;
  --mh-popup-shadow:0 12px 32px rgba(0,0,0,.18);
  --mh-quote-text:#555;
}
html[data-theme="dark"]{
  --mh-inline-corr-bg:#5a3a0099;       /* приглушённый янтарь */
  --mh-inline-corr-line:#ff7a7a;
  --mh-inline-comm-bg:#1d3a5e80;
  --mh-inline-comm-line:#7ab6ff;
  --mh-inline-resolved-bg:#2c4a2c80;
  --mh-stale-bg:#4a3a1a;
  --mh-stale-text:#ffd58a;
  --mh-anchor-btn-bg:#5a3a00;
  --mh-anchor-btn-bd:#9a7a2a;
  --mh-anchor-btn-tx:#ffd58a;
  --mh-anchor-btn-bg-hover:#704a10;
  --mh-toggle-active-bg:#5a3a00;
  --mh-toggle-active-bd:#9a7a2a;
  --mh-popup-bg:var(--panel);
  --mh-popup-shadow:0 12px 32px rgba(0,0,0,.55);
  --mh-quote-text:var(--muted);
}
.mh-inline{position:relative;cursor:pointer;color:inherit;}
.mh-inline--correction{background:var(--mh-inline-corr-bg);text-decoration:underline wavy var(--mh-inline-corr-line);text-decoration-skip-ink:none;}
.mh-inline--comment{background:var(--mh-inline-comm-bg);text-decoration:underline wavy var(--mh-inline-comm-line);text-decoration-skip-ink:none;}
.mh-inline--stale{text-decoration-style:dashed;opacity:.75;}
.mh-inline--resolved{background:var(--mh-inline-resolved-bg);text-decoration:line-through var(--muted);}
.mh-inline:hover{filter:brightness(0.97);}
html[data-theme="dark"] .mh-inline:hover{filter:brightness(1.15);}
.mh-inline__badge{position:absolute;top:-7px;right:-7px;background:var(--mh-inline-corr-line);color:#fff;font-size:10px;font-weight:700;line-height:1;padding:2px 4px;}
.mh-inline--comment > .mh-inline__badge{background:var(--mh-inline-comm-line);}
.mh-target-active{outline:2px dashed var(--mh-toggle-active-bd);outline-offset:4px;cursor:crosshair;}
body.mh-selecting ::selection{background:var(--mh-toggle-active-bg);color:var(--text);}
/* Тултип с правкой и тредом */
.mh-tip{position:absolute;z-index:9999;background:var(--mh-popup-bg);color:var(--text);border:1px solid var(--line);box-shadow:var(--mh-popup-shadow);max-width:380px;min-width:280px;padding:10px;display:grid;gap:10px;}
.mh-tip__card{display:grid;gap:6px;border-bottom:1px solid var(--line);padding-bottom:10px;}
.mh-tip__card:last-child{border-bottom:none;padding-bottom:0;}
.mh-tip__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--text);}
.mh-tip__head small{color:var(--muted);}
.mh-tip__stale{background:var(--mh-stale-bg);color:var(--mh-stale-text);padding:1px 6px;font-size:11px;}
.mh-tip__text{font-size:13px;white-space:pre-wrap;word-break:break-word;color:var(--text);}
.mh-tip__replies{display:grid;gap:8px;border-left:2px solid var(--line);padding-left:8px;}
.mh-tip__reply{display:grid;gap:2px;font-size:12px;color:var(--text);}
.mh-tip__meta{display:flex;gap:6px;align-items:baseline;}
.mh-tip__meta small{color:var(--muted);}
.mh-tip__rmreply{background:none;border:none;color:var(--err,#c0392b);font-size:11px;cursor:pointer;padding:0;justify-self:start;}
.mh-tip__replyform{display:grid;gap:6px;}
.mh-tip__replyform textarea{width:100%;min-height:50px;font:inherit;font-size:12px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);padding:6px;resize:vertical;}
.mh-tip__replyform textarea::placeholder{color:var(--muted);}
.mh-tip__foot{display:flex;justify-content:flex-end;gap:6px;}
/* Попап режима выделения */
.mh-sel-popup{position:absolute;z-index:9999;background:var(--mh-popup-bg);color:var(--text);border:1px solid var(--line);box-shadow:var(--mh-popup-shadow);width:340px;padding:12px;display:grid;gap:10px;}
.mh-sel-popup__quote{font-size:12px;color:var(--mh-quote-text);font-style:italic;border-left:3px solid var(--mh-toggle-active-bd);padding-left:8px;}
.mh-sel-popup textarea{width:100%;min-height:64px;font:inherit;font-size:13px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);padding:6px;resize:vertical;}
.mh-sel-popup textarea::placeholder{color:var(--muted);}
.mh-sel-popup__row{display:flex;gap:14px;font-size:13px;color:var(--text);}
.mh-sel-popup__actions{display:flex;justify-content:flex-end;gap:8px;}
/* Кнопка переключения режима */
.btn[data-inline-mode-toggle].is-active{background:var(--mh-toggle-active-bg);border-color:var(--mh-toggle-active-bd);color:var(--text);}
/* Метка карточки правки/комментария — есть привязка к месту в тексте */
.discussion-card.is-inline{position:relative;}
.discussion-card__anchor-btn{position:absolute;top:8px;right:8px;background:var(--mh-anchor-btn-bg);border:1px solid var(--mh-anchor-btn-bd);color:var(--mh-anchor-btn-tx);padding:2px 7px;font-size:11px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;}
.discussion-card__anchor-btn:hover{background:var(--mh-anchor-btn-bg-hover);}
/* ===== Лента «Что нового» — сгруппированный вид ===== */
.changelog-day{display:grid;gap:10px;}
.changelog-item{border-top:1px solid var(--line);padding-top:10px;}
.changelog-item:first-child{border-top:none;padding-top:0;}
.changelog-item.is-new{position:relative;}
.changelog-item.is-new::before{content:"";position:absolute;left:-14px;top:8px;width:6px;height:6px;background:var(--accent);}
.changelog-item__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.changelog-item__ver{font-size:11px;}
.changelog-item__title{font-size:14px;}
.changelog-item__body{margin:6px 0 0;white-space:pre-line;color:var(--muted);font-size:13px;}
/* Мигание подсветки при переходе из боковой панели / после добавления */
.mh-inline--flash{animation:mh-flash 1.5s ease-out 1;}
.mh-inline--flash-long{animation:mh-flash-long 5s ease-out 1;}
@keyframes mh-flash{0%{box-shadow:0 0 0 4px var(--mh-toggle-active-bd);}100%{box-shadow:0 0 0 0 transparent;}}
@keyframes mh-flash-long{
  0%{box-shadow:0 0 0 6px var(--mh-toggle-active-bd);}
  20%{box-shadow:0 0 0 2px var(--mh-toggle-active-bd);}
  40%{box-shadow:0 0 0 6px var(--mh-toggle-active-bd);}
  60%{box-shadow:0 0 0 2px var(--mh-toggle-active-bd);}
  80%{box-shadow:0 0 0 6px var(--mh-toggle-active-bd);}
  100%{box-shadow:0 0 0 0 transparent;}
}
/* details summary в discussion: убрать маркер и центрировать */
.discussion-edit > summary{list-style:none;}
.discussion-edit > summary::-webkit-details-marker{display:none;}
.discussion-edit > summary::marker{display:none;content:'';}
/* Кликабельная карточка inline-правки в списке */
.discussion-card.is-inline{cursor:pointer;}
.discussion-card.is-inline:hover{background:var(--panel-2);}
/* Подсветка слов с орфографическими ошибками (наш проверщик) */
.mh-misspell{
    text-decoration: underline wavy #e53935;
    text-decoration-skip-ink: none;
    -webkit-text-decoration: underline wavy #e53935;
    text-decoration-thickness: 2px;
    text-underline-offset: 2px;
    cursor: context-menu;
}
/* Плавающая точечная навигация по H1/H2 (раздел «Справки»). */
.mh-dotnav{
    position: fixed;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    z-index: 90;
    padding: 10px 6px;
    background: transparent;
    pointer-events: auto;
}
.mh-dotnav__dot{
    display: block;
    background: var(--muted, #9098a5);
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
    opacity: .85;
}
/* H1 — крупная точка, H2 — ровно вдвое меньше по диаметру. */
.mh-dotnav__dot--lvl1{ width: 12px; height: 12px; }
.mh-dotnav__dot--lvl2{ width: 6px;  height: 6px;  }
.mh-dotnav__dot:hover,
.mh-dotnav__dot:focus-visible{
    background: var(--accent, #e60000);
    outline: none;
    opacity: 1;
    transform: scale(1.35);
    box-shadow: 0 0 0 3px rgba(230,0,0,.15);
}
/* Активная (текущий раздел при скролле) — красная. */
.mh-dotnav__dot.is-active{
    background: var(--accent, #e60000);
    opacity: 1;
    transform: scale(1.2);
}
.mh-dotnav__tip{
    position: absolute;
    right: 26px;
    transform: translateY(-50%);
    padding: 6px 10px;
    background: var(--panel-2, #1f2634);
    color: var(--text);
    border: 1px solid var(--line);
    font-size: 13px;
    max-width: 320px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
    opacity: 0;
    transition: opacity .12s ease;
    box-shadow: 0 8px 24px rgba(0,0,0,.18);
}
.mh-dotnav__tip.is-visible{ opacity: 1; }
[data-theme="light"] .mh-dotnav__tip,
:root:not([data-theme="dark"]) .mh-dotnav__tip{
    background: #fff;
    color: #1f2937;
    border-color: #e5e7eb;
}
@media (max-width:900px){.mh-dotnav{ display: none; }
/* на мобильных — не нужно, скроллом добираешься быстрее */
}
/* ---- Календарь событий ---- */
.events-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;}
.events-week__day{background:var(--panel);border:1px solid var(--line);display:flex;flex-direction:column;min-height:170px;}
.events-week__day.is-today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.events-week__head{display:flex;justify-content:space-between;align-items:baseline;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line);}
.events-week__dow{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.events-week__num{font-size:12px;font-weight:700;flex:0 0 auto;}
.events-week__body{display:flex;flex-direction:column;gap:6px;padding:8px;flex:1;}
.event-chip{display:block;text-align:left;border:1px solid var(--line);border-left:3px solid var(--event-chip-color,#8b8fa3);background:color-mix(in srgb, var(--event-chip-color,#8b8fa3) 8%, transparent);padding:6px 8px;cursor:pointer;font:inherit;color:inherit;}
.event-chip:hover{background:color-mix(in srgb, var(--event-chip-color,#8b8fa3) 16%, transparent);}
.event-chip__title{display:block;font-size:12px;font-weight:600;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.event-chip__meta{display:block;font-size:11px;color:var(--muted);margin-top:2px;}
.event-chip--sm{padding:3px 6px;}
.event-chip--sm .event-chip__title{font-size:11px;-webkit-line-clamp:1;}
.events-week__add{opacity:0;border:1px dashed var(--line);background:transparent;color:var(--muted);font-size:12px;padding:5px;cursor:pointer;transition:opacity .12s ease;margin-top:auto;}
.events-week__day:hover .events-week__add,.events-week__add:focus-visible{opacity:1;}
.event-modal__body{margin-top:6px;}
/* Поля формы события: div.field как label.field, без вертикального растягивания в двухколоночных рядах */
.event-modal__body .field{display:grid;gap:7px;align-content:start;font-weight:600;font-size:13px;}
.event-modal__body .field small{font-weight:500;}
.err-text{color:var(--accent);font-size:12px;}
@media (max-width:1100px){.events-week{grid-template-columns:repeat(2,minmax(0,1fr));}
.events-week__day{min-height:auto;}
.events-week__add{opacity:1;}
}
@media (max-width:560px){.events-week{grid-template-columns:1fr;}
}
/* ---- База контактов ---- */
.contacts-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 10px;}
.contacts-cols{position:relative;}
.contacts-cols__menu{display:none;position:absolute;right:0;top:calc(100% + 6px);z-index:40;background:var(--panel);border:1px solid var(--line);box-shadow:0 12px 32px rgba(0,0,0,.14);padding:10px;min-width:220px;max-height:340px;overflow-y:auto;}
.contacts-cols.open .contacts-cols__menu{display:block;}
.contacts-cols__item{display:flex;align-items:center;gap:8px;font-size:13px;padding:5px 6px;cursor:pointer;}
.contacts-cols__item:hover{background:var(--panel-2);}
.contacts-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--muted) transparent;}
.contacts-scroll::-webkit-scrollbar{height:10px;}
.contacts-scroll::-webkit-scrollbar-track{background:transparent;}
.contacts-scroll::-webkit-scrollbar-thumb{background:var(--line);border:2px solid var(--panel);}
.contacts-scroll::-webkit-scrollbar-thumb:hover{background:var(--muted);}
.contacts-tbl th,.contacts-tbl td{white-space:nowrap;}
.contacts-tbl td[data-col="notes"],.contacts-tbl td[data-col="address"]{white-space:normal;min-width:200px;}
.contacts-tbl .col-hidden{display:none;}
.contacts-row{cursor:pointer;}
.contacts-row:hover td{background:var(--panel-2);}
.contacts-chips{display:inline-flex;gap:4px;flex-wrap:nowrap;}
.contacts-th{display:inline-flex;align-items:center;gap:6px;}
.contacts-th__del{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:2px;line-height:0;}
.contacts-th__del:hover{color:var(--accent);background:var(--panel-2);}
.contacts-th__del svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2;}
.contacts-th--add{width:44px;text-align:center;}
.contacts-filters__row{align-items:center;}
.contacts-filters__search{flex:1 1 240px;min-width:200px;}
.contacts-filters__select{width:auto;flex:0 1 auto;}
@media (max-width:720px){.contacts-filters__search{flex-basis:100%;}
}
/* ---------- Глобальные тултипы (data-tip) ---------- */
.mh-tip{
  position:fixed;z-index:12000;max-width:320px;padding:7px 11px;
  background:var(--side);color:var(--side-text);border:1px solid var(--side-line);font-size:12.5px;line-height:1.45;box-shadow:var(--shadow-lg);
  pointer-events:none;opacity:0;transform:translateY(3px);
  transition:opacity .14s ease,transform .14s ease;
}
.mh-tip.below{transform:translateY(-3px);}
.mh-tip.show{opacity:1;transform:translateY(0);}
/* ---------- Номер задачи в списках и шапке ---------- */
.task-id-chip{
  display:inline-block;vertical-align:baseline;margin-right:7px;padding:1px 7px;
  font-family:"IBM Plex Mono",monospace;font-size:11.5px;font-weight:600;
  color:var(--muted);background:var(--panel-2);border:1px solid var(--line);white-space:nowrap;
}
.task-id-chip.lg{font-size:14px;padding:2px 9px;vertical-align:middle;}
/* Кнопка «Перенести текст в результат» на плитке Word-файла */
.att-tile__extract{margin-top:8px;display:inline-flex;align-items:center;gap:6px;}
.att-tile__extract svg{width:14px;height:14px;}
/* ---------- Панель «Открытые правки по задаче» ---------- */
.corr-panel{border-left:3px solid var(--accent);}
.corr-panel__summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;flex-wrap:wrap;}
.corr-panel__summary::-webkit-details-marker{display:none;}
.corr-panel__summary .chev{margin-left:auto;font-size:18px;color:var(--muted);transition:transform .15s ease;}
.corr-panel__details[open] .corr-panel__summary .chev{transform:rotate(90deg);}
.corr-panel__count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;background:var(--accent);color:#fff;font-weight:700;font-size:12.5px;}
.corr-panel__list{display:grid;gap:10px;margin-top:12px;}
.corr-panel__item{padding:10px 12px;border:1px solid var(--line);background:var(--panel-2);}
.corr-panel__item[role="button"]{cursor:pointer;}
.corr-panel__item[role="button"]:hover{border-color:var(--accent-line);}
.corr-panel__meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;}
.corr-panel__find{margin-left:auto;}
.corr-panel__text{margin-top:6px;font-size:13.5px;line-height:1.5;}
.corr-panel__quote{margin-top:6px;font-size:12.5px;color:var(--muted);font-style:italic;border-left:2px solid var(--line-2);padding-left:8px;}
/* ---------- Блок «Моя работа» на главной ---------- */
.mywork-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;}
.mywork-card__head{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.mywork-card__head .metric-ic{width:30px;height:30px;}
.mywork-card__count{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;background:var(--panel-2);border:1px solid var(--line);font-weight:700;font-size:12px;}
.mywork-card__list{display:grid;gap:6px;}
.mywork-item{display:block;padding:7px 9px;text-decoration:none;color:inherit;border:1px solid transparent;}
.mywork-item:hover{background:var(--panel-2);border-color:var(--line);}
.mywork-item__title{font-weight:600;font-size:13.5px;display:inline;}
.mywork-item small{display:block;margin-top:2px;}
/* ---------- Предпросмотр портала под ролью ---------- */
/* Отступ снизу не нужен: расстояние до «Помощи» задаёт gap у .side-foot */
.role-preview{display:grid;gap:5px;padding:8px 9px;margin:0;border:1px dashed var(--side-line);}
.role-preview__label{display:flex;align-items:center;gap:8px;color:var(--side-muted);font-size:12px;font-weight:600;}
.role-preview__label svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;}
.role-preview__select{width:100%;padding:6px 8px;font:inherit;font-size:12.5px;
  background:var(--side-2);color:var(--side-text);border:1px solid var(--side-line);cursor:pointer;}
.hub-shell.side-collapsed .role-preview{display:none;}
.role-preview-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;
  background:var(--amber-soft);border-bottom:1px solid var(--line);font-size:13px;}
.role-preview-banner svg{width:16px;height:16px;stroke:var(--amber);fill:none;stroke-width:2;flex:none;}
.role-preview-banner span{flex:1 1 300px;min-width:0;}
.role-preview-banner form{margin-left:auto;}
/* ---------- Главная: компактные карточки, чипы-фильтры, скелетоны ---------- */
.mywork-card__more summary{cursor:pointer;list-style:none;font-size:12.5px;color:var(--muted);padding:4px 0;}
.mywork-card__more summary::-webkit-details-marker{display:none;}
.mywork-card__more summary:hover{color:var(--text);}
.home-status-chips .chip{cursor:pointer;}
.dir-list--compact .dir-row{padding-top:8px;padding-bottom:8px;}
/* ---------- Виджеты правой колонки главной ---------- */
.pulse-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.pulse-cell{display:flex;flex-direction:column;gap:2px;padding:12px;border:1px solid var(--line);background:var(--panel-2);text-decoration:none;transition:border-color .15s,background .15s,transform .1s;}
.pulse-cell:hover{border-color:var(--blue);background:var(--panel);transform:translateY(-1px);}
.pulse-cell b{font-size:24px;line-height:1;color:var(--text);font-variant-numeric:tabular-nums;}
.pulse-cell small{font-size:11.5px;color:var(--muted);}
.pulse-cell.gr b{color:var(--green);}
.pulse-cell.bl b{color:var(--blue);}
.pulse-cell.am b{color:var(--amber);}
.event-list{display:flex;flex-direction:column;gap:2px;}
.event-row{display:flex;align-items:center;gap:11px;padding:8px 6px;text-decoration:none;transition:background .15s;}
.event-row:hover{background:var(--panel-2);}
.event-date{flex:0 0 auto;width:42px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px 0;background:color-mix(in srgb, var(--ev) 12%, transparent);border:1px solid color-mix(in srgb, var(--ev) 30%, transparent);line-height:1;}
.event-date b{font-size:16px;color:var(--ev);font-variant-numeric:tabular-nums;}
.event-date small{font-size:10px;text-transform:uppercase;color:var(--ev);opacity:.85;margin-top:2px;}
.event-main{min-width:0;display:flex;flex-direction:column;gap:2px;}
.event-title{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.event-main small{font-size:11.5px;}
.news-list{display:flex;flex-direction:column;}
.news-row{display:flex;flex-direction:column;gap:4px;padding:9px 0;text-decoration:none;border-top:1px solid var(--line);}
.news-row:first-child{border-top:none;padding-top:0;}
.news-row:hover .news-title{color:var(--blue);}
.news-head{display:flex;align-items:center;gap:8px;}
.news-title{font-size:13px;font-weight:600;color:var(--text);line-height:1.35;transition:color .15s;}
.skeleton-row{height:38px;background:linear-gradient(90deg,var(--panel-2) 25%,var(--line) 50%,var(--panel-2) 75%);background-size:200% 100%;animation:mh-skeleton 1.2s ease-in-out infinite;margin-bottom:8px;}
@keyframes mh-skeleton{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
@media (prefers-reduced-motion:reduce){.skeleton-row{animation:none;}
}
@media (max-width:560px){.home-quick-actions{width:100%;}
.home-quick-actions .btn{flex:1 1 auto;justify-content:center;}
}
/* ---------- Кнопка «Наверх» ---------- */
.mh-to-top{position:fixed;left:18px;bottom:18px;z-index:60;width:42px;height:42px;
  background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);
  opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease,visibility .18s;}
.mh-to-top.show{opacity:1;visibility:visible;transform:translateY(0);}
.mh-to-top:hover{color:var(--text);border-color:var(--line-2);}
.mh-to-top svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;}
@media (max-width:560px){.mh-to-top{left:12px;bottom:12px;}
}
/* ---------- Плотные списки задач ---------- */
.tasks-list .task{padding-top:10px;padding-bottom:10px;}
.tasks-list .t-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
/* ---------- Липкие вкладки на странице задачи ---------- */
.task-content-panel [data-tab-host] > .tabs{position:sticky;top:0;z-index:20;background:var(--panel);border-bottom:1px solid var(--line);}
/* ---------- Профиль: спарклайн активности и превью аватара ---------- */
.profile-spark{display:flex;align-items:flex-end;gap:2px;height:44px;margin:10px 0 6px;}
.profile-spark__bar{flex:1 1 auto;min-width:2px;background:var(--blue);opacity:.75;}
.avatar-edit{display:flex;align-items:center;gap:14px;margin-top:8px;}
.avatar-edit__preview{width:64px;height:64px;object-fit:cover;border:1px solid var(--line);background:var(--panel-2);flex:none;}
.avatar-edit__preview.is-empty{visibility:hidden;}
/* ---------- Выдвижная панель правок ---------- */
.corr-drawer-toggle{position:fixed;right:0;top:45%;z-index:70;display:flex;align-items:center;gap:7px;
  padding:10px 12px 10px 10px;border:1px solid var(--line);border-right:0;
  background:var(--panel);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;
  box-shadow:var(--shadow-lg);transition:transform .2s ease;}
.corr-drawer-toggle svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;}
.corr-drawer-toggle.has-items{border-color:var(--accent-line);color:var(--accent);}
.corr-drawer-toggle.is-open{opacity:0;visibility:hidden;pointer-events:none;}
.corr-drawer-toggle__count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;
  padding:0 6px;background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;}
.corr-drawer{position:fixed;right:0;top:0;bottom:0;z-index:69;width:min(380px,92vw);
  background:var(--panel);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);
  transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column;}
.corr-drawer.open{transform:translateX(0);}
.corr-drawer__head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 16px;border-bottom:1px solid var(--line);flex:none;}
.corr-drawer__body{flex:1 1 auto;overflow-y:auto;padding:14px 16px;}
.corr-drawer__hint{font-size:12.5px;margin:0 0 12px;}
.corr-panel__item-actions{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap;}
.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  margin-left:6px;padding:0 5px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;}
/* Открытая панель правок: на широких экранах контент сдвигается, а не перекрывается */
.layout{transition:padding-right .22s ease;}
@media (min-width:1101px){body.corr-drawer-open .layout{padding-right:380px;}
}
/* Свёрнутые по умолчанию «Закрытые правки» */
.discussion-archive-toggle__summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  padding:10px 12px;border:1px solid var(--line);background:var(--panel-2);font-size:14px;}
.discussion-archive-toggle__summary::-webkit-details-marker{display:none;}
.discussion-archive-toggle__summary:hover{border-color:var(--line-2);}
.discussion-archive-toggle__summary .chev{margin-left:auto;font-size:17px;color:var(--muted);transition:transform .15s ease;}
.discussion-archive-toggle[open] .discussion-archive-toggle__summary .chev{transform:rotate(90deg);}

/* ============================================================
   Доступность с клавиатуры
   ============================================================ */
/* Раньше видимая рамка фокуса была только у полей ввода, да и та подменялась
   тенью. У кнопок, ссылок и пунктов меню не было ничего: человек, идущий по
   странице табом, не понимал, где находится. Рисуем одну общую рамку —
   :focus-visible, поэтому при обычном клике мышью она не появляется. */
:where(a, button, [role="button"], summary, [tabindex]:not([tabindex="-1"])):focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
}
/* На тёмном сайдбаре красная рамка теряется — там берём светлую. */
.side :where(a, button, summary):focus-visible{
  outline-color:#fff;
  outline-offset:-2px;
}
input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:1px;
}

/* На телефоне ярлык правок висел посреди экрана и накрывал метки задачи —
   номер и статус читались наполовину. Убираем его вниз, к остальным
   плавающим кнопкам, и сжимаем до значка со счётчиком. */
@media (max-width:720px){
  /* 12px — отступ плавающих кнопок на телефоне, дальше две кнопки по 48px. */
  .corr-drawer-toggle{top:auto;bottom:140px;border-radius:8px 0 0 8px!important;padding:8px 10px;}
  .corr-drawer-toggle__label{display:none;}
}

/* ============================================================
   Таблицы на узких экранах
   ============================================================ */
/* У таблиц в панелях не было горизонтальной прокрутки, а body с
   overflow-x:hidden просто обрезал правые колонки — на телефоне до них было
   не добраться никак. :has() ловит любую панель с таблицей, включая будущие. */
.panel:has(> .tbl){overflow-x:auto;}
.panel:has(> .tbl) > .tbl{min-width:640px;}
/* На телефоне таблица уже разложена карточками — тянуть её вбок незачем. */
@media (max-width:720px){
  .panel:has(> .tbl){overflow-x:visible;}
  .panel:has(> .tbl) > .tbl{min-width:0;}
}

/* ============================================================
   Доска задач на главной
   ============================================================ */
/* Сводка, а не рабочая доска: карточки не перетаскиваются, статус меняется
   в самой задаче. Высота колонок ограничена — иначе в месяц со полусотней
   задач главная уезжает далеко вниз и остальные блоки не найти. */
.board-period{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:0;}
.board-period .field{margin:0;gap:2px;}
.board-period .field span{font-size:11px;color:var(--muted);}
.board-period input{height:32px;padding:0 8px;font-size:13px;}
.task-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px 18px 18px;}
.board-col{display:flex;flex-direction:column;min-width:0;background:var(--panel-2);border:1px solid var(--line);border-radius:10px!important;}
.board-col__head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);}
.board-col__title{font-size:13px;font-weight:600;}
.board-col__count{margin-left:auto;min-width:22px;height:22px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;border-radius:11px!important;background:var(--panel);color:var(--muted);}
/* Цветная полоска сверху — колонку видно боковым зрением, без чтения заголовка. */
.board-col--ok{border-top:2px solid var(--green);}
.board-col--rev{border-top:2px solid var(--amber);}
.board-col--wait{border-top:2px solid var(--blue);}
.board-col--ok .board-col__count{background:var(--green-soft);color:var(--green);}
.board-col--rev .board-col__count{background:var(--amber-soft);color:var(--amber);}
.board-col--wait .board-col__count{background:var(--blue-soft);color:var(--blue);}
.board-col__body{display:flex;flex-direction:column;gap:8px;padding:10px;max-height:360px;overflow-y:auto;}
.board-col__empty{margin:6px 2px;font-size:13px;color:var(--muted);}
.board-card{display:flex;flex-direction:column;gap:4px;padding:10px;text-decoration:none;color:inherit;
  background:var(--panel);border:1px solid var(--line);border-radius:8px!important;transition:border-color .15s,transform .15s;}
.board-card:hover{border-color:var(--accent);transform:translateY(-1px);}
.board-card__title{font-size:13px;font-weight:600;line-height:1.35;overflow-wrap:anywhere;}
.board-card__meta{display:flex;flex-wrap:wrap;gap:4px;}
.board-card__meta .chip{font-size:11px;padding:1px 7px;}
@media (max-width:1100px){.task-board{grid-template-columns:repeat(2,minmax(0,1fr));}}
/* На телефоне колонки идут друг под другом. Прокрутка внутри колонки тут
   только мешает — палец листает страницу, а карточки обрезаются посередине.
   Показываем колонку целиком. */
@media (max-width:720px){.task-board{grid-template-columns:minmax(0,1fr);padding:12px;}
  .board-col__body{max-height:none;overflow-y:visible;}}

/* ============================================================
   Снято с поиска
   ============================================================ */
/* Поиск с вышедшим сроком выглядел как обычная карточка, и «больше не
   обходим сайты» терялось среди прочего текста: человек продолжал ждать
   находок. Отбиваем красным — состояние должно читаться с одного взгляда. */
.badge.stop{background:var(--accent-soft);border-color:transparent;color:var(--accent);}
.panel--stop{border-color:color-mix(in srgb,var(--accent) 42%, var(--line));
  background:color-mix(in srgb,var(--accent-soft) 55%, var(--panel));
  border-left:3px solid var(--accent);}
.panel--stop b{color:var(--accent);}
.watch--stop{opacity:.85;}
.watch--stop h3 a{color:var(--muted);}

/* ============================================================
   Печать
   ============================================================ */
/* Печать любой страницы выводила меню, шапку, кнопки и всплывающие подсказки.
   Оставляем только содержимое. */
@media print{
  :root{--bg:#fff;--panel:#fff;--panel-2:#fff;--text:#000;--muted:#444;--soft:#222;--line:#bbb;--line-2:#999;}
  html,body{background:#fff;color:#000;}
  .side,.header,.crumb-bar,.toast-stack,.mh-to-top,.fab,.fab-menu,
  .role-preview,.role-preview-banner,.side-foot,.mh-tip,.tox-toolbar-overlord,
  [data-menu-open],[data-side-collapse],.row-actions,.actions,.pagination{display:none !important;}
  .shell{display:block;}
  .layout,.main,.wrap{margin:0;padding:0;max-width:none;width:auto;}
  .panel,.card,.metric{border:1px solid #ccc;box-shadow:none;break-inside:avoid;}
  .panel:has(> .tbl){overflow:visible;}
  .panel:has(> .tbl) > .tbl{min-width:0;}
  a[href]{text-decoration:underline;}
  /* Адрес ссылки рядом с текстом — на бумаге иначе не перейти. */
  .main a[href^="http"]::after{content:" (" attr(href) ")";font-size:10px;color:#555;word-break:break-all;}
  h1,h2,h3{break-after:avoid;}
  table{break-inside:auto;}
  tr{break-inside:avoid;}
  thead{display:table-header-group;}
}

/* ============================================================
   Помощь по платформе
   ============================================================ */
/* Поиск — крупный: это главный вход в раздел, а не второстепенный фильтр. */
.help-search{margin-bottom:18px;}
.help-search__field{max-width:none;}
/* Слева в поле стоит значок лупы — текст должен начинаться после него. */
.help-search__field input{font-size:15px;height:48px;padding:0 14px 0 40px;}
.help-answers{display:grid;gap:12px;margin-bottom:18px;}
.help-answer h2{margin:0 0 6px;font-size:16px;}
.help-answer h2 a{color:inherit;text-decoration:none;}
.help-answer h2 a:hover{text-decoration:underline;}
.help-answer p{margin:0;color:var(--soft);font-size:14px;line-height:1.5;}
.help-answer__foot{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px;}
.help-list{display:flex;flex-direction:column;}
.help-list__row{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;text-decoration:none;color:inherit;border-bottom:1px solid var(--line);}
.help-list__row:last-child{border-bottom:0;}
.help-list__row:hover{background:var(--panel-2);}
.help-list__row .ic{width:16px;height:16px;flex:0 0 auto;color:var(--muted);margin-top:2px;}
.help-list__row b{display:block;font-size:13.5px;font-weight:600;}
.help-list__row small{display:block;font-size:12.5px;line-height:1.4;margin-top:2px;}
.help-body{margin-bottom:14px;}
.help-meta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:12.5px;margin-bottom:18px;}

/* ---- Email-рассылки: простой график «отправлено / открыли» по дням ---- */
.email-chart{display:flex;gap:10px;align-items:flex-end;height:150px;overflow-x:auto;padding-bottom:4px}
.email-chart__day{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:44px}
.email-chart__bars{display:flex;gap:3px;align-items:flex-end;height:118px}
.email-chart__bar{width:13px;border-radius:3px 3px 0 0!important;display:block}
.email-chart__bar--sent{background:var(--soft)}
.email-chart__bar--opened{background:var(--accent)}
.email-chart__label{font-size:11px;color:var(--muted);white-space:nowrap}
.email-dot{display:inline-block;width:9px;height:9px;border-radius:2px!important;margin-right:5px}
.email-dot--sent{background:var(--soft)}
.email-dot--opened{background:var(--accent)}

/* ---- Просмотр письма в окне ---- */
.modal--wide{max-width:min(980px, calc(100vw - 32px));}
.email-preview{background:var(--panel-2);padding:12px;display:flex;justify-content:center;}
.email-preview__frame{width:100%;max-width:760px;height:min(70vh,640px);border:1px solid var(--line);background:#fff;display:block;}
.email-preview.is-mobile .email-preview__frame{max-width:380px;}
@media (max-width:720px){.email-preview{padding:8px;}.email-preview__frame{height:60vh;}}

/* Пять показателей отчёта по рассылке: на широком экране в один ряд,
   на узких срабатывают общие правила для .metrics. */
@media (min-width:1101px){.metrics--five{grid-template-columns:repeat(5,minmax(0,1fr));}}

/* ---- Таблица склада: сортировка по колонкам и подсветка остатков ---- */
.tbl-sort{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;}
.tbl-sort:hover{color:var(--accent);}
.tbl-sort.is-active{color:var(--accent);font-weight:700;}
.stock-tbl tr.is-low td{background:color-mix(in srgb,var(--amber-soft) 55%, transparent);}
.stock-tbl tr.is-out td{background:color-mix(in srgb,var(--accent-soft) 55%, transparent);}
@media (max-width:900px){.stock-tbl .col-wide{display:none;}}
/* На узких экранах платформа раскладывает таблицы карточками — заголовков
   колонок там нет, поэтому подписываем значения прямо в ячейках, иначе
   «130» висит без пояснения. */
@media (max-width:720px){
  .stock-tbl .col-desk{display:none;}
  .stock-tbl td[data-label]::before{content:attr(data-label)": ";color:var(--muted);font-size:12px;}
  .stock-tbl td .row-actions{justify-content:flex-start!important;}
}
