/* ===== miniros — единственная тема «Натив»: телеграмная тёмная, синий акцент =====
   Раньше тут были три темы (matrix/bento/premium) и переключатель раскладок.
   Оставлен один стиль: меньше сущностей, ничего не разъезжается. */
:root{
  --accent:#4EA4F6; --accent-soft:#8ED0F5; --on-accent:#08151F;
  --bg:#17212B; --panel:#1E2A36; --panel-2:#243444; --line:#2A3A48;
  --tx:#EDF3F7; --dim:#93A6B5;
  --ok:#63CC9A; --warn:#E0AE5F; --crit:#F07A76;
  --r:14px; --r-sm:10px; --r-pill:22px;
}
*{box-sizing:border-box}
html,body{margin:0}
html{height:100%}
/* Документ НЕ растёт: высота = экран, прокручивается только середина (#screen).
   Иначе длинный экран (настройки, журнал) тянул за собой высоту документа —
   и десктопная обёртка растягивала под него окно на весь экран. */
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;
  color:var(--tx); background:var(--bg); font-size:14px; overflow:hidden;
  -webkit-font-smoothing:antialiased;
  /* высота вьюпорта ставится на BODY, а не на #app: оболочка десктопа дедплея добавляет
     body{padding-top:34px} под свой бар, и при box-sizing:border-box этот отступ съедается
     из высоты body — иначе низ каркаса (док) уезжал за нижний край окна */
  height:var(--app-h, 100%);
}
#app{display:flex; flex-direction:column; height:100%; max-width:720px; margin:0 auto}

/* ── шапка: имя + микро-сводка ── */
.hdr{flex:none; display:flex; align-items:center; gap:8px; padding:10px 14px;
     border-bottom:1px solid var(--line); background:var(--bg)}
.hdr h1{font-size:15px; font-weight:600; margin:0; letter-spacing:.01em}
.hdr .sub{color:var(--dim); font-size:11px}
.pulse{margin-left:auto; display:flex; gap:5px}
.pulse b{display:flex; align-items:center; gap:3px; font-size:11.5px; font-weight:600; font-variant-numeric:tabular-nums;
         background:var(--panel); border-radius:8px; padding:3px 7px; color:var(--dim); cursor:pointer; border:0}
.pulse b.crit{color:var(--crit)} .pulse b.warn{color:var(--warn)} .pulse b.ok{color:var(--ok)}

/* ── формы ── */
.form{display:grid; gap:8px}
label{font-size:11.5px; color:var(--dim); margin-top:5px}
label.row{display:flex; align-items:center; gap:8px; color:var(--tx)}
input,select,textarea{
  width:100%; padding:8px 10px; border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--panel); color:var(--tx); font-family:inherit; font-size:13px; outline:none;
  transition:border-color .12s, box-shadow .12s;
}
input:focus,select:focus,textarea:focus{border-color:var(--accent); box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 25%,transparent)}
input[type=checkbox]{width:auto; accent-color:var(--accent)}
textarea{min-height:72px; resize:vertical}
select{-webkit-appearance:none; appearance:none; padding-right:30px; cursor:pointer}
select option{background:var(--panel); color:var(--tx)}

.sel-trigger{background:var(--panel); border:1px solid var(--line); color:var(--tx); border-radius:var(--r-sm); font-family:inherit; font-size:13px; padding:8px 10px}
.sel.open .sel-trigger,.sel-trigger:hover{border-color:var(--accent)}
.sel-caret{color:var(--accent)}
.sel-panel{background:var(--panel); border:1px solid var(--line); border-radius:var(--r-sm); box-shadow:0 14px 34px rgba(0,0,0,.5); padding:4px}
.sel-opt{color:var(--tx); border-radius:8px; padding:9px 11px}
/* пошук у довгих дроплистах (>8 пунктів) — липне зверху панелі */
.sel-search{position:sticky; top:-4px; z-index:1; background:var(--panel); padding:4px 4px 6px; margin:-4px -4px 2px}
.sel-search input{width:100%; background:var(--panel-2); border:1px solid var(--line); color:var(--tx);
  border-radius:8px; padding:7px 9px; font:inherit; font-size:12.5px; outline:none}
.sel-opt.sel-none{color:var(--dim); cursor:default}
.sel-opt:hover{background:var(--panel-2)}
.sel-opt[aria-selected="true"]{color:var(--accent)}

