/* Стили компонентов панели (vkhub/ui/components): дополняют vkhub.css; цвет из данных приходит только
   CSS-переменной, сами цвета и отступы — здесь. */
/* --fc — цвет функции (Manifest.color) или показателя; --ac — цвет аватара из палитры;
   --sz — размер аватара; --img — логотип; --n — число ячеек KPI-полосы; --cols/--tmin — сетка таблицы */
.ds-fc{ color:var(--fc); }
.ds-chip.fn{ color:var(--fc); background:color-mix(in srgb, var(--fc) 9%, transparent); }
.ds-chip.fn .dot{ background:var(--fc); }
.ds-chip.off{ --fc:var(--muted); }
.ds-ava{ --ac:#8A8D96; width:var(--sz,46px); height:var(--sz,46px); font-size:calc(var(--sz,46px) * .37);
  background-color:var(--ac);
  background-image:var(--img, linear-gradient(145deg, var(--ac), color-mix(in srgb, var(--ac) 73%, #fff))); }
.ds-tile{ width:32px; height:32px; border-radius:9px; display:grid; place-items:center; flex:none; color:var(--fc);
  background:color-mix(in srgb, var(--fc) 10%, transparent); }
.ds-tile .q-icon,.ds-tile i{ font-size:17px; }

/* KPI: плитка и полоса */
.ds-stat,.ds-strip .cell{ --fc:var(--accent); }
.ds-stat .bub{ background:color-mix(in srgb, var(--fc) 10%, transparent); }
.ds-stat .bub .q-icon{ color:var(--fc); }
.ds-stat .hint,.ds-strip .hint{ margin-left:6px; font-size:11.5px; color:var(--muted); font-weight:600; }
/* подпись без дельты («за 30 дней») — от края числа, а не с отступом под несуществующую дельту */
.ds-stat .foot > .hint:first-child,.ds-strip .foot > .hint:first-child{ margin-left:0; }
.ds-strip{ grid-template-columns:repeat(var(--n,4), minmax(0,1fr)); width:100%; }
.ds-strip .ic{ background:color-mix(in srgb, var(--fc) 10%, transparent); }
.ds-strip .ic .q-icon{ color:var(--fc); }
.ds-spk{ display:block; }
.ds-spk polygon{ fill:var(--fc); fill-opacity:.12; }
.ds-spk polyline{ fill:none; stroke:var(--fc); stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.ds-spk circle{ fill:var(--fc); }
@media (max-width:900px){ .ds-strip{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .ds-strip .cell{ border-left:0; border-top:1px solid var(--hair2); } }
@media (max-width:520px){ .ds-strip{ grid-template-columns:minmax(0,1fr); } }
.ds-chart{ width:100%; min-height:120px; }

/* эйбрау + герой, шапка попапа, пустое состояние, сегменты */
.ds-ehero{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; flex:1 1 auto; min-width:0; }
.ds-dlghead{ display:flex; align-items:center; gap:12px; padding:20px 54px 20px 24px; border-bottom:1px solid var(--hair); }
.ds-dlghead .tx{ flex:1; min-width:0; }
.ds-dlghead .t{ font-family:var(--f-display); font-weight:700; font-size:18px; color:var(--ink); }
.ds-dlghead .s{ font-size:12.5px; color:var(--muted); margin-top:2px; }
.ds-empty{ display:flex; flex-direction:column; align-items:center; gap:6px; text-align:center; }
.ds-empty .q-icon{ font-size:30px; color:var(--faint); }
.ds-empty .t{ font-weight:700; color:var(--ink2); }
.ds-empty .h{ font-size:12px; }
.ds-seg .sg.neg{ color:var(--neg); }
.ds-seg{ flex-wrap:wrap; }

/* окна суток: только просмотр, отметки публикаций */
.ds-day.ro .ds-win{ cursor:default; }
.ds-day.ro .ds-win:hover{ border-color:transparent; }
.ds-day.ro .ds-win.on:hover{ border-color:var(--accent); }
.ds-win.has .m{ color:var(--accent); font-weight:800; letter-spacing:0; }
.ds-win.on.has .m{ color:#fff; }
@media (max-width:640px){ .ds-day{ grid-template-columns:repeat(6,1fr); } }

/* карточка сообщества (ссылка на /c/<id>) и строка функции */
a.ds-comm{ display:block; color:inherit; text-decoration:none; cursor:pointer; }
.ds-comm.off{ opacity:.72; }
.ds-comm .who{ flex:1; min-width:0; overflow:hidden; }
.ds-comm .chips{ display:flex; gap:7px; margin:13px 0 15px; flex-wrap:wrap; }
.ds-comm .row{ display:flex; align-items:flex-end; width:100%; }
.ds-comm .row .gap{ flex:1; }
.ds-comm .wl{ margin:14px 0 6px; }
.ds-trouble{ display:flex; align-items:flex-start; gap:6px; color:var(--neg); font-weight:700; font-size:12px; margin-top:10px; }
.ds-trouble .q-icon,.ds-trouble i{ font-size:15px; flex:none; }
/* беда коротко: не длиннее двух строк, полный текст — в подсказке (title) */
.ds-trouble span{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-width:0; }
.ds-frow{ flex-wrap:wrap; row-gap:8px; }
.ds-frow .tx{ flex:1 1 180px; min-width:0; display:flex; flex-direction:column; gap:3px; }
.ds-frow .nm{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-frow .own{ font-size:11.5px; color:var(--faint); }
.ds-frow.off .ds-tile{ filter:grayscale(1); opacity:.6; }
.ds-frow .ds-status,.ds-frow .ds-chip{ flex:none; white-space:nowrap; }
/* режим, «Открыть» и лампа — одна группа справа; на узком экране переносится целиком */
.ds-frow .act{ display:flex; align-items:center; gap:12px; flex:none; flex-wrap:nowrap; margin-left:auto; }
.ds-frow .act .ds-status{ min-width:44px; }

/* таблица-сетка с «показать ещё» */
.ds-table{ overflow-x:auto; width:100%; }
.ds-table .ds-th,.ds-table .ds-tr{ grid-template-columns:var(--cols); min-width:var(--tmin,0); column-gap:12px; }
.ds-table .ds-tr.click{ cursor:pointer; }
.ds-table .ds-tr.on{ background:var(--panel); }
.ds-td{ min-width:0; overflow:hidden; text-overflow:ellipsis; font-size:13px; color:var(--ink); }
.ds-td.num,.ds-th .num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ds-td.cap{ font-size:12px; color:var(--ink2); }
.ds-td.strong{ font-weight:600; }

/* живой лог прогона: подсказка, пока прогон не выбран */
.ds-log.idle{ color:var(--on-dark2); }
.ds-chiprow{ display:flex; gap:4px; flex-wrap:wrap; }
.ds-linkbtn{ font-family:var(--f-body); font-weight:700; font-size:12.5px; color:var(--accent); text-decoration:none;
  padding:6px 10px; border-radius:var(--r-btn); flex:none; }
.ds-linkbtn:hover{ background:var(--chip); }
.ds-btn.q-btn .q-btn__content{ flex-wrap:nowrap; white-space:nowrap; }

/* страницы «Обзор» и «Сообщества»: заголовок раздела, две колонки, панель фильтра, сетка карточек */
.ds-sechead{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.ds-cols{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:18px; align-items:start; width:100%; }
.ds-col{ display:flex; flex-direction:column; gap:12px; min-width:0; }
@media (max-width:1100px){ .ds-cols{ grid-template-columns:minmax(0,1fr); } }
.ds-toolbar{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; width:100%; }
.ds-toolbar .sp{ flex:1; }
.ds-sort{ cursor:pointer; user-select:none; }
.ds-commgrid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(min(345px, 100%), 1fr)); gap:18px; width:100%; }
.ds-search input[type=search]::-webkit-search-cancel-button{ cursor:pointer; }

/* «Требует внимания»: строка-ссылка */
.ds-attnbox{ padding:4px 20px; }
a.ds-attn{ display:block; color:inherit; text-decoration:none; border-bottom:1px solid var(--hair2); }
a.ds-attn:last-of-type{ border-bottom:0; }
.ds-attn .row{ display:flex; align-items:center; gap:12px; padding:12px 2px; }
.ds-attn .tx{ flex:1; min-width:0; }
.ds-attn .nm{ font-weight:600; font-size:13.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-attn .ds-trouble{ margin-top:3px; font-weight:600; }
.ds-attn .go{ color:var(--faint); font-size:20px; flex:none; }
a.ds-attn:hover .nm{ color:var(--accent); }
@media (max-width:640px){ .ds-headright{ width:100%; margin-left:0; } .ds-headright .ds-search{ flex:1; }
  .ds-toolbar .ds-seg .sg{ padding:5px 13px; } }
/* группа одинаковых бед: стопка аватаров и список по раскрытию */
div.ds-attn.group{ border-bottom:1px solid var(--hair2); }
div.ds-attn.group:last-of-type{ border-bottom:0; }
.ds-stack{ display:flex; flex:none; }
.ds-stack .ds-ava{ border:2px solid var(--surface); box-sizing:content-box; }
.ds-stack .ds-ava + .ds-ava{ margin-left:-9px; }
.ds-attn.group .row{ align-items:flex-start; }
.ds-grouplist{ margin-top:6px; }
.ds-grouplist summary{ cursor:pointer; font-weight:700; font-size:12.5px; color:var(--accent); list-style:none; padding:2px 0; }
.ds-grouplist summary::-webkit-details-marker{ display:none; }
.ds-grouplist[open] summary{ margin-bottom:6px; }
.ds-grouplist .ls{ display:grid; grid-template-columns:repeat(auto-fill, minmax(min(200px,100%),1fr)); gap:4px 12px; }
.ds-grouplist .it{ display:flex; align-items:center; gap:8px; padding:4px 6px; border-radius:10px; color:var(--ink);
  text-decoration:none; font-size:12.5px; font-weight:600; min-width:0; }
.ds-grouplist .it span{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-grouplist .it:hover{ background:var(--panel); color:var(--accent); }

/* карточка сообщества /c/<id>: герой, блоки в две колонки, списки блоков */
.ds-cols2{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:18px; align-items:start; width:100%; }
@media (max-width:1100px){ .ds-cols2{ grid-template-columns:minmax(0,1fr); } }
.ds-chero-wrap{ width:100%; }
.ds-chero{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.ds-chero .who{ flex:1 1 240px; min-width:0; display:flex; flex-direction:column; gap:3px; }
.ds-chero .nm{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-chero .ds-trouble{ margin-top:6px; }
.ds-chero .nums{ display:flex; gap:28px; align-items:flex-end; flex-wrap:wrap; row-gap:14px; }
.ds-chero .big,.ds-cost .big{ font-family:var(--f-display); font-weight:700; font-size:22px; letter-spacing:-.02em;
  color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap; }
.ds-chero .wins{ display:flex; flex-direction:column; gap:6px; min-width:150px; max-width:260px; }
.ds-chero .wins .ds-daymini{ width:150px; }
.ds-blk{ display:flex; flex-direction:column; gap:12px; width:100%; min-width:0; }
.ds-blk > .hd{ display:flex; align-items:center; gap:4px 10px; flex-wrap:wrap; min-height:30px; }
.ds-blk > .hd .sp{ flex:1; }
.ds-blk > .hd .sub{ flex:1 1 auto; min-width:0; }
.ds-blk > .hd .sub + .sp{ flex:0; }
/* правый слот шапки блока — одной группой («Отметить прочитанными» + «Все события» не разъезжаются) */
.ds-blk > .hd .rt{ display:flex; align-items:center; gap:4px 10px; flex:none; flex-wrap:wrap; margin-left:auto; }
.ds-blknote{ margin-top:2px; }
.ds-chartwrap{ width:100%; min-height:120px; }
.ds-uplist{ display:grid; grid-template-columns:repeat(auto-fill, minmax(min(210px,100%),1fr)); gap:8px; }
.ds-uplist .dh{ grid-column:1 / -1; font-weight:700; color:var(--ink2); margin-top:4px; }
.ds-up{ border-radius:13px; padding:10px 12px; display:flex; flex-direction:column; gap:3px; min-width:0;
  background:var(--accent-bg); }
.ds-up .t{ font-weight:700; font-size:12px; color:var(--accent-d); }
.ds-up.new{ background:var(--pos-bg); }
.ds-up.new .t{ color:var(--pos); }
.ds-up .x{ font-size:12px; color:var(--ink2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-uplist .ds-showmore{ grid-column:1 / -1; }
.ds-people{ display:flex; flex-direction:column; gap:10px; }
.ds-people .ds-eyebrow + *{ margin-top:-2px; }
.ds-person{ display:flex; align-items:center; gap:10px; }
.ds-person .tx{ flex:1; min-width:0; }
.ds-person .nm{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-chiprow.wrap{ gap:7px; }
.ds-chip.adm{ background:var(--chip); color:var(--ink2); }
.ds-chip.adm.off{ opacity:.55; }
.ds-posts,.ds-evlist{ display:flex; flex-direction:column; }
.ds-post{ display:flex; flex-direction:column; gap:5px; padding:12px 0; border-bottom:1px solid var(--hair2); min-width:0; }
.ds-post:last-of-type{ border-bottom:0; }
.ds-post .top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ds-post .top .sp{ flex:1; }
.ds-post .top .ds-linkbtn{ padding:2px 8px; }
.ds-post .tx{ font-weight:600; font-size:13.5px; color:var(--ink); overflow-wrap:anywhere; }
.ds-post .why{ font-size:12px; color:var(--ink2); overflow-wrap:anywhere; }
.ds-post .why b{ font-weight:700; color:var(--muted); margin-right:4px; text-transform:uppercase; font-size:10.5px;
  letter-spacing:.08em; }
.ds-post .err{ font-size:12px; color:var(--neg); font-weight:600; }
.ds-chip.st{ background:var(--chip); color:var(--ink2); }
.ds-chip.st.scheduled{ background:var(--accent-bg); color:var(--accent-d); }
.ds-chip.st.published{ background:var(--pos-bg); color:var(--pos); }
.ds-chip.st.failed{ background:var(--neg-bg); color:var(--neg); }
.ds-chip.mode{ background:var(--panel); color:var(--muted); }
.ds-cost .big{ font-size:29px; line-height:1; }
.ds-cost .ds-cap{ margin-top:6px; }
.ds-cost .kinds{ margin-top:2px; }
.ds-ev{ display:flex; gap:10px; padding:10px 0; border-bottom:1px solid var(--hair2); --fc:var(--muted); }
.ds-ev:last-of-type{ border-bottom:0; }
.ds-ev.error{ --fc:var(--neg); }
.ds-ev.warn{ --fc:var(--warn); }
.ds-ev .tx{ flex:1; min-width:0; }
.ds-ev .nm{ font-size:13px; color:var(--ink2); overflow-wrap:anywhere; }
.ds-ev.unread .nm{ font-weight:600; color:var(--ink); }
.ds-jobs{ display:flex; flex-direction:column; }
.ds-jrow{ display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--hair2); flex-wrap:wrap; }
.ds-jrow:last-child{ border-bottom:0; }
.ds-jrow .main{ flex:1 1 260px; min-width:0; display:flex; align-items:center; gap:6px 10px; flex-wrap:wrap; }
.ds-jrow .tx{ flex:1 1 160px; min-width:0; }
.ds-jrow .nm{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-jrow .ds-status{ flex:none; white-space:nowrap; }
.ds-chip.adm .vid{ font-weight:600; font-size:10.5px; color:var(--muted); }
.ds-jrow .hint{ flex:1 1 100%; padding-left:42px; }

/* «Аккаунты» как в старой панели (_acct_row, ds-lrow): строка, вложенный зам, директоры, события */
.ds-accbox{ padding-bottom:6px; }
.ds-acclist{ display:flex; flex-direction:column; }
.ds-acc{ display:flex; align-items:center; gap:10px 14px; padding:13px 2px; border-bottom:1px solid var(--hair2); }
.ds-acclist > .ds-acc:last-child{ border-bottom:0; }
.ds-acc.off{ opacity:.5; }
.ds-acc .who{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
.ds-acc .top{ display:flex; align-items:center; gap:6px 7px; flex-wrap:wrap; }
.ds-acc .nm{ font-family:var(--f-display); font-weight:600; font-size:14.5px; color:var(--ink); margin-right:2px; }
.ds-acc .vid{ font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:11.5px; color:var(--faint); }
.ds-acc .acts{ display:flex; align-items:center; gap:6px 8px; flex-wrap:wrap; justify-content:flex-end; flex:none; }
.ds-accdep{ margin-left:40px; padding-left:16px; border-left:2px solid var(--hair); border-bottom:1px solid var(--hair2); }
.ds-accdep .ds-acc{ border-bottom:0; }
.ds-accdep .nm{ font-size:13px; }
.ds-ibtn{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; color:var(--muted); text-decoration:none; }
.ds-ibtn i{ font-size:20px; }
.ds-pillbtn{ display:inline-flex; align-items:center; gap:7px; min-height:34px; padding:0 13px; border-radius:999px;
  border:1px solid var(--hair); background:var(--surface); color:var(--ink2); font-weight:700; font-size:12px;
  text-decoration:none; white-space:nowrap; }
.ds-pillbtn i{ font-size:17px; }
.ds-dirs{ display:flex; flex-direction:column; }
.ds-dir{ display:flex; align-items:center; gap:8px 18px; padding:12px 0; border-bottom:1px solid var(--hair2); flex-wrap:wrap; }
.ds-dir:last-child{ border-bottom:0; }
.ds-dir .fn{ flex:0 1 220px; min-width:0; display:flex; flex-direction:column; gap:2px; }
.ds-dir .fn .t{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-roval{ flex:0 1 230px; min-width:0; display:flex; flex-direction:column; justify-content:center; min-height:40px;
  padding:3px 14px; border:1px solid var(--hair); border-radius:12px; }
.ds-roval .lb{ font-size:10.5px; color:var(--muted); }
.ds-roval .v{ font-size:13.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-roval .v.none{ color:var(--faint); }
.ds-dir .dep{ margin-left:auto; font-size:12px; color:var(--muted); white-space:nowrap; }
.ds-dir .dep b{ color:var(--pos); font-weight:600; }
.ds-accevs{ display:flex; flex-direction:column; }
.ds-accev{ display:flex; align-items:center; gap:12px; padding:11px 2px; border-bottom:1px solid var(--hair2); }
.ds-accev:last-child{ border-bottom:0; }
.ds-accev .tx{ flex:0 1 auto; min-width:0; font-size:13.5px; color:var(--ink); overflow-wrap:anywhere; }
@media (max-width:640px){ .ds-acc{ flex-wrap:wrap; } .ds-acc .who{ flex:1 1 0; }
  .ds-acc .acts{ flex:1 1 100%; justify-content:flex-end; }
  .ds-accdep{ margin-left:10px; padding-left:10px; } .ds-dir .dep{ margin-left:0; } }

/* «Ошибки» как в старой панели (page_errors): карточка — плитка, жирный текст, чипы, кнопки; статус справа вверху */
.ds-fnselect{ min-width:190px; }
.ds-fnselect .q-field__control{ min-height:38px; border-radius:999px; }
.ds-errbar{ margin-top:6px; }
.ds-errfilt{ margin-top:-6px; gap:8px; }
.ds-errfilt .ds-fnselect{ min-width:180px; }
.ds-errfilt .ds-fnselect .q-field__control{ min-height:34px; }
.ds-errfilt .ds-sort.on{ background:var(--surface)!important; border-color:var(--hair)!important; color:var(--ink2)!important; }
.ds-errfilt .ds-sort.on .ci{ color:var(--accent)!important; }
.ds-evcards{ display:flex; flex-direction:column; gap:12px; width:100%; }
.ds-evcard{ position:relative; display:flex; gap:15px; align-items:flex-start; padding:20px 24px; --fc:#2E6FD0; }
.ds-evcard.error{ --fc:var(--neg); }
.ds-evcard.warn{ --fc:var(--warn); }
.ds-evcard > .ic{ flex:none; display:flex; }
.ds-evcard .ds-tile{ width:42px; height:42px; border-radius:13px; }
.ds-evcard .ds-tile i{ font-size:21px; }
.ds-evcard > .tx{ flex:1; min-width:0; display:flex; flex-direction:column; gap:8px; }
.ds-evcard .bd{ display:flex; flex-direction:column; gap:8px; }
.ds-evcard .t{ font-family:var(--f-display); font-weight:600; font-size:14.5px; color:var(--ink); padding-right:110px;
  white-space:pre-wrap; overflow-wrap:anywhere; }
.ds-evcard:not(.unread) .t{ color:var(--ink2); }
.ds-evcard .meta{ display:flex; gap:7px 10px; align-items:center; flex-wrap:wrap; }
.ds-evcard .cm{ font-size:12.5px; font-weight:600; color:var(--ink); text-decoration:none; }
.ds-evcard a.cm:hover{ color:var(--accent); }
.ds-evcard .tm{ font-size:12px; color:var(--faint); }
.ds-chip.src{ background:var(--chip); color:var(--ink2); }
.ds-chip.src.old{ background:var(--warn-bg); color:#9A6A12; }
.ds-evdet{ display:none; }
.ds-evdet.open{ display:block; }
.ds-evdet .d{ font-size:12px; color:var(--muted); white-space:pre-wrap; overflow-wrap:anywhere;
  background:var(--panel); border-radius:12px; padding:10px 12px; }
.ds-evcard .acts{ display:flex; gap:10px; flex-wrap:wrap; margin-top:2px; }
.ds-evcard > .st{ position:absolute; top:19px; right:22px; }
.ds-evcard > .st .ds-status{ font-size:11px; white-space:nowrap; }
.ds-evmorebtn .ds-showmore{ border-radius:var(--r-card); background:var(--surface); box-shadow:var(--sh); border-top:0; }
@media (max-width:640px){ .ds-evcard{ padding:16px; gap:12px; flex-wrap:wrap; }
  .ds-evcard .t{ padding-right:0; } .ds-evcard > .st{ position:static; order:-1; flex:1 1 100%; }
  .ds-evcard .acts .ds-btn.q-btn{ flex:1 1 auto; }
  .ds-fnselect{ flex:1 1 100%; } }

/* «Задания»: таблица заданий + панель прогона (Jobs.dc.html) */
.ds-jobcols{ display:grid; grid-template-columns:minmax(0,1.8fr) minmax(0,1fr); gap:18px; align-items:start; width:100%; }
.ds-runcol{ position:sticky; top:18px; }
/* в одну колонку панель прогона — сверху: выбранный ниже прогон виден без прокрутки к концу */
@media (max-width:1200px){ .ds-jobcols{ grid-template-columns:minmax(0,1fr); } .ds-runcol{ position:static; order:-1; } }
.ds-runpanel{ display:flex; flex-direction:column; gap:12px; }
.ds-runpanel .hd{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-runpanel .ds-log{ max-height:560px; overflow:auto; }
.ds-runerr{ color:var(--neg); font-weight:600; font-size:12.5px; overflow-wrap:anywhere; }
.ds-fnname{ display:inline-flex; align-items:center; gap:7px; font-weight:600; font-size:13px; color:var(--ink); min-width:0; }
.ds-fnname .dot{ width:8px; height:8px; border-radius:50%; background:var(--fc); flex:none; }
.ds-jobcell .nm{ font-size:13px; color:var(--ink); font-weight:600; }
.ds-howto{ display:inline-flex; align-items:center; gap:4px; margin-top:4px; font-weight:700; font-size:11.5px;
  color:var(--muted); cursor:help; text-decoration:none; width:max-content; }
.ds-howto .q-icon{ font-size:14px; }
a.ds-howto{ cursor:pointer; } .ds-howto:hover{ color:var(--accent); }
.ds-td .ds-status{ white-space:normal; }
.ds-act{ display:flex; justify-content:flex-end; }
.ds-act .ds-btn.q-btn{ min-height:32px; padding:0 12px; font-size:12px; }
/* переключатель-пилюля («Сгруппировать одинаковые», «Показать все прогоны») */
.ds-toggle{ box-shadow:none; padding:6px 13px; white-space:nowrap; }
.ds-toggle .ci{ font-size:16px; }
/* группа одинаковых событий: стопка аватаров и счётчики */
.ds-evcard .grp{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-evcard .ds-grouplist{ margin-top:0; }

/* страница функции /f/<key>: шапка цветом функции, форма «Пост по ссылке» */
.ds-fnhead{ display:flex; align-items:flex-start; gap:16px; width:100%; border-left:4px solid var(--fc);
  background:linear-gradient(90deg, color-mix(in srgb, var(--fc) 7%, var(--surface)), var(--surface) 60%); }
.ds-fnhead .tx{ flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
.ds-fnhead .top{ display:flex; align-items:center; gap:6px 12px; flex-wrap:wrap; }
.ds-fnhead .nm{ font-family:var(--f-display); font-weight:700; font-size:17px; color:var(--fc); }
.ds-fnhead .note{ font-size:13.5px; font-weight:500; color:var(--ink); line-height:1.45; }
.ds-fnhead .own{ font-size:11.5px; color:var(--faint); }
.ds-tile.big{ width:48px; height:48px; border-radius:14px; }
.ds-tile.big i{ font-size:25px; }
.ds-cname{ font-weight:600; font-size:13px; color:var(--ink); text-decoration:none; }
a.ds-cname:hover{ color:var(--accent); }
.ds-linkform{ display:flex; flex-direction:column; gap:12px; width:100%; }
.ds-linkform .ds-field{ width:100%; }
.ds-linkform .fields{ display:flex; gap:12px; flex-wrap:wrap; }
.ds-linkform .fields > *{ flex:1 1 200px; min-width:0; }
.ds-linkform .act{ display:flex; align-items:center; gap:8px 14px; flex-wrap:wrap; }
.ds-costnote{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--ink2); }
.ds-costnote .q-icon{ font-size:16px; color:var(--warn); }
.ds-formerr{ color:var(--neg); font-weight:600; font-size:12.5px; overflow-wrap:anywhere; }
.ds-runbox{ display:flex; flex-direction:column; gap:12px; border-top:1px solid var(--hair2); padding-top:14px; }
.ds-runbox .hd{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-runbox .ds-log{ max-height:360px; overflow:auto; }
@media (max-width:640px){ .ds-fnhead{ gap:12px; padding:16px; } .ds-tile.big{ width:40px; height:40px; } }

/* ===== этап 2б: Обзор и Сообщества как в старой панели (pp/panel.py kpi, community_card, open_community) ===== */
/* плитки Обзора: иконка в пузыре цвета показателя, зелёная пилюля справа, крупное число, подпись снизу */
.ds-kpis{ display:flex; gap:16px; flex-wrap:wrap; width:100%; }
.ds-kpi{ --fc:var(--ink); flex:1 1 0; min-width:180px; }
.ds-kpi .hd{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:14px; }
.ds-kpi .bub{ width:38px; height:38px; border-radius:12px; display:grid; place-items:center; color:var(--fc);
  background:color-mix(in srgb, var(--fc) 12%, #fff); }
.ds-kpi .bub i{ font-size:19px; }
.ds-kpi .pill{ font-size:11px; font-weight:800; padding:4px 9px; border-radius:999px; color:var(--pos); background:var(--pos-bg);
  white-space:nowrap; }
.ds-kpi .val{ font-family:var(--f-display); font-size:29px; font-weight:700; letter-spacing:-.02em; line-height:1;
  color:var(--ink); font-variant-numeric:tabular-nums; }
.ds-kpi .cap{ font-size:12.5px; color:var(--muted); margin-top:7px; }
/* тёмная плашка («Монетизация сообществ») */
a.ds-plate{ display:block; background:var(--rail); text-decoration:none; cursor:pointer; }
.ds-plate .t{ color:#fff; font-weight:800; font-size:15px; }
.ds-plate .s{ color:var(--muted); font-size:12.5px; margin-top:6px; }
/* карточка сетки: ПП на паузе — полупрозрачная (как в старой); кнопка с клавиатуры — видимый фокус */
.ds-comm.paused{ opacity:.72; }
div.ds-comm{ cursor:pointer; outline:none; }
.ds-comm:focus-visible,.ds-dlgx:focus-visible,.ds-cfg:focus-visible,.ds-cpopfoot a:focus-visible{
  outline:2px solid var(--accent); outline-offset:2px; }
/* попап сообщества (600 px) */
.q-dialog .q-card.ds-cpop{ width:600px; max-width:96vw; }
.ds-cpophead{ display:flex; align-items:center; gap:13px; padding:20px 54px 20px 24px; border-bottom:1px solid var(--hair2); }
.ds-cpophead .tx{ flex:1; min-width:0; }
.ds-cpophead .t{ font-family:var(--f-display); font-weight:700; font-size:17px; color:var(--ink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-cpophead .s{ font-size:12px; color:var(--muted); }
.ds-cpopbody{ padding:16px 24px 8px; }
.ds-cpopbody > .ds-eyebrow{ display:block; margin-bottom:6px; }
.ds-cpopbody > .ds-eyebrow.adm{ margin:16px 0 8px; }
.ds-poprow{ flex-wrap:nowrap; }
.ds-poprow .nm{ font-weight:600; font-size:13.5px; color:var(--ink); white-space:nowrap; }
.ds-poprow .sp{ flex:1; }
.ds-poprow .q-toggle{ flex:none; }
.ds-cfg{ font-family:var(--f-body); font-weight:700; font-size:13.5px; color:var(--accent); text-decoration:none;
  padding:4px 6px; border-radius:8px; white-space:nowrap; }
.ds-popnote{ display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; padding:12px 0 4px; }
.ds-popnote .ds-cap{ flex:1 1 220px; }
.ds-admpills{ display:flex; flex-wrap:wrap; gap:8px; }
.ds-admpill{ display:inline-flex; align-items:center; gap:8px; background:var(--panel); border-radius:999px;
  padding:10px 18px 10px 10px; font-size:12.5px; font-weight:600; color:var(--ink); }
.ds-admpill .ds-ava{ font-size:9px; }
.ds-admpill.off{ opacity:.5; }
.ds-cpopfoot{ padding:4px 14px 16px; display:flex; }
@media (max-width:640px){ .ds-cpophead{ padding:16px 50px 16px 16px; } .ds-cpopbody{ padding:12px 16px 6px; }
  .ds-poprow{ gap:10px; } .ds-cfg{ padding:4px 2px; } .ds-admpill{ padding:6px 12px 6px 6px; } }
/* серый тумблер попапа: обёртка ловит клик (подсказка, где включается) */
.ds-swwrap{ display:flex; align-items:center; cursor:not-allowed; }
