
/* ══════════════════════════════════════════════════════════════════
   A. ТОКЕНЫ  (источник: прототипы/p20.html css:8–33, p23.html css:8–26)
   Тёмная тема в макетах отсутствует — набор переопределений написан
   здесь, значения подобраны под ту же палитру (допущение исполнителя).
   ══════════════════════════════════════════════════════════════════ */
:root{
  --accent:#1477C9;
  --accent-hover:#106AB4;
  --accent-active:#155FA5;
  --on-accent:#FFFFFF;
  --tint:#E7F1FC;
  --tint-hover:#D6E7FA;
  --bg:#FFFFFF;
  /* Рабочая зона заметно холоднее и темнее карточек: раньше лента (#F7F9FB) почти
     сливалась с белыми карточками, и весь экран читался как один белый лист. */
  --feed-bg:#EEF3F9;
  --panel:#FFFFFF;
  --card:#FFFFFF;
  --border:#E1E8F1;
  --border-strong:#CFD9E6;
  --text:#10161E;
  --muted:#5E6875;
  --quiet:#5E6875;
  --bubble-user:#DCEBFB;
  --ok:#167642;
  --ok-soft:#E7F5EC;
  --warn:#B7791F;
  --danger:#C53A3A;
  --danger-soft:#FDECEC;
  --hover-surface:#EFF3F9;
  --press-surface:#E4EBF4;
  --field:#EDF2F8;
  --field-hover:#E5ECF5;
  --scroll-thumb:#CFD6DF;
  --shadow-menu:0 10px 28px rgba(16,22,30,.13);
  --shadow-sheet:0 -8px 30px rgba(16,22,30,.18);
  --label:#5E6875;   /* метки и подписи: AA и на белом, и на холодном фоне ленты */
  --shadow-card:0 4px 14px rgba(16,22,30,.07);
  --dim:rgba(16,22,30,.42);
  /* Мягкие скругления по всему интерфейсу (было 14/10): карточки, поля и кнопки
     не должны выглядеть вырезанными по линейке. */
  --r-card:18px;
  --r-ctl:13px;
  --ease:cubic-bezier(.2,.7,.3,1);
  /* три размера управляющих элементов — других в макете нет */
  --h-chip:32px;
  --h-icon:32px;
  --h-main:36px;
  --tap:44px;            /* минимальная цель на телефоне (p23) */
}
:root[data-theme="dark"]{
  --accent:#4C9EF0;
  --accent-hover:#5FA9F2;
  --accent-active:#8CC2F7;
  --on-accent:#0F1318;
  --tint:#1A2C3F;
  --tint-hover:#20374E;
  --bg:#12161C;
  --feed-bg:#0F1318;
  --panel:#161B22;
  --card:#171D25;
  --border:#242C36;
  --border-strong:#303A46;
  --text:#E7ECF2;
  --muted:#9AA4B0;
  --quiet:#9AA4B0;
  --bubble-user:#1E3448;
  --ok:#43B77A;
  --ok-soft:#173225;
  --warn:#D0A24A;
  --danger:#E86B6B;
  --danger-soft:#2E1C1C;
  --hover-surface:#1D242D;
  --press-surface:#242C36;
  --field:#1C232C;
  --field-hover:#222A34;
  --scroll-thumb:#39424E;
  --shadow-menu:0 10px 28px rgba(0,0,0,.45);
  --shadow-sheet:0 -8px 30px rgba(0,0,0,.5);
  --label:#9BA6B4;   /* метки в тёмной теме */
  --shadow-card:0 3px 10px rgba(0,0,0,.4);
  --dim:rgba(0,0,0,.58);
}

/* ── база ── */
*,*::before,*::after{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--text);
  background:var(--bg);
  font-size:14px;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
}
p{margin:0;}
a{color:inherit;}
svg{flex-shrink:0;display:block;}
button{
  font:inherit;color:inherit;background:transparent;
  border:1px solid transparent;border-radius:11px;
  padding:0;margin:0;cursor:pointer;text-align:left;
  transition:background-color 170ms var(--ease), border-color 170ms var(--ease),
             color 170ms var(--ease), opacity 170ms var(--ease), transform 150ms var(--ease);
}
button:active{transform:scale(.97);}
button:disabled{opacity:.45;cursor:not-allowed;}
button:disabled:active{transform:none;}
input,textarea{
  font:inherit;color:inherit;background:transparent;
  border:1px solid transparent;border-radius:11px;margin:0;
}
input::placeholder,textarea::placeholder{color:var(--quiet);}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.num{font-variant-numeric:tabular-nums;}
[hidden]{display:none !important;}

/* ── скроллбары (p20 css:81–90) ── */
.scroll{overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent;scrollbar-gutter:stable;}
.scroll::-webkit-scrollbar{width:10px;}
.scroll::-webkit-scrollbar-track{background:transparent;}
.scroll::-webkit-scrollbar-thumb{
  background:var(--scroll-thumb);border-radius:999px;
  border:3px solid transparent;background-clip:content-box;
}

/* ── тултипы (p20 css:93–115) ── */
.tip{position:relative;}
.tip::after{
  content:attr(data-tip);
  position:absolute;top:calc(100% + 8px);left:50%;
  transform:translateX(-50%) translateY(-2px);
  background:#1B2430;color:#fff;font-size:12px;line-height:1;
  padding:7px 9px;border-radius:11px;white-space:nowrap;
  opacity:0;pointer-events:none;
  transition:opacity 150ms var(--ease), transform 150ms var(--ease);
  z-index:60;
}
.tip:hover::after,.tip:focus-visible::after{opacity:1;transform:translateX(-50%) translateY(0);}
.tip.tip-up::after{top:auto;bottom:calc(100% + 8px);}
.tip.tip-left::after{left:auto;right:0;transform:translateX(0) translateY(-2px);}
.tip.tip-left:hover::after,.tip.tip-left:focus-visible::after{transform:translateX(0) translateY(0);}

/* ══════════════════════════════════════════════════════════════════
   B. КАРКАС
   ══════════════════════════════════════════════════════════════════ */
.app{display:flex;height:100vh;height:100dvh;width:100%;overflow:hidden;}

/* ============ ЛЕВАЯ ПАНЕЛЬ (p20 css:121–248) ============ */
.side{
  width:284px;min-width:284px;
  background:var(--panel);
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;height:100%;
  transition:margin-left 200ms var(--ease);
}
.side.collapsed{margin-left:-284px;}
.side-top{padding:14px 14px 10px;display:flex;align-items:center;gap:9px;}
/* ── название продукта (левый верх) ── */
.brand-logo{
  width:32px;height:32px;flex:none;border-radius:12px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--tint);color:var(--accent);
}
/* Знак «Залипалки»: наведение раскручивает спираль внутри неподвижного кадра.
   Угол задаёт переменная --zspin (наследуется внутрь <use>), цвет прорези
   вокруг спирали — --zbg, он равен фону плашки, поэтому кадр выглядит
   прорезанным ровно там, где спираль проходит сейчас. Сама плашка при
   наведении не меняется: движется только рисунок. */
.brand-logo{--zbg:var(--tint);}
.a-logo,.splash-logo{--zbg:var(--accent);}
.side-top:hover .brand-logo,
.auth-brand:hover .a-logo{--zspin:360deg;}
@media (prefers-reduced-motion:reduce){
  .side-top:hover .brand-logo,
  .auth-brand:hover .a-logo{--zspin:0deg;}
}
.brand-name{
  font-size:18px;font-weight:650;letter-spacing:-.01em;color:var(--text);
  white-space:nowrap;
}
.brand-beta{
  align-self:flex-start;margin:1px 0 0 -3px;padding:2px 5px;border-radius:6px;
  background:var(--tint);color:var(--accent);font-size:9px;font-weight:700;
  line-height:1;letter-spacing:.02em;white-space:nowrap;
}
.nav{
  padding:6px 8px 10px;display:flex;flex-direction:column;gap:2px;
  border-bottom:1px solid var(--border);flex:0 1 auto;overflow-y:auto;min-height:0;
}
.nav-item{
  display:flex;align-items:center;gap:10px;
  height:40px;padding:0 10px;border-radius:13px;
  font-size:14.5px;font-weight:500;width:100%;
}
a.nav-item{color:inherit;text-decoration:none;cursor:pointer;-webkit-user-drag:none;}
.nav-item svg{color:var(--quiet);transition:color 170ms var(--ease);}
.nav-item:hover{background:var(--hover-surface);}
.nav-item:hover svg{color:var(--muted);}
.nav-item.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.nav-item.on svg{color:var(--accent);}
.nav-count{
  margin-left:auto;font-size:11px;font-weight:600;color:var(--muted);
  background:var(--press-surface);border-radius:999px;padding:2px 7px;
}
.nav-item.on .nav-count{background:var(--card);color:var(--accent-active);}
.nav-private{
  margin-left:auto;padding:2px 6px;border-radius:999px;background:#fff3cd;
  color:#8a5a00;font-size:9px;font-weight:700;line-height:1.35;white-space:nowrap;
}

/* История: скрытый по умолчанию блок (вкладки + список). Занимает оставшуюся
   высоту панели только когда открыт. Своей верхней черты нет — список идёт
   сразу за кнопкой «История» и читается как одно целое с ней. */
.hist{display:flex;flex-direction:column;flex:1;min-height:0;}
.hist[hidden]{display:none;}

.ctabs{
  display:flex;gap:4px;padding:8px 10px 6px;border-bottom:1px solid var(--border);
}
.ctab{
  flex:1;height:var(--h-chip);border-radius:11px;
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:13px;color:var(--muted);
}
.ctab:hover{background:var(--hover-surface);color:var(--text);}
.ctab.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.ctab .n{font-size:11px;opacity:.75;}

/* Справа оставлена дорожка под риски мини-карты: без неё колонка рисок ложилась
   поверх дат чатов. */
.chats{flex:1;min-height:0;padding:6px 30px 8px 6px;}
.group{
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;padding:12px 10px 6px;
}
.chat{
  position:relative;display:flex;align-items:center;gap:10px;
  min-height:50px;padding:0 8px 0 10px;border-radius:13px;width:100%;
  cursor:pointer;transition:background-color 170ms var(--ease);
}
.chat:hover{background:var(--hover-surface);}
.chat.on{background:var(--tint);}
.ava{
  width:32px;height:32px;min-width:32px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:13px;font-weight:600;overflow:hidden;
}
.ava img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit;}
/* метка чата: иконка работы вместо кружка с буквой */
.chat-ico{
  width:32px;height:32px;min-width:32px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  background:var(--field);color:var(--quiet);
}
.chat.on .chat-ico{background:var(--tint);color:var(--accent-active);}
.chat-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.chat-name{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;}
.chat-name span{overflow:hidden;text-overflow:ellipsis;}
.chat-name svg{color:var(--quiet);}
.chat-prev{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.chat-right{width:42px;min-width:42px;display:flex;flex-direction:column;align-items:flex-end;gap:6px;position:relative;}
.chat-time{font-size:11px;color:var(--quiet);transition:opacity 150ms var(--ease);}
.chat-dots{
  position:absolute;top:-6px;right:-2px;
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
  opacity:0;transition:opacity 150ms var(--ease), background-color 170ms var(--ease);
}
.chat:hover .chat-dots,.chat.menu-open .chat-dots{opacity:1;}
.chat:hover .chat-time,.chat.menu-open .chat-time{opacity:0;}
.chat-dots:hover{background:var(--press-surface);color:var(--text);}

/* Низ панели не сжимается и не уезжает за край, сколько бы разделов ни
   добавилось выше: список разделов прокручивается, этот блок стоит на месте. */
/* margin-top:auto прижимает профиль к низу панели даже когда список чатов
   свёрнут: без распорки он всплывал бы сразу под кнопкой «История». */
.side-bottom{
  flex:0 0 auto;margin-top:auto;border-top:1px solid var(--border);padding:6px 8px 8px;
  /* Три кнопки в одну строку: профиль (тянется), «сообщить об ошибке», выход.
     minmax(0,…) обязателен — с обычным 1fr колонка профиля не сжимается ниже
     своего min-content, и обе иконки уезжали за правый край панели. */
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center;
}
/* 05.10: «Сообщить об ошибке» и «Выйти» — цель не меньше 36×36 (на телефоне 44×44 ниже),
   спокойный цвет в покое, заметные наведение и фокус с клавиатуры. */
.side-bottom .icon-btn{width:36px;height:36px;min-width:36px;border-radius:10px;
  transition:background-color 150ms var(--ease), color 150ms var(--ease);}
.side-bottom .icon-btn:focus-visible{background:var(--press-surface);color:var(--text);}
/* Подсказка: с задержкой на наведении (не мелькает по пути мыши), на тач-экранах
   не залипает после касания; в тёмной теме своя плашка — иначе сливается с панелью. */
.side-bottom .tip:hover:not(:focus-visible)::after{transition-delay:300ms;}
@media (hover:none){.side-bottom .tip:hover:not(:focus-visible)::after{opacity:0;}}
:root[data-theme="dark"] .side-bottom .tip::after{background:#2A3441;box-shadow:0 0 0 1px var(--border-strong),0 4px 12px rgba(0,0,0,.4);}
@media (prefers-reduced-motion:reduce){.side-bottom .icon-btn,.side-bottom .tip::after{transition:none;}}
/* «История» — продолжение меню разделов: стоит сразу под чертой, которой
   заканчивается .nav, а раскрытый список ложится под неё. */
.side-hist{flex:0 0 auto;padding:6px 8px 0;}
.side-foot{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:8px 10px;border:none;border-radius:12px;background:none;
  color:inherit;font:inherit;text-align:left;cursor:pointer;
}
.side-foot{position:relative;}
/* Счётчик проверки сценариев — уголком на аватаре, как непрочитанные в
   мессенджерах: в строке он занимал место, которого не хватало самой тематике. */
.side-foot .tm-unread{
  position:absolute;left:31px;top:4px;min-width:16px;height:16px;padding:0 4px;
  font-size:10px;border:2px solid var(--panel);border-radius:9px;
}
.side-foot:hover{background:var(--hover-surface);}
.side-foot.on{background:var(--tint);}
.side-foot.on .foot-name{color:var(--accent-active);}
.side-exit{align-self:center;}
.side-foot .ava{width:34px;height:34px;min-width:34px;}
.foot-txt{flex:1;min-width:0;text-align:left;overflow:hidden;display:block;}
.foot-name{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.foot-sub{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* затемнение под мобильным сайдбаром */
.backdrop{
  position:fixed;inset:0;background:var(--dim);z-index:90;
  opacity:0;pointer-events:none;transition:opacity 200ms var(--ease);
}
.backdrop.show{opacity:1;pointer-events:auto;}

/* ── меню (p20 css:251–276) ── */
.menu{
  position:fixed;z-index:150;display:none;min-width:196px;
  background:var(--panel);border:1px solid var(--border);border-radius:15px;
  box-shadow:var(--shadow-menu);padding:6px;flex-direction:column;gap:1px;
}
.menu.open{display:flex;}
/* Открытие/закрытие — из угла кнопки-триггера (transform-origin ставит JS),
   а не рывком; пункты внутри НЕ анимируются по одному (лаг на длинном меню). */
.menu.menu-in{animation:menuIn 160ms var(--ease) both;}
.menu.menu-in-up{animation:menuInUp 160ms var(--ease) both;}
.menu.menu-out{animation:menuOut 110ms ease-in both;pointer-events:none;}
.menu.menu-out-up{animation:menuOutUp 110ms ease-in both;pointer-events:none;}
@keyframes menuIn{from{opacity:0;transform:scale(.97) translateY(-4px);}to{opacity:1;transform:none;}}
@keyframes menuInUp{from{opacity:0;transform:scale(.97) translateY(4px);}to{opacity:1;transform:none;}}
@keyframes menuOut{from{opacity:1;transform:none;}to{opacity:0;transform:scale(.97) translateY(-4px);}}
@keyframes menuOutUp{from{opacity:1;transform:none;}to{opacity:0;transform:scale(.97) translateY(4px);}}
@media (prefers-reduced-motion:reduce){
  .menu.menu-in,.menu.menu-in-up,.menu.menu-out,.menu.menu-out-up{animation:none;opacity:1;transform:none;}
}
.menu-item{
  display:flex;align-items:center;gap:10px;width:100%;
  height:var(--h-main);padding:0 8px;border-radius:11px;font-size:13px;color:var(--text);
}
.menu-item svg{color:var(--quiet);}
.menu-item:hover{background:var(--hover-surface);}
.menu-item.danger{color:var(--danger);}
.menu-item.danger svg{color:var(--danger);}
.menu-item.danger:hover{background:var(--danger-soft);}
.menu-sep{height:1px;background:var(--border);margin:5px 4px;}
/* ── уточнение «похоже на готовый сценарий» (askScriptIntent) ── */
.intent-acts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center;}
.auto-hint{font-size:13px;color:var(--quiet);}

/* ============ ЦЕНТР (p20 css:279–340) ============ */
.center{
  flex:1;min-width:0;display:flex;flex-direction:column;
  background:var(--feed-bg);height:100%;position:relative;
}
.screens{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;}
.screen{display:none;flex-direction:column;flex:1;min-height:0;}
.screen.visible{display:flex;}

.top{
  height:56px;min-height:56px;background:var(--panel);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;padding:0 12px 0 16px;
}
.top-txt{flex:1;min-width:0;}
.top-title{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.top-sub{font-size:12px;color:var(--muted);margin-top:2px;display:flex;align-items:center;gap:6px;}
.top-new-chat{white-space:nowrap;}
.top-sub.live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 1.5s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:.35;}50%{opacity:1;}}
.top-parallel-open{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.top-parallel-open svg{color:var(--accent);}

.parallel-tasks{
  position:fixed;right:18px;bottom:12px;z-index:34;width:min(340px,calc(100% - 36px));
  max-height:min(70dvh,560px);display:flex;flex-direction:column;min-height:0;
  background:var(--card);border:1px solid var(--border);border-radius:16px;
  box-shadow:0 14px 40px rgba(25,45,75,.14);padding:10px;
}
.parallel-tasks-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 8px;}
.parallel-tasks-title{font-size:13px;font-weight:700;}
.parallel-tasks-list{display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;}
.parallel-task{border:1px solid var(--border);border-radius:12px;padding:10px;background:var(--panel);}
.parallel-task-name{font-size:12.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.parallel-task-foot{display:flex;align-items:center;gap:7px;margin-top:8px;}
.parallel-task-state{display:flex;align-items:center;gap:7px;min-width:0;flex:1;color:var(--muted);font-size:11.5px;}
.parallel-task-state span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.parallel-task-dot{width:7px;height:7px;min-width:7px;border-radius:50%;background:var(--accent);animation:pulse 1.35s ease-in-out infinite;}
.parallel-task.idle .parallel-task-dot{background:var(--quiet);animation:none;}
.parallel-task.done .parallel-task-dot{background:var(--success);animation:none;}
.parallel-task.error .parallel-task-dot{background:var(--danger);animation:none;}
.parallel-task-open{border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:11.5px;color:var(--text);background:var(--card);}
.parallel-task-open:hover{border-color:var(--accent);color:var(--accent);}
.parallel-task-delete{width:28px;height:28px;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted);background:var(--card);}
.parallel-task-delete:hover{border-color:var(--danger);color:var(--danger);}
@media(max-width:700px){
  .top-parallel-open span{display:none;}
  .top-parallel-open{width:var(--h-icon);height:var(--h-icon);padding:0;justify-content:center;border-radius:50%;}
  /* На телефоне панель закрывала поле ввода — там она не нужна, статус видно на стрелке «вниз». */
  #parallelTasks{display:none!important;}
}

.icon-btn{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.icon-btn:hover{background:var(--press-surface);color:var(--text);}
.icon-btn.on{background:var(--press-surface);color:var(--text);}

.feed{flex:1;min-height:0;padding:24px 24px 8px;position:relative;}
.inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:16px;}
.inner-wide{max-width:1160px;margin:0 auto;width:100%;}

/* ── композер (p20 css:508–565) ── */
.comp-wrap{padding:8px 24px 14px;background:var(--feed-bg);}
.comp-in{max-width:720px;margin:0 auto;display:flex;flex-direction:column;}
.comp{
  display:flex;align-items:flex-end;gap:8px;
  background:var(--card);border:1px solid var(--border);border-radius:22px;
  min-height:64px;padding:9px 10px;
  transition:border-color 170ms var(--ease), box-shadow 170ms var(--ease);
}
.comp:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
/* высота = строка + padding, без border: иначе border-box съедает 12px строки,
   и поле показывает нативный скроллбар и режет хвосты у букв плейсхолдера */
.comp textarea{
  flex:1;min-width:0;resize:none;height:44px;min-height:44px;max-height:132px;
  overflow-y:hidden;scrollbar-width:thin;font-size:15px;line-height:24px;
  padding:10px 2px;border:0;border-radius:0;
}
.comp textarea::-webkit-scrollbar-button{display:none;width:0;height:0;}
/* рамку фокуса рисует .comp:focus-within — своя у поля дала бы вторую */
.comp textarea:focus-visible{outline:none;}
/* пока идёт генерация — поле только на чтение, показываем это цветом */
.comp textarea.busy{color:var(--quiet);cursor:not-allowed;}
/* «Сценарист»: сообщение в очереди, уйдёт после текущего ответа */
.sbeta-queued{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:6px 6px 6px 12px;min-width:0;
  border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:13px;line-height:1.35;color:var(--muted);}
.sbeta-queued[hidden]{display:none;}
.sbeta-queued-label{flex:0 0 auto;font-weight:600;color:var(--text);}
.sbeta-queued-text{flex:1 1 auto;min-width:0;overflow:hidden;white-space:normal;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
.sbeta-queued-note{color:var(--text);padding:8px 12px;}
/* Телефон: подпись и «Вернуть в поле» — первой строкой, текст очереди — второй, до 2 строк */
@media (max-width:560px){
  .sbeta-queued{flex-wrap:wrap;row-gap:2px;}
  .sbeta-queued-text{order:3;flex:1 0 100%;}
  .sbeta-queued-back{margin-left:auto;}
}
.sbeta-queued-back{flex:0 0 auto;min-height:32px;padding:6px 10px;border:0;border-radius:8px;background:transparent;
  color:var(--accent);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;}
.sbeta-queued-back:hover{background:var(--press-surface);}
.comp-ico:disabled,.comp-ico[disabled]{opacity:.45;pointer-events:none;}
.comp-ico{
  width:44px;height:44px;min-width:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.comp-ico:hover{background:var(--press-surface);color:var(--text);}
.composer-engine-switch{display:inline-flex;align-self:center;flex:0 0 auto;padding:2px;border:1px solid var(--border);border-radius:10px;background:var(--surface);}
.composer-engine-btn{border:0;border-radius:7px;background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:600;line-height:1.2;padding:6px 8px;cursor:pointer;white-space:nowrap;}
.composer-engine-btn.on{background:var(--accent);color:var(--on-accent);}
.composer-engine-btn:disabled{cursor:default;opacity:.55;}
/* 05.10 Сценарист: движок ответа (ChatGPT / Claude Code) — тихая капсула как «Instant ⌄» в ChatGPT. */
.composer-engine-switch.is-menu{position:relative;padding:0;border:0;border-radius:999px;background:transparent;}
.sw-engine-btn{display:inline-flex;align-items:center;gap:4px;height:36px;padding:0 8px 0 12px;border:0;border-radius:999px;
  background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:500;line-height:1;white-space:nowrap;cursor:pointer;
  transition:background-color .15s var(--ease),color .15s var(--ease);}
.sw-engine-btn svg{flex:0 0 auto;opacity:.75;transition:transform .15s var(--ease);}
.sw-engine-btn:hover,.sw-engine-btn[aria-expanded="true"]{background:rgba(0,0,0,.055);color:var(--text);}
.sw-engine-btn[aria-expanded="true"] svg{transform:rotate(180deg);}
.sw-engine-btn:focus{outline:none;}
.sw-engine-btn:focus-visible{outline:2px solid rgba(0,0,0,.38);outline-offset:1px;}
.sw-engine-btn:disabled{cursor:default;opacity:.5;background:transparent;}
.sw-engine-menu{position:absolute;right:0;bottom:calc(100% + 8px);z-index:40;min-width:200px;padding:6px;border:1px solid var(--border);
  border-radius:16px;background:var(--card);box-shadow:var(--shadow-menu);}
.sw-engine-menu[hidden]{display:none;}
.sw-engine-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:40px;padding:0 10px 0 12px;
  border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;font-size:14px;font-weight:500;text-align:left;cursor:pointer;}
.sw-engine-item:hover,.sw-engine-item:focus{outline:none;background:rgba(0,0,0,.055);}
.sw-engine-check{flex:0 0 auto;visibility:hidden;}
.sw-engine-item[aria-checked="true"] .sw-engine-check{visibility:visible;}
.sbeta-engine-tag{margin:0 0 6px;font-size:12px;line-height:1.3;color:var(--quiet);}
/* 05.10 Этап 5: движок недоступен (лимит / нет входа) — пункт серый, как выключенный, и не выбирается;
   капсула показывает действующий движок в обычном виде. */
.sw-engine-item{position:relative;}
.sw-engine-item-main{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:7px 0;}
.sw-engine-item-row{display:inline-flex;align-items:center;gap:8px;}
.sw-engine-dot{display:none;flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--quiet);}
.sw-engine-item-note{display:none;font-size:12.5px;font-weight:400;line-height:1.3;color:var(--quiet);white-space:normal;}
.sw-engine-item.is-down .sw-engine-dot,.sw-engine-item.is-down .sw-engine-item-note{display:block;}
.sw-engine-item.is-down{color:var(--quiet);cursor:not-allowed;}
.sw-engine-item.is-down:hover{background:transparent;}
.sw-engine-item.is-down .sw-engine-check{opacity:.6;}
.sw-engine-note-short{display:none;}
.sw-engine-tip{display:none;position:absolute;right:calc(100% + 14px);top:50%;transform:translateY(-50%);z-index:41;width:max-content;max-width:240px;
  padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--card);box-shadow:var(--shadow-menu);
  color:var(--text);font-size:12.5px;font-weight:400;line-height:1.35;white-space:normal;pointer-events:none;}
@media (hover:hover) and (pointer:fine){
  .sw-engine-note-short{display:inline;}
  .sw-engine-note-full{display:none;}
  .sw-engine-item.is-down:hover .sw-engine-tip,.sw-engine-item.is-down:focus-visible .sw-engine-tip{display:block;}
}
:root[data-theme="dark"] .sw-engine-tip{background:#2A2B2E;border-color:#3A3C41;}
:root[data-theme="dark"] .sw-engine-btn:hover,:root[data-theme="dark"] .sw-engine-btn[aria-expanded="true"],
:root[data-theme="dark"] .sw-engine-item:hover,:root[data-theme="dark"] .sw-engine-item:focus{background:rgba(255,255,255,.08);}
:root[data-theme="dark"] .sw-engine-item.is-down:hover{background:transparent;}
:root[data-theme="dark"] .sw-engine-btn:focus-visible{outline-color:rgba(255,255,255,.45);}
:root[data-theme="dark"] .sw-engine-menu{background:#2A2B2E;border-color:#3A3C41;}
@media (max-width:760px){
  .sw-engine-btn{height:34px;padding:0 6px 0 10px;font-size:13.5px;}
  .sw-engine-menu{min-width:184px;}
}
@media (prefers-reduced-motion:reduce){.sw-engine-btn,.sw-engine-btn svg{transition:none;}}
.send{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:50%;
  background:var(--accent);color:var(--on-accent);
  display:flex;align-items:center;justify-content:center;
}
.comp>.send{width:44px;height:44px;min-width:44px;}
.send:hover{background:var(--accent-hover);}
.send:active{background:var(--accent-active);}
.disc{text-align:center;font-size:11px;color:var(--quiet);margin-top:8px;line-height:1.4;}
#limitHint,#sendError,.status-line.sbeta-failed{color:var(--danger);font-weight:600;}

/* ── корзина материалов «Из документа»: копится по «+», не запускает генерацию
   сама — только «Начать» ── */
.doc-bskt{margin:0 0 8px;display:flex;flex-direction:column;gap:8px;}
.doc-bskt-note{
  display:flex;align-items:flex-start;gap:8px;padding:7px 10px;
  background:var(--field);border:1px solid var(--border);border-radius:12px;
  font-size:12.5px;color:var(--muted);
}
.doc-bskt-note span{flex:1;min-width:0;}
.doc-bskt-note b{color:var(--text);font-weight:600;}
.doc-bskt-note .doc-bskt-rm{flex-shrink:0;}
.doc-bskt-list{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto;}
.doc-bskt-item{
  display:flex;align-items:center;gap:9px;padding:7px 10px;
  background:var(--field);border:1px solid var(--border);border-radius:12px;color:var(--muted);
}
.doc-bskt-item.loading{color:var(--quiet);}
.doc-bskt-item.error{border-color:var(--danger);}
.doc-bskt-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.doc-bskt-name{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-bskt-meta{font-size:11.5px;color:var(--quiet);}
.doc-bskt-meta.error{color:var(--danger);}
.doc-bskt-rm,.doc-bskt-retry{
  width:24px;height:24px;min-width:24px;border-radius:50%;color:var(--quiet);
  display:flex;align-items:center;justify-content:center;
}
.doc-bskt-rm:hover{background:var(--press-surface);color:var(--danger);}
.doc-bskt-retry:hover{background:var(--press-surface);color:var(--text);}
.doc-bskt-actions{display:flex;align-items:center;gap:8px;}
.doc-bskt-add{
  display:flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;
  border:1px solid var(--border);color:var(--muted);font-size:13px;
}
.doc-bskt-add:hover{background:var(--press-surface);color:var(--text);}
.doc-bskt-add:disabled{opacity:.45;pointer-events:none;}
.doc-bskt-count{font-size:12px;color:var(--quiet);white-space:nowrap;}
.doc-bskt-hint{font-size:11.5px;color:var(--quiet);}
.doc-bskt-q{font-size:12.5px;color:var(--muted);}
.doc-bskt-start{
  padding:7px 16px;border-radius:999px;background:var(--accent);color:var(--on-accent);
  font-size:13px;font-weight:600;margin-left:auto;
}
.doc-bskt-start:hover{background:var(--accent-hover);}
.doc-bskt-start:disabled{opacity:.45;pointer-events:none;}

/* ============ ПРАВАЯ ПАНЕЛЬ (p20 css:588–609) ============ */
.insp{
  width:340px;min-width:340px;
  background:var(--panel);border-left:1px solid var(--border);
  display:flex;flex-direction:column;height:100%;
}
.insp-top{
  height:56px;min-height:56px;display:flex;align-items:center;gap:8px;
  padding:0 10px 0 18px;border-bottom:1px solid var(--border);
}
.insp-ttl{flex:1;min-width:0;font-size:13px;font-weight:600;}
/* панель можно убрать с глаз: ширина в 0, содержимое остаётся в DOM
   (перерисовка инспектора идёт и в свёрнутом виде — развернул и всё на месте) */
.insp{transition:width 180ms var(--ease),min-width 180ms var(--ease);}
.insp.collapsed{width:0;min-width:0;border-left:none;overflow:hidden;}
/* В CRM правая панель показывать нечего — она про разбор сценария. Прячем на время
   раздела отдельным классом, чтобы не затирать выбор человека (его хранит .collapsed). */
.insp.insp-off{display:none;}
.insp-body{flex:1;min-height:0;padding:16px 18px 24px;}
.insp-sec{margin-bottom:24px;}
.insp-sec:last-child{margin-bottom:0;}
.insp-h{
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin-bottom:16px;
}
/* кнопка вызова инспектора на узких ширинах (p20 css:711–719) */
.insp-call{
  display:none;position:absolute;right:16px;top:64px;z-index:70;
  height:34px;padding:0 12px;border-radius:999px;
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-card);
  align-items:center;gap:7px;font-size:13px;color:var(--muted);
}
.insp-call:hover{color:var(--text);}
.prompt-guide{color:var(--muted);font-size:13px;line-height:1.5;}
.prompt-guide-lead{margin:0;color:var(--text);}
.prompt-guide-section{margin-top:16px;padding-top:16px;border-top:1px solid var(--border);}
.prompt-guide-section h3{margin:0 0 12px;color:var(--text);font-size:13px;line-height:1.4;}
.prompt-guide-rules{margin:0;padding-left:20px;}
.prompt-guide-rules li+li{margin-top:8px;}
/* элементы, нужные только там, где правой панели нет (планшет, телефон) */
.narrow-only{display:none !important;}
@media (max-width:1280px){ .narrow-only{display:inline-flex !important;} }
/* ── мини-карта ленты: колонка рисок у правого края ── */
.mmap{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:4px;
  padding:8px 4px;opacity:0;pointer-events:none;
  transition:opacity 220ms var(--ease);
}
.mmap.show{opacity:1;pointer-events:auto;}
/* Ширину и яркость каждой риски задаёт JS покадрово (см. draw) — своих переходов
   у них нет, иначе css гасил бы сглаживание собственной задержкой. */
.mmap-t{width:9px;height:2px;border-radius:2px;background:var(--quiet);opacity:.26;}
.mmap-t:hover{opacity:.85;}

/* Родной скроллбар убран везде, где есть колонка рисок — она взяла его роль.
   Прокрутка колесом и клавишами работает как прежде, полоса просто не рисуется. */
.screens .feed::-webkit-scrollbar,.screens::-webkit-scrollbar,
.chats::-webkit-scrollbar,.insp-body::-webkit-scrollbar{width:0;height:0;}
.screens .feed,.screens,.chats,.insp-body{scrollbar-width:none;}
/* Колонка висит в самой панели: .side и .insp не прокручиваются, поэтому риски
   остаются на месте, пока содержимое едет. */
.side,.insp{position:relative;}
/* В узких панелях риски прижаты к краю плотнее, чем в ленте. Свою дорожку
   справа им освобождает padding-right у .chats / .insp-body. */
.side>.mmap,.insp>.mmap{right:2px;}
@media (max-width:760px){ .mmap{display:none;} }
@media (prefers-reduced-motion: reduce){ .mmap,.mmap-t{transition:none;} }

/* Появление блоков ленты — короткий подъём с прозрачностью вместо мгновенной
   вставки: карточка новости, хуки, колонки и системные строки больше не «щёлкают».
   Только на входе, на текст во время печати не влияет. */
@keyframes feed-in{ from{opacity:0;transform:translateY(6px);} to{opacity:1;transform:none;} }
.news,.hooks,.cols,.endings,.stools,.insp-sec,.idet-row{
  animation:feed-in 200ms var(--ease) both;
}
.col-text{will-change:contents;}
@media (prefers-reduced-motion: reduce){
  .news,.hooks,.cols,.endings,.stools,.insp-sec,.idet-row{animation:none;}
}

/* ── сфера записи голоса ──
   Раньше это была шторка во весь экран: она гасила страницу и перехватывала
   клики, поэтому нажать микрофон второй раз (остановить диктовку) было нечем —
   помогала только перезагрузка. Теперь это компактная плашка над композером,
   сквозная для мыши, а сам шар кликабелен и останавливает запись. */
.orb-back{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:300;
  display:flex;flex-direction:column;align-items:center;gap:12px;
  padding:20px 24px 16px;border-radius:22px;
  background:color-mix(in oklab, var(--card) 92%, transparent);
  box-shadow:var(--shadow-menu);
  pointer-events:none;
}
/* Сам шар рисует canvas (см. voiceOrb): объём, переливы и волны, которые ходят
   от голоса, css-градиентом не сделать — он статичен и читается как плоский круг. */
.orb{
  --lvl:1;
  width:112px;height:112px;border-radius:50%;position:relative;
  pointer-events:auto;cursor:pointer;
  box-shadow:0 18px 34px -14px color-mix(in oklab, var(--accent) 62%, transparent),
             0 0 44px color-mix(in oklab, var(--accent) 30%, transparent);
  transform:scale(var(--lvl));
  transition:transform 90ms linear;
}
.orb-cv{display:block;width:100%;height:100%;border-radius:50%;}
.orb-ring{
  position:absolute;inset:-16px;border-radius:50%;
  border:1.5px solid color-mix(in oklab, var(--accent) 45%, transparent);
  animation:orb-pulse 2.1s ease-out infinite;
}
.orb-hint{font-size:13px;color:var(--muted);white-space:nowrap;}
.orb-stop{
  min-height:44px;padding:0 18px;border:0;border-radius:999px;
  background:var(--accent);color:#fff;font:600 14px/1 var(--font-ui);
  box-shadow:0 8px 20px color-mix(in oklab,var(--accent) 28%,transparent);
  pointer-events:auto;cursor:pointer;
}
.orb-stop:hover{background:var(--accent-active);}
.orb-stop:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
@keyframes orb-pulse{
  0%{transform:scale(.92);opacity:.75;}
  100%{transform:scale(1.35);opacity:0;}
}
@media (prefers-reduced-motion: reduce){
  .orb-ring{animation:none;}
}

/* ниша в «Поиске идей» — одна кнопка над полем ТЗ вместо второго окна */
.id-niche{margin-bottom:14px;}
.id-niche .btn2.on{border-color:var(--accent);color:var(--accent-active);}
/* ТЗ непустое — ниша кабинета не подмешивается (см. syncBriefHint), чип гасим */
.id-niche .btn2.dim{opacity:.45;}

/* ══════════════════════════════════════════════════════════════════
   C. КОМПОНЕНТЫ
   ══════════════════════════════════════════════════════════════════ */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-chip);padding:0 12px;border-radius:999px;
  background:var(--field);color:var(--text);font-size:13px;white-space:nowrap;
}
.chip svg{color:var(--muted);transition:color 170ms var(--ease);}
.chip:hover{background:var(--tint);color:var(--accent-active);}
.chip:hover svg{color:var(--accent);}
/* Подсветка вероятного варианта в развилке «правка / новая тема» (askChatIntent) —
   не выбор, а подсказка, куда, скорее всего, кликнуть. */
.chip.primary{background:var(--accent);color:var(--on-accent);}
.chip.primary svg{color:var(--on-accent);}
.chip.primary:hover{background:var(--accent-hover);color:var(--on-accent);}
.chip.primary:hover svg{color:var(--on-accent);}
.btn-main{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:var(--h-main);padding:0 16px;border-radius:999px;
  background:var(--accent);color:var(--on-accent);font-size:13px;font-weight:600;white-space:nowrap;
}
.btn-main:hover{background:var(--accent-hover);}
.btn-main:active{background:var(--accent-active);}
.ghost-btn{
  height:var(--h-main);border-radius:var(--r-ctl);padding:0 14px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-size:13px;font-weight:600;color:var(--muted);border:1px solid var(--border);
}
.ghost-btn:hover{background:var(--hover-surface);color:var(--text);}
.card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:16px;
}
.block-label{
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;display:flex;align-items:center;gap:8px;
}
.block-label .line{flex:1;height:1px;background:var(--border);}

/* пустое состояние / заглушка раздела (p20 css:892–902) */
.empty{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:64px 24px;color:var(--muted);
}
.empty-ico{
  width:40px;height:40px;border-radius:13px;margin-bottom:12px;
  background:var(--tint);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.empty-t{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px;}
.empty-d{font-size:13px;line-height:1.45;max-width:34ch;}

/* ── сплэш ── */
.splash{
  position:fixed;inset:0;z-index:400;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  transition:opacity 260ms var(--ease);
}
.splash.fade{opacity:0;}
.splash-logo{
  width:54px;height:54px;border-radius:16px;background:var(--accent);color:var(--on-accent);
  display:flex;align-items:center;justify-content:center;
}
.splash-spin{
  width:22px;height:22px;border-radius:50%;
  border:2.5px solid var(--border);border-top-color:var(--accent);
  animation:spin 900ms linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}
.splash-err{display:none;flex-direction:column;align-items:center;gap:12px;}
.splash-err-msg{font-size:14px;color:var(--muted);}
.splash.error .splash-spin{display:none;}
.splash.error .splash-err{display:flex;}
.splash-retry{
  height:var(--h-main);padding:0 18px;border-radius:999px;
  background:var(--accent);color:var(--on-accent);font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;
}
.splash-retry:hover{background:var(--accent-hover);}

/* ── логин ── */
.auth-overlay{
  position:fixed;inset:0;z-index:380;background:var(--feed-bg);
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.auth-card{
  width:100%;max-width:360px;
  background:var(--card);border:1px solid var(--border);border-radius:18px;
  padding:26px 24px;display:flex;flex-direction:column;gap:14px;
  box-shadow:var(--shadow-card);
}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:6px;min-width:0;}
.auth-brand>span:last-child{min-width:0;}
.a-logo{
  width:44px;height:44px;min-width:44px;border-radius:13px;
  background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;
}
.a-title{font-size:17px;font-weight:600;display:block;overflow-wrap:anywhere;}
.a-sub{font-size:13px;color:var(--muted);overflow-wrap:anywhere;}
.auth-card label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;}
.auth-card input{
  width:100%;height:var(--tap);padding:0 14px;
  background:var(--field);border:1px solid transparent;border-radius:var(--r-ctl);font-size:14px;
}
.auth-card input:focus{outline:none;background:var(--card);border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.auth-btn{
  height:var(--tap);border-radius:var(--r-ctl);
  background:var(--accent);color:var(--on-accent);font-size:14.5px;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}
.auth-btn:hover{background:var(--accent-hover);}
.auth-err{min-height:18px;font-size:13px;color:var(--danger);text-align:center;}
.auth-err.account-blocked-inline{
  margin-top:2px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-ctl);
  background:var(--tint);color:var(--text);text-align:left;line-height:1.5;white-space:pre-wrap;
  overflow-wrap:anywhere;word-break:break-word;
}
.auth-mode{display:flex;flex-direction:column;gap:14px;}
.auth-mode[hidden]{display:none !important;}
.account-blocked-overlay{
  position:fixed;inset:0;z-index:420;background:var(--feed-bg);
  display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto;
}
.account-blocked-card{
  width:100%;max-width:440px;min-width:0;padding:32px 24px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  display:flex;flex-direction:column;align-items:flex-start;gap:16px;margin:auto 0;
}
.account-blocked-icon{
  width:44px;height:44px;min-width:44px;border-radius:var(--r-ctl);
  display:flex;align-items:center;justify-content:center;background:var(--tint);color:var(--accent);
}
.account-blocked-title{font-size:22px;line-height:1.2;text-wrap:balance;overflow-wrap:anywhere;}
.account-blocked-copy,.account-blocked-server{
  margin:0;color:var(--muted);font-size:14px;line-height:1.55;overflow-wrap:anywhere;word-break:break-word;
}
.account-blocked-reason{
  width:100%;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--tint);
}
.account-blocked-reason-label{display:block;margin-bottom:5px;color:var(--text);font-size:12px;font-weight:700;}
.account-blocked-reason-text{margin:0;color:var(--text);font-size:14px;line-height:1.55;overflow-wrap:anywhere;word-break:break-word;}
.account-blocked-action{width:100%;min-height:var(--tap);}
.miniapp-copy{font-size:13.5px;line-height:1.5;color:var(--muted);}
.miniapp-copy strong{color:var(--text);}
.miniapp-code{text-transform:uppercase;letter-spacing:.08em;text-align:center;font-weight:700;}
.miniapp-open-only{text-align:center;padding:4px 0;}
html.tg-miniapp body{background:var(--feed-bg);overscroll-behavior:none;}
html.tg-miniapp .app{height:var(--tg-viewport-stable-height,100dvh);}
html.tg-miniapp .auth-overlay{
  padding:calc(18px + var(--tg-safe-area-inset-top,0px)) 16px
          calc(18px + var(--tg-safe-area-inset-bottom,0px));
}
html.tg-miniapp .auth-card{max-width:420px;border-radius:20px;}
html.tg-miniapp .side-exit{display:none;}
@media(max-width:760px){
  html.tg-miniapp .top{padding-top:var(--tg-content-safe-area-inset-top,0px);}
  html.tg-miniapp .tabbar{
    padding-bottom:calc(8px + max(env(safe-area-inset-bottom),var(--tg-safe-area-inset-bottom,0px)));
  }
}

/* ── модалка ── */
.modal-overlay{
  position:fixed;inset:0;z-index:300;background:var(--dim);
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.modal-card{
  width:100%;max-width:420px;
  background:var(--panel);border:1px solid var(--border);border-radius:19px;
  padding:18px 20px 20px;box-shadow:var(--shadow-menu);
}
.modal-head{display:flex;align-items:center;gap:8px;margin-bottom:16px;}
.modal-title{flex:1;min-width:0;font-size:15px;font-weight:600;}
.modal-card label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;}
.settings-input{
  width:100%;height:var(--h-main);padding:0 12px;
  background:var(--field);border-radius:var(--r-ctl);font-size:13px;
}
.settings-input.settings-stop{height:140px;padding:10px 12px;resize:vertical;line-height:1.45;}
.settings-input:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.settings-hint{font-size:12px;color:var(--muted);line-height:1.45;margin-top:10px;}
.settings-actions{display:flex;align-items:center;gap:12px;margin-top:16px;}
.settings-save{
  height:var(--h-main);padding:0 16px;border-radius:var(--r-ctl);
  background:var(--accent);color:var(--on-accent);font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;
}
.settings-save:hover{background:var(--accent-hover);}
.settings-status{font-size:13px;color:var(--muted);}
/* Выход — тихая кнопка у правого края ряда: рядом с «Сохранить» её не нажать по инерции. */
.settings-exit{
  margin-left:auto;height:var(--h-main);padding:0 12px;border-radius:var(--r-ctl);
  display:inline-flex;align-items:center;gap:7px;
  color:var(--danger);font-size:13px;font-weight:600;
}
.settings-exit:hover{background:var(--danger-soft);}
.settings-exit svg{color:var(--danger);}

/* ── тосты ── */
/* Слой тостов живёт внутри .screens: при position:fixed он считался от низа
   окна и ложился прямо на поле ввода, а центр брал по всему окну, а не по
   колонке контента. */
.toasts{
  position:absolute;left:50%;bottom:24px;transform:translateX(-50%);
  z-index:320;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;
}
.toast{
  background:#1B2430;color:#fff;font-size:13px;
  padding:10px 14px;border-radius:13px;box-shadow:var(--shadow-menu);
  animation:toast-in 180ms var(--ease);max-width:82vw;
  pointer-events:auto; /* .toasts гасит клики, но код ошибки внутри должен копироваться */
}
@keyframes toast-in{from{transform:translateY(8px);opacity:0;}to{transform:translateY(0);opacity:1;}}

/* ── таб-бар (p23 css:132–150) ── */
.tabbar{
  display:none;background:var(--panel);border-top:1px solid var(--border);
  padding:6px 8px calc(8px + env(safe-area-inset-bottom));
  position:relative;z-index:20;
}
.tab{
  flex:1;height:48px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--muted);font-size:11px;line-height:1;border-radius:15px;
}
.tab:active{background:var(--hover-surface);}
.tab.on{color:var(--accent);}
/* Пока открыт вход, нижняя навигация недоступна и не должна проступать под
   фиксированным слоем при увеличении страницы или полноэкранном снимке. */
body:has(#auth:not([hidden])) .tabbar{visibility:hidden;}

/* ── шторки (p23 css:470–545) ── */
.sheets{position:fixed;inset:0;z-index:200;display:none;}
.sheets.open{display:block;}
.sheet-dim{position:absolute;inset:0;background:var(--dim);z-index:1;}
.sheet{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  max-height:88%;background:var(--panel);
  border-radius:20px 20px 0 0;box-shadow:var(--shadow-sheet);
  display:flex;flex-direction:column;
  animation:sheet-up .22s var(--ease);
}
@keyframes sheet-up{from{transform:translateY(22px);opacity:.6;}to{transform:translateY(0);opacity:1;}}
.grab{width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:8px auto 4px;}
.sheet-h{display:flex;align-items:center;gap:8px;padding:2px 8px 8px 16px;border-bottom:1px solid var(--border);}
.sheet-t{flex:1;min-width:0;font-size:16px;font-weight:600;}
.sheet-body{flex:1;min-height:0;overflow-y:auto;padding:16px 16px calc(30px + env(safe-area-inset-bottom));}
.tap-btn{
  width:var(--tap);height:var(--tap);min-width:var(--tap);border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.tap-btn:active{background:var(--press-surface);color:var(--text);}

/* ══════════════════════════════════════════════════════════════════
   E. ЭТАП 2: список чатов, избранные, кабинет
   (источник: p20.html css:1066–1067, 1353–1465, разметка 1613–1787,
    2950–3427, 4044–4131; мобильные плитки и шторки — p23.html css:705–795)
   ══════════════════════════════════════════════════════════════════ */

/* Кнопки «Новый чат» больше нет: новый чат начинает повторный клик по своему
   пункту меню, стили .newchat вместе с ней и убраны. */

/* ── строки списка ── */
.chat-mode{
  display:inline-flex;align-items:center;height:17px;padding:0 6px;
  border-radius:5px;background:var(--field);color:var(--muted);
  font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0;
}
.chat.on .chat-mode{background:var(--card);color:var(--accent-active);}
.chat-prev-row{display:flex;align-items:center;gap:6px;min-width:0;}
.chat-prev-row .chat-prev{flex:1;min-width:0;}
.chat-name .st-on{color:#E8A33D;flex-shrink:0;}
.list-empty{
  padding:22px 14px;font-size:13px;line-height:1.5;color:var(--muted);text-align:center;
}

/* ── кнопки-квадраты и вторичная кнопка (p20 css:459–464, 748–757) ── */
.hook-btn{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:11px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.hook-btn:hover{background:var(--press-surface);color:var(--text);}
.btn2{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-chip);padding:0 12px;border-radius:999px;
  border:1px solid var(--border);background:var(--card);
  font-size:13px;color:var(--text);white-space:nowrap;
}
.btn2:hover{background:var(--hover-surface);border-color:var(--border-strong);}
.btn2:active{background:var(--press-surface);}
.btn2 svg{color:var(--muted);}
.btn2.on{background:var(--press-surface);border-color:var(--border-strong);}
.btn2:disabled:hover{background:var(--card);border-color:var(--border);}

/* ── рабочая область разделов ── */
.pane-in{max-width:1160px;margin:0 auto;display:flex;flex-direction:column;gap:16px;}

/* ── подтверждение (десктоп) ── */
.confirm-title{font-size:15px;font-weight:600;margin-bottom:8px;}
.confirm-text{font-size:13px;line-height:1.5;color:var(--muted);}
.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}
.confirm-btn{
  height:var(--h-main);padding:0 16px;border-radius:var(--r-ctl);
  font-size:13px;font-weight:600;border:1px solid var(--border);color:var(--text);
  display:inline-flex;align-items:center;justify-content:center;
}
.confirm-btn:hover{background:var(--hover-surface);}
.confirm-btn.danger{background:var(--danger);border-color:var(--danger);color:#fff;}
.confirm-btn.danger:hover{background:#C13B3B;}
/* тот же диалог шторкой на телефоне (p23 «Удалить чат?») */
.sh-q{font-size:14px;line-height:1.5;color:var(--muted);margin-bottom:18px;}
.sh-acts{display:flex;gap:10px;}
.sh-acts .confirm-btn{flex:1;height:var(--tap);}

/* ══════════ ИЗБРАННЫЕ (p20 css:1353–1372) ══════════ */
.fav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(304px,1fr));gap:16px;}
.fav-c{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:16px;display:flex;flex-direction:column;gap:10px;
  transition:box-shadow 170ms var(--ease), border-color 170ms var(--ease);
}
.fav-c.on{border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.fav-src{
  align-self:flex-start;
  font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--accent-active);background:var(--tint);border-radius:999px;padding:2px 8px;
}
.fav-t{
  font-size:14px;font-weight:600;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.fav-x{
  font-size:13px;line-height:1.55;color:var(--muted);white-space:pre-wrap;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;
}
.fav-c.on .fav-x{display:block;-webkit-line-clamp:none;}
.fav-a{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin-top:auto;padding-top:12px;border-top:1px solid var(--border);
}

/* ══════════ КАБИНЕТ (p20 css:1376–1465) ══════════ */
.cab-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.cab-th{font-size:15px;font-weight:600;}
.cab-th span{color:var(--muted);font-weight:400;}
/* Выход из аккаунта — здесь же, рядом с «Настройками»: в боковой панели его не
   находили, а на телефоне панель свёрнута и кнопки не видно совсем. */
.cab-exit{color:var(--danger);}
.cab-exit svg{color:var(--danger);}
.cab-exit:hover{background:var(--danger-soft);border-color:var(--danger);}

.cab-plat{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 0;border-bottom:1px solid var(--border);
}
.cab-plat:last-of-type{border-bottom:0;padding-bottom:0;}
.cab-plat-name{display:flex;align-items:center;gap:8px;min-width:150px;font-size:13px;font-weight:600;}
.cab-plat-bound{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px;color:var(--muted);}
.cab-plat-bound a{color:var(--accent-active);}
.cab-plat-ok{color:var(--ok);display:flex;}
.cab-plat-form{display:flex;align-items:center;gap:8px;flex:1;min-width:220px;}
.cab-plat-form input{
  flex:1;min-width:0;height:var(--h-main);padding:0 12px;
  background:var(--field);border-radius:var(--r-ctl);font-size:13px;
}
.cab-plat-form input:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.cab-plat-acts{margin-left:auto;display:flex;align-items:center;gap:8px;}
.cab-plat-err{
  flex-basis:100%;font-size:13px;line-height:1.45;color:var(--danger);
  background:var(--danger-soft);border-radius:11px;padding:8px 10px;
}
.cab-hint{font-size:13px;line-height:1.5;color:var(--muted);}
.cab-profile{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.cab-profile-ava{width:72px;height:72px;min-width:72px;font-size:24px;box-shadow:0 0 0 3px var(--field);}
.cab-profile-copy{display:flex;flex-direction:column;gap:4px;min-width:180px;flex:1;}
.cab-profile-name{font-size:15px;font-weight:650;}
.cab-profile-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cab-telegram{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.cab-telegram-main{min-width:240px;flex:1;}
.cab-telegram-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:650;}
.cab-telegram-status{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:13px;color:var(--muted);}
.cab-telegram-status::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--quiet);}
.cab-telegram-status.on{color:var(--ok);}
.cab-telegram-status.on::before{background:var(--ok);}
.cab-telegram-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cab-telegram-code-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%;padding-top:14px;border-top:1px solid var(--border);}
.cab-telegram-code{padding:9px 12px;border-radius:var(--r-ctl);background:var(--field);font:650 18px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;color:var(--text);}
.cab-telegram-expiry{font-size:12px;color:var(--quiet);}
.cab-telegram-guide{width:100%;border-top:1px solid var(--border);}
.cab-telegram-guide>summary{display:flex;align-items:center;gap:9px;min-height:46px;padding:3px 2px;color:var(--accent-active);font-size:13px;font-weight:650;cursor:pointer;list-style:none;user-select:none;}
.cab-telegram-guide>summary::-webkit-details-marker{display:none;}
.cab-telegram-guide>summary svg:last-child{margin-left:auto;transition:transform .18s var(--ease);}
.cab-telegram-guide[open]>summary svg:last-child{transform:rotate(180deg);}
.cab-telegram-guide-body{display:grid;gap:9px;padding:2px 0 4px;animation:cabGuideIn .18s var(--ease);}
.cab-telegram-step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border-radius:12px;background:var(--field);}
.cab-telegram-step-n{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-active);font-size:12px;font-weight:750;}
.cab-telegram-step-copy{font-size:13px;line-height:1.45;color:var(--muted);}
.cab-telegram-step-copy strong{display:block;margin-bottom:2px;color:var(--text);font-weight:650;}
@keyframes cabGuideIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(max-width:700px){.cab-telegram-actions{width:100%}.cab-telegram-actions .btn2{flex:1;min-height:44px;justify-content:center}.cab-telegram-code{flex:1;text-align:center}.cab-telegram-code-row .btn2{min-height:44px}.cab-telegram-step{padding:10px}}
@media(prefers-reduced-motion:reduce){.cab-telegram-guide-body{animation:none}.cab-telegram-guide>summary svg:last-child{transition:none}}
.avatar-crop-card{max-width:430px;}
.avatar-crop-title{font-size:16px;font-weight:650;margin-bottom:7px;}
.avatar-crop-hint{font-size:13px;line-height:1.45;color:var(--muted);}
.avatar-crop-stage{
  width:min(320px,72vw);height:min(320px,72vw);margin:18px auto 16px;
  border-radius:50%;overflow:hidden;background:var(--field);touch-action:none;
  cursor:grab;box-shadow:0 0 0 3px var(--field),0 0 0 4px var(--border-strong);
}
.avatar-crop-stage.dragging{cursor:grabbing;}
.avatar-crop-stage:focus-visible{outline:3px solid rgba(51,144,236,.28);outline-offset:6px;}
.avatar-crop-stage canvas{width:100%;height:100%;display:block;pointer-events:none;}
.avatar-crop-zoom{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted);}
.avatar-crop-zoom input{flex:1;min-width:0;accent-color:var(--accent);}
.avatar-crop-actions{align-items:center;flex-wrap:wrap;}
.avatar-crop-actions .avatar-crop-reset{margin-right:auto;}
.confirm-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
.confirm-btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);}

/* ── приветственное окно (22.10.2026; 22.10 поздно вечером — спокойный текстовый список) ── */
.welcome-overlay{
  padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right))
    max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));
  animation:wl-fade 180ms var(--ease) both;
}
.welcome-card{
  position:relative;width:100%;max-width:580px;max-height:calc(100dvh - 32px);
  display:flex;flex-direction:column;overflow:hidden;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);
  box-shadow:var(--shadow-menu);animation:wl-rise 220ms var(--ease) both;
}
/* Карточка получает фокус программно (tabindex=-1), сама не нажимается:
   рамку фокуса показывают кнопки внутри, у карточки её нет. */
.welcome-card:focus{outline:none;}
.welcome-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:24px 24px 20px;}
/* Крестик стоит поверх прокрутки: свой фон, чтобы текст под ним не просвечивал. */
.welcome-x{position:absolute;top:10px;right:10px;z-index:1;width:var(--tap);height:var(--tap);border-radius:12px;
  display:inline-flex;align-items:center;justify-content:center;color:var(--muted);background:var(--panel);
  transition:background-color 150ms var(--ease),color 150ms var(--ease);}
.welcome-x:hover{background:var(--hover-surface);color:var(--text);}
.welcome-x:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.welcome-title{font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.01em;margin:0 44px 6px 0;color:var(--text);text-wrap:balance;}
.welcome-sub{font-size:15px;line-height:1.5;color:var(--muted);margin:0 0 8px;text-wrap:pretty;}
/* Четыре пункта списком: слева номер цветом приглушённого текста, справа
   название и пара строк. Между пунктами тонкая линия, без карточек и цвета. */
.welcome-steps{list-style:none;margin:0;padding:0;}
.welcome-step{display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:12px;align-items:baseline;padding:16px 0;}
.welcome-step + .welcome-step{border-top:1px solid var(--border);}
.welcome-step:last-child{padding-bottom:4px;}
.welcome-num{font-size:26px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted);}
.welcome-txt{min-width:0;}
.welcome-name{font-size:16px;line-height:1.4;font-weight:600;color:var(--text);margin:0 0 4px;}
.welcome-soon{font-size:13px;font-weight:400;color:var(--muted);margin-left:8px;}
.welcome-desc{font-size:14px;line-height:1.55;color:var(--muted);margin:0;text-wrap:pretty;}
.welcome-foot{display:flex;align-items:center;gap:12px;padding:14px 24px 18px;border-top:1px solid var(--border);}
.welcome-hint{flex:1;min-width:0;font-size:12px;line-height:1.45;color:var(--quiet);}
.welcome-foot .confirm-btn{min-width:132px;height:var(--tap);font-size:15px;}
.welcome-hint .ic{display:inline-block;vertical-align:-3px;margin:0 1px;}
.welcome-hint-mob{display:none;}
@media (max-width:760px){.welcome-hint-mob{display:inline;}}
@keyframes wl-fade{from{opacity:0;}to{opacity:1;}}
@keyframes wl-rise{from{opacity:0;transform:translateY(12px) scale(.985);}to{opacity:1;transform:none;}}
/* Телефон и планшет в портрете: окно на всю ширину, круглый крестик,
   короткая подсказка в подвале. */
@media (max-width:760px){
  .welcome-scroll{padding:20px 16px 16px;}
  /* Круглый с обводкой: при прокрутке это плавающая кнопка, а не вырез в рисунке. */
  .welcome-x{top:8px;right:8px;border-radius:50%;box-shadow:0 0 0 1px var(--border),0 2px 8px rgba(0,0,0,.12);}
  /* Под плавающим крестиком текст просвечивает, а не пропадает за сплошным кругом. */
  @supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .welcome-x{background:color-mix(in srgb,var(--panel) 55%,transparent);-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);}
  }
  .welcome-hint-top,.welcome-hint-pc{display:none;}
  .welcome-title{font-size:20px;}
  .welcome-sub{font-size:14px;margin-bottom:4px;}
  .welcome-step{grid-template-columns:28px minmax(0,1fr);column-gap:10px;padding:14px 0;}
  .welcome-num{font-size:22px;}
  .welcome-name{font-size:15px;}
  .welcome-foot{padding:12px 16px 14px;flex-wrap:wrap;}
  .welcome-hint{flex-basis:100%;}
  .welcome-foot .confirm-btn{flex:1;}
}
html.tg-miniapp .welcome-card{max-width:none;max-height:min(90vh,calc(var(--tg-live-height,100dvh) - 24px));
  border-radius:20px 20px 14px 14px;}
@media (prefers-reduced-motion:reduce){.welcome-overlay,.welcome-card{animation:none;}.welcome-x{transition:none;}}
/* До 374 px кнопка ⓘ в шапке съедала название раздела («С…» на 320):
   там её нет, окно открывается из кабинета, и подсказка говорит только про кабинет.
   Крестик там же — меньше, круглый и с обводкой: при прокрутке он явно
   плавающая кнопка, а не дырка в рамке карточки. */
@media (max-width:374px){
  #welcomeBtn{display:none!important;}
  .welcome-hint-top{display:none;}
  .welcome-x{top:6px;right:6px;width:36px;height:36px;border-radius:50%;box-shadow:0 0 0 1px var(--border),0 2px 8px rgba(0,0,0,.12);}
}
/* На телефоне в шапке кабинета только значок, иначе «Выйти» уезжает на вторую строку. */
@media (max-width:480px){
  .cab-help{min-width:var(--tap);min-height:var(--tap);padding:0;justify-content:center;}
  .cab-help .cab-help-txt{display:none;}
}

.cab-bar{display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
.cab-sum{display:flex;gap:28px;flex-wrap:wrap;}
.cab-s-v{font-size:22px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums;}
/* прочерк «не измеряли / складывать нельзя» — приглушён и подчёркнут, чтобы
   было видно, что за ним есть объяснение (title) */
.cab-s-v.nd{color:var(--quiet);border-bottom:1px dashed var(--border-strong);display:inline-block;cursor:help;}
.cab-s-k{
  font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin-top:4px;
}
.cab-ctl{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
.cab-ctl-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.cab-ctl-k{font-size:11px;color:var(--quiet);white-space:nowrap;}
.fchip.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.fchip.on .pdot{box-shadow:0 0 0 2px var(--card);}
.pdot{width:8px;height:8px;min-width:8px;border-radius:50%;}
.sortb.on{background:var(--press-surface);border-color:var(--border-strong);font-weight:600;}

.cab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:16px;}
.vcard{
  display:flex;flex-direction:column;gap:10px;
  padding:0;border:0;background:transparent;border-radius:15px;text-align:left;
}
.vcard:active{transform:scale(.985);}
.vthumb{
  position:relative;width:100%;aspect-ratio:9/16;border-radius:15px;background:var(--field);
}
.vthumb-b{position:absolute;inset:0;border-radius:15px;overflow:hidden;}
.vthumb-i{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.vthumb-i:not([src]),.vthumb-i.bad{display:none;}
.vph{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;
  color:var(--quiet);background:var(--field);
}
.vph-t{font-size:11px;font-weight:600;color:var(--quiet);}
.vshade{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(16,22,30,.30);opacity:0;transition:opacity 170ms var(--ease);
}
.vplay{
  width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.94);color:#10161E;
  display:flex;align-items:center;justify-content:center;
  transform:scale(.88);transition:transform 170ms var(--ease);
}
.vcard:hover .vshade,.vcard:focus-visible .vshade{opacity:1;}
.vcard:hover .vplay,.vcard:focus-visible .vplay{transform:scale(1);}
.vbadge{
  position:absolute;left:8px;top:8px;
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:11px;font-weight:700;line-height:1;
  box-shadow:0 1px 5px rgba(16,22,30,.35);
}
.vt{
  font-size:13px;font-weight:500;line-height:1.35;
  min-height:calc(2 * 1.35em);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.vcard:hover .vt{color:var(--accent-active);}
.vcard.on .vthumb{box-shadow:0 0 0 2px var(--accent);}
.vcard.on .vt{color:var(--accent-active);font-weight:600;}
.vmet{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:-4px;}
.vm{
  display:inline-flex;align-items:center;gap:5px;
  font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;
}
.vm svg{color:var(--quiet);}
.vm.nd{font-variant-numeric:normal;color:var(--quiet);font-size:11px;border-bottom:1px dashed var(--border-strong);}
.vsub{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--quiet);margin-top:-2px;}
.vidx{font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;}
.vidx.good{color:var(--ok);}
.vidx.low{color:var(--quiet);}
.news-dot{width:3px;height:3px;border-radius:50%;background:var(--quiet);opacity:.7;}

/* инспектор кабинета */
.vbig{
  position:relative;width:172px;margin:0 auto;aspect-ratio:9/16;
  border-radius:15px;background:var(--field);
}
.vbig-t{font-size:15px;font-weight:600;line-height:1.35;margin-bottom:6px;}
.par{display:flex;align-items:baseline;gap:10px;padding:6px 0;font-size:13px;}
.par-k{color:var(--muted);}
.par-v{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums;}
.par-v.none{font-weight:400;color:var(--quiet);}
.src-m{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);}
.insp-note{
  display:flex;gap:8px;align-items:flex-start;
  font-size:13px;line-height:1.45;color:var(--quiet);
}
.insp-note svg{color:var(--quiet);margin-top:1px;}
.sec-btn{
  width:100%;height:var(--h-main);border-radius:var(--r-ctl);
  border:1px solid var(--border);color:var(--text);
  display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:600;
}
.sec-btn:hover{background:var(--hover-surface);}
.sec-btn svg{color:var(--muted);}

/* ── детали под сценарий и пруфы в правой панели ──
   Всё, что раньше висело в карточке новости и под сценарием, живёт здесь. */
.idet{display:flex;flex-direction:column;gap:8px;}
.idet-row{
  display:flex;gap:8px;align-items:flex-start;
  padding:10px;border:1px solid var(--border);border-radius:13px;background:var(--card);
}
.idet-t{flex:1;min-width:0;font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.idet-add{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:11px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.idet-add:hover{background:var(--press-surface);color:var(--accent-active);}
.idet-add.ok{color:var(--ok);}
.idet-msg{font-size:13px;line-height:1.5;color:var(--quiet);}
/* «Оценка новости» — строка с итогом, разбор по критериям раскрывается по клику */
.insp-fold{
  width:100%;display:flex;align-items:center;gap:8px;
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;
}
.insp-fold:hover{color:var(--text);}
.insp-fold-t{flex:1;min-width:0;text-align:left;}
.insp-fold-v{font-size:13px;letter-spacing:0;color:var(--ok);}
.insp-fold-chev{transition:transform 150ms var(--ease);}
.insp-fold.open .insp-fold-chev{transform:rotate(180deg);}
.insp-fold-body{margin-top:12px;}

/* шторка «Ролик» (p23 css:768–795) */
.rbig{
  width:150px;aspect-ratio:9/16;margin:0 auto 14px;
  position:relative;border-radius:18px;background:var(--field);overflow:hidden;
}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-top:11px;}
.stat{display:flex;flex-direction:column;gap:2px;}
.stat-k{font-size:12px;color:var(--quiet);}
.stat-v{font-size:15.5px;font-weight:600;font-variant-numeric:tabular-nums;}
.stat-v.none{color:var(--quiet);font-weight:500;font-variant-numeric:normal;}

/* ══════════════════════════════════════════════════════════════════
   F. ЭТАП 3: КОНСТРУКТОР — экран режимов, лента, новость, хуки,
   две колонки, пруфы, концовки, похожий вариант.
   (источник: p20.html css:342–500 и разметка 1917–2170;
    мобильный вид — p23.html css:373–384 и разметка 1220–1380)
   ══════════════════════════════════════════════════════════════════ */

/* ── экран выбора режима ── */
.hero{max-width:640px;margin:0 auto;padding:48px 0 24px;text-align:center;width:100%;}
/* Пустой конструктор: приветствие по центру свободного места, а не прижато к верху —
   иначе на высоком экране между ним и полем ввода зияет пустота. `safe center` —
   без него, как только .hero вырастает выше .feed (список поводов «Как мои
   примеры», ФИЧА 1 08.08.2026), обычный `center` центрирует ПЕРЕПОЛНЕННЫЙ
   контейнер и обрезает его сверху и снизу поровну, а докрутить до обрезанного
   верха нельзя — scrollTop уже 0. `safe` откатывает к выравниванию от начала,
   как только контент не помещается, поэтому верхняя карточка остаётся целой
   и доступной прокруткой (баг найден 08.08.2026 живым прогоном). */
.feed:has(> .hero:only-child){display:flex;flex-direction:column;justify-content:safe center;}
/* Подсказка с тематикой человека — прямо над строкой ввода: там, где он и так
   собирается печатать. Нажал — тематика подставилась и ушла в работу. */
.niche-hint{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;
  margin:0 auto 8px;align-self:center;max-width:100%;
}
.niche-hint-l{font-size:12px;color:var(--quiet);}
.niche-chip{
  display:inline-flex;align-items:center;gap:6px;max-width:100%;
  padding:6px 12px;border:1px solid var(--border);border-radius:999px;
  background:var(--field);color:var(--muted);font:inherit;font-size:13px;cursor:pointer;
}
.niche-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.niche-chip:hover{background:var(--press-surface);border-color:var(--accent);color:var(--text);}
.niche-chip.main{border-color:var(--accent);color:var(--accent-active);font-weight:600;}
/* Молния — по этой нише подборка уже лежит готовой, откроется мгновенно. */
.niche-chip.ready::after{content:"⚡";font-size:11px;opacity:.7;}
.hero h1{font-size:25px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em;}
.hero-sub{font-size:14px;color:var(--muted);margin-bottom:22px;line-height:1.5;}
/* ── две кнопки-инструменты (заменили попап «+» в композере) — главный акцент
   экрана, поэтому крупнее и заметнее обычной .mode-card ── */
.hero-actions{
  display:flex;gap:12px;justify-content:center;text-align:left;margin-bottom:22px;
}
.hero-action{
  display:flex;align-items:center;gap:12px;flex:1 1 260px;max-width:320px;padding:16px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
}
.hero-action:hover{background:var(--tint);border-color:var(--accent);}
.hero-action-ico{
  width:38px;height:38px;min-width:38px;border-radius:13px;
  background:var(--tint);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.hero-action:hover .hero-action-ico{background:var(--card);}
.hero-action-tx{display:flex;flex-direction:column;gap:2px;min-width:0;}
.hero-action-t{font-size:14.5px;font-weight:600;}
.hero-action-d{font-size:12px;color:var(--muted);line-height:1.4;}
.mode-formula{
  display:flex;align-items:center;justify-content:center;gap:10px;
  flex-wrap:wrap;margin-bottom:22px;
}
.mode-formula-label{font-size:13px;color:var(--muted);}
.mode-formula select{
  height:var(--h-main);border-radius:var(--r-ctl);padding:0 10px;
  background:var(--field);font-size:13px;border:1px solid transparent;cursor:pointer;
}
.mode-formula select:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.mode-formula-hint{font-size:13px;color:var(--quiet);}
.modes{display:flex;flex-direction:column;gap:8px;text-align:left;}
.mode-card{
  display:flex;align-items:flex-start;gap:12px;width:100%;padding:16px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
}
.mode-card:hover{background:var(--tint);border-color:var(--accent);}
.mode-ico{
  width:32px;height:32px;min-width:32px;border-radius:12px;
  background:var(--tint);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.mode-card:hover .mode-ico{background:var(--card);}
.mode-nm{font-size:14px;font-weight:600;margin-bottom:2px;display:block;}
.mode-ds{font-size:13px;color:var(--muted);line-height:1.45;display:block;}

/* ── лента ── */
.thread{display:flex;flex-direction:column;gap:18px;width:100%;container-type:inline-size;container-name:thread;}
/* Ширина сообщения задаётся переменной: обычное — 720px, с двумя колонками —
   1160px (класс wide). Дети центруются по ней, поэтому широкий режим не требует
   переставлять узлы (риск 5.4). */
.msg{--msg-w:720px;width:100%;display:flex;flex-direction:column;gap:12px;}
.msg.wide{--msg-w:1160px;}
.msg > *{width:100%;max-width:var(--msg-w);margin-left:auto;margin-right:auto;}
/* Если места мало, «широкое» сообщение шире обычного всего на пару десятков
   пикселей — левые края соседних карточек тогда просто не совпадают. Ниже
   порога равняем его по обычной ширине. */
@container thread (max-width: 900px){ .msg.wide{--msg-w:720px;} }
.row{display:flex;}
.row.me{justify-content:flex-end;}
.bub{
  max-width:76%;padding:10px 14px;border-radius:19px;border-bottom-right-radius:6px;
  font-size:14px;line-height:1.55;background:var(--bubble-user);white-space:pre-wrap;
  overflow-wrap:anywhere;
}
.bub.user-copy-host{position:relative;min-height:42px;padding-right:50px;}
.user-msg-copy{
  position:absolute;top:4px;right:4px;width:34px;height:34px;min-width:34px;
  display:grid;place-items:center;border-radius:50%;color:var(--muted);
}
.user-msg-copy:hover{background:var(--press-surface);color:var(--text);}
.user-msg-copy:active{background:var(--tint);}
.user-msg-copy.ok{color:var(--ok);}
.sys-note{
  font-size:13px;line-height:1.5;color:var(--muted);
  background:var(--field);border-radius:13px;padding:9px 12px;
}
/* Разделитель «Новая тема» в ленте чата — между прежним сценарием и следующей
   темой (askChatIntent «Написать новый сценарий» + restoreConstructorChat). */
.topic-break{
  display:flex;align-items:center;gap:10px;margin:14px 0;
  color:var(--quiet);font-size:12px;white-space:nowrap;
}
.topic-break::before,.topic-break::after{
  content:"";flex:1;height:1px;background:var(--border);
}
.status-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);}
/* Кнопка «Остановить» у любой долгой операции (лента + панель «Доработать») —
   один вид на все места, чтобы не копипастить разметку по пять раз. */
.msg-stop[hidden]{display:none;}
.msg-stop{display:flex;}
.stop-btn{
  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;
  border:1px solid var(--border);border-radius:99px;background:var(--card);
  color:var(--muted);font-size:12px;line-height:1.3;cursor:pointer;
}
.stop-btn:hover{border-color:var(--danger);color:var(--danger);}
.stop-btn svg{color:inherit;}
.dots i{
  display:inline-block;width:4px;height:4px;border-radius:50%;
  background:currentColor;margin-left:3px;animation:blink 1.4s infinite;
}
.dots i:nth-child(2){animation-delay:.18s;}
.dots i:nth-child(3){animation-delay:.36s;}
@keyframes blink{0%,80%,100%{opacity:.25;}40%{opacity:1;}}

/* ── карточка новости ── */
.news{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:16px;display:flex;align-items:flex-start;gap:12px;
}
.news-ico{
  width:32px;height:32px;min-width:32px;border-radius:12px;
  background:var(--tint);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.news-in{flex:1;min-width:0;}
.news-t{font-size:14.5px;font-weight:600;line-height:1.4;margin-bottom:5px;}
.news-t a{color:inherit;text-decoration:none;}
.news-t a:hover{color:var(--accent-active);text-decoration:underline;}
.news-m{
  font-size:12px;color:var(--muted);
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.news-x{font-size:13px;line-height:1.55;color:var(--text);margin-top:10px;}
.kk{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px;}
.kb{
  display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;
  border-radius:999px;background:var(--tint);color:var(--accent-active);
  font-size:11px;font-weight:700;
}
.kb.no{background:var(--field);color:var(--quiet);}
.kb.sum{background:transparent;border:1px solid var(--border-strong);color:var(--muted);}
.fact{display:flex;gap:10px;margin-top:10px;font-size:13px;line-height:1.5;}
.fact-k{
  min-width:108px;padding-top:2px;
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;
}
.fact-v{flex:1;min-width:0;}
.srcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
.srcchip{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-chip);padding:0 10px;border-radius:999px;
  background:var(--field);color:var(--text);font-size:12px;text-decoration:none;
}
.srcchip:hover{background:var(--tint);color:var(--accent-active);}
.srcchip svg{color:var(--muted);}
.srcchip:hover svg{color:var(--accent);}
/* «На чём построено» нужен только там, где правой панели нет: на широкой ширине
   весь разбор и так стоит справа, кнопка в карточке была лишним дублем. */
.news-more{margin-top:12px;display:none;}

/* ── список новостей на выбор (перед запуском конвейера) ── */
.news-pick{display:flex;flex-direction:column;gap:8px;}
/* «Другие новости» — под списком, по центру: это про весь список, а не про
   последнюю карточку, поэтому в ряд карточек кнопку не встраиваем. */
.news-more-row{display:flex;justify-content:center;margin-top:4px;}
.news-more-row .btn2{min-width:200px;justify-content:center;}
.news-pick-h{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin-bottom:2px;
}
/* Подпись «поправил описку в нише»: тише заголовка, но читаемая — человек должен
   заметить, что искали по исправленной формулировке. */
.news-pick-note{font-size:12px;color:var(--quiet);margin-bottom:6px;}
.news-pick-i{
  display:block;width:100%;text-align:left;padding:0;border:0;background:none;
  cursor:pointer;border-radius:var(--r-card);
}
.news-pick-i .news{transition:border-color .15s,background .15s;}
.news-pick-i:hover .news{border-color:var(--accent);background:var(--tint);}
.news-pick-i:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
/* Внутри списка карточка компактнее: десять развёрнутых карточек не прочитать. */
.news-pick-i .news{padding:13px 14px;}
.news-pick-i .news-x{
  margin-top:7px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.news-pick-i .news-more{display:none !important;}
/* Своя кнопка-действие карточки повода («Написать сценарий», ФИЧА 1 08.08.2026) —
   .news-more тут скрыт правилом выше, поэтому отдельный класс с тем же отступом. */
.news-pick-cta{margin-top:12px;}

/* ── 5 хуков ── */
.hooks{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:4px 6px;
}
.hook{
  display:flex;align-items:center;gap:12px;
  padding:8px 8px 8px 12px;border-radius:15px;
  font-size:13px;line-height:1.4;border-bottom:1px solid var(--border);
}
.hook:last-child{border-bottom-color:transparent;}
.hook:hover{background:var(--hover-surface);border-bottom-color:transparent;}
/* хук читается как заголовок ролика — ставим его по центру строки, а не в левый
   край. Чтобы центр был честным, поле номера слева резервирует ровно столько же,
   сколько занимают две кнопки справа. */
.hook-n{
  color:var(--quiet);font-size:12px;font-weight:700;
  min-width:calc(var(--h-icon) * 2 + 4px);
}
.hook-t{flex:1;min-width:0;text-align:center;}
.hook-acts{min-width:calc(var(--h-icon) * 2 + 4px);justify-content:flex-end;}
/* место под кнопки зарезервировано всегда — строка не дёргается при наведении */
.hook-acts{display:flex;gap:4px;opacity:0;pointer-events:none;transition:opacity 150ms var(--ease);}
.hook:hover .hook-acts,.hook:focus-within .hook-acts{opacity:1;pointer-events:auto;}

/* ── колонки сценария ── */
.seg{display:none;gap:4px;background:var(--field);border-radius:13px;padding:3px;}
.seg button{
  flex:1;height:34px;border-radius:11px;font-size:13px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.seg button.on{background:var(--card);color:var(--accent-active);font-weight:600;box-shadow:var(--shadow-card);}
.cols{display:grid;grid-template-columns:1fr;gap:16px;}
.cols.dual{grid-template-columns:1fr 1fr;}
/* нечётная последняя колонка занимала половину строки и оставляла рядом
   пустую ячейку — растягиваем её на всю ширину */
.cols.dual > .col:last-child:nth-child(odd){grid-column:1 / -1;}
.col{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:16px;display:flex;flex-direction:column;min-width:0;
}
.col-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;}
.col-nm{font-size:13px;font-weight:700;color:var(--accent-active);}
.col-dur{margin-left:auto;font-size:13px;color:var(--muted);}
.col-copy{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:11px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
}
.col-copy:hover{background:var(--press-surface);color:var(--text);}
.col-copy.ok{color:var(--ok);}
.col-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-bottom:8px;}
.col-text{
  font-size:14px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;
  border-radius:11px;outline:none;padding:2px;
}
.gpt-native-md{white-space:normal;}
.gpt-native-md h2,.gpt-native-md h3,.gpt-native-md h4,.gpt-native-md h5,.gpt-native-md h6{line-height:1.35;margin:14px 0 6px;}
.gpt-native-md h2:first-child,.gpt-native-md h3:first-child,.gpt-native-md h4:first-child{margin-top:0;}
.gpt-native-md h2{font-size:18px;}.gpt-native-md h3{font-size:16px;}.gpt-native-md h4,.gpt-native-md h5,.gpt-native-md h6{font-size:14px;}
.gpt-native-md p{margin:0 0 10px;}.gpt-native-md p:last-child{margin-bottom:0;}
.gpt-native-md ul,.gpt-native-md ol{margin:6px 0 12px;padding-left:22px;}
.gpt-native-md li{margin:4px 0;}.gpt-native-md code{background:var(--field);padding:2px 5px;border-radius:5px;font-size:.92em;}
.gpt-native-md a{color:var(--accent-active);text-decoration:underline;text-underline-offset:2px;}
.gpt-native-md hr{border:0;border-top:1px solid var(--border);margin:14px 0;}
.gpt-native-md code{overflow-wrap:anywhere;}
.gpt-native-md pre{margin:8px 0 12px;padding:12px;border-radius:11px;background:var(--field);overflow-x:auto;white-space:pre;font-size:13px;line-height:1.5;max-width:100%;scrollbar-width:thin;}
.gpt-native-md pre code{background:none;padding:0;border-radius:0;font-size:inherit;overflow-wrap:normal;}
.gpt-native-md blockquote{margin:8px 0 12px;padding:8px 12px;border-radius:11px;background:var(--field);}
.gpt-native-md blockquote p:last-child{margin-bottom:0;}
.gpt-native-md .md-table-scroll{
  width:100%;max-width:100%;overflow-x:auto;margin:10px 0 16px;padding-bottom:2px;
  scrollbar-width:thin;overscroll-behavior-inline:contain;
}
.gpt-native-md .md-table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:11px;}
.gpt-native-md table{
  width:max-content;min-width:100%;border:1px solid var(--border);border-radius:11px;
  border-spacing:0;border-collapse:separate;font-size:13px;line-height:1.5;background:var(--card);
}
.gpt-native-md th,.gpt-native-md td{
  min-width:152px;max-width:280px;padding:10px 12px;text-align:left;vertical-align:top;
  white-space:normal;overflow-wrap:anywhere;border-right:1px solid var(--border);
  border-bottom:1px solid var(--border);
}
.gpt-native-md th{font-weight:700;background:var(--field);color:var(--text);}
.gpt-native-md th:first-child,.gpt-native-md td:first-child{min-width:48px;}
.gpt-native-md th:last-child,.gpt-native-md td:last-child{border-right:0;}
.gpt-native-md tbody tr:last-child td{border-bottom:0;}
.gpt-native-md .md-align-center{text-align:center;}.gpt-native-md .md-align-right{text-align:right;}
.col-text:focus{box-shadow:0 0 0 2px var(--tint);}
.caret{
  display:inline-block;width:2px;height:1.05em;vertical-align:-2px;
  background:var(--accent);animation:caret-blink 1s step-end infinite;
}
@keyframes caret-blink{50%{opacity:0;}}

/* ── пруфы ── */
.proofs{margin-top:12px;}
.proofs-toggle{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-chip);padding:0 12px;border-radius:999px;
  background:var(--field);color:var(--muted);font-size:13px;
}
.proofs-toggle:hover{background:var(--tint);color:var(--accent-active);}
.proofs-body ol{margin:10px 0 0;padding-left:20px;font-size:13px;line-height:1.6;color:var(--muted);}
.proofs-body a{color:var(--accent-active);}

/* ── концовки ── */
.endings{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);}
.endings-head{
  display:flex;align-items:center;gap:8px;width:100%;
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;
}
.endings-head .chev{margin-left:auto;transition:transform 200ms var(--ease);display:flex;}
.endings-head[aria-expanded="false"] .chev{transform:rotate(-90deg);}
.endings-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;}
.end{border:1px solid var(--border);border-radius:15px;padding:10px 12px;}
.end-k{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--quiet);font-weight:700;margin-bottom:5px;}
.end-t{font-size:13px;line-height:1.5;}
.end-a{display:flex;align-items:center;gap:6px;margin-top:9px;flex-wrap:wrap;}
.endings-status{font-size:13px;color:var(--muted);margin-top:8px;}

/* ── кнопки под колонкой и под ответом ── */
.ans-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
/* Один ряд под сценарием: переключатель версий, «Доработать», «Детали».
   Кнопки в колонке компактнее общих — иначе четвёртая уезжает на вторую строку. */
.col-acts .ans-actions{gap:6px;}
.col-acts .ans-actions .btn2{height:32px;padding:0 9px;font-size:13px;gap:5px;}
.col-acts{
  margin-top:14px;padding-top:12px;border-top:1px solid var(--border);
  display:flex;flex-direction:column;gap:8px;
}
.shorten-wrap{display:inline-flex;align-items:center;gap:2px;}
.shorten-wrap .btn2:first-child{border-top-right-radius:0;border-bottom-right-radius:0;}
.shorten-wrap .btn2:last-child{
  border-top-left-radius:0;border-bottom-left-radius:0;
  padding:0 8px;border-left:0;
}
.err-block{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--danger-soft);border-radius:15px;padding:12px 14px;
  font-size:13px;line-height:1.5;color:var(--danger);
}
.err-block .retry{
  height:var(--h-chip);padding:0 14px;border-radius:999px;
  background:var(--danger);color:#fff;font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;
}
.err-block .retry:hover{background:#C13B3B;}

/* ── инспектор сообщения ── */
.src-card{display:block;width:100%;padding:12px;border-radius:15px;background:var(--feed-bg);border:1px solid var(--border);text-decoration:none;}
.src-card:hover{background:var(--tint);border-color:var(--accent);}
.src-t{font-size:13px;font-weight:600;line-height:1.4;color:var(--accent-active);margin-bottom:6px;}
.crit{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;}
.crit + .crit{border-top:1px solid var(--border);}
.crit-k{color:var(--quiet);font-size:11px;font-weight:700;min-width:22px;}
.crit-t{flex:1;min-width:0;line-height:1.35;}
.crit.no .crit-t{color:var(--muted);}
.crit-mark{color:var(--ok);}
.crit.no .crit-mark{color:var(--quiet);opacity:.5;}
.crit-total{
  display:flex;align-items:center;justify-content:space-between;
  margin-top:10px;padding-top:10px;border-top:1px solid var(--border);
  font-size:13px;color:var(--muted);
}
.crit-score{font-size:13px;font-weight:700;color:var(--ok);}
.tags{display:flex;flex-wrap:wrap;gap:6px;}
.tag{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-chip);padding:0 10px;border-radius:999px;
  background:var(--field);font-size:12px;color:var(--text);text-decoration:none;
}
.tag:hover{background:var(--tint);color:var(--accent-active);}
.tag-muted{color:var(--muted);}
.tag-muted:hover{background:var(--field);color:var(--muted);}
.tag-x{border:0;background:transparent;color:var(--quiet);cursor:pointer;font-size:14px;line-height:1;padding:0;margin:0;display:inline-flex;}
.tag-x:hover{color:var(--danger);}

/* Источники карточками с превью. Сетка авто-заполняется: в узкой правой панели
   встают 2 в ряд, в шторке на телефоне — 2–3, отдельных медиазапросов не нужно. */
.insp-h-n{
  margin-left:6px;padding:1px 6px;border-radius:999px;
  background:var(--field);color:var(--quiet);font-size:11px;font-weight:700;
}
.srcgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;}
.srcx{
  display:block;text-decoration:none;border-radius:12px;overflow:hidden;
  background:var(--field);border:1px solid var(--border);
  transition:border-color .15s ease,background .15s ease;
}
.srcx:hover{border-color:var(--accent);background:var(--tint);}
.srcx-ph{
  position:relative;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;
  background:var(--feed-bg);color:var(--quiet);
}
.srcx-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
/* Пока картинка не загрузилась — под ней иконка формата; загрузилась — она же
   становится фоном, иконку прячем, чтобы не просвечивала сквозь снимок. */
.srcx.has-img .srcx-ph > svg{display:none;}
.srcx.is-video .srcx-ph::after{
  content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;
  transform:translate(-50%,-50%);border-radius:50%;
  background:rgba(0,0,0,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M4 2.5v7l6-3.5z' fill='%23fff'/%3E%3C/svg%3E") no-repeat center;
  box-shadow:0 1px 6px rgba(0,0,0,.35);
}
.srcx-m{padding:6px 8px 7px;display:flex;flex-direction:column;gap:2px;min-width:0;}
.srcx-h{
  font-size:11px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.srcx-k{font-size:10px;color:var(--quiet);}
.srcx:hover .srcx-h{color:var(--accent-active);}
.srcx-hid{display:none;}
.srcx-more{margin-top:8px;width:100%;justify-content:center;}

/* ── режим «Досье по теме»: файл-скрепка под ТЗ, карточки с выбором,
   свёрнутый блок «рядом с темой», липкая панель выбора ── */
.dos-file{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap;}
.dos-file-name{
  display:inline-flex;align-items:center;gap:6px;max-width:100%;
  font-size:12px;color:var(--muted);background:var(--field);border-radius:999px;
  padding:4px 8px 4px 10px;overflow:hidden;
}
.dos-file-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dos-file-name button{display:flex;color:var(--quiet);}
.dos-file-name button:hover{color:var(--danger);}
.dos-stage{display:flex;align-items:center;gap:10px;padding:18px 4px;font-size:14px;color:var(--muted);}
.dos-stage .spin{animation:idspin .9s linear infinite;color:var(--accent);flex:0 0 auto;}
.dos-head{margin-bottom:14px;}
.dos-topic{font-size:15px;font-weight:700;line-height:1.4;overflow-wrap:anywhere;}
.dos-essence{font-size:13px;line-height:1.55;color:var(--muted);margin-top:6px;overflow-wrap:anywhere;}
.dos-sub{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin:14px 0 6px;
}
.dos-sec{margin-bottom:8px;}
.dos-sec-h{font-size:13px;font-weight:700;margin-bottom:2px;}
/* карточки-текст (первоисточники/разборы) — поверх существующего .res, с чекбоксом
   в углу вместо новой сущности карточки */
.res-pickable{padding-right:38px;cursor:pointer;}
.dos-chk{
  position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:8px;
  border:1.5px solid var(--border-strong);display:flex;align-items:center;justify-content:center;
  color:transparent;background:var(--card);flex:0 0 auto;
}
.res-pickable:hover .dos-chk{border-color:var(--accent);}
.res-pickable.picked{background:var(--tint);border-color:var(--border-strong);}
.res-pickable.picked .dos-chk{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
/* карточки-медиа (фото/видео) — по образцу .srcx, с чекбоксом поверх картинки */
.dos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;}
/* Текстовые секции (первоисточники/разборы/посмотреть) — тот же сеточный язык,
   что и медиа-карточки, но с более широкой минимальной шириной под текст:
   минимум 420px не даёт карточке растянуться во всю ширину широкого экрана,
   а auto-fill сам добавляет 2-3 колонку, когда места хватает (07.08.2026:
   жалоба «постоянно мотать до конца» — на широком экране была одна колонка
   по левому краю, а чекбокс уезжал к правому краю окна). */
.dos-grid.dos-grid-text{grid-template-columns:repeat(auto-fill,minmax(420px,1fr));}
.dos-card{
  position:relative;display:block;text-decoration:none;border-radius:12px;overflow:hidden;
  background:var(--field);border:1px solid var(--border);cursor:pointer;
  transition:border-color .15s ease,background .15s ease;
}
.dos-card:hover{border-color:var(--accent);}
.dos-card.picked{border-color:var(--accent);background:var(--tint);}
.dos-ph{
  position:relative;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;
  background:var(--feed-bg);color:var(--quiet);
}
.dos-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.dos-card.has-img .dos-ph > svg{display:none;}
.dos-dur{
  position:absolute;right:6px;bottom:6px;padding:1px 6px;border-radius:6px;
  background:rgba(0,0,0,.65);color:#fff;font-size:11px;font-variant-numeric:tabular-nums;
}
.dos-pick{
  position:absolute;left:6px;top:6px;width:24px;height:24px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;color:transparent;
  background:rgba(20,16,12,.5);border:1.5px solid rgba(255,255,255,.75);
}
.dos-card.picked .dos-pick{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
.dos-m{padding:7px 8px 8px;display:flex;flex-direction:column;gap:2px;min-width:0;}
.dos-mt{
  font-size:12px;font-weight:600;color:var(--text);line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.dos-mk{font-size:11px;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dos-mw{font-size:11px;color:var(--muted);line-height:1.4;margin-top:2px;overflow-wrap:anywhere;}
.dos-empty{font-size:12px;color:var(--quiet);}
/* Живая лента находок во время сбора («Собрать материалы») — растёт по мере
   прихода ev.stage:"found"; карточки без чекбоксов, это предпоказ (index.html
   dosLiveCard/runDossier), строка этапа со спиннером остаётся снизу. */
.dos-run{display:flex;flex-direction:column;}
.dos-live{display:flex;flex-direction:column;}
.dos-live-sec{margin-bottom:4px;}
.dos-live-h{
  display:flex;align-items:center;gap:6px;font-size:11px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--quiet);font-weight:700;margin:10px 0 6px;
}
.dos-live-n{
  font-size:10px;font-weight:700;color:var(--muted);background:var(--field);
  border-radius:8px;padding:1px 6px;letter-spacing:0;text-transform:none;
}
.dos-live-row{cursor:default;}
.dos-live-card{cursor:default;}
/* «рядом с темой» — свёрнуто по умолчанию, каждый пункт с причиной отказа */
.dos-near{margin-top:18px;border-top:1px solid var(--border);padding-top:12px;}
.dos-near > summary{
  cursor:pointer;font-size:12px;font-weight:600;color:var(--muted);
  list-style:none;display:flex;align-items:center;gap:6px;
}
.dos-near > summary::-webkit-details-marker{display:none;}
.dos-near > summary svg{transition:transform .15s ease;}
.dos-near[open] > summary svg{transform:rotate(90deg);}
.dos-near-list{margin-top:10px;display:flex;flex-direction:column;gap:10px;}
.dos-near-it{font-size:12px;line-height:1.5;}
.dos-near-it .res-t{font-size:12px;font-weight:600;}
.dos-near-why{color:var(--quiet);margin-top:2px;}
/* липкая панель выбора — низ шторки/панели, поверх скролла карточек */
/* Липкая панель выбора. Раньше здесь была отрицательная нижняя margin,
   которой хотели «прогрызть» нижний padding контейнера (.drawer-b/.sheet-body)
   насквозь до истинного края — на sticky это не работает так, как для
   обычного потока (margin-box сдвигается, а не offset), и оставляло щель, в
   которой снизу проглядывал следующий элемент. Без вертикальной margin —
   панель прилипает к внутреннему краю паддинга контейнера, ниже остаётся
   просто фон, ничего чужого не видно. Контейнеры разные (.drawer-b и
   мобильный .sheet-body с safe-area), поэтому пиксельно точную компенсацию
   не подбираем — только горизонтальный bleed, он безопасен всегда. */
.dos-bar{
  position:sticky;bottom:0;left:0;right:0;margin:16px -18px 0;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:12px 18px;background:var(--panel);border-top:1px solid var(--border);
}
.dos-bar-n{font-size:13px;font-weight:600;color:var(--text);margin-right:auto;}
@media (max-width:520px){
  .dos-bar{margin:16px -16px 0;}
  .dos-bar-n{width:100%;margin-right:0;order:-1;}
}

/* ══════════════════════════════════════════════════════════════════
   G. ЭТАП 4: инструменты над сценарием (.stools) и раздел «Мастер»
   (.flow степпер p20 + стек шагов .wz2-*).
   Стили Мастера переехали сюда из wizInjectCss() рабочего файла
   (index.html:1855–1969) — механизм инжекта <style> из JS выброшен,
   один источник правды по стилям (план, разд. 2.2 и 6.3).
   ══════════════════════════════════════════════════════════════════ */

/* ── общий блок действий над готовым сценарием ── */
.stools{display:flex;flex-direction:column;gap:8px;}
.stools-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.stools-fav.on{background:var(--tint);border-color:var(--accent);color:var(--accent-active);}
.stools-fav.on svg{color:var(--accent);}
.stools-more{padding:0 10px;}
.stools-status{font-size:13px;line-height:1.45;color:var(--muted);}
.stools-status.err{color:var(--danger);}
.stools-panel{
  background:var(--card);border:1px solid var(--border);border-radius:15px;
  padding:12px;display:flex;flex-direction:column;gap:10px;
}
.stools-panel[hidden]{display:none;}
.stools-q{font-size:13px;line-height:1.5;color:var(--muted);}
.stools-inp{display:flex;gap:8px;align-items:flex-end;}
.stools-inp textarea{
  flex:1;min-width:0;resize:vertical;padding:10px 12px;
  border:1px solid var(--border);border-radius:13px;
  background:var(--field);color:var(--text);font:inherit;font-size:13px;line-height:1.5;
}
.stools-inp textarea:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.stools-mic{
  width:var(--h-main);height:var(--h-main);min-width:var(--h-main);border-radius:13px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);
  border:1px solid var(--border);background:var(--card);
}
.stools-mic:hover{background:var(--hover-surface);color:var(--text);}
.stools-mic.rec{background:var(--danger);border-color:var(--danger);color:#fff;}
.stools-send{align-self:flex-start;}
/* ── «Идёт работа» и «что изменилось» (правки сценария) ──────────────────────
   Раньше правка шла молча: кнопка гасла, статус был одной серой строкой, панель
   закрывалась — автор не понимал, работает ли что-то и где смотреть результат.
   Теперь: крутящийся индикатор со счётчиком секунд, а после — отчёт по каждой
   просьбе и дифф абзацев с кнопкой отката. */
.stools-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.stools-spin{
  width:14px;height:14px;min-width:14px;border-radius:50%;display:inline-block;
  border:2px solid var(--border);border-top-color:var(--accent);
  animation:spin 900ms linear infinite;
}
/* в кнопке фон акцентный — серая крутилка на нём не читается */
.stools-send .stools-spin{border-color:rgba(255,255,255,.4);border-top-color:#fff;}
.stools-timer{font-variant-numeric:tabular-nums;color:var(--muted);}
.stools-hint{font-size:12px;color:var(--muted);}
.stools-asks-live{
  background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px;
  display:flex;flex-direction:column;gap:8px;
}
.stools-asks-live[hidden]{display:none;}
/* Чат правки (EDIT_CHAT_MODE): реплики автора и модели прямо в панели «Доработать».
   Пузыри — заливка-тинт без рамок (не карточка в карточке), лента прокручивается. */
.stools-chat{display:flex;flex-direction:column;gap:8px;}
.stools-chat[hidden]{display:none;}
.stools-chat-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.stools-chat-log{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;}
.stools-msg{
  max-width:88%;min-width:0;padding:8px 12px;border-radius:12px;
  font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);
}
.stools-msg.me{align-self:flex-end;background:var(--tint);}
.stools-msg.bot{align-self:flex-start;background:var(--field);}
.stools-msg-tag{display:block;margin-top:4px;font-size:12px;color:var(--muted);}
.stools-diff{
  background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px;
  display:flex;flex-direction:column;gap:10px;
}
.stools-diff-head{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
}
.stools-asks{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;}
.stools-ask{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.5;}
.stools-ask svg{margin-top:2px;min-width:15px;}
.stools-ask.ok svg{color:var(--ok,#16a34a);}
.stools-ask.no svg{color:var(--danger);}
.stools-ask b{font-weight:600;}
.stools-para{
  font-size:13px;line-height:1.55;padding:7px 10px;border-radius:10px;white-space:pre-wrap;
}
.stools-para.add{background:rgba(22,163,74,.12);border-left:3px solid #16a34a;}
.stools-para.del{background:rgba(220,38,38,.10);border-left:3px solid var(--danger);
  text-decoration:line-through;color:var(--muted);}
/* Пословный дифф похожего абзаца: один блок вместо целиком del+add, чтобы было
   видно ровно какие слова поменялись, а не гадать по двум одинаковым абзацам. */
.stools-para.word{background:var(--field);border-left:3px solid var(--accent);}
/* Неизменённый абзац внутри отчёта «Что изменилось» — виден как часть цельного
   текста, но не отвлекает: без рамки и фона, приглушённый цвет. */
.stools-para.unch{color:var(--muted);padding:7px 10px;}
.w-del{
  text-decoration:line-through;color:var(--muted);background:rgba(220,38,38,.14);
  border-radius:4px;padding:0 2px;
}
.w-add{
  background:rgba(22,163,74,.18);border-radius:4px;padding:0 2px;font-weight:600;
}
.stools-diff-foot{display:flex;gap:8px;flex-wrap:wrap;}
.col.flash{animation:colflash 1.6s ease-out 1;}
@keyframes colflash{0%{box-shadow:0 0 0 3px rgba(37,99,235,.35);}100%{box-shadow:0 0 0 0 rgba(37,99,235,0);}}
.stools-dbox{
  background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px;
  display:flex;flex-direction:column;gap:8px;
}
.stools-dhead{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;
}
.stools-drow{
  display:flex;gap:10px;align-items:flex-start;justify-content:space-between;
  border:1px solid var(--border);border-radius:13px;padding:9px 11px;
}
.stools-dtxt{font-size:13px;line-height:1.5;overflow-wrap:anywhere;min-width:0;}
.stools-dins{flex:0 0 auto;white-space:nowrap;}
.stools-dins.ok{background:var(--tint);border-color:var(--accent);color:var(--accent-active);}
.stools-dhide{align-self:flex-start;}

/* «Я доработал» — правка сразу уходит в обучение формулы, минуя вкладку
   «Тренировка» (p.55+). Сетка та же, что у автопилота (.tr2-ap-grid) —
   на телефоне окна встают друг под друга, а не сжимаются в нечитаемую полоску. */
.stools-learn{
  background:var(--card);border:1px solid var(--border);border-radius:15px;
  padding:12px;display:flex;flex-direction:column;gap:10px;
}
.stools-learn[hidden]{display:none;}
.stools-learn-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media (max-width:640px){.stools-learn-grid{grid-template-columns:1fr;}}
.stools-learn-side{border:1px solid var(--border);border-radius:13px;padding:12px 14px;background:var(--field);}
.stools-learn-side.accent{border-color:var(--accent);}
.stools-learn-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);margin-bottom:6px;}
.stools-learn-side.accent .stools-learn-label{color:var(--accent);}
/* Высота от экрана, а не фиксированная: сценарий на 60 секунд — это ~25 строк,
   в 280 пикселях он превращался в щель на три строки и правился вслепую. */
.stools-learn-text{font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word;
  max-height:min(46vh,460px);min-height:260px;overflow-y:auto;}
.stools-learn-ta{
  width:100%;min-height:260px;max-height:min(46vh,460px);resize:vertical;box-sizing:border-box;
  background:var(--card);border:1px solid var(--border);border-radius:11px;
  padding:10px 12px;color:var(--text);font:inherit;font-size:13px;line-height:1.55;
}
.stools-learn-ta:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent);}
.stools-learn-note{
  width:100%;box-sizing:border-box;background:var(--field);border:1px solid var(--border);border-radius:13px;
  padding:10px 12px;color:var(--text);font:inherit;font-size:13px;
}
.stools-learn-note:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.stools-learn-actions{display:flex;gap:8px;flex-wrap:wrap;}
/* Адресат правки: человек должен видеть до сохранения, что учится бета-формула,
   а не исходная. */
.stools-learn-target{font-size:12px;color:var(--muted);line-height:1.5;
  padding:8px 10px;border:1px solid var(--border);border-radius:11px;background:var(--field);}
.stools-learn-target strong{color:var(--text);font-weight:600;}
.stools-learn-target-s{color:var(--muted);}
/* Шаг подтверждения: формула общая на всех, поэтому перед применением правки
   человек должен увидеть текст правила и явно согласиться — прямо в том же окне. */
.stools-learn-confirm{display:flex;flex-direction:column;gap:10px;}
.stools-learn-confirm[hidden]{display:none;}
.stools-learn-confirm-q{font-size:15px;font-weight:600;}
.stools-learn-confirm-rule{font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word;
  padding:10px 12px;border:1px solid var(--accent);border-radius:11px;background:var(--tint);}
.stools-learn-confirm-warn{font-size:12px;color:var(--muted);line-height:1.5;}
/* Сравнение открывается поверх экрана, а не внутри узкой правой панели: там оба
   окна сжимались в квадратики на три строки и править сценарий было невозможно.
   Заказчик просил видеть весь текст целиком и писать прямо в нём. */
.stools-learn-ov{z-index:340;padding:18px;}
.stools-learn-ov .stools-learn{
  width:min(1240px,96vw);max-height:94vh;overflow-y:auto;padding:18px 20px;
  box-shadow:var(--shadow-menu);
}
.stools-learn-ov .stools-learn-grid{gap:16px;}
.stools-learn-ov .stools-learn-text,
.stools-learn-ov .stools-learn-ta{
  max-height:none;min-height:min(64vh,760px);font-size:14px;line-height:1.6;
}
.stools-learn-ov .stools-learn-ta{resize:none;}
.stools-learn-hd{display:flex;align-items:center;gap:8px;}
.stools-learn-hd .stools-learn-ttl{flex:1;min-width:0;font-size:15px;font-weight:600;}
@media (max-width:640px){
  .stools-learn-ov{padding:8px;}
  .stools-learn-ov .stools-learn-text,
  .stools-learn-ov .stools-learn-ta{min-height:34vh;}
}

/* список действий в нижней шторке (p23 «Сценарий») */
.sh-list{display:flex;flex-direction:column;}
.sh-item{
  display:flex;align-items:center;gap:12px;width:100%;
  min-height:var(--tap);padding:0 4px;font-size:15px;color:var(--text);text-align:left;
}
.sh-item svg{color:var(--quiet);}
.sh-item:hover{background:var(--hover-surface);}
.sh-item.danger{color:var(--danger);}
.sh-sep{height:1px;background:var(--border);margin:6px 0;}

/* ── Мастер: степпер (p20 .flow/.fstep) ── */
.wz-wrap{display:flex;flex-direction:column;gap:14px;width:100%;max-width:1160px;margin:0 auto;}
.wz-head h1{font-size:21px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em;}
.wz-head .sub{font-size:13px;line-height:1.5;color:var(--muted);margin:0;}
.flow{
  display:flex;align-items:center;gap:10px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:8px 10px;
  /* стек шагов длинный — степпер остаётся на виду и служит навигацией */
  position:sticky;top:0;z-index:5;box-shadow:var(--shadow-card);
}
.fsteps{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;}
.fsteps::-webkit-scrollbar{display:none;}
.fstep{
  display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;
  height:var(--h-chip);padding:0 10px;border-radius:999px;
  font-size:13px;color:var(--muted);white-space:nowrap;
}
.fstep:hover:not(:disabled){background:var(--hover-surface);}
.fstep:disabled{opacity:.55;cursor:default;}
.fdot{
  width:20px;height:20px;min-width:20px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--field);color:var(--quiet);font-size:11px;font-weight:700;
}
.fstep.done{color:var(--muted);}
.fstep.done .fdot{background:var(--tint);color:var(--ok);}
.fstep.live{background:var(--tint);color:var(--accent-active);font-weight:600;}
.fstep.live .fdot{background:var(--accent);color:var(--on-accent);}
.fsep{flex:0 0 auto;width:10px;height:1px;background:var(--border-strong);}

/* ── Мастер в ленте Конструктора: степпер и карточки шагов идут прямо в .thread,
      поэтому им нужна та же ширина сообщения (720px) и центровка ── */
/* width:100% обязателен: .thread — flex-колонка, а auto-margin у flex-элемента
   отменяет растягивание, и карточки шагов вставали каждая по своей ширине. */
.thread > .flow,.thread > .wz2-card{width:100%;max-width:720px;margin-left:auto;margin-right:auto;}
/* липкий степпер прилипал на 24px ниже верха ленты (padding-top скроллпорта),
   и в эту щель было видно проезжающий текст карточки */
.thread > .flow{top:-24px;}
.thread > .wz2-card{margin-top:0;}
/* В ленте у степпера всего 720px: без соединительных чёрточек семь подписей и
   кнопка выхода укладываются без горизонтальной прокрутки. */
.thread > .flow .fsep{display:none;}
.thread > .flow .fsteps{gap:1px;}
.wiz-exit{flex:0 0 auto;}

/* ── Мастер: стек карточек-шагов (перенос .wz2-* ) ── */
.wz2-stack{display:flex;flex-direction:column;}
.wz2-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:16px 18px;margin-top:14px;box-shadow:var(--shadow-card);
}
.wz2-step{
  transition:opacity 220ms var(--ease),filter 220ms var(--ease),transform 220ms var(--ease),
             background 150ms,border-color 150ms;
  transform-origin:center bottom;scroll-margin:16px 0;
}
.wz2-entering{opacity:0;filter:blur(10px);transform:scale(.985);}
/* приглушение свёрнутого шага: при .45 + blur 1.3px сводка шла на контрасте
   1.6:1 и читалась как сбой отрисовки, а не как «тихий» превью-текст */
.wz2-dim{opacity:.68;filter:blur(.5px);transform:scale(.995);cursor:pointer;padding:14px 18px;box-shadow:none;}
.wz2-dim .wz2-sum{color:var(--muted);}
.wz2-dim .wz2-body,.wz2-dim .wz2-back{display:none;}
.wz2-dim .wz2-head{margin-bottom:0;}
.wz2-prev{opacity:.82;cursor:pointer;}
.wz2-prev .wz2-back{display:none;}
.wz2-prev .wz2-body{
  max-height:210px;overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(180deg,#000 55%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 55%,transparent 100%);
}
.wz2-dim:hover,.wz2-dim:focus-visible,.wz2-prev:hover,.wz2-prev:focus-visible{
  opacity:1;filter:none;transform:none;background:var(--hover-surface);border-color:var(--accent);
}
.wz2-sum{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--quiet);}
.wz2-open{flex:0 0 auto;font-size:12px;color:var(--accent);opacity:0;transition:opacity 150ms var(--ease);}
.wz2-dim:hover .wz2-open,.wz2-dim:focus-visible .wz2-open,
.wz2-prev:hover .wz2-open,.wz2-prev:focus-visible .wz2-open{opacity:1;}
.wz2-step:not(.wz2-dim):not(.wz2-prev) .wz2-sum,
.wz2-step:not(.wz2-dim):not(.wz2-prev) .wz2-open{display:none;}
.wz2-prev .wz2-sum{display:none;}
.wz2-back{
  flex:0 0 auto;width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);
  border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--muted);
  border:1px solid var(--border);background:var(--card);
}
.wz2-back:hover{background:var(--hover-surface);color:var(--text);}
.wz2-back svg{transform:rotate(90deg);}
.wz2-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.wz2-badge{
  flex:0 0 auto;font-size:11px;font-weight:700;color:var(--accent-active);
  background:var(--tint);border-radius:999px;padding:3px 10px;white-space:nowrap;
}
.wz2-head h3{font-size:15px;font-weight:600;margin:0;}
.wz2-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;align-items:center;}
.wz2-row[hidden]{display:none;}
.wz2-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;flex-wrap:wrap;}
.wz2-input{
  flex:1;min-width:180px;height:var(--h-main);padding:0 14px;
  border:1px solid var(--border);border-radius:999px;
  background:var(--field);color:var(--text);font:inherit;font-size:13px;
}
.wz2-input:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.wz2-btn{
  display:inline-flex;align-items:center;gap:6px;
  height:var(--h-main);padding:0 14px;border-radius:999px;
  border:1px solid var(--border);background:var(--card);
  font-size:13px;color:var(--text);white-space:nowrap;
}
.wz2-btn:hover:not(:disabled){background:var(--hover-surface);border-color:var(--border-strong);}
.wz2-btn:disabled{opacity:.5;cursor:default;}
.wz2-btn svg{color:var(--muted);}
.wz2-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
.wz2-primary svg{color:var(--on-accent);}
.wz2-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);}
.wz2-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px;}
.wz2-chip{
  padding:8px 13px;border:1px solid var(--border);border-radius:999px;background:var(--card);
  color:var(--text);font:inherit;font-size:13px;text-align:left;line-height:1.35;
}
.wz2-chip:hover{background:var(--hover-surface);}
.wz2-chip.sel{background:var(--tint);border-color:var(--accent);color:var(--accent-active);}
.wz2-script{
  width:100%;min-height:170px;resize:vertical;padding:12px;
  border:1px solid var(--border);border-radius:13px;
  background:var(--field);color:var(--text);font:inherit;font-size:14px;line-height:1.6;
  box-sizing:border-box;
}
.wz2-script:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.wz-two{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch;}
.wz-two[hidden]{display:none;}
.wz-col{display:flex;flex-direction:column;gap:8px;min-width:0;}
.wz-col-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;font-weight:700;color:var(--accent-active);}
.wz-col .wz2-actions{margin-top:auto;}
.wz-dur{font-size:12px;font-weight:500;color:var(--muted);}
.wz-two .wz2-script{min-height:220px;overflow-y:hidden;resize:none;}
.wz2-out{
  white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;box-sizing:border-box;
  background:var(--field);border:1px solid var(--border);border-radius:13px;
  padding:12px 14px;margin:6px 0 10px;font-size:13px;line-height:1.6;color:var(--text);
}
.wz2-out:empty{display:none;}
.wz2-status{color:var(--muted);font-size:13px;margin:2px 0 8px;}
.wz2-hint{color:var(--quiet);font-size:13px;margin:0 0 8px;line-height:1.5;}
.wz2-err{color:var(--danger)!important;}
.wz2-facts{display:flex;flex-direction:column;gap:6px;margin:2px 0 10px;}
.wz2-fact{
  display:flex;gap:10px;align-items:flex-start;justify-content:space-between;
  padding:9px 12px;border:1px solid var(--border);border-radius:13px;background:var(--card);
}
.wz2-fact-txt{font-size:13px;line-height:1.5;overflow-wrap:anywhere;min-width:0;}
.wz2-ins{
  flex:0 0 auto;white-space:nowrap;height:var(--h-chip);padding:0 12px;
  border:1px solid var(--accent);border-radius:999px;
  background:var(--tint);color:var(--accent-active);font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;gap:6px;
}
.wz2-ins:hover{background:var(--accent);color:var(--on-accent);}
.wz2-ins.ok{background:var(--accent);color:var(--on-accent);}
.wz2-ends{display:flex;flex-direction:column;gap:8px;margin:2px 0 10px;}
.wz2-end{padding:10px 12px;border:1px solid var(--border);border-radius:13px;background:var(--card);}
.wz2-end-f{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--quiet);font-weight:700;margin-bottom:5px;}
.wz2-end-t{font-size:13px;line-height:1.55;overflow-wrap:anywhere;white-space:pre-wrap;margin-bottom:8px;}
.wz-script-edit{margin:2px 0 10px;}
.wz-final{margin:2px 0 10px;}
.wz-final[hidden]{display:none;}
.wz-final-meta{font-size:13px;color:var(--quiet);margin:0 0 6px;line-height:1.5;}
.wz-final-meta:empty{display:none;}
.wz-final .wz2-actions{justify-content:flex-start;margin-top:0;}
/* плашка кэша (темы/хуки пришли готовыми) */
.wz-cache{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-size:13px;color:var(--muted);background:var(--field);
  border-radius:13px;padding:8px 12px;margin:0 0 10px;
}
.wz-cache[hidden]{display:none;}

/* ══════════════════════════════════════════════════════════════════
   H. ЭТАП 5: раздел «Поиск идей», шторки (помощник ТЗ и рекомендации),
   бегущая строка «Горячее за 48 ч».
   (источник: p20.html css:1066–1250 — .card/.row2/.field/.inp/.cbx/
    .eng, .res, .tick, .drawer, .olist; p23.html css:473–545, разметка
    1471–1620 — мобильный переключатель «ИИ · Каналы · Ролики»)
   ══════════════════════════════════════════════════════════════════ */

/* ── форма поиска ── */
/* «Поиск идей» тоже занимает всю ширину — форма и колонки выдачи используют место,
   а не жмутся в середину с пустыми полями по краям. */
.id-wrap{display:flex;flex-direction:column;gap:16px;width:100%;margin:0;}
/* Шапка и форма — узкой колонкой по центру (результаты ниже по-прежнему во всю
   ширину): в сетке .row2 осталось одно поле ТЗ, и растянутое на весь экран оно
   читалось как полоса, а половина сетки стояла пустой. */
.id-head,.id-form{width:100%;max-width:760px;margin-inline:auto;}
.id-form .row2{grid-template-columns:1fr;}
.id-form .inp textarea{min-height:104px;}
.id-head{display:flex;align-items:flex-start;gap:12px;}
.id-head-t{flex:1;min-width:0;}
.id-head h1{font-size:21px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em;}
.id-head p{font-size:13px;line-height:1.5;color:var(--muted);margin:0;}
/* Две вкладки раздела: «Поиск идей» и «Собрать материалы». Тот же сегмент, что у
   переключателя страниц (.id-pages) — режим меняется прямо на экране, без шторки:
   в маленьком окне справа форму сбора было тесно заполнять. */
.id-mode{display:inline-flex;gap:4px;background:var(--field);border-radius:13px;padding:3px;
  width:fit-content;max-width:100%;margin:0 auto;}
.id-mode button{
  display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 16px;
  border-radius:11px;font-size:13px;color:var(--muted);white-space:nowrap;
}
.id-mode button svg{color:var(--muted);}
.id-mode button.on{background:var(--card);color:var(--accent-active);font-weight:600;box-shadow:var(--shadow-card);}
.id-mode button.on svg{color:var(--accent);}
@media (max-width:520px){
  .id-mode{width:100%;}
  .id-mode button{flex:1;min-width:0;padding:0 8px;justify-content:center;}
  .id-mode button span{overflow:hidden;text-overflow:ellipsis;}
}
/* Окно «Собрать материалы»: форма внутри шторки — те же поля, что были в форме поиска. */
.dos-form .field{margin:0;}
.dos-form .inp textarea{min-height:104px;}
/* переключатель «Стр. 1 / Стр. 2» выдачи новостей — тот же визуальный язык, что
   у мобильного .seg (сегмент на var(--field)), но виден всегда, не только <760px. */
.id-pages{display:inline-flex;gap:4px;background:var(--field);border-radius:13px;padding:3px;
  width:fit-content;max-width:100%;margin:0 auto 4px;}
.id-pages[hidden]{display:none;}
.id-pages button{height:34px;padding:0 18px;border-radius:11px;font-size:13px;color:var(--muted);}
.id-pages button.on{background:var(--card);color:var(--accent-active);font-weight:600;box-shadow:var(--shadow-card);}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.field{display:flex;flex-direction:column;gap:8px;}
.field-l{
  display:flex;align-items:center;gap:8px;
  font-size:12px;font-weight:600;color:var(--muted);
}
.field-l .lnk{margin-left:auto;}
.inp{
  display:flex;align-items:flex-end;gap:8px;
  background:var(--field);border:1px solid transparent;border-radius:var(--r-ctl);
  padding:9px 10px;transition:border-color 120ms var(--ease),background 120ms var(--ease);
}
.inp:focus-within{background:var(--card);border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
/* рамку рисует обёртка — своя у поля была бы второй, прямоугольной внутри */
.inp input:focus-visible,.inp textarea:focus-visible{outline:none;}
.inp input,.inp textarea{
  flex:1;min-width:0;border:0;background:transparent;color:var(--text);
  font:inherit;font-size:13px;line-height:1.5;resize:none;outline:none;
}
.tr-row .inp input{min-height:24px;}
.inp .id-mic{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:11px;
  display:flex;align-items:center;justify-content:center;color:var(--muted);flex:0 0 auto;
}
.inp .id-mic:hover{background:var(--press-surface);color:var(--text);}
.inp .id-mic.rec{background:var(--danger);color:#fff;}
.lnk{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 8px;
  border-radius:11px;font-size:13px;color:var(--accent);
}
.lnk:hover{background:var(--tint);}
.lnk svg{color:var(--accent);}
.id-hint{font-size:12px;line-height:1.45;color:var(--quiet);margin:0;}
.acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cbx{
  display:inline-flex;align-items:center;gap:8px;height:var(--h-chip);padding:0 12px;
  border-radius:999px;font-size:13px;color:var(--muted);
}
.cbx:hover{background:var(--hover-surface);color:var(--text);}
.cbx .bx{
  width:16px;height:16px;border-radius:5px;border:1.5px solid var(--border-strong);
  display:flex;align-items:center;justify-content:center;color:transparent;flex:0 0 auto;
}
.cbx.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.cbx.on .bx{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
/* Галка Gemini — в одном семействе с соседними (тот же рост и радиус), но читается
   «мощнее»: тонкая акцентная рамка и лёгкая заливка выключенной, полная заливка
   включённой. Квадратик-чекбокс тут скрыт совсем: на залитой кнопке он читался как
   «галка висит всегда» и состояние переставало быть понятным — теперь включённость
   видно по самой заливке. */
.cbx.chk-pro .bx{display:none;}
.cbx.chk-pro{
  font-weight:600;color:var(--accent-active);
  background:var(--tint);
  border:1px solid var(--accent);
}
.cbx.chk-pro:hover{background:var(--tint-hover);}
.cbx.chk-pro svg:first-child{color:var(--accent);}
.cbx.chk-pro.on{
  background:var(--accent);
  border-color:var(--accent-active);color:var(--on-accent);
}
.cbx.chk-pro.on svg:first-child{color:var(--on-accent);}

/* ── колонки движков и карточки результата ── */
.tri-secs{display:flex;flex-direction:column;gap:16px;}
.tri-sec{display:flex;flex-direction:column;gap:8px;}
/* На широком экране новости и каналы стоят рядом, а не одно под другим: лента новостей
   длинная, и до Telegram/YouTube приходилось прокручивать её целиком. Слева — новости из
   веба, справа — каналы ниши и ролики. Ниже 1040 колонки стали бы нечитаемо узкими
   (тот же порог, что у .cols.dual), поэтому там остаётся прежний столбик. */
@media (min-width:1041px){
  .tri-secs{
    display:grid;
    grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);
    grid-template-rows:auto auto;
    align-items:start;gap:16px 18px;
  }
  .tri-secs > .tri-sec[data-group="ai"]{grid-column:1;grid-row:1 / span 2;}
  .tri-secs > .tri-sec[data-group="channels"]{grid-column:2;grid-row:1;}
  .tri-secs > .tri-sec[data-group="gemini"]{grid-column:2;grid-row:2;}
  /* Единственная секция занимает всю ширину — иначе половина экрана осталась бы
     пустой. */
  .tri-secs > .tri-sec:only-child{grid-column:1 / -1;grid-row:1;}
}
/* Пять колонок в ряд помещаются только на широком экране: при открытых боковых
   панелях центр ~790 px, и жёсткий repeat(5,1fr) ломает заголовки по буквам.
   auto-fit кладёт лишние колонки на вторую строку вместо того, чтобы сжимать. */
/* Колонки движков — многоколоночный поток, а не grid: карточки разной высоты
   в grid растягивали строку по самой длинной и оставляли под короткими
   пустоту в тысячу пикселей. */
.eng-row{display:block;columns:210px;column-gap:12px;}
.eng-row-2{columns:300px;}
.eng-row-1{columns:1;}
.eng{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);
  padding:12px;display:flex;flex-direction:column;gap:8px;min-width:0;
  break-inside:avoid;margin-bottom:12px;
}
.eng-h{display:flex;align-items:baseline;gap:8px;min-height:18px;}
.eng-n{font-size:13px;font-weight:700;}
.eng-t{margin-left:auto;font-size:11px;color:var(--quiet);font-variant-numeric:tabular-nums;}
.eng-t.err{color:var(--warn);}
.res{
  display:block;padding:9px 10px;border:1px solid transparent;border-radius:13px;
  text-decoration:none;color:inherit;position:relative;cursor:pointer;
}
.res:hover{background:var(--tint);border-color:var(--border-strong);}
.res-t{font-size:13px;font-weight:600;line-height:1.4;margin-bottom:4px;overflow-wrap:anywhere;}
.res-m{font-size:11px;color:var(--quiet);margin-bottom:6px;overflow-wrap:anywhere;}
/* Заголовок и бейдж «кто нашёл» — в одной строке через flex: заголовок берёт всё
   доступное место, бейдж — только своё содержимое. Раньше бейдж был абсолютно
   позиционирован, а заголовок держал фиксированный padding-right под него —
   в узких колонках (3 в ряд) текста оставалось слишком мало, слова рвались по одному. */
.res-head{display:flex;align-items:flex-start;gap:8px;}
.res-head .res-t{flex:1;min-width:0;}
/* Кто нашёл новость — бейджем справа от заголовка (было частью .res-m,
   терялось в общей строке); чуть крупнее .res-m, приглушённый акцентный цвет. */
.res-by{
  flex:0 0 auto;max-width:80px;
  font-size:12px;font-weight:700;color:var(--accent-active);opacity:.82;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.res-d{font-size:13px;line-height:1.5;color:var(--muted);margin-bottom:6px;overflow-wrap:anywhere;}
.res-c{display:flex;flex-wrap:wrap;gap:4px;}
.mini-chip{
  display:inline-flex;align-items:center;gap:4px;max-width:100%;
  font-size:11px;color:var(--muted);background:var(--field);border-radius:999px;padding:2px 8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;
}
a.mini-chip:hover{background:var(--press-surface);color:var(--text);}
/* Только что доехавшая карточка проявляется, а не возникает рывком. Анимация висит
   на новых — уже прочитанные при обновлении потока не трогаются вовсе. */
.res-new{animation:resIn 240ms var(--ease) both;}
@keyframes resIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){.res-new{animation:none;}}
.eng-load{display:flex;align-items:center;gap:8px;padding:2px;font-size:13px;color:var(--muted);}
.eng-load .spin{animation:idspin .9s linear infinite;color:var(--accent);}
@keyframes idspin{to{transform:rotate(360deg);}}
/* скелет строки — показывает, что колонка ещё думает */
.sl{height:9px;border-radius:5px;background:var(--field);animation:idsl 1.3s ease-in-out infinite;}
@keyframes idsl{0%,100%{opacity:1;}50%{opacity:.45;}}
.eng-err{
  display:flex;gap:8px;align-items:flex-start;
  background:#FBF3DE;border-radius:13px;padding:9px 10px;
  font-size:13px;line-height:1.45;color:#7A5B10;
}
:root[data-theme="dark"] .eng-err{background:#2E2712;color:#D9BE72;}
.eng-err svg{color:var(--warn);flex:0 0 auto;margin-top:1px;}
.eng-err button{
  display:inline-flex;align-items:center;gap:5px;margin-top:7px;
  height:26px;padding:0 9px;border-radius:999px;
  background:rgba(0,0,0,.06);font-size:12px;color:inherit;
}
.eng-err button:hover{background:rgba(0,0,0,.12);}
.eng-note{
  font-size:12px;line-height:1.45;color:var(--warn);
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
/* Кнопка «Повторить» внутри заметки — отдельная цель, а не хвост предложения. */
.eng-note button{
  display:inline-flex;align-items:center;gap:5px;height:var(--h-chip);padding:0 10px;
  border-radius:999px;background:var(--field);color:var(--text);font-size:12px;
}
.eng-note button:hover{background:var(--tint);color:var(--accent-active);}
.eng-empty{font-size:13px;color:var(--quiet);}
.eng-blk{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin-top:2px;
}
.eng-ideas{margin:0;padding-left:18px;font-size:13px;line-height:1.55;color:var(--muted);}
.eng-ideas li{margin-bottom:5px;overflow-wrap:anywhere;}
/* Карточки идей кликабельны так же, как новости (открывают предложение начать
   сценарий) — курсор и подсветка hover должны совпадать с .res, а не читаться
   как обычный текст. */
.eng-ideas li.res-pick{cursor:pointer;border-radius:9px;transition:background-color 120ms var(--ease);}
.eng-ideas li.res-pick:hover{background:var(--tint);}


/* ── админ: участники и расход ── */
/* Кабинет админа занимает весь экран, как CRM: это рабочая панель с цифрами и
   лентой на несколько человек, в колонке шириной с чат она читалась как записка. */
.adm-wrap{max-width:none;width:100%;padding:18px 24px 40px;}
.adm-head{display:flex;align-items:center;gap:20px;margin-bottom:16px;}
.adm-head h1{font-size:20px;font-weight:700;margin:0;white-space:nowrap;}
.adm-seg{margin-bottom:0;}
/* Короткие вкладки: раздел админки считывается как одна рабочая панель. */
.adm-tabs{
  display:flex;gap:4px;margin:0;padding:3px;background:var(--field);border-radius:12px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.adm-tabs::-webkit-scrollbar{display:none;}
.adm-tab{
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  min-height:38px;padding:7px 14px;border-radius:9px;cursor:pointer;
  background:transparent;border:1px solid transparent;
  transition:background 140ms var(--ease),border-color 140ms var(--ease),color 140ms var(--ease);
}
.adm-tab-t{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;}
.adm-tab:hover{background:var(--tint);}
.adm-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.adm-tab.on{background:var(--card);border-color:var(--border);box-shadow:var(--shadow-card);}
.adm-tab.on .adm-tab-t{color:var(--accent-active);}
.adm-toolbar{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:0 0 14px;}
.adm-control{display:flex;flex-direction:column;gap:5px;min-width:150px;}
.adm-control.grow{flex:1 1 260px;}
.adm-control>span{font-size:11px;font-weight:600;color:var(--quiet);}
.adm-control select,.adm-control input{
  width:100%;height:40px;padding:0 12px;border:1px solid var(--border);border-radius:10px;
  background:var(--card);color:var(--text);font:inherit;font-size:13px;
}
.adm-control select:focus-visible,.adm-control input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.adm-timezone{margin-left:auto;align-self:center;font-size:12px;color:var(--muted);white-space:nowrap;}
.adm-h2{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
        color:var(--quiet);margin:20px 0 8px;}
.adm-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;}
.adm-tile{
  border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);
  padding:14px 16px;min-width:0;
}
.adm-tile-v{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15;}
.adm-tile-l{font-size:12px;color:var(--muted);margin-top:3px;}
.adm-tile.main{border-color:var(--accent);}
.adm-tile.main .adm-tile-v{color:var(--accent-active);}
.adm-warn{
  grid-column:1/-1;font-size:12px;color:var(--muted);
  border:1px dashed var(--border);border-radius:var(--r-card);padding:9px 12px;
}
.adm-calc{
  margin:10px 0 4px;border:1px solid var(--border);border-radius:var(--r-card);
  background:var(--card);padding:0 14px;
}
.adm-calc summary{padding:11px 0;cursor:pointer;font-size:13px;font-weight:600;color:var(--text);}
.adm-calc-body{padding:0 0 12px;font-size:12px;line-height:1.55;color:var(--muted);}
.adm-calc-body p{margin:0 0 6px;}
.adm-calc-body p:last-child{margin-bottom:0;}
.adm-breakdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:2px 0 12px;}
.adm-break{padding:9px 10px;border-radius:10px;background:var(--field);min-width:0;}
.adm-break-v{display:block;font-size:14px;font-weight:700;overflow-wrap:anywhere;}
.adm-break-l{display:block;margin-top:2px;font-size:11px;color:var(--quiet);}
.adm-source{margin-bottom:10px;}
/* Разбивка по движкам: чем именно считали. Одна строка на движок — доля в общем
   расходе полосой, чтобы «кто съел лимит» читалось без арифметики. */
.adm-engs{
  margin-top:6px;border:1px solid var(--border);border-radius:var(--r-card);
  background:var(--card);padding:12px 14px;
}
.adm-eng{display:flex;align-items:center;gap:10px;font-size:13px;padding:4px 0;flex-wrap:wrap;}
.adm-eng-n{min-width:104px;font-weight:600;}
.adm-eng-t{flex:1 1 120px;height:8px;border-radius:999px;background:var(--press-surface);overflow:hidden;}
.adm-eng-f{display:block;height:100%;background:var(--accent);border-radius:999px;}
.adm-eng-v{min-width:150px;text-align:right;color:var(--muted);font-size:12px;}
.adm-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}
.adm-chip{
  font-size:11px;color:var(--muted);background:var(--field);
  border-radius:999px;padding:2px 9px;white-space:nowrap;
}
.adm-chart{margin-top:6px;}
.adm-bar{display:flex;align-items:center;gap:10px;font-size:12px;padding:3px 0;}
.adm-bar-l{min-width:56px;color:var(--quiet);}
.adm-bar-t{flex:1;height:8px;border-radius:999px;background:var(--press-surface);overflow:hidden;}
.adm-bar-f{display:block;height:100%;background:var(--accent);border-radius:999px;}
.adm-bar-v{min-width:74px;text-align:right;color:var(--muted);}
.adm-list{display:flex;flex-direction:column;gap:8px;}
.adm-load{font-size:13px;color:var(--muted);padding:10px 2px;}
.adm-notify-date-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.adm-notify-date-quick{display:flex;gap:8px;flex-wrap:wrap;}
.adm-notify-date-btn{min-height:44px;}
.adm-notify-date-control{min-width:170px;}
.adm-notify-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.adm-notify-schedule{font-size:13px;color:var(--muted);line-height:1.5;overflow-wrap:anywhere;}
.adm-notify-refresh{min-height:44px;}
.adm-notify-note{margin:12px 0;color:var(--quiet);font-size:12px;line-height:1.5;}
.adm-notify-list{display:flex;flex-direction:column;gap:8px;}
.adm-notify-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(120px,.7fr) minmax(160px,1fr);gap:10px 16px;padding:13px 14px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);min-width:0;}
.adm-notify-person,.adm-notify-state,.adm-notify-meta{min-width:0;}
.adm-notify-name{font-size:14px;font-weight:650;overflow-wrap:anywhere;}
.adm-notify-login,.adm-notify-time{margin-top:3px;color:var(--quiet);font-size:12px;overflow-wrap:anywhere;}
.adm-notify-status{display:inline-flex;align-items:center;min-height:28px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:var(--field);font-size:12px;font-weight:650;}
.adm-notify-status.sent{color:var(--success);}
.adm-notify-status.failed{color:var(--danger);}
.adm-notify-status.pending{color:var(--accent-active);}
.adm-notify-error{margin-top:5px;color:var(--danger);font-size:12px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;}
.adm-row{border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);overflow:hidden;}
.adm-top{
  display:flex;align-items:center;gap:12px;width:100%;
  padding:12px 14px;border:none;background:none;color:inherit;font:inherit;
  text-align:left;cursor:pointer;
}
.adm-top:hover{background:var(--hover-surface);}
.adm-top .ava{width:34px;height:34px;min-width:34px;}
.adm-who{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.adm-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px;}
.adm-badge{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--text);background:var(--tint);border:1px solid var(--border-strong);border-radius:999px;padding:2px 7px;
}
.adm-sub{font-size:12px;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.adm-nums{display:flex;gap:18px;flex:0 0 auto;}
.adm-cell{display:flex;flex-direction:column;align-items:flex-end;}
.adm-v{font-size:14px;font-weight:700;}
.adm-l{font-size:11px;color:var(--quiet);}
.adm-chev{color:var(--quiet);transition:transform 160ms var(--ease);flex:0 0 auto;}
.adm-top.open .adm-chev{transform:rotate(90deg);}
.adm-det{border-top:1px solid var(--border);padding:12px 14px 14px;}
.adm-log{display:flex;flex-direction:column;max-height:420px;overflow-y:auto;}
.adm-item{
  display:grid;grid-template-columns:52px minmax(0,1fr) auto 84px;
  gap:12px;align-items:start;padding:8px 0;font-size:13px;
}
.adm-item + .adm-item{border-top:1px solid var(--border);}
.adm-time{color:var(--quiet);font-size:11px;padding-top:2px;}
.adm-mid{min-width:0;display:flex;flex-direction:column;gap:2px;}
.adm-what{overflow-wrap:anywhere;}
.adm-what2{font-size:12px;color:var(--muted);overflow-wrap:anywhere;}
.adm-spend{display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right;}
.adm-tok{font-size:13px;font-weight:700;}
.adm-act{display:flex;justify-content:flex-end;}
.adm-open{
  font-size:12px;color:var(--accent-active);background:var(--tint);
  border:none;border-radius:999px;padding:4px 12px;cursor:pointer;text-decoration:none;
}
.adm-open:hover{background:var(--press-surface);}
/* Журнал ошибок: код слева моноширинным — его называют в поддержке и сверяют
   со справочником, поэтому он должен читаться как номер, а не как часть фразы. */
.err-row.on{border-color:var(--accent);}
.err-head{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;
  background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:default;}
button.err-head{cursor:pointer;}
button.err-head:hover{background:var(--press-surface);}
.err-code{flex:0 0 auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--accent);
  background:var(--tint);border-radius:8px;padding:3px 8px;white-space:nowrap;}
/* Код ошибки, который можно скопировать кликом (appendErrMsg): пунктирная рамка
   и иконка копирования — иначе люди не понимают, что по коду можно нажать. */
.err-code-cp{cursor:pointer;display:inline-flex;align-items:center;gap:4px;border:1px dashed var(--accent);}
.err-code-cp svg{flex:0 0 auto;}
.err-hint{flex-basis:100%;font-size:12px;color:var(--muted);line-height:1.4;}
/* Кнопка «сообщить» рядом с кодом ошибки (appendErrMsg) — текстовая ссылка,
   не отдельная плашка: код и так привлекает внимание, вторая не нужна. */
.err-report{
  display:inline-flex;align-items:center;flex:0 0 auto;
  background:none;border:none;padding:0;font:inherit;
  font-size:12px;font-weight:600;color:var(--accent);
  text-decoration:underline;text-underline-offset:2px;cursor:pointer;
}
.err-report:hover{color:var(--accent-hover);}
.err-report:disabled{color:var(--muted);text-decoration:none;cursor:default;}
/* Код ошибки в модалке «Сообщить об ошибке» — справочная строка, не элемент управления. */
.err-report-code{font-size:12px;color:var(--muted);margin-bottom:10px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
.err-mid{flex:1;min-width:0;}
.err-msg{font-size:13px;overflow-wrap:anywhere;}
.err-count{flex:0 0 auto;font-size:14px;font-weight:700;}
.err-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px;}
.err-kpis .adm-tile-v{font-size:20px;}
.err-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 14px;}
.err-chip{
  min-height:34px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;
  background:var(--card);color:var(--text);font-size:12px;cursor:pointer;
}
.err-chip:hover{background:var(--tint);}
.err-chip.on{border-color:var(--accent);background:var(--tint);color:var(--accent-active);}
.err-feed{display:flex;flex-direction:column;gap:8px;}
.err-event{padding:11px 13px;}
.err-event-main{
  display:grid;grid-template-columns:minmax(132px,.8fr) minmax(110px,.8fr) minmax(110px,.8fr)
                        auto minmax(220px,2.5fr);
  align-items:start;gap:8px 12px;
}
.err-event-cell{min-width:0;font-size:12px;overflow-wrap:anywhere;}
.err-event-cell.time{font-variant-numeric:tabular-nums;color:var(--muted);}
.err-event-cell.actor{font-weight:600;}
.err-event-cell.section{color:var(--muted);}
.err-event-message{font-size:13px;line-height:1.45;overflow-wrap:anywhere;}
.err-tech{margin-top:8px;border-top:1px solid var(--border-weak);padding-top:7px;}
.err-tech summary{min-height:24px;line-height:24px;cursor:pointer;font-size:11px;color:var(--quiet);}
.err-tech summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px;}
@media(max-width:520px){.err-tech summary{min-height:44px;line-height:44px;}}
.err-tech-body{display:flex;flex-direction:column;gap:5px;margin-top:7px;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--muted);overflow-wrap:anywhere;}
.err-empty{padding:18px 2px;color:var(--muted);font-size:13px;}
/* Плашка «смотрите чужую работу»: без неё чужой чат неотличим от своего, и легко
   решить, что пишешь в собственном окне (писать тут нельзя — поля ввода нет). */
.peek-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:10px 16px;background:var(--tint);border-bottom:1px solid var(--accent);}
.peek-txt{flex:1;min-width:0;font-size:13px;overflow-wrap:anywhere;}
.peek-sub{color:var(--muted);}
/* Ряд действий в раскрытой карточке участника: открыть его работу, написать ему,
   заняться доступом — три вещи, ради которых владелец и открывает эту карточку. */
.adm-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px 4px;}
/* Группа = один сценарий: список действий свёрнут за шапкой, чтобы над чем
   человек работал было видно с одного взгляда, а не построчным разбором. */
.adm-grp{border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.adm-grp + .adm-grp{margin-top:8px;}
.adm-gtop{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:9px 12px;cursor:pointer;
}
.adm-gtop:hover{background:var(--hover-surface);}
.adm-gdot{width:7px;height:7px;min-width:7px;border-radius:999px;background:var(--accent);}
.adm-grp.quiet .adm-gdot{background:var(--quiet);}
.adm-ginfo{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1;}
.adm-gname{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.adm-grp.quiet .adm-gname{color:var(--quiet);font-weight:500;}
/* Тема первого действия — только у сценариев без своего названия: без неё
   несколько «Сценарий без названия» подряд неразличимы. */
.adm-gwhat{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;min-width:0;flex:1;}
.adm-gwhen{font-size:11px;color:var(--quiet);white-space:nowrap;}
.adm-gnums{display:flex;align-items:baseline;gap:6px;flex:0 0 auto;font-size:12px;color:var(--muted);white-space:nowrap;}
.adm-gtok{font-weight:700;color:var(--fg);}
.adm-grp.quiet .adm-gtok{color:var(--quiet);}
.adm-gl{color:var(--quiet);}
.adm-gchev{color:var(--quiet);transition:transform 160ms var(--ease);flex:0 0 auto;}
.adm-gtop.open .adm-gchev{transform:rotate(90deg);}
.adm-gbody{border-top:1px solid var(--border);padding:0 12px;}
.adm-more{align-self:center;margin:8px auto 0;}
/* Админ → Обложки: список прогонов и страница прогона (05.10). */
.adm-cov-sum{font-size:13px;color:var(--muted);margin:0 0 10px;}
a.adm-cov-row{display:grid;grid-template-columns:150px minmax(0,1fr) auto 92px;gap:12px;align-items:center;
  padding:12px 14px;color:var(--text);text-decoration:none;font-size:14px;min-height:44px;}
a.adm-cov-row:hover{background:var(--tint);}
a.adm-cov-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.adm-cov-when{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;}
.adm-cov-user{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.adm-cov-status{font-weight:600;white-space:nowrap;}
.adm-cov-status.st-done{color:var(--ok);}
.adm-cov-status.st-error{color:var(--danger);}
.adm-cov-status.st-abandoned,.adm-cov-status.st-unknown{color:var(--muted);}
.adm-cov-dl{font-size:12.5px;color:var(--muted);text-align:right;white-space:nowrap;}
.adm-cov-dl.on{color:var(--accent-active);font-weight:600;}
.adm-cov-back{display:inline-flex;align-items:center;min-height:44px;color:var(--accent-active);font-weight:600;text-decoration:none;}
.adm-cov-back:hover{text-decoration:underline;}
.adm-cov-title{font-size:20px;line-height:1.3;margin:4px 0 10px;color:var(--text);overflow-wrap:anywhere;}
.adm-cov-meta{display:grid;gap:4px;font-size:14px;color:var(--text);margin:0 0 14px;}
.adm-cov-meta span{color:var(--muted);}
.adm-cov-err{border:1px solid var(--danger);background:var(--danger-soft);border-radius:12px;padding:10px 12px;margin:0 0 14px;
  font-size:14px;color:var(--text);display:grid;gap:4px;overflow-wrap:anywhere;}
.adm-cov-note{font-size:14px;color:var(--muted);margin:0 0 14px;}
.adm-cov-main{display:block;width:100%;max-width:480px;height:auto;border-radius:12px;border:1px solid var(--border);background:var(--tint);margin:0 0 16px;}
.adm-cov-h3{font-size:13px;font-weight:600;color:var(--muted);margin:4px 0 8px;}
.adm-cov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin:0 0 16px;}
.adm-cov-var{position:relative;padding:0;border:2px solid transparent;border-radius:10px;background:var(--tint);cursor:pointer;overflow:hidden;}
.adm-cov-var img{display:block;width:100%;height:auto;}
.adm-cov-var.dl{border-color:var(--accent);}
.adm-cov-var.on{outline:2px solid var(--text);outline-offset:1px;}
.adm-cov-var:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.adm-cov-tag{position:absolute;left:4px;bottom:4px;font-size:11px;font-weight:600;background:var(--card);color:var(--accent-active);padding:1px 6px;border-radius:6px;}
.adm-cov-frames{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;}
.adm-cov-frames img{flex:0 0 auto;height:64px;width:auto;border-radius:6px;border:1px solid var(--border);}
@media(max-width:600px){
  a.adm-cov-row{grid-template-columns:minmax(0,1fr) auto;row-gap:4px;column-gap:10px;padding:10px 12px;}
  .adm-cov-user{text-align:right;}
}
.adm-inactive{display:flex;flex-direction:column;gap:8px;}
.adm-toggle{align-self:flex-start;min-height:38px;margin-top:2px;}
/* Часы суток: 24 столбика фиксированной сетки — ровная шкала важнее плотности,
   иначе «в 9 утра» и «в 9 вечера» на глаз не отличить. */
.adm-hours{margin-top:6px;}
/* Высота колонки задаётся тем же числом, что и высота сетки, а не «100%»:
   процент у вложенной grid-колонки разрешался в высоту СОДЕРЖИМОГО (146px при
   сетке в 78px), и столбики вылезали на 52px вниз — наезжали на подписи часов
   и на заголовок «Кто сколько сжёг». */
.adm-hours{--adm-hh:78px;}
.adm-hgrid{
  display:grid;grid-template-columns:repeat(24,1fr);gap:3px;
  grid-template-rows:var(--adm-hh);height:var(--adm-hh);
}
.adm-hcol{display:grid;grid-template-rows:1fr 12px;gap:4px;min-height:0;}
.adm-hbar{display:block;width:100%;align-self:end;border-radius:3px;
  background:var(--accent);min-height:2px;}
.adm-hcol.empty .adm-hbar{background:var(--press-surface);}
.adm-hl{font-size:10px;color:var(--quiet);line-height:12px;text-align:center;}
/* Переписка участника: широкая карточка со своей прокруткой — переписку читают,
   а не проглядывают, и в узком модальном окне сценарий не помещается. */
.adm-chatcard{width:min(820px,94vw);max-height:86vh;display:flex;flex-direction:column;min-height:0;}
.adm-msgs{overflow-y:auto;display:flex;flex-direction:column;gap:10px;min-height:0;padding-right:2px;}
.adm-msg{border:1px solid var(--border);border-radius:14px;padding:10px 12px;}
.adm-msg.user{background:var(--tint);border-color:transparent;}
.adm-msg-r{font-size:11px;color:var(--quiet);margin-bottom:4px;}
.adm-msg-c{font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere;}
.adm-bg{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 14px;border:1px dashed var(--border);border-radius:var(--r-card);
  font-size:13px;color:var(--muted);
}
.adm-h3{
  font-size:13px;font-weight:600;color:var(--text-primary);margin:16px 0 8px;padding:0 14px;
}
.adm-eng-section{
  border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);
  padding:12px 0;margin:0 14px 10px;
}
.adm-eng-table{
  display:flex;flex-direction:column;gap:0;
}
.adm-eng-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:8px 14px;border-bottom:1px solid var(--border-weak);font-size:13px;
}
.adm-eng-row:last-child{border-bottom:none;}
.adm-eng-name{font-weight:500;flex:0 0 auto;}
.adm-eng-stat{color:var(--muted);flex:1 1 auto;text-align:right;}
.adm-eng-cost{color:var(--quiet);font-size:11px;flex:0 0 auto;}
/* ── вкладка «Аккаунты» в админке: карточки вместо таблицы — на узком экране
   строка переносится флексом, а не уезжает вбок горизонтальным скроллом. ── */
.acc-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px;}
.acc-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
.acc-folder{display:flex;flex-direction:column;gap:8px;min-width:0;}
.acc-folder + .acc-folder{margin-top:14px;}
.acc-folder-head{
  display:flex;align-items:center;gap:8px;min-width:0;padding:0 2px 8px;
  border-bottom:1px solid var(--border);
}
.acc-folder-toggle{
  display:flex;align-items:center;gap:10px;min-width:0;flex:1;
  min-height:42px;padding:7px 8px;border-radius:10px;text-align:left;color:var(--text);
}
.acc-folder-toggle:hover{background:var(--tint);}
.acc-folder-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.acc-folder-icon{color:var(--accent-active);flex:0 0 auto;}
.acc-folder-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.acc-folder-name{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acc-folder-meta{font-size:11px;color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acc-folder-summary{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;}
.acc-folder-chev{color:var(--quiet);transition:transform 160ms var(--ease);flex:0 0 auto;}
.acc-folder-toggle[aria-expanded="true"] .acc-folder-chev{transform:rotate(180deg);}
.acc-folder-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto;}
.acc-folder-action{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0;}
.acc-folder-body{display:flex;flex-direction:column;gap:8px;min-width:0;}
.acc-folder-empty{font-size:13px;color:var(--muted);padding:10px 12px;}
.acc-folder-select{flex:1;min-width:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:13px;outline:none;}
.acc-row{
  border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);
  padding:12px 14px;display:grid;
  /* Минимумы ужаты, чтобы на 1280 кнопка «Настроить» не вылезала за край карточки. */
  grid-template-columns:minmax(150px,1.4fr) minmax(110px,.9fr) minmax(120px,1fr)
                        minmax(140px,1.2fr) minmax(120px,1fr) auto;
  align-items:center;gap:12px 16px;
  transition:background-color 170ms var(--ease),border-color 170ms var(--ease);
}
.acc-row:hover{background:var(--tint);border-color:var(--border-strong);}
.acc-body{display:flex;flex-direction:column;gap:4px;min-width:0;transition:opacity 200ms var(--ease);}
/* Приостановленный аккаунт — содержимое приглушено; кнопка «Настроить» остаётся чёткой. */
.acc-row.suspended .acc-body,.acc-row.suspended .acc-col{opacity:.6;}
.acc-login{font-size:14px;font-weight:600;display:flex;align-items:center;flex-wrap:wrap;gap:6px;}
.acc-created-inline{font-size:11px;font-weight:500;color:var(--quiet);font-variant-numeric:tabular-nums;}
.acc-state{
  display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;
  padding:3px 9px;border-radius:999px;white-space:nowrap;flex:0 0 auto;
}
.acc-state .dot{width:7px;height:7px;min-width:7px;border-radius:999px;background:currentColor;}
.acc-state.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent);}
.acc-state.suspended{color:var(--muted);background:var(--press-surface);}
.acc-state.expired{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);}
.acc-name{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acc-col{display:flex;flex-direction:column;gap:3px;min-width:0;}
.acc-col-l{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);}
.acc-col-v{font-size:12px;color:var(--text);line-height:1.35;overflow-wrap:anywhere;}
.acc-limit-line{display:flex;justify-content:space-between;gap:8px;}
.acc-limit-line span:first-child{color:var(--muted);}
.acc-limit-line strong{font-size:12px;white-space:nowrap;}
.acc-settings{min-height:38px;white-space:nowrap;}
.acc-own{font-size:11px;color:var(--quiet);}
/* Карточка проявляется каскадом только при первом открытии вкладки — задержка
   выставляется инлайн в JS (accFirstRender), дальше рендер идёт без анимации,
   иначе весь список мигал бы после каждого действия. */
.acc-row.acc-in{animation:accIn 160ms var(--ease) both;}
@keyframes accIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
/* Карточка, которую только что изменили (продлили/сохранили/поставили на паузу) —
   разовая мягкая вспышка фона, чтобы было видно, к какой строке относится тост. */
.acc-row.acc-just{animation:accFlash 600ms var(--ease);}
@keyframes accFlash{
  0%{background:color-mix(in srgb,var(--accent) 16%,var(--card));}
  100%{background:var(--card);}
}
/* Переход между «работает»/«на паузе» на только что переключённой карточке —
   у остальных строк непрозрачность просто статична (см. .acc-row.suspended выше). */
.acc-body.acc-dim-in{animation:accDimIn 200ms var(--ease) both;}
.acc-body.acc-bright-in{animation:accBrightIn 200ms var(--ease) both;}
@keyframes accDimIn{from{opacity:1;}to{opacity:.6;}}
@keyframes accBrightIn{from{opacity:.6;}to{opacity:1;}}
@media (prefers-reduced-motion:reduce){
  .acc-row.acc-in{animation:none;opacity:1;transform:none;}
  .acc-row.acc-just{animation:none;}
  .acc-body.acc-dim-in,.acc-body.acc-bright-in{animation:none;}
  .acc-row,.acc-body{transition:none;}
  .acc-folder-chev{transition:none;}
}
.acc-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:0;}
.acc-title-row .adm-h2{margin:0;}
.acc-new{position:relative;width:min(860px,92vw);max-width:860px;max-height:88vh;overflow:auto;margin:0;padding:20px;}
.acc-new-close{position:absolute;top:10px;right:10px;}
.acc-credentials{
  display:block;width:100%;margin:14px 0;padding:14px;border:1px solid var(--border);border-radius:12px;
  background:var(--field);color:var(--text);font:600 14px/1.7 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  white-space:pre-wrap;overflow-wrap:anywhere;
}
.acc-created-at{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:14px 0;padding:12px 14px;border-radius:12px;background:var(--field);
}
.acc-created-at span{font-size:12px;color:var(--quiet);}
.acc-created-at strong{font-size:14px;font-variant-numeric:tabular-nums;color:var(--text);}
.acc-new .row2{grid-template-columns:1fr 1fr;row-gap:20px;}
/* Селект «Срок» занимал только свою ширину внутри .inp и нёс свои же
   border/padding (см. .tr2-run-select) поверх обёртки — справа была пустота,
   а высота не совпадала с соседними полями. Снимаем собственное оформление
   селекта, растягиваем на всю ячейку — .inp остаётся единственной рамкой. */
.acc-new .inp select{
  flex:1;width:100%;background:transparent;border:0;border-radius:0;
  padding:0;color:var(--text);font:inherit;font-size:13px;
}
.acc-new .inp select:focus,.acc-new .inp select:focus-visible{outline:none;box-shadow:none;}
/* Инлайн-валидация полей формы: строка ошибки под полем + подсветка рамки. */
.field-err{font-size:12px;color:var(--danger);}
.inp.bad{border-color:var(--danger);}
/* Футер формы — «Администратор» и кнопка создания разведены по краям, чтобы
   главное действие не оказалось вплотную к галке и не нажималось случайно. */
.acc-new-foot{
  display:flex;align-items:center;flex-wrap:wrap;gap:12px;
  border-top:1px solid var(--border);padding-top:12px;margin-top:14px;
}
.acc-new-foot-l{display:flex;flex-direction:column;gap:4px;}
.acc-new-foot .btn-main{margin-left:auto;}
/* Пара ссылок в шапке поля (Сгенерировать/Скопировать, Все/По умолчанию) —
   .field-l .lnk даёт margin-left:auto каждой ссылке, поэтому пара едет
   в одной обёртке с margin-left:auto только на ней самой. */
.field-l-acts{display:inline-flex;align-items:center;gap:8px;margin-left:auto;}
.field-l-acts .lnk{margin-left:0;}
/* Своих отступов у ленты нет: их задаёт .adm-wrap, иначе поля удваивались. */
.screen[data-screen="admin"] .feed,
.screen[data-screen="accounts"] .feed{padding:0;}
@media (max-width:860px){
  .adm-wrap{padding:18px 14px 32px;}
  .adm-head{align-items:flex-start;flex-direction:column;gap:10px;}
  .adm-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;overflow:visible;}
  .adm-tab{flex:1 1 0;min-height:44px;}
  .adm-top{flex-wrap:wrap;}
  .adm-nums{gap:14px;width:100%;justify-content:flex-start;}
  .adm-cell{align-items:flex-start;}
  /* На телефоне строка ленты складывается в две: время и кнопка уходят вниз,
     чтобы текст «над чем работал» не сжимался до одного слова в строке. */
  .adm-item{grid-template-columns:52px minmax(0,1fr);}
  .adm-spend{grid-column:2;align-items:flex-start;text-align:left;}
  .adm-act{grid-column:2;justify-content:flex-start;}
  /* Шапка группы узкой не помещается в одну строку — переносим на вторую,
     без горизонтального скролла и без обрезки названия сценария. */
  .adm-gtop{flex-wrap:wrap;}
  .adm-ginfo{flex-basis:100%;}
  .adm-gname{white-space:normal;overflow-wrap:anywhere;}
  .adm-gnums{margin-left:17px;}
  .acc-row{grid-template-columns:repeat(2,minmax(0,1fr));}
  .acc-row .acc-body{grid-column:1/-1;}
  .acc-settings{justify-self:end;}
  .err-event-main{grid-template-columns:repeat(2,minmax(0,1fr));}
  .err-event-message{grid-column:1/-1;}
  .adm-notify-row{grid-template-columns:minmax(0,1fr) minmax(140px,.7fr);}
  .adm-notify-meta{grid-column:1/-1;}
  .acc-new .row2{grid-template-columns:1fr;}
  .acc-new-foot{flex-direction:column;align-items:stretch;}
  .acc-new-foot .btn-main{margin-left:0;width:100%;justify-content:center;}
  .acc-folder-head{align-items:flex-start;flex-wrap:wrap;}
  .acc-folder-toggle{flex-basis:100%;}
  .acc-folder-summary{white-space:normal;}
  .acc-folder-actions{margin-left:auto;}
}
@media (max-width:560px){
  .adm-wrap{padding:14px 12px 28px;}
  .adm-head h1{font-size:19px;}
  .adm-tab{min-height:44px;padding:8px;}
  .adm-toolbar{display:grid;grid-template-columns:1fr;margin-bottom:12px;}
  .adm-control,.adm-control.grow{min-width:0;width:100%;}
  .adm-control select,.adm-control input{height:44px;font-size:16px;}
  .adm-timezone{margin-left:0;justify-self:start;}
  .adm-tiles,.acc-kpis,.err-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  .adm-tile{padding:11px 12px;}
  .adm-tile-v{font-size:22px;}
  .adm-breakdown{grid-template-columns:repeat(2,minmax(0,1fr));}
  .adm-calc summary,.adm-toggle,.err-chip,.acc-settings{min-height:44px;}
  .adm-wrap button{min-height:44px;}
  .acc-new .cbx,.acc-new .btn-main,.acc-new .btn2,.acc-new-close{min-height:44px;}
  .acc-folder-toggle,.acc-folder-action{min-height:44px;}
  .acc-new-close{min-width:44px;}
  .adm-top{padding:12px;}
  .adm-nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;}
  .acc-row{grid-template-columns:1fr;padding:12px;}
  .acc-row .acc-body{grid-column:auto;}
  .acc-settings{justify-self:stretch;justify-content:center;width:100%;}
  .err-event-main{grid-template-columns:1fr;}
  .err-event-message{grid-column:auto;}
  .err-chip{min-height:44px;}
  .adm-notify-date-tools{display:grid;grid-template-columns:1fr;}
  .adm-notify-date-quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));}
  .adm-notify-date-btn{min-width:0;padding-left:6px;padding-right:6px;}
  .adm-notify-date-control{min-width:0;width:100%;}
  .adm-notify-head{align-items:stretch;}
  .adm-notify-row{grid-template-columns:1fr;}
  .adm-notify-meta{grid-column:auto;}
}
@media (max-width:340px){
  .adm-tiles,.acc-kpis,.err-kpis,.adm-breakdown{grid-template-columns:1fr;}
  .adm-tab-t{font-size:12px;}
  .adm-tab{padding-left:5px;padding-right:5px;}
}

/* ── шторки (десктоп: справа; телефон: снизу через panel.open) ── */
.drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:250;
  width:400px;max-width:92vw;
  background:var(--panel);border-left:1px solid var(--border);
  box-shadow:var(--shadow-menu);
  display:flex;flex-direction:column;
  transform:translateX(100%);visibility:hidden;
  transition:transform 220ms var(--ease),visibility 220ms var(--ease);
}
.drawer.open{transform:translateX(0);visibility:visible;}
.drawer-top{
  height:56px;min-height:56px;display:flex;align-items:center;gap:8px;
  padding:0 10px 0 18px;border-bottom:1px solid var(--border);
}
.drawer-ttl{flex:1;min-width:0;font-size:13px;font-weight:600;}
.drawer-b{flex:1;min-height:0;padding:16px 18px 24px;overflow:auto;}
.id-backdrop{
  position:fixed;inset:0;z-index:240;background:var(--dim);
  opacity:0;visibility:hidden;transition:opacity 180ms var(--ease),visibility 180ms var(--ease);
}
.id-backdrop.show{opacity:1;visibility:visible;}
.drawer-d{font-size:13px;color:var(--muted);line-height:1.5;margin-bottom:16px;}
.tzh-status{font-size:13px;line-height:1.5;color:var(--muted);margin-bottom:10px;}
.tzh-status.err{color:var(--danger);}
.tzh-out{
  width:100%;min-height:220px;resize:vertical;padding:10px 12px;
  border:1px solid var(--border);border-radius:13px;background:var(--field);
  color:var(--text);font:inherit;font-size:13px;line-height:1.6;
}
.tzh-out:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.tzh-out[hidden]{display:none;}
.tzh-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}
.olist{display:flex;flex-direction:column;gap:16px;}
.oitem{display:flex;gap:12px;width:100%;text-align:left;align-items:flex-start;cursor:pointer;}
.oitem:hover .otitle{color:var(--accent-active);}
.oitem .btn2{margin-top:8px;}
.onum{
  width:22px;height:22px;min-width:22px;border-radius:7px;flex:0 0 auto;
  background:var(--tint);color:var(--accent-active);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;
}
.otitle{font-size:13px;font-weight:600;margin-bottom:4px;line-height:1.4;}
.owhy{font-size:13px;color:var(--muted);line-height:1.5;}
/* display:block — чтобы «Открыть новость» под ней вставала своей строкой, а не в хвост
   ссылки; width:fit-content держит кликабельной только саму подпись источника. */
.osrc{margin-top:4px;font-size:11px;color:var(--muted);opacity:.85;display:block;width:fit-content;}
/* «Открыть новость» в карточке рекомендации — ссылка в виде чипа, без подчёркивания. */
.orec-open{margin-top:8px;text-decoration:none;}

/* ── бегущая строка «Горячее за 48 ч» ── */
#tickerMount{position:relative;}
.tick{
  display:none;align-items:center;gap:12px;
  height:38px;padding:0 6px 0 14px;
  background:var(--panel);border-top:1px solid var(--border);
}
.tick.show{display:flex;}
.tick-l{
  display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;
}
.tick-l svg{color:#E8663D;}
.tick-v{flex:1;min-width:0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent);}
.tick-track{display:flex;width:max-content;animation:tickmove var(--tick-dur,46s) linear infinite;}
/* Пауза по наведению на ВСЮ полосу, а не на бегущую дорожку (в p20 было
   .tick-track:hover): дорожка уезжает из-под курсора, и поймать ссылку, чтобы
   прочитать её до конца, невозможно — наведение на полосу останавливает ленту. */
.tick:hover .tick-track,.tick-track:focus-within{animation-play-state:paused;}
.tick-seq{display:flex;align-items:center;gap:28px;padding-right:28px;}
.tick-i{
  display:inline-flex;align-items:center;gap:8px;font-size:13px;
  white-space:nowrap;color:inherit;text-decoration:none;
}
a.tick-i:hover,button.tick-i:hover{color:var(--accent-active);}
button.tick-i{background:none;border:0;padding:0;font:inherit;cursor:pointer;}
.tick-i .tv{color:var(--muted);font-variant-numeric:tabular-nums;}
/* Кнопка к первоисточнику рядом с новостью: сама строка теперь ведёт в сценарий,
   а прочитать статью всё равно нужно уметь. Раньше это была голая 13px-иконка —
   владелец пожаловался, что мелко и непонятно (07.08), поэтому теперь подложка
   и подпись в языке .mini-chip, а зона нажатия выросла до полноценной кнопки.
   margin-left тянет её к СВОЕЙ новости (иначе визуально прилипает к следующей) —
   значение уменьшено против прежних -20px ровно на добавленный левый padding,
   чтобы итоговый отступ от заголовка остался тем же на глаз. */
.tick-src{
  display:inline-flex;align-items:center;gap:5px;
  height:26px;padding:0 10px 0 3px;margin-left:-13px;
  border-radius:999px;background:var(--field);color:var(--quiet);
  font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;
}
.tick-src:hover{background:var(--press-surface);color:var(--accent-active);}
@keyframes tickmove{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.tick-back{
  display:none;align-items:center;gap:7px;
  position:absolute;right:16px;bottom:10px;z-index:20;
  height:var(--h-chip);padding:0 12px;border-radius:999px;
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-card);
  font-size:13px;color:var(--muted);
}
.tick-back.show{display:inline-flex;}
.tick-back:hover{color:var(--text);border-color:var(--border-strong);}
.tick-back svg{color:#E8663D;}

/* ══════════════════════════════════════════════════════════════════
   I. ЭТАП 6: раздел «Транскрибатор» + конвертер файлов.
   Дизайна на раздел нет ни в p20, ни в p23 (расхождение Р1 плана) —
   вёрстка собрана «по аналогии» из уже перенесённых примитивов:
   шапка как .id-head, карточка .card, чипы действий как .btn2/.chip,
   меню — общий адаптер menu/panel (своего слоя .tr-menu не заводим).
   ══════════════════════════════════════════════════════════════════ */

.tr-wrap{display:flex;flex-direction:column;gap:16px;width:100%;max-width:1160px;margin:0 auto;}
.tr-head h1{font-size:21px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em;}
.tr-head p{font-size:13px;line-height:1.5;color:var(--muted);margin:0;max-width:760px;}

/* сегменты раздела: свои, а не топбарный .seg (тот скрыт до 760px) */
.tr-seg{display:inline-flex;gap:4px;background:var(--field);border-radius:13px;padding:3px;}
.tr-seg button{
  display:inline-flex;align-items:center;justify-content:center;
  height:28px;padding:0 12px;border-radius:11px;
  font-size:13px;color:var(--muted);white-space:nowrap;
}
.tr-seg button.on{background:var(--card);color:var(--accent-active);font-weight:600;box-shadow:var(--shadow-card);}
.tr-seg button:disabled{opacity:.5;}

/* ввод: слева зона файла, справа ссылка и запись голоса */
.tr-inputs{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch;}
.tr-inputs-right{display:flex;flex-direction:column;justify-content:center;gap:10px;min-width:0;}
.tr-drop{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  min-height:148px;padding:20px 16px;text-align:center;cursor:pointer;
  border:1.5px dashed var(--border-strong);border-radius:var(--r-card);
  background:var(--field);color:var(--muted);
  transition:border-color 140ms var(--ease),background 140ms var(--ease);
}
.tr-drop:hover{border-color:var(--accent);background:var(--tint);}
.tr-drop.over{border-color:var(--accent);background:var(--tint);color:var(--accent-active);}
.tr-drop svg{color:var(--accent);}
.tr-drop-main{font-size:13px;font-weight:600;color:var(--text);}
.tr-drop-hint{font-size:12px;line-height:1.45;color:var(--quiet);}
.tr-or{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--quiet);font-weight:700;}
.tr-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.tr-row .inp{flex:1;min-width:180px;align-items:center;}
.tr-rec-dot{
  width:9px;height:9px;border-radius:50%;background:var(--danger);flex:0 0 auto;
  animation:trpulse 1.1s ease-in-out infinite;
}
@keyframes trpulse{0%,100%{opacity:1;}50%{opacity:.25;}}
.btn2.rec{border-color:var(--danger);color:var(--danger);}

/* ход работы */
.tr-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);padding:2px;}
.tr-status[hidden]{display:none;}
.tr-spin{
  width:15px;height:15px;flex:0 0 auto;border-radius:50%;
  border:2px solid var(--border-strong);border-top-color:var(--accent);
  animation:trspin .9s linear infinite;
}
@keyframes trspin{to{transform:rotate(360deg);}}
.tr-err{color:var(--danger);}

/* результат */
.tr-rhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.tr-rtitle{
  display:inline-flex;align-items:center;gap:8px;
  font-size:14px;font-weight:600;color:var(--text);
  height:var(--h-main);padding:0 8px;margin-left:-8px;border-radius:11px;
}
.tr-rtitle:hover{background:var(--hover-surface);}
.tr-rtitle svg{color:var(--muted);}
.tr-rtitle .tr-caret{transition:transform 160ms var(--ease);}
.tr-rtitle[aria-expanded="false"] .tr-caret{transform:rotate(-90deg);}
.tr-collapsed{display:none !important;}
.tr-box{
  white-space:pre-wrap;overflow-wrap:anywhere;
  font-size:13px;line-height:1.65;color:var(--text);
  background:var(--field);border-radius:var(--r-ctl);padding:12px 14px;
  max-height:420px;overflow:auto;
}
.tr-tnote{
  display:flex;align-items:center;gap:8px;margin-bottom:10px;
  font-size:13px;color:var(--muted);
}
.tr-tnote svg{color:var(--accent);}
.tr-util{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.tr-act-label{
  font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--quiet);font-weight:700;margin:18px 0 8px;
}
.tr-acts{display:flex;gap:8px;flex-wrap:wrap;}
.tr-aout{margin-top:18px;padding-top:18px;border-top:1px solid var(--border);}

/* конвертер файлов */
.cv-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.cv-list:empty{display:none;}
.cv-file{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--field);border-radius:var(--r-ctl);padding:10px 12px;
}
.cv-file-info{flex:1;min-width:140px;}
.cv-file-name{font-size:13px;font-weight:600;overflow-wrap:anywhere;}
.cv-file-size{font-size:11px;color:var(--quiet);}
.cv-file-select{
  height:var(--h-chip);border-radius:999px;padding:0 10px;
  border:1px solid var(--border);background:var(--card);color:var(--text);
  font:inherit;font-size:13px;
}
.cv-file-select:disabled{opacity:.5;}
.cv-file-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);min-width:130px;}
.cv-file-remove{
  width:var(--h-icon);height:var(--h-icon);min-width:var(--h-icon);border-radius:11px;
  display:flex;align-items:center;justify-content:center;color:var(--quiet);
}
.cv-file-remove:hover{background:var(--press-surface);color:var(--danger);}
.cv-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}

/* меню-пункт, выключенный по данным (нет таймкодов) */
.menu-item:disabled,.sh-item:disabled{opacity:.45;}
.menu-item:disabled:hover,.sh-item:disabled:hover{background:transparent;}

@media (max-width:760px){
  /* телефон: одна колонка, тап-цели не мельче 44px (п.149) */
  .tr-inputs{grid-template-columns:1fr;}
  .tr-seg button{height:var(--tap);padding:0 14px;font-size:13px;}
  /* поле ссылки занимает всю строку, кнопка уходит под него — иначе на 375px
     в поле видно два слова из плейсхолдера */
  .tr-row .inp{flex:1 0 100%;min-width:0;}
  .tr-row .btn-main,.tr-row .btn2{height:var(--tap);border-radius:999px;flex:1;justify-content:center;}
  .tr-util .btn2,.tr-acts .btn2{height:var(--tap);}
  .tr-rtitle{height:var(--tap);}
  .cv-file{gap:10px;}
  .cv-file-select{height:var(--tap);}
  .cv-file-remove{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .cv-actions .btn-main,.cv-actions .btn2{height:var(--tap);flex:1;justify-content:center;}
  .tr-box{max-height:none;}
}

/* ══════════════════════════════════════════════════════════════════
   J. ЭТАП 7: раздел «Тренировка формулы».
   Перенос .tr2-* из static/index.html:1165–1368, переменные темы
   переведены на токены нового каркаса (--elevated→--card,
   --text-muted→--muted, --text-faint→--quiet, --accent-soft→--tint,
   --hover→--hover-surface, --hover-strong→--field, --shadow-lg→--shadow-menu,
   --accent-ring→rgba(51,144,236,.13), как в .inp:focus-within выше).
   Контейнер раздела — общий [data-body] «.feed.scroll» (тот же, что у
   Мастера/Идей): страница скроллится целиком, .tr2-wrap в неё просто
   укладывается — своего overflow:hidden/height:100% не заводим (в отличие
   от рабочего сайта, где Тренировка сидела в отдельном #scroll без padding).
   Список новостей и поле сценария всё равно ограничены по высоте и
   скроллятся внутри себя, чтобы длинная выдача не разгоняла страницу.
   На ≤900px колонки встают друг под друга.
   ══════════════════════════════════════════════════════════════════ */
/* Без max-width: на широком экране рабочая область упиралась в 1280 px и по краям
   оставались пустые поля, хотя колонка новостей и поле сценария просят места. */
/* Раздел занимает экран целиком: рабочая зона тянется вниз, а не висит куском
   вверху с пустым низом (жалоба «сверху и снизу много пустого»). */
.screen[data-screen="trainer"] .feed{display:flex;flex-direction:column;}
.tr2-wrap{width:100%;margin:0;display:flex;flex-direction:column;gap:14px;flex:1 0 auto;}
.tr2-wrap h1{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0;}
.tr2-cols{display:flex;gap:20px;align-items:stretch;flex:1 1 auto;min-height:0;}
.tr2-col{display:flex;flex-direction:column;gap:12px;min-width:0;}
.tr2-col-left{flex:0 0 340px;}
.tr2-col-right{flex:1 1 auto;min-width:0;}
/* Карточка сценария забирает остаток высоты, поле правки растёт вместе с ней. */
.tr2-card-grow{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;}
.tr2-card-grow .tr2-script-box{flex:1 1 auto;max-height:none;}
@media (max-width:900px){
  .tr2-cols{flex-direction:column;flex:none;}
  .tr2-col-left{flex:none;width:100%;}
  .tr2-card-grow{flex:none;}
  .tr2-card-grow .tr2-script-box{flex:none;}
}
.tr2-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;}
.tr2-card h3{margin:0 0 12px;font-size:15.5px;font-weight:650;}
.tr2-hint{font-size:13px;color:var(--muted);margin:0 0 12px;line-height:1.45;}
.tr2-link-btn{align-self:flex-start;background:none;border:none;padding:4px 0;color:var(--muted);font-size:13px;cursor:pointer;text-align:left;}
.tr2-link-btn:hover{color:var(--accent);}
.tr2-link-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}

/* Верхние контролы прогона/режима — за компактным триггером, открываются кликом */
.tr2-ctl{position:relative;display:inline-block;}
.tr2-ctl-trigger{
  display:inline-flex;align-items:center;gap:6px;background:var(--card);
  border:1px solid var(--border);border-radius:13px;padding:7px 12px;color:var(--muted);
  font-size:13px;cursor:pointer;max-width:340px;
}
.tr2-ctl-trigger:hover{background:var(--hover-surface);color:var(--text);}
.tr2-ctl-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tr2-ctl-trigger svg{width:15px;height:15px;flex-shrink:0;transition:transform .15s var(--ease);}
.tr2-ctl.open .tr2-ctl-trigger svg{transform:rotate(180deg);}
@media (prefers-reduced-motion:reduce){.tr2-ctl-trigger svg{transition:none;}}
.tr2-ctl-menu{
  position:absolute;top:100%;left:0;z-index:60;display:none;flex-direction:column;gap:10px;
  margin-top:6px;background:var(--card);border:1px solid var(--border);border-radius:15px;
  padding:12px;box-shadow:var(--shadow-menu);min-width:280px;max-width:min(320px,86vw);
}
.tr2-ctl.open .tr2-ctl-menu{display:flex;}
.tr2-ctl-row{display:flex;gap:8px;align-items:center;}
.tr2-ctl-row .tr2-run-select{flex:1 1 auto;min-width:0;}
.tr2-run-ico{width:38px;height:38px;flex-shrink:0;}
.tr2-run-ico.danger:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);}
.tr2-run-select{
  background:var(--field);border:1px solid var(--border);border-radius:13px;color:var(--text);
  font-size:13px;font-family:inherit;padding:8px 10px;max-width:100%;
}
.tr2-run-select:focus,.tr2-run-select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.tr2-run-create{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:14px;display:flex;flex-direction:column;}
.tr2-run-create[hidden]{display:none;}
.tr2-slot-switch{display:inline-flex;border:1px solid var(--border);border-radius:13px;overflow:hidden;align-self:flex-start;}
.tr2-slot-btn{border:none;background:transparent;color:var(--muted);font-size:13px;font-weight:600;padding:9px 16px;cursor:pointer;font-family:inherit;transition:background .15s var(--ease),color .15s var(--ease);}
.tr2-slot-btn:hover{background:var(--hover-surface);color:var(--text);}
.tr2-slot-btn.active{background:var(--tint);color:var(--accent-active);}

.tr2-learn-log{display:flex;flex-direction:column;gap:6px;margin-top:12px;}
.tr2-learn-log[hidden]{display:none;}
.tr2-learn-log-item{font-size:13px;color:var(--quiet);border:1px solid var(--border);border-radius:11px;padding:7px 10px;}

.tr2-collapse-head{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;user-select:none;}
.tr2-collapse-head h3{margin:0;}
.tr2-collapse-head.open .tr2-chevron{transform:rotate(180deg);}
.tr2-collapse-body{margin-top:14px;display:flex;flex-direction:column;gap:14px;}
.tr2-collapse-body[hidden]{display:none;}

.tr2-pre{
  background:var(--field);border:1px solid var(--border);border-radius:15px;padding:14px 16px;
  max-height:340px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;
  font-family:inherit;margin:0;
}
.tr2-budget{display:flex;flex-direction:column;gap:5px;}
.tr2-budget-label{font-size:13px;color:var(--quiet);}
.tr2-budget-label.over{color:var(--danger);font-weight:600;}
.tr2-budget-track{height:6px;border-radius:999px;background:var(--field);overflow:hidden;}
.tr2-budget-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .2s var(--ease);}
.tr2-budget-fill.over{background:var(--danger);}

/* Профиль правок автора */
.tr2-prof-status{font-size:13px;color:var(--muted);line-height:1.45;margin-bottom:8px;}
.tr2-prof-status.draft{color:var(--accent);}
.tr2-prof-status.ok{color:var(--ok);}
.tr2-prof-track{height:6px;border-radius:999px;background:var(--field);overflow:hidden;}
.tr2-prof-fill{height:100%;width:0;background:var(--quiet);border-radius:999px;transition:width .2s var(--ease);}
.tr2-prof-fill.draft{background:var(--accent);}
.tr2-prof-fill.ok{background:var(--ok);}
.tr2-prof-toggle{margin-top:10px;}
.tr2-prof-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.tr2-prof-item{border:1px solid var(--border);border-radius:13px;padding:9px 11px;}
.tr2-prof-item-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.tr2-prof-axis{
  font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;
  color:var(--accent-active);background:var(--tint);border-radius:6px;padding:2px 6px;flex-shrink:0;
}
.tr2-prof-item-title{font-size:13px;line-height:1.4;font-weight:550;flex:1;min-width:0;}
.tr2-prof-item-freq{font-size:11px;font-weight:700;color:var(--quiet);flex-shrink:0;}
.tr2-prof-item-ex{font-size:12px;color:var(--quiet);margin-top:3px;line-height:1.4;}
.tr2-prof-item.locked{border-color:var(--accent);background:var(--tint);}
.tr2-prof-lock{font-size:12px;flex-shrink:0;cursor:help;}
.tr2-prof-style{border:1px dashed var(--border);border-radius:13px;padding:9px 11px;margin-top:4px;display:flex;flex-direction:column;gap:4px;}
.tr2-prof-style-title{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);}
.tr2-prof-style-row{font-size:13px;line-height:1.4;color:var(--muted);}
.tr2-prof-meta{font-size:11px;color:var(--quiet);margin-top:10px;}

/* Автопилот */
.tr2-ap-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0 4px;}
.tr2-ap-btn{background:var(--tint);color:var(--accent-active);border:1px solid var(--accent);}
.tr2-ap-btn:hover:not(:disabled){background:var(--accent);color:var(--on-accent);}
.tr2-ap-hint{font-size:12px;color:var(--quiet);}
.tr2-ap-panel{margin:10px 0 14px;}
.tr2-ap-panel[hidden]{display:none;}
.tr2-ap-note{font-size:13px;color:var(--muted);margin-bottom:8px;}
.tr2-ap-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media (max-width:640px){.tr2-ap-grid{grid-template-columns:1fr;}}
.tr2-ap-side{border:1px solid var(--border);border-radius:15px;padding:12px 14px;background:var(--field);}
.tr2-ap-side.accent{border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.tr2-ap-side-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);margin-bottom:6px;}
.tr2-ap-side.accent .tr2-ap-side-label{color:var(--accent);}
.tr2-ap-side-text{font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto;}

.tr2-versions{display:flex;flex-direction:column;gap:8px;}
.tr2-version{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border);border-radius:13px;padding:10px 12px;}
.tr2-version-n{font-size:12px;font-weight:700;color:var(--quiet);flex-shrink:0;margin-top:1px;}
.tr2-version-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.tr2-version-rule{font-size:13px;line-height:1.5;}
.tr2-version-note{font-size:12px;color:var(--quiet);}
.tr2-empty{font-size:13px;color:var(--quiet);}
.tr2-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.tr2-row[hidden]{display:none;}
.tr2-input{
  flex:1;min-width:160px;background:var(--field);border:1px solid var(--border);border-radius:13px;
  padding:12px 14px;color:var(--text);font-size:14.5px;font-family:inherit;
}
.tr2-input::placeholder{color:var(--quiet);}
.tr2-input:focus,.tr2-input:focus-visible{outline:none;border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.tr2-textarea{
  width:100%;min-height:64px;resize:vertical;background:var(--field);border:1px solid var(--border);border-radius:13px;
  padding:12px 14px;color:var(--text);font-size:14px;font-family:inherit;line-height:1.5;
}
.tr2-textarea:focus,.tr2-textarea:focus-visible{outline:none;border-color:var(--accent);background:var(--card);box-shadow:0 0 0 3px rgba(51,144,236,.13);}

.tr2-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;border:none;border-radius:13px;
  background:var(--accent);color:var(--on-accent);font-weight:600;font-size:14px;padding:11px 18px;cursor:pointer;
  white-space:nowrap;transition:filter .15s var(--ease),background .15s var(--ease),opacity .15s var(--ease);font-family:inherit;
}
.tr2-btn:hover:not(:disabled){filter:brightness(1.07);}
.tr2-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.tr2-btn:disabled{opacity:.5;cursor:not-allowed;filter:none;}
.tr2-btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);}
.tr2-btn.ghost:hover:not(:disabled){background:var(--hover-surface);border-color:var(--accent);filter:none;}

.tr2-status{font-size:13px;color:var(--muted);min-height:18px;}
.tr2-status.err{color:var(--danger);}

.tr2-news-list{display:flex;flex-direction:column;gap:10px;margin-top:14px;max-height:520px;overflow-y:auto;padding-right:4px;}
@media (max-width:900px){.tr2-news-list{max-height:none;overflow-y:visible;padding-right:0;}}
.tr2-news-item{border:1.5px solid var(--border);border-radius:15px;padding:2px;cursor:pointer;transition:border-color .15s var(--ease);}
.tr2-news-item:hover{border-color:var(--accent);}
.tr2-news-item.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--tint);}
.tr2-news-item .news{border:none;padding:12px 13px;margin:0;}

.tr2-script-box{
  width:100%;min-height:200px;max-height:50vh;overflow-y:auto;background:var(--field);
  border:1px solid var(--border);border-radius:15px;padding:14px 16px;font-size:14.5px;line-height:1.62;
  white-space:pre-wrap;word-break:break-word;
}
@media (max-width:900px){.tr2-script-box{max-height:none;}}
.tr2-script-box:focus,.tr2-script-box:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.tr2-script-box:empty::before{content:attr(data-placeholder);color:var(--quiet);}
.tr2-dur{font-size:13px;color:var(--quiet);margin-top:8px;}
.tr2-diff-explain{font-size:13px;line-height:1.55;color:var(--muted);background:var(--tint);border-radius:13px;padding:10px 13px;}
.tr2-diff-meta{font-size:12px;color:var(--quiet);}

/* ── Хронометр сценария ─────────────────────────────────────────── */
.chrono-wrap{width:min(1400px,100%);margin:0 auto;display:flex;flex-direction:column;gap:18px;}
.chrono-head h1{font-size:24px;font-weight:650;letter-spacing:-.02em;margin:0 0 6px;}
.chrono-head p{font-size:14px;line-height:1.5;color:var(--muted);margin:0;}
.chrono-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:stretch;min-height:clamp(560px,calc(100vh - 210px),920px);}
.chrono-editor,.chrono-result{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:18px;}
.chrono-editor{display:flex;flex-direction:column;min-height:0;}
.chrono-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.chrono-upload,.chrono-clear{height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:12px;padding:0 13px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;}
.chrono-upload{border:1px solid var(--accent);background:var(--tint);color:var(--accent-active);}
.chrono-upload:hover{background:var(--accent);color:var(--on-accent);}
.chrono-upload:disabled{opacity:.55;cursor:wait;}
.chrono-clear{border:1px solid var(--border);background:transparent;color:var(--muted);}
.chrono-clear:hover{background:var(--press-surface);color:var(--text);}
.chrono-file{min-width:0;flex:1;font-size:12px;color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chrono-text{width:100%;flex:1;min-height:0;resize:vertical;border:1px solid var(--border);border-radius:14px;background:var(--field);color:var(--text);padding:17px;font:inherit;font-size:17px;line-height:1.65;}
.chrono-text::placeholder{color:var(--quiet);}
.chrono-text:focus{outline:none;background:var(--card);border-color:var(--accent);box-shadow:0 0 0 3px rgba(51,144,236,.13);}
.chrono-status{min-height:18px;margin-top:8px;font-size:12px;color:var(--quiet);}
.chrono-status.error{color:var(--danger);}
.chrono-result{display:flex;flex-direction:column;align-items:center;text-align:center;}
.chrono-result-label{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--quiet);}
.chrono-seconds{font-size:42px;line-height:1.05;font-weight:700;letter-spacing:-.04em;color:var(--accent-active);margin-top:18px;}
.chrono-clock{font-size:14px;color:var(--muted);margin-top:5px;}
.chrono-verdict{width:100%;border-radius:12px;background:var(--field);padding:10px 12px;font-size:13px;line-height:1.4;color:var(--muted);margin:18px 0;}
.chrono-verdict.good{background:color-mix(in srgb,var(--ok) 11%,var(--card));color:var(--ok);}
.chrono-verdict.over{background:color-mix(in srgb,var(--danger) 9%,var(--card));color:var(--danger);}
.chrono-speed{width:100%;text-align:left;margin-top:auto;}
.chrono-speed label{display:block;font-size:12px;color:var(--quiet);margin-bottom:6px;}
.chrono-speed select{width:100%;height:40px;border:1px solid var(--border);border-radius:12px;background:var(--field);color:var(--text);padding:0 10px;font:inherit;font-size:13px;}
.chrono-speed .chrono-meta-v{font-size:14px;margin-top:5px;}
.chrono-meta{display:grid;grid-template-columns:1fr 1fr;width:100%;border-top:1px solid var(--border);margin-top:16px;padding-top:15px;}
.chrono-meta-v{display:block;font-size:18px;font-weight:650;color:var(--text);}
.chrono-meta-k{display:block;font-size:11px;color:var(--quiet);margin-top:2px;}
@media (max-width:760px){
  .chrono-grid{grid-template-columns:1fr;min-height:0;}
  .chrono-editor{min-height:400px;}
  .chrono-text{font-size:16px;min-height:280px;}
  .chrono-result{min-height:300px;}
}

/* ══════════════════════════════════════════════════════════════════
   D. АДАПТИВ.  Брейкпойнты: 1280 (нет места инспектору),
   900 (нет места левой панели), 760 (мобильный режим p23 —
   совпадает с isMobile() рабочего файла).
   ══════════════════════════════════════════════════════════════════ */
@media (max-width:1280px){
  .insp{display:none;}
  .insp-call{display:flex;}
  .news-more{display:block;}
  .feed{padding-top:52px;}
}
/* На планшетной ширине плавающая «Памятка» занимает правый верхний угол.
   Оставляем под неё место в плашке чужого клиента, чтобы кнопка возврата
   оставалась видимой и кликабельной. */
@media (min-width:761px) and (max-width:1280px){
  .peek-bar{padding-right:140px;}
}
/* Ниже 1040 две колонки рядом становятся нечитаемо узкими — кладём их одна под
   другой (вкладки включаются только на телефоне, см. 760). */
@media (max-width:1040px){
  .cols.dual{grid-template-columns:1fr;}
}
@media (max-width:900px){
  .side{
    position:fixed;left:0;top:0;bottom:0;z-index:100;
    box-shadow:var(--shadow-menu);
  }
  .side.collapsed{margin-left:0;transform:translateX(-100%);box-shadow:none;}
  .feed,.comp-wrap{padding-left:16px;padding-right:16px;}
}
@media (max-width:760px){
  body{font-size:15px;}
  .top{height:52px;min-height:52px;padding:0 6px 0 8px;}
  .top-title{font-size:17px;}
  .icon-btn,.side-bottom .icon-btn{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .bub.user-copy-host{min-height:48px;padding-right:58px;}
  .user-msg-copy{top:2px;right:2px;width:44px;height:44px;min-width:44px;}
  .top-parallel-open{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .btn-main{min-height:var(--tap);}
  .chrono-upload,.chrono-clear,.chrono-speed select,
  .crm-tab,.crm-search input,.crm-fchip,.crm-send-in,
  .adm-calc>summary,.fav-a .chip,
  .cab-profile-actions .btn2,.cab-exit{min-height:var(--tap);}
  .insp-call{display:none;}
  .feed{padding:16px 16px calc(84px + env(safe-area-inset-bottom));}
  .comp-wrap{padding:8px 12px calc(10px + env(safe-area-inset-bottom));}
  .comp textarea{font-size:16px;}     /* iOS не зумит поле от 16px */
  .tabbar{display:flex;}
  .side{width:min(310px,86vw);min-width:0;}
  .empty{padding:48px 20px;}
  /* плитки в две колонки (p23) */
  .cab-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .fav-grid{grid-template-columns:1fr;}
  .cab-sum{gap:16px 20px;}
  .cab-s-v{font-size:18px;}
  .cab-ctl{margin-left:0;align-items:flex-start;width:100%;}
  .cab-ctl-row{justify-content:flex-start;}
  .cab-plat-acts{margin-left:0;}
  .cab-plat-form{min-width:100%;}
  .vt{font-size:13px;}
  .vmet{gap:10px;}
  .chat{min-height:56px;}
  /* колонки становятся вкладками-сегментом (p23): видна одна за раз */
  .seg{display:flex;}
  .cols.tabbed > .col:not(.on){display:none;}
  .hero{padding-top:24px;}
  .hero-actions{flex-direction:column;}
  .hero-action{flex:none;max-width:none;}
  .hook-acts{opacity:1;pointer-events:auto;}
  .hook-btn{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  /* кнопки крупнее — поле номера слева подтягивается, чтобы хук остался по центру */
  .hook-n,.hook-acts{min-width:calc(var(--tap) * 2 + 4px);}
  .fact{flex-direction:column;gap:2px;}
  .fact-k{min-width:0;}
  .bub{max-width:88%;}
  /* ЭТАП 4: компактный степпер (p23 .sdots) — у пройденных и будущих шагов
     остаётся только точка, подпись видна у текущего. */
  .flow{padding:6px 8px;}
  .fstep:not(.live) .fl{
    width:1px;height:1px;overflow:hidden;position:absolute;
    clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
  }
  .fstep:not(.live){gap:0;padding:0 4px;}
  .fsep{width:6px;}
  .wz-two{grid-template-columns:1fr;}
  .wz2-card{padding:14px;}
  .wz2-actions{justify-content:stretch;}
  .wz2-actions .wz2-btn{flex:1;justify-content:center;height:var(--tap);}
  .wz2-back{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .wz2-script{font-size:16px;}    /* iOS не зумит поле от 16px */
  .stools-inp textarea{font-size:16px;}
  .stools-mic{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .stools-bar .btn2,.stools-bar .wz2-btn{height:var(--tap);}
  /* ЭТАП 5: «Поиск идей» на телефоне (p23) — поля в столбец, колонки движков
     заменяются переключателем «ИИ · Каналы · Gemini», шторки едут снизу. */
  .row2{grid-template-columns:1fr;}
  .inp input,.inp textarea{font-size:16px;}   /* iOS не зумит поле от 16px */
  .cbx{height:var(--tap);}
  .id-go{width:100%;justify-content:center;height:var(--tap);}
  .acts .btn2{height:var(--tap);}
  .eng-row{columns:1 !important;}
  .tri-secs.tabbed > .tri-sec:not(.on){display:none;}
  .tri-secs.tabbed > .tri-sec > .block-label{display:none;}
  .drawer{display:none;}                       /* на телефоне вместо шторки справа — panel.open */
  .tick-back{right:12px;bottom:8px;height:var(--tap);}
  /* ЭТАП 7: «Тренировка формулы» — тап-цели не мельче 44px (--tap), поле
     сценария не зумит iOS от 16px. */
  .tr2-btn,.tr2-slot-btn{min-height:var(--tap);}
  .tr2-ctl-trigger{min-height:var(--tap);}
  .tr2-run-ico{width:var(--tap);height:var(--tap);min-width:var(--tap);}
  .tr2-input,.tr2-textarea{font-size:16px;}
  .tr2-news-item{min-height:var(--tap);}
  .tr2-version .tr2-btn{flex-shrink:0;}
}
@media (max-width:1040px){
  .wz-two{grid-template-columns:1fr;}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  button:active{transform:none;}
  /* Глобальное правило выше ускоряет анимацию до .001 мс — бегущая строка от этого
     мгновенно уехала бы на -50%. Ленте нужно именно «не двигаться»: снимаем анимацию
     совсем, лента стоит на первом кадре и остаётся читаемой (п.151). */
  .tick-track{animation:none !important;}
  .eng-load .spin,.sl{animation:none !important;}
}

/* ══════════════════════════════════════════════════════════════════
   J. РАЗДЕЛ «CRM» (волна 2, 2026-08-01 — план CRM_ПЛАН_И_ЧЕКЛИСТ.md).
   Все классы с префиксом crm- — правка изолирована от других разделов.
   Главный экран — переписки в две панели, как в мессенджере: слева
   список людей, справа диалог. Канбан из первой волны убран: заказчик
   работает из переписки, а этап человека виден меткой в списке.
   ══════════════════════════════════════════════════════════════════ */
/* CRM занимает всё окно: у остального сайта колонка ограничена 1160px (это
   правильно для текста), но переписке и канбану нужна вся ширина и высота —
   иначе рабочий экран выглядит окошком посреди пустоты. */
.screen[data-screen="crm"] .feed,.screen[data-screen="team"] .feed{display:flex;flex-direction:column;padding:14px 16px 12px;}
.screen[data-screen="crm"] .pane-in,.screen[data-screen="team"] .pane-in{max-width:none;width:100%;flex:1;min-height:0;gap:12px;}
.crm-host{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;}

.crm-tabs{display:flex;gap:6px;margin-bottom:2px;flex-wrap:wrap;}
.crm-tab{
  height:var(--h-main);padding:0 14px;border-radius:var(--r-ctl);
  display:inline-flex;align-items:center;gap:7px;
  font-size:13px;color:var(--muted);border:1px solid transparent;
}
.crm-tab:hover{background:var(--hover-surface);color:var(--text);}
.crm-tab.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.crm-tab-n{
  min-width:20px;height:18px;padding:0 6px;border-radius:9px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--accent);color:var(--on-accent);
}
.crm-tab-n.quiet{background:var(--border-strong);color:var(--text);}

/* ── Аватарка: фото либо кружок с инициалами. Цвет — из семи оттенков
   по id человека, чтобы кружок не перекрашивался между перерисовками. */
/* overflow:hidden здесь нельзя — он срезал бы точку «ждёт ответа», которая
   намеренно выступает за круг. Фото обрезает собственный border-radius. */
.crm-ava{
  flex:0 0 auto;border-radius:50%;position:relative;
  display:flex;align-items:center;justify-content:center;
  font-weight:600;color:#fff;letter-spacing:.02em;user-select:none;
}
.crm-ava img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block;border-radius:50%;
}
.crm-ava.t0{background:#5B8DEF;} .crm-ava.t1{background:#3FA796;}
.crm-ava.t2{background:#C15F3C;} .crm-ava.t3{background:#8B7BD8;}
.crm-ava.t4{background:#D08A2E;} .crm-ava.t5{background:#4E9BD1;}
.crm-ava.t6{background:#B4636F;}
.crm-ava-dot{
  position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;border-radius:50%;
  background:var(--accent);border:2px solid var(--panel);
}

/* ── Вкладка «Сообщения»: две панели ── */
.crm-mail{
  display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:14px;
  align-items:stretch;flex:1;min-height:0;
}
.crm-side{
  display:flex;flex-direction:column;gap:10px;min-width:0;min-height:0;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);padding:12px;
}
.crm-search{position:relative;}
.crm-search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--quiet);pointer-events:none;}
.crm-search input{
  width:100%;height:var(--h-main);padding:0 12px 0 34px;border-radius:var(--r-ctl);
  border:1px solid transparent;background:var(--field);color:var(--text);font-size:13px;
}
.crm-search input:focus{outline:none;border-color:var(--accent);background:var(--card);}
.crm-filters{display:flex;gap:6px;flex-wrap:wrap;}
.crm-fchip{
  height:var(--h-chip);padding:0 11px;border-radius:16px;font-size:13px;
  display:inline-flex;align-items:center;gap:6px;color:var(--muted);background:var(--field);
  border:1px solid transparent;
}
.crm-fchip:hover{background:var(--field-hover);color:var(--text);}
.crm-fchip.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.crm-fchip-n{font-variant-numeric:tabular-nums;opacity:.75;}
.crm-drill-summary{
  display:flex;align-items:center;gap:8px;min-height:34px;padding:6px 8px;
  border-radius:10px;background:var(--tint);color:var(--accent-active);font-size:12px;
}
.crm-drill-summary-text{flex:1;min-width:0;font-weight:600;line-height:1.35;}
.crm-drill-reset{
  flex:0 0 auto;min-height:26px;padding:0 8px;border-radius:8px;
  color:var(--accent-active);background:transparent;font-size:12px;font-weight:600;
}
.crm-drill-reset:hover{background:var(--hover-surface);}

.crm-list{display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1;min-height:0;margin:0 -4px;padding:0 4px;}
.crm-row{
  display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;
  padding:9px 10px;border-radius:14px;background:transparent;border:1px solid transparent;
  min-width:0;transition:background .16s var(--ease),border-color .16s var(--ease);
  content-visibility:auto;contain-intrinsic-size:auto 94px;
}
.crm-row:hover{background:var(--hover-surface);}
.crm-row.on{background:var(--tint);}
.crm-row.on .crm-row-prev,.crm-row.on .crm-row-time{color:var(--accent-active);}
.crm-row .crm-ava{width:44px;height:44px;font-size:15px;}
.crm-row-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.crm-row-top{display:flex;align-items:baseline;gap:8px;min-width:0;}
.crm-row-name{
  flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.crm-row-time{flex:0 0 auto;font-size:11px;color:var(--quiet);font-variant-numeric:tabular-nums;}
.crm-row-prev{
  font-size:13px;line-height:1.35;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.crm-row-prev b{font-weight:600;color:var(--quiet);}
.crm-row-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;}
.crm-stage{
  height:19px;padding:0 8px;border-radius:10px;font-size:11px;font-weight:600;
  display:inline-flex;align-items:center;background:var(--field);color:var(--muted);white-space:nowrap;
}
.crm-stage.paid{background:rgba(31,157,85,.13);color:var(--ok);}
.crm-stage.lead{background:var(--tint);color:var(--accent-active);}
.crm-flag{
  height:19px;padding:0 8px;border-radius:10px;font-size:11px;font-weight:600;
  display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
  background:var(--field);color:var(--muted);font-variant-numeric:tabular-nums;
}
.crm-flag.wait{background:rgba(51,144,236,.14);color:var(--accent-active);}
/* Откуда человек: заявка или личная переписка. Разные цвета, потому что решение
   «работать по скрипту или не трогать вовсе» принимается именно по этому признаку. */
.crm-src.application{background:rgba(51,144,236,.14);color:var(--accent-active);}
.crm-src.inbound{background:rgba(31,157,85,.13);color:var(--ok);}
.crm-src.contact{background:rgba(120,120,128,.16);color:var(--muted);}
.crm-flag.warn{background:rgba(183,121,31,.15);color:var(--warn);}
.crm-flag.hot{background:var(--danger-soft);color:var(--danger);}
.crm-flag.snz{background:rgba(139,123,216,.16);color:#6C5CC4;}
.crm-flag.pause{background:var(--field);color:var(--quiet);}

/* ── Правая панель: переписка ── */
.crm-chatpane{
  display:flex;flex-direction:column;min-width:0;min-height:0;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);
}
.crm-head{
  display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);
  min-width:0;flex-wrap:wrap;
}
.crm-head .crm-ava{width:42px;height:42px;font-size:15px;}
.crm-head-mid{flex:1;min-width:0;}
.crm-head-name{
  font-size:15px;font-weight:600;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.crm-head-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:3px;}
.crm-head-sub a{display:inline-flex;align-items:center;min-height:24px;color:var(--accent-active);text-decoration:none;}
.crm-head-sub a:hover{text-decoration:underline;}
.crm-head-acts{
  display:flex;align-items:center;justify-content:flex-end;gap:6px;
  flex:0 1 auto;min-width:0;max-width:100%;flex-wrap:wrap;
}
.crm-back{display:none;}

.crm-chat{
  flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto;
  padding:14px;min-height:0;
}
.crm-day{align-self:center;padding:3px 10px;border-radius:11px;background:var(--field);color:var(--muted);font-size:11px;}
.crm-msg{display:flex;}
.crm-msg.us{justify-content:flex-end;}
.crm-bub{
  max-width:min(70%,560px);padding:8px 12px 6px;border-radius:16px;
  background:var(--field);color:var(--text);font-size:13px;line-height:1.5;
  white-space:pre-wrap;word-break:break-word;border-bottom-left-radius:5px;
}
.crm-msg.us .crm-bub{background:var(--bubble-user);border-bottom-left-radius:16px;border-bottom-right-radius:5px;}
.crm-msg-time{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:3px;font-size:11px;color:var(--quiet);}
/* Галочки как в мессенджере: одна — доставлено, две — клиент открыл переписку */
.crm-tick{display:inline-flex;align-items:center;color:var(--quiet);}
.crm-tick.read{color:var(--accent-active);}
/* Правка / удаление сообщения — приглушённая пометка рядом со временем */
.crm-edited{color:var(--quiet);}
/* Удалённое в Telegram сообщение остаётся видимым владельцу, но приглушённым */
.crm-content.is-deleted{opacity:.55;text-decoration:line-through;text-decoration-color:var(--quiet);}
/* Пересланное сообщение — короткая подпись источника над содержимым */
.crm-fwd{font-size:11.5px;font-weight:600;color:var(--muted);margin-bottom:4px;}
/* Цитата (ответ на сообщение): один уровень поверхности, без цветной полоски —
   заливка тем же тоном, что и другие вложенные блоки переписки (voice-rate и т.п.) */
.crm-quote{
  padding:5px 8px;margin-bottom:5px;border-radius:8px;cursor:pointer;
  background:var(--card-2,rgba(127,127,127,.16));
}
.crm-quote:hover{filter:brightness(1.08);}
.crm-quote-name{font-size:11.5px;font-weight:700;color:var(--accent-active);}
.crm-quote-text{
  font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;max-width:100%;
}
/* Статус доставки своего сообщения: пока опрос идёт — приглушённые часики,
   исход меняет иконку и цвет, «не доставлено» получает кнопку повтора. */
.crm-outbox{display:flex;align-items:center;gap:5px;margin-top:4px;font-size:11px;color:var(--quiet);}
.crm-outbox.sent{color:var(--quiet);}
.crm-outbox.unsure{color:var(--quiet);}
.crm-outbox.failed{color:var(--danger);flex-wrap:wrap;}
.crm-outbox-retry{
  border:none;background:transparent;color:inherit;font:inherit;font-weight:600;
  text-decoration:underline;text-underline-offset:2px;cursor:pointer;padding:0;
}
.crm-outbox-retry:hover{opacity:.8;}
.crm-outbox-retry:disabled{opacity:.5;pointer-events:none;}
.crm-msg.us.crm-msg-failed .crm-bub{
  background:var(--danger-soft);border:1px solid var(--danger);
}
.crm-attach{display:inline-flex;align-items:center;gap:6px;font-weight:600;}
/* ─ Вложения переписки: голосовое, фото, видео, документ ─────────────────── */
.crm-voice{display:flex;align-items:center;gap:10px;min-width:210px;padding:2px 0;}
.crm-voice-play{
  flex:0 0 auto;width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--accent);color:var(--on-accent);
}
.crm-voice-play:hover{filter:brightness(1.06);}
.crm-voice-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.crm-wave{display:flex;align-items:flex-end;gap:2px;height:20px;cursor:pointer;}
.crm-wave i{
  flex:1;min-width:2px;border-radius:2px;background:var(--quiet);opacity:.45;
  transition:opacity .12s linear;
}
.crm-wave i.on{opacity:1;background:var(--accent);}
.crm-voice-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--quiet);font-variant-numeric:tabular-nums;}
.crm-voice-rate{
  border:none;background:var(--card-2,rgba(127,127,127,.16));color:var(--muted);
  min-width:44px;min-height:32px;border-radius:9px;padding:1px 8px;
  font-size:11px;font-weight:700;cursor:pointer;
}
.crm-voice-text{
  margin-top:6px;padding-top:6px;border-top:1px dashed var(--border);
  font-size:13px;color:var(--muted);line-height:1.45;white-space:pre-wrap;
}
.crm-photo{display:block;max-width:min(300px,100%);max-height:340px;border-radius:12px;cursor:zoom-in;}
.crm-video{display:block;max-width:min(320px,100%);border-radius:12px;}
/* Кружок (video_note): круглый видеоплеер, как в Telegram. */
.crm-video-note{position:relative;width:220px;height:220px;max-width:100%;}
.crm-video-note-el{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;background:#000;}
.crm-video-note-dur{
  position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.55);color:#fff;
  font-size:11px;line-height:1;padding:3px 7px;border-radius:9px;pointer-events:none;
}
/* Стикеры: .webp/.webm как картинка без плашки, .tgs (Lottie) — компактная плашка. */
.crm-sticker-img{display:block;width:140px;height:140px;max-width:100%;object-fit:contain;}
.crm-sticker-tgs{
  display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--r-ctl);
  background:var(--field);max-width:220px;
}
.crm-sticker-tgs-emoji{flex:0 0 auto;font-size:20px;line-height:1;}
.crm-sticker-tgs-mid{min-width:0;}
.crm-sticker-tgs-title{font-size:13px;font-weight:600;color:var(--text);}
.crm-sticker-tgs-sub{font-size:11px;color:var(--quiet);}
.crm-sticker-tgs-dl{
  flex:0 0 auto;width:28px;height:28px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;color:var(--muted);text-decoration:none;
}
.crm-sticker-tgs-dl:hover{background:var(--hover-surface);color:var(--text);}
.crm-file{
  display:flex;align-items:center;gap:9px;min-width:190px;padding:4px 0;
  color:inherit;text-decoration:none;
}
.crm-file-ico{
  flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:inline-flex;
  align-items:center;justify-content:center;background:var(--tint);color:var(--accent-active);
}
.crm-file-mid{min-width:0;}
.crm-file-n{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:210px;}
.crm-file-s{font-size:11px;color:var(--quiet);}
.crm-file:hover .crm-file-n{text-decoration:underline;}
.crm-lightbox{
  position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.82);
  display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;
}
.crm-lightbox img{max-width:100%;max-height:100%;border-radius:10px;}
/* Композер: превью выбранного файла и запись голосового */
.crm-pending{
  display:flex;align-items:center;gap:9px;margin:0 14px 8px;padding:8px 10px;
  border-radius:var(--r-ctl);background:var(--field);font-size:13px;color:var(--muted);
}
.crm-pending img{width:38px;height:38px;object-fit:cover;border-radius:8px;}
.crm-pending .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);}
.crm-rec{
  display:flex;align-items:center;gap:9px;flex:1;padding:0 4px;font-size:13px;color:var(--muted);
}
.crm-rec-dot{width:9px;height:9px;border-radius:50%;background:#e5484d;animation:crmRecPulse 1s infinite;}
@keyframes crmRecPulse{50%{opacity:.25;}}
/* Сфера громкости: --orb (масштаб) и --orb-a (яркость свечения) выставляет
   voiceOrbStart из уровня сигнала микрофона. Без переменных круг просто стоит. */
.voice-orb{
  position:relative;width:26px;height:26px;flex:0 0 auto;display:inline-flex;
  align-items:center;justify-content:center;
}
.voice-orb::before{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 50% 45%,var(--accent),transparent 70%);
  opacity:var(--orb-a,.35);transform:scale(var(--orb,1));
  transition:transform .06s linear,opacity .12s linear;
}
.voice-orb-core{
  width:11px;height:11px;border-radius:50%;background:var(--accent);
  transform:scale(calc(0.75 + (var(--orb,1) - 1) * 0.5));
  transition:transform .06s linear;
}
@media (prefers-reduced-motion:reduce){
  .voice-orb::before,.voice-orb-core{transition:none;}
}
.crm-send.drop{background:var(--tint);}
/* ── Поиск по переписке (не только по имени), непрочитанные, закреплённые ── */
.crm-search-results{
  flex:0 1 auto;max-height:42%;overflow-y:auto;margin-top:2px;padding-top:8px;
  border-top:1px solid var(--border);
}
.crm-search-head{font-size:11px;font-weight:700;color:var(--quiet);text-transform:uppercase;letter-spacing:.02em;padding:2px 8px 6px;}
.crm-srow{
  display:flex;width:100%;text-align:left;padding:7px 8px;border-radius:12px;
  background:transparent;border:1px solid transparent;cursor:pointer;
}
.crm-srow:hover{background:var(--hover-surface);}
.crm-srow-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.crm-srow-top{display:flex;align-items:baseline;gap:8px;min-width:0;}
.crm-srow-name{flex:1;min-width:0;font-size:12.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-srow-time{flex:0 0 auto;font-size:11px;color:var(--quiet);}
.crm-srow-snip{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-srow-hit{background:rgba(255,196,0,.32);color:inherit;border-radius:3px;padding:0 1px;}
.crm-row-badges{display:flex;align-items:center;gap:4px;align-self:center;flex:0 0 auto;}
.crm-pin{display:inline-flex;color:var(--quiet);}
.crm-unread{
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--on-accent);
  font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;
  font-variant-numeric:tabular-nums;
}
.crm-row-name.crm-unread-name{font-weight:700;}
.crm-row-prev.crm-unread-prev{color:var(--text);font-weight:500;}
.crm-typing{color:var(--accent-active);font-style:normal;}
/* Присутствие / печатает — под именем в шапке диалога */
.crm-head-presence{font-size:12px;color:var(--muted);margin-top:2px;}
.crm-head-presence[hidden]{display:none;}
/* Реакции под баблом */
.crm-reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
.crm-rx{
  display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 7px;border-radius:10px;
  background:var(--card-2,rgba(127,127,127,.16));font-size:12px;color:var(--muted);
}
.crm-rx.mine{background:var(--tint);color:var(--accent-active);font-weight:600;}
/* Ответить: кнопка при наведении на сообщение */
.crm-msg{position:relative;}
.crm-msg-reply{
  opacity:0;flex:0 0 auto;align-self:center;color:var(--quiet);
  transition:opacity .12s var(--ease);
}
.crm-msg:hover .crm-msg-reply{opacity:1;}
.crm-msg-reply:hover{color:var(--text);}
/* Полоска ответа над полем ввода */
.crm-reply-bar{
  display:flex;align-items:center;gap:8px;margin:0 14px 8px;padding:6px 10px;
  border-radius:var(--r-ctl);background:var(--field);border-left:3px solid var(--accent);
}
.crm-reply-mid{flex:1;min-width:0;}
.crm-reply-name{font-size:11.5px;font-weight:700;color:var(--accent-active);}
.crm-reply-text{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Альбом фото одним баблом */
.crm-album-bub{padding:4px;}
.crm-album-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;max-width:280px;}
.crm-album-img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;border-radius:6px;cursor:zoom-in;}
.crm-album-cap{padding:6px 6px 2px;font-size:13px;color:var(--text);white-space:pre-wrap;}
/* Группировка подряд идущих сообщений одного автора в пределах минуты */
.crm-msg.crm-msg-grouped{margin-top:-5px;}
/* Эмодзи-пикер у поля ввода */
.crm-emoji-wrap{position:relative;flex:0 0 auto;}
.crm-emoji-pop{
  position:absolute;bottom:calc(100% + 8px);left:0;z-index:40;
  display:grid;grid-template-columns:repeat(8,28px);gap:2px;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-ctl);
  padding:8px;box-shadow:0 8px 24px rgba(0,0,0,.18);
}
.crm-emoji-i{
  width:28px;height:28px;font-size:17px;line-height:1;border:none;background:transparent;
  border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
}
.crm-emoji-i:hover{background:var(--hover-surface);}
/* ═══ Раздел «Сообщения»: переписка сотрудников между собой ═══════════════
   Разметка повторяет CRM (две колонки, на узком экране — по одной), а сами
   пузыри, плееры и карточки файлов переиспользуют функции CRM: две одинаковые
   ленты сообщений в одном файле разъезжались бы при первой же правке. */
.tm-wrap{display:flex;gap:12px;flex:1;min-height:0;}
.tm-side{
  width:320px;flex:0 0 auto;display:flex;flex-direction:column;gap:8px;min-height:0;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);padding:10px;
}
.tm-side-top{display:flex;gap:6px;align-items:center;}
.tm-search{
  flex:1;height:var(--h-main);padding:0 12px;border-radius:var(--r-ctl);border:1px solid transparent;
  background:var(--field);color:var(--text);font:inherit;font-size:13px;
}
.tm-search:focus{outline:none;border-color:var(--accent);background:var(--card);}
.tm-list{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:2px;}
.tm-row{
  display:flex;gap:10px;align-items:center;padding:8px 9px;border-radius:12px;
  background:none;border:none;text-align:left;cursor:pointer;color:inherit;font:inherit;width:100%;
}
.tm-row:hover{background:var(--hover-surface);}
.tm-row.on{background:var(--tint);}
.tm-row-mid{flex:1;min-width:0;}
.tm-row-top{display:flex;align-items:baseline;gap:8px;}
.tm-row-name{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tm-row-time{font-size:11px;color:var(--quiet);white-space:nowrap;}
.tm-row-prev{font-size:12px;color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}
.tm-unread{
  min-width:19px;height:19px;padding:0 6px;border-radius:10px;background:var(--accent);color:var(--on-accent);
  font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;
}
.tm-dot-on{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:0 0 auto;}
.tm-pane{
  flex:1;min-width:0;display:flex;flex-direction:column;min-height:0;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;
}
.tm-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);}
.tm-head-mid{flex:1;min-width:0;}
.tm-head-name{font-size:14px;font-weight:600;color:var(--text);}
.tm-head-sub{font-size:11px;color:var(--quiet);}
.tm-chat{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto;padding:14px;min-height:0;}
.tm-msg{display:flex;flex-direction:column;align-items:flex-start;max-width:min(70%,560px);}
.tm-msg.us{align-self:flex-end;align-items:flex-end;}
.tm-author{font-size:11px;color:var(--accent-active);font-weight:600;margin:0 4px 2px;}
.tm-bub{
  padding:8px 12px 6px;border-radius:16px;background:var(--field);color:var(--text);
  font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word;
  border-bottom-left-radius:5px;position:relative;
}
.tm-msg.us .tm-bub{background:var(--bubble-user);border-bottom-left-radius:16px;border-bottom-right-radius:5px;}
.tm-msg.gone .tm-bub{opacity:.6;font-style:italic;}
.tm-quote{
  display:block;border-left:2px solid var(--accent);padding:2px 0 2px 8px;margin-bottom:5px;
  font-size:12px;color:var(--muted);cursor:pointer;max-height:34px;overflow:hidden;
}
.tm-quote b{display:block;color:var(--accent-active);font-weight:600;font-size:11px;}
.tm-meta{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:3px;font-size:11px;color:var(--quiet);}
.tm-react{display:flex;gap:4px;flex-wrap:wrap;margin:4px 4px 0;}
.tm-react button{
  border:1px solid var(--border);background:var(--field);color:var(--muted);border-radius:11px;
  padding:1px 7px;font-size:11px;cursor:pointer;display:inline-flex;gap:3px;align-items:center;
}
.tm-react button.mine{background:var(--tint);border-color:transparent;color:var(--accent-active);font-weight:700;}
/* Кнопки действий и «＋» для реакции появляются по наведению — иначе под каждым
   сообщением висит служебная строка и лента выглядит рябой. */
.tm-acts{display:flex;gap:2px;margin:0 4px;height:0;overflow:hidden;opacity:0;transition:opacity .12s;}
.tm-msg:hover .tm-acts,.tm-msg:focus-within .tm-acts{opacity:1;height:auto;overflow:visible;margin-top:2px;}
.tm-react:not(:has(button:not(.tm-plus))){margin:0;}
.tm-plus{opacity:0;transition:opacity .12s;}
.tm-msg:hover .tm-plus,.tm-msg:focus-within .tm-plus{opacity:1;}
.tm-acts button{
  border:none;background:none;color:var(--quiet);font-size:11px;cursor:pointer;padding:1px 5px;border-radius:8px;
}
.tm-acts button:hover{background:var(--hover-surface);color:var(--text);}
.tm-script{
  border:1px solid var(--border);border-radius:12px;padding:9px 11px;background:var(--card);
  display:flex;flex-direction:column;gap:6px;min-width:230px;
}
.tm-script-t{font-size:13px;font-weight:700;color:var(--text);}
.tm-script-b{font-size:13px;color:var(--muted);line-height:1.45;max-height:130px;overflow:hidden;white-space:pre-wrap;}
.tm-script-b.open{max-height:none;}
.tm-script-acts{display:flex;gap:6px;flex-wrap:wrap;}
.tm-typing{font-size:11px;color:var(--accent-active);padding:0 14px 6px;}
.tm-people{display:flex;flex-direction:column;gap:2px;max-height:320px;overflow-y:auto;}
.tm-modal-dim{
  position:fixed;inset:0;z-index:130;background:rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.tm-modal{
  width:min(440px,100%);max-height:80vh;overflow:auto;background:var(--panel);
  border:1px solid var(--border);border-radius:var(--r-card);padding:12px 14px 14px;
  box-shadow:var(--shadow-sheet);
}
.tm-modal-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
/* Приёмка сценариев */
.rv-list{display:flex;flex-direction:column;gap:4px;}
.rv-h{font-size:12px;color:var(--quiet);margin:10px 0 2px;}
.rv-row{
  display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;
  background:var(--field);border:1px solid transparent;cursor:pointer;text-align:left;
  color:inherit;font:inherit;width:100%;
}
.rv-row:hover{background:var(--field-hover);}
.rv-row.fresh{border-color:var(--accent);}
.rv-row-mid{flex:1;min-width:0;}
.rv-row-t{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rv-row-d{font-size:11px;color:var(--quiet);margin-top:2px;}
.rv-chip{
  padding:2px 9px;border-radius:11px;font-size:11px;font-weight:600;white-space:nowrap;
  background:var(--field);color:var(--muted);
}
.rv-chip.ok{background:rgba(31,157,85,.14);color:var(--ok);}
.rv-chip.warn{background:rgba(232,163,61,.16);color:#E8A33D;}
.rv-chip.hot{background:rgba(229,72,77,.15);color:#E5484D;}
.rv-chip.accent{background:var(--tint);color:var(--accent-active);}
.rv-view{display:flex;flex-direction:column;gap:8px;}
.rv-view-h{display:flex;align-items:center;gap:8px;}
.rv-view-t{flex:1;font-size:14px;font-weight:700;color:var(--text);}
.rv-meta{font-size:11px;color:var(--quiet);}
.rv-text{
  white-space:pre-wrap;font-size:13px;line-height:1.55;color:var(--text);
  background:var(--field);border-radius:12px;padding:10px 12px;max-height:320px;overflow:auto;
}
.rv-text.edited{border-left:3px solid var(--accent);}
.rv-note{font-size:13px;color:var(--muted);}
.rv-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.rv-form{display:flex;flex-direction:column;gap:8px;}
.rv-form textarea{min-height:220px;}
.tm-modal-t{flex:1;font-size:15px;font-weight:600;color:var(--text);}
/* Telegram-like раскладка: одна цельная поверхность, плотный список слева,
   переписка в центре и выезжающая панель материалов справа. */
.tm-wrap{gap:0;border:1px solid var(--border);border-radius:0;overflow:hidden;background:var(--panel);}
.tm-side{width:348px;border:0;border-right:1px solid var(--border);border-radius:0;padding:0;gap:0;background:var(--panel);}
.tm-side-top{padding:10px;border-bottom:1px solid var(--border);}
.tm-list{gap:0;padding:4px 0;}
.tm-row{border-radius:0;padding:8px 10px;min-height:58px;transition:background-color .14s ease;}
.tm-row.on{background:color-mix(in srgb,var(--accent) 13%,transparent);}
.tm-row.topic{padding-left:27px;min-height:51px;}
.tm-row.topic .tm-avatar{border-radius:13px;background:linear-gradient(145deg,#6686ae,#465f83);}
.tm-row-pin{display:inline-flex;color:var(--quiet);margin-left:4px;vertical-align:-2px;}
.tm-avatar{position:relative;flex:0 0 auto;border-radius:50%;overflow:hidden;display:grid;place-items:center;
  color:#fff;font-weight:700;background:linear-gradient(145deg,#53a7e8,#397dc8);letter-spacing:.01em;}
.tm-avatar.group{background:linear-gradient(145deg,#6cc49a,#319a72);}
.tm-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.tm-avatar .tm-dot-on{position:absolute;right:0;bottom:1px;border:2px solid var(--panel);width:10px;height:10px;z-index:2;}
.tm-pane{position:relative;border:0;border-radius:0;background:var(--panel);}
.tm-head{min-height:56px;padding:6px 12px;background:color-mix(in srgb,var(--panel) 96%,transparent);z-index:5;}
.tm-head-name{font-size:14px;line-height:1.25;}
.tm-head-actions{display:flex;align-items:center;gap:2px;}
.tm-head-actions .icon-btn.on{color:var(--accent-active);background:var(--tint);}
.tm-pinbar{display:flex;align-items:center;gap:9px;padding:7px 13px;background:var(--panel);border-bottom:1px solid var(--border);
  color:var(--muted);cursor:pointer;min-height:42px;transition:background .14s ease;}
.tm-pinbar:hover{background:var(--hover-surface);}
.tm-pin-line{width:3px;height:28px;border-radius:3px;background:var(--accent);flex:0 0 auto;}
.tm-pin-mid{min-width:0;flex:1;}
.tm-pin-title{display:block;color:var(--accent-active);font-size:11px;font-weight:700;}
.tm-pin-text{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tm-chat{
  gap:2px;padding-top:12px;padding-bottom:12px;padding-left:14px;
  padding-right:max(14px,calc(100% - 760px));
  background:color-mix(in srgb,var(--bg) 82%,var(--panel));
}
.tm-chat::before{content:"";flex:1 0 0;}
.tm-msg{align-self:flex-start;max-width:min(76%,560px);margin-top:0;position:relative;}
.tm-msg.us{align-self:flex-end;}
.tm-msg.group-start{margin-top:7px;}
.tm-msg-line{display:flex;align-items:flex-end;gap:6px;min-width:0;max-width:100%;}
.tm-msg.us .tm-msg-line{justify-content:flex-end;}
.tm-msg-avatar-gap{width:32px;flex:0 0 32px;}
.tm-msg-stack{min-width:0;max-width:100%;display:flex;flex-direction:column;align-items:flex-start;}
.tm-msg.us .tm-msg-stack{align-items:flex-end;}
.tm-author{margin:0 8px 2px;}
.tm-bub{
  box-shadow:0 1px 1px rgba(0,0,0,.13);padding:7px 50px 7px 10px;min-height:33px;
  border-radius:12px;border-bottom-left-radius:4px;font-size:14px;line-height:1.34;
}
.tm-msg:not(.us) .tm-bub{padding-right:40px;}
.tm-msg:not(.us) .tm-bub.has-edited{padding-right:95px;min-width:154px;}
.tm-msg.us .tm-bub.has-edited{padding-right:108px;min-width:168px;}
.tm-msg.us .tm-bub{border-radius:12px;border-bottom-right-radius:4px;}
.tm-bub.has-att{padding:5px 5px 21px;min-width:220px;}
.tm-bub.has-reply{padding-top:7px;}
.tm-msg.group-mid .tm-bub,.tm-msg.group-end .tm-bub{border-top-left-radius:7px;}
.tm-msg.us.group-mid .tm-bub,.tm-msg.us.group-end .tm-bub{border-top-left-radius:12px;border-top-right-radius:7px;}
.tm-msg.group-start:not(.group-end) .tm-bub{border-bottom-left-radius:7px;}
.tm-msg.us.group-start:not(.group-end) .tm-bub{border-bottom-left-radius:12px;border-bottom-right-radius:7px;}
.tm-bub .tm-meta{position:absolute;right:7px;bottom:4px;margin:0;height:15px;line-height:15px;font-size:10.5px;white-space:nowrap;}
.tm-bub.has-att .tm-meta{right:7px;bottom:4px;}
.tm-msg.fresh{animation:tmBubbleIn .22s cubic-bezier(.2,.75,.25,1);}
@keyframes tmBubbleIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.tm-msg.flash .tm-bub{animation:tmFlash 1.25s ease;}
.tm-msg:focus{outline:none}.tm-msg:focus-visible .tm-bub{outline:2px solid color-mix(in srgb,var(--accent) 48%,transparent);outline-offset:2px;}
@keyframes tmFlash{0%,100%{box-shadow:0 1px 1px rgba(16,22,30,.08)}30%{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent)}}
.tm-react button.pop{animation:tmReactPop .28s cubic-bezier(.2,1.6,.4,1);}
@keyframes tmReactPop{0%{transform:scale(.7)}100%{transform:scale(1)}}
/* Telegram Desktop не раскрывает текстовую панель действий при обычном hover.
   Все действия и быстрые реакции доступны в контекстном меню по правому клику. */
.tm-acts,.tm-plus{display:none!important;}
.tm-react:not(:has(button:not(.tm-plus))){height:0;overflow:hidden;position:relative;margin:0;}
.tm-searchbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--panel);z-index:4;}
.tm-searchbar .tm-search{height:36px;}
.tm-search-results{position:absolute;top:60px;right:0;bottom:0;width:min(370px,88%);z-index:12;background:var(--panel);
  border-left:1px solid var(--border);box-shadow:var(--shadow-sheet);display:flex;flex-direction:column;animation:tmDrawerIn .18s ease;}
.tm-search-results .tm-searchbar{flex:0 0 auto;}
.tm-result-list{overflow:auto;flex:1;padding:4px 0;}
.tm-result{display:block;width:100%;border:0;background:none;text-align:left;padding:10px 13px;color:inherit;cursor:pointer;}
.tm-result:hover{background:var(--hover-surface);}
.tm-result-from{font-size:11px;font-weight:700;color:var(--accent-active);}
.tm-result-text{font-size:13px;line-height:1.35;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.tm-result-time{font-size:10px;color:var(--quiet);margin-top:3px;}
.tm-drawer{position:absolute;top:0;right:0;bottom:0;width:min(330px,92%);z-index:14;background:var(--panel);
  border-left:1px solid var(--border);box-shadow:var(--shadow-sheet);display:flex;flex-direction:column;animation:tmDrawerIn .18s ease;}
@keyframes tmDrawerIn{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
.tm-drawer-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);min-height:60px;}
.tm-drawer-title{font-size:14px;font-weight:700;flex:1;}
.tm-profile{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 16px 16px;border-bottom:1px solid var(--border);}
.tm-profile .tm-head-name{font-size:16px;margin-top:9px;}
.tm-profile-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px;border-bottom:1px solid var(--border);}
.tm-tool{border:0;background:var(--field);border-radius:11px;padding:9px;color:var(--text);font:inherit;font-size:12px;cursor:pointer;}
.tm-tool:hover{background:var(--field-hover);}
.tm-media-title{font-size:12px;font-weight:700;color:var(--muted);padding:12px 13px 7px;}
.tm-media-list{overflow:auto;flex:1;display:flex;flex-direction:column;}
.tm-media-stats{display:flex;flex-direction:column;border-bottom:1px solid var(--border);padding:5px 0;}
.tm-media-stat{display:flex;align-items:center;gap:10px;padding:8px 13px;font-size:12px;color:var(--text);}
.tm-media-stat svg{color:var(--quiet);}.tm-media-stat b{margin-left:auto;font-size:11px;color:var(--quiet);}
.tm-media-row{display:flex;align-items:center;gap:9px;padding:8px 12px;color:inherit;text-decoration:none;cursor:pointer;border:0;background:none;text-align:left;}
.tm-media-row:hover{background:var(--hover-surface);}
.tm-media-thumb{width:42px;height:42px;border-radius:9px;background:var(--field);display:grid;place-items:center;overflow:hidden;flex:0 0 auto;}
.tm-media-thumb img{width:100%;height:100%;object-fit:cover;}
.tm-media-mid{min-width:0;flex:1;}
.tm-media-name{display:block;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tm-media-meta{display:block;font-size:10px;color:var(--quiet);margin-top:2px;}
.tm-typing{height:20px;padding:2px 18px 4px;background:var(--panel);}
.tm-typing-dots{display:inline-flex;gap:2px;margin-left:4px;vertical-align:2px;}
.tm-typing-dots i{width:3px;height:3px;border-radius:50%;background:currentColor;animation:tmTyping 1s infinite ease-in-out;}
.tm-typing-dots i:nth-child(2){animation-delay:.13s}.tm-typing-dots i:nth-child(3){animation-delay:.26s}
@keyframes tmTyping{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-3px);opacity:1}}
.tm-poll,.tm-task{min-width:min(310px,70vw);display:flex;flex-direction:column;gap:7px;padding:2px 0;}
.tm-poll-q,.tm-task-t{display:block;font-size:13px;font-weight:700;color:var(--text);}
.tm-poll-opt{position:relative;overflow:hidden;border:0;border-radius:9px;background:var(--field);color:var(--text);font:inherit;
  font-size:12px;text-align:left;padding:8px 10px;cursor:pointer;display:flex;gap:8px;align-items:center;}
.tm-poll-opt:before{content:"";position:absolute;inset:0 auto 0 0;width:var(--poll-pct,0%);background:color-mix(in srgb,var(--accent) 15%,transparent);}
.tm-poll-opt>*{position:relative}.tm-poll-opt.mine{box-shadow:inset 0 0 0 1px var(--accent);}
.tm-poll-opt b{margin-left:auto;color:var(--accent-active);font-size:11px;}
.tm-poll-total,.tm-task-meta{display:block;font-size:10px;color:var(--quiet);}
.tm-task-check{border:0;background:transparent;color:var(--text);font:inherit;text-align:left;padding:0;cursor:pointer;display:flex;gap:9px;align-items:flex-start;}
.tm-task-box{width:20px;height:20px;border:2px solid var(--accent);border-radius:50%;display:grid;place-items:center;flex:0 0 auto;color:#fff;background:transparent;}
.tm-task.done .tm-task-box{background:var(--accent)}.tm-task.done .tm-task-t{text-decoration:line-through;color:var(--quiet);}
.tm-floating{position:fixed;z-index:170;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-menu);animation:tmFloatIn .12s ease;}
@keyframes tmFloatIn{from{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:none}}
.tm-context{width:220px;padding:6px;display:flex;flex-direction:column;gap:2px;}
.tm-context-react{display:flex;gap:2px;padding:3px 2px 7px;border-bottom:1px solid var(--border);margin-bottom:3px;}
.tm-context-react button{flex:1;border:0;background:none;border-radius:8px;font-size:17px;padding:4px 1px;cursor:pointer;}
.tm-context-react button:hover{background:var(--hover-surface);transform:scale(1.12);}
.tm-context-act{border:0;background:none;color:var(--text);font:inherit;text-align:left;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:10px;}
.tm-context-act svg{flex:0 0 auto;}
.tm-context-act:hover{background:var(--hover-surface);}.tm-context-act.danger{color:#e25a61;}
.tm-attach-menu{position:absolute;left:8px;bottom:58px;width:215px;padding:6px;display:flex;flex-direction:column;gap:2px;}
.tm-attach-item{border:0;background:none;color:var(--text);font:inherit;text-align:left;padding:9px 10px;border-radius:8px;cursor:pointer;display:flex;gap:10px;align-items:center;font-size:12px;}
.tm-attach-item:hover{background:var(--hover-surface);}.tm-attach-item span:first-child{width:22px;text-align:center;font-size:16px;}
.tm-emoji-pop{position:absolute;right:48px;bottom:58px;width:min(350px,calc(100vw - 28px));padding:10px;}
.tm-emoji-title{font-size:11px;font-weight:700;color:var(--quiet);margin:0 3px 8px;}
.tm-emoji-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;max-height:260px;overflow:auto;}
.tm-emoji-grid button{aspect-ratio:1;border:0;background:none;border-radius:8px;font-size:19px;cursor:pointer;display:grid;place-items:center;}
.tm-emoji-grid button:hover{background:var(--hover-surface);transform:scale(1.08);}
.crm-send{position:relative;}
:root[data-theme="dark"] .tm-wrap{border-color:#0f1822;background:#17212b;}
:root[data-theme="dark"] .tm-side,
:root[data-theme="dark"] .tm-side-top,
:root[data-theme="dark"] .tm-head,
:root[data-theme="dark"] .tm-pinbar,
:root[data-theme="dark"] .tm-typing{background:#17212b;border-color:#101820;}
:root[data-theme="dark"] .tm-search{background:#242f3d;color:#f5f5f5;}
:root[data-theme="dark"] .tm-row:hover{background:#202b36;}
:root[data-theme="dark"] .tm-row.on{background:#2b5278;color:#fff;}
:root[data-theme="dark"] .tm-row.on .tm-row-name{color:#fff;}
:root[data-theme="dark"] .tm-row.on .tm-row-prev,
:root[data-theme="dark"] .tm-row.on .tm-row-time{color:#c4d9eb;}
:root[data-theme="dark"] .tm-pane,
:root[data-theme="dark"] .tm-chat{background:#0e1621;}
:root[data-theme="dark"] .tm-bub{background:#182533;color:#f5f5f5;}
:root[data-theme="dark"] .tm-msg.us .tm-bub{background:#2b5278;color:#fff;}
:root[data-theme="dark"] .tm-meta{color:#7da1bd;}
:root[data-theme="dark"] .tm-msg.us .tm-meta{color:#a9c6dc;}
:root[data-theme="dark"] .tm-author{color:#64b5ef;}
:root[data-theme="dark"] .crm-send-box,
:root[data-theme="dark"] .crm-send{background:#17212b;border-color:#101820;}
.tm-pane>.crm-send-box>.crm-send{min-height:54px;padding:6px 8px;gap:4px;align-items:center;}
.tm-pane>.crm-send-box>.crm-send .crm-send-in{
  min-height:42px;padding:10px 8px;border:0;border-radius:0;background:transparent;box-shadow:none;
}
.tm-pane>.crm-send-box>.crm-send .crm-send-in:focus{border:0;background:transparent;box-shadow:none;}
.tm-pane>.crm-send-box>.crm-send .icon-btn,
.tm-pane>.crm-send-box>.crm-send .send{flex:0 0 auto;}
@media (max-width:900px){
  .tm-wrap.chat-open .tm-side{display:none;}
  .tm-wrap:not(.chat-open) .tm-pane{display:none;}
  .tm-side{width:auto;flex:1;}
  .tm-wrap{border-radius:0;border-left:0;border-right:0;}
  .tm-msg{max-width:88%;}
  .tm-chat{padding-left:8px;padding-right:8px;}
  .tm-emoji-pop{right:8px;grid-template-columns:repeat(8,1fr);}
}
@media (prefers-reduced-motion:reduce){.tm-msg.fresh,.tm-msg.flash .tm-bub,.tm-react button.pop,.tm-drawer,.tm-search-results{animation:none}}
@media (hover:none){.tm-msg:focus-within .tm-plus{opacity:1}}
.crm-send-box{display:flex;flex-direction:column;border-top:1px solid var(--border);}
.crm-send-box .crm-send{border-top:none;}
.crm-send-box .crm-pending{margin:10px 14px 0;}
.crm-quiet-note{
  display:flex;align-items:center;gap:7px;padding:7px 14px;font-size:11px;color:var(--quiet);
  border-bottom:1px solid var(--border);
}
/* Переключатель с явным состоянием (читаю молча / отмечаю прочитанным):
   по кнопке-ярлыку было не понять, включено сейчас или предлагается включить. */
.crm-switch{
  display:inline-flex;align-items:center;gap:8px;height:var(--h-chip);padding:0 10px;
  border-radius:16px;border:1px solid var(--border);background:var(--field);
  color:var(--muted);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;
}
.crm-switch:hover{background:var(--field-hover);color:var(--text);}
.crm-switch.on{background:var(--tint);border-color:transparent;color:var(--accent-active);font-weight:600;}
.crm-switch-tr{
  position:relative;width:30px;height:17px;border-radius:9px;flex:0 0 auto;
  background:var(--border);transition:background .15s ease;
}
.crm-switch.on .crm-switch-tr{background:var(--accent);}
.crm-switch-kn{
  position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;
  background:var(--card,#fff);transition:transform .15s ease;
}
.crm-switch.on .crm-switch-kn{transform:translateX(13px);}
.crm-switch:disabled{opacity:.5;pointer-events:none;}
.crm-quiet-note b{color:var(--text);font-weight:600;}
.crm-paid-chip{
  height:19px;padding:0 8px;border-radius:10px;font-size:11px;font-weight:700;
  display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
  background:rgba(31,157,85,.14);color:var(--ok);font-variant-numeric:tabular-nums;
}
/* План работы: кому и что писать */
.crm-plan-group{margin-bottom:20px;}
.crm-plan-head{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;}
.crm-plan-t{font-size:14px;font-weight:700;color:var(--text);}
.crm-plan-n{font-size:12px;color:var(--quiet);font-variant-numeric:tabular-nums;}
.crm-plan-d{font-size:13px;color:var(--muted);margin-bottom:12px;}
.crm-plan-list{display:flex;flex-direction:column;gap:10px;}
.crm-plan-i{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);
  padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-width:0;
}
.crm-plan-top{display:flex;align-items:center;gap:10px;min-width:0;}
.crm-plan-top .crm-ava{width:38px;height:38px;font-size:13px;}
.crm-plan-mid{flex:1;min-width:0;}
.crm-plan-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-plan-why{font-size:11px;color:var(--quiet);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-plan-draft{
  width:100%;min-height:56px;max-height:180px;resize:vertical;padding:9px 11px;
  border-radius:var(--r-ctl);border:1px solid transparent;background:var(--field);
  color:var(--text);font:inherit;font-size:13px;line-height:1.45;
}
.crm-plan-draft:focus{outline:none;border-color:var(--accent);background:var(--card);}
.crm-plan-acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.crm-plan-acts .ghost-btn{height:var(--h-chip);}
.crm-plan-sent{font-size:12px;color:var(--ok);font-weight:600;display:inline-flex;align-items:center;gap:5px;}
/* Периоды в статистике */
.crm-periods{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.crm-period-note{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--quiet);margin-bottom:12px;}
/* Динамика: столбики периода поверх бледных столбиков прошлого периода */
.crm-series{display:flex;align-items:flex-end;gap:6px;height:132px;margin-top:6px;}
.crm-series-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;height:100%;}
.crm-series-bars{flex:1;position:relative;display:flex;align-items:flex-end;justify-content:center;}
.crm-series-b{
  width:62%;border-radius:5px 5px 0 0;background:var(--accent);min-height:2px;
  animation:crmBarUp .45s var(--ease,ease) both;
}
.crm-series-b.prev{position:absolute;left:50%;transform:translateX(-50%);width:86%;background:var(--border);animation:none;}
@keyframes crmBarUp{from{transform:scaleY(.05);transform-origin:bottom;}to{transform:scaleY(1);transform-origin:bottom;}}
@media (prefers-reduced-motion:reduce){.crm-series-b{animation:none;}}
.crm-series-x{font-size:10px;color:var(--quiet);text-align:center;white-space:nowrap;}
.crm-series-leg{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--quiet);margin-top:8px;}
.crm-series-leg .dot{width:9px;height:9px;border-radius:3px;display:inline-block;}
.crm-series-leg .dot.now{background:var(--accent);}
.crm-series-leg .dot.was{background:var(--border);margin-left:10px;}
.crm-period{
  height:var(--h-chip);padding:0 12px;border-radius:16px;font-size:13px;
  display:inline-flex;align-items:center;color:var(--muted);background:var(--field);border:1px solid transparent;
}
.crm-period:hover{background:var(--field-hover);color:var(--text);}
.crm-period.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
/* «Выбрать даты» — та же кнопка периода, но с рамкой: должна выделяться в ряду
   как отдельное действие, а не как ещё один пресет */
.crm-period-custom{border-color:var(--border);}
.crm-period-custom.on{border-color:transparent;}
/* Панель «свой период» — как остальные .crm-pop, только с двумя полями дат */
.crm-period-pop-row{display:flex;align-items:center;gap:8px;padding:0 6px;}
.crm-period-pop-row .crm-send-in{min-height:var(--h-main);}
.crm-period-pop-dash{color:var(--quiet);flex:0 0 auto;}
.crm-period-pop-err{min-height:16px;padding:4px 6px 0;font-size:11px;color:var(--danger);}
.crm-period-pop .crm-plan-acts{padding:0 6px;}
/* Таблица оплат по месяцам. Сетка одна на шапку, строки и итог — колонки не «плывут»
   между ними. На узком экране числовые колонки ужимаются, но строка не переносится:
   горизонтальной прокрутки страницы быть не должно, скроллит сама таблица. */
.crm-mon{display:flex;flex-direction:column;margin:10px 0 4px;overflow-x:auto;}
.crm-mon-h,.crm-mon-r,.crm-mon-f{
  display:grid;grid-template-columns:minmax(96px,1.4fr) repeat(4,minmax(64px,1fr));
  gap:8px;align-items:center;padding:8px 10px;border-radius:10px;min-width:0;
}
.crm-mon-h{font-size:12.5px;color:var(--label);text-transform:uppercase;letter-spacing:.04em;}
.crm-mon-r{border:0;background:none;font:inherit;color:var(--text);cursor:pointer;text-align:left;}
.crm-mon-r:hover{background:var(--hover-surface);}
.crm-mon-r[aria-expanded="true"]{background:var(--tint);}
.crm-mon-f{border-top:1px solid var(--border);font-weight:650;margin-top:2px;}
.crm-mon-l{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-mon-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.crm-mon-sum{font-weight:650;}
.crm-mon-num.up{color:var(--ok);}
.crm-mon-num.down{color:var(--danger);}
.crm-mon-body{display:flex;flex-direction:column;gap:2px;padding:2px 0 8px 10px;}
.crm-pay-list{display:flex;flex-direction:column;gap:2px;}
.crm-pay-i{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;min-width:0;}
.crm-pay-i:hover{background:var(--hover-surface);}
.crm-pay-i .crm-ava{width:32px;height:32px;font-size:12px;}
.crm-pay-n{flex:1;min-width:0;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-pay-sum{font-size:13px;font-weight:700;color:var(--ok);font-variant-numeric:tabular-nums;white-space:nowrap;}
.crm-pay-at{font-size:11px;color:var(--quiet);white-space:nowrap;min-width:74px;text-align:right;}
.crm-banner{
  display:flex;align-items:center;gap:8px;margin:12px 14px 0;padding:9px 12px;
  border-radius:var(--r-ctl);background:var(--field);color:var(--muted);font-size:13px;
}
.crm-banner .ghost-btn{margin-left:auto;flex:0 0 auto;height:var(--h-chip);}
.crm-banner .icon-btn{margin-left:auto;flex:0 0 auto;}
.crm-banner.info{background:var(--tint);color:var(--accent-active);}

.crm-send{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--border);}
.crm-send-in{
  flex:1;min-height:var(--h-main);max-height:132px;padding:8px 12px;resize:none;
  border-radius:var(--r-ctl);border:1px solid transparent;background:var(--field);
  color:var(--text);font:inherit;font-size:13px;line-height:1.45;
}
.crm-send-in:focus{outline:none;border-color:var(--accent);background:var(--card);}
.crm-send .send:disabled,.crm-send .ghost-btn:disabled{opacity:.45;pointer-events:none;}

/* Анкета и заметки — выдвижной блок под шапкой, а не третья колонка:
   на рабочем экране заказчика три панели не помещаются. */
.crm-drawer{border-bottom:1px solid var(--border);background:var(--feed-bg);}
.crm-drawer-in{padding:12px 14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:8px 18px;}
.crm-field{display:flex;gap:10px;font-size:13px;min-width:0;}
.crm-field-k{flex:0 0 76px;color:var(--quiet);}
.crm-field-v{min-width:0;color:var(--text);word-break:break-word;}
.crm-field-v a{color:var(--accent-active);}
.crm-notes{padding:0 14px 12px;}
.crm-notes-list{display:flex;flex-direction:column;gap:6px;margin:8px 0;}
.crm-note{font-size:13px;line-height:1.5;color:var(--text);background:var(--card);border-radius:12px;padding:8px 10px;}
.crm-note-ts{display:block;margin-top:3px;font-size:11px;color:var(--quiet);}
.crm-note.empty{color:var(--quiet);background:transparent;padding:0;}
.crm-note-form{display:flex;gap:8px;align-items:flex-end;}

/* ── Отложить: маленькое меню с готовыми сроками ── */
.crm-pop{
  position:absolute;z-index:60;min-width:212px;padding:6px;border-radius:14px;
  background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow-menu);
}
.crm-pop-t{padding:7px 10px 5px;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--quiet);font-weight:700;}
.crm-pop-i{
  display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  height:var(--h-main);padding:0 10px;border-radius:10px;font-size:13px;color:var(--text);background:transparent;
}
.crm-pop-i:hover{background:var(--hover-surface);}
.crm-pop-i .crm-pop-when{margin-left:auto;font-size:11px;color:var(--quiet);font-variant-numeric:tabular-nums;}
.crm-pop-i.off{color:var(--danger);}

/* ── Вкладка «Статистика» ── */
/* Сетка на всю ширину: плитки показателей сверху, ниже панели по две в ряд.
   Числа везде tabular-nums, графики — inline-SVG, без библиотек. */
.crm-stats{display:flex;flex-direction:column;gap:12px;padding-bottom:8px;}
/* Заголовок экрана и смысловые группы: между группами 32px, внутри 12px */
.crm-h1{margin:2px 0 14px;}
.crm-h1-t{font-size:20px;font-weight:700;letter-spacing:-.01em;color:var(--text);margin:0;}
.crm-h1-d{font-size:13px;color:var(--label);margin-top:3px;}
.crm-gh{margin:32px 0 12px;}
.crm-gh-t{font-size:15px;font-weight:700;color:var(--text);}
.crm-gh-d{font-size:13px;color:var(--label);margin-top:2px;}
.crm-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start;}
@media (max-width:1180px){.crm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:640px){.crm-kpis{grid-template-columns:1fr;}}
.crm-kpi{
  background:var(--panel);border:1px solid var(--border);border-radius:16px;
  padding:18px 20px;display:flex;flex-direction:column;gap:5px;min-width:0;
}
.crm-kpi-k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--label);font-weight:700;}
.crm-kpi-v{font-size:30px;font-weight:600;line-height:1.05;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;}
.crm-drill{cursor:pointer;position:relative;}
.crm-drill:hover{background:var(--hover-surface);}
.crm-kpi.crm-drill:hover{border-color:var(--accent);}
.crm-drill:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.crm-kpi.crm-drill::after{
  content:"";position:absolute;right:14px;top:16px;width:6px;height:6px;
  border-top:1.5px solid var(--quiet);border-right:1.5px solid var(--quiet);
  transform:rotate(45deg);opacity:0;transition:opacity .12s;
}
.crm-kpi.crm-drill:hover::after{opacity:1;}
.crm-kpi-v.zero{color:var(--quiet);font-weight:500;}
.crm-series-leg .dash{width:16px;height:0;border-top:2px solid var(--accent);display:inline-block;}
.crm-series-leg .dash.was{border-top:2px dashed var(--quiet);margin-left:10px;}
.crm-kpi-v.accent{color:var(--accent-active);}
.crm-kpi-v.ok{color:var(--ok);}
.crm-kpi-v.warn{color:var(--warn);}
.crm-kpi-d{font-size:12px;color:var(--muted);line-height:1.4;}
.crm-kpi-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.crm-delta{
  font-size:11px;font-weight:700;padding:2px 7px;border-radius:9px;white-space:nowrap;
  background:var(--field);color:var(--quiet);font-variant-numeric:tabular-nums;
}
.crm-delta.up{background:rgba(31,157,85,.14);color:var(--ok);}
.crm-delta.down{background:rgba(229,72,77,.14);color:#E5484D;}
.crm-heat{display:flex;flex-direction:column;gap:2px;margin-top:6px;}
.crm-heat-row{display:grid;grid-template-columns:78px repeat(5,minmax(0,1fr));gap:2px;align-items:stretch;}
.crm-heat-row.head{margin-bottom:2px;}
.crm-heat-row.head .crm-heat-c,.crm-heat-row.head .crm-heat-wk{
  background:none;font-size:11px;color:var(--quiet);font-weight:600;
  text-transform:uppercase;letter-spacing:.04em;padding:0 6px 2px;text-align:center;
}
.crm-heat-row.head .crm-heat-wk{text-align:left;}
.crm-heat-wk{
  display:flex;align-items:center;font-size:12px;color:var(--muted);
  padding:0 6px;white-space:nowrap;
}
.crm-heat-c{
  display:flex;align-items:center;justify-content:center;height:34px;border-radius:10px;
  background:var(--field);color:var(--quiet);font-size:13px;font-variant-numeric:tabular-nums;
}
.crm-heat-c.on{
  background:color-mix(in oklab, var(--accent) calc(var(--f) * 100%), var(--field));
  color:var(--text);font-weight:600;
}
.crm-heat-c.zero{color:var(--quiet);opacity:.6;}
.crm-heat-c.pct{background:none;color:var(--muted);font-weight:600;}
@media (max-width:760px){
  .crm-heat-row{grid-template-columns:58px repeat(5,minmax(0,1fr));}
  .crm-heat-c{height:30px;font-size:12px;}
}
.crm-chart{position:relative;margin-top:4px;}
.crm-chart svg{display:block;width:100%;height:190px;overflow:visible;}
.crm-tip{
  position:absolute;top:6px;pointer-events:none;min-width:140px;
  background:var(--panel);border:1px solid var(--border);border-radius:10px;
  padding:7px 9px;box-shadow:var(--shadow-sheet);font-size:12px;color:var(--text);z-index:5;
}
.crm-tip-d{font-size:11px;color:var(--quiet);margin-bottom:3px;}
.crm-tip-r{display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums;}
.crm-tip-r.muted{color:var(--quiet);}
.crm-tip .dot{width:8px;height:8px;border-radius:3px;display:inline-block;}
.crm-tip .dot.now{background:var(--accent);}
.crm-tip .dot.was{background:var(--quiet);}
.crm-kpi-spark{margin-top:2px;height:34px;}
.crm-kpi-spark svg{display:block;width:100%;height:34px;overflow:visible;}

.crm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(440px,100%),1fr));gap:12px;align-items:start;}
.crm-panel{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);
  padding:16px;min-width:0;
}
.crm-panel.wide{grid-column:1/-1;}
.crm-panel-t{font-size:13px;font-weight:700;color:var(--text);margin-bottom:3px;}
.crm-panel-d{font-size:13px;color:var(--muted);margin-bottom:14px;line-height:1.45;}
/* Блок «оплаты из таблицы»: одна строка настройки и отчёт последней загрузки. */
.crm-sheet{margin:0 0 14px;}
.crm-sheet-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px;}
.crm-sheet-in{
  flex:1;min-width:220px;height:var(--h-main);padding:0 12px;
  background:var(--field);border:1px solid var(--border);border-radius:12px;
  color:var(--text);font:inherit;font-size:13px;
}
.crm-sheet-in:focus{outline:none;background:var(--card);box-shadow:inset 0 0 0 1.5px var(--accent);}
.crm-sheet-out{font-size:12px;color:var(--muted);line-height:1.5;
  padding:8px 10px;border:1px solid var(--border);border-radius:11px;background:var(--field);}
.crm-sheet-skip{color:var(--quiet);}

/* Воронка-водопад: ступень + сколько людей ушло после неё */
.crm-fun{display:flex;flex-direction:column;gap:7px;}
.crm-fun-row{display:flex;align-items:center;gap:10px;min-width:0;min-height:44px;}
.crm-fun-label{flex:0 0 148px;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-fun-track{flex:1;height:30px;border-radius:8px;background:var(--field);display:flex;overflow:hidden;min-width:0;}
.crm-fun-fill{
  height:100%;background:var(--accent);display:flex;align-items:center;padding:0 9px;
  font-size:12px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;
  transform-origin:left center;animation:crmGrow .55s var(--ease) both;white-space:nowrap;
}
.crm-fun-fill.paid{background:var(--ok);}
.crm-fun-lost{
  height:100%;background:repeating-linear-gradient(135deg,var(--danger-soft),var(--danger-soft) 6px,transparent 6px,transparent 12px);
  display:flex;align-items:center;justify-content:flex-end;padding:0 8px;
  font-size:11px;color:var(--danger);font-weight:600;font-variant-numeric:tabular-nums;
  transform-origin:left center;animation:crmGrow .55s var(--ease) both;white-space:nowrap;
}
.crm-fun-n{flex:0 0 auto;min-width:104px;text-align:right;font-size:13px;color:var(--text);font-variant-numeric:tabular-nums;}
.crm-fun-n span{color:var(--quiet);}

/* Сгруппированные столбики (когорты по неделям) */
.crm-chart{width:100%;}
.crm-chart svg{display:block;width:100%;height:auto;overflow:visible;}
.crm-bar{animation:crmRise .5s var(--ease) both;}
@keyframes crmRise{from{transform:scaleY(0);}to{transform:none;}}
.crm-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted);}
.crm-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:-1px;}

/* Деньги: горизонтальные столбики с суммой */
.crm-mbars{display:flex;flex-direction:column;gap:8px;}
.crm-mbar{display:flex;align-items:center;gap:10px;}
.crm-mbar-l{flex:0 0 148px;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-mbar-t{flex:1;height:22px;border-radius:7px;background:var(--field);overflow:hidden;min-width:0;}
.crm-mbar-f{height:100%;border-radius:7px;background:var(--accent);transform-origin:left center;animation:crmGrow .5s var(--ease) both;}
.crm-mbar-f.hot{background:var(--danger);}
.crm-mbar-f.warn{background:var(--warn);}
.crm-mbar-n{flex:0 0 auto;min-width:118px;text-align:right;font-size:13px;color:var(--text);font-variant-numeric:tabular-nums;}
.crm-mbar-n span{color:var(--quiet);}

/* Кольцевые диаграммы по скриптам */
.crm-rings{display:flex;gap:18px;flex-wrap:wrap;}
.crm-ring{display:flex;align-items:center;gap:12px;min-width:0;flex:1 1 210px;}
.crm-ring svg{flex:0 0 auto;}
.crm-ring-arc{transform:rotate(-90deg);transform-origin:center;animation:crmArc .8s var(--ease) both;}
@keyframes crmArc{from{stroke-dashoffset:var(--dash-full);}to{stroke-dashoffset:var(--dash);}}
.crm-ring-mid{min-width:0;}
.crm-ring-t{font-size:13px;font-weight:600;color:var(--text);}
.crm-ring-d{font-size:12px;color:var(--muted);line-height:1.45;margin-top:2px;}

.crm-drop{
  display:flex;align-items:center;gap:8px;margin-top:14px;padding:10px 12px;
  border-radius:var(--r-ctl);background:var(--danger-soft);color:var(--danger);font-size:13px;
}
.crm-drop svg{flex:0 0 auto;}
.crm-mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:10px 20px;}
.crm-mini-i{display:flex;align-items:baseline;gap:8px;font-size:13px;color:var(--muted);}
.crm-mini-v{font-size:17px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;}

.crm-stuck{display:flex;flex-direction:column;gap:2px;}
.crm-stuck-i{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:8px 10px;border-radius:12px;background:transparent;min-width:0;
}
.crm-stuck-i:hover{background:var(--hover-surface);}
.crm-stuck-i .crm-ava{width:34px;height:34px;font-size:13px;}
.crm-stuck-n{flex:1;min-width:0;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ── Вкладка «Молчуны»: ступени по сроку молчания ──────────────────────────
   Цвет — только маркер срочности (шкала «остыл сильнее» → теплее), сами данные
   остаются текстом: раскрашенные строки целиком читаются как ошибка. */
.crm-sil-sum{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
  background:var(--border);border:1px solid var(--border);border-radius:var(--r-card);
  overflow:hidden;margin-bottom:18px;
}
.crm-sil-sum-i{background:var(--panel);padding:14px 16px;}
.crm-sil-sum-v{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;}
.crm-sil-sum-i.hot .crm-sil-sum-v{color:#E5484D;}
.crm-sil-sum-i.money .crm-sil-sum-v{color:var(--ok);}
.crm-sil-sum-i.muted .crm-sil-sum-v{color:var(--quiet);}
.crm-sil-sum-k{font-size:11px;color:var(--quiet);margin-top:3px;}
.crm-sil-g{margin-bottom:10px;}
.crm-sil-h{
  display:flex;align-items:center;gap:9px;width:100%;padding:11px 12px;border:none;
  border-radius:10px;background:var(--field);color:var(--text);font:inherit;
  font-size:13px;font-weight:600;cursor:pointer;text-align:left;
  transition:background .12s ease;
}
.crm-sil-h:hover{background:var(--field-hover);}
.crm-sil-dot{width:8px;height:8px;border-radius:3px;flex:0 0 auto;background:var(--quiet);}
.crm-sil-h.tone-d20 .crm-sil-dot{background:#E5484D;}
.crm-sil-h.tone-d10 .crm-sil-dot{background:#E8813D;}
.crm-sil-h.tone-d5 .crm-sil-dot{background:#E8A33D;}
.crm-sil-h.tone-d3 .crm-sil-dot{background:#3390EC;}
.crm-sil-h.tone-d1 .crm-sil-dot{background:var(--quiet);}
.crm-sil-h svg{transition:transform .15s ease;transform:rotate(-90deg);color:var(--quiet);}
.crm-sil-h.open svg{transform:rotate(0);}
.crm-sil-t{flex:1;min-width:0;}
.crm-sil-money{font-size:13px;font-weight:600;color:var(--quiet);font-variant-numeric:tabular-nums;}
.crm-sil-n{
  min-width:24px;height:21px;padding:0 8px;border-radius:11px;background:var(--tint);
  color:var(--accent-active);font-size:12px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;
}
.crm-sil-body{padding:8px 0 4px;}
.crm-sil-body > .ghost-btn{margin:8px 0 0 34px;height:var(--h-chip);}
.crm-sil-list{display:flex;flex-direction:column;}
/* строка человека: тонкий разделитель вместо коробок — так помещается втрое больше */
.crm-sil{
  position:relative;padding:10px 12px 10px 22px;border-bottom:1px solid var(--border);
  transition:background .12s ease;
}
.crm-sil:hover{background:var(--hover-surface);}
.crm-sil::before{
  content:"";position:absolute;left:10px;top:14px;bottom:14px;width:3px;border-radius:2px;
  background:var(--quiet);opacity:.55;
}
.crm-sil.t20::before{background:#E5484D;opacity:1;}
.crm-sil.t10::before{background:#E8813D;opacity:1;}
.crm-sil.t5::before{background:#E8A33D;opacity:.9;}
.crm-sil.t1::before{background:#3390EC;opacity:.7;}
.crm-sil.snz::before{background:var(--quiet);opacity:.4;}
.crm-sil.done{opacity:.5;}
.crm-sil-top{display:flex;align-items:center;gap:11px;min-width:0;}
.crm-sil-mid{flex:1;min-width:0;}
.crm-sil-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-sil-sub{display:flex;gap:7px;align-items:baseline;font-size:11px;margin-top:2px;min-width:0;}
.crm-sil-stage{
  flex:0 0 auto;padding:1px 7px;border-radius:9px;background:var(--field);
  color:var(--muted);font-size:11px;
}
.crm-sil-q{color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.crm-sil-days{flex:0 0 auto;text-align:right;min-width:62px;}
.crm-sil-days-v{display:block;font-size:17px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;line-height:1.1;}
.crm-sil.t20 .crm-sil-days-v{color:#E5484D;}
.crm-sil.t10 .crm-sil-days-v{color:#E8813D;}
.crm-sil.snz .crm-sil-days-v{font-size:13px;font-weight:600;color:var(--quiet);}
.crm-sil-days-k{display:block;font-size:11px;color:var(--quiet);}
/* действия появляются по наведению — в покое строка остаётся чистой */
/* Кнопки видны всегда: по наведению строка прыгала на 33px и список ехал. */
.crm-sil-acts{display:flex;gap:6px;margin:8px 0 0 47px;}
.crm-sil-b{
  display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:13px;
  border:1px solid var(--border);background:var(--panel);color:var(--muted);
  font:inherit;font-size:12px;cursor:pointer;
}
.crm-sil-b:hover{background:var(--field-hover);color:var(--text);}
.crm-sil-b.main{background:var(--tint);border-color:transparent;color:var(--accent-active);font-weight:600;}
.crm-sil-write{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px 47px;}

/* Объяснимый дожим: одна рабочая таблица «когда / почему / что напишет».
   Акцент остаётся у переключателя режима; статусы читаются не только цветом. */
.crm-fu{flex:0 0 auto;margin-bottom:20px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--panel);overflow:hidden;}
.crm-fu-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px;border-bottom:1px solid var(--border);}
.crm-fu-kicker{font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent-active);}
.crm-fu-title{margin:4px 0 0;color:var(--text);font:600 20px/1.2 var(--serif);letter-spacing:-.015em;}
.crm-fu-lead{max-width:72ch;margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;}
.crm-fu-mode{flex:0 0 auto;min-height:44px;display:inline-flex;align-items:center;gap:7px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--field);color:var(--muted);font:600 12px var(--sans);}
.crm-fu-mode:hover{background:var(--field-hover);color:var(--text);}
.crm-fu-mode.on{border-color:transparent;background:var(--accent);color:var(--on-accent);}
.crm-fu-mode-dot{width:7px;height:7px;border-radius:50%;background:currentColor;}
.crm-fu-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--border);}
.crm-fu-sum{padding:12px 16px;border-right:1px solid var(--border);}
.crm-fu-sum:last-child{border-right:0;}
.crm-fu-sum b{display:block;color:var(--text);font-size:21px;line-height:1;font-variant-numeric:tabular-nums;}
.crm-fu-sum span{display:block;margin-top:4px;color:var(--quiet);font-size:10px;}
.crm-fu-tabs{display:flex;gap:5px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid var(--border);scrollbar-width:thin;}
.crm-fu-tab{flex:0 0 auto;min-height:44px;padding:0 12px;border-radius:22px;background:var(--field);color:var(--muted);font:600 11px var(--sans);white-space:nowrap;}
.crm-fu-tab:hover{background:var(--field-hover);color:var(--text);}
.crm-fu-tab.on{background:var(--tint);color:var(--accent-active);}
.crm-fu-history-days{display:flex;gap:5px;overflow-x:auto;padding:8px 12px;border-bottom:1px solid var(--border);scrollbar-width:thin;}
.crm-fu-history-days[hidden]{display:none;}
.crm-fu-history-day{flex:0 0 auto;min-height:44px;padding:0 12px;border-radius:22px;background:transparent;color:var(--quiet);font:600 11px var(--sans);white-space:nowrap;}
.crm-fu-history-day:hover{background:var(--field-hover);color:var(--text);}
.crm-fu-history-day.on{background:var(--field);color:var(--text);}
.crm-fu-bulk{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--border);}
.crm-fu-bulk[hidden]{display:none;}
.crm-fu-bulk .crm-fu-action:last-child{margin-left:auto;}
.crm-fu-list{display:flex;flex-direction:column;}
.crm-fu-row{display:grid;grid-template-columns:minmax(150px,.75fr) minmax(135px,.65fr) minmax(200px,1fr) minmax(240px,1.4fr);gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);}
.crm-fu-row:last-child{border-bottom:0;}
.crm-fu-row:hover{background:var(--hover-surface);}
.crm-fu-row.is-sent,.crm-fu-row.is-sent:hover{background:var(--ok-soft);}
.crm-fu-person{display:flex;align-items:center;gap:9px;min-width:0;}
.crm-fu-person-text{min-width:0;flex:1;}
.crm-fu-check{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;border-radius:50%;cursor:pointer;}
.crm-fu-check:hover{background:var(--field-hover);}
.crm-fu-check:focus-within{outline:2px solid var(--accent);outline-offset:2px;}
.crm-fu-check input{width:20px;height:20px;margin:0;accent-color:var(--accent);cursor:pointer;}
.crm-fu-person .crm-ava{width:34px;height:34px;font-size:12px;}
.crm-fu-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:13px;font-weight:650;}
.crm-fu-stage{margin-top:2px;color:var(--quiet);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-fu-when{color:var(--text);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums;}
.crm-fu-silent{margin-top:4px;color:var(--quiet);font-size:10px;line-height:1.35;font-variant-numeric:tabular-nums;}
.crm-fu-status{display:inline-flex;align-items:center;min-height:20px;margin-top:4px;padding:0 7px;border-radius:10px;background:var(--field);color:var(--quiet);font-size:10px;font-weight:650;}
.crm-fu-status.auto{background:var(--tint);color:var(--accent-active);}
.crm-fu-status.sent{background:var(--ok-soft);color:var(--ok);}
.crm-fu-status.fail{background:var(--danger-soft);color:var(--danger);}
.crm-fu-why{min-width:0;color:var(--muted);font-size:12px;line-height:1.4;}
.crm-fu-why b{display:block;margin-bottom:3px;color:var(--text);font-size:12px;}
.crm-fu-why .crm-fu-evidence-label{margin-top:8px;}
.crm-fu-text{min-width:0;color:var(--text);font-size:12px;line-height:1.45;}
.crm-fu-text p{margin:0;overflow-wrap:anywhere;white-space:pre-wrap;}
.crm-fu-text b{display:block;margin-bottom:3px;font-size:12px;}
.crm-fu-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px;}
.crm-fu-action{min-height:44px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;border-radius:22px;background:var(--field);color:var(--muted);font:600 11px var(--sans);text-decoration:none;}
.crm-fu-action:hover{background:var(--field-hover);color:var(--text);}
.crm-fu-action:focus-visible,.crm-fu-tab:focus-visible,.crm-fu-history-day:focus-visible,.crm-fu-mode:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.crm-fu-action:disabled{opacity:.55;cursor:not-allowed;}
.crm-fu-empty{padding:18px 16px;color:var(--quiet);font-size:12px;line-height:1.5;}
.crm-fu-rule{padding:10px 16px;border-top:1px solid var(--border);color:var(--quiet);font-size:10px;line-height:1.5;}

/* ── Вкладка «Контент-план»: месячный выпуск Reels и продуктовые CTA ── */
.crm-content{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0;padding:4px 0 28px;}
.crm-content-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}
.crm-content-title{margin:0;color:var(--text);font-size:22px;line-height:1.2;letter-spacing:-.02em;}
.crm-content-lead{max-width:70ch;margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.5;}
.crm-content-status{display:flex;align-items:center;gap:7px;min-height:28px;color:var(--quiet);font-size:12px;text-align:right;}
.crm-content-status.is-syncing{color:var(--accent-active);}
.crm-content-status.is-warning{color:var(--warn);}
.crm-content-status.is-error{color:var(--danger);}
.crm-content-status.is-syncing svg{animation:crmContentSpin 1s linear infinite;}
@keyframes crmContentSpin{to{transform:rotate(360deg);}}
.crm-content-toolbar{display:grid;grid-template-columns:minmax(210px,1.7fr) minmax(148px,.8fr) auto;gap:10px;align-items:end;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.crm-content-field label{color:var(--quiet);font-size:11px;font-weight:650;letter-spacing:.035em;text-transform:uppercase;}
.crm-content-field input{width:100%;height:44px;min-width:0;padding:0 11px;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--field);color:var(--text);font:inherit;font-size:13px;}
.crm-content-field input:focus-visible,.crm-content-select:focus-visible,.crm-content-action:focus-visible,.crm-content-filter:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:transparent;}
.crm-content-actions{display:flex;gap:8px;align-items:center;min-width:0;flex-wrap:wrap;}
.crm-content-action{min-height:44px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:var(--r-ctl);border:1px solid var(--border);background:var(--field);color:var(--text);font:600 13px var(--sans);white-space:nowrap;}
.crm-content-action:hover{background:var(--field-hover);}
.crm-content-action.primary{border-color:transparent;background:var(--accent);color:var(--on-accent);}
.crm-content-action:disabled{opacity:.55;cursor:not-allowed;}
.crm-content-datebar{display:grid;grid-template-columns:minmax(160px,220px) minmax(160px,220px) auto;gap:10px;align-items:end;padding:12px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-date-error{grid-column:1/-1;color:var(--danger);font-size:12px;line-height:1.45;min-height:18px;}
.crm-content-period-note{color:var(--muted);font-size:12px;line-height:1.45;}
.crm-content-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.crm-content-kpi{min-width:0;padding:15px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-kpi-k{color:var(--quiet);font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.035em;}
.crm-content-kpi-v{margin-top:8px;color:var(--text);font-size:48px;font-weight:720;line-height:.95;letter-spacing:-.035em;font-variant-numeric:tabular-nums;}
.crm-content-kpi-v span{color:var(--quiet);font-size:18px;font-weight:600;letter-spacing:-.01em;}
.crm-content-kpi-d{min-height:18px;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.45;}
.crm-content-kpi--cta .crm-content-kpi-v{color:var(--ok);}
.crm-content-goals{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px;}
.crm-content-goal{min-width:0;padding:9px 10px;background:var(--field);border-radius:var(--r-ctl);}
.crm-content-goal b{display:block;color:var(--text);font-size:20px;line-height:1.1;font-variant-numeric:tabular-nums;}
.crm-content-goal span{display:block;margin-top:4px;color:var(--quiet);font-size:10px;font-weight:650;text-transform:uppercase;letter-spacing:.035em;}
.crm-content-progress{height:5px;margin-top:11px;border-radius:3px;background:var(--field);overflow:hidden;}
.crm-content-progress i{display:block;height:100%;border-radius:inherit;background:var(--accent);transform-origin:left;}
.crm-content-kpi--cta .crm-content-progress i{background:var(--ok);}
.crm-content-listbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:2px;}
.crm-content-filters{display:flex;gap:6px;flex-wrap:wrap;}
.crm-content-filter{min-height:38px;padding:0 11px;border:1px solid transparent;border-radius:18px;background:var(--field);color:var(--muted);font:600 12px var(--sans);}
.crm-content-filter:hover{background:var(--field-hover);color:var(--text);}
.crm-content-filter.on{background:var(--tint);color:var(--accent-active);}
.crm-content-list-count{color:var(--quiet);font-size:12px;white-space:nowrap;}
.crm-content-reels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;}
.crm-content-reel{display:grid;grid-template-columns:minmax(0,min(52%,380px)) minmax(0,1fr);gap:14px;align-content:start;align-items:start;min-width:0;padding:12px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);content-visibility:auto;contain-intrinsic-size:auto 720px;}
.crm-content-thumb{width:100%;max-width:100%;height:auto;aspect-ratio:9/16;justify-self:center;display:block;object-fit:cover;border-radius:10px;background:var(--field);}
.crm-content-reel[data-content-type="carousel"] .crm-content-thumb{object-fit:contain;}
.crm-content-media{width:100%;min-width:0;}
.crm-content-gallery-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:thin;border-radius:10px;}
.crm-content-gallery-track:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.crm-content-gallery-slide{flex:0 0 100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always;}
.crm-content-gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;}
.crm-content-gallery-count{color:var(--quiet);font-size:12px;font-variant-numeric:tabular-nums;}
.crm-content-thumb.empty{display:flex;align-items:center;justify-content:center;color:var(--quiet);}
.crm-content-main{min-width:0;max-width:75ch;}
.crm-content-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--quiet);font-size:11px;}
.crm-content-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:11px;background:var(--field);color:var(--muted);font-size:11px;font-weight:700;}
.crm-content-badge.cta{background:rgba(31,157,85,.13);color:var(--ok);}
.crm-content-badge.review{background:rgba(183,121,31,.15);color:var(--warn);}
.crm-content-badge.manual{border:1px solid currentColor;background:transparent;}
.crm-content-script{display:grid;gap:12px;margin-top:16px;max-width:75ch;}
.crm-content-script-part{min-width:0;}
.crm-content-script-part+.crm-content-script-part{padding-top:12px;border-top:1px solid var(--border);}
.crm-content-script-part b{display:block;margin-bottom:3px;color:var(--quiet);font-size:10px;text-transform:uppercase;letter-spacing:.045em;}
.crm-content-script-part div{max-width:75ch;color:var(--text);font-size:15px;line-height:1.62;white-space:pre-wrap;overflow-wrap:anywhere;}
.crm-content-open{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:16px;border-radius:var(--r-ctl);color:var(--accent-active);font-size:12px;font-weight:650;text-decoration:none;}
.crm-content-open:hover{background:var(--hover-surface);}
.crm-content-funnel{padding:0 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-funnel>summary{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;}
.crm-content-funnel>summary::-webkit-details-marker{display:none;}
.crm-content-funnel>summary svg{color:var(--quiet);transform:rotate(0);transition:transform 180ms ease-out;}
.crm-content-funnel[open]>summary svg{transform:rotate(180deg);}
.crm-content-funnel-body{display:flex;flex-direction:column;gap:12px;padding:0 0 16px;}
.crm-content-funnel-title{margin:0;color:var(--text);font-size:16px;line-height:1.3;}
.crm-content-funnel-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.crm-content-funnel-kpi{min-width:0;padding:10px 12px;background:var(--field);border-radius:var(--r-ctl);}
.crm-content-funnel-k{color:var(--quiet);font-size:10px;font-weight:650;text-transform:uppercase;letter-spacing:.035em;}
.crm-content-funnel-v{margin-top:5px;color:var(--text);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.crm-content-reminders{padding:0 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-reminders>summary{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;color:var(--text);font-size:13px;font-weight:650;list-style:none;}
.crm-content-reminders>summary::-webkit-details-marker{display:none;}
.crm-content-reminders>summary svg{color:var(--quiet);transform:rotate(0);transition:transform 180ms ease-out;}
.crm-content-reminders[open]>summary svg{transform:rotate(180deg);}
.crm-content-reminder-body{display:flex;flex-direction:column;gap:12px;padding:0 0 16px;}
.crm-content-reminder-form{display:grid;grid-template-columns:auto minmax(160px,220px);gap:10px;align-items:end;}
.crm-content-reminder-toggle{min-height:44px;display:flex;align-items:center;gap:8px;color:var(--text);font-size:13px;}
.crm-content-reminder-toggle input{width:20px;height:20px;accent-color:var(--accent);}
.crm-content-reminder-form select{width:100%;height:44px;min-width:0;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--field);color:var(--text);font:inherit;font-size:13px;}
.crm-content-recipient-field{grid-column:1/-1;}
.crm-content-recipient-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:8px;}
.crm-content-recipient{min-height:52px;display:grid;grid-template-columns:20px minmax(0,1fr);gap:9px;align-items:center;padding:9px 10px;background:var(--field);border-radius:var(--r-ctl);color:var(--text);font-size:13px;}
.crm-content-recipient input{width:20px;height:20px;accent-color:var(--accent);}
.crm-content-recipient small{display:block;margin-top:2px;color:var(--quiet);font-size:11px;line-height:1.3;}
.crm-content-recipient.is-disabled{opacity:.58;}
.crm-content-import{padding:0 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.crm-content-import>summary{min-height:48px;display:flex;align-items:center;gap:8px;color:var(--text);font-size:13px;font-weight:650;cursor:pointer;list-style:none;}
.crm-content-import>summary::-webkit-details-marker{display:none;}
.crm-content-import-form{display:grid;grid-template-columns:minmax(220px,1fr) minmax(150px,200px) auto;gap:10px;align-items:end;padding:0 0 14px;}
.crm-content-import-form>.crm-content-reminder-error{grid-column:1/-1;}
.crm-content-reminder-preview{white-space:pre-line;padding:10px 12px;background:var(--field);border-radius:var(--r-ctl);color:var(--muted);font-size:12px;line-height:1.5;}
.crm-content-reminder-error{color:var(--danger);font-size:12px;line-height:1.45;}
/* ── Контент-план / Клиенты: Instagram-результаты и журнал Telegram ── */
.ct-subtabs{width:max-content;max-width:100%;display:flex;gap:4px;padding:3px;border-radius:var(--r-ctl);background:var(--field);overflow-x:auto;}
.ct-subtab{min-height:38px;padding:0 15px;border-radius:10px;background:transparent;color:var(--muted);font:650 12px var(--sans);white-space:nowrap;}
.ct-subtab:hover{color:var(--text);background:var(--field-hover);}
.ct-subtab.on{color:var(--text);background:var(--panel);box-shadow:0 7px 18px -15px rgba(16,22,30,.55);}
.ct-subtab:focus-visible,.ct-client-row:focus-visible,.ct-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.ct-detail-tabs{margin:12px 16px 0;max-width:calc(100% - 32px)}.ct-detail-pane{min-width:0}
@media (max-width:620px){.ct-detail .ct-detail-tabs{width:auto}}
.ct-stats{display:flex;flex-direction:column;gap:10px;min-width:0}.ct-stats .ct-checkline{margin-top:0}.ct-stats .ct-mini-progress{margin-top:8px}
.ct-history-block{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.ct-history{display:grid;gap:2px;border-radius:var(--r-ctl);overflow:hidden}
.ct-history-row{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:10px;padding:9px 12px;background:var(--field);color:var(--text);font-size:12px;font-variant-numeric:tabular-nums}
.ct-history-row>span:not(:first-child){text-align:right}.ct-history-row>span:first-child{overflow-wrap:anywhere}
.ct-history-row.head{background:transparent;color:var(--quiet);font-size:10px;font-weight:650;padding-block:4px}
.ct-history-row.current{box-shadow:inset 3px 0 0 var(--accent);font-weight:650}
.ct-client-stats .cab-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ct-client-stats-body{display:flex;flex-direction:column;gap:12px;min-width:0}
.cab-client-profile .row2{margin-top:12px}.cab-client-profile .field-err{margin-top:8px}.cab-client-profile .cab-telegram-status{display:flex}.cab-client-profile .cab-telegram-actions,.cab-client-empty .cab-telegram-actions{margin-top:14px}
.acc-role-tabs{margin:2px 0 14px}
.ct-detail-metric .ct-mini-progress{background:var(--border)}
.ct-client-stats .ct-detail-metric span{font-size:12px}.ct-client-stats .ct-detail-metric small{font-size:13px;line-height:1.45}
.ct-client-stats .ct-history-row{font-size:13px}.ct-client-stats .ct-history-row.head{font-size:11px}
.ct-client-stats .ct-pubs-title{font-size:14px;font-weight:650}
.ct-client-stats .ct-stats .ct-history-block,.ct-client-stats .ct-stats>.ct-pubs{margin-top:16px}
.ct-stats .crm-content-reels>.ct-empty{grid-column:1/-1}
.acc-client-badge{color:var(--muted);background:var(--field);border-color:var(--border)}
.cab-client-profile input:disabled{opacity:.55;cursor:not-allowed}.cab-client-profile .ct-owner-alert{margin-top:12px}
.modal-overlay.acc-new-overlay{align-items:flex-start;overflow-y:auto}
@media (max-width:480px){.ct-history-row{gap:6px;padding:8px 10px;font-size:11px}.ct-client-stats .ct-history-row{font-size:12px}}
.ct-content-pane{min-width:0}.ct-content-pane>.crm-content{padding:0}
.ct-owner-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:14px 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.ct-owner-stat{min-width:0;padding:2px 16px;border-inline-end:1px solid var(--border);}
.ct-owner-stat:last-child{border-inline-end:0;}.ct-owner-stat span{display:block;color:var(--quiet);font-size:10px;font-weight:650;letter-spacing:.035em;text-transform:uppercase;}
.ct-owner-stat strong{display:block;margin-top:7px;color:var(--text);font-size:24px;line-height:1.05;letter-spacing:-.025em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.ct-owner-stat small{display:block;margin-top:5px;color:var(--muted);font-size:11px;line-height:1.35;}.ct-owner-stat small.ok{color:var(--ok)}.ct-owner-stat small.warn{color:var(--warn)}
.ct-owner-alert{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;border-radius:var(--r-ctl);background:var(--warn-soft,rgba(183,121,31,.15));color:var(--warn);font-size:12px;line-height:1.45;}
.ct-owner-alert.error{background:var(--danger-soft);color:var(--danger)}.ct-owner-alert svg{flex:0 0 auto;margin-top:1px}.ct-owner-alert b{color:var(--text)}
.ct-create{padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.ct-create[hidden]{display:none}.ct-create-form{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(130px,.7fr) minmax(130px,.7fr) auto;gap:10px;align-items:end;}
.ct-create-result{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:12px;padding:12px 14px;border-radius:var(--r-ctl);background:var(--ok-soft);color:var(--ok);font-size:12px;line-height:1.45;}
.ct-create-result[hidden]{display:none}.ct-create-code{display:block;color:var(--text);font-size:20px;font-weight:720;letter-spacing:.07em;font-variant-numeric:tabular-nums;}
.ct-owner-workspace{display:grid;grid-template-columns:minmax(430px,1.18fr) minmax(340px,.82fr);gap:12px;align-items:start;min-width:0;}
.ct-owner-panel{min-width:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;}
.ct-list-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);}
.ct-panel-title{color:var(--text);font-size:14px;font-weight:700}.ct-panel-sub{margin-top:3px;color:var(--quiet);font-size:11px;line-height:1.35;}
.ct-search{width:min(220px,45%);height:40px;padding:0 11px;border:1px solid var(--border);border-radius:var(--r-ctl);background:var(--field);color:var(--text);font:inherit;font-size:13px;}
.ct-search:focus-visible,.ct-setting input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:transparent;}
.ct-client-columns,.ct-client-row{display:grid;grid-template-columns:minmax(130px,1.3fr) minmax(74px,.72fr) minmax(74px,.72fr) minmax(82px,.68fr);gap:8px;align-items:center;}
.ct-client-columns{padding:9px 14px;color:var(--quiet);font-size:10px;font-weight:650;letter-spacing:.035em;text-transform:uppercase;border-bottom:1px solid var(--border);}
.ct-client-row{width:100%;min-height:70px;padding:11px 14px;border-bottom:1px solid var(--border);background:transparent;text-align:start;cursor:pointer;}
.ct-client-row:last-child{border-bottom:0}.ct-client-row:hover{background:var(--hover-surface)}.ct-client-row.on{background:var(--tint)}
.ct-client-person{min-width:0}.ct-client-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:13px;font-weight:680;}.ct-client-meta{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--quiet);font-size:10px;}
.ct-client-period{min-width:0}.ct-client-period-label{display:none;color:var(--quiet);font-size:10px;font-weight:650}.ct-client-metric{display:block;color:var(--text);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.ct-client-metric small{display:block;margin-top:3px;color:var(--quiet);font-size:10px;font-weight:550;line-height:1.25}.ct-mini-progress{display:block;height:4px;margin-top:6px;border-radius:3px;background:var(--field);overflow:hidden}.ct-mini-progress i{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.ct-status{display:inline-flex;align-items:center;gap:6px;color:var(--quiet);font-size:10px;font-weight:680;white-space:nowrap}.ct-status i{width:7px;height:7px;border-radius:50%;background:currentColor}.ct-status.ok{color:var(--ok)}.ct-status.warn{color:var(--warn)}.ct-status.error{color:var(--danger)}
.ct-detail{position:sticky;top:12px}.ct-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border);}.ct-detail-head>div{min-width:0}.ct-detail-name{overflow-wrap:anywhere;color:var(--text);font-size:18px;font-weight:720;letter-spacing:-.02em}.ct-detail-meta{margin-top:4px;color:var(--quiet);font-size:10px;line-height:1.45;overflow-wrap:anywhere}
.ct-detail-section{padding:14px 16px;border-bottom:1px solid var(--border)}.ct-detail-section:last-child{border-bottom:0}.ct-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}.ct-section-head h3{margin:0;color:var(--text);font-size:13px}.ct-section-head span{color:var(--quiet);font-size:10px;text-align:end}
.ct-detail-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ct-detail-metric{padding:11px 12px;border-radius:var(--r-ctl);background:var(--field)}.ct-detail-metric span{color:var(--quiet);font-size:10px}.ct-detail-metric strong{display:block;margin-top:4px;color:var(--text);font-size:19px;line-height:1.05;font-variant-numeric:tabular-nums}.ct-detail-metric small{display:block;margin-top:5px;color:var(--muted);font-size:10px}
.ct-checkline{display:flex;align-items:flex-start;gap:7px;margin-top:10px;color:var(--quiet);font-size:11px;font-weight:650;line-height:1.4}.ct-checkline.ok{color:var(--ok)}.ct-checkline.error{color:var(--danger)}.ct-checkline svg{flex:0 0 auto;margin-top:1px}
.ct-reel-list{display:grid}.ct-reel{min-height:52px;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:9px;border-top:1px solid var(--border);color:inherit;text-decoration:none}.ct-reel:first-child{border-top:0}.ct-reel-date{color:var(--quiet);font-size:10px}.ct-reel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:12px;font-weight:650}.ct-reel-kind{display:block;margin-top:2px;color:var(--quiet);font-size:10px}.ct-reel-views{font-size:12px;font-weight:720;font-variant-numeric:tabular-nums}
.ct-pubs{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card)}.ct-pubs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.ct-pubs-head>div{min-width:0}.ct-pubs-title{margin:0;color:var(--text);font-size:16px;line-height:1.3}.ct-pubs-sub{margin-top:4px;color:var(--quiet);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.ct-pubs .crm-content-reels{grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr))}.ct-pubs .crm-content-reel{grid-template-columns:minmax(0,150px) minmax(0,1fr);contain-intrinsic-size:auto 300px}.ct-pubs .crm-content-script{margin-top:10px}.ct-pubs .crm-content-open{margin-top:8px}
.ct-pub-views{margin-top:8px;color:var(--text);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.ct-pub-views.muted{color:var(--quiet);font-size:12px;font-weight:600}.ct-pubs .crm-content-script-part div.ct-pub-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:8;overflow:hidden;font-size:14px;overflow-wrap:anywhere}.ct-pubs .crm-content-script-part div.ct-pub-text.open{display:block;-webkit-line-clamp:unset}.ct-pub-more{margin-top:6px}
@media (max-width:480px){.ct-pubs{padding:12px}.ct-pubs .crm-content-reel{grid-template-columns:96px minmax(0,1fr);gap:12px}.ct-pubs-head .crm-content-filters{width:100%}.ct-pubs-head .crm-content-filter{flex:1 1 auto}}
.ct-journal{display:grid;gap:13px}.ct-message{display:grid;grid-template-columns:8px minmax(0,1fr);gap:9px}.ct-message-dot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:var(--accent)}.ct-message.in .ct-message-dot{background:var(--quiet)}.ct-message.error .ct-message-dot{background:var(--danger)}.ct-message-main{min-width:0}.ct-message-top{display:flex;justify-content:space-between;gap:10px}.ct-message-kind{color:var(--text);font-size:11px;font-weight:700}.ct-message-time{flex:0 0 auto;color:var(--quiet);font-size:10px}.ct-message-text{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.ct-message-check{display:inline-flex;margin-top:5px;color:var(--ok);font-size:10px;font-weight:650}.ct-message.error .ct-message-check{color:var(--danger)}
.ct-settings{display:grid;grid-template-columns:1fr 1fr;gap:9px}.ct-setting{display:grid;gap:6px;min-width:0}.ct-setting label{color:var(--quiet);font-size:10px;font-weight:650}.ct-setting input[type="number"]{width:100%;height:40px;padding:0 10px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text)}
.ct-setting.toggle{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:36px;color:var(--text);font-size:11px}.ct-switch{width:42px;height:24px;flex:0 0 auto;padding:3px;border-radius:13px;background:var(--border-strong);display:flex;justify-content:flex-start}.ct-switch.on{justify-content:flex-end;background:var(--accent)}.ct-switch i{width:18px;height:18px;border-radius:50%;background:var(--panel)}
.ct-codebox{padding:11px 12px;border-radius:var(--r-ctl);background:var(--field);color:var(--muted);font-size:11px;line-height:1.45}.ct-codebox strong{display:block;margin-bottom:3px;color:var(--text);font-size:17px;letter-spacing:.06em;font-variant-numeric:tabular-nums}.ct-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}.ct-actions .crm-content-action{flex:1 1 auto;font-size:11px}.ct-danger{color:var(--danger)!important}.ct-empty{padding:22px 16px;color:var(--quiet);font-size:12px;line-height:1.5;text-align:center}
@media (max-width:1300px){
  .crm-content-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));}
  .crm-content-actions{grid-column:1/-1;}
  .ct-owner-workspace{grid-template-columns:minmax(390px,1fr) minmax(310px,.8fr)}
}
@media (max-width:900px){
  .crm-fu-row{grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;}
  .crm-fu-why,.crm-fu-text{grid-column:1/-1;}
  .crm-content-reels{grid-template-columns:1fr;}
  .crm-content-reel{grid-template-columns:minmax(0,min(40%,380px)) minmax(0,1fr);gap:18px;}
  .crm-content-datebar{grid-template-columns:repeat(2,minmax(0,1fr));}
  .crm-content-datebar .crm-content-actions{grid-column:1/-1;}
  .crm-content-funnel-kpis{grid-template-columns:repeat(3,minmax(0,1fr));}
  .crm-content-reminder-form{grid-template-columns:1fr 1fr;}
  .crm-content-reminder-toggle{grid-column:1/-1;}
  .ct-owner-summary{grid-template-columns:1fr 1fr}.ct-owner-stat:nth-child(2){border-inline-end:0}.ct-owner-stat:nth-child(-n+2){padding-bottom:12px;border-bottom:1px solid var(--border)}.ct-owner-stat:nth-child(n+3){padding-top:12px}
  .ct-owner-workspace{grid-template-columns:1fr}.ct-detail{position:static}.ct-create-form{grid-template-columns:1fr 1fr}.ct-create-form .crm-content-field:first-child{grid-column:1/-1}.ct-create-form .crm-content-actions{grid-column:1/-1}
}
@media (max-width:620px){
  .crm-content{gap:12px;}
  .crm-content-head,.crm-content-listbar{flex-direction:column;align-items:stretch;}
  .crm-content-status{text-align:left;}
  .crm-content-toolbar,.crm-content-datebar,.crm-content-kpis{grid-template-columns:1fr;}
  .crm-content-actions{grid-column:auto;display:grid;grid-template-columns:1fr;}
  .crm-content-datebar .crm-content-actions{grid-column:auto;grid-template-columns:1fr 1fr;}
  .crm-content-reel{grid-template-columns:minmax(0,1fr);padding:12px;gap:16px;}
  .crm-content-media{max-width:420px;justify-self:center;}
  .crm-content-open{min-height:44px;}
  .crm-content-funnel-kpis{grid-template-columns:1fr 1fr;}
  .crm-content-reminder-form{grid-template-columns:1fr;}
  .crm-content-reminder-toggle{grid-column:auto;}
  .crm-content-import-form{grid-template-columns:1fr;}
  .ct-subtabs{width:100%}.ct-subtab{flex:1}.ct-owner-stat{padding-inline:12px}.ct-owner-stat strong{font-size:20px}.ct-list-head{align-items:stretch;flex-direction:column}.ct-search{width:100%}.ct-client-columns{display:none}.ct-client-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px;padding:14px}.ct-client-person,.ct-client-row>.ct-status{grid-column:1/-1}.ct-client-period{padding:9px 10px;border-radius:10px;background:var(--field)}.ct-client-period-label{display:block;margin-bottom:4px}.ct-client-row>.ct-status{justify-self:start}.ct-create-form{grid-template-columns:1fr}.ct-create-form .crm-content-field:first-child,.ct-create-form .crm-content-actions{grid-column:auto}.ct-create-result{align-items:stretch;flex-direction:column}.ct-detail-metrics,.ct-settings{grid-template-columns:1fr}.ct-setting.toggle{grid-column:auto}.ct-detail-head,.ct-section-head{align-items:flex-start}.ct-actions{display:grid;grid-template-columns:1fr}.ct-actions .crm-content-action{width:100%}
}
@media (max-width:480px){
  .crm-content-reel{grid-template-columns:1fr;}
  .crm-content-main{max-width:100%;}
}
@media (max-width:360px){
  .crm-content-datebar .crm-content-actions,.crm-content-funnel-kpis,.crm-content-goals{grid-template-columns:1fr;}
  .crm-fu-row{grid-template-columns:minmax(112px,1fr) minmax(0,132px);}
  .crm-fu-when{max-width:132px;}
}
@media (max-width:700px){
  .crm-fu-head{flex-direction:column;align-items:stretch;}
  .crm-fu-mode{width:100%;min-height:44px;justify-content:center;}
  .crm-fu-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
  .crm-fu-sum:nth-child(2){border-right:0;}
  .crm-fu-sum:nth-child(-n+2){border-bottom:1px solid var(--border);}
  .crm-fu-tab{min-height:44px;flex:1 1 calc(50% - 5px);}
  .crm-fu-row{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:13px 12px;align-items:start;}
  .crm-fu-why,.crm-fu-text{grid-column:1/-1;}
  .crm-fu-action{min-height:44px;padding:0 12px;}
  .crm-fu-bulk .crm-fu-action{flex:1 1 auto;}
  .crm-sil-acts{opacity:1;height:auto;overflow:visible;margin-left:0;}
  .crm-sil-write{margin-left:0;}
  .crm-sil-q{display:none;}
}
@media (prefers-reduced-motion:reduce){
  .crm-sil,.crm-sil-h,.crm-sil-acts,.crm-sil-h svg{transition:none;}
  .crm-content-status.is-syncing svg{animation:none;}
}
/* ── старые классы карточек молчунов ── */
.crm-silent-group{margin-bottom:22px;}
.crm-silent-group:last-child{margin-bottom:0;}
.crm-silent-head{margin-bottom:10px;}
.crm-silent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:12px;}
.crm-card{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);
  padding:12px;display:flex;flex-direction:column;gap:10px;min-width:0;
  transition:border-color .16s var(--ease),background .16s var(--ease);
}
.crm-card:hover{border-color:var(--border-strong);}
.crm-card-top{display:flex;align-items:center;gap:10px;min-width:0;}
.crm-card-top .crm-ava{width:38px;height:38px;font-size:13px;}
.crm-card-mid{flex:1;min-width:0;}
.crm-card-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.crm-card-sub{font-size:11px;color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}
.crm-card-sub.warn{color:var(--warn);white-space:normal;}
.crm-card-q{
  font-size:13px;line-height:1.45;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.crm-card-acts{display:flex;gap:6px;flex-wrap:wrap;}
.crm-card-acts .ghost-btn{height:var(--h-chip);}

/* ── Тест: сценарии по промпту выбранной ниши ─────────────────────────────── */
.estate-test{max-width:1460px;margin:0 auto;padding:8px clamp(16px,4vw,56px) 56px;}
.estate-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px;}
.estate-kicker{color:var(--accent-active);font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;}
.estate-title{margin:7px 0 8px;color:var(--text);font:clamp(30px,4vw,48px)/1.08 var(--serif);letter-spacing:-.025em;text-wrap:balance;}
.estate-lead{max-width:67ch;margin:0;color:var(--muted);font-size:15px;line-height:1.55;text-wrap:pretty;}
.estate-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;max-width:880px;margin:0 0 24px;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.estate-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;}
.estate-field--script{grid-column:1/-1;}
.estate-field label{color:var(--quiet);font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;}
.estate-field input,.estate-field textarea{width:100%;min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text);font:inherit;}
.estate-field input{height:42px;padding-top:0;padding-bottom:0;}
.estate-field textarea{min-height:128px;resize:vertical;line-height:1.48;}
.estate-field input:focus-visible,.estate-field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:transparent;}
.estate-niche-row{grid-column:1/-1;display:flex;align-items:end;gap:10px;flex-wrap:wrap;}
.estate-niche-row .estate-field{max-width:440px;}
.estate-field select{width:100%;height:42px;padding:0 10px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text);font:inherit;}
.estate-field select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:transparent;}
.estate-niche-note{grid-column:1/-1;margin:0;color:var(--quiet);font-size:12px;line-height:1.45;}
.estate-niche-actions{display:flex;gap:8px;flex-wrap:wrap;}
.estate-niche-editor{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:12px;padding:14px;border:1px dashed var(--border-strong);border-radius:12px;background:var(--field);}
.estate-niche-editor .estate-field textarea{min-height:180px;}
.estate-niche-editor-actions{grid-column:1/-1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.estate-file-name{color:var(--quiet);font-size:12px;overflow-wrap:anywhere;}
.estate-actions{grid-column:1/-1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.estate-form .btn-main,.estate-form .btn2{min-height:44px;}
.estate-status{display:flex;align-items:center;gap:8px;min-height:42px;margin:0 0 20px;color:var(--muted);font-size:14px;}
.estate-status::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--tint);}
.estate-status[hidden]{display:none;}
.estate-error{margin:0 0 20px;padding:12px 14px;border:1px solid var(--danger);border-radius:10px;color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,transparent);font-size:14px;}
.estate-groups{display:flex;flex-direction:column;gap:32px;}
.estate-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.estate-group-head h2{margin:0;color:var(--text);font:600 19px/1.2 var(--serif);}
.estate-group-head span{color:var(--quiet);font:11px var(--mono);letter-spacing:.04em;text-transform:uppercase;}
.estate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px;margin-top:12px;}
.estate-card{min-width:0;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);display:flex;flex-direction:column;gap:12px;transition:border-color .16s var(--ease),background .16s var(--ease);}
.estate-card:hover{border-color:var(--border-strong);background:var(--hover-surface);}
.estate-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.estate-card-title{color:var(--text);font-weight:650;font-size:15px;line-height:1.35;}
.estate-card-meta{flex:0 0 auto;color:var(--quiet);font:11px var(--mono);white-space:nowrap;}
.estate-script-parts{display:flex;flex-direction:column;gap:9px;}
.estate-script-part{padding:10px 11px;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--field) 82%,transparent);}
.estate-script-part--hook{background:var(--tint);}
.estate-script-part--ending{background:color-mix(in srgb,var(--ok) 7%,var(--field));}
.estate-script-part-label{display:block;margin:0 0 4px;color:var(--quiet);font:600 10px/1.3 var(--mono);letter-spacing:.07em;text-transform:uppercase;}
.estate-script-part--hook .estate-script-part-label{color:var(--accent-active);}
.estate-script-part-text{margin:0;color:var(--text);font-size:14px;line-height:1.58;text-wrap:pretty;white-space:pre-wrap;}
.estate-script-part--middle .estate-script-part-text + .estate-script-part-text{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);}
.estate-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:4px;}
.estate-source{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent-active);font-size:12px;text-decoration:none;}
.estate-source:hover{text-decoration:underline;}
.estate-copy{height:30px;padding:0 9px;font-size:12px;}
.estate-rework{display:flex;flex-direction:column;gap:12px;margin-top:32px;}
.estate-match{margin:0;padding:0;list-style:none;color:var(--quiet);font-size:13px;line-height:1.45;}
.estate-match li{position:relative;padding-left:16px;}
.estate-match li::before{content:"•";position:absolute;left:2px;color:var(--accent-active);}

/* ── Сценарист 3.0: ниша → проверенные карточки → один сценарий ────────── */
.naristo{max-width:1460px;margin:0 auto;padding:8px clamp(16px,4vw,56px) 56px;}
.naristo-hero{max-width:780px;margin-bottom:24px;}
.naristo-kicker{color:var(--accent-active);font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;}
.naristo-title{margin:7px 0 8px;color:var(--text);font:clamp(30px,4vw,48px)/1.08 var(--serif);letter-spacing:-.025em;text-wrap:balance;}
.naristo-lead{margin:0;color:var(--muted);font-size:15px;line-height:1.55;max-width:68ch;}
.naristo-form{display:flex;align-items:end;gap:12px;max-width:900px;margin-bottom:24px;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.naristo-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;}
.naristo-field label,.naristo-section-label{color:var(--quiet);font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;}
.naristo-field input{height:44px;width:100%;min-width:0;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--field);color:var(--text);font:inherit;}
.naristo-count{flex:0 0 122px;}
.naristo-field input:focus-visible,.naristo-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:transparent;}
.naristo-status{display:flex;align-items:center;gap:8px;min-height:38px;margin:0 0 20px;color:var(--muted);font-size:14px;}
.naristo-status::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--tint);}
.naristo-status[hidden]{display:none;}
.naristo-error{margin:0 0 20px;padding:12px 14px;border:1px solid var(--danger);border-radius:10px;color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,transparent);font-size:14px;}
.naristo-group{margin-top:30px;}
.naristo-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.naristo-group-head h2{margin:0;color:var(--text);font:600 20px/1.2 var(--serif);}
.naristo-group-head span{color:var(--quiet);font:11px var(--mono);}
.naristo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(330px,100%),1fr));gap:12px;}
.naristo-card{min-width:0;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);display:flex;flex-direction:column;gap:12px;transition:border-color .16s var(--ease),background .16s var(--ease);}
.naristo-card:hover{border-color:var(--border-strong);background:var(--hover-surface);}
.naristo-card-title{margin:0;color:var(--text);font-size:16px;line-height:1.35;}
.naristo-card-copy{margin:0;color:var(--muted);font-size:13px;line-height:1.5;}
.naristo-card-meta{display:flex;gap:8px;flex-wrap:wrap;color:var(--quiet);font:11px var(--mono);}
.naristo-score{color:var(--accent-active);}
.naristo-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:4px;}
.naristo-card-links{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:5px;}
.naristo-source{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent-active);font-size:12px;text-decoration:none;}
.naristo-source:hover{text-decoration:underline;}
.naristo-result{max-width:900px;margin-top:32px;padding:20px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.naristo-result h2{margin:0;color:var(--text);font:600 25px/1.2 var(--serif);}
.naristo-result h3{margin:22px 0 8px;color:var(--text);font-size:15px;}
.naristo-result p{margin:0;color:var(--muted);line-height:1.58;white-space:pre-wrap;}
.naristo-result .naristo-script{color:var(--text);font-size:16px;line-height:1.68;}
.naristo-hooks{margin:8px 0 0;padding-left:22px;color:var(--muted);line-height:1.55;}
.naristo-visuals{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:8px;margin-top:8px;}
.naristo-visual{padding:10px 11px;background:var(--field);border:1px solid var(--border);border-radius:10px;}
.naristo-visual strong{display:block;margin-bottom:4px;color:var(--quiet);font:600 10px var(--mono);letter-spacing:.05em;text-transform:uppercase;}
.naristo-visual span{color:var(--text);font-size:13px;line-height:1.45;}

/* ── Сценарист Бета: клиенты слева, постоянная переписка справа ───────────── */
.nav-beta{align-self:flex-start;margin:1px 0 0 -2px;color:var(--accent-active);font:700 8px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;}
.screen[data-screen="scriptwriter_beta"] .feed,
.screen[data-screen="gptchat"] .feed{padding:0;overflow:hidden;}
.screen[data-screen="sourcecheck"] .feed{padding:0;overflow:hidden;}
.comp-wrap.gpt-workspace-composer{position:absolute;z-index:9;left:260px;right:0;bottom:0;background:var(--feed-bg);}
.comp-wrap.gpt-workspace-composer .comp-in{max-width:900px;}
.screen[data-screen="scriptwriter_beta"] .sbeta-thread{padding-bottom:var(--workspace-composer-inset,116px);}
.screen[data-screen="gptchat"] .sbeta-thread{padding-bottom:var(--workspace-composer-inset,116px);}
.screen[data-screen="sourcecheck"] .sbeta-thread{padding-bottom:var(--workspace-composer-inset,116px);}

/* Превью внешней ссылки в «Поиске идей». Один body-level popover обслуживает
   ответы ChatGPT и Gemini, потому что оба движка используют общий renderer. */
.link-preview{
  position:fixed;z-index:90;width:min(480px,calc(100vw - 24px));overflow:hidden;
  border:1px solid var(--border);border-radius:12px;background:var(--panel);
  box-shadow:0 4px 8px rgba(24,18,14,.18);opacity:0;visibility:hidden;
  transform:translateY(4px);pointer-events:none;
  transition:opacity 160ms var(--ease),transform 160ms var(--ease),visibility 0s linear 160ms;
}
.link-preview.open{
  opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;
  transition-delay:0s;
}
.link-preview-media{
  position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;
  overflow:hidden;background:var(--feed-bg);color:var(--quiet);
}
.link-preview-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.link-preview-media.loading::after{
  content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,var(--tint) 42%,transparent 64%);
  background-size:220% 100%;animation:link-preview-shimmer 1.2s linear infinite;
}
@keyframes link-preview-shimmer{to{background-position:-220% 0;}}
.link-preview-copy{display:flex;min-width:0;flex-direction:column;gap:4px;padding:12px 16px 16px;}
.link-preview-title{
  display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  color:var(--text);font-size:14px;font-weight:650;line-height:1.35;
}
.link-preview-host{overflow:hidden;color:var(--muted);font-size:12px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap;}
.link-preview-open{align-self:flex-start;margin-top:4px;color:var(--accent-active);font-size:12px;font-weight:650;line-height:1.4;text-decoration:none;}
.link-preview-open:hover{text-decoration:underline;text-underline-offset:2px;}
.link-preview-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px;}
.link-preview-reader-head{display:flex;align-items:center;gap:10px;min-height:56px;padding:8px 12px;background:var(--panel);}
.link-preview-reader-head>svg{flex:0 0 auto;color:var(--accent-active);}
.link-preview-reader-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px;}
.link-preview-reader-hint{color:var(--accent-active);font-size:11px;font-weight:650;line-height:1.3;}
.link-preview-reader-shell{
  position:relative;display:block;height:min(420px,calc(100vh - 112px));min-height:260px;
  overflow:auto;overscroll-behavior:contain;background:#fff;color:#1a1a1a;color-scheme:light;
}
.link-preview-reader-page{padding:24px;font-size:16px;line-height:1.55;}
.link-preview-reader-page h2{margin:0 0 8px;color:#1a1a1a;font-size:24px;line-height:1.3;}
.link-preview-reader-page p{margin:0 0 16px;}
.link-preview-reader-meta{margin:0 0 18px;color:#666;font-size:13px;}
.link-preview-reader-badge{display:inline-block;margin:0 0 16px;padding:4px 9px;border-radius:6px;background:#fff3cd;color:#7a5b00;font-size:12px;}
.link-preview-reader-origin a{color:#1769aa;font-weight:650;}
@media (hover:none),(pointer:coarse){.link-preview{display:none;}}
@media (prefers-reduced-motion:reduce){
  .link-preview{transition:none;transform:none;}
  .link-preview-media.loading::after{animation:none;}
}
.sbeta-workspace{position:relative;display:grid;grid-template-columns:260px minmax(0,1fr);height:100%;min-height:0;background:var(--feed-bg);}
.sbeta-clients{min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--border);}
.sbeta-clients-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:18px 14px 12px;}
.sbeta-clients-head strong{color:var(--text);font-size:15px;}
.sbeta-clients-title{display:flex;min-width:0;flex:1;flex-direction:column;gap:10px;}
.sbeta-client-scope{display:flex;align-items:center;gap:4px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--surface);}
.sbeta-client-scope button{min-height:30px;padding:5px 9px;border:0;border-radius:7px;background:transparent;color:var(--muted);font:700 11px/1.2 var(--font);cursor:pointer;white-space:nowrap;}
.sbeta-client-scope button:hover{color:var(--text);background:var(--panel);}
.sbeta-client-scope button.on{color:var(--text);background:var(--panel);box-shadow:0 1px 4px rgba(0,0,0,.12);}
.sbeta-client-scope button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.sbeta-close{display:none;}
.sbeta-new{margin:0 12px 12px;width:calc(100% - 24px);justify-content:center;}
.sbeta-list{flex:1;min-height:0;overflow:auto;padding:0 8px 12px;}
.sbeta-client{width:100%;display:flex;align-items:center;gap:8px;padding:10px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;text-align:left;}
.sbeta-client:hover{background:var(--hover-surface);}
.sbeta-client.on{background:var(--tint);color:var(--accent-active);font-weight:600;}
.sbeta-client-open{min-width:0;min-height:28px;flex:1;display:flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;}
.sbeta-client-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px;}
.sbeta-client-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sbeta-client-owner{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font:600 11px var(--mono);}
.sbeta-client.on .sbeta-client-owner{color:currentColor;opacity:.76;}
.sbeta-edit{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border:0;border-radius:8px;background:transparent;color:var(--quiet);cursor:pointer;}
.sbeta-edit:hover{background:var(--card);color:var(--accent-active);}
.sbeta-delete{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border:0;border-radius:8px;background:transparent;color:var(--quiet);cursor:pointer;}
.sbeta-delete:hover{background:var(--card);color:var(--danger);}
.sbeta-list-empty{padding:16px 10px;color:var(--quiet);font-size:13px;line-height:1.45;}
.sbeta-chat{min-width:0;min-height:0;display:flex;flex-direction:column;}
.sbeta-chatbar{min-height:52px;display:flex;align-items:center;gap:10px;padding:8px 20px;border-bottom:1px solid var(--border);background:var(--feed-bg);}
.sbeta-chatbar strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);}
.sbeta-mobile-clients{display:none;}
.sbeta-client-back{display:none;align-items:center;gap:5px;min-height:44px;padding:0 8px;border:0;border-radius:10px;background:transparent;color:var(--accent-active);font:600 12px var(--sans);cursor:pointer;}
.sbeta-client-back:hover{background:var(--press-surface);}
.sbeta-thread{flex:1;min-height:0;overflow:auto;padding:24px;}
.sbeta-thread.has-messages::before{content:"";margin-top:auto;}
.sbeta-thread>.msg,.sbeta-thread>.hero{width:100%;max-width:900px;margin-left:auto;margin-right:auto;}
.screen[data-screen="gptchat"] .sbeta-thread{--gpt-message-width:900px;}
.screen[data-screen="gptchat"] .sbeta-thread>.msg{--msg-w:var(--gpt-message-width);}
.screen[data-screen="sourcecheck"] .sbeta-thread{--gpt-message-width:900px;}
.screen[data-screen="sourcecheck"] .sbeta-thread>.msg{--msg-w:var(--gpt-message-width);}
/* Строка статуса запроса — в той же колонке, что и сообщения, под пузырём запроса. */
.sbeta-thread>.status-line{width:100%;max-width:720px;margin:-4px auto 8px;justify-content:flex-end;flex-wrap:wrap;text-align:right;}
.screen[data-screen="gptchat"] .sbeta-thread>.status-line,.screen[data-screen="sourcecheck"] .sbeta-thread>.status-line{max-width:var(--gpt-message-width);}
.sbeta-chat{position:relative;}
/* Кнопка «вниз к последним сообщениям». */
.sbeta-jump{position:absolute;right:20px;bottom:calc(var(--workspace-composer-inset,116px) + 12px + var(--jump-lift,0px));z-index:3;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--card);color:var(--muted);box-shadow:0 4px 14px rgba(15,23,42,.14);cursor:pointer;visibility:hidden;opacity:0;transform:translateY(8px) scale(.9);transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s,color .15s ease;-webkit-tap-highlight-color:transparent;}
.sbeta-jump.show{visibility:visible;opacity:1;transform:none;transition:opacity .18s ease,transform .18s ease,visibility 0s,color .15s ease;}
.sbeta-jump:hover{color:var(--accent);}
.sbeta-jump:active{transform:scale(.94);}
.sbeta-jump:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
/* Статус последней задачи на стрелке: кольцо крутится, пока задача идёт; галочка или «!» — когда закончилась. */
.sbeta-jump[data-task="pending"]{color:var(--accent);}
.sbeta-jump-ring{position:absolute;inset:-4px;width:calc(100% + 8px);height:calc(100% + 8px);display:none;color:var(--accent);pointer-events:none;animation:tk-rotate .9s linear infinite;animation-delay:var(--spin-delay,0ms);}
.sbeta-jump-ring circle{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:38 104;}
.sbeta-jump[data-task="pending"] .sbeta-jump-ring{display:block;}
.sbeta-jump-badge{position:absolute;top:-5px;right:-5px;width:20px;height:20px;box-sizing:border-box;display:none;place-items:center;border:2px solid var(--card);border-radius:50%;background:var(--accent);color:#fff;pointer-events:none;}
.sbeta-jump[data-task="failed"] .sbeta-jump-badge{background:var(--danger);}
.sbeta-jump[data-task="done"] .sbeta-jump-badge,.sbeta-jump[data-task="failed"] .sbeta-jump-badge{display:grid;}
.sbeta-jump.pop .sbeta-jump-badge{animation:tk-pop .32s ease-out;}
.sbeta-jump-badge svg{width:12px;height:12px;display:none;}
.sbeta-jump[data-task="done"] .jb-check,.sbeta-jump[data-task="failed"] .jb-fail{display:block;}
.sbeta-jump-badge path{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
/* Значок задачи на пузыре запроса: кружок → галочка, как в Telegram. */
.bub.has-task::after{content:"";display:block;clear:both;}
.msg-meta{float:right;position:relative;top:6px;display:inline-flex;align-items:center;gap:4px;margin:0 0 0 12px;font-size:11px;line-height:16px;color:var(--muted);white-space:nowrap;user-select:none;}
.msg-time{font-variant-numeric:tabular-nums;}
.msg-tick{position:relative;display:inline-block;width:18px;height:12px;flex:0 0 auto;}
.msg-tick svg{position:absolute;inset:0;margin:auto;overflow:visible;display:none;}
.msg-meta[data-task="pending"] .tk-spin,.msg-meta[data-task="done"] .tk-check,.msg-meta[data-task="failed"] .tk-fail{display:block;}
.tk-spin{width:12px;height:12px;color:var(--muted);animation:tk-rotate .9s linear infinite;animation-delay:var(--spin-delay,0ms);}
.tk-spin circle{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-dasharray:24 36;}
.tk-check{width:18px;height:12px;color:var(--accent);}
.tk-check path{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.msg-meta.just-done .tk-check{animation:tk-pop .32s ease-out;}
.msg-meta.just-done .tk-c1,.msg-meta.just-done .tk-c2{stroke-dasharray:16;stroke-dashoffset:16;animation:tk-draw .22s ease-out forwards;}
.msg-meta.just-done .tk-c2{animation-delay:.12s;}
.tk-fail{width:13px;height:13px;color:var(--danger);}
.tk-fail circle,.tk-fail path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;}
@keyframes tk-rotate{to{transform:rotate(360deg);}}
@keyframes tk-draw{to{stroke-dashoffset:0;}}
@keyframes tk-pop{0%{transform:scale(.6);}60%{transform:scale(1.15);}100%{transform:scale(1);}}
@media (prefers-reduced-motion: reduce){
  .tk-spin{animation-duration:2.4s;}
  .msg-meta.just-done .tk-check{animation:none;}
  .msg-meta.just-done .tk-c1,.msg-meta.just-done .tk-c2{animation:none;stroke-dashoffset:0;}
  .sbeta-jump,.sbeta-jump.show{transition:none;}
  .sbeta-jump-ring{animation-duration:2.4s;}
  .sbeta-jump.pop .sbeta-jump-badge{animation:none;}
}
@media (max-width: 760px){
  .sbeta-jump{right:14px;width:42px;height:42px;}
}
.sbeta-thread .col-text a{color:var(--accent-active);text-decoration:underline;text-underline-offset:2px;cursor:pointer;}
/* Живой индикатор ответа (03.10): настоящий этап работы модели + сколько идёт.
   Стоит слева, там, где появится ответ. */
.sbeta-thread>.status-line.sbeta-progress{max-width:900px;justify-content:flex-start;text-align:left;margin:4px auto 16px;gap:12px;}
/* 04.10: строка этапа одной высоты с кнопкой «Остановить» и без переносов —
   появление кнопки, смена текста этапа и тики секундомера ленту не сдвигают. */
.sbeta-thread>.status-line.sbeta-progress{min-height:28px;box-sizing:border-box;flex-wrap:nowrap;}
/* 04.10 (этап 4): этап, секундомер и «Остановить» — один блок в одном месте.
   Раньше кнопка стояла у правого края ленты (на 1280 — в 400 px от этапа).
   Теперь она сразу за секундомером. Блок этапа держит место под самый длинный
   этап («Разбираю найденное…», «Модель занята, повторяю…» · 0:00), поэтому при смене этапа и тиках
   секундомера кнопка не ездит. */
.sbeta-thread>.status-line.sbeta-progress>.stop-btn{flex:0 0 auto;position:relative;}
/* Зона нажатия 44 px по высоте, визуально кнопка остаётся компактной. */
.sbeta-thread>.status-line.sbeta-progress>.stop-btn::after{content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%);}
.sbeta-stage-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.sbeta-stage{display:inline-flex;align-items:center;gap:8px;min-width:min(17em,calc(100% - 124px));flex:0 1 auto;overflow:hidden;}
.sbeta-stage-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:0 0 auto;animation:sbeta-pulse 1.2s ease-in-out infinite;}
.sbeta-elapsed{font-variant-numeric:tabular-nums;flex:0 0 auto;white-space:nowrap;}
.sbeta-elapsed::before{content:"· ";}
/* Вращающийся кружок у сообщения человека дублировал этот блок — в «Сценаристе»
   его нет (место под значок остаётся, галочка «готово» встаёт без сдвига). */
.sbeta-thread .msg-meta[data-task="pending"] .tk-spin{display:none;}
@keyframes sbeta-pulse{0%,100%{opacity:.35;transform:scale(.8);}50%{opacity:1;transform:scale(1);}}
/* Время под ответом бота — как у сообщений человека, но отдельной строкой: не налезает на текст. */
.sbeta-thread .msg-meta.is-answer{float:none;top:0;display:flex;justify-content:flex-start;margin:8px 0 0;}
/* Плавный показ готового ответа (слова проявляются ~1–2 с). */
.col-text.is-revealing .rv{opacity:0;transition:opacity .18s ease-out;}
.col-text.is-revealing .rv.on{opacity:1;}
@media (prefers-reduced-motion: reduce){
  .sbeta-stage-dot{animation:none;opacity:1;}
  .col-text.is-revealing .rv{opacity:1;transition:none;}
}
.sbeta-empty{height:100%;display:grid;place-items:center;padding:24px;text-align:center;}
.sbeta-empty .hero{max-width:820px;padding:64px 32px;}
.sbeta-empty .hero h1{
  margin-bottom:16px;font-size:clamp(36px,3vw,48px);letter-spacing:-.025em;text-wrap:balance;
}
.sbeta-empty .hero-sub{
  max-width:720px;margin:0 auto 32px;font-size:18px;line-height:1.6;
}
.sbeta-empty .hero>.btn-main{
  min-height:50px;padding:0 28px;font-size:15px;font-weight:700;
}
.sbeta-dim{display:none;}
/* ── 04.10 Новый вид чата «Сценарист»: узкая колонка, спокойный фон, пузырь
   только у запроса, ответ — обычным текстом, ряд значков под ответом, поле-пилюля.
   Всё ограничено разделом scriptwriter_beta (gptchat/sourcecheck не трогаем). */
.screen[data-screen="scriptwriter_beta"],
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap{
  --sb-col:768px;--feed-bg:#FFFFFF;--sb-user:#F0F2F5;
}
:root[data-theme="dark"] .screen[data-screen="scriptwriter_beta"],
:root[data-theme="dark"] body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap{
  --feed-bg:#121314;--panel:#17181A;--card:#1C1D20;--border:#2A2C30;--field:#222326;
  --hover-surface:#222327;--press-surface:#2A2B2F;--surface:#1C1D20;--sb-user:#2A2B2F;
}
.screen[data-screen="scriptwriter_beta"] .sbeta-chatbar{border-bottom-color:transparent;position:relative;z-index:3;}
/* Текст переписки уходит под полосу с названием плавно, а не режется ровной линией. */
.screen[data-screen="scriptwriter_beta"] .sbeta-chatbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:24px;background:linear-gradient(var(--feed-bg),transparent);pointer-events:none;}
/* «+ Новый чат» в списке — спокойная кнопка: главное действие на экране — поле ввода. */
.screen[data-screen="scriptwriter_beta"] .sbeta-new{background:transparent;color:var(--text);border:1px solid var(--border);box-shadow:none;}
.screen[data-screen="scriptwriter_beta"] .sbeta-new:hover{background:var(--hover-surface);}
/* У своего сообщения — только время, без «галочек готово» (сбой по-прежнему показывается). */
.screen[data-screen="scriptwriter_beta"] .row.me .msg-meta .tk-check{display:none;}
.screen[data-screen="scriptwriter_beta"] .sbeta-thread{gap:20px;}
.screen[data-screen="scriptwriter_beta"] .sbeta-thread>.msg,
.screen[data-screen="scriptwriter_beta"] .sbeta-thread>.hero{max-width:var(--sb-col);}
.screen[data-screen="scriptwriter_beta"] .sbeta-thread>.msg{--msg-w:var(--sb-col);}
.screen[data-screen="scriptwriter_beta"] .sbeta-thread>.status-line{max-width:var(--sb-col);}
.screen[data-screen="scriptwriter_beta"] .row.me .bub{
  max-width:min(78%,600px);padding:10px 18px;border-radius:22px;background:var(--sb-user);
  font-size:15px;line-height:1.6;
}
.screen[data-screen="scriptwriter_beta"] .row.me .bub.user-copy-host{padding-right:18px;overflow:visible;}
.screen[data-screen="scriptwriter_beta"] .row.me .user-msg-copy{
  top:auto;right:auto;bottom:2px;left:-42px;opacity:0;transition:opacity .15s ease;
}
.screen[data-screen="scriptwriter_beta"] .row.me:hover .user-msg-copy,
.screen[data-screen="scriptwriter_beta"] .row.me:focus-within .user-msg-copy,
.screen[data-screen="scriptwriter_beta"] .row.me .user-msg-copy.ok{opacity:1;}
@media (hover:none){
  .screen[data-screen="scriptwriter_beta"] .row.me .user-msg-copy:not(.ok){display:none;}
}
.screen[data-screen="scriptwriter_beta"] .msg .col{background:transparent;border:0;border-radius:0;padding:0;}
.screen[data-screen="scriptwriter_beta"] .msg .col-head{display:none;}
.screen[data-screen="scriptwriter_beta"] .msg .col-text{font-size:15px;line-height:1.7;padding:0;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md h2{font-size:20px;margin:24px 0 8px;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md h3{font-size:17px;margin:20px 0 6px;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md h2:first-child,
.screen[data-screen="scriptwriter_beta"] .gpt-native-md h3:first-child{margin-top:0;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md p{margin:0 0 12px;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md ul,
.screen[data-screen="scriptwriter_beta"] .gpt-native-md ol{margin:8px 0 14px;padding-left:24px;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md li{margin:6px 0;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md hr{margin:24px 0;}
.screen[data-screen="scriptwriter_beta"] .gpt-native-md strong{font-weight:650;}
/* 05.10: нижний отступ последнего абзаца/списка ответа давал лишние 12–14px над
   рядом значков (правило `p` раздела перебивало общее p:last-child). */
.screen[data-screen="scriptwriter_beta"] .gpt-native-md > :last-child,
.screen[data-screen="scriptwriter_beta"] .gpt-native-md > :last-child > li:last-child{margin-bottom:0;}
/* Ряд значков под ответом: копировать · хронометраж (если есть) · время. */
.sbeta-actions{--sb-act:color-mix(in srgb,var(--text) 72%,var(--feed-bg,var(--bg)));display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin:4px 0 0 -7px;color:var(--sb-act);}
.sbeta-actions:empty{display:none;}
.sbeta-dual-note{margin:6px 0 0;font-size:13px;color:color-mix(in srgb,var(--text) 55%,var(--feed-bg,var(--bg)));}
.sbeta-actions .col-copy{width:32px;height:32px;min-width:32px;border-radius:8px;color:var(--sb-act);}
.sbeta-actions .col-copy svg{width:18px;height:18px;}
.sbeta-actions .col-copy:hover{color:var(--text);}
.sbeta-actions .col-copy:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.sbeta-actions .col-dur{margin-left:0;padding:0 8px;font-size:13px;color:var(--sb-act);}
.sbeta-actions .col-dur[hidden]{display:none;}
.sbeta-actions .msg-meta.is-answer{float:none;top:0;margin:0 0 0 4px;font-size:13px;color:var(--sb-act);}
.sbeta-chat-title{display:none;align-items:center;gap:6px;min-width:0;min-height:44px;margin:0 -8px;padding:0 8px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;cursor:pointer;}
.sbeta-chat-title svg{flex:0 0 auto;color:var(--muted);}
.sbeta-chat-title:hover{background:var(--hover-surface);}
.sbeta-chat-title:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
#sbetaTopTitle{max-width:100%;}
#sbetaTopTitle strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;}
.sbeta-day{width:100%;max-width:var(--sb-col,768px);margin:8px auto 0;text-align:center;font-size:12px;color:var(--quiet);}
.sbeta-retry{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 11px;border:1px solid var(--border);border-radius:99px;background:var(--card);color:var(--text);font:inherit;font-size:12px;line-height:1.3;cursor:pointer;}
.sbeta-retry:hover{border-color:var(--border-strong);background:var(--hover-surface);}
.sbeta-retry:disabled{cursor:default;}
.sbeta-retry:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.screen[data-screen="scriptwriter_beta"] .sbeta-jump{left:50%;right:auto;margin-left:-18px;width:36px;height:36px;color:var(--text);}
/* Поле ввода — пилюля; кнопка «отправить» — круглая светлая (в тёмной теме). */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp-in{max-width:var(--sb-col);}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp{
  align-items:flex-end;min-height:56px;padding:6px 8px;border-radius:28px;background:var(--card);
  border-color:var(--border);box-shadow:0 2px 12px rgba(0,0,0,.08);
}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp:focus-within{border-color:var(--border-strong);box-shadow:0 2px 14px rgba(0,0,0,.12);}
/* 05.10: в тёмной теме поле светлее фона ленты, рамка фокуса и полоса прокрутки — нейтрально-серые
   (общий --border-strong синеватый; меняем только внутри поля, другие разделы не задеты). */
:root[data-theme="dark"] body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp{--border-strong:#3A3C41;background:#202124;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp>.send{
  padding:4px;background:var(--text);background-clip:content-box;color:var(--feed-bg);
}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp>.send:hover{opacity:.88;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp>.send:disabled{opacity:.3;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp>.send:focus-visible{outline:2px solid var(--accent);outline-offset:0;}
/* 05.10: высокое поле как в ChatGPT. Одна строка — пилюля; больше — текст на всю ширину
   сверху, кнопки рядом снизу. Узлы не переставляются (только order), поэтому фокус и
   курсор не прыгают. Высоту и предел (доля видимой высоты окна) ставит autosize(). */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp{position:relative;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp textarea{max-height:none;scrollbar-width:auto;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp.is-tall{flex-wrap:wrap;row-gap:0;border-radius:24px;padding:12px 8px 6px;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp.is-tall>textarea{order:-1;flex:1 0 100%;padding:2px 10px 6px;line-height:26px;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp.is-tall.has-expand>textarea{padding-right:40px;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp.is-tall>#attachBtn{margin-right:auto;}
/* 05.10: на телефоне с переключателем движка в одну строку не влезает даже подсказка поля —
   там поле всегда в две строки (текст сверху, кнопки снизу), как в ChatGPT на телефоне. */
@media (max-width:760px){
  body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp:has(>#composerEngine.is-menu:not([hidden])){flex-wrap:wrap;row-gap:0;border-radius:24px;padding:12px 8px 6px;}
  body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp:has(>#composerEngine.is-menu:not([hidden]))>textarea{order:-1;flex:1 0 100%;padding:2px 10px 6px;line-height:26px;}
  body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp:has(>#composerEngine.is-menu:not([hidden]))>#attachBtn{margin-right:auto;}
}
/* Тонкая полоса прокрутки без стрелок: Chrome слушает ::-webkit-scrollbar, только пока
   scrollbar-width не задан, поэтому Firefox получает свой вариант через @supports. */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp textarea::-webkit-scrollbar{width:6px;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp textarea::-webkit-scrollbar-track{background:transparent;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp textarea::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px;}
@supports not selector(::-webkit-scrollbar){
  body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap .comp textarea{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;}
}
/* Единые полосы прокрутки всего приложения (список чатов, лента, меню, модалки, Mini App):
   тонкий скруглённый полупрозрачный бегунок без стрелок и без дорожки, ярче при наведении
   на сам бегунок (прятать до наведения на область нельзя: Chrome не перерисовывает полосу
   по :hover родителя, бегунок то пропадал, то залипал). Chrome/Safari — ::-webkit-scrollbar (стандартное
   scrollbar-width в Chrome на Windows рисует стрелки и отключает ::-webkit-scrollbar, поэтому
   у областей с thin оно сброшено), Firefox — scrollbar-width/scrollbar-color.
   color-scheme — чтобы системные элементы (полосы, select) не были белыми в тёмной теме. */
:root{color-scheme:light;--sb-thumb:rgba(0,0,0,.24);--sb-thumb-hover:rgba(0,0,0,.42);}
:root[data-theme="dark"]{color-scheme:dark;--sb-thumb:rgba(255,255,255,.22);--sb-thumb-hover:rgba(255,255,255,.42);}
*::-webkit-scrollbar{width:8px;height:8px;background:transparent;}
*::-webkit-scrollbar-button{display:none;width:0;height:0;}
*::-webkit-scrollbar-track,*::-webkit-scrollbar-corner{background:transparent;}
*::-webkit-scrollbar-thumb{background-color:var(--sb-thumb);border-radius:999px;}
*::-webkit-scrollbar-thumb:hover,*::-webkit-scrollbar-thumb:active{background-color:var(--sb-thumb-hover);}
@supports selector(::-webkit-scrollbar){
  .gpt-native-md pre,.gpt-native-md .md-table-scroll,.crm-fu-tabs,.crm-fu-history-days,
  .crm-content-gallery-track{scrollbar-width:auto;scrollbar-color:auto;}
}
@supports not selector(::-webkit-scrollbar){
  *{scrollbar-width:thin;scrollbar-color:var(--sb-thumb) transparent;}
}
/* right:18px — левее полосы прокрутки поля (она всегда видна), но правее текста (у него отступ 40px). */
.comp-expand{position:absolute;z-index:1;top:6px;right:18px;width:32px;height:32px;padding:0;border:0;border-radius:8px;
  display:flex;align-items:center;justify-content:center;background:inherit;color:var(--muted);cursor:pointer;}
.comp-expand[hidden]{display:none;}
.comp-expand:hover{background:var(--press-surface);color:var(--text);}
.comp-expand:focus-visible{outline:2px solid var(--accent);outline-offset:0;}
.comp-expand::before{content:"";position:absolute;inset:-6px;}
/* Пока идёт ответ и поле пустое — вместо «отправить» круглая «стоп» (жмёт
   ту же кнопку «Остановить» в ленте); начали печатать — снова «отправить». */
#betaCompStop{display:none;}
body:has(.screen.visible[data-screen="scriptwriter_beta"] .sbeta-progress>.stop-btn):has(#input:placeholder-shown) #betaCompStop{display:flex;}
body:has(.screen.visible[data-screen="scriptwriter_beta"] .sbeta-progress>.stop-btn):has(#input:placeholder-shown) #composerWrap #sendBtn{display:none;}
body:has(.screen.visible[data-screen="scriptwriter_beta"] .sbeta-progress>.stop-btn):has(#input:placeholder-shown) .screen.visible[data-screen="scriptwriter_beta"] .sbeta-progress>.stop-btn{visibility:hidden;}
/* Пустой новый чат: приветствие по центру, поле под ним, 3 примера ниже. */
#betaStarters{display:none;}
html:not(.tg-keyboard-open) body:has(.screen.visible[data-screen="scriptwriter_beta"] .sbeta-workspace.is-fresh:not(.clients-open)):has(#input:placeholder-shown) #betaStarters{display:flex;}
.sbeta-starters{order:10;flex-direction:column;margin:14px 0 0;}
.sbeta-starter{display:flex;align-items:center;gap:12px;min-height:46px;padding:10px 14px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text);font:inherit;font-size:14.5px;text-align:left;cursor:pointer;}
.sbeta-starter:last-child{border-bottom:0;}
.sbeta-starter svg{flex:0 0 auto;color:var(--muted);}
.sbeta-starter:hover{background:var(--hover-surface);border-radius:12px;}
.sbeta-starter:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:12px;}
.screen:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-fresh-hero{margin:auto auto 0;padding:24px 0 8px;}
.screen:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-fresh-hero h1{font-size:28px;font-weight:500;letter-spacing:-.015em;margin-bottom:8px;}
.screen:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-fresh-hero .hero-sub{font-size:15px;max-width:520px;margin:0 auto;}
@media (min-width:761px){
  html:not(.tg-miniapp) body:has(.screen.visible:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-workspace.is-fresh) #composerWrap.gpt-workspace-composer{bottom:max(26%,120px);background:transparent;}
}
@media (max-width:760px){
  .screen[data-screen="scriptwriter_beta"] .row.me .bub{max-width:86%;}
  .screen[data-screen="scriptwriter_beta"] .row.me .bub.user-copy-host{padding-right:18px;}
  .screen[data-screen="scriptwriter_beta"] .row.me .user-msg-copy{top:auto;right:auto;left:-46px;bottom:0;}
  /* Значок того же размера, что на компьютере, а зона нажатия — 44px (::before),
     чтобы ряд не отодвигался от текста ответа (::after занят подсказкой .tip). */
  .sbeta-actions .col-copy{position:relative;}
  .sbeta-actions .col-copy::before{content:"";position:absolute;inset:-6px;}
  /* Одна иконка «список» в шапке: строка чата на телефоне — без своей иконки,
     а название чата само открывает список чатов. */
  .screen[data-screen="scriptwriter_beta"] .sbeta-chatbar .sbeta-mobile-clients{display:none;}
  html:not(.tg-miniapp) .screen[data-screen="scriptwriter_beta"] .sbeta-chatbar{display:none;}
  html:not(.tg-miniapp) body:has(.screen.visible[data-screen="scriptwriter_beta"]) .top #sbetaTopTitle{display:inline-flex;}
  html:not(.tg-miniapp) body:has(.screen.visible[data-screen="scriptwriter_beta"]) .top #topTitle{display:none;}
  .sbeta-retry{min-height:44px;padding:8px 14px;}
  .screen[data-screen="scriptwriter_beta"] .sbeta-jump{width:42px;height:42px;margin-left:-21px;}
  .sbeta-starters{order:-1;margin:0 0 10px;}
  .sbeta-starter{min-height:48px;}
  .screen:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-fresh-hero{margin:auto;}
  .screen:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"]) .sbeta-fresh-hero h1{font-size:24px;}
}
/* До 1280 px правой панели нет, поэтому «Показать панель» в чате не нужна:
   иначе в шапке телефона две одинаковые иконки. */
@media (max-width:1280px){body:has(.screen.visible:is([data-screen="scriptwriter_beta"],[data-screen="gptchat"])) #inspShow{display:none;}}
/* 06.10 (релиз 3): «Поиск идей» 1:1 с «Сценаристом» — тот же фон и палитра, спокойная
   «+ Новый чат», поле-пилюля (на экране нового чата той же ширины 768 px), примеры под полем.
   Вкладка «Инфоповоды» (там нет .sbeta-workspace) не меняется. */
.screen[data-screen="gptchat"]:has(.sbeta-workspace),
body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace) #composerWrap{
  --sb-col:768px;--feed-bg:#FFFFFF;--sb-user:#F0F2F5;
}
:root[data-theme="dark"] .screen[data-screen="gptchat"]:has(.sbeta-workspace),
:root[data-theme="dark"] body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace) #composerWrap{
  --feed-bg:#121314;--panel:#17181A;--card:#1C1D20;--border:#2A2C30;--field:#222326;
  --hover-surface:#222327;--press-surface:#2A2B2F;--surface:#1C1D20;--sb-user:#2A2B2F;
}
.screen[data-screen="gptchat"] .sbeta-chatbar{border-bottom-color:transparent;position:relative;z-index:3;}
.screen[data-screen="gptchat"] .sbeta-chatbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:24px;background:linear-gradient(var(--feed-bg),transparent);pointer-events:none;}
.screen[data-screen="gptchat"] .sbeta-new{background:transparent;color:var(--text);border:1px solid var(--border);box-shadow:none;}
.screen[data-screen="gptchat"] .sbeta-new:hover{background:var(--hover-surface);}
.screen[data-screen="gptchat"] .sbeta-thread>.sbeta-fresh-hero{max-width:var(--sb-col);}
body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace.is-fresh) #composerWrap .comp-in{max-width:var(--sb-col);}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp{
  align-items:flex-end;min-height:56px;padding:6px 8px;border-radius:28px;background:var(--card);
  border-color:var(--border);box-shadow:0 2px 12px rgba(0,0,0,.08);
}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp:focus-within{border-color:var(--border-strong);box-shadow:0 2px 14px rgba(0,0,0,.12);}
:root[data-theme="dark"] body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp{--border-strong:#3A3C41;background:#202124;}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>.send{padding:4px;background:var(--text);background-clip:content-box;color:var(--feed-bg);}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>.send:hover{opacity:.88;}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>.send:disabled{opacity:.3;}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>.send:focus-visible{outline:2px solid var(--accent);outline-offset:0;}
html:not(.tg-keyboard-open) body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace.is-fresh:not(.clients-open)):has(#input:placeholder-shown) #betaStarters{display:flex;}
.screen[data-screen="gptchat"] .sbeta-fresh-hero .hero-sub{text-wrap:balance;}
.screen[data-screen="gptchat"] .sbeta-fresh-hero .hero-sub-twin{display:none;}
/* Переключатель движка — тихий, без синей заливки: главное в поле — «отправить». */
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .composer-engine-switch:not(.is-menu){border-color:transparent;background:transparent;}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .composer-engine-btn{font-size:13px;}
body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .composer-engine-btn.on{background:var(--hover-surface);color:var(--text);}
/* Вкладки «Поиск идей | Инфоповоды» (только у владельца) — в палитре приложения и ниже. */
.screen[data-screen="gptchat"] .radar-tabs{min-height:52px;padding:4px 24px;border-bottom:0;}
.screen[data-screen="gptchat"] .radar-tabs button:hover{background:var(--hover-surface);}
.screen[data-screen="gptchat"] .radar-tabs button[aria-selected=true]{background:var(--hover-surface);border-color:transparent;font-weight:600;}
.screen[data-screen="gptchat"] .radar-tabs button:focus-visible{outline-color:var(--accent);outline-offset:-2px;}
.screen[data-screen="gptchat"] .has-radar-tabs>.sbeta-workspace{height:calc(100% - 52px);}
@media (max-width:760px){
  .screen[data-screen="gptchat"] .radar-tabs{padding:4px 12px;}
  /* 07.10: заголовок «Какие идеи ищем?» на той же высоте, что «С чего начнём сценарий?».
     Герой центрируется между шапкой и полем; у «Поиска идей» поле выше на 50 px (вторая
     строка с переключателем) — +50 px сверху опускают заголовок на 25 px; полоса вкладок
     владельца (52 px) сдвигает его вниз на 26 px — у неё отступ сверху на 52 px меньше;
     подзаголовок не ниже, чем у «Сценариста» (невидимый двойник его текста в той же клетке). */
  .screen[data-screen="gptchat"] .sbeta-fresh-hero{padding-top:74px;}
  .screen[data-screen="gptchat"] .has-radar-tabs .sbeta-fresh-hero{padding-top:22px;}
  /* У «Сценариста» есть выбор движка (Codex/Claude) — его поле тоже в две строки, и
     +50 px не нужны: обычный отступ; с полосой вкладок заголовок выше на 26 px
     (отступ снизу больше верхнего на 36 px: (0 - 36) / 2 = (24 - 8) / 2 - 26). */
  .screen[data-screen="gptchat"] .sbeta-fresh-hero.sw-tall-comp{padding-top:24px;}
  .screen[data-screen="gptchat"] .has-radar-tabs .sbeta-fresh-hero.sw-tall-comp{padding-top:0;padding-bottom:36px;}
  .screen[data-screen="gptchat"] .sbeta-fresh-hero .hero-sub{display:grid;}
  .screen[data-screen="gptchat"] .sbeta-fresh-hero .hero-sub>span{grid-area:1/1;}
  .screen[data-screen="gptchat"] .sbeta-fresh-hero .hero-sub-twin{display:block;visibility:hidden;}
  /* Поле в две строки, как у «Сценариста» на телефоне: текст сверху, кнопки снизу. */
  body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp{flex-wrap:wrap;row-gap:0;border-radius:24px;padding:12px 8px 6px;}
  body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>textarea{order:-1;flex:1 0 100%;padding:2px 10px 6px;line-height:26px;}
  body:has(.screen.visible[data-screen="gptchat"]) #composerWrap .comp>#attachBtn{margin-right:auto;}
  /* Название чата со стрелкой — в шапке (открывает список), отдельной строки под шапкой нет. */
  html:not(.tg-miniapp) .screen[data-screen="gptchat"] .sbeta-chatbar{display:none;}
  html:not(.tg-miniapp) body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace) .top #sbetaTopTitle{display:inline-flex;}
  html:not(.tg-miniapp) body:has(.screen.visible[data-screen="gptchat"] .sbeta-workspace) .top #topTitle{display:none;}
}
/* Бегунок прокрутки переписки не уходит под поле ввода: дорожка кончается над полем. */
.sbeta-thread::-webkit-scrollbar-track{margin-bottom:var(--workspace-composer-inset,116px);}
/* Mini App: в открытом чате «← Назад · название» и есть шапка — строку «Сценарист» над ней не дублируем. */
html.tg-miniapp body:has(.screen.visible[data-screen="scriptwriter_beta"] .sbeta-client-back) .center>.top{display:none;}
/* 06.10: в Mini App на списке «Чаты» поля ввода нет — только список и «+ Новый чат».
   Поле возвращается, когда список закрыт: открыт чат или нажат «Новый чат». Сайт не меняется. */
html.tg-miniapp body:has(.screen.visible .sbeta-workspace.clients-open) #composerWrap{display:none!important;}
html.tg-miniapp .screen[data-screen="scriptwriter_beta"] .sbeta-chatbar:has(.sbeta-client-back){min-height:calc(50px + var(--tg-content-safe-area-inset-top,0px));padding-top:calc(3px + var(--tg-content-safe-area-inset-top,0px));}
@media (prefers-reduced-motion:reduce){
  .screen[data-screen="scriptwriter_beta"] .row.me .user-msg-copy{transition:none;}
}
/* 04.10 новый вид: строка под полем — крупнее; подсказка «Вход обновлён» — серая пилюля, не красная ошибка. */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap #sendError{font-size:13px;line-height:1.45;font-weight:500;}
#sendError.is-info{color:var(--text);font-weight:500;}
body:has(.screen.visible[data-screen="scriptwriter_beta"]) #composerWrap #sendError.is-info{width:fit-content;max-width:100%;margin:8px auto 0;padding:6px 14px;border-radius:999px;background:var(--sb-user);}
/* Тосты в чате «Сценарист» (в т.ч. «Картинки пока не поддерживаются…»): тёмная
   скруглённая плашка шире и крупнее, длинный текст в 2–3 строки читается спокойно. */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) .toast{
  max-width:min(560px,calc(100vw - 32px));padding:12px 18px;border-radius:18px;
  background:#1F1F1F;color:#FFFFFF;font-size:14px;line-height:1.45;text-align:center;box-shadow:0 6px 24px rgba(0,0,0,.18);
}
:root[data-theme="dark"] body:has(.screen.visible[data-screen="scriptwriter_beta"]) .toast{background:#ECECEC;color:#121314;}
/* Слой тостов в чате — на всю ширину колонки (при left:50% тост сжимался до половины экрана)
   и над полем ввода: поле здесь плавает поверх низа ленты, тост на 24px от низа ложился на него. */
body:has(.screen.visible[data-screen="scriptwriter_beta"]) .toasts{left:16px;right:16px;transform:none;top:auto;bottom:112px;}
/* Г6 в новом виде: «Сессия завершена» — спокойный экран по центру, как пустой чат:
   без рамки карточки, значок, крупный заголовок, одна чёрная кнопка-пилюля «Закрыть». */
.auth-overlay:has(#miniAppMode.miniapp-ended:not([hidden])){--ended-bg:#FFFFFF;background:var(--ended-bg);}
:root[data-theme="dark"] .auth-overlay:has(#miniAppMode.miniapp-ended:not([hidden])){--ended-bg:#121314;--field:#222326;--text:#ECECEC;--muted:#A1A1A6;}
.auth-card:has(#miniAppMode.miniapp-ended:not([hidden])){max-width:380px;background:transparent;border-color:transparent;box-shadow:none;align-items:center;text-align:center;gap:28px;}
.auth-card:has(#miniAppMode.miniapp-ended:not([hidden])) .auth-brand{flex-direction:column;gap:10px;margin:0;}
.auth-card:has(#miniAppMode.miniapp-ended:not([hidden])) .a-sub{display:none;}.auth-card:has(#miniAppMode.miniapp-ended:not([hidden])) .a-title{font-size:15px;font-weight:500;color:var(--muted);}
#miniAppMode.miniapp-ended{width:100%;gap:22px;}
#miniAppMode.miniapp-ended .miniapp-copy{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0;font-size:15px;line-height:1.55;color:var(--muted);text-wrap:balance;}
#miniAppMode.miniapp-ended .miniapp-copy strong{font-size:28px;line-height:1.15;font-weight:500;letter-spacing:-.015em;color:var(--text);}
#miniAppMode.miniapp-ended #miniAppCloseBtn{height:52px;border-radius:999px;background:var(--text);color:var(--ended-bg,#FFFFFF);font-size:15px;}
#miniAppMode.miniapp-ended #miniAppCloseBtn{transition:opacity .15s,transform .1s;}#miniAppMode.miniapp-ended #miniAppCloseBtn:hover{opacity:.88;}#miniAppMode.miniapp-ended #miniAppCloseBtn:active{transform:scale(.98);}
#miniAppMode.miniapp-ended #miniAppCloseBtn:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
#miniAppMode.miniapp-ended .auth-err:empty{display:none;}
.sbeta-attachments{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:0 2px 8px;}
.sbeta-file-chip,.sbeta-msg-file{display:inline-flex;align-items:center;gap:6px;max-width:260px;padding:6px 9px;border:1px solid var(--border);border-radius:9px;background:var(--card);color:var(--text);font-size:12px;white-space:nowrap;}
.sbeta-file-chip span,.sbeta-msg-file span{overflow:hidden;text-overflow:ellipsis;}
.sbeta-file-remove{display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--quiet);cursor:pointer;}
.sbeta-file-remove:hover{background:var(--hover-surface);color:var(--danger);}
/* Б4: на сенсорном экране крестик файла — зона нажатия 44×44 (было 20×20); на компьютере вид прежний. */
@media (hover: none) and (pointer: coarse){
  .sbeta-file-chip:has(>.sbeta-file-remove){min-height:44px;padding-top:0;padding-bottom:0;padding-right:0;}
  .sbeta-file-remove{width:44px;height:44px;}
}
.sbeta-file-status{padding:6px 2px;color:var(--quiet);font-size:12px;white-space:nowrap;}
.sbeta-msg-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;}
.sbeta-msg-file{background:color-mix(in srgb,var(--panel) 70%,transparent);}
.sbeta-training-card{max-width:560px;}
.sbeta-training-error{margin-top:10px;color:var(--danger);font-size:12px;line-height:1.45;}
.sbeta-training-card .confirm-actions>*{min-height:44px;}
.private-training-card{display:flex;gap:10px;width:min(100%,760px);margin:10px auto;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--accent) 7%,var(--panel));color:var(--text);}
.private-training-card>svg{flex:0 0 auto;margin-top:2px;color:var(--accent-active);}
.private-training-copy{min-width:0;display:flex;flex-direction:column;gap:6px;font-size:13px;line-height:1.5;}
.private-training-copy strong{font-size:13px;}
.private-training-note{color:var(--muted);font-size:12px;}
.private-training-instruction{white-space:pre-wrap;overflow-wrap:anywhere;}
.private-training-files{display:flex;flex-wrap:wrap;gap:6px;}
.private-training-modal{max-width:620px;}
.private-training-modal textarea{width:100%;min-height:140px;resize:vertical;}
.private-training-hint{margin:0 0 14px;color:var(--muted);font-size:13px;line-height:1.5;}
.private-training-pickers{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.private-training-pickers button{min-height:44px;}
.private-training-selected{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.private-training-selected:empty{display:none;}
.private-training-modal .confirm-actions>*{min-height:44px;}
@media(max-width:520px){
  .sbeta-training-card .confirm-actions{flex-direction:column;}
  .private-training-modal .confirm-actions{flex-direction:column;}
}
@media (max-width:760px){
  .estate-test{padding-top:24px;}
  .naristo{padding-top:24px;}
  .naristo-form{flex-direction:column;align-items:stretch;}
  .naristo-form .btn-main,.naristo-form .btn2{width:100%;justify-content:center;}
  .sbeta-workspace{grid-template-columns:minmax(0,1fr);}
  .comp-wrap.gpt-workspace-composer{
    left:0;bottom:calc(62px + env(safe-area-inset-bottom));padding-left:14px;padding-right:14px;
  }
  .sbeta-clients{position:absolute;z-index:5;inset:0 auto 0 0;width:min(86vw,320px);transform:translateX(-104%);transition:transform .18s var(--ease),box-shadow .18s var(--ease);}
  .sbeta-workspace.clients-open .sbeta-clients{transform:translateX(0);box-shadow:16px 0 36px rgba(0,0,0,.16);}
  .sbeta-close,.sbeta-mobile-clients{display:grid;}
  .sbeta-client-scope button{min-height:44px;padding:8px 10px;}
  .sbeta-client-open{min-height:44px;}
  .sbeta-edit,.sbeta-delete{width:44px;height:44px;}
  .sbeta-dim{position:absolute;z-index:4;inset:0;border:0;background:rgba(7,13,22,.36);}
  .sbeta-workspace.clients-open .sbeta-dim{display:block;}
  .sbeta-chatbar{padding:7px 12px;}
  .composer-engine-btn{padding:6px 7px;font-size:10.5px;}
  .comp textarea{font-size:16px;}
  .sbeta-thread{padding:18px 14px;}
  .sbeta-empty{padding:18px;}
  .sbeta-empty .hero{padding:32px 0 24px;}
  .sbeta-empty .hero h1{margin-bottom:12px;font-size:32px;}
  .sbeta-empty .hero-sub{margin-bottom:24px;font-size:16px;line-height:1.55;}
  .sbeta-empty .hero>.btn-main{width:min(100%,280px);min-height:48px;}
  .estate-hero{display:block;}
  .estate-form{display:flex;flex-direction:column;align-items:stretch;}
  .estate-actions{display:grid;grid-template-columns:1fr;}
  .estate-form .btn-main,.estate-form .btn2{width:100%;justify-content:center;}
  .estate-niche-row .estate-field{max-width:none;width:100%;}
  .estate-niche-actions{display:grid;grid-template-columns:1fr;width:100%;}
  .estate-niche-actions .btn2{width:100%;justify-content:center;}
  .estate-niche-editor{grid-template-columns:1fr;}
  .estate-card-foot{align-items:stretch;}
  .estate-source{display:flex;align-items:center;min-height:44px;}
  .estate-copy{height:44px;min-height:44px;}
}
@media (prefers-reduced-motion:reduce){.estate-card{transition:none;}}

/* ── Появление списков (B7). Только transform/opacity; шаг задержки
   ограничен, иначе на сотне строк хвост появлялся бы через секунды. */
@keyframes crmIn{from{opacity:0;transform:translateY(7px);}to{opacity:1;transform:none;}}
.crm-anim{animation:crmIn .26s var(--ease) both;}
.crm-fade{animation:crmIn .2s var(--ease) both;}

@media (max-width:900px){
  .crm-mail{grid-template-columns:1fr;}
  /* на телефоне это два экрана: список или переписка, как в мессенджере */
  .crm-mail.picked .crm-side{display:none;}
  .crm-mail:not(.picked) .crm-chatpane{display:none;}
  .crm-back{display:inline-flex;}
  .crm-fbar-label{flex:0 0 104px;}
  .crm-fbar-n{min-width:92px;}
}
@media (max-width:520px){
  .screen[data-screen="crm"] .feed{padding-left:10px;padding-right:10px;}
  .crm-side{padding:10px;gap:8px;}
  .crm-filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;}
  .crm-filters::-webkit-scrollbar{display:none;}
  .crm-fchip{flex:0 0 auto;min-height:44px;}
  .crm-drill-reset{min-height:44px;}
  .crm-row{padding:8px 7px;gap:8px;}
  .crm-row .crm-ava{width:40px;height:40px;}
  .crm-row-tags{gap:4px;}
  .crm-kpi{padding:14px 16px;}
  .crm-kpi-v{font-size:27px;}
  .crm-fun-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;padding:4px 0;}
  .crm-fun-label{flex:none;min-width:0;}
  .crm-fun-track{grid-column:1/-1;width:100%;height:12px;}
  .crm-fun-fill,.crm-fun-lost{padding:0;font-size:0;}
  .crm-fun-n{min-width:0;font-size:12px;white-space:nowrap;}
  .crm-head-acts .icon-btn,.crm-head-acts .ghost-btn,.crm-switch,
  .crm-period,.crm-sil-b,.crm-content-filter{min-height:44px;}
  .crm-head-acts .icon-btn{min-width:44px;}
  .crm-voice-play{width:44px;height:44px;}
  .crm-voice-rate{min-height:44px;}
}
@media (prefers-reduced-motion:reduce){
  .crm-anim,.crm-fade,.crm-fbar-fill{animation:none;}
}
/* Личные заметки: один чистый рабочий стол без отдельных окон. */
.notes-page{width:min(900px,100%);margin:0 auto;padding:28px 24px 80px;}
.notes-compose{padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--panel);box-shadow:var(--shadow-sm);}
.notes-compose textarea{display:block;width:100%;min-height:104px;resize:vertical;border:0;outline:0;background:transparent;color:var(--text);font:inherit;line-height:1.55;}
.notes-compose-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;}
.notes-hint{color:var(--quiet);font-size:12px;line-height:1.4;}
.notes-compose-actions{display:flex;align-items:center;gap:9px;flex:0 0 auto;}
.notes-mic{width:38px;height:38px;min-width:38px;border:1px solid var(--border);border-radius:10px;background:var(--soft);color:var(--muted);}
.notes-mic:hover{border-color:var(--accent);color:var(--text);}
.notes-mic.rec{border-color:var(--danger);background:var(--danger);color:#fff;}
.notes-category,.notes-search{min-height:38px;border:1px solid var(--border);border-radius:10px;background:var(--soft);color:var(--text);font:inherit;font-size:13px;outline:0;}
.notes-category{padding:7px 30px 7px 10px;}
.notes-search{width:min(260px,100%);padding:8px 11px;}
.notes-category:focus,.notes-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);}
.notes-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 14px;margin-top:18px;}
.notes-tools-main{display:flex;align-items:center;gap:10px;min-width:0;}
.notes-count{color:var(--muted);font-size:13px;font-weight:650;white-space:nowrap;}
.notes-filters{display:flex;align-items:center;gap:7px;overflow-x:auto;scrollbar-width:none;}
.notes-tools>.notes-filters{grid-column:1/-1;grid-row:2;}
.notes-filters::-webkit-scrollbar{display:none;}
.notes-filter-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 108px;width:108px;min-width:108px;min-height:34px;padding:6px 8px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--muted);font:inherit;font-size:12px;white-space:nowrap;overflow:hidden;cursor:pointer;}
.notes-filter-btn>span{min-width:0;overflow:hidden;text-overflow:ellipsis;}
.notes-filter-btn.on{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--accent-soft);color:var(--accent-active);}
.notes-folder-add{border-style:dashed;color:var(--accent-active);}
.notes-folder-form{display:grid;gap:12px;padding:14px;}
.notes-folder-form input{width:100%;min-height:44px;padding:9px 11px;border:1px solid var(--border);border-radius:10px;background:var(--soft);color:var(--text);font:inherit;outline:0;}
.notes-folder-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);}
.notes-folder-form .btn-main{width:100%;justify-content:center;min-height:44px;}
.notes-folder-list{display:grid;gap:8px;}
.notes-folder-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:8px;padding:8px 8px 8px 12px;border:1px solid var(--border);border-radius:12px;background:var(--soft);}
.notes-folder-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.notes-folder-delete{width:44px;height:44px;min-width:44px;}
.notes-sort{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--soft);}
.notes-tools>.notes-sort{grid-column:2;grid-row:1;}
.notes-sort-btn{min-height:32px;padding:6px 11px;border:0;border-radius:7px;background:transparent;color:var(--muted);font:inherit;font-size:12px;cursor:pointer;transition:background .16s var(--ease),color .16s var(--ease),box-shadow .16s var(--ease);}
.notes-sort-btn:hover{color:var(--text);}
.notes-sort-btn.on{background:var(--panel);color:var(--text);box-shadow:var(--shadow-sm);}
.notes-list{display:grid;gap:20px;margin-top:14px;}
.notes-day{display:grid;gap:9px;}
.notes-day-head{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.01em;}
.notes-day-head::after{content:"";height:1px;flex:1;background:var(--border);}
.note-card{position:relative;padding:16px 88px 16px 16px;border:1px solid var(--border);border-radius:14px;background:var(--panel);}
.note-card.favorite{border-color:color-mix(in srgb,#f6b73c 42%,var(--border));}
.note-text{color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;}
.note-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;color:var(--quiet);font-size:12px;}
.note-source{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border:1px solid var(--border);border-radius:999px;background:var(--soft);color:var(--muted);font-size:11px;}
.note-category-select{min-height:26px;max-width:150px;padding:2px 24px 2px 7px;border:1px solid var(--border);border-radius:999px;background:var(--soft);color:var(--muted);font:inherit;font-size:11px;}
.note-actions{position:absolute;right:9px;top:9px;display:flex;gap:2px;}
.note-favorite.on{color:#e6a116;}
.notes-empty{padding:42px 18px;text-align:center;color:var(--quiet);}
@media(max-width:700px){
  .notes-page{padding:18px 14px 70px}
  .notes-compose-foot{align-items:stretch;flex-direction:column;}
  .notes-compose-actions{display:grid;grid-template-columns:minmax(0,1fr) 44px auto;}
  .notes-compose-actions .btn-main{justify-content:center;}
  .notes-mic{width:44px;height:44px;min-width:44px;}
  .notes-category,.note-category-select{min-height:44px;}
  .notes-tools{display:flex;align-items:stretch;flex-direction:column;gap:9px;}
  .notes-tools-main{align-items:stretch;flex-direction:column;}
  .notes-search{width:100%;min-height:44px;}
  .notes-filter-btn{min-height:44px;}
  .notes-sort{display:grid;grid-template-columns:1fr 1fr;}
  .notes-sort-btn{width:100%;min-height:44px;}
}
@media(max-width:760px){
  .tr-row .inp,.tr-row .inp input,.crm-send-in{min-height:44px;}
  .tm-pane>.crm-send-box>.crm-send .crm-send-in{height:44px;min-height:44px!important;}
  .tm-pane>.crm-send-box>.crm-send .send{width:44px;height:44px;min-width:44px;}
  .screen[data-screen="crm"] .feed,
  .screen[data-screen="team"] .feed{padding-bottom:calc(84px + env(safe-area-inset-bottom));}
}
@media (prefers-reduced-motion:reduce){.notes-sort-btn{transition:none;}}

/* ═══ Telegram Mini App: мобильный каркас и компактные рабочие экраны ═══
   Обычная мобильная версия сайта остаётся прежней: все правила ниже
   включаются только на /miniapp, где высота меняется вместе с Telegram. */
.mini-tabbar{display:none;}
html.tg-miniapp #parallelTasks,
html.tg-miniapp #parallelOpenBtn{display:none!important;}
@media(max-width:760px){
  html.tg-miniapp{
    --mini-tabbar-h:64px;
    --mini-side-pad:max(12px,var(--tg-content-safe-area-inset-left,0px));
  }
  html.tg-miniapp body{touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
  html.tg-miniapp .app{
    height:var(--tg-live-height,var(--tg-viewport-height,100dvh));
    min-height:0;
  }
  html.tg-miniapp .center{height:100%;min-height:0;}
  html.tg-miniapp .top{
    height:calc(48px + var(--tg-content-safe-area-inset-top,0px));
    min-height:calc(48px + var(--tg-content-safe-area-inset-top,0px));
    padding:var(--tg-content-safe-area-inset-top,0px)
      max(14px,var(--tg-content-safe-area-inset-right,0px)) 0
      max(14px,var(--tg-content-safe-area-inset-left,0px));
    gap:8px;
  }
  html.tg-miniapp .top-title{font-size:16px;}
  html.tg-miniapp #openBtn,
  html.tg-miniapp #backBtn,
  html.tg-miniapp #themeBtn,
  html.tg-miniapp #welcomeBtn,
  html.tg-miniapp .top-parallel-open,
  html.tg-miniapp #inspShow{display:none!important;}
  html.tg-miniapp #topExtra:empty{display:none!important;}
  html.tg-miniapp .screens{min-height:0;}
  html.tg-miniapp .screen.visible{min-height:0;overflow:hidden;}
  html.tg-miniapp .screen.visible>[data-body]{min-width:0;}

  /* В Mini App первые три задачи доступны большим пальцем; всё
     остальное открывается через полноэкранный список «Ещё». */
  html.tg-miniapp .site-tabbar{display:none!important;}
  html.tg-miniapp .mini-tabbar{
    display:flex;flex:0 0 auto;min-height:var(--mini-tabbar-h);
    padding:5px max(6px,var(--tg-safe-area-inset-right,0px))
      calc(5px + max(env(safe-area-inset-bottom),var(--tg-safe-area-inset-bottom,0px)))
      max(6px,var(--tg-safe-area-inset-left,0px));
    background:var(--panel);
  }
  html.tg-miniapp .mini-tabbar .tab{height:52px;min-width:0;border-radius:12px;font-size:10.5px;}
  html.tg-miniapp .mini-tabbar .tab svg{width:21px;height:21px;}
  html.tg-miniapp.tg-keyboard-open .mini-tabbar{display:none;}
  /* Нижняя навигация не перекрывает плавающие слои. */
  html.tg-miniapp .toasts{top:10px;bottom:auto;max-width:calc(100% - 24px);}
  html.tg-miniapp .toast{max-width:100%;}

  /* Меню разделов — отдельный экран, а не узкая десктопная шторка. */
  html.tg-miniapp .side,
  html.tg-miniapp .backdrop{display:none!important;}
  html.tg-miniapp .side{
    top:var(--tg-content-safe-area-inset-top,0px);
    bottom:var(--tg-safe-area-inset-bottom,0px);
    width:100%;max-width:none;border-right:0;box-shadow:none;
  }
  html.tg-miniapp .side-top{min-height:54px;padding:10px 14px;}
  html.tg-miniapp .nav{padding:6px 10px 10px;gap:3px;}
  html.tg-miniapp .nav-item{height:46px;min-height:46px;padding:0 12px;border-radius:12px;}
  html.tg-miniapp .side-hist{padding:6px 10px 0;}
  html.tg-miniapp .side-bottom{padding:8px 10px calc(8px + var(--tg-safe-area-inset-bottom,0px));}
  html.tg-miniapp .side-bottom .icon-btn{width:46px;height:46px;min-width:46px;}
  html.tg-miniapp .backdrop{background:var(--panel);}

  /* Модалки и шторки всегда остаются между Telegram-шапкой и
     клавиатурой, а кнопки не выпадают за край. */
  html.tg-miniapp .modal-overlay{
    align-items:flex-end;padding:max(12px,var(--tg-content-safe-area-inset-top,0px))
      0 max(8px,var(--tg-safe-area-inset-bottom,0px));
  }
  html.tg-miniapp .modal-card{
    max-width:none;max-height:min(88vh,calc(var(--tg-live-height,100dvh) - 24px));
    overflow:auto;border-radius:20px 20px 14px 14px;padding:18px 16px;
  }
  html.tg-miniapp .confirm-actions,
  html.tg-miniapp .settings-actions{align-items:stretch;flex-wrap:wrap;}
  html.tg-miniapp .confirm-actions>*{min-height:44px;flex:1;}
  html.tg-miniapp .sheets{top:var(--tg-content-safe-area-inset-top,0px);}
  html.tg-miniapp .sheet{
    max-height:calc(var(--tg-live-height,100dvh) - var(--tg-content-safe-area-inset-top,0px) - 8px);
    padding-bottom:max(env(safe-area-inset-bottom),var(--tg-safe-area-inset-bottom,0px));
  }
  html.tg-miniapp .menu,
  html.tg-miniapp .tm-floating{max-width:calc(100vw - 16px);max-height:70vh;overflow:auto;}

  /* Сценарист и Поиск идей: не показываем пустую вторую шапку,
     а список клиентов даём как полноценный мобильный экран. */
  html.tg-miniapp .sbeta-chatbar.is-empty{display:none;}
  html.tg-miniapp .sbeta-empty{place-items:start center;height:auto;min-height:100%;padding:22px 18px;}
  html.tg-miniapp .sbeta-empty .hero{padding-top:28px;}
  html.tg-miniapp .sbeta-clients{width:100%;box-shadow:none;}
  html.tg-miniapp .sbeta-clients-head{min-height:56px;padding:10px 14px;}
  html.tg-miniapp .sbeta-close{width:44px;height:44px;}
  html.tg-miniapp .sbeta-client-back{display:inline-flex;flex:0 0 auto;}
  html.tg-miniapp .sbeta-new{min-height:44px;}
  html.tg-miniapp .sbeta-empty .btn-main{min-height:44px;}
  html.tg-miniapp .sbeta-client{min-height:56px;padding:6px 8px 6px 12px;}
  html.tg-miniapp .sbeta-client-open{min-height:44px;}
  html.tg-miniapp .sbeta-edit,
  html.tg-miniapp .sbeta-delete{width:44px;height:44px;border-radius:10px;}
  html.tg-miniapp .sbeta-chatbar{min-height:50px;padding:3px 10px;}
  html.tg-miniapp .sbeta-thread{padding:14px 10px;}
  html.tg-miniapp .comp-wrap.gpt-workspace-composer{
    bottom:var(--mini-tabbar-h);padding:6px 8px max(8px,var(--tg-safe-area-inset-bottom,0px));
  }
  html.tg-miniapp.tg-keyboard-open .comp-wrap.gpt-workspace-composer{bottom:0;}

  /* Говорилка и Хронометр: глобальная шапка уже называет раздел,
     поэтому не дублируем H1 и уменьшаем высокие пустые поля. */
  html.tg-miniapp .tr-wrap{gap:12px;}
  html.tg-miniapp .tr-head h1,
  html.tg-miniapp .chrono-head h1{display:none;}
  html.tg-miniapp .tr-head p,
  html.tg-miniapp .chrono-head p{font-size:12.5px;line-height:1.45;}
  html.tg-miniapp .tr-drop{min-height:132px;padding:18px 14px;}
  html.tg-miniapp .tr-row .inp{height:auto;min-height:44px;padding:0 10px;align-items:center;}
  html.tg-miniapp .tr-row .inp input{min-height:44px;}
  html.tg-miniapp .tr-row .btn-main{min-height:44px;}
  html.tg-miniapp .tr-seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}
  html.tg-miniapp .tr-seg button{min-width:0;padding:0 8px;}
  html.tg-miniapp .chrono-wrap{gap:12px;}
  html.tg-miniapp .chrono-grid{gap:12px;}
  html.tg-miniapp .chrono-editor{min-height:310px;padding:14px;}
  html.tg-miniapp .chrono-text{min-height:220px;padding:14px;}
  html.tg-miniapp .chrono-result{min-height:0;padding:16px 14px;}
  html.tg-miniapp .chrono-upload,
  html.tg-miniapp .chrono-clear,
  html.tg-miniapp .chrono-speed select{min-height:44px;}

  /* Заметки и Избранное: каждое действие достижимо пальцем,
     заголовок сценария не обрезается посреди слова. */
  html.tg-miniapp .notes-page{padding:14px 12px 24px;}
  html.tg-miniapp .notes-compose{padding:14px;}
  html.tg-miniapp .notes-compose .btn-main{min-height:44px;}
  html.tg-miniapp .notes-sort-btn{min-height:44px;}
  html.tg-miniapp .notes-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;overflow:visible;}
  html.tg-miniapp .notes-filter-btn{width:100%;min-width:0;min-height:44px;padding:6px 4px;gap:3px;font-size:11px;}
  html.tg-miniapp .note-card{padding-right:108px;}
  html.tg-miniapp .note-actions .icon-btn{width:44px;height:44px;}
  html.tg-miniapp .fav-c{padding:14px;}
  html.tg-miniapp .fav-t{-webkit-line-clamp:3;overflow-wrap:anywhere;}
  html.tg-miniapp .fav-a{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
  html.tg-miniapp .fav-a .btn2,
  html.tg-miniapp .fav-a button{min-height:44px;justify-content:center;}

  /* Чат команды — один цельный мессенджер от шапки до композера. */
  html.tg-miniapp .screen[data-screen="team"] .feed{padding:0;}
  html.tg-miniapp .tm-wrap{width:100%;height:100%;border:0;}
  html.tg-miniapp .tm-head{padding-left:8px;padding-right:8px;}
  html.tg-miniapp .tm-head .icon-btn{width:44px;height:44px;min-width:44px;}
  html.tg-miniapp .tm-chat{padding:10px 7px;}
  html.tg-miniapp .tm-msg{max-width:94%;}
  html.tg-miniapp .tm-bub{font-size:14px;line-height:1.38;}
  html.tg-miniapp .tm-pane>.crm-send-box>.crm-send{min-height:58px;padding:6px;}
  html.tg-miniapp .tm-pane>.crm-send-box>.crm-send .crm-send-in{min-height:44px;}
  html.tg-miniapp .tm-emoji-grid{grid-template-columns:repeat(7,minmax(0,1fr));}
  html.tg-miniapp .tm-emoji-grid button{min-height:40px;}

  /* CRM: три рабочих экрана без вкладки переписок. Переключатель
     всегда виден, а карточки и фильтры не требуют горизонтальной прокрутки. */
  html.tg-miniapp .screen[data-screen="crm"] .feed{padding:0 10px 8px;}
  html.tg-miniapp .screen[data-screen="crm"] .pane-in{gap:8px;}
  html.tg-miniapp .crm-tabs{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;
    flex:0 0 auto;margin:0;padding:4px;border:1px solid var(--border);
    border-radius:13px;background:var(--panel);
  }
  html.tg-miniapp .crm-tab{width:100%;min-width:0;min-height:44px;height:auto;padding:7px 4px;justify-content:center;font-size:12px;text-align:center;}
  html.tg-miniapp .crm-host{overflow-x:hidden;overscroll-behavior-y:contain;padding-bottom:8px;}
  html.tg-miniapp .crm-stats{gap:10px;}
  html.tg-miniapp .crm-periods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;}
  html.tg-miniapp .crm-period{width:100%;min-width:0;min-height:44px;height:auto;justify-content:center;padding:7px 6px;}
  html.tg-miniapp .crm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  html.tg-miniapp .crm-kpi{min-height:0;padding:13px;}
  html.tg-miniapp .crm-kpi-v{font-size:26px;}
  html.tg-miniapp .crm-grid{grid-template-columns:1fr;gap:10px;}
  html.tg-miniapp .crm-panel{padding:13px;overflow:hidden;}
  html.tg-miniapp .crm-mon{overflow-x:auto;}
  html.tg-miniapp .crm-sil-sum{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  html.tg-miniapp .crm-sil-sum-i{padding:12px;}
  html.tg-miniapp .crm-sil-h{min-height:48px;padding:8px 9px;}
  html.tg-miniapp .crm-sil{padding:11px 8px 11px 12px;}
  html.tg-miniapp .crm-sil-acts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-left:0;opacity:1;height:auto;overflow:visible;}
  html.tg-miniapp .crm-sil-b{min-width:0;min-height:44px;justify-content:center;}
  html.tg-miniapp .crm-sil-write{margin-left:0;}
  html.tg-miniapp .crm-fu{margin-bottom:14px;}
  html.tg-miniapp .crm-fu-head{padding:14px 12px;}
  html.tg-miniapp .crm-fu-title{font-size:19px;}
  html.tg-miniapp .crm-fu-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
  html.tg-miniapp .crm-fu-tabs{display:flex;}
  html.tg-miniapp .crm-fu-tab{width:auto;min-height:44px;}
  html.tg-miniapp .crm-fu-row{grid-template-columns:minmax(0,1fr) auto;padding:13px 10px;}
  html.tg-miniapp .crm-content{gap:12px;padding-top:0;}
  html.tg-miniapp .crm-content-title{font-size:20px;}
  html.tg-miniapp .crm-content-toolbar,
  html.tg-miniapp .crm-content-datebar,
  html.tg-miniapp .crm-content-kpis{grid-template-columns:1fr;}
  html.tg-miniapp .crm-content-actions,
  html.tg-miniapp .crm-content-datebar .crm-content-actions{grid-column:auto;display:grid;grid-template-columns:1fr 1fr;width:100%;}
  html.tg-miniapp .crm-content-action{width:100%;min-width:0;}
  html.tg-miniapp .crm-content-reels{grid-template-columns:1fr;}
  html.tg-miniapp .crm-content-funnel{padding:13px;}
  html.tg-miniapp .crm-content-funnel-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  html.tg-miniapp .crm-content-reminder-form{grid-template-columns:1fr;}
  html.tg-miniapp .crm-content-reminder-toggle{grid-column:auto;}
  html.tg-miniapp .crm-content-list-count{white-space:normal;}

  /* Админ: четыре вкладки на телефоне идут сеткой 2×2 и не обрезаются. */
  html.tg-miniapp .adm-wrap{padding:16px 12px 28px;}
  html.tg-miniapp .adm-head h1{font-size:20px;}
  html.tg-miniapp .adm-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;overflow:visible;}
  html.tg-miniapp .adm-tab{min-width:0;align-items:center;justify-content:center;padding:8px 4px;}
  html.tg-miniapp .adm-tab-h{display:none;}
  html.tg-miniapp .adm-tab-t{font-size:13px;max-width:100%;overflow:hidden;text-overflow:ellipsis;}
  html.tg-miniapp .adm-seg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;}
  html.tg-miniapp .adm-seg button{padding:0 4px;font-size:12px;}
  html.tg-miniapp .adm-tiles{grid-template-columns:repeat(2,minmax(0,1fr));}
  html.tg-miniapp .adm-tile{padding:12px;}
  html.tg-miniapp .adm-tile-v{font-size:22px;}
  html.tg-miniapp .adm-eng-v{min-width:0;text-align:left;}
  html.tg-miniapp .adm-chart,
  html.tg-miniapp .adm-hgrid{min-width:0;max-width:100%;overflow:hidden;}
  html.tg-miniapp .adm-chatcard{width:100%;max-height:calc(var(--tg-live-height,100dvh) - 24px);}

  /* Обложки: три огромных drop-zone превращаются в компактные
     мобильные строки; главная кнопка видна без долгой прокрутки. */
  .screen[data-screen="covers"] .feed{padding:0 10px 10px;}
  .cov-auto-drop3{min-height:0!important;justify-content:flex-start!important;gap:12px!important;padding:12px 0 20px!important;}
  .cov-auto-zones-row{gap:9px!important;}
  .cov-auto-zones-row .cov-auto-zone{
    flex:0 0 auto!important;   /* 05.10: flex-basis 0 сжимал зону, текст вылезал на соседнюю */
    min-height:108px!important;padding:14px 12px!important;gap:3px!important;
    display:grid!important;grid-template-columns:48px minmax(0,1fr)!important;
    grid-template-areas:"icon title" "icon sub" "icon ex" "icon fmt" "file file"!important;
    text-align:left!important;border-radius:14px!important;
  }
  .cov-auto-zones-row .cov-auto-zone-main{min-height:122px!important;}
  .cov-auto-zone-icon{grid-area:icon;font-size:30px!important;text-align:center;}
  .cov-auto-zone-title{grid-area:title;font-size:15px!important;align-self:end;}
  .cov-auto-zone-sub{grid-area:sub;font-size:12px!important;align-self:start;}
  .cov-auto-zone-file{grid-area:file;justify-content:flex-start;}
  /* 05.10: «Например» и форматы без своей области попадали в узкую колонку иконки и наезжали на текст. */
  .cov-auto-zone-ex{grid-area:ex;font-size:11.5px!important;}
  .cov-auto-zone-fmt{grid-area:fmt;font-size:11.5px!important;}
  .cov-auto-zone-note{top:8px!important;right:10px!important;}
  .cov-auto-start{width:100%;min-height:46px!important;margin-bottom:0!important;transform:none!important;}
  .cov-auto-results{padding:10px 0 20px!important;}
  .cov-auto-bar .cov-btn,
  .cov-auto-cell-actions .cov-btn{min-height:44px;}

  /* Кабинет: парные действия занимают всю ширину и не сжимаются. */
  html.tg-miniapp .cab-telegram-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
  html.tg-miniapp .cab-telegram-actions .btn2,
  html.tg-miniapp .cab-profile-actions .btn2,
  html.tg-miniapp .cab-exit{min-height:44px;}
}
@media(max-width:360px){
  .auth-overlay{padding:12px;}
  .auth-card{padding:22px 16px;}
  .auth-brand{flex-direction:column;align-items:center;text-align:center;}
  .a-title{font-size:15px;white-space:nowrap;overflow-wrap:normal;}
  .a-sub{font-size:12px;line-height:1.35;overflow-wrap:normal;word-break:normal;}
  html.tg-miniapp .mini-tabbar .tab{
    padding-inline:1px;overflow:hidden;overflow-wrap:anywhere;
    text-align:center;line-height:1.05;
  }
  html.tg-miniapp .crm-content-actions,
  html.tg-miniapp .crm-content-datebar .crm-content-actions{grid-template-columns:1fr;}
}

/* Inline dictation: the composer remains visible while speaking. */
.dictation-mic.rec{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;transform:scale(1.1);}
.dictation-mic{transition:transform 180ms ease-out;}
.dictation-mic:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.dictation-status{display:block;flex-basis:100%;font-size:12px;line-height:1.4;color:var(--text);padding:4px 8px;max-width:100%;overflow-wrap:anywhere;}
.dictation-status,.dictation-strip,.dictation-recovery,#dictationRecovery{display:none!important;}
/* 05.10: тихая строка над полем вместо всплывающего уведомления (только долгая запись без журнала) */
.dictation-storage-hint{margin:0 0 6px;padding:0 12px;font-size:12px;line-height:1.4;color:var(--muted);overflow-wrap:anywhere;}
.dictation-storage-hint[hidden]{display:none;}
@media(max-width:768px){.dictation-mic{min-width:44px;min-height:44px;}}
@media(prefers-reduced-motion:reduce){.dictation-mic{transition:none;}.dictation-mic.rec{transform:none;}}
.dictation-strip{position:relative;flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0;max-width:100%;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px;}
.dictation-strip>span{flex:1 1 100%;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dictation-strip[hidden]{display:none;}.dictation-strip button,.dictation-recovery button{min-height:44px;cursor:pointer;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px;}
.dictation-recovery{position:fixed;inset:12vh max(12px,calc((100vw - 640px)/2));z-index:96;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:auto;}.dictation-recovery textarea{width:100%;min-height:100px;}
/* 07.10: «+ Новый чат» в Telegram Mini App на iPhone — окно «больше экрана». Поле названия
   было 13 px и получало фокус сразу при открытии: iOS (Safari и WebView Telegram) при фокусе
   в поле мельче 16 px увеличивает всю страницу, и после этого она шире экрана. На телефоне
   поля в окнах и .settings-input — 16 px, увеличения нет. Компьютер без изменений. */
@media (max-width:760px), (hover:none) and (pointer:coarse){
  .settings-input,
  .modal-card input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
  .modal-card textarea,
  .modal-card select{font-size:16px;}
}
/* ─── Аналитика Instagram (владелец, «В разработке») ─── */
.nav-dev{
  margin-left:auto;padding:2px 6px;border-radius:999px;background:var(--tint);
  color:var(--accent-active);font-size:9px;font-weight:700;line-height:1.35;white-space:nowrap;
}
.nav-item.on .nav-dev{background:var(--card);}
.screen[data-screen="analytics"] .feed{display:flex;flex-direction:column;padding:14px 16px 12px;}
.screen[data-screen="analytics"] .pane-in{max-width:none;width:100%;gap:14px;}
.anl{display:flex;flex-direction:column;gap:14px;width:100%;min-width:0;padding:4px 0 28px;}
.anl-chip{display:inline-flex;align-items:center;min-height:24px;padding:2px 9px;border-radius:999px;background:var(--tint);color:var(--accent-active);font-size:11px;font-weight:700;white-space:nowrap;}
.anl-card{min-width:0;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-card);}
.anl-card-k{color:var(--quiet);font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.035em;}
.anl-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.anl-handle{font-size:18px;font-weight:700;color:var(--text);text-decoration:none;overflow-wrap:anywhere;}
.anl-handle:hover{color:var(--accent-active);}
.anl-meta{margin-top:5px;color:var(--muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.anl-note{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.anl-note.is-ok{color:var(--ok);}
.anl-note.is-warn{color:var(--warn);}
.anl-note.is-error{color:var(--danger);}
.anl-connect{display:flex;flex-direction:column;gap:12px;max-width:620px;}
.anl-steps{display:flex;flex-direction:column;gap:20px;margin:4px 0 0;padding:0;list-style:none;}
.anl-step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start;}
.anl-step-n{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:var(--tint);color:var(--accent-active);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;}
.anl-step.is-later .anl-step-n{background:var(--card);color:var(--quiet);}
.anl-step-b{min-width:0;display:flex;flex-direction:column;gap:8px;}
.anl-step-t{color:var(--text);font-size:15px;font-weight:650;line-height:1.35;padding-top:4px;}
.anl-step-b .anl-meta,.anl-step-b .anl-note{margin-top:0;}
.anl-code-help{margin:8px 0 0;padding-left:20px;color:var(--muted);font-size:13px;line-height:1.55;}
.anl-connect-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;}
.anl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"norm tg" "weeks weeks";align-items:start;gap:14px;}
.anl-grid>[data-qa="analytics-week"]{grid-area:norm;}
.anl-grid>[data-qa="analytics-telegram"]{grid-area:tg;}
.anl-grid>[data-qa="analytics-weeks"]{grid-area:weeks;}
.anl-norm-v{margin-top:8px;color:var(--text);font-size:30px;font-weight:720;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.anl-norm-d{margin-top:7px;color:var(--muted);font-size:13px;line-height:1.45;}
.anl-norm-d.is-ok{color:var(--ok);font-weight:650;}
.anl-wk-list{display:flex;flex-direction:column;margin:8px 0 0;padding:0;list-style:none;}
.anl-wk-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 0;border-top:1px solid var(--border);}
.anl-wk-row:first-child{border-top:0;}
.anl-wk-dot{flex:none;width:12px;height:12px;border-radius:50%;background:var(--quiet);}
.anl-wk-row.is-ok .anl-wk-dot{background:var(--ok);}
.anl-wk-row.is-mid .anl-wk-dot{background:var(--warn);}
.anl-wk-row.is-zero .anl-wk-dot{background:var(--danger);}
.anl-wk-row.is-cur .anl-wk-dot{background:var(--accent);}
.anl-wk-t{display:flex;flex-direction:column;flex:1;min-width:0;}
.anl-wk-d{color:var(--text);font-size:15px;font-weight:600;line-height:1.3;overflow-wrap:anywhere;}
.anl-wk-s{color:var(--muted);font-size:12px;line-height:1.4;overflow-wrap:anywhere;}
.anl-wk-row.is-current .anl-wk-s{color:var(--accent-active);font-weight:650;}
.anl-wk-v{flex:none;color:var(--text);font-size:22px;font-weight:720;line-height:1.1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;}
.anl-wk-v small{color:var(--muted);font-size:14px;font-weight:600;letter-spacing:0;}
.anl-wk-v.is-none{color:var(--muted);font-size:14px;font-weight:600;}
.anl-wk-all{display:flex;align-items:center;justify-content:center;width:100%;margin-top:8px;min-height:44px;}
.anl-plan-note{margin:-4px 0 12px;}
.anl-tr-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;}
.anl-tr-more{margin-top:8px;}
.anl a.crm-content-action{text-decoration:none;}
.anl-plan-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.anl-month{display:flex;align-items:center;gap:8px;}
.anl-month-l{min-width:130px;text-align:center;font-size:14px;font-weight:650;color:var(--text);}
.anl-plan-sec{display:flex;flex-direction:column;min-width:0;}
.crm-content-script-part div.anl-tr-note{color:var(--muted);font-size:13px;line-height:1.5;}
.crm-content-script-part div.anl-tr-note.is-warn{color:var(--warn);}
.crm-content-script-part div.anl-tr-note.is-error{color:var(--danger);}
.anl-tr-retry{margin-top:8px;}
.anl-detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.anl-empty{padding:18px 0;color:var(--muted);font-size:13px;}
.anl-code{margin-top:10px;font-size:34px;font-weight:760;letter-spacing:.12em;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.anl-switch{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0;border:0;background:none;color:var(--text);font:600 13px var(--sans);cursor:pointer;}
.anl-switch-t{position:relative;flex:none;width:40px;height:24px;border-radius:999px;background:var(--press-surface);transition:background .15s;}
.anl-switch-t::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .15s;}
.anl-switch[aria-checked="true"] .anl-switch-t{background:var(--accent);}
.anl-switch[aria-checked="true"] .anl-switch-t::after{transform:translateX(16px);}
.anl-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-ctl);}
.anl-switch:disabled{opacity:.55;cursor:not-allowed;}
.adm-anl-sec{margin-top:18px;}
.adm-anl-sec-t{margin:0 0 10px;font-size:14px;font-weight:700;color:var(--text);}
.adm-anl-row{grid-template-columns:minmax(160px,1fr) minmax(150px,.9fr) minmax(160px,1fr);}
.adm-anl-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;}
.adm-anl-actions .btn2{min-height:40px;}
.adm-anl-test{display:inline-flex;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--tint);color:var(--accent-active);font-size:11px;font-weight:700;vertical-align:middle;}
.adm-anl-off{display:inline-flex;align-self:flex-start;margin-top:5px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger);font-size:12px;font-weight:700;}
.adm-anl-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;}
.adm-anl-form .adm-control{min-width:180px;flex:1;}
.adm-anl-src-head{margin:0 0 10px;color:var(--muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.adm-anl-sub{margin:16px 0 8px;font-size:13px;font-weight:700;color:var(--text);}
.adm-anl-evs{border:1px solid var(--border);border-radius:var(--r-card);background:var(--card);overflow:hidden;}
.adm-anl-ev{display:grid;grid-template-columns:minmax(120px,auto) minmax(0,1fr);gap:4px 12px;padding:9px 12px;border-bottom:1px solid var(--border);font-size:12px;line-height:1.45;min-width:0;}
.adm-anl-ev:last-child{border-bottom:0;}
.adm-anl-ev-t{color:var(--quiet);white-space:nowrap;}
.adm-anl-ev-b{min-width:0;color:var(--text);overflow-wrap:anywhere;}
.adm-anl-ev-b b{font-weight:650;}
.adm-anl-ev-d{color:var(--muted);}
/* Владелец сначала видит людей и результат, диагностика раскрывается отдельно. */
.adm-anl-head-copy{min-width:0;}
.adm-anl-head-title{margin:0 0 4px;font-size:20px;font-weight:700;letter-spacing:-.02em;}
.adm-anl-summary{display:grid;grid-template-columns:minmax(200px,1.3fr) minmax(200px,1.2fr) repeat(2,minmax(140px,.8fr));gap:0;border:1px solid var(--border);border-radius:16px;background:var(--card);overflow:hidden;}
.adm-anl-stat{padding:20px 24px;min-width:0;display:flex;flex-direction:column;justify-content:center;}
.adm-anl-stat+.adm-anl-stat{border-left:1px solid var(--border);}
.adm-anl-stat-v{font-size:28px;font-weight:700;line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.adm-anl-stat:first-child .adm-anl-stat-v{font-size:36px;color:var(--accent-active);}
.adm-anl-stat-l{margin-top:8px;font-size:13px;color:var(--muted);line-height:1.4;}
.adm-anl-health-v{font-size:20px;letter-spacing:0;}
.adm-anl-health-v.ok{color:var(--ok);}
.adm-anl-health-v.warning{color:#8B5E12;}
.adm-anl-health-v.error{color:var(--danger);}
:root[data-theme="dark"] .adm-anl-health-v.warning{color:var(--warn);}
.adm-anl-issues{margin:12px 0 0;padding:12px 16px;border-radius:12px;background:var(--field);color:var(--text);font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.adm-anl-issues ul{margin:0;padding-left:20px;}
.adm-anl-people-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:24px 0 12px;}
.adm-anl-people-head h3{margin:0;font-size:16px;font-weight:700;}
.adm-anl-result-count{font-size:12px;color:var(--muted);}
.adm-anl-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.adm-anl-filters .adm-control{min-width:200px;}
.adm-anl-filters .adm-control.wide{flex:1;}
#adm-panel-analytics .adm-anl-filters input,#adm-panel-analytics .adm-anl-filters select{min-height:44px;}
.adm-anl-person-list{display:flex;flex-direction:column;gap:12px;}
.adm-anl-person{border:1px solid var(--border);border-radius:16px;background:var(--card);min-width:0;overflow:hidden;}
.adm-anl-person-grid{display:grid;grid-template-columns:minmax(200px,1.2fr) minmax(160px,.7fr) minmax(260px,1.3fr);gap:24px;padding:20px 24px;align-items:start;}
.adm-anl-person-grid>div{min-width:0;}
.adm-anl-person-name{font-size:17px;font-weight:700;line-height:1.4;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.adm-anl-person-login{margin-top:4px;font-size:12px;color:var(--muted);overflow-wrap:anywhere;}
.adm-anl-person-ig{display:inline-flex;align-items:center;min-height:44px;min-width:44px;margin:4px 0 0;font-size:14px;font-weight:600;color:var(--accent-active);overflow-wrap:anywhere;}
.adm-anl-person-ig:hover{color:var(--accent-hover);text-decoration:underline;}
.adm-anl-person-meta{font-size:12px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere;}
.adm-anl-person-meta+.adm-anl-person-meta{margin-top:4px;}
.adm-anl-field-label{margin:0 0 8px;color:var(--muted);font-size:12px;font-weight:600;}
.adm-anl-sent{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted);}
.adm-anl-sent strong{font-size:26px;line-height:1.25;color:var(--text);font-weight:700;font-variant-numeric:tabular-nums;}
.adm-anl-today{margin-top:8px;font-size:13px;line-height:1.5;color:var(--text);font-variant-numeric:tabular-nums;}
.adm-anl-today b{font-weight:650;}
.adm-anl-sync{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:var(--field);font-size:12px;font-weight:650;line-height:1.4;color:var(--text);margin-bottom:8px;}
.adm-anl-sync.ok,.adm-anl-sync.partial,.adm-anl-message-status.sent{background:var(--ok-soft);color:var(--ok);}
.adm-anl-sync.error,.adm-anl-message-status.failed{background:var(--danger-soft);color:var(--danger);}
.adm-anl-history{border-top:1px solid var(--border);}
.adm-anl-history>summary,.adm-anl-technical>summary{min-height:44px;padding:12px 24px;cursor:pointer;font-size:13px;font-weight:600;line-height:1.5;color:var(--text);overflow-wrap:anywhere;}
.adm-anl-history>summary:hover,.adm-anl-technical>summary:hover{background:var(--hover-surface);}
.adm-anl-history[open]>summary{background:var(--field);}
.adm-anl-history-body{padding:8px 24px 20px;}
.adm-anl-history-note{margin:8px 0 12px;font-size:12px;color:var(--muted);line-height:1.5;}
.adm-anl-message{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,2fr) minmax(110px,.6fr);gap:12px 24px;padding:16px 0;border-bottom:1px solid var(--border);font-size:13px;line-height:1.5;}
.adm-anl-message:last-child{border-bottom:0;}
.adm-anl-message>div{min-width:0;overflow-wrap:anywhere;}
.adm-anl-message-time{font-variant-numeric:tabular-nums;color:var(--muted);}
.adm-anl-message-copy{white-space:pre-wrap;}
.adm-anl-message-kind{font-weight:600;}
.adm-anl-message-recipient{margin-top:8px;font-size:13px;line-height:1.5;overflow-wrap:anywhere;}
.adm-anl-message-recipient a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;color:var(--accent-active);overflow-wrap:anywhere;}
.adm-anl-message-recipient a:hover{color:var(--accent-hover);text-decoration:underline;}
.adm-anl-message-content-label{margin:12px 0 8px;font-size:12px;font-weight:600;color:var(--muted);}
.adm-anl-message-image{display:block;width:360px;max-width:100%;height:auto;margin:8px 0 12px;border-radius:12px;}
.adm-anl-message-text{margin:8px 0;font-size:13px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;}
.adm-anl-message-summary{margin-top:8px;font-size:12px;line-height:1.5;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;}
.adm-anl-message-status{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:650;background:var(--field);color:var(--text);}
.adm-anl-history-more{margin-top:12px;}
.adm-anl-technical{margin-top:24px;border:1px solid var(--border);border-radius:16px;overflow:hidden;}
.adm-anl-tech-body{padding:0 24px 24px;}
#adm-panel-analytics .btn2,#adm-panel-analytics .anl-switch{min-height:44px;min-width:44px;}
#adm-panel-analytics :is(button,input,select,summary,a):focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.adm-anl-loading{height:96px;border:1px solid var(--border);border-radius:16px;background:var(--field);margin-bottom:12px;}
/* Блок «Состояние» (19.10): сбор и доставка по каждому аккаунту, только владельцу. */
.adm-anl-state{margin-top:16px;border:1px solid var(--border);border-radius:16px;background:var(--card);overflow:hidden;}
.adm-anl-state-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;padding:16px 24px 12px;}
.adm-anl-state-t{margin:0;font-size:16px;font-weight:700;}
.adm-anl-state-note{font-size:12px;color:var(--muted);}
.adm-anl-state-line{display:flex;gap:8px;flex-wrap:wrap;padding:0 24px 16px;}
.adm-anl-state-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 12px;border-radius:999px;background:var(--field);font-size:13px;line-height:1.4;color:var(--text);overflow-wrap:anywhere;}
.adm-anl-state-chip.ok{background:var(--ok-soft);color:var(--ok);}
.adm-anl-state-chip.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:#8B5E12;}
.adm-anl-state-chip.bad{background:var(--danger-soft);color:var(--danger);}
:root[data-theme="dark"] .adm-anl-state-chip.warn{color:var(--warn);}
.adm-anl-state-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(170px,1fr) minmax(190px,1.1fr) minmax(200px,1.4fr);gap:12px 20px;padding:12px 24px;border-top:1px solid var(--border);font-size:13px;line-height:1.45;align-items:start;}
.adm-anl-state-row>div{min-width:0;overflow-wrap:anywhere;}
.adm-anl-state-row.th{padding-top:10px;padding-bottom:10px;background:var(--field);color:var(--muted);font-size:12px;font-weight:600;}
.adm-anl-state-row.bad{background:var(--danger-soft);box-shadow:inset 3px 0 0 var(--danger);}
.adm-anl-state-row.warn{background:color-mix(in srgb,var(--warn) 12%,transparent);box-shadow:inset 3px 0 0 var(--warn);}
.adm-anl-state-name{font-weight:650;}
.adm-anl-state-sub{margin-top:2px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.adm-anl-state-st{font-weight:650;}
.adm-anl-state-st.ok{color:var(--ok);}
.adm-anl-state-st.warn{color:#8B5E12;}
.adm-anl-state-st.bad{color:var(--danger);}
:root[data-theme="dark"] .adm-anl-state-st.warn{color:var(--warn);}
.adm-anl-state-empty{padding:12px 24px 16px;font-size:13px;color:var(--muted);border-top:1px solid var(--border);}
@media (max-width:700px){
  .adm-anl-state-head,.adm-anl-state-line{padding-left:16px;padding-right:16px;}
  .adm-anl-state-row.th{display:none;}
  .adm-anl-state-row{grid-template-columns:minmax(0,1fr);gap:8px;padding:14px 16px;}
  .adm-anl-state-row>div[data-label]::before{content:attr(data-label);display:block;margin-bottom:2px;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
  .adm-anl-state-row>div[data-label=""]::before{display:none;}
  .adm-anl-state-noreason{display:none;}
}
@media (max-width:1100px){
  .adm-anl-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
  .adm-anl-stat:nth-child(3){border-left:0;border-top:1px solid var(--border);}
  .adm-anl-stat:nth-child(4){border-top:1px solid var(--border);}
  .adm-anl-person-grid{grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:20px 24px;}
  .adm-anl-person-update{grid-column:1/-1;}
}
@media (max-width:600px){
  .adm-anl-stat{padding:16px;}
  .adm-anl-stat-v{font-size:24px;}
  .adm-anl-stat:first-child .adm-anl-stat-v{font-size:30px;}
  .adm-anl-health-v{font-size:17px;}
  .adm-anl-person-grid{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 16px;}
  .adm-anl-filters .adm-control{min-width:0;width:100%;}
  .adm-anl-history>summary,.adm-anl-technical>summary{padding:12px 16px;}
  .adm-anl-history-body,.adm-anl-tech-body{padding-left:16px;padding-right:16px;}
  .adm-anl-message{grid-template-columns:minmax(0,1fr);gap:8px;}
}
@media (max-width:760px){
  /* Phone: the last block (Telegram code, "Open bot") keeps air above the tab bar. */
  .anl{padding-bottom:calc(48px + env(safe-area-inset-bottom));}
  .anl-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"norm" "tg" "weeks";}
  .anl-connect-line{grid-template-columns:minmax(0,1fr);}
  .adm-anl-row{grid-template-columns:minmax(0,1fr);}
  .adm-anl-ev{grid-template-columns:minmax(0,1fr);}
}