.combo{position:relative}
.combo-panel{position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:100000; max-height:240px; overflow:auto;
  background:var(--panel); border:1px solid var(--line); border-radius:var(--r-sm); box-shadow:0 14px 34px rgba(0,0,0,.5); padding:4px}
.combo-opt{padding:9px 11px; border-radius:8px; cursor:pointer; color:var(--tx)}
.combo-opt:hover{background:var(--panel-2)}
.combo-empty{padding:9px 11px; color:var(--dim)}
.combo-clear{color:var(--dim)}
.detail-card{border:1px solid var(--line); border-radius:var(--r); padding:12px; background:var(--panel)}
.detail-h{color:var(--tx); font-weight:600; font-size:15px; margin-bottom:6px}
.code-wrap{color:var(--tx); background:var(--panel-2); border-color:var(--line)}

.btn{
  border:0; border-radius:var(--r-sm); padding:11px; font-family:inherit; font-size:14px;
  background:var(--panel-2); color:var(--tx); cursor:pointer; transition:filter .12s;
}
.btn:hover{filter:brightness(1.15)}
.btn:active{filter:brightness(.9)}
.btn.primary{background:var(--accent); color:var(--on-accent); font-weight:600}
.btn.rm{width:auto; padding:7px 11px}
.btn[disabled]{opacity:.5; cursor:default}

.tabs{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px}
.tab{white-space:nowrap; padding:6px 11px; font-size:12.5px; border-radius:var(--r-pill); background:var(--panel); border:0; color:var(--dim); cursor:pointer; font-family:inherit}
.tab.active{background:var(--accent-soft); color:var(--on-accent); font-weight:600}

.item,.kv{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:11px; margin-bottom:6px}
.kv{display:grid; grid-template-columns:1fr 1.4fr auto; gap:8px; align-items:center}
.nrow{display:grid; grid-template-columns:1fr 1fr auto; gap:6px; margin-bottom:6px}
.tbl{width:100%; border-collapse:collapse; font-size:12px; margin-bottom:8px}
.tbl th{text-align:left; color:var(--dim); font-weight:600; padding:5px 6px; border-bottom:1px solid var(--line); font-size:10px; letter-spacing:.4px; text-transform:uppercase}
.tbl th:last-child,.tbl td:last-child{text-align:right}
.tbl td{padding:5px 6px; border-bottom:1px solid var(--line); color:var(--tx); vertical-align:middle}
.tbl-act{display:flex; align-items:center; justify-content:flex-end; gap:4px}
.tbl-act input{width:72px}
.tbl .sel-panel{left:0; right:auto; width:max-content; min-width:100%; max-width:72vw; padding:3px}

.muted{color:var(--dim); font-size:12px; white-space:pre-wrap}
.err{color:var(--crit)}
.preview{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:11px; margin:8px 0}
.copybox{display:flex; gap:8px; align-items:center; background:var(--panel); border:1px solid var(--line); padding:11px; border-radius:var(--r)}
.copybox code{flex:1; word-break:break-all; font-size:12px; color:var(--accent-soft)}
hr{border:none; border-top:1px solid var(--line); margin:10px 0}
h3{margin:8px 0; font-size:13.5px; color:var(--tx); font-weight:600}

.modal{position:fixed; inset:0; background:#000c; display:flex; align-items:center; justify-content:center; padding:18px; z-index:100010}
.modal.hidden{display:none}
.modal-card{background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:18px;
  max-width:480px; width:100%; max-height:85vh; overflow:auto; box-shadow:0 20px 50px rgba(0,0,0,.6)}
.modal-card h3{margin-top:0}
.modal-card .btn{margin-top:12px; width:100%}

/* ── экраны и док ── */
#screen{flex:1; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch;
        padding:12px 12px 14px; display:flex; flex-direction:column}
.scr-h{display:flex; align-items:baseline; gap:8px; margin-bottom:10px}
.scr-h b{font-size:16px; font-weight:600}
.scr-h span{color:var(--dim); font-size:11.5px}

.foot{flex:none; background:var(--bg); padding:8px 12px calc(10px + env(safe-area-inset-bottom));
      display:grid; gap:8px; border-top:1px solid var(--line)}
