/* Этап 2б: блоки страниц функций в виде старой панели (components/classic.py; pp/panel.py _nopp_source_block,
   _nopp_live_block, _nopp_publish_block и таблица сообществ «без ПП»). Токены — из vkhub.css. */

/* тона значков и чипов (classic.TONES) */
.t-accent{ --tc:var(--accent); } .t-faint{ --tc:var(--faint); } .t-warn{ --tc:var(--warn); }
.t-blue{ --tc:#2E6FD0; } .t-green{ --tc:var(--pos); } .t-muted{ --tc:var(--muted); } .t-neg{ --tc:var(--neg); }

/* карточка «Источник»: значок, заголовок с «?», подпись, переключатель справа */
.ds-modecard{ display:flex; align-items:center; gap:14px; padding:14px 18px; flex-wrap:wrap; }
.ds-modecard .mc-ic{ font-size:22px; color:var(--tc, var(--faint)); flex:none; }
.ds-modecard .tx{ flex:1 1 200px; min-width:0; display:flex; flex-direction:column; gap:1px; }
.ds-modecard .top{ display:flex; align-items:center; gap:6px; }
.ds-modecard .t{ font-weight:700; font-size:14px; color:var(--ink); }
.ds-modecard .q{ font-size:17px; color:var(--faint); cursor:help; }
.ds-modecard .s{ font-size:12px; color:var(--muted); }
.q-tooltip.hint{ max-width:360px; white-space:pre-line; font-size:12.5px; line-height:1.5; }

/* ручной режим: «Новое задание · Пост по ссылке», слева ссылка, справа сообщество, режим, кнопка */
.ds-manual > .hd{ display:flex; flex-direction:column; gap:4px; margin-bottom:18px; }
.ds-manual > .grid{ display:flex; gap:26px; flex-wrap:wrap; align-items:stretch; }
.ds-manual .lc{ flex:1.15 1 320px; min-width:0; display:flex; flex-direction:column; gap:8px; }
.ds-manual .rc{ flex:1 1 320px; min-width:0; display:flex; flex-direction:column; gap:8px; }
.ds-manual .ds-field{ width:100%; }
.ds-manual .rc > .ds-cap:not(:first-child){ margin-top:6px; }
.ds-infobox{ background:var(--panel); border-radius:14px; padding:14px 16px; font-size:13px; color:var(--ink2);
  line-height:1.6; display:flex; flex-direction:column; gap:8px; margin-top:6px; }
.ds-wide.q-btn{ width:100%; margin-top:8px; }
/* режим прогона — переключатель на всю ширину, как «Кому» в старой форме */
.ds-segtoggle{ display:flex; width:100%; background:var(--chip); border-radius:999px; padding:6px; gap:5px; box-shadow:none; }
.ds-segtoggle .q-btn{ flex:1; border-radius:999px!important; font-family:var(--f-body); font-weight:700; font-size:12.5px;
  color:var(--muted); background:transparent; min-height:32px; }
.ds-segtoggle .q-btn.bg-white{ color:var(--ink); box-shadow:var(--sh); }
.ds-rowright{ display:flex; justify-content:flex-end; }

/* живой ход прогона: лампа, шаги, полоса «N из M», подпись, строки журнала */
.ds-live{ padding:16px 18px; display:flex; flex-direction:column; gap:10px; }
.ds-live .hd{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.ds-live .sp{ flex:1; }
.ds-steps{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12px; font-weight:600; }
.ds-steps .st{ color:var(--faint); }
.ds-steps .st.done{ color:var(--ink2); }
.ds-steps .st.skip{ color:var(--faint); text-decoration:line-through; }
.ds-steps .st.current{ color:var(--ink); font-weight:700; }
.ds-steps .st.failed{ color:var(--neg); font-weight:700; }
.ds-steps .ar{ color:var(--faint); }
.ds-live .pr .row{ display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:5px; color:var(--muted); }
.ds-live .pr .row b{ color:var(--ink); }
.ds-live .err{ padding:9px 12px; border-radius:var(--r-inset); background:var(--neg-bg); color:var(--neg); font-size:12px;
  line-height:1.5; overflow-wrap:anywhere; }
.ds-live .ln{ max-height:420px; overflow:auto; }
.ds-live .ln .r{ display:flex; gap:10px; padding:5px 0; font-size:12.5px; line-height:1.45; border-top:1px solid var(--hair2); }
.ds-live .ln .q-icon{ font-size:15px; color:var(--faint); flex:none; }
.ds-live .ln .tm{ color:var(--faint); flex:none; font-variant-numeric:tabular-nums; }
.ds-live .ln .tx{ color:var(--ink2); min-width:0; overflow-wrap:anywhere; }

/* таблица сообществ: аватар, имя, адрес, значки; теги-чипы */
.ds-ccell{ display:flex; align-items:center; gap:11px; min-width:0; }
.ds-ccell .nm{ min-width:0; }
.ds-ccell .nm .ds-cname{ display:block; font-family:var(--f-display); font-size:13.5px; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; }
.ds-ccell .sc{ font-size:11px; color:var(--faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-ccell .ics{ display:flex; gap:6px; flex:none; }
.ds-ccell .ic{ font-size:18px; color:var(--tc, var(--faint)); }
.ds-chip.tg{ color:var(--tc); background:color-mix(in srgb, var(--tc) 10%, transparent); }
.ds-chip.tg .dot{ background:var(--tc); }
@media (max-width:640px){ .ds-modecard .ds-seg{ width:100%; border-radius:18px; }
  .ds-modecard .ds-seg .sg{ flex:1 1 auto; text-align:center; padding:5px 12px; }
  .ds-ccell .ics{ display:none; } }

/* карточка с эйбрау-шапкой (classic.eyebrow_card): «АККАУНТЫ», «ДИРЕКТОРЫ ФУНКЦИЙ», «ДАННЫЕ СООБЩЕСТВ» */
.ds-ecard{ display:flex; flex-direction:column; gap:12px; }
.ds-ecardhd{ display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; }
.ds-ecardhd .tx{ flex:1 1 260px; min-width:0; display:flex; flex-direction:column; gap:5px; }
.ds-ecardhd .rt{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-left:auto; }
/* пояснение «пока — в рабочей панели» с кнопкой внутри карточки (soon.note) */
.ds-soonnote{ display:flex; align-items:center; gap:10px 16px; flex-wrap:wrap; padding:14px 16px; border-radius:14px;
  background:var(--panel); }
.ds-soonnote .ds-cap{ flex:1 1 220px; }
/* «Настройки → Данные сообществ», «Прокси»: карточка шириной старой (две в ряд на 1440) */
.ds-setcard{ max-width:576px; }
.ds-setcard .ds-field{ width:100%; }
.ds-setcard .ds-wide.q-btn{ margin-top:2px; }
.ds-setsub{ display:flex; flex-direction:column; gap:5px; margin-top:8px; }
.ds-ecard > .q-btn:not(.ds-wide){ align-self:flex-start; }
/* «Настройки → Перевод функций» (components/owners.py): строка функции, чип владельца, окно подтверждения */
.ds-owncard{ max-width:760px; gap:4px; }
.ds-ownrow{ flex-wrap:wrap; gap:10px 13px; }
.ds-ownrow .tx{ flex:1 1 220px; min-width:0; display:flex; flex-direction:column; gap:4px; }
.ds-ownrow .nm{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-ownrow .mt{ display:flex; align-items:center; gap:6px 10px; flex-wrap:wrap; }
.ds-ownrow > .q-btn{ flex:none; margin-left:auto; }
.ds-ownrow .ds-ownsoon{ margin-left:auto; text-align:right; }
.ds-chip.own{ padding:3px 10px; font-size:11px; }
.ds-chip.own.legacy{ background:var(--chip); color:var(--ink2); }
.ds-chip.own.new{ background:var(--pos-bg); color:var(--pos); }
.q-dialog .q-card.ds-owndlg{ width:520px; max-width:96vw; }
.ds-owndlgbody{ padding:16px 24px 6px; }
.ds-owndlgbody .ds-cap{ font-size:13px; line-height:1.5; }
.ds-owndlgfoot{ display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap; padding:14px 24px 20px; }
/* «Сверка своего сборщика» (components/verify.py): лампа и итог, список расхождений, выборка */
.ds-verifycard{ max-width:760px; gap:10px; }
.ds-verifyhd{ display:flex; align-items:center; gap:6px 12px; flex-wrap:wrap; }
.ds-verifyhd .nm{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-verifydiffs{ margin:0; padding-left:18px; display:flex; flex-direction:column; gap:3px; font-size:12.5px;
  color:var(--ink2); overflow-wrap:anywhere; }
@media (max-width:640px){ .ds-ownrow > .q-btn{ margin-left:45px; }
  .ds-ownrow .ds-ownsoon{ margin-left:45px; text-align:left; }
  .ds-owndlgbody{ padding:12px 16px 4px; } .ds-owndlgfoot{ padding:12px 16px 16px; } }
/* «Статистика» (components/statsdash.py, pp/panel.py _STATS_CSS_RAW, снимок stats.png): строка охвата, герой
   подписчиков, пять плиток, графики с легендой-чипами, сортируемые заголовки таблицы */
.ds-statsrun{ color:var(--accent); font-weight:700; }
.ds-scope{ display:flex; align-items:center; gap:8px 12px; flex-wrap:wrap; min-height:30px; }
.ds-scope .lf{ flex:1 1 320px; min-width:0; display:flex; align-items:center; gap:10px; }
.ds-scope .now{ font-size:13px; color:var(--muted); font-weight:600; min-width:0; overflow-wrap:anywhere; }
.ds-scope .now b{ color:var(--ink); font-weight:800; }
.ds-scope .back{ background:var(--chip); color:var(--ink); font-size:12.5px; font-weight:700; padding:6px 12px;
  border-radius:999px; cursor:pointer; flex:none; transition:.13s; }
.ds-scope .back:hover{ background:var(--accent); color:#fff; }
.ds-scope .coll{ font-size:11.5px; color:var(--muted); font-weight:650; text-align:right; margin-left:auto; }
.ds-shero .hd{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.ds-shero .bd{ display:grid; grid-template-columns:minmax(230px,340px) minmax(0,1fr); gap:18px; align-items:center; }
.ds-shero .big{ font-family:var(--f-display); font-size:46px; font-weight:700; letter-spacing:-.03em; line-height:1;
  margin:8px 0 14px; font-variant-numeric:tabular-nums; color:var(--ink); }
.ds-shero .dels{ display:flex; gap:8px; flex-wrap:wrap; }
.ds-delpill{ background:var(--hair2); border-radius:999px; padding:6px 13px; font-size:12.5px; font-weight:600;
  color:var(--muted); }
.ds-delpill b{ font-weight:800; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.ds-delpill b.up{ color:var(--pos); } .ds-delpill b.dn{ color:var(--neg); } .ds-delpill b.fl{ color:var(--muted); }
.ds-shero .ch{ min-width:0; }
.ds-stiles{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; }
.ds-stile{ background:var(--surface); border-radius:18px; box-shadow:var(--sh); padding:15px 16px; min-width:0;
  display:flex; flex-direction:column; }
.ds-stile .cap{ display:flex; align-items:center; gap:8px; font-size:11px; font-weight:800; letter-spacing:.04em;
  text-transform:uppercase; color:var(--muted); }
.ds-stile .bub{ width:30px; height:30px; border-radius:9px; display:grid; place-items:center; flex:none; color:var(--fc);
  background:color-mix(in srgb, var(--fc) 10%, transparent); }
.ds-stile .bub .q-icon{ font-size:16px; }
.ds-stile .val{ font-family:var(--f-display); font-size:23px; font-weight:700; letter-spacing:-.02em; margin:9px 0 8px;
  font-variant-numeric:tabular-nums; color:var(--ink); white-space:nowrap; }
.ds-stile .val.up{ color:var(--pos); } .ds-stile .val.dn{ color:var(--neg); }
.ds-stile .ft{ display:flex; align-items:center; gap:6px 8px; flex-wrap:wrap; }
.ds-stile .ft .ds-delta{ font-size:11px; font-weight:800; padding:3px 9px; }
.ds-stile .hint{ font-size:11px; font-weight:700; color:var(--muted); }
.ds-stile .ds-spk{ width:100%; height:auto; margin-top:auto; padding-top:11px; }
.ds-lchart .ds-legend{ margin:-2px 0 4px; }
.ds-lchart .ds-lg{ background:var(--hair2); border:1px solid transparent; padding:5px 11px 5px 9px; user-select:none;
  transition:.14s; }
.ds-lchart .ds-lg:hover{ border-color:var(--hair); }
.ds-lchart .ds-lg .sw{ width:11px; height:11px; border-radius:4px; flex:none; }
.ds-lchart .ds-lg .nm{ font-size:12px; font-weight:700; color:var(--ink); }
.ds-lchart .ds-lg .amt{ font-size:11.5px; font-weight:700; color:var(--muted); }
.ds-lchart .ds-lg.off{ opacity:.42; } .ds-lchart .ds-lg.off .sw{ background:var(--faint)!important; }
.ds-lchart .ds-legsum{ align-self:center; font-size:11px; font-weight:600; color:var(--faint); padding-left:4px; }
.ds-th .sort{ cursor:pointer; user-select:none; } .ds-th .sort:hover{ color:var(--ink); }
.ds-th .sort.on{ color:var(--accent); }
.ds-td.d{ font-size:12.5px; font-weight:800; } .ds-td.d.up{ color:var(--pos); } .ds-td.d.dn{ color:var(--neg); }
.ds-td.d.fl{ color:var(--muted); }
@media (max-width:1100px){ .ds-stiles{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:860px){ .ds-shero .bd{ grid-template-columns:minmax(0,1fr); }
  .ds-stiles{ grid-template-columns:repeat(2,minmax(0,1fr)); } .ds-shero .big{ font-size:38px; }
  .ds-scope .coll{ text-align:left; margin-left:0; } }
/* «Монетизация» (components/money.py, pp/panel.py _MON_FR/_MON_SIGNS/_BG_*, снимок monetization.png): доли столбцов
   одни на шапку, строки и широкую ячейку ПП/ВМ (minmax(0,…) — строки не раздвигают свои столбцы), знак-квадрат,
   фон строки по виду заработка, красная строка беды */
.ds-montabs{ align-self:flex-start; }
.ds-monhd{ padding:18px 22px 16px; display:flex; flex-direction:column; gap:14px; }
.ds-monbar{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.ds-monwrap{ overflow-x:auto; width:100%; }
.ds-mon{ --mon-cols:minmax(0,1.6fr) minmax(0,.95fr) minmax(0,1fr) minmax(0,1.45fr) minmax(0,1.1fr) minmax(0,1.7fr) 26px;
  min-width:940px; }
.ds-mon .ds-th,.ds-mon .ds-tr{ display:grid; grid-template-columns:var(--mon-cols); align-items:start; }
.ds-mon .ds-th{ align-items:end; }
.ds-mon .ds-th .mem,.ds-mon .mem{ text-align:right; padding-right:26px; white-space:nowrap; }
.ds-mon .mem{ font-size:13px; font-weight:600; color:var(--ink); line-height:21px; }
.ds-mon .ds-tr.click{ cursor:pointer; }
.ds-mon .ds-tr .ds-ccell{ align-self:center; }
.ds-mon .ds-tr .chev{ font-size:18px; color:var(--faint); align-self:center; }
.ds-mon .ds-ccell .sc.neg{ color:var(--neg); }
.ds-mon .ds-monwide{ grid-column:span 3; min-width:0; display:grid; align-items:start;
  grid-template-columns:minmax(0,1.45fr) minmax(0,1.1fr) minmax(0,1.7fr); }
.ds-mon .ds-monwide .wc{ min-width:0; }
.ds-mon .ds-monwide .ds-monnum{ margin-top:0; }
.ds-mon .ds-tr.tone-bad,.ds-mon .ds-monrisk{ background:#FDECEA; }
.ds-mon .ds-tr.tone-pp{ background:#EAF6EF; } .ds-mon .ds-tr.tone-vm{ background:#EAF0FB; }
.ds-mon .ds-tr.tone-direct{ background:#FCF3E2; }
.ds-mon .ds-tr.risky{ border-bottom:0; }
.ds-mon .ds-tr.ds-monrisk{ display:block; padding-top:0; color:var(--neg); font-weight:600; font-size:11.5px; }
.ds-monempty{ padding:18px 22px; color:var(--muted); font-size:13px; }
.ds-sign{ display:inline-flex; align-items:center; justify-content:center; width:21px; height:21px; border-radius:6px;
  flex:none; box-sizing:border-box; font:800 12px/1 Inter,sans-serif; color:var(--sc); border:1.5px solid var(--sc); }
.ds-sign.wide{ width:34px; }
.ds-sign.fill{ background:var(--sc); color:#fff; } .ds-sign.line{ background:transparent; }
.ds-sign.dash{ background:transparent; border-style:dashed; }
.ds-sign.pos{ --sc:var(--pos); } .ds-sign.warn{ --sc:var(--warn); } .ds-sign.neg{ --sc:var(--neg); }
.ds-sign.accent{ --sc:var(--accent); } .ds-sign.faint{ --sc:var(--faint); }
.ds-moncell{ display:flex; gap:8px; min-width:0; padding-right:4px; }
.ds-moncell .b{ min-width:0; flex:1; }
.ds-monstate{ font-size:12.5px; font-weight:700; line-height:21px; }
.ds-monstate.pos,.ds-monnum.pos{ color:var(--pos); } .ds-monstate.warn{ color:var(--warn); }
.ds-monstate.neg{ color:var(--neg); } .ds-monstate.accent{ color:var(--accent); } .ds-monstate.faint{ color:var(--faint); }
.ds-monsub{ font-size:10.5px; color:var(--faint); margin-top:2px; }
.ds-monnum{ font-size:12.5px; line-height:21px; white-space:nowrap; margin-top:3px; }
.ds-monnum .l{ color:var(--muted); } .ds-monnum .t{ color:var(--faint); }
.ds-monnum .v{ font-weight:700; } .ds-monnum .v.pos{ color:var(--pos); } .ds-monnum .v.neg{ color:var(--neg); }
.ds-monrule{ font-size:12px; line-height:21px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ds-monrule.neg{ color:var(--neg); }
.ds-monnone{ font-size:12px; color:var(--faint); line-height:21px; }
.ds-monapc{ min-width:0; padding-right:4px; }
.ds-monap{ font-size:10.5px; line-height:1.35; margin-top:4px; color:var(--ink2); overflow:hidden; text-overflow:ellipsis; }
.ds-monap.faint{ color:var(--faint); } .ds-monap.warn{ color:var(--warn); } .ds-monap.neg{ color:var(--neg); }
.ds-mondl{ font-size:12px; color:var(--muted); white-space:nowrap; line-height:21px; overflow:hidden; text-overflow:ellipsis; }
.ds-mondl.busy{ color:var(--ink); }
.ds-mondl .l,.ds-mondl .ar{ color:var(--muted); font-weight:500; } .ds-mondl b{ font-weight:700; }
.ds-mondl .who{ color:var(--ink2); } .ds-mondl .free{ color:var(--faint); }

/* боковая панель «Монетизации» (components/moneypanel.py; старая _mon_panel): диалог справа 460 px на высоту
   экрана, левый край скруглён, у Quasar свой внешний отступ справа — убираем (была щель сверху) */
.q-dialog__inner--right{ padding:0!important; }
.q-dialog .q-card.ds-monpanel{ width:460px; max-width:96vw; height:100vh; max-height:100vh; border-radius:20px 0 0 20px;
  overflow-y:auto; display:flex; flex-direction:column; }
.ds-mphead{ display:flex; align-items:center; gap:13px; padding:20px 54px 18px 22px; border-bottom:1px solid var(--hair2);
  position:sticky; top:0; background:var(--surface); z-index:3; }
.ds-mphead .nm{ flex:1; min-width:0; } .ds-mphead .ds-h1{ line-height:1.25; }
.ds-mphead a.ds-cap{ text-decoration:none; } .ds-mphead .rf{ color:var(--muted); flex:none; }
.ds-mpmain{ padding:16px 22px 24px; flex:1; }
.ds-mpplate{ padding:12px 14px; border-radius:var(--r-inset); background:var(--chip); font-size:12.5px; font-weight:600;
  color:var(--ink); display:flex; flex-direction:column; gap:3px; }
.ds-mpplate .td{ font-weight:500; color:var(--muted); }
.ds-mpplate.tone-bad{ background:#FDECEA; color:var(--neg); } .ds-mpplate.tone-pp{ background:#EAF6EF; }
.ds-mpplate.tone-vm{ background:#EAF0FB; } .ds-mpplate.tone-direct{ background:#FCF3E2; }
.ds-mpblk{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin:20px 0 8px; }
.ds-mpblk .ds-eyebrow{ flex:none; }
.ds-mplink a{ font-size:11.5px; color:var(--accent); text-decoration:none; flex:none; }
.ds-mplock{ font-size:11.5px; color:var(--faint); text-align:right; }
.ds-mpbody{ background:var(--panel); border-radius:var(--r-inset); padding:6px 14px 10px; display:flex; flex-direction:column;
  gap:2px; }
.ds-mpbody > .ds-cap{ padding:4px 0; line-height:1.5; } .ds-cap.neg{ color:var(--neg); }
.ds-mpval{ font-size:13px; font-weight:700; padding:8px 0 4px; color:var(--ink); }
.ds-mpval.pos{ color:var(--pos); } .ds-mpval.neg{ color:var(--neg); } .ds-mpval.faint{ color:var(--muted); font-weight:600; }
.ds-mpkv{ display:flex; gap:10px; padding:5px 0; font-size:12.5px; line-height:1.45; }
.ds-mpkv .k{ color:var(--muted); flex:none; width:110px; }
.ds-mpkv .v{ color:var(--ink); font-weight:600; min-width:0; overflow-wrap:anywhere; }
.ds-mpkv .v.pos{ color:var(--pos); } .ds-mpkv .v.neg{ color:var(--neg); }
.ds-mpbad{ margin:6px 0 8px; padding:10px 12px; border-radius:var(--r-inset); background:var(--neg-bg); color:var(--neg);
  font-size:12px; line-height:1.5; }
.ds-mptiles{ display:flex; gap:10px; margin:6px 0 4px; }
.ds-mptile{ flex:1; min-width:0; background:var(--surface); border-radius:14px; padding:12px 14px; --tc:var(--faint); }
.ds-mptile.pos{ --tc:var(--pos); } .ds-mptile.neg{ --tc:var(--neg); }
.ds-mptile .vl{ display:flex; align-items:baseline; gap:6px; margin-top:2px; flex-wrap:wrap; }
.ds-mptile .v{ font-family:var(--f-display); font-size:20px; font-weight:700; color:var(--tc); line-height:1.1; }
.ds-mptile .v.none{ font-size:19px; margin-top:2px; } .ds-mptile .of{ font-size:12px; color:var(--faint); }
.ds-mptile .ds-bar{ margin-top:8px; height:6px; } .ds-mptile .ds-bar > i{ background:var(--tc); }
.ds-mptile .hn{ font-size:11.5px; margin-top:6px; color:var(--tc); }
.ds-mptile .tx{ font-size:14px; font-weight:700; color:var(--pos); margin-top:6px; }
.ds-mptile .tx + .hn{ color:var(--muted); }
.ds-mpexp{ font-size:12.5px; width:100%; }
.ds-mprow{ display:flex; align-items:center; gap:12px; padding:11px 2px; border-bottom:1px solid var(--hair2); }
.ds-mprow:last-child{ border-bottom:0; }
.ds-mprow .ic{ width:32px; height:32px; border-radius:9px; flex:none; display:grid; place-items:center;
  background:color-mix(in srgb, var(--fc) 10%, transparent); }
.ds-mprow .ic .q-icon{ font-size:17px; color:var(--fc); }
.ds-mprow .tx{ flex:1; min-width:0; } .ds-mprow .t{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-mpold{ font-size:11.5px; color:var(--faint); flex:none; margin-left:auto; }
.ds-mpseg{ margin:8px 0 4px; } .ds-mpseg .sg{ padding:5px 12px; }
.ds-mpbody > .ds-toggle{ align-self:flex-start; margin:6px 0 4px; }
.ds-mpplace{ display:flex; gap:8px; align-items:center; margin-top:10px; }
.ds-mpplace .sel{ flex:1; min-width:0; } .ds-mpplace .pr{ width:92px; flex:none; }
.ds-mpflags{ display:flex; align-items:center; gap:14px; margin:0 0 2px 2px; flex-wrap:wrap; font-size:11.5px; color:var(--muted); }
.ds-mpta{ width:100%; padding:8px 0; }
.ds-mpnote{ font-size:13px; color:var(--ink2); white-space:pre-line; padding:8px 0; line-height:1.5; }
.ds-mpfoot{ position:sticky; bottom:0; background:var(--surface); border-top:1px solid var(--hair2); padding:12px 22px;
  display:flex; gap:10px; z-index:3; }
@media (max-width:640px){ .ds-mphead{ padding:16px 52px 14px 16px; } .ds-mpmain{ padding:12px 16px 20px; }
  .ds-mpfoot{ padding:10px 16px; } .ds-mpkv .k{ width:92px; } }

/* вкладка «Рекламодатели» (старая _advertisers_tab): таблица в карточке, на телефоне — прокрутка вбок */
.ds-advhd{ padding:18px 22px 14px; }
.ds-advwrap{ overflow-x:auto; width:100%; }
.ds-adv{ min-width:600px; }
.ds-adv .ds-th,.ds-adv .ds-tr{ grid-template-columns:minmax(0,2fr) minmax(0,.8fr) minmax(0,1.6fr) minmax(0,1fr) 70px;
  column-gap:12px; }
.ds-adv .nm{ min-width:0; } .ds-adv .nm .t{ font-size:13.5px; color:var(--ink); }
.ds-adv .faint{ color:var(--faint); } .ds-adv .ct{ overflow-wrap:anywhere; }
.ds-adv .act{ display:flex; gap:6px; justify-content:flex-end; }
.ds-adv .act .q-icon{ font-size:17px; color:var(--faint); cursor:pointer; } .ds-adv .act .q-icon:hover{ color:var(--ink); }
.ds-advform{ display:flex; flex-direction:column; gap:12px; }
/* «Реклама» (/function/adblogger) — как в старой (pp/panel.py _ADB_CSS и стили строк _adb_*) */
.ds-adbr{ grid-template-columns:minmax(0,2.4fr) minmax(0,1.2fr) minmax(0,1.8fr) minmax(0,1.6fr) minmax(0,1.3fr); align-items:center; gap:0 12px; }
.ds-adba{ grid-template-columns:minmax(0,2.4fr) minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.7fr) minmax(0,1.1fr) minmax(0,1.7fr) 26px; align-items:center; gap:0 12px; }
.ds-adbname{ display:flex; align-items:center; gap:10px; min-width:0; }
.ds-adbname .tx{ min-width:0; }
.ds-adbname .nm{ font-family:var(--f-display); font-weight:600; font-size:13.5px; color:var(--ink); white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; text-decoration:none; border-bottom:1px dashed #C9CBD1; display:inline-block; max-width:100%; vertical-align:bottom; }
.ds-adbname .sub, .ds-adbsub{ font-size:11px; color:var(--faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-adbsub.pos, .ds-adbsales .ar.pos{ color:var(--pos); } .ds-adbsub.neg, .ds-adbsales .ar.neg{ color:var(--neg); }
.ds-adbsales .ds-num{ font-size:15px; } .ds-adbsales .ar{ font-size:11.5px; font-weight:700; }
.ds-adbsales .bk{ font-size:11px; color:#2E6FD0; font-weight:700; }
.ds-adbnote{ font-size:12.5px; color:var(--muted); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.ds-adbdyn{ display:block; line-height:1.5; } .ds-adbled{ margin-top:-8px; }
.ds-adbprice{ font-family:var(--f-display); font-weight:700; font-size:16px; white-space:nowrap; display:flex; align-items:center; gap:6px; }
.ds-adbprice .was{ color:var(--muted); font-size:13px; font-weight:400; text-decoration:line-through; }
.ds-adbprice .q-icon{ font-size:16px; }
.ds-adbpill{ display:inline-block; font-size:12px; font-weight:700; padding:3px 9px; border-radius:9px; white-space:nowrap; }
.ds-adbpill.wrap{ white-space:normal; }
.ds-adbbar{ position:relative; height:6px; border-radius:4px; background:var(--hair); margin-top:5px; max-width:110px; }
.ds-adbbar > i{ position:absolute; left:0; top:0; height:6px; border-radius:4px; }
.ds-adbscale{ position:relative; height:6px; border-radius:4px; background:var(--hair); margin-top:7px; max-width:150px; }
.ds-adbscale > i{ position:absolute; left:0; top:0; height:6px; border-radius:4px; opacity:.55; }
.ds-adbscale > b{ position:absolute; left:33.3%; top:-3px; width:2px; height:12px; background:var(--ink2); }
.ds-adbgroup .hd{ display:flex; align-items:center; gap:9px; margin:4px 4px 10px; }
.ds-adbgroup .hd .dot{ width:10px; height:10px; border-radius:50%; background:var(--c); }
.ds-adbgroup .hd .t{ font-family:var(--f-display); font-weight:600; font-size:15px; color:var(--ink); }
.ds-adbgroup .hd .n{ font-size:12.5px; color:var(--faint); }
.ds-adbacts, .ds-adbmarks{ display:flex; gap:6px; justify-content:flex-end; align-items:center; }
.ds-adbstate{ display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
.ds-adbinfo{ font-size:19px; color:var(--faint); cursor:help; }
.ds-adbnote .ds-adbinfo{ font-size:17px; }
.ds-adbtip{ white-space:pre-line; font-size:12.5px; line-height:1.45; max-width:420px; }
.ds-adbicon{ font-size:15px; color:#B42318; background:#FBE7E7; border-radius:6px; padding:3px; cursor:help; }
.ds-adbwait{ padding:4px 8px; } .ds-adbwait .ds-adbnote{ margin:4px 0 10px; }
.ds-adbchips{ display:flex; flex-wrap:wrap; gap:8px; }
.ds-adbchip, .ds-adbmiss{ display:flex; align-items:center; gap:7px; padding:5px 10px; border-radius:12px; background:var(--panel); }
.ds-adbchip .ds-adbname .nm{ font-size:12.5px; }
.ds-adbmiss{ background:none; padding:6px 0; gap:10px; }
.ds-adbtitle{ font-family:var(--f-display); font-weight:600; font-size:15px; color:var(--ink); }
.ds-adbhint{ color:var(--muted); margin-top:2px; }
.ds-adbtab{ display:flex; flex-direction:column; gap:16px; } .ds-adbflt{ max-width:520px; }
.ds-adbmore{ display:flex; justify-content:center; padding:8px; }
.ds-adbctitle{ font-family:var(--f-display); font-weight:600; font-size:14px; color:var(--ink); }
.ds-adbgrid2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.ds-adbcalc{ color:var(--warn); font-weight:700; }
.ds-adbown{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:7px; font-size:10.5px; font-weight:700;
  color:#7A4D0B; background:var(--warn-bg); cursor:help; vertical-align:1px; }
.ds-adbname .sub .ds-adbown:first-child{ margin-left:0; }
.ds-adbownnote{ font-size:11px; font-weight:700; color:var(--warn); margin-top:2px; white-space:normal; }
.ds-adbm{ display:grid; grid-template-columns:minmax(0,2.4fr) minmax(0,1fr) minmax(0,1fr); align-items:center; gap:0 12px; }
.ds-adbm.hd{ width:100%; } .ds-adbm.hd .nm{ font-family:var(--f-display); font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-adbmv{ display:flex; align-items:baseline; gap:6px; white-space:nowrap; } .ds-adbmv .ds-num{ font-size:14px; }
.ds-tr.ds-adbm{ padding:6px 56px 6px 16px; }
.ds-adbday{ border-top:1px solid var(--hair); } .ds-adbday .q-expansion-item__content{ padding:0 0 6px; }
@media (max-width:1100px){ .ds-adbgrid2{ grid-template-columns:1fr; } }
@media (max-width:720px){ .ds-adbr, .ds-adba{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 12px; }
  .ds-adbr > :first-child, .ds-adba > :first-child{ grid-column:1/-1; } .ds-th.ds-adbr, .ds-th.ds-adba{ display:none; }
  .ds-adba > :last-child{ justify-self:end; } .ds-adbtabs.full{ flex-wrap:wrap; } }

/* «Живая аудитория» (pp/panel.py _aud_*): сетки _AUD_GRID5/_AUD_GRID/_AUD_BUY_GRID/_AUD_SAVED_GRID старой */
.ds-audtabs{ width:100%; } .ds-audmodes{ width:100%; margin:4px 0 2px; }
.ds-audform,.ds-audres,.ds-audsaved,.ds-audjobcard{ display:flex; flex-direction:column; gap:12px; }
.ds-audsub{ font-size:13px; line-height:1.5; margin-top:-6px; } .ds-audresbox{ display:flex; flex-direction:column; gap:10px; }
.ds-audpicks{ display:flex; flex-direction:column; gap:14px; } .ds-audpicks.two{ flex-direction:row; gap:16px; }
.ds-audpick{ flex:1; min-width:0; display:flex; flex-direction:column; gap:10px; }
.ds-audtext textarea{ min-height:96px; max-height:180px; overflow:auto; }
.ds-audacts{ display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.ds-audwrap{ overflow-x:auto; width:100%; } .ds-audtbl{ min-width:760px; }
.ds-audg5{ grid-template-columns:2fr .9fr .9fr .9fr 1.1fr; column-gap:10px; }
.ds-audg4{ grid-template-columns:2.2fr 1fr 1fr 1fr; column-gap:10px; }
.ds-audsv{ grid-template-columns:2.4fr 1.1fr .7fr 1.4fr; column-gap:10px; }
.ds-audbuy{ grid-template-columns:22px minmax(180px,1.8fr) .75fr .75fr .85fr 120px 160px 120px .95fr; column-gap:8px; }
.ds-audtbl.buy{ min-width:1080px; }
.ds-audtbl .ds-tr{ font-size:13px; color:var(--ink); } .ds-audtbl .ds-th{ margin-top:4px; }
.ds-audtbl b.big,.ds-audb{ font-weight:800; } .ds-audtbl .pos,.ds-audb.pos{ color:var(--pos); }
.ds-audb.neg,.ds-audsm.neg,.ds-audwarn{ color:#C2410C; } .ds-audb.faint,.ds-audnone{ color:var(--faint); }
.ds-audsort{ cursor:pointer; user-select:none; }
.ds-audwho{ display:inline-flex; align-items:center; gap:8px; min-width:0; max-width:100%; }
.ds-audwho .nm{ color:inherit; text-decoration:none; border-bottom:1px dashed #C9CBD1; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; min-width:0; } .ds-audwho .nm.b{ font-weight:700; }
.ds-audpair{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; } .ds-audpair .plus{ color:var(--faint); }
.ds-audsm{ font-size:11.5px; color:var(--faint); margin-top:2px; }
.ds-audsex{ min-width:110px; } .ds-audsex .bar{ display:flex; height:8px; border-radius:999px; overflow:hidden; background:#EDEEF1; }
.ds-audsex .bar .w{ background:#E86AA6; } .ds-audsex .bar .m{ background:#2E6FD0; }
.ds-audsex .cap{ font-size:11px; color:var(--muted); margin-top:3px; white-space:nowrap; }
.ds-audsex .cap b.w{ color:#E86AA6; } .ds-audsex .cap b.m{ color:#2E6FD0; } .ds-audsex .ago{ font-size:11px; color:var(--faint); margin-top:2px; }
.ds-audage{ min-width:150px; } .ds-audage .bars{ display:flex; align-items:flex-end; gap:3px; height:18px; }
.ds-audage .bars span{ width:9px; border-radius:2px; background:#C7D6EC; } .ds-audage .bars span.top{ background:#2E6FD0; }
.ds-audage .cap{ font-size:11px; color:var(--muted); margin-top:4px; white-space:nowrap; } .ds-audage .cap b{ color:#2E6FD0; }
.ds-audbar2{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; } .ds-audprice{ max-width:260px; } .ds-audask{ max-width:120px; }
.ds-audtotal{ background:#F7F7F9; font-weight:700; } .ds-audnote{ margin-top:2px; }
.ds-audsave{ display:flex; align-items:center; gap:10px; } .ds-audsave .nm{ flex:1; }
.ds-audcombohd{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.ds-audjob{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; } .ds-audbar{ height:8px; } .ds-audbar > i{ background:#2E6FD0; }
.ds-audjobcard .ds-audacts{ justify-content:flex-start; } .ds-audstop{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ds-audsvname{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; } .ds-audsvname .nm{ font-weight:700; }
.ds-audsrc{ font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:7px; white-space:nowrap; }
.ds-audsrc.legacy{ color:var(--ink2); background:var(--chip); } .ds-audsrc.own{ color:#5B3FD0; background:#EFEBFE; }
.ds-audopen{ display:flex; align-items:center; gap:8px; padding:0 4px; } .ds-auddlg{ min-width:340px; }
@media (max-width:720px){ .ds-audpicks.two{ flex-direction:column; } .ds-audsave{ flex-wrap:wrap; } }
/* «Виральные посты» (components/viral.py, viraldlg.py; перенос _VIRAL_CSS старой, pp/panel.py 6874–6934) */
.ds-virtop{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.ds-virlast{ flex:1 1 260px; font-size:13px; color:var(--ink2); } .ds-virlast b{ color:var(--ink); }
.ds-virlast.none{ color:var(--muted); }
.ds-virbar{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.ds-virfeedbox{ display:flex; flex-direction:column; }
.ds-virmore.q-btn{ align-self:flex-start; margin-top:14px; }
.vfeed{ max-width:660px; width:100%; display:flex; flex-direction:column; gap:16px; }
.vcard{ background:var(--surface); border-radius:18px; border:1px solid var(--hair); padding:18px 20px; box-shadow:0 1px 2px rgba(20,20,30,.03); }
.vhd{ display:flex; align-items:center; gap:6px; margin-bottom:12px; }
.vhdgrow{ flex:1; min-width:0; }
.vhdinfo{ display:flex; align-items:center; gap:12px; min-width:0; }
.vava{ width:44px; height:44px; border-radius:50%; background-size:cover; background-position:center; flex:none; background-color:var(--canvas); }
.vnm{ display:flex; flex-direction:column; min-width:0; flex:1; }
.vnm b{ font-family:var(--f-display); font-size:14.5px; font-weight:700; color:var(--ink); }
.vnm span{ font-size:12px; color:var(--muted); margin-top:1px; }
.vlink.q-btn{ color:var(--faint); width:34px; height:34px; min-height:34px; border-radius:10px; padding:0; flex:none; }
.vlink.q-btn:hover{ background:var(--chip); color:var(--ink); }
.vlink.q-btn.on{ color:var(--pos); background:var(--pos-bg); }
.vlink.q-btn .q-icon{ font-size:19px; }
.vtx{ font-size:14px; line-height:1.62; color:var(--ink); white-space:pre-wrap; word-break:break-word; }
.vtx.clamp{ display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.vmore{ display:inline-block; margin-top:6px; font-size:13px; font-weight:600; color:var(--warn); cursor:pointer; user-select:none; }
.vmore:hover{ text-decoration:underline; }
.vph{ display:grid; gap:6px; margin-top:13px; border-radius:14px; overflow:hidden; position:relative; }
.vph-1{ grid-template-columns:1fr; } .vph-2, .vph-3, .vph-4{ grid-template-columns:1fr 1fr; }
.vph a{ display:block; }
.vph img{ width:100%; height:100%; object-fit:cover; display:block; aspect-ratio:16/10; background:var(--canvas); }
.vph-1 img{ aspect-ratio:16/9; }
.vph-more{ position:absolute; right:8px; bottom:8px; background:rgba(23,24,28,.82); color:#fff; font-size:12px; font-weight:700;
  padding:4px 9px; border-radius:999px; pointer-events:none; }
.vmet{ display:flex; align-items:center; gap:15px; margin-top:14px; flex-wrap:wrap; }
.vm{ display:inline-flex; align-items:center; gap:5px; font-size:13px; font-weight:600; color:var(--ink2); font-variant-numeric:tabular-nums; }
.vm i{ font-size:16px; color:var(--faint); }
.vfire{ font-size:12px; font-weight:800; padding:3px 9px; border-radius:999px; display:inline-flex; align-items:center; gap:4px;
  color:var(--fc); background:color-mix(in srgb, var(--fc) 10%, transparent); font-variant-numeric:tabular-nums; }
.vlk{ margin-left:auto; font-size:11.5px; font-weight:700; color:var(--neg); background:var(--neg-bg); padding:4px 10px; border-radius:999px;
  display:inline-flex; align-items:center; gap:4px; } .vlk i{ font-size:13px; } .vfire+.vlk{ margin-left:8px; }
.vedited{ margin-left:8px; font-size:11px; font-weight:700; color:#2E6FD0; background:#2E6FD016; padding:2px 8px; border-radius:999px;
  display:inline-flex; align-items:center; gap:3px; vertical-align:middle; } .vedited i{ font-size:12px; }
.vact{ display:flex; gap:10px; margin-top:16px; padding-top:15px; border-top:1px solid var(--hair2); flex-wrap:wrap; }
.vempty{ display:flex; flex-direction:column; align-items:center; text-align:center; padding:48px 20px; color:var(--muted); }
.vempty .q-icon{ font-size:40px; color:#D2D4DA; margin-bottom:10px; }
.vcount{ display:flex; justify-content:center; gap:6px; font-size:13px; font-weight:600; color:var(--muted); } .vcount b{ color:var(--ink); }
@keyframes vpop{ from{ opacity:0; transform:translateY(10px) scale(.99); } to{ opacity:1; transform:none; } }
.vsingle .vcard{ animation:vpop .24s cubic-bezier(.2,.7,.3,1); }
/* диалоги «Сообщества», «Стоп-слова», настройки, правка */
.q-dialog .q-card.ds-virdlg{ width:560px; max-width:96vw; max-height:90vh; display:flex; flex-direction:column; }
.q-dialog .q-card.ds-virdlg.wide{ width:720px; } .q-dialog .q-card.ds-virdlg.mid{ width:620px; }
.ds-virdlgbody{ flex:1; min-height:0; overflow-y:auto; padding:16px 24px 20px; display:flex; flex-direction:column; gap:10px; }
.ds-virlist{ display:flex; flex-direction:column; } .ds-virdlgbody > .ds-seg{ align-self:flex-start; }
.ds-virrow{ display:flex; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid var(--hair2); }
.ds-virrow .tx{ flex:1; min-width:0; } .ds-virrow .t{ font-weight:600; font-size:13.5px; color:var(--ink); }
.ds-virrow.off .t{ opacity:.45; text-decoration:line-through; }
.ds-virline{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; } .ds-virline .grow{ flex:1 1 140px; }
.ds-virline .push{ margin-left:auto; } .ds-virdlgbody .full{ width:100%; }
.ds-vircols{ display:flex; gap:26px; flex-wrap:wrap; align-items:flex-start; }
.ds-vircols .col{ flex:1 1 280px; min-width:0; display:flex; flex-direction:column; gap:10px; }
.ds-vircols .ds-cap.neg{ color:var(--neg); line-height:1.5; } .ds-vircols .ds-cap{ line-height:1.5; }
.vedmedia{ display:flex; flex-wrap:wrap; gap:8px; }
.vedthumb{ position:relative; width:96px; height:96px; border-radius:12px; overflow:hidden; background:var(--canvas); flex:none; }
.vedthumb .q-img{ width:100%; height:100%; }
.vedthumb .x{ position:absolute; top:4px; right:4px; width:20px; height:20px; border-radius:50%; background:#000000b3; color:#fff;
  display:grid; place-items:center; cursor:pointer; font-size:12px; }
.ds-virupload{ width:100%; }
/* «Аккаунты»: виральные сборщики */
.ds-virpoolrow{ border-bottom:1px solid var(--hair2); padding-bottom:9px; }
.ds-virpoolrow .ds-acc{ border-bottom:0; padding-bottom:4px; }
.ds-virpoolrow .ds-acc > .hd{ flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; }
.ds-virpoolrow .rg{ flex:0 1 200px; padding:0 12px; font-size:13px; } .ds-virpoolrow .rg.none{ color:var(--faint); }
.ds-virpoolrow.off .who{ opacity:.55; }
.ds-virpoolline{ display:flex; align-items:center; gap:7px 10px; flex-wrap:wrap; padding-left:2px; }
.ds-chip.slot{ font-variant-numeric:tabular-nums; font-weight:600; background:var(--chip); color:var(--ink); padding:4px 10px; }
.ds-virpooladd{ display:inline-flex; align-items:center; margin-top:12px; padding:0 14px; min-height:34px; text-decoration:none; }
@media (max-width:640px){ .vcard{ padding:14px 14px; } .ds-virdlgbody{ padding:12px 16px 16px; }
  .ds-virpoolrow .rg{ flex:1 1 100%; padding:0; } }

/* «Входящие» (как pp/panel.py 1802–2404: _render_triage, _inbox_card, _render_mail, _mail_thread, _inbox_settings) */
.ds-ibx{ display:flex; flex-direction:column; gap:14px; } .ds-ibx-locked{ margin:0; }
.ds-ibx-right{ display:flex; align-items:center; gap:10px; }
.ds-btn.q-btn.ds-ibx-gear{ min-height:46px; min-width:52px; border-radius:14px; }
.ds-ibx-bar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-ibx-chips{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; } .ds-ibx-sp{ flex:1; }
.ds-ibx-chip{ display:inline-flex; align-items:center; gap:8px; border-radius:999px; padding:9px 17px; cursor:pointer;
  font-family:var(--f-body); font-weight:700; font-size:12.5px; background:var(--surface); color:var(--ink2); box-shadow:var(--sh); }
.ds-ibx-chip .n{ color:var(--faint); } .ds-ibx-chip.on{ background:var(--ink); color:#fff; } .ds-ibx-chip.on .n{ color:rgba(255,255,255,.7); }
.ds-ibx-sel{ min-width:185px; } .ds-ibx-search{ min-width:200px; }
.ds-ibx-feed{ display:flex; flex-direction:column; gap:12px; }
.ds-ibx-row{ display:flex; gap:14px; align-items:flex-start; } .ds-ibx-row.center{ align-items:center; gap:12px; }
.ds-ibx-av{ flex:none; } .ds-ibx-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:10px; }
.ds-ibx-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-ibx-name{ font-family:var(--f-display); font-weight:600; font-size:15px; color:var(--ink); text-decoration:none; }
.ds-ibx-name:hover{ color:var(--accent); }
.ds-ibx-dot{ width:8px; height:8px; border-radius:50%; background:var(--accent); flex:none; }
.ds-chip.ds-ibx-comm{ color:var(--pos); background:var(--pos-bg); } .ds-chip.ds-ibx-multi{ color:var(--warn); background:var(--warn-bg); }
.ds-chip.ds-ibx-notechip{ color:#2E6FD0; background:#2E6FD016; }
.ds-ibx-time{ margin-left:auto; font-size:12px; color:var(--faint); flex:none; }
.ds-ibx-text{ font-size:14.5px; line-height:1.55; color:var(--ink2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.ds-ibx-atts{ display:flex; gap:6px; flex-wrap:wrap; }
.ds-ibx-att{ display:inline-flex; align-items:center; font-size:11.5px; font-weight:600; color:var(--ink2); background:var(--chip);
  border-radius:999px; padding:3px 10px; }
.ds-ibx-acts{ display:flex; align-items:center; gap:7px; margin-top:2px; }
.ds-btn.q-btn.ds-ibx-reply{ min-height:36px; padding:0 16px; font-size:12.5px; }
.ds-ibx-bw{ display:inline-flex; } .ds-btn.q-btn.ds-ibx-ib{ min-height:36px; min-width:36px; }
.ds-ibx-bw .q-btn.disabled{ opacity:.35!important; } .ds-ibx-bw .ds-btn--quiet.q-btn.disabled:hover{ color:var(--muted); background:transparent; }
.ds-ibx-card.ds-ibx-spam{ padding:13px 17px; } .ds-ibx-sn{ gap:2px; }
.ds-ibx-link{ font-size:11.5px; color:var(--muted); text-decoration:none; } .ds-ibx-link:hover{ color:var(--accent); }
.ds-chip.ds-ibx-spamchip{ color:var(--warn); background:var(--warn-bg); } .ds-chip.ds-ibx-blocked{ color:var(--neg); background:var(--neg-bg); }
/* Почта: три колонки */
.ds-ibx-mail{ display:grid; grid-template-columns:230px 320px 1fr; height:calc(100vh - 270px); min-height:580px; }
.ds-ibx-col{ border-right:1px solid var(--hair2); overflow:auto; min-height:0; }
.ds-ibx-col.nav{ padding:16px 12px; } .ds-ibx-col.list{ padding:8px 6px; }
.ds-ibx-col.thread{ border-right:0; display:flex; flex-direction:column; overflow:hidden; }
.ds-ibx-eb{ display:block; padding:14px 8px 8px; } .ds-ibx-col.nav > .ds-ibx-eb:first-child{ padding-top:0; }
.ds-ibx-navi{ display:flex; align-items:center; gap:10px; padding:9px 8px; border-radius:10px; font-weight:600; font-size:13px;
  color:var(--ink2); cursor:pointer; }
.ds-ibx-navi .material-icons{ font-size:17px; color:var(--muted); } .ds-ibx-navi .t{ flex:1; min-width:0; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }
.ds-ibx-navi.comm{ font-weight:500; font-size:12.5px; gap:9px; padding:8px; }
.ds-ibx-navi.on{ background:var(--panel); color:var(--ink); } .ds-ibx-navi:hover{ background:var(--panel); }
.ds-ibx-cdot{ width:8px; height:8px; border-radius:50%; background:var(--pos); flex:none; }
.ds-ibx-cnt{ margin-left:auto; font-size:11px; color:var(--muted); flex:none; }
.ds-ibx-cnt.acc{ font-weight:700; color:#fff; background:var(--accent); border-radius:999px; padding:1px 8px; }
.ds-ibx-dlg{ display:flex; gap:11px; padding:12px; border-radius:14px; cursor:pointer; margin-bottom:2px; }
.ds-ibx-dlg:hover{ background:var(--panel); } .ds-ibx-dlg.on{ background:var(--accent-bg); }
.ds-ibx-dl{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.ds-ibx-dn{ display:flex; align-items:center; gap:6px; }
.ds-ibx-dn b{ font-family:var(--f-display); font-weight:600; font-size:13.5px; color:var(--ink); flex:1; min-width:0;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-ibx-dc,.ds-ibx-dt{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ds-ibx-dc{ font-size:11px; color:var(--muted); } .ds-ibx-dt{ font-size:12.5px; color:var(--ink2); }
.ds-ibx-pad{ padding:18px; }
.ds-ibx-pick{ display:grid; place-items:center; flex:1; color:var(--muted); text-align:center; padding:20px; }
.ds-ibx-thead{ display:flex; align-items:center; gap:12px; padding:15px 20px; border-bottom:1px solid var(--hair2); flex:none; }
.ds-ibx-tn{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; } .ds-ibx-tname .ds-ibx-name{ font-size:15px; }
.ds-ibx-msgs{ flex:1; overflow:auto; padding:20px; display:flex; flex-direction:column; gap:12px; background:var(--surface); min-height:0; }
.ds-ibx-msg{ display:flex; flex-direction:column; align-items:flex-start; } .ds-ibx-msg.out{ align-items:flex-end; }
.ds-ibx-msg .ds-bub{ white-space:pre-wrap; overflow-wrap:anywhere; }
.ds-ibx-noteinp{ padding:4px 16px; border-top:1px solid var(--hair2); flex:none; }
.ds-ibx-comp{ display:flex; align-items:flex-end; gap:10px; padding:12px 16px 12px; border-top:1px solid var(--hair2); flex:none; }
.ds-ibx-ta{ flex:1; min-width:0; } .ds-ibx-comp .ds-btn.q-btn.ds-ibx-ib{ min-height:44px; min-width:40px; }
.ds-ibx-comp .ds-btn--accent.q-btn.ds-ibx-ib{ min-height:52px; min-width:56px; }
.ds-ibx-vknote{ padding:0 16px 14px; flex:none; }
/* настройки и подтверждения */
.q-dialog .q-card.ds-ibx-set{ width:580px; max-width:96vw; max-height:90vh; display:flex; flex-direction:column; }
.ds-ibx-setbody{ padding:18px 24px 24px; overflow-y:auto; display:flex; flex-direction:column; gap:14px; }
.ds-ibx-setbody .ds-ibx-eb{ padding:6px 0 0; } .ds-ibx-sound{ padding:10px 4px; }
.ds-ibx-sname{ flex:1; font-weight:600; font-size:13.5px; } .ds-ibx-sicon{ color:var(--muted); font-size:18px; }
.ds-ibx-newf{ display:flex; align-items:center; gap:8px; } .ds-ibx-newf .ds-field{ flex:1; }
.ds-ibx-setfoot{ display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
.q-dialog .q-card.ds-ibx-cf{ width:480px; max-width:96vw; } .ds-ibx-cfacts{ padding:4px 24px 22px; }
.ds-btn--dark.q-btn.ds-ibx-banbtn{ background:var(--neg); }
@media (max-width:900px){
  .ds-ibx-mail{ grid-template-columns:1fr; height:auto; min-height:0; }
  .ds-ibx-col{ border-right:0; border-bottom:1px solid var(--hair2); max-height:none; }
  .ds-ibx-col.nav,.ds-ibx-col.list{ max-height:320px; } .ds-ibx-col.thread{ min-height:480px; }
  .ds-ibx-sel,.ds-ibx-search{ min-width:0; flex:1 1 160px; } .ds-ibx-acts{ flex-wrap:wrap; }
}
@media (max-width:640px){
  .ds-ibx-card.ds-card{ padding:16px 14px; } .ds-ibx-row{ gap:10px; }
  .ds-ibx-acts .ds-ibx-sp{ display:none; } .ds-btn.q-btn.ds-ibx-reply{ flex:1 1 100%; }
  .ds-ibx-comp{ flex-wrap:wrap; justify-content:flex-end; } .ds-ibx-ta{ flex:1 1 100%; }
}

/* «Контент без ПП» (components/nopp.py, снимок function_nopp.png): подпись под «Источником», шапка блока источника
   («ПОСЛЕДНИЙ СБОР · 26 дн назад», «АВТОСБОР С ПАБЛИКОВ · 181 донор в работе» и кнопка справа), плитки в одну
   строку, «Взято из просмотренных», живой ход старой (лампа «застряло» — красная, строка даты) */
.ds-nopp-note{ margin:-4px 0 0 18px; }
.ds-nopp-src{ gap:12px; }
.ds-nopp-head{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:10px 0 0; }
.ds-nopp-head .tx{ flex:1 1 200px; min-width:0; display:flex; flex-direction:column; gap:4px; }
.ds-nopp-taken{ margin-top:-2px; }
.ds-nopp-taken b{ color:var(--ink2); }
.ds-nopp-taken .of{ color:var(--faint); }
.ds-nopp-ics{ display:inline-flex; gap:6px; }
.ds-nopp-ics .ic{ font-size:18px; color:var(--tc, var(--faint)); }
.ds-status.negc{ color:var(--neg); }
.ds-nopp-live .bd{ display:flex; flex-direction:column; gap:10px; }
.ds-nopp-live .pr{ margin-top:2px; }
.ds-nopp-live .ln1 b{ color:var(--ink2); }
.ds-nopp-live .ln{ max-height:none; }
@media (max-width:640px){ .ds-nopp-note{ margin-left:4px; } .ds-nopp-head .q-btn{ width:100%; } }
@media (max-width:520px){ .ds-nopp-tiles .ds-strip{ grid-template-columns:repeat(2, minmax(0,1fr)); } }

/* «Контент без ПП»: карточка сообщества, шестерёнка и «Доноры и фразы» (components/nopp_card.py, nopp_donors.py;
   снимки function_nopp_<gid>__g0_*.png, dlg_settings_nopp.png, function_nopp_donors.png) — только просмотр */
.ds-nopp-chead{ display:flex; align-items:center; gap:15px; margin:-4px 0 4px; }
.ds-nopp-chead .sc{ flex:1; min-width:0; font-size:12.5px; }
.ds-nopp-tabs{ margin:0 0 4px; }
.ds-nopp-card.ds-card{ overflow:hidden; }
.ds-nopp-tabbody{ padding:18px 22px; display:flex; flex-direction:column; gap:8px; }
.ds-nopp-slots{ border-top:1px solid var(--hair2); }
.ds-nopp-eb{ margin:10px 0 0; } .ds-nopp-tabbody > .ds-nopp-eb:first-child{ margin-top:0; }
.ds-nopp-roseg{ pointer-events:none; } .ds-nopp-roseg .sg:not(.on){ color:var(--faint); }
.ds-nopp-pbox{ display:flex; flex-direction:column; gap:6px; padding:12px 14px; border:1px solid var(--hair2);
  border-radius:14px; }
.ds-nopp-row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; } .ds-nopp-row > .ds-field{ flex:1 1 150px; }
.ds-nopp-row.top{ gap:12px 22px; align-items:flex-start; }
.ds-nopp-colf{ flex:1 1 280px; min-width:0; display:flex; flex-direction:column; gap:6px; }
.ds-nopp-chid{ width:180px; }
.ds-nopp-tabbody > .ds-btn.q-btn{ align-self:flex-start; margin-top:8px; }
.ds-nopp-narrow{ max-width:640px; }
.ds-nopp-warn{ font-size:12px; color:#B26A00; }
.ds-nopp-legend{ display:flex; gap:16px; flex-wrap:wrap; align-items:center; margin-top:6px; }
.ds-nopp-legend span{ display:inline-flex; align-items:center; gap:6px; }
.ds-nopp-legend i{ width:12px; height:12px; border-radius:4px; background:var(--panel); border:1px solid var(--hair); }
.ds-nopp-legend i.on{ background:var(--accent); border-color:var(--accent); }
.ds-nopp-ctiles{ display:flex; gap:12px; flex-wrap:wrap; }
.ds-nopp-ctiles .tl{ flex:0 1 auto; min-width:110px; background:var(--panel); border-radius:14px; padding:14px 16px; }
.ds-nopp-ctiles .v{ font-family:var(--f-display); font-weight:700; font-size:23px; color:var(--ink); }
.ds-nopp-ctiles .warn .v{ color:var(--warn); } .ds-nopp-ctiles .blue .v{ color:#2E6FD0; }
.ds-nopp-ctiles .pos .v{ color:var(--pos); }
.ds-nopp-last .ds-lrow{ padding:10px 4px; gap:12px; }
.ds-nopp-last .ic{ font-size:18px; color:var(--muted); }
.ds-nopp-last .u{ font-size:13px; color:var(--ink2); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ds-nopp-recipe{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:10px; margin-top:4px; }
.ds-nopp-logo{ display:flex; align-items:center; gap:12px; margin-top:6px; }
.ds-nopp-logo .lg{ width:64px; height:64px; border-radius:14px; object-fit:cover; }
/* шестерёнка */
.q-dialog .q-card.ds-nopp-dlg{ width:680px; max-width:96vw; max-height:90vh; display:flex; flex-direction:column; }
.ds-nopp-dlgbody{ padding:10px 20px 20px; overflow-y:auto; display:flex; flex-direction:column; gap:12px; }
.ds-nopp-dlgbody > .ds-col{ gap:10px; }
.ds-nopp-dir{ display:flex; flex-direction:column; gap:3px; padding:14px 16px; background:var(--panel); border-radius:14px; }
.ds-nopp-dir .t{ font-weight:700; font-size:13.5px; } .ds-nopp-dir .ds-linkbtn{ align-self:flex-start; }
.ds-nopp-key{ padding:10px 4px; } .ds-nopp-key .nm{ flex:1; font-weight:600; font-size:13.5px; }
.ds-nopp-prompt textarea{ min-height:120px; }
.ds-nopp-dlgfoot{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
/* «Доноры и фразы» */
.ds-nopp-sec{ display:flex; flex-direction:column; gap:4px; margin:10px 0 0; }
.ds-nopp-sec.row{ flex-direction:row; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; }
.ds-nopp-bulk{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; }
.ds-nopp-bulk .ds-cap{ flex:1 1 260px; }
.ds-nopp-by{ margin-left:6px; }
.ds-nopp-phs{ display:flex; gap:8px; flex-wrap:wrap; }
.ds-nopp-phs .ph{ padding:6px 12px; border-radius:999px; background:var(--chip); font-size:12.5px; color:var(--ink2); }
.ds-nopp-run{ padding:12px 18px; border-bottom:1px solid var(--hair2); font-size:12.5px; color:var(--ink2); }
.ds-nopp-run:last-child{ border-bottom:0; }
.ds-nopp-run .hd{ font-weight:700; color:var(--ink); } .ds-nopp-run .why{ margin-top:3px; color:var(--muted); }
.ds-nopp-run.idle{ color:var(--faint); }
.ds-nopp-verify .ds-nopp-run{ padding:10px 0; }
@media (max-width:640px){
  .ds-nopp-tabbody{ padding:14px; } .ds-nopp-recipe{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .ds-nopp-chid{ width:100%; }
}

/* «Чистка постов» (этап 4.1): умный чистильщик и ручная зачистка, как в старой (function_clean*.png) */
.ds-cln{ display:flex; flex-direction:column; gap:18px; }
.ds-clnhd{ display:flex; align-items:flex-start; gap:10px 14px; flex-wrap:wrap; }
.ds-clnhd .tx{ flex:1 1 260px; min-width:0; display:flex; flex-direction:column; gap:4px; }
.ds-clnhd .rt{ display:flex; align-items:center; gap:10px; margin-left:auto; }
.ds-clncard{ display:flex; flex-direction:column; gap:14px; }
.ds-clncard.pad0{ gap:0; } .ds-clncard.pad0 > .ds-clnhd{ padding:20px 22px 16px; }
.ds-clncard > .ds-card{ box-shadow:none; border-radius:0; }
.ds-clntbl .ds-tr .chev{ font-size:18px; color:var(--faint); justify-self:end; }
.ds-clntbl .ds-tr.on{ background:var(--panel); }
.ds-td.strong{ font-weight:700; font-variant-numeric:tabular-nums; }
.ds-clnn{ color:var(--accent); font-weight:700; font-variant-numeric:tabular-nums; }
.ds-clnbody{ padding:8px 18px 14px 34px; border-bottom:1px solid var(--hair2); background:var(--panel); display:flex; flex-direction:column; gap:2px; }
.ds-clnrep{ display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:4px 10px; align-items:center; padding:6px 0; }
.ds-clnrep .nm{ font-weight:700; font-size:13px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ds-clnrep .n{ font-weight:700; color:var(--accent); font-variant-numeric:tabular-nums; display:flex; gap:8px; align-items:center; }
.ds-clnrep .n .x{ font-size:11px; font-weight:700; } .ds-clnrep .n .x.unk{ color:var(--warn); } .ds-clnrep .n .x.bad{ color:var(--neg); }
.ds-clnrep .pls{ grid-column:2/4; display:flex; flex-wrap:wrap; gap:6px; }
.ds-clnpl{ font-size:11.5px; font-weight:600; padding:3px 9px; border-radius:999px; background:var(--surface); color:var(--ink2); text-decoration:none; border:1px solid var(--hair); }
a.ds-clnpl:hover{ color:var(--accent); border-color:var(--accent); }
.ds-clnpl.unk{ background:var(--warn-bg); border-color:transparent; } .ds-clnpl.bad{ background:var(--neg-bg); border-color:transparent; }
.ds-clnq{ display:block; text-align:right; font-variant-numeric:tabular-nums; color:var(--faint); } .ds-clnq.bad{ color:var(--neg); font-weight:700; }
/* попапы */
.q-dialog .q-card.ds-clndlg{ width:560px; max-width:96vw; max-height:90vh; display:flex; flex-direction:column; }
.q-dialog .q-card.ds-clndlg.wide{ width:680px; }
.ds-clndlgbody{ flex:1; min-height:0; overflow-y:auto; padding:16px 24px 22px; display:flex; flex-direction:column; gap:12px; }
.ds-clndlgbody .ds-field{ width:100%; }
.ds-clnpanel{ display:flex; flex-direction:column; gap:12px; } .ds-clnpanel > .q-btn{ align-self:flex-start; }
.ds-clngrid{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px 12px; }
.ds-clntiles{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:10px; }
.ds-clntile{ padding:14px 10px; border-radius:var(--r-inset); background:var(--panel); text-align:center; }
.ds-clntile .v{ font-family:var(--f-display); font-size:19px; font-weight:700; color:var(--ink); }
.ds-clntile .c{ font-size:11px; color:var(--muted); margin-top:2px; }
.ds-clnpills{ display:flex; flex-wrap:wrap; gap:6px; margin:-4px 0 6px; }
.ds-clnpill{ font-size:11.5px; font-weight:600; padding:4px 10px; border-radius:999px; background:var(--chip); color:var(--ink2); }
.ds-clnleads{ display:flex; flex-direction:column; gap:6px; }
.ds-clnlead{ display:grid; grid-template-columns:100px minmax(0,1fr) auto; gap:10px; padding:9px 12px; border-radius:10px; background:var(--panel); color:var(--ink); text-decoration:none; font-size:12.5px; }
.ds-clnlead .d{ color:var(--muted); } .ds-clnlead .p{ font-weight:700; } .ds-clnlead:hover .p{ color:var(--accent); }
.ds-clnnote{ font-size:12px; font-weight:600; color:var(--warn); background:var(--warn-bg); padding:8px 12px; border-radius:10px; }
.ds-clnfoot{ display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap; padding:14px 24px 20px; border-top:1px solid var(--hair2); }
/* ручная зачистка */
.ds-wipeform > .q-btn, .ds-wipeform > .ds-btn{ align-self:flex-start; }
.ds-wipetypes,.ds-wiperow{ display:flex; flex-wrap:wrap; gap:10px 22px; align-items:center; }
.ds-wiperow .ds-field{ width:220px; max-width:100%; }
.ds-wipeprogs{ display:flex; flex-direction:column; gap:12px; } .ds-wipeprogs:empty{ display:none; }
.ds-wipeprog{ display:flex; flex-direction:column; gap:8px; }
.ds-wipeprog .hd{ display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; }
.ds-wipeprog .nm{ font-family:var(--f-display); font-weight:700; font-size:15px; }
.ds-wipeprog .tot{ font-weight:700; font-size:13px; font-variant-numeric:tabular-nums; }
.ds-wipeprog .ft{ display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; }
.ds-wiperowp{ display:grid; grid-template-columns:110px minmax(0,1fr) 150px; gap:10px; align-items:center; font-size:12.5px; }
.ds-wiperowp .n{ text-align:right; font-variant-numeric:tabular-nums; color:var(--ink2); }
.ds-wipenm{ white-space:nowrap; }
.ds-wipelist{ display:flex; flex-direction:column; gap:2px; max-height:52vh; overflow-y:auto; }
.ds-wipeitem{ display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:12px; cursor:pointer; }
.ds-wipeitem .tx{ min-width:0; } .ds-wipeitem .nm{ font-weight:700; font-size:13px; }
.ds-wipeitem:hover{ background:var(--panel); } .ds-wipeitem.off{ opacity:.55; cursor:default; } .ds-wipeitem.off:hover{ background:none; }
.ds-wipeprev{ font-family:var(--f-display); font-weight:700; font-size:15px; color:var(--ink); }
@media (max-width:640px){
  .ds-clngrid,.ds-clntiles{ grid-template-columns:1fr; } .ds-wiperowp{ grid-template-columns:80px minmax(0,1fr); }
  .ds-wiperowp .n{ grid-column:1/-1; text-align:left; } .ds-clnbody{ padding-left:18px; }
}

/* ручная публикация («Публикатор», pp/panel.py 5613–6164): две колонки, медиа, чипы, окна суток, задачи */
.ds-pubhost{ display:contents; }
.ds-pubgrid{ display:flex; gap:18px; flex-wrap:wrap; align-items:stretch; width:100%; }
.ds-pubcol{ flex:1; min-width:340px; display:flex; flex-direction:column; gap:18px; }
.ds-pubcard{ display:flex; flex-direction:column; gap:12px; flex:1; }
.ds-pubcard > .ds-eyebrow{ margin-bottom:2px; }
.ds-pubtext textarea{ min-height:90px; max-height:280px; }
.ds-pubmedia{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.ds-pubtile{ width:96px; height:96px; cursor:pointer; }
.ds-pubtile .img{ width:100%; height:100%; object-fit:cover; }
.ds-pubtile .vid{ font-size:30px; color:#fff; background:#111; width:100%; height:100%; display:grid; place-items:center; }
.ds-pubtile .play{ position:absolute; inset:0; margin:auto; font-size:34px; color:#fff; pointer-events:none; }
.ds-pubtile .x{ cursor:pointer; z-index:2; } .ds-pubtile .x .q-icon{ font-size:12px; }
.ds-pubrow{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.ds-pubup{ max-width:260px; } .ds-pubup .q-uploader__list, .ds-pubup .q-uploader__subtitle{ display:none; }
.ds-pubup .q-uploader__header{ background:var(--panel); color:var(--ink); border-radius:12px; }
.ds-publinkin{ flex:1; min-width:220px; }
.ds-pubopts{ display:flex; gap:4px 10px; flex-wrap:wrap; align-items:center; font-size:12.5px; }
.ds-pubacc{ min-width:220px; max-width:320px; }
.ds-pubchips{ display:flex; gap:6px; flex-wrap:wrap; }
.ds-pubchip{ display:inline-flex; align-items:center; gap:6px; padding:4px 8px 4px 4px; border-radius:999px; background:var(--chip); font-size:12.5px; font-weight:600; }
.ds-pubchip .x{ font-size:14px; color:var(--faint); cursor:pointer; }
.ds-pubfolder .tx{ flex:1; min-width:0; } .ds-pubfolder .t{ font-weight:600; font-size:13.5px; }
.ds-pubfolder.col{ flex-direction:column; align-items:stretch; cursor:default; }
.ds-pubfolder.col .top{ display:flex; align-items:center; gap:10px; } .ds-pubfolder .nm{ flex:1; }
.ds-pubdate{ width:100%; }
.ds-pubtime input{ text-align:center; font-size:20px; font-weight:700; font-family:var(--f-display); }
.ds-pubday .ds-win{ cursor:pointer; } .ds-pubday .ds-win.past{ cursor:default; }
.ds-publegend{ display:flex; gap:16px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.ds-publegend .it{ display:inline-flex; align-items:center; gap:6px; }
.ds-publegend i{ width:12px; height:12px; border-radius:4px; background:var(--panel); border:1px solid var(--hair); }
.ds-publegend .on i{ background:var(--accent); border-color:var(--accent); }
.ds-publegend .busy i{ background:var(--warn); border-color:var(--warn); } .ds-publegend .past{ opacity:.5; }
.ds-puboccs{ display:flex; flex-direction:column; gap:6px; }
.ds-puboccrow{ display:flex; align-items:center; gap:10px; font-size:12px; }
.ds-puboccrow .n{ min-width:140px; font-weight:600; } .ds-puboccrow .err{ color:var(--neg); }
.ds-pubwhenbox{ display:flex; flex-direction:column; gap:8px; }
.ds-pubbrowser{ margin-top:6px; padding:11px 14px; border:1px solid var(--hair); border-radius:12px; background:#FAFBFC; }
.ds-pubsend{ width:100%; margin-top:8px; }
.ds-puberr{ color:var(--neg); font-size:12px; font-weight:600; }
.ds-pubjobs{ grid-template-columns:2fr 1fr 1.2fr 1.1fr; }
.ds-tr.ds-pubjobs.click{ cursor:pointer; }
.ds-pubjname{ display:flex; align-items:center; gap:10px; min-width:0; }
.ds-pubjname .tx{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.ds-pubjname .t{ font-family:var(--f-display); font-weight:600; font-size:13.5px; }
.ds-publink{ font-size:11.5px; color:#2E6FD0; text-decoration:none; font-weight:600; }
.ds-chip.pubotl{ color:#2E6FD0; } .ds-chip.pubotl .dot{ background:#2E6FD0; }
.ds-chip.pubsrv{ color:var(--ink2); } .ds-chip.pubsrv .dot{ background:var(--ink2); }
.ds-pubwhen{ font-size:12.5px; color:var(--ink2); }
.ds-pubst{ display:flex; align-items:center; justify-content:space-between; gap:6px; }
.ds-pubcancel{ color:var(--neg); }
.ds-pubempty{ padding:14px 22px 18px; display:block; }
.ds-pubjobsbox{ margin:0 -22px -20px; }
.ds-pubdlg{ width:600px; max-width:96vw; }
.ds-pubdlgbody{ padding:16px 24px 22px; display:flex; flex-direction:column; gap:10px; width:100%; box-sizing:border-box; }
.ds-pubsearch{ display:flex; gap:10px; align-items:center; } .ds-pubsearch .ds-field{ flex:1; }
.ds-publist{ display:flex; flex-direction:column; gap:2px; max-height:56vh; overflow:auto; }
.ds-publist.sm{ max-height:220px; }
.ds-cpick-row.on{ background:#EAF6EF; } .ds-cpick-row.on .n{ font-weight:800; }
.ds-cpick-row.off{ opacity:.45; cursor:not-allowed; } .ds-cpick-row .n{ flex:1; font-size:13px; }
.ds-cpick-row .why{ font-size:10.5px; color:var(--faint); white-space:nowrap; }
.ds-pubfoot{ display:flex; justify-content:flex-end; gap:8px; margin-top:6px; }
.ds-pubprev{ max-width:96vw; padding:10px; position:relative; }
.ds-pubprevmedia{ max-width:min(1100px,90vw); max-height:84vh; border-radius:12px; }
@media (max-width:760px){ .ds-pubcol{ min-width:0; flex-basis:100%; } .ds-pubjobs{ grid-template-columns:1.6fr 1fr 1fr 1fr; } }

/* «Ручной» «Контента без ПП»: календарь на 7 дней, сводка плана, плашка «все заполнены» (_nopp_publish_block) */
.ds-nopp-week{ width:100%; }
.ds-nopp-week .cell{ display:block; }
.ds-nopp-plan{ background:var(--panel); border-radius:14px; padding:14px 16px; font-size:13px; color:var(--ink2);
  line-height:1.7; }
.ds-nopp-plan .tl{ margin-top:7px; font-weight:700; }
.ds-nopp-plan .tl.ok{ color:var(--pos); } .ds-nopp-plan .tl.few{ color:var(--neg); }
.ds-nopp-full{ background:var(--warn-bg); color:var(--warn); border-radius:14px; padding:13px 16px; font-size:12.5px;
  font-weight:650; }
.ds-manual textarea{ min-height:256px; resize:none; }