.askbar{display:flex; align-items:flex-end; gap:8px; background:var(--panel); border-radius:var(--r-pill); padding:6px 6px 6px 14px}
.askbar textarea{flex:1; border:0; background:transparent; padding:6px 0; min-height:22px; max-height:120px; font-size:14px; resize:none}
.askbar textarea:focus{box-shadow:none}
.ask-go{width:34px; height:34px; border-radius:50%; border:0; background:var(--accent); color:var(--on-accent);
        font-size:17px; font-weight:700; cursor:pointer; flex:none; line-height:1}
.dock{display:flex; align-items:center; gap:4px; background:var(--panel); border-radius:24px; padding:5px; width:max-content; margin:0 auto}
.dock-i{width:38px; height:38px; border-radius:14px; border:0; background:transparent; color:inherit;
        display:grid; place-items:center; font-size:17px; cursor:pointer; padding:0; line-height:1}
.dock-i.on{background:var(--accent-soft)}
.dock-sep{flex:none; width:1px; height:22px; background:var(--line); margin:0 4px}
.dock-i.add{background:var(--accent); color:var(--on-accent); border-radius:50%; font-size:21px; font-weight:700}
.dock-i.add.on{background:var(--accent-soft)}
body{padding-bottom:0}

/* ── капы: одна строка на оффер ── */
.cap{background:var(--panel); border-radius:var(--r); padding:8px 11px; margin-bottom:6px; cursor:pointer;
     display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.cap.open{outline:1px solid var(--accent)}
.cap .c-id{font-size:11px; color:var(--dim); font-variant-numeric:tabular-nums; flex:none}
.cap .c-nm{font-weight:600; font-size:13px; flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cap .c-geo{font-size:11px; color:var(--tx); background:var(--panel-2); border-radius:6px; padding:1px 6px; flex:none}
.cap .c-net{font-size:11px; color:var(--dim); flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
/* строка оффера — одна линия без переносов (имя/сеть режутся многоточием); .cap-edit уходит под неё */
.cap .cap-l{flex:1 1 100%; min-width:0; display:flex; align-items:center; gap:8px; flex-wrap:nowrap}
/* полоса фиксированной ширины, прижата вправо к капе — начало не пляшет от длины имени */
.cap-bar{flex:none; width:128px; margin-left:auto; height:5px; border-radius:3px; background:var(--panel-2); overflow:hidden}
@media (max-width:480px){ .cap-bar{width:72px} .cap .c-net{display:none} }
.cap-bar span{display:block; height:100%; border-radius:3px}
.cap .c-n{font-size:12.5px; font-weight:600; font-variant-numeric:tabular-nums; flex:none; min-width:56px; text-align:right}

/* правка капы: одно поле «10t» + действия, всё в строку под оффером */
.cap-edit{flex-basis:100%; display:flex; align-items:center; gap:6px; flex-wrap:wrap;
          margin-top:7px; padding-top:7px; border-top:1px solid var(--line); cursor:default}
.cap-edit .ce-in{width:74px; padding:5px 8px; font-size:13px; border-radius:8px; background:var(--panel-2); border:1px solid var(--line)}
.cap-edit .ce-chk{display:flex; align-items:center; gap:5px; margin:0; font-size:11.5px; color:var(--dim)}
.cap-edit .ce-chk input{width:auto}
.cap-edit .btn{padding:5px 12px; font-size:12.5px; border-radius:8px}
.cap-edit .ce-save{margin-left:auto}
.cap-edit .ce-ic{padding:5px 9px}

/* ── AI-чат ── */
.ai-msg{border-radius:15px; padding:8px 11px; max-width:88%; font-size:13px; line-height:1.45; margin-bottom:7px}
.ai-msg.user{background:var(--accent); color:var(--on-accent); margin-left:auto; border-bottom-right-radius:5px}
.ai-msg.assistant{background:var(--panel); border-bottom-left-radius:5px}
.ai-who{display:none}
.ai-txt{white-space:pre-wrap; overflow-wrap:anywhere}
.ai-msg.plan{max-width:100%; background:var(--panel); border:1px solid var(--accent)}
.ai-msg.plan .ai-who{display:block; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); margin-bottom:4px}

/* экраны-списки тянутся на всю середину; «подвал» (пагинация) прижат к низу.
   Селекторы — по реальным классам разметки: обёртки #homelog не существует. */
.hl-list{flex:1; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch}
#ai-log{flex:1; min-height:0}
/* flex:1 сжимал список, и строки налезали на секцию «Капа не оновлена» под ним (2026-09-24) */
#cap-list,#cap-stale{flex:none; min-height:0}

/* ── люди (формат «Юзери» didplay) ── */
.pp-bar{display:flex; align-items:center; gap:8px; margin-bottom:10px}
.pp-bar .pp-inv{margin-left:auto; width:auto; padding:6px 12px; border-radius:var(--r-pill); font-size:12.5px}
.pp-ic{width:30px; height:30px; border-radius:50%; border:0; background:var(--panel); color:var(--tx);
       font-size:16px; cursor:pointer; display:grid; place-items:center; padding:0; flex:none}
.pp-pill{display:inline-flex; align-items:center; gap:6px; background:var(--panel-2); color:var(--tx); border:0;
         border-radius:var(--r-pill); padding:7px 12px; font-size:13.5px; font-weight:600; cursor:pointer; white-space:nowrap}
.pp-pill i{font-style:normal; font-size:10px; opacity:.7}
.pp-pill.on{background:var(--accent-soft); color:var(--on-accent)}
.pp-bar .pp-pill{background:var(--panel)}
.pp-card{background:var(--panel); border-radius:var(--r); padding:0 10px}
.pp-row{display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 2px; font-size:13px;
        border-bottom:1px solid var(--line); font-size:15px}
.pp-card > .pp-row:last-child{border-bottom:0}
.pp-row b{font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.pp-right{display:flex; align-items:center; gap:8px; flex:none}
.pp-row .pp-pill{background:var(--panel-2); padding:4px 9px; font-size:12px}
.pp-row .pp-ic{width:28px; height:28px; background:var(--panel-2); font-size:12px}
.pp-chip{background:var(--panel-2); border-radius:var(--r-pill); padding:4px 8px; font-size:12px; font-weight:600;
         font-variant-numeric:tabular-nums}
.pp-chip.star{background:#3a3524; color:#F0B640}
.pp-id{color:var(--dim); font-size:12px; font-variant-numeric:tabular-nums}
.pp-edit{background:var(--panel-2); border-radius:var(--r-sm); padding:10px 12px; margin:-2px 0 8px}
.pp-perms{display:flex; gap:12px; flex-wrap:wrap}
.pp-perm{display:flex; align-items:center; gap:6px; margin:0; font-size:12.5px; color:var(--tx)}
.pp-perm input{width:auto}
.pp-invite{background:var(--panel); border-radius:var(--r); padding:12px; margin-bottom:10px}
.pp-invite[hidden]{display:none}

/* ── чекають регу ── */
.pulse b{border:0; font-family:inherit}
.wt{background:var(--panel); border-radius:var(--r); padding:10px 12px; margin-bottom:8px; display:grid; gap:4px; min-width:0; overflow:hidden}
.wt-head{display:flex; align-items:baseline; justify-content:space-between; gap:8px}
.wt-head b{font-size:14px; font-weight:600}
.wt-age{font-size:12px; font-weight:600; font-variant-numeric:tabular-nums; color:var(--dim); white-space:nowrap}
.wt-offer{display:flex; align-items:center; gap:8px; margin-top:4px; min-width:0}
.wt-nm{flex:1; min-width:0; font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.wt-offer .btn{flex:none; padding:3px 9px; font-size:11.5px}
.wt-acts{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:8px}
.wt-acts .btn{padding:5px 11px; font-size:12.5px}
.wt-acts .sel{flex:1 1 140px; min-width:0; max-width:100%}
.wt-acts .wt-camp{flex:1 1 140px; min-width:0; max-width:100%}
.wt-acts .sel-trigger{padding:5px 9px; font-size:12.5px}
.cap .c-mo{font-style:normal; font-weight:500; color:var(--dim); margin-left:6px; font-size:11px}
.cap-edit .ce-mo{width:64px}

/* ── трасса AI ── */
.tr{background:var(--panel); border-radius:var(--r-sm); padding:8px 10px; margin-bottom:6px; cursor:pointer; border-left:3px solid transparent}
.tr.flag{border-left-color:var(--warn)}
.tr-h{display:flex; justify-content:space-between; font-size:11px}
.tr-flag{color:var(--warn); font-weight:700}
.tr-q{font-size:12.5px; margin:3px 0}
.tr-tools{display:flex; gap:4px; flex-wrap:wrap}
.tr-tool{font-size:10.5px; background:var(--panel-2); border-radius:6px; padding:1px 6px; color:var(--dim)}
.tr-tool.bad{color:var(--crit); background:color-mix(in srgb,var(--crit) 14%,transparent)}
.tr-tool.plan{color:var(--accent)}
.tr-a{white-space:pre-wrap; font-size:12px; margin-top:6px; color:var(--dim); border-top:1px solid var(--line); padding-top:6px}

/* iOS/Telegram-webview: поле с шрифтом <16px при фокусе заставляет Safari зумить страницу —
   «плывёт масштаб» при открытии клавиатуры. На тач-устройствах все поля ввода ≥16px. */
@media (pointer:coarse){
  input, select, textarea, .sel-trigger, .askbar textarea, .cap-edit .ce-in{font-size:16px}
  .askbar textarea{line-height:1.3}
}

/* ── ответы AI: markdown-рендер ── */
.ai-msg.assistant .ai-txt{white-space:normal}
.ai-txt p{margin:0 0 6px} .ai-txt p:last-child{margin-bottom:0}
.ai-txt h4{margin:8px 0 4px; font-size:13px; font-weight:600; color:var(--accent-soft)}
.ai-txt ul,.ai-txt ol{margin:2px 0 6px; padding-left:18px} .ai-txt li{margin:2px 0}
.ai-txt code{font:12px ui-monospace,Menlo,monospace; background:var(--panel-2); border-radius:5px; padding:1px 5px; overflow-wrap:anywhere}
.ai-txt pre{background:var(--panel-2); border-radius:var(--r-sm); padding:8px 10px; overflow-x:auto; margin:4px 0 6px}
.ai-txt pre code{background:transparent; padding:0; white-space:pre}
.ai-txt a{color:var(--accent-soft); overflow-wrap:anywhere}
.ai-txt .tblw{overflow-x:auto; margin:4px 0 6px}
/* таблиці в чаті НЕ їдуть вбок: переноси в клітинках, ширина за екраном (власник 2026-09-24) */
.ai-txt table{border-collapse:collapse; font-size:12px; width:100%; table-layout:auto}
.ai-txt th,.ai-txt td{padding:4px 6px; border-bottom:1px solid var(--line); text-align:left;
  white-space:normal; overflow-wrap:break-word; word-break:normal; hyphens:none; vertical-align:top}
/* вузькі колонки рвали слова по літерах («С Т А Т У С») — даємо мінімум і скрол, якщо не влазить */
.ai-txt th,.ai-txt td{min-width:64px}
.ai-txt th{color:var(--dim); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.03em}
.ai-txt b{font-weight:600}
.ai-meta{margin-top:6px; font-size:10.5px; color:var(--dim)}

/* фото в чате AI */
.ai-pics{display:flex; gap:6px; padding:0 6px 6px}
.ai-th{position:relative; width:48px; height:48px; border-radius:8px; overflow:hidden; background:var(--panel)}
.ai-th img{width:100%; height:100%; object-fit:cover}
.ai-th b{position:absolute; top:0; right:0; width:16px; height:16px; line-height:16px; text-align:center; font-size:12px; background:rgba(0,0,0,.6); color:#fff; border-radius:0 0 0 8px; cursor:pointer}
.ask-pic{font-size:17px; line-height:34px; cursor:pointer; opacity:.7; margin-left:-6px}
.ai-pic{display:block; max-width:100%; max-height:260px; border-radius:10px; margin-bottom:6px}

/* матчинг група → кампанія */
.gc-h{margin:12px 0 4px; font-size:12px; font-weight:600; color:var(--tx); display:flex; align-items:center}
.gc-refresh{margin-left:auto}
.gc-h small{font-weight:400; color:var(--dim); margin-left:6px}
.gc-row{display:grid; grid-template-columns:76px minmax(0,1fr) 40px; gap:6px; align-items:center; padding:3px 0}
.gc-row b{white-space:nowrap; font-size:12px; font-weight:500}
.gc-row .sel-trigger,.gc-row select{padding:5px 8px; font-size:12px}
.gc-eff{white-space:nowrap; font-size:11px; color:var(--dim); text-align:right}
.gc-eff.bad{color:var(--warn)}
.gc-row .sel{min-width:0}
.gc-toggle{display:flex; align-items:center; gap:8px; margin-bottom:10px; cursor:pointer}
.gc-toggle input{width:18px; height:18px; margin:0}

/* тумблеры (стиль бота, docs/FRONTEND.md «Тумблеры») */
.sw-row{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid var(--line); margin:0; color:var(--tx); font-size:13px; cursor:pointer}
.sw-row span:first-child{display:flex; flex-direction:column; gap:2px; min-width:0}
.sw-row small{color:var(--dim); font-size:11px}
.sw{position:relative; width:38px; height:22px; flex:none}
.sw input{position:absolute; opacity:0; width:0; height:0; margin:0}
.sw i{position:absolute; inset:0; border-radius:11px; background:var(--panel-2); transition:background .15s}
.sw i::after{content:""; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:var(--dim); transition:transform .15s, background .15s}
.sw input:checked + i{background:var(--accent)}
.sw input:checked + i::after{transform:translateX(16px); background:var(--on-accent)}
.row-btns{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:8px}

/* иконка-кнопка (обновить и т.п.): квадрат 28px, SVG из ICO_REFRESH; .spin — вращение во время запроса */
.btn.ico{width:28px; height:28px; padding:0; display:inline-grid; place-items:center; border-radius:8px; background:var(--panel-2); color:var(--dim); border:0}
.btn.ico:hover{color:var(--tx)}
.btn.ico .ico-r{display:block}
.btn.ico.spin .ico-r{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* параметри (словник для AI) */
.p-bar{display:flex; align-items:center; justify-content:space-between; margin-bottom:6px}
.p-grp{font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--dim); margin:10px 0 4px; font-weight:600}
.p-row{background:var(--panel); border-radius:var(--r-sm); padding:7px 10px; margin-bottom:4px; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:3px 8px; align-items:center; cursor:pointer}
.p-row.open{outline:1px solid var(--accent-soft)}
.p-t{min-width:0; display:flex; align-items:baseline; gap:6px; overflow:hidden}
.p-t b{font-size:13px; font-weight:600; white-space:nowrap}
.p-t code{font-size:11px; color:var(--dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.p-f{display:flex; gap:4px; flex:none}
.p-chip{padding:1px 7px; border-radius:999px; background:var(--panel-2); color:var(--dim); font-size:10.5px; white-space:nowrap}
.p-chip.name{background:var(--accent-soft); color:var(--on-accent)}
.p-chip.ask{color:var(--warn)}
.p-h{grid-column:1/-1; color:var(--dim); font-size:11.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.p-h i{opacity:.6}
.p-row.open .p-h{white-space:normal}
.p-ed{grid-column:1/-1; background:var(--panel-2); border-radius:8px; padding:8px 9px; display:grid; gap:6px; margin-top:3px; cursor:default}
.p-ed label{display:grid; gap:3px; font-size:11px; color:var(--dim); margin:0}
.p-ed input,.p-ed select,.p-ed textarea{font-size:12.5px; padding:6px 8px; background:var(--panel)}
.p-ed .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.p-2{display:grid; grid-template-columns:1fr 1fr; gap:6px}
.p-sw{display:flex; flex-wrap:wrap; gap:6px 14px; padding:2px 0}
.p-swi{display:flex !important; flex-direction:row !important; align-items:center; gap:6px; font-size:12px; color:var(--tx); cursor:pointer; margin:0}
.p-acts{display:flex; justify-content:flex-end; gap:6px}
.btn.rm.primary{background:var(--accent); color:var(--on-accent)}
.pb-h{display:flex; align-items:center; gap:8px}
.pb-h small{font-weight:400; flex:1}
.pb-h .btn{padding:4px 10px; font-size:12px}
#pb-text{width:100%; min-height:320px; resize:vertical; font-family:ui-monospace,Menlo,monospace; font-size:12px; line-height:1.4}
.p-hl{grid-column:1/-1; display:grid; gap:3px; font-size:11px; color:var(--dim); margin:2px 0 0; cursor:default}
.p-hl textarea{font-size:12.5px; padding:6px 8px; background:var(--panel-2); line-height:1.4}

/* Капи: блок «капа не оновлена» (місяць у назві ≠ поточний) + дроплист партнерки */
.scr-h.sub{margin-top:18px}
.cap.stale .c-nm{color:var(--dim)}
.cap-bar.stale-bar{background:repeating-linear-gradient(90deg,var(--panel-2) 0 6px,transparent 6px 10px)}
.cap-flt{margin:-4px 0 10px}
.cap-flt select{background:var(--panel-2); color:var(--tx); border:1px solid var(--line);
  border-radius:8px; padding:5px 8px; font-size:12px; max-width:100%}

/* Розсилка рекламам: список, картка партнера, редактор тексту, стрічка відповідей */
.bc-new{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px}
.bc-row{display:flex; align-items:center; gap:8px; padding:10px 12px; background:var(--panel);
  border:1px solid var(--line); border-radius:12px; margin-bottom:8px; cursor:pointer}
.bc-row b{font-size:13px}
.bc-st{font-style:normal; font-size:11px; margin-left:auto; color:var(--dim)}
.bc-st.approved{color:var(--ok)} .bc-st.sent{color:var(--ok)} .bc-st.error{color:var(--crit)}
.bc-st.skipped{text-decoration:line-through}
.bc-i{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:10px 12px; margin-bottom:8px}
.bc-i.approved{border-color:var(--ok)} .bc-i.skipped{opacity:.5} .bc-i.error{border-color:var(--crit)}
.bc-h{display:flex; align-items:center; gap:8px; margin-bottom:6px}
.bc-h b{font-size:13px}
/* переноси рядків зберігаємо: текст пишеться абзацами і таким іде реклу */
.bc-txt{font-size:12.5px; line-height:1.45; color:var(--tx); cursor:text; white-space:pre-wrap}
.bc-ta{width:100%; background:var(--panel-2); color:var(--tx); border:1px solid var(--line);
  border-radius:8px; padding:8px; font:inherit; font-size:12.5px}
.bc-act{display:flex; gap:6px; margin-top:8px}
.bc-thread{margin-top:8px; border-top:1px solid var(--line); padding-top:8px}
.bc-m{font-size:12px; margin-bottom:6px; white-space:pre-wrap} .bc-m b{display:block; color:var(--dim); font-size:11px}
.bc-m.out{color:var(--dim)}
/* «відправити всім» живе в шапці борда: знизу смуга перекривала текст останньої
   картки, а в кінці довгого списку кнопку не видно (власник 2026-09-24) */
.bc-go{margin-left:auto; align-self:center; white-space:nowrap}
.btn.sm{padding:5px 11px; font-size:12px; border-radius:8px; width:auto}
.bc-own{margin-bottom:12px}
.bc-own textarea{width:100%; background:var(--panel-2); color:var(--tx); border:1px solid var(--line);
  border-radius:10px; padding:9px; font:inherit; font-size:12.5px}
.bc-txt[contenteditable]{outline:none; border-radius:8px; padding:4px 6px; margin:-4px -6px; cursor:text;
  transition:background .12s}
.bc-txt[contenteditable]:hover,.bc-txt[contenteditable]:focus{background:var(--panel-2)}
.bc-txt[contenteditable]:empty:before{content:attr(data-ph); color:var(--dim)}
.bc-txt.dirty{background:var(--panel-2)}
.bc-rep{font-size:11px; color:var(--ok)}
.bc-i.hl{outline:2px solid var(--accent)}
.bc-att{font-style:normal; color:var(--accent-soft)}

/* Попап «Чати рекламодавців» (вхід — кнопка в борді розсилок) */
.pc-list{max-height:52vh; overflow-y:auto; margin-top:10px}
.pc-row{display:flex; align-items:center; gap:8px; padding:8px 0; border-top:1px solid var(--line)}
.pc-row.off{opacity:.5}
.pc-row:first-child{border-top:0}
.pc-t{flex:1 1 auto; min-width:0}
.pc-t b{display:block; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.pc-t i{font-style:normal; font-size:11px; color:var(--dim)}
.pc-row.bad .pc-t i{color:var(--warn)}
.pc-row .pc-sel{flex:0 0 auto; max-width:42%; background:var(--panel-2); color:var(--tx); border:1px solid var(--line);
  border-radius:8px; padding:6px 8px; font-size:12.5px; width:100%}
/* пауза — компактний перемикач ⏸ у тому ж рядку, не окремим блоком */
.pc-mute{flex:0 0 auto; position:relative; width:30px; height:28px; display:grid; place-items:center;
  border:1px solid var(--line); border-radius:8px; background:var(--panel-2); cursor:pointer; margin:0}
.pc-mute input{position:absolute; inset:0; opacity:0; width:100%; height:100%; margin:0; cursor:pointer}
.pc-mute span{font-size:13px; opacity:.45; line-height:1}
.pc-mute input:checked + span{opacity:1; color:var(--warn)}
.bc-i.dup{opacity:.55}
