:root{
  --bg:#000; --bg-2:#0a0a0a; --card:#111111; --card-2:#181818;
  --text:#f5f5f5; --text-2:#a8a8a8; --text-3:#6f6f6f;
  --border:rgba(255,255,255,0.12); --border-2:rgba(255,255,255,0.20);
  --accent:#ff5a1f; --accent-2:#ff8a3d; --accent-soft:rgba(255,90,31,0.14); --accent-glow:rgba(255,90,31,0.4);
  --nav-bg:rgba(0,0,0,0.72); --nav-h:54px; --pop:#151515; --ok:#34d399; --err:#ff5470;
  --shadow:0 20px 60px rgba(0,0,0,0.6); --ease:cubic-bezier(.28,.11,.32,1); --star:255,255,255;
}
:root.light{
  --bg:#f5f5f7; --bg-2:#ececf0; --card:#fff; --card-2:#f4f4f7;
  --text:#0a0a0a; --text-2:#4a4a52; --text-3:#8a8a92;
  --border:rgba(0,0,0,0.12); --border-2:rgba(0,0,0,0.18);
  --nav-bg:rgba(250,250,252,0.72); --pop:#fff; --shadow:0 20px 60px rgba(0,0,0,0.14); --star:15,15,35;
}
/* кастомный скроллбар в стиле сайта — тёмный трек с границей + оранжевый ползунок (обе полосы) */
html{scrollbar-width:thin;scrollbar-color:var(--accent) var(--bg-2)}
::-webkit-scrollbar{width:12px;height:12px}
::-webkit-scrollbar-button{display:none;width:0;height:0}
::-webkit-scrollbar-track{background:var(--bg-2);border-left:1px solid var(--border)}
::-webkit-scrollbar-track:horizontal{border-left:0;border-top:1px solid var(--border)}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--accent-2),var(--accent));border-radius:999px;border:3px solid var(--bg-2);background-clip:padding-box;transition:background .2s}
::-webkit-scrollbar-thumb:hover{background:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-glow)}
::-webkit-scrollbar-thumb:active{background:var(--accent-2)}
::-webkit-scrollbar-corner{background:var(--bg-2)}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--text);font-family:'Inter',system-ui,-apple-system,sans-serif;line-height:1.5;
  -webkit-font-smoothing:antialiased;min-height:100vh;transition:background .4s var(--ease),color .4s var(--ease)}
a{color:inherit;text-decoration:none}
#skycanvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:100;background:var(--nav-bg);
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--border)}
.nav-inner{max-width:1120px;margin:0 auto;height:100%;padding:0 22px;display:flex;align-items:center;gap:16px}
/* Логотип — только надпись «LavaTraffic» на Inter, как весь сайт. Два веса вместо разрядки:
   «Lava» акцентным, «Traffic» — светлым текстовым.
   Символы 𝐋𝐚𝐯𝐚 (юникод-псевдошрифт) не ставим: их нет в Inter, на части устройств вместо букв
   квадраты, плюс ломается поиск по странице, копирование и озвучка для незрячих. */
.brand{color:var(--accent);text-decoration:none}
.brand-word{font-weight:800;font-size:18px;line-height:1;letter-spacing:-.01em;white-space:nowrap}
.brand-word-t{font-weight:600;color:var(--text)}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:11px}
.lang{display:flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}
.lang button{background:transparent;border:0;color:var(--text-3);font:600 11px/1 'Inter';padding:6px 9px;cursor:pointer}
.lang button.on{background:var(--accent-soft);color:var(--accent)}
.icon-btn{width:33px;height:33px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--text-2);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:.2s}
.icon-btn:hover{border-color:var(--accent);color:var(--accent)}
.btn{font-family:inherit;font-weight:600;font-size:14px;border-radius:999px;padding:11px 20px;cursor:pointer;border:1px solid transparent;transition:.22s var(--ease);white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn-sm{padding:8px 15px;font-size:13px}
.btn-primary{background:var(--accent);color:#fff;box-shadow:0 8px 24px var(--accent-glow)}
.btn-primary:hover:not(:disabled){background:var(--accent-2);transform:translateY(-2px)}
/* заблокированная кнопка должна ВЫГЛЯДЕТЬ заблокированной, иначе юзер жмёт в пустоту */
.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}
.btn-ghost{background:transparent;color:var(--text);border-color:var(--border-2)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.main{position:relative;z-index:1;padding-top:var(--nav-h)}
.muted{color:var(--text-2)}
.eyebrow{font-size:12.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}

/* auth */
.auth-wrap{min-height:calc(100vh - var(--nav-h));display:flex;align-items:center;justify-content:center;padding:40px 22px}
.auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--border-2);border-radius:22px;padding:38px 34px;box-shadow:var(--shadow)}
.auth-card h1{font-size:30px;font-weight:900;letter-spacing:-.02em}
.auth-card>.muted{margin:6px 0 22px;font-size:15px}
.form{display:flex;flex-direction:column;gap:16px}
.form label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--text-2);font-weight:600}
.form input{background:var(--bg-2);border:1px solid var(--border);color:var(--text);border-radius:12px;padding:13px 14px;font-family:inherit;font-size:15px;transition:.2s}
.form input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.form .btn{margin-top:6px;padding:14px}
.auth-alt{margin-top:20px;text-align:center;font-size:14px;color:var(--text-2)}
.auth-alt a{color:var(--accent);font-weight:600}
.alert{background:rgba(255,84,112,.12);border:1px solid rgba(255,84,112,.4);color:var(--err);border-radius:12px;padding:12px 14px;font-size:13.5px;margin-bottom:18px}

/* dashboard */
.dash{max-width:1000px;margin:0 auto;padding:60px 22px}
.dash h1{font-size:clamp(30px,5vw,46px);font-weight:900;letter-spacing:-.02em}
.dash>.muted{font-size:16px;margin-top:8px}
.role-pill{display:inline-block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);background:var(--accent-soft);padding:4px 11px;border-radius:999px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:36px 0}
.tile{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:24px;transition:.3s var(--ease)}
.tile:hover{border-color:var(--border-2);transform:translateY(-3px)}
.tile .ic{width:44px;height:44px;border-radius:12px;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px}
.tile h3{font-size:17px;margin-bottom:6px}.tile p{color:var(--text-2);font-size:13.5px}
.tile.soon{opacity:.6}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}

/* admin table */
.tbl{width:100%;border-collapse:collapse;margin-top:24px;background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden}
.tbl th,.tbl td{text-align:left;padding:13px 16px;font-size:14px;border-bottom:1px solid var(--border)}
.tbl th{color:var(--text-3);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.tbl tr:last-child td{border-bottom:0}
.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}
.badge.admin{color:var(--accent);background:var(--accent-soft)}
.badge.user{color:var(--text-2);background:var(--card-2)}

.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);background:var(--pop);color:var(--text);border:1px solid var(--border-2);border-radius:12px;padding:12px 18px;font-size:14px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.3s var(--ease);z-index:1000}
.toast.show{opacity:1;transform:translateX(-50%)}

/* impersonation banner */
.imp-banner{position:relative;z-index:2;background:var(--accent-soft);border-bottom:1px solid var(--accent);color:var(--text);text-align:center;padding:9px 16px;font-size:13.5px}
.imp-banner a{color:var(--accent);font-weight:700;margin-left:4px}
.acc-strip{position:relative;z-index:2;background:var(--card-2);border-bottom:1px solid var(--border);color:var(--text-2);text-align:center;padding:8px 16px;font-size:13px}
.acc-strip a{color:var(--accent);font-weight:700;margin-left:4px;white-space:nowrap}
.acc-strip.ok{background:rgba(52,211,153,.10);border-bottom-color:rgba(52,211,153,.4);color:var(--text)}
.acc-strip.warn{background:rgba(255,84,112,.10);border-bottom-color:var(--err);color:var(--text)}

/* messages */
.ok-msg{background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.4);color:var(--ok);border-radius:12px;padding:12px 14px;font-size:13.5px;margin-bottom:16px}
.note{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:12px;padding:14px 16px;font-size:14px;color:var(--text-2);margin:22px 0 8px;line-height:1.55}
.form-inline{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 8px}
.form-inline input{background:var(--bg-2);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:11px 13px;font-family:inherit;font-size:14px;flex:1;min-width:160px}
.form-inline input:focus{outline:none;border-color:var(--accent)}
a.tile{text-decoration:none;color:inherit}

/* module settings form (Реактор и др.) — Inter, скруглённый, стиль Аккаунтов */
.set-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px 22px;margin-top:18px}
.set-card h3{font-size:15px;font-weight:700;margin-bottom:14px}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--border)}
.set-row:last-child{border-bottom:none}
.set-label{font-size:14px;color:var(--text)}
.set-hint{font-size:12.5px;color:var(--text-3)}
.tgl{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.tgl input{opacity:0;width:0;height:0;position:absolute}
.tgl-track{position:absolute;inset:0;background:var(--bg-2);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:.2s}
.tgl-track::before{content:"";position:absolute;width:16px;height:16px;left:3px;top:50%;transform:translateY(-50%);background:var(--text-3);border-radius:50%;transition:.2s}
.tgl input:checked + .tgl-track{background:var(--accent-soft);border-color:var(--accent)}
.tgl input:checked + .tgl-track::before{transform:translate(20px,-50%);background:var(--accent)}
/* заблокированный тумблер (родительский бот выключен): серый и некликабельный, позиция knob сохраняется */
.tgl-locked{pointer-events:none;opacity:.6}
.tgl-locked .tgl-track{cursor:default;background:var(--bg-2)!important;border-color:var(--border)!important}
.tgl-locked input:checked + .tgl-track::before{background:var(--text-3)!important}
.iseg{display:inline-flex;background:var(--bg-2);border:1px solid var(--border);border-radius:11px;padding:3px;gap:3px;flex-wrap:wrap}
.iseg button{background:transparent;border:none;color:var(--text-2);border-radius:8px;padding:8px 15px;font:inherit;font-size:13px;cursor:pointer;transition:.15s}
.iseg button.on{background:var(--accent-soft);color:var(--accent)}
.finp{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;width:100%}
.finp:focus{outline:none;border-color:var(--accent)}
textarea.finp{resize:vertical;line-height:1.5}
/* Свой выпадающий список (window.LavaSelect) — замена нативному <select>, которого в интерфейсе
   нет нигде. Раскрывается В ПОТОКЕ, а не поверх: внутри модалки с прокруткой всплывающий список
   срезало бы краем окна, а на телефоне браузер открыл бы своё системное колесо. */
.lsel{position:relative;display:block;min-width:0}
.lsel-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14px;line-height:1.35;text-align:left;cursor:pointer;transition:.15s}
.lsel-btn:hover{border-color:var(--border-2)}
.lsel.open .lsel-btn{border-color:var(--accent)}
.lsel-cur{min-width:0;overflow-wrap:anywhere}
.lsel-caret{flex:0 0 auto;color:var(--text-3);font-size:11px;transition:transform .18s}
.lsel.open .lsel-caret{transform:rotate(180deg)}
.lsel-menu{display:flex;flex-direction:column;gap:2px;margin-top:6px;padding:4px;
  border:1px solid var(--border);border-radius:10px;background:var(--card-2);
  max-height:248px;overflow-y:auto}
.lsel-menu[hidden]{display:none}
.lsel-i{background:transparent;border:0;color:var(--text-2);border-radius:8px;padding:9px 11px;
  font:inherit;font-size:13.5px;line-height:1.35;text-align:left;cursor:pointer;transition:.12s}
.lsel-i:hover{background:var(--bg-2);color:var(--text)}
.lsel-i.on{background:var(--accent-soft);color:var(--accent)}
.lsel-sep{height:1px;flex:0 0 1px;background:var(--border);margin:5px 3px}
.mm-set{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;flex-wrap:wrap}
.mm-inputs{display:flex;align-items:center;gap:10px}
.finp.num{width:82px;text-align:center}
.rx-pool{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.rx-chip{display:inline-flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:7px 12px;font-size:19px}
.rx-chip button{background:transparent;border:none;color:var(--text-3);cursor:pointer;font-size:12px}
.rx-chip button:hover{color:#ff6b6b}
.rx-add{display:flex;align-items:center;gap:10px;margin-top:16px}
.acc-checks{display:flex;flex-direction:column;gap:2px}
.acc-check{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:14px;color:var(--text);cursor:pointer}
.acc-check input{width:16px;height:16px;accent-color:var(--accent)}
.rx-run{margin-top:18px}

/* account selector widget (разворачивающееся меню + группы) */
.asel{border:1px solid var(--border);border-radius:12px;background:var(--card);overflow:hidden}
.asel-head{width:100%;display:flex;align-items:center;gap:10px;background:transparent;border:none;color:var(--text);padding:13px 16px;font:inherit;font-size:14px;cursor:pointer}
.asel-title{font-weight:600}
.asel-count{margin-left:auto;color:var(--text-3);font-size:13px}
.asel-arr{color:var(--text-3);transition:transform .2s}
.asel.open .asel-arr{transform:rotate(180deg)}
.asel-body{display:none;padding:0 12px 12px;border-top:1px solid var(--border)}
.asel.open .asel-body{display:block}
.asel-groups{display:flex;flex-wrap:wrap;gap:8px;padding:12px 4px}
.asg-chip{background:var(--bg-2);border:1px solid var(--border);color:var(--text-2);border-radius:999px;padding:6px 13px;font:inherit;font-size:12.5px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px}
.asg-chip:hover{color:var(--text)}
.asg-chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.asg-n{opacity:.7;font-size:11px}
.asel-list{display:flex;flex-direction:column;max-height:280px;overflow-y:auto}
.asel-row{display:flex;align-items:center;gap:11px;padding:10px 4px;cursor:pointer;border-bottom:1px solid var(--border);font-size:14px;color:var(--text-2)}
.asel-row:last-child{border-bottom:none}
.asel-bullet{width:16px;height:16px;border:2px solid var(--text-3);border-radius:50%;flex-shrink:0;position:relative;transition:.15s}
.asel-row.on{color:var(--text)}
.asel-row.on .asel-bullet{border-color:var(--accent)}
.asel-row.on .asel-bullet::after{content:"";position:absolute;inset:2px;background:var(--accent);border-radius:50%;box-shadow:0 0 6px var(--accent)}
.asel-name{flex:1;min-width:0}
.asel-empty{padding:16px 4px;color:var(--text-3);font-size:13px}
/* Аккаунт вне лимита тарифа: серый и некликабельный. Не «ошибка» и не «бан» — поэтому без красного. */
.asel-row.frozen{opacity:.42;filter:grayscale(1);cursor:not-allowed}
.asel-row.frozen .asel-bullet{border-style:dashed}
.asel-lock{font-size:11px;color:var(--text-3);white-space:nowrap}
.asel-busy{font-size:10.5px;font-weight:700;color:#ffb36b;background:rgba(255,145,55,.12);border:1px solid rgba(255,145,55,.42);border-radius:999px;padding:3px 8px;white-space:nowrap}
.asel-busy-note{padding:10px 4px 2px;color:var(--text-3);font-size:12px;line-height:1.45;border-top:1px solid var(--border);margin-top:4px}
.asel-frozen{padding:10px 4px 2px;color:var(--text-3);font-size:12px;line-height:1.45;border-top:1px solid var(--border);margin-top:4px}
.asel-actions{display:flex;gap:8px;padding:12px 4px 4px;border-top:1px solid var(--border);margin-top:4px}
.asel-mini{background:transparent;border:1px solid var(--border);color:var(--text-2);border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer}
.asel-mini:hover{border-color:var(--accent);color:var(--text)}
.grp-list{margin-top:14px;display:flex;flex-direction:column}
.grp-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--border)}
.grp-row:last-child{border-bottom:none}
.grp-name{font-weight:600;flex:1}
.scn-block{border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px;background:var(--bg-2)}
.scn-block-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-weight:600;font-size:14px}
.scn-opt{display:flex;align-items:center;gap:9px;margin-top:12px;font-size:13.5px;color:var(--text-2);cursor:pointer}
.scn-opt input{width:16px;height:16px;accent-color:var(--accent)}
.scn-sub{margin-top:8px;padding-left:25px}
.wl-balance{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px 26px;margin-bottom:18px}
.wl-balance-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}
.wl-balance-amt{font-size:40px;font-weight:800;color:var(--text);margin-top:6px}
.wl-earned{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:13.5px;color:var(--text-2)}
.wl-earned b{color:var(--ok)}
.wl-earned-link{margin-left:8px;color:var(--accent);font-weight:600;white-space:nowrap}
.wl-list{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.wl-tx{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-bottom:1px solid var(--border)}
.wl-tx:last-child{border-bottom:none}
.wl-tx-note{font-size:14px;color:var(--text)}
.wl-tx-amt{font-weight:700;font-size:15px}
.wl-tx-amt.pos{color:var(--ok)}
.wl-tx-amt.neg{color:var(--text-2)}
.lg-list{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin-top:4px}
.lg-row{display:flex;align-items:flex-start;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border)}
.lg-row:last-child{border-bottom:none}
.lg-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0;background:var(--text-3)}
.lg-dot.user{background:#9aa0ff}.lg-dot.wallet{background:var(--ok)}.lg-dot.account{background:var(--accent)}
.lg-body{flex:1;min-width:0;font-size:14px;color:var(--text)}
.cm-ready{margin:8px 0 12px;font-size:13.5px;color:var(--text-2)}
.cm-ready b{color:var(--accent);font-weight:600}
.cm-scn-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.cm-scn-run{border:1px solid var(--border);border-radius:12px;background:var(--card-2);margin-top:9px;overflow:hidden;transition:border-color .15s}
.cm-scn-run.selected{border-color:var(--accent)}
.cm-scn-head{display:flex;align-items:center;gap:9px;padding:11px 12px;flex-wrap:wrap}
.cm-scn-select{display:inline-flex;align-items:center;gap:8px;flex:1;min-width:180px;background:transparent;border:0;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.cm-scn-accounts{font-size:11.5px;color:var(--text-3);white-space:nowrap}
.cm-scn-run .mc-console{border-top:1px solid var(--border);border-radius:0;margin:0}
.cm-scn-run .mc-log{max-height:190px}
.cm-legacy{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin:8px 0;border:1px solid rgba(255,145,55,.42);border-radius:10px;background:rgba(255,145,55,.10);font-size:12.5px}
.cm-prompt-input{width:100%;margin-top:10px}
.cm-aiswitch{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600}
.cm-aiswitch input{width:18px;height:18px;cursor:pointer;flex:0 0 auto}
.set-card h3 code,.cm-aiswitch code{font-size:.9em;background:rgba(127,127,127,.16);padding:1px 5px;border-radius:5px}
/* Завершённые диалоги (разворачивающаяся кнопка в блоке Allowed Users) */
.cm-compl-btn::before{content:"▾";display:inline-block;margin-right:6px;transition:transform .2s}
.cm-compl-btn.open::before{transform:rotate(180deg)}
.cm-compl-cnt{color:var(--text-3);font-weight:500;font-size:12px}
.cm-compl-list{max-height:240px;overflow-y:auto;border:1px solid rgba(127,127,127,.18);border-radius:8px}
.cm-compl-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-bottom:1px solid rgba(127,127,127,.1);font-size:13px}
.cm-compl-row:last-child{border-bottom:none}
.cm-compl-u{font-weight:600}
.cm-compl-id{color:var(--text-3);font-size:12px}
.cm-compl-ts{margin-left:auto;color:var(--text-3);font-size:12px;white-space:nowrap}
/* ── Кошелёк: магазин тарифов/модулей ── */
.wl-shop-h{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.wl-shop-h h3{margin:0}
.wl-pertabs{display:inline-flex;background:var(--bg-2,rgba(127,127,127,.1));border:1px solid var(--border);border-radius:10px;padding:3px}
.wl-per{border:none;background:transparent;color:var(--text-2);font-size:13px;font-weight:600;padding:6px 12px;border-radius:8px;cursor:pointer}
.wl-per.active{background:var(--card);color:var(--text);box-shadow:var(--shadow)}
.wl-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.wl-plan{border:1px solid var(--border);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:6px;background:var(--bg,transparent)}
.wl-plan.mine{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.wl-plan-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.wl-plan-name{font-size:16px;font-weight:800;color:var(--text)}
.wl-badge{font-size:11px;font-weight:700;color:var(--accent);background:rgba(127,127,255,.14);padding:2px 8px;border-radius:20px;white-space:nowrap}
.wl-plan-price{font-size:24px;font-weight:800;color:var(--text)}
.wl-feats{list-style:none;padding:0;margin:6px 0 12px;display:flex;flex-direction:column;gap:5px;flex:1}
.wl-feats li{font-size:13px;color:var(--text-2);padding-left:18px;position:relative}
.wl-feats li::before{content:"✓";position:absolute;left:0;color:var(--ok);font-weight:700}
.wl-mods{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-top:8px}
.wl-mod{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border)}
.wl-mod:last-child{border-bottom:none}
.wl-mod-name{font-size:14px;font-weight:600;color:var(--text)}
.wl-mod .wl-buy{flex:0 0 auto;min-width:96px}
@media(max-width:720px){.wl-plans{grid-template-columns:1fr}}
/* ── Кабинет БД-менеджера: строки инфлюенсеров ── */
.mgr-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-top:8px}
.mgr-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--border)}
.mgr-row:last-child{border-bottom:none}
.mgr-ctrls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mgr-f{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2)}
.mgr-f .finp{padding:6px 8px}
.mgr-ovr{width:100%;font-size:12px;color:var(--accent);margin-top:2px}
.mgr-ovr b{color:var(--accent)}
.mgr-create{display:flex;flex-direction:column;gap:2px}
/* ── Редактор условий: плашка режимов + ползунки ── */
.terms-ed{display:flex;flex-direction:column;gap:8px;width:100%}
.seg{display:inline-flex;background:rgba(127,127,127,.12);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px;align-self:flex-start;flex-wrap:wrap}
.seg-b{border:none;background:transparent;color:var(--text-2);font:inherit;font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:8px;cursor:pointer;white-space:nowrap}
.seg-b.on{background:var(--card);color:var(--accent);box-shadow:var(--shadow)}
.ted-fields{display:flex;flex-direction:column;gap:8px}
.slrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.slrow-lbl{font-size:12.5px;color:var(--text-2);min-width:70px}
.slrow-unit{font-size:12.5px;color:var(--text-3)}
.slider{flex:1;min-width:120px;accent-color:var(--accent);height:4px;cursor:pointer}
.slnum{max-width:82px;text-align:center}
textarea.finp{resize:vertical;min-height:64px}
.mgr-row .rev-form{width:100%}
.mgr-row .ref-link-row{display:flex;gap:8px;width:100%}
/* ── Админка: модалка управления пользователем ── */
.btn-danger{background:transparent;color:#e5484d;border:1px solid #e5484d}
.btn-danger:hover{background:#e5484d;color:#fff}
.au-ov{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}
.au-modal{background:var(--card);border:1px solid var(--border);border-radius:16px;width:min(680px,96vw);box-shadow:var(--shadow);overflow:hidden}
.au-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}
.au-head b{font-size:15px}
.au-x{background:transparent;border:none;color:var(--text-3);font-size:18px;cursor:pointer;line-height:1}
.au-x:hover{color:var(--text)}
.au-tabs{display:flex;gap:4px;padding:10px 16px 0;border-bottom:1px solid var(--border);flex-wrap:wrap;overflow-x:auto}
.au-tab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-2);font:inherit;font-size:13px;font-weight:600;padding:9px 12px;cursor:pointer;white-space:nowrap}
.au-tab:hover{color:var(--text)}
.au-tab.on{color:var(--accent);border-bottom-color:var(--accent)}
.au-body{padding:20px}
.au-pane{display:none}
.au-pane.on{display:block}
.au-cur{font-size:13.5px;color:var(--text-2);margin-bottom:14px}
.au-cur b{color:var(--text)}
.au-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.au-actions form{margin:0}
.au-form{display:flex;flex-direction:column;gap:12px}
.au-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.au-field{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--text-2)}
.au-field input,.au-field select,.au-form input[type=text],.au-form input[type=number],.au-form select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--card-2,transparent);color:var(--text);font:inherit;font-size:13px}
.au-chk{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text-2);cursor:pointer}
.au-chk.big{font-weight:600;color:var(--text)}
.au-chk input{flex:0 0 auto}
.au-mgrbox{border:1px solid var(--border);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:12px}
.au-sub{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--text-3);text-transform:uppercase;margin-top:2px}
.au-caprow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.au-bounds{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);flex-wrap:wrap}
.au-bounds input{width:60px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--card-2,transparent);color:var(--text);font:inherit}
/* ── Telegram Web: имена авторов, профиль, комментарии, поиск по ссылке ── */
.tgw-who{display:block;background:none;border:none;padding:0 0 3px;color:var(--accent);font:inherit;font-size:12.5px;font-weight:650;cursor:pointer;text-align:left}
.tgw-who:hover{text-decoration:underline}
.tgw-com{display:block;margin-top:6px;background:none;border:none;padding:0;color:var(--accent);font:inherit;font-size:12px;cursor:pointer}
.tgw-com:hover{text-decoration:underline}
.tgw-openprof{background:none;border:none;padding:0;text-align:left;cursor:pointer;flex:1;min-width:0;font:inherit;color:inherit}
.tgw-openprof:hover .tgw-conv-name{text-decoration:underline}
.tgw-find{display:block;width:100%;text-align:left;margin:0 0 8px;padding:11px 12px;border:1px dashed var(--border);border-radius:12px;background:var(--card-2);color:var(--text-2);font:inherit;font-size:13px;cursor:pointer}
.tgw-find:hover{border-color:var(--accent);color:var(--text)}
.tgw-prof-load{padding:18px;text-align:center;color:var(--text-3);font-size:13px}
.tgw-prof-top{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.tgw-prof-name{font-size:17px;font-weight:750}
.tgw-prof-ver{color:var(--accent)}
.tgw-prof-rows{display:flex;flex-direction:column;gap:6px}
.tgw-prof-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--text-2)}
.tgw-prof-about{margin-top:12px;padding:10px 12px;background:var(--card-2);border:1px solid var(--border);border-radius:10px;font-size:13px;line-height:1.5;white-space:pre-wrap}
.tgw-prof-links{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.tgw-prof-links a{font-size:12.5px;color:var(--accent);word-break:break-all}
.tgw-thread .bm-body{display:flex;flex-direction:column;gap:0;padding:0}
.tgw-thread-msgs{max-height:min(52vh,460px);overflow-y:auto;padding:12px}

/* ── Настройки: способы входа ── */
.idn-h{margin-top:36px;font-size:20px;font-weight:800}
.idn-list{display:flex;flex-direction:column;gap:8px}
.idn-row{display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--card)}
.idn-ic{width:34px;height:34px;flex:0 0 auto;border-radius:50%;background:var(--card-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:15px}
.idn-main{flex:1;min-width:0}
.idn-name{font-weight:650;font-size:14px}
.idn-row form{margin:0}
.idn-callout{margin-top:18px;padding:14px 16px;border:1px solid var(--accent);border-radius:12px;background:var(--card-2)}
.idn-callout p{margin:6px 0 0;font-size:13px;color:var(--text-2);line-height:1.5}

/* ── Кошелёк: блок «бот + промокод» ── */
.wl-bot{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.wl-botlink{flex:1;min-width:180px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:var(--card-2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl-note{margin-top:10px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--card-2);font-size:12.5px;color:var(--text-2)}
.wl-redeem-msg{margin-top:8px;min-height:16px}
.wl-redeem-msg.bad{color:#e5484d}

/* ── Окно «Управление аккаунтом» (acc_manage.js) ── */
.am-ov .au-modal{width:min(880px,96vw)}
.am-head-act{display:flex;gap:8px;align-items:center}
.am-load,.am-fail,.am-note{padding:14px;border:1px solid var(--border);border-radius:12px;color:var(--text-2);font-size:13.5px}
.am-fail{border-color:#e5484d55;color:#e5484d}
.am-note{background:var(--card-2);margin:10px 0}
.am-grow{flex:1}
.am-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.am-actions{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}
.am-sec{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}
.am-chk{flex-direction:row;align-items:center;gap:8px}
/* профиль в стиле Telegram: круглый аватар слева, факты справа */
.am-prof{display:flex;gap:18px;align-items:flex-start}
.am-ava-col{display:flex;flex-direction:column;align-items:center;gap:8px;flex:0 0 auto;width:118px}
.am-ava-btn{width:100%;justify-content:center}
.am-ava-note{text-align:center;word-break:break-word}
.am-linkbtn{background:none;border:none;padding:0;color:var(--text-3);font:inherit;font-size:12px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.am-linkbtn:hover{color:#e5484d}
.am-ava{width:96px;height:96px;border-radius:50%;object-fit:cover;border:1px solid var(--border);background:var(--card-2);flex:0 0 auto}
.am-ava-ph{display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:700;color:var(--text-2)}
.am-prof-info{min-width:0;flex:1}
.am-name{font-size:19px;font-weight:700;margin-bottom:8px;word-break:break-word}
.am-prem{font-size:12px;color:var(--accent);font-weight:600;vertical-align:middle}
.am-rows{display:flex;flex-direction:column;gap:6px}
.am-row{display:flex;gap:12px;font-size:13.5px}
.am-row-k{color:var(--text-3);min-width:132px;flex:0 0 auto}
/* список сессий/устройств */
.am-list{display:flex;flex-direction:column;gap:8px}
.am-item{display:flex;gap:12px;align-items:center;border:1px solid var(--border);border-radius:12px;padding:10px 12px}
.am-item.cur{border-color:var(--accent)}
/* истории */
.am-stories{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:10px}
.am-story{position:relative;aspect-ratio:9/16;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:var(--card-2)}
.am-story img{width:100%;height:100%;object-fit:cover;display:block}
.am-story-act{position:absolute;top:6px;right:6px;display:flex;gap:4px}
.am-sbtn{border:none;border-radius:8px;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;font-size:12px;padding:4px 6px;line-height:1}
.am-sbtn.danger:hover{background:#e5484d}
.am-story-cap{position:absolute;left:0;right:0;bottom:0;padding:6px 8px;font-size:11.5px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.75))}
/* приватность: строка «что видно» + выбор кому */
.am-priv{display:flex;flex-direction:column;gap:8px}
.am-priv-row{display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:12px;padding:10px 12px;flex-wrap:wrap}
.am-priv-l{flex:1;min-width:170px;display:flex;flex-direction:column;gap:2px;font-size:13.5px}
.am-priv-sel{max-width:190px;flex:0 0 auto}

/* 2FA и опасная зона */
.am-pwrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.am-pw{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--card-2);border:1px solid var(--border);border-radius:8px;padding:6px 10px}
.am-pwrow .finp{flex:1;min-width:140px}
/* строка «поле + кнопка действия»: кнопка фиксированной ширины, поле тянется */
.am-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.am-inline .finp{flex:1;min-width:150px}
.am-fixw{min-width:112px;justify-content:center;white-space:nowrap}
.am-at{color:var(--text-3);font-size:15px}
.am-hint{margin-top:6px;min-height:16px}
/* вложенный блок со своей кнопкой — визуально отделён от полей, которые сохраняются вместе */
.am-inset{background:var(--card-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:14px 0}
.am-good{color:#30a46c}
.am-bad{color:#e5484d}
.am-armed{color:#e5484d!important;font-weight:600}
@media (max-width:560px){
  .am-prof{gap:12px}
  .am-ava-col{width:104px}
  .am-ava{width:80px;height:80px}
  .am-row-k{min-width:104px}
}
.am-danger{border:1px solid #e5484d33;border-radius:12px;padding:12px;margin-top:16px}
.am-extra{margin-top:12px}
.am-extra pre{background:var(--card-2);border:1px solid var(--border);border-radius:10px;padding:10px;overflow:auto;font-size:12px;max-height:220px}

/* ── Аудит-журнал: долгое нажатие по строке пользователя ── */
.tbl tbody tr[data-owner]{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:background .12s}
.tbl tbody tr[data-owner]:hover{background:rgba(127,127,127,.08)}
.au-rowmenu{position:fixed;z-index:1200;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:12px;display:flex;flex-direction:column;gap:8px;max-width:min(320px,92vw)}
.au-rowmenu-h{font-size:12.5px;color:var(--text-2);word-break:break-all}
/* ── Реф-настройки: подписанные поля ── */
.rs-form{display:flex;flex-direction:column;gap:14px;max-width:720px}
.rs-check{display:inline-flex;align-items:flex-start;gap:8px;font-size:13.5px;color:var(--text-2);cursor:pointer}
.rs-check input{margin-top:2px;flex:0 0 auto}
.rs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.rs-field{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-2)}
.rs-field input,.rs-field select{padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--card-2,transparent);color:var(--text);font:inherit;font-size:13px}
.rs-range{display:flex;align-items:center;gap:6px}
.rs-range input{max-width:80px}
/* ── Главная: строка-обзор + лента переписок + модалка-вьюер ── */
.home-ov{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 26px}
.ov-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.ov-ic{font-size:18px;opacity:.9}
.ov-v{font-size:22px;font-weight:700;color:var(--text);line-height:1.1}
.ov-l{font-size:12px;color:var(--text-3)}
.home-feed-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.home-feed-head h2{margin:0}
.home-tools-h{margin:30px 0 12px}
.home-chats{max-height:none;gap:8px}
.home-chats .tgw-chat{cursor:pointer}
.home-cacct{margin-top:2px}
.tgw-cname-wrap{display:inline-flex;align-items:center;gap:7px;min-width:0}
.home-niche{flex:0 0 auto;font-size:11px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 8px;white-space:nowrap}
.tgw-folder.niche.on{color:var(--accent);border-color:var(--accent)}
.home-modal{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px}
.home-modal-box{background:var(--card);border:1px solid var(--border);border-radius:18px;width:min(560px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow)}
.home-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}
.home-modal-x{background:none;border:none;color:var(--text-2);font-size:18px;cursor:pointer;padding:4px 8px;border-radius:8px}
.home-modal-x:hover{background:var(--card-2);color:var(--text)}
.home-modal-msgs{padding:16px;overflow-y:auto;flex:1;min-height:120px}
@media(max-width:720px){.home-ov{grid-template-columns:repeat(2,1fr)}}
/* ── Модалка подтверждения очистки памяти модуля ── */
.mc-modal{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px}
.mc-modal-box{background:var(--card);border:1px solid var(--border);border-radius:16px;width:min(440px,94vw);padding:20px;box-shadow:var(--shadow)}
.mc-modal-msg{font-size:14px;color:var(--text-2);line-height:1.5}
.mc-modal-msg b{color:var(--text)}
.mc-modal-ai{display:flex;align-items:flex-start;gap:8px;margin:14px 0 0;font-size:13px;color:var(--text-2);cursor:pointer}
.mc-modal-ai input{margin-top:2px;flex:0 0 auto}
.mc-modal-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
/* полоса «Очистить память» в самом конце раздела */
.mc-clearbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:32px 0 4px;padding-top:16px;border-top:1px solid var(--border)}
.mc-clearbar .mc-clear{color:var(--err);border-color:transparent}
.mc-clearbar .mc-clear:hover:not(:disabled){border-color:var(--err)}
.mc-clearbar-hint{font-size:12px;color:var(--text-3);flex:1;min-width:180px}
.iseg-dot .seg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--text-3);margin-right:7px;vertical-align:middle;transition:.2s}
.iseg-dot button.on .seg-dot{background:var(--accent);box-shadow:0 0 7px var(--accent)}
.sb-help-btn.mini{width:18px;height:18px;font-size:11px}
.mm-sep{color:var(--text-3);padding:0 3px}
.mm-unit{color:var(--text-3);font-size:12px;margin-left:5px}
.mc{margin-bottom:18px}
.mc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 18px}
.mc-status{display:flex;align-items:center;gap:9px}
.mc-dot{width:9px;height:9px;border-radius:50%;background:var(--text-3);transition:.2s}
.mc-dot.on{background:var(--ok);box-shadow:0 0 8px var(--ok)}
.mc-dot.on.warn{background:#e6a23c;box-shadow:0 0 8px #e6a23c}
.mc-stxt{font-size:14px;color:var(--text-2);font-weight:500}
.mc-btns{display:flex;gap:8px}
.mc-console{margin-top:10px;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.mc-console>summary{padding:12px 18px;cursor:pointer;font-size:13px;color:var(--text-2);user-select:none;list-style:none}
.mc-console>summary::-webkit-details-marker{display:none}
.mc-console[open]>summary{border-bottom:1px solid var(--border)}
.mc-log{max-height:260px;overflow-y:auto;padding:12px 18px;font-family:"DM Mono",ui-monospace,monospace;font-size:12.5px;line-height:1.6;color:var(--text-2)}
.mc-line{white-space:pre-wrap;word-break:break-word}
.mc-ts{color:var(--text-3);margin-right:8px}
.mc-empty{color:var(--text-3)}
.base-sel{display:flex;flex-direction:column;gap:12px}
.base-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.base-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--border);border-radius:999px;background:var(--card-2);color:var(--text-2);font-size:13px;cursor:pointer;transition:.15s}
.base-chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.base-chip .base-tag{font-size:11px;color:var(--text-3);border:1px solid var(--border);border-radius:6px;padding:1px 6px}
.base-chip .base-n{background:var(--bg-2);border-radius:999px;padding:1px 7px;font-size:11px}
.base-chip .base-edit{opacity:.55;padding-left:2px}
.base-chip .base-edit:hover{opacity:1;color:var(--accent)}
.base-new{padding:7px 12px;border:1px dashed var(--border);border-radius:999px;background:transparent;color:var(--text-2);font-size:13px;cursor:pointer;transition:.15s}
.base-new:hover{border-color:var(--accent);color:var(--accent)}
.bm-ov{position:fixed;inset:0;z-index:11000;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:20px}
.bm-modal{background:var(--bg-2);border:1px solid var(--border);border-radius:18px;width:100%;max-width:520px;max-height:92vh;overflow:auto;display:flex;flex-direction:column}
.bm-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}
.bm-head h3{margin:0;font-size:17px}
.bm-x{background:transparent;border:0;color:var(--text-3);font-size:18px;cursor:pointer}
.bm-x:hover{color:var(--text)}
.bm-body{padding:18px 22px;display:flex;flex-direction:column;gap:14px}
.bm-fld{display:flex;flex-direction:column;gap:6px}
.bm-fld>span{font-size:13px;color:var(--text-2)}
.bm-foot{display:flex;align-items:center;gap:10px;padding:16px 22px;border-top:1px solid var(--border)}
.btn.danger{color:#ff6a6a}

/* ===== Telegram Web (3-панельный, обе темы) ===== */
.tgw-page{display:flex;flex-direction:column;height:100dvh;padding:24px 32px 20px}
.tgw-head-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px;flex-shrink:0}
.tgw-head-row h1{margin:0}
.tgw-page .eyebrow{display:none}
.tgw-demo-badge{font-size:11px;letter-spacing:.03em;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:5px 12px;white-space:nowrap}
.tgw-app{display:grid;grid-template-columns:74px 300px 1fr;grid-template-rows:minmax(0,1fr);flex:1;min-height:0;border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--card);box-shadow:var(--shadow)}
/* аватар-градиенты (одинаковы в обеих темах) */
.av-g{background:linear-gradient(135deg,#c5ff4d,#8ce619)}
.av-t{background:linear-gradient(135deg,#46d8c5,#2aa898)}
.av-b{background:linear-gradient(135deg,#7aa6ff,#5b7fe0)}
.av-o{background:linear-gradient(135deg,#ff9f7a,#e0735b)}
.av-p{background:linear-gradient(135deg,#c77aff,#9b5be0)}
/* рельса аккаунтов */
.tgw-rail{display:flex;flex-direction:column;align-items:center;gap:14px;padding:16px 0;background:var(--bg-2);border-right:1px solid var(--border);overflow-y:auto;min-height:0}
.tgw-acct{position:relative;width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:#08120e;cursor:pointer;flex-shrink:0;transition:.15s}
.tgw-star-acct{background:var(--accent-soft)!important;color:var(--accent)!important;font-size:22px;border:1px solid var(--accent);margin-bottom:4px}
.tgw-acct.active{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--accent)}
.tgw-acct.active::before{content:"";position:absolute;left:-16px;top:50%;transform:translateY(-50%);width:4px;height:24px;border-radius:3px;background:var(--accent);box-shadow:0 0 10px var(--accent)}
.tgw-acct .nb{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--err);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg-2)}
.tgw-add{width:46px;height:46px;border-radius:14px;border:1.5px dashed var(--border-2);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;margin-top:auto;flex-shrink:0;text-decoration:none;transition:.15s}
.tgw-add:hover{border-color:var(--accent)}
/* список чатов */
.tgw-list{display:flex;flex-direction:column;background:var(--bg-2);border-right:1px solid var(--border);min-width:0;min-height:0}
.tgw-search{display:flex;align-items:center;gap:8px;margin:14px 14px 8px;padding:8px 12px;border-radius:10px;background:var(--card-2);color:var(--text-3)}
.tgw-search input{flex:1;background:transparent;border:0;color:var(--text);font-size:13px;outline:none;font-family:inherit}
.tgw-folders{display:flex;gap:6px;padding:0 12px 8px;overflow-x:auto}
.tgw-folder{white-space:nowrap;padding:5px 11px;border-radius:999px;font-size:12px;color:var(--text-2);cursor:pointer;border:1px solid transparent;background:transparent}
.tgw-folder.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.tgw-folder.imp-tab{font-weight:600}
.tgw-folder.imp-tab.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.tgw-folder-gap{display:inline-block;width:1px;height:16px;background:var(--border);margin:0 3px;vertical-align:middle}
.tgw-chats{flex:1;overflow-y:auto;padding:6px 8px;display:flex;flex-direction:column;gap:2px;min-height:0}
.tgw-chat{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:11px;cursor:pointer;transition:.12s}
.tgw-chat:hover{background:var(--card-2)}
.tgw-chat.active{background:var(--accent-soft)}
.tgw-av{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#08120e;flex-shrink:0}
.tgw-cmeta{flex:1;min-width:0}
.tgw-crow{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.tgw-cname{font-weight:700;font-size:14px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tgw-ctime{font-size:10.5px;color:var(--text-3);flex-shrink:0}
.tgw-cmsg{font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.tgw-cbadge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tgw-cempty{padding:34px 20px;text-align:center;color:var(--text-3);font-size:13px;line-height:1.6}
/* панель переписки */
.tgw-conv{display:flex;flex-direction:column;background:var(--bg);min-width:0;min-height:0}
.tgw-conv-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-3);font-size:14px;text-align:center;padding:30px}
.tgw-conv-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;border-bottom:1px solid var(--border)}
.tgw-back{display:none;background:transparent;border:0;color:var(--text-2);font-size:20px;cursor:pointer;padding:0 4px}
.tgw-conv-name{font-weight:700;font-size:14.5px;color:var(--text)}
.tgw-conv-status{font-size:11.5px;color:var(--ok)}
.tgw-conv-status.manual{color:var(--accent)}
.tgw-conv-actions{margin-left:auto;display:flex;align-items:center;gap:4px}
.tgw-ico{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--text-2);cursor:pointer;font-size:15px;transition:.12s;background:transparent;border:0}
.tgw-ico:hover{background:var(--card-2);color:var(--text)}
.tgw-ico.on{color:var(--accent);background:var(--accent-soft)}
.tgw-conv-meta{min-width:120px;flex:1}
.tgw-conv-tools{display:flex;flex-wrap:wrap;gap:6px;flex-shrink:0}
.tgw-tool{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:10px;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);cursor:pointer;font-size:12px;font-weight:500;white-space:nowrap;transition:.12s;font-family:inherit}
.tgw-tool b{font-size:14px;font-weight:400;line-height:1}
.tgw-tool:hover{color:var(--text);border-color:var(--accent)}
.tgw-tool.on{color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-2));border-color:transparent}
.tgw-notify-choice{display:flex;align-items:flex-start;gap:11px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--card-2);cursor:pointer}
.tgw-notify-choice input{margin-top:3px;accent-color:var(--accent)}
.tgw-notify-choice span{display:flex;flex-direction:column;gap:4px;color:var(--text)}
.tgw-notify-choice small{color:var(--text-3);font-size:12px;line-height:1.4}
.tgw-msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:20px 24px;min-height:0}
.tgw-msg{max-width:74%;display:flex;flex-direction:column}
.tgw-msg.in{align-self:flex-start}
.tgw-msg.out{align-self:flex-end}
.bubble{padding:9px 13px;border-radius:16px;font-size:13.5px;line-height:1.45;position:relative;word-wrap:break-word}
.tgw-msg.in .bubble{background:var(--card-2);color:var(--text);border-bottom-left-radius:5px}
.tgw-msg.out .bubble{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border-bottom-right-radius:5px;font-weight:500}
.btime{font-size:10px;opacity:.6;margin-left:8px}
.bubble.photo{padding:5px}
.bphoto{width:230px;max-width:100%;height:148px;border-radius:12px;background:linear-gradient(135deg,#2a6f5e,#0c2c26)}
.bphoto-cap{padding:6px 6px 2px;font-size:13px}
.bubble.voice{min-width:230px}
.voice-row{display:flex;align-items:center;gap:10px}
.voice-play{width:34px;height:34px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.voice-wave{flex:1;display:flex;align-items:center;gap:2px;height:26px}
.voice-wave i{width:2px;background:var(--accent);border-radius:2px;opacity:.7;display:block}
.voice-dur{font-size:11px;color:var(--text-3)}
.voice-tr{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
.tr-tag{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-weight:700}
.voice-tr p{font-style:italic;font-size:12.5px;color:var(--text-2);margin-top:3px}
.bot-kb{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:9px}
.bot-btn{padding:8px;border-radius:9px;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);font-size:12.5px;cursor:pointer;text-align:center}
.bot-btn.full{grid-column:1/-1}
.reacts{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.react{padding:3px 9px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);font-size:12px}
.msg-flag{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.msg-flag.del{color:var(--err)}
.tgw-msg.deleted .bubble{border:1px dashed var(--err);background:transparent;color:var(--text-3);font-style:italic}
.edited-tag{font-size:10px;opacity:.6;margin-left:6px}
.tgw-att{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 4px}
.tgw-att-ic{font-size:13px;opacity:.85}
.tgw-att-btn{padding:5px 12px;border-radius:9px;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);font-size:12px;cursor:pointer;text-decoration:none;display:inline-block}
.tgw-msg.out .tgw-att-btn{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.3);color:#fff}
.tgw-att-dl{font-size:11px;opacity:.75;text-decoration:underline}
.tgw-txt{margin-top:2px}
.tgw-edited{font-size:10px;opacity:.6;margin-left:6px;font-style:italic}
.tgw-prev{font-size:11px;opacity:.5;font-style:italic;text-decoration:line-through;margin-bottom:2px}
.tgw-empty{opacity:.5;font-style:italic}
.tgw-reply{border-left:3px solid var(--accent);padding:2px 0 2px 8px;margin-bottom:4px;font-size:12px;line-height:1.3;opacity:.85;max-width:100%;overflow:hidden}
.tgw-reply-who{display:block;font-weight:600;color:var(--accent)}
.tgw-msg.out .tgw-reply{border-left-color:rgba(255,255,255,.7)}
.tgw-msg.out .tgw-reply-who{color:#fff}
.tgw-reply-txt{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tgw-kb{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.tgw-kb-btn{flex:1 1 auto;min-width:44%;padding:9px 12px;border-radius:10px;border:1px solid var(--accent);background:transparent;color:var(--accent);font-size:13px;font-weight:600;cursor:pointer}
.tgw-kb-btn:hover:not(:disabled){background:var(--accent);color:#fff}
.tgw-kb-btn:disabled{opacity:.5;cursor:default}
.tgw-sys{align-self:center;max-width:82%;text-align:center;font-size:11.5px;color:var(--text-3);background:var(--card-2);border-radius:12px;padding:4px 12px;opacity:.85}
.tgw-acct-dead{opacity:.42;filter:grayscale(.75)}
.tgw-acct-x{position:absolute;bottom:-3px;right:-3px;width:16px;height:16px;border-radius:50%;background:var(--err);color:#fff;font-size:10px;line-height:16px;text-align:center}
/* Замок вместо крестика: аккаунт заморожен тарифом, а не сломан — красный тут читался бы как бан. */
.tgw-acct-lock{background:var(--card-2);color:var(--text-2);font-size:9px}
.tgw-del{opacity:.55}
.tgw-del .bubble{border:1px dashed var(--border-2)!important;background:transparent!important;color:var(--text-3)!important}
.tgw-delmark{font-size:11px;color:var(--err);font-style:italic;display:block;margin-bottom:2px}
.tgw-media-el{display:block;max-width:min(260px,68vw);max-height:340px;width:auto;height:auto;border-radius:12px;margin-top:2px}
.tgw-round{width:200px;max-width:56vw;height:200px;object-fit:cover;border-radius:50%}
.tgw-saved-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.tgw-notice{padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}
.tgw-notice.unseen{border-left:2px solid var(--accent);padding-left:9px;margin-left:-9px}
#tgwBellN{color:var(--accent);font-weight:700}
.tgw-composer{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--border);background:var(--card);flex-shrink:0}
.tgw-field{flex:1;background:var(--card-2);border:1px solid var(--border);border-radius:20px;padding:9px 15px;min-width:0}
.tgw-field input{width:100%;background:transparent;border:0;color:var(--text);font-size:13.5px;outline:none;font-family:inherit}
.tgw-send{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;box-shadow:0 4px 14px var(--accent-glow)}
.tgw-manual-note{padding:8px 16px;background:var(--accent-soft);color:var(--accent);font-size:12px;text-align:center;border-top:1px solid var(--border)}
.tgw-manual-note.done{background:rgba(52,199,89,.14);color:var(--ok)}
.tgw-ai-result{margin-top:12px;border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--card-2,transparent);max-height:46vh;overflow-y:auto}
.tgw-ai-text{font-size:13.5px;line-height:1.55;color:var(--text);white-space:pre-wrap;word-break:break-word}
.tgw-ai-err{font-size:13px;color:#e5484d}
/* ===== GRB ===== */
.grb-routes{display:flex;flex-direction:column;gap:8px}
.grb-route{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--card-2)}
.grb-route-main{flex:1;min-width:0}
.grb-route-name{font-size:14px;font-weight:600;color:var(--text)}
.grb-route-flow{font-size:12px;color:var(--text-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grb-route-acts{display:flex;gap:6px;flex-shrink:0}
.grb-adv{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.grb-adv>summary{cursor:pointer;font-size:13px;color:var(--text-2);user-select:none;padding:4px 0;list-style:none}
.grb-adv>summary::-webkit-details-marker{display:none}
.grb-adv>summary::before{content:"▸ ";color:var(--text-3)}
.grb-adv[open]>summary::before{content:"▾ "}
.grb-check{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--text-2);cursor:pointer;padding:6px 0}
.grb-modal{max-width:600px}
.grb-modq-empty{padding:24px;text-align:center;color:var(--text-3);font-size:13px;line-height:1.6;border:1px dashed var(--border);border-radius:12px}
.grb-groups{display:flex;flex-direction:column;gap:14px}
.grb-group{border:1px solid var(--border-2);border-radius:14px;padding:14px;background:var(--bg-2)}
.grb-group-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.grb-group-name{flex:1;min-width:0;font-size:14px;color:var(--text)}
.grb-group-acts{display:flex;gap:6px;flex-shrink:0}
.grb-dest{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--card-2);margin-bottom:6px}
.grb-dest-main{flex:1;min-width:0;font-size:13.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grb-dest-acts{display:flex;gap:6px;flex-shrink:0}
.grb-sub{border-top:1px dashed var(--border);margin-top:12px;padding-top:10px}
.grb-repl{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.grb-repl input[data-rf=find],.grb-repl input[data-rf=replace]{flex:1;min-width:90px}
.grb-repl-rx{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-3);white-space:nowrap}
/* Карточка выключенного блока: гаснет и объясняет, почему её поля сейчас ни на что не влияют. */
.set-card .card-off{display:none}
.set-card.dimmed{opacity:.62}
.set-card.dimmed .card-off{display:block}
/* Вкладки внутри модалок Автоведения: те же .au-tab, но без отступов шапки окна аккаунта. */
.grb-tabs{padding:0;margin:-2px 0 14px}
/* Блок со своим выключателем: выключен — свёрнут и пригашен, чтобы не мозолил лишними полями. */
.gsec{border-top:1px dashed var(--border);margin-top:12px;padding-top:4px}
.gsec:first-child{border-top:none;margin-top:0}
.gsec-body{margin-top:2px;padding-left:2px}
.gsec.off>.gsec-body{display:none}
.gsec.off>.set-row .set-label{color:var(--text-3)}
.grb-psrule{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.grb-psrule input{flex:1;min-width:110px}
.grb-models{display:flex;flex-wrap:wrap;gap:8px}
.grb-model{display:inline-flex;align-items:center;gap:7px;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);border-radius:10px;padding:8px 12px;font-size:13px;cursor:pointer;transition:.15s}
.grb-model.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.grb-model-x{background:transparent;border:0;color:var(--text-3);font-size:11px;cursor:pointer;padding:0;line-height:1}
.grb-model.on .grb-model-x{color:var(--accent)}
.grb-model-x:hover{color:var(--err)}
.grb-model-add{display:flex;gap:8px;margin-top:10px}
.grb-model-add input{flex:1}
/* ===== Партнёрская ===== */
.ref-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:22px;overflow-x:auto}
.ref-tab{padding:11px 16px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--text-2);font-size:14px;cursor:pointer;white-space:nowrap;font-family:inherit}
.ref-tab.on{color:var(--accent);border-bottom-color:var(--accent)}
.ref-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}
.ref-stat{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px}
.ref-stat-ico{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.ref-stat-ico.u{background:rgba(122,166,255,.16);color:#7aa6ff}
.ref-stat-ico.b{background:var(--accent-soft);color:var(--accent)}
.ref-stat-ico.e{background:rgba(52,211,153,.16);color:var(--ok)}
.ref-stat-val{font-size:24px;font-weight:800;color:var(--text)}
.ref-stat-lbl{font-size:12.5px;color:var(--text-3);margin-top:2px}
.ref-links{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}
.ref-link{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px}
.ref-link-title{font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:10px}
.ref-link-row{display:flex;gap:8px}
.ref-link-inp{flex:1;min-width:0;font-size:12.5px;color:var(--text-2)}
.ref-cond-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ref-cond-group{min-width:0;padding:4px 16px 2px;background:var(--card-2);border:1px solid var(--border);border-radius:14px}
.ref-cond-group h4{margin:10px 0 4px;font-size:11px;line-height:1.3;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ref-cond{display:grid;grid-template-columns:minmax(78px,108px) minmax(0,1fr);align-items:start;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);min-width:0}
.ref-cond:last-child{border-bottom:none}
.ref-cond-rate{min-width:0;font-size:21px;line-height:1.16;font-weight:800;color:var(--accent);overflow-wrap:normal;word-break:normal}
.ref-cond-copy{min-width:0}
.ref-cond-lbl{font-size:14px;font-weight:600;color:var(--text)}
.ref-cond-hint{font-size:12.5px;color:var(--text-3);margin-top:3px;line-height:1.5}
.ref-program-note{margin-top:14px;padding:11px 13px;border-radius:10px;background:rgba(127,127,127,.09);color:var(--text-3);font-size:12px;line-height:1.55}
.ref-subtabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.ref-subtab{padding:7px 13px;border-radius:999px;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);font-size:12.5px;cursor:pointer}
.ref-subtab.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.ref-empty{padding:30px 20px;text-align:center;color:var(--text-3);font-size:13px;line-height:1.6}
.ref-tbl{display:flex;flex-direction:column}
.ref-tbl-head,.ref-tbl-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;padding:10px 6px;font-size:13px;align-items:center}
.ref-tbl-head{color:var(--text-3);font-size:11px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}
.ref-tbl-row{border-bottom:1px solid var(--border);color:var(--text-2)}
/* блок «Активность за месяц» в кабинете BD-менеджера: таблицы на 2/4/6 колонок + акценты */
.ref-tbl-2 .ref-tbl-head,.ref-tbl-2 .ref-tbl-row{grid-template-columns:2fr 1fr}
.ref-tbl-4 .ref-tbl-head,.ref-tbl-4 .ref-tbl-row{grid-template-columns:2fr 1fr 1fr 1fr}
.ref-tbl-6 .ref-tbl-head,.ref-tbl-6 .ref-tbl-row{grid-template-columns:1.4fr 1fr .7fr .9fr 1fr 1.2fr}
.ref-tbl-row.on{background:var(--accent-soft);border-radius:8px}
.ref-ok{color:#3ddc84}.ref-warn{color:#f0a92b}
.ref-act-top{font-size:15px;color:var(--text-2);margin-bottom:6px}
.ref-act-k{color:var(--accent);font-size:20px}
.ref-act-now{font-size:14px;color:var(--text-2);margin-bottom:8px}
.ref-act-rows{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-2)}
.ref-act-rows div{display:flex;justify-content:space-between;gap:12px}
.ref-act-rows span{color:var(--text);font-weight:600;white-space:nowrap}
.ref-withdraw-bal{font-size:15px;color:var(--text-2)}
.ref-withdraw-bal b{color:var(--accent);font-size:22px}
/* ссылки привлечения: сворачиваемые группы и ссылки внутри */
.pg-top{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pg-grp{border:1px solid var(--border);border-radius:14px;margin-bottom:12px;overflow:hidden;background:var(--card-2)}
.pg-grp-head{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;flex-wrap:wrap}
.pg-grp-head:hover{background:var(--card)}
.pg-arrow{color:var(--text-3);font-size:13px;transition:transform .15s;flex-shrink:0}
.pg-grp.open .pg-arrow{transform:rotate(90deg)}
.pg-grp-name{font-weight:600;font-size:14.5px;color:var(--text)}
.pg-grp-cnt{font-size:12px;color:var(--text-3)}
.pg-sum{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-3);margin-left:auto}
.pg-grp-act{display:flex;gap:6px;flex-shrink:0}
.pg-grp-body{display:none;padding:0 16px 14px;flex-direction:column;gap:12px}
.pg-grp.open .pg-grp-body{display:flex}
.pg-link{border:1px solid var(--border);border-radius:12px;padding:13px 14px;display:flex;flex-direction:column;gap:9px;background:var(--bg-2)}
.pg-link.off{opacity:.6}
.pg-link-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.pg-link-name{font-weight:600;font-size:13.5px;color:var(--text)}
.pg-link-act{display:flex;gap:6px;flex-shrink:0}
.pg-urls{display:flex;flex-direction:column;gap:7px}
.pg-nums{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--text-3)}
.pg-nums b{color:var(--text-2)}
@media (max-width:720px){.pg-sum{margin-left:0;width:100%}.pg-grp-act{width:100%}}
/* статистика привлечения */
.pg-periods{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.pg-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;margin-bottom:14px}
.pg-kpi{background:var(--card-2);border:1px solid var(--border);border-radius:12px;padding:12px 13px}
.pg-kpi-v{font-size:19px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.pg-kpi-l{font-size:11.5px;color:var(--text-3);margin-top:3px;line-height:1.4}
.pg-bar{height:7px;border-radius:4px;background:var(--card-2);overflow:hidden;margin:4px 0 5px}
.pg-bar-fill{height:100%;background:var(--accent)}
.pg-scope{margin-top:18px}
.pg-scope-h{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:9px;text-transform:uppercase;letter-spacing:.04em}
.pg-tools{margin:10px 0}
.pg-detail{margin-top:8px}
.pg-detail-in{border-top:1px solid var(--border);padding-top:11px;display:flex;flex-direction:column;gap:11px}
.pg-topbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pg-chart{display:flex;align-items:flex-end;gap:3px;height:42px}
.pg-col{flex:1;min-width:5px;background:var(--accent);border-radius:2px 2px 0 0;opacity:.75}
.pg-col:hover{opacity:1}
.pg-tbl{width:100%;border-collapse:collapse;font-size:12px;display:block;overflow-x:auto}
.pg-tbl th{text-align:left;color:var(--text-3);font-weight:500;padding:5px 8px;border-bottom:1px solid var(--border);white-space:nowrap}
.pg-tbl td{padding:5px 8px;border-bottom:1px solid var(--border);color:var(--text-2);white-space:nowrap}
/* переиспользуемая hover-подсказка «?» */
.htip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border-radius:50%;border:1px solid var(--border-2);background:transparent;color:var(--text-3);font-size:11px;font-weight:700;cursor:help;position:relative;vertical-align:middle;margin-left:7px;flex-shrink:0;font-family:inherit}
.htip:hover,.htip:focus{border-color:var(--accent);color:var(--accent);outline:none}
.htip::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);width:max-content;max-width:264px;background:var(--pop);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:12.5px;font-weight:400;line-height:1.5;text-align:left;white-space:normal;box-shadow:var(--shadow);opacity:0;visibility:hidden;transition:opacity .15s;z-index:60}
.htip::before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--border);opacity:0;visibility:hidden;transition:opacity .15s;z-index:60}
.htip:hover::after,.htip:focus::after,.htip:hover::before,.htip:focus::before{opacity:1;visibility:visible}
/* На узком экране подсказку прижимали правым краем к кнопке — и у левого края экрана её
   обрезало (кнопка «?» рядом с началом строки → 210px влево уходили за границу окна). CSS не
   умеет удерживать всплывашку в границах окна, поэтому на телефоне её рисует tip.js: тот же
   вид, но НАД знаком вопроса и со сдвигом ровно настолько, чтобы она поместилась целиком. */
@media (max-width:600px){.htip::after,.htip::before{display:none}}
.htip-pop{position:fixed;z-index:12000;max-width:min(320px,calc(100vw - 16px));background:var(--pop);
  color:var(--text);border:1px solid var(--border);border-radius:10px;padding:11px 13px;font-size:13px;
  font-weight:400;line-height:1.5;text-align:left;box-shadow:var(--shadow);opacity:0;visibility:hidden;
  transition:opacity .12s;pointer-events:none}
.htip-pop.on{opacity:1;visibility:visible}
/* ===== Файловый менеджер — дерево перенесено из панели (блоки 16/44), элементы без изменений ===== */
.pnl-fm{--text2:#c8c8c8;--text3:#888888;--lava:#FF4500;--lava-soft:rgba(255,69,0,0.08);--border3:rgba(255,255,255,0.12)}
:root.light .pnl-fm{--text2:#2a2a2a;--text3:#666666;--lava:#CC2E00;--lava-soft:rgba(204,46,0,0.05);--border3:rgba(0,0,0,0.11)}
.parser-tree{border:1px solid var(--border3);border-radius:6px;padding:0.5rem;max-height:380px;overflow:auto}
.tree-dir{margin:0.15rem 0}
.tree-dir>summary{padding:0.3rem 0.4rem;cursor:pointer;font-family:'DM Mono',monospace;font-size:0.75rem;color:var(--text2);list-style:none;display:flex;align-items:center;gap:0.4rem}
.tree-dir>summary::-webkit-details-marker{display:none}
.tree-dir>summary:hover{background:var(--lava-soft);color:var(--lava)}
.tree-children{padding-left:1.2rem;border-left:1px solid var(--border3);margin-left:0.4rem}
.tree-row{display:flex;align-items:center;gap:0.4rem;padding:0.25rem 0.4rem;font-family:'DM Mono',monospace;font-size:0.7rem;color:var(--text2);cursor:pointer;user-select:none;border-radius:2px}
.tree-row:hover{background:var(--lava-soft);color:var(--lava)}
.tree-mark{width:14px;height:14px;border:1.5px solid var(--border3);background:transparent;flex-shrink:0;display:none;align-items:center;justify-content:center;transition:all 0.12s ease;border-radius:2px}
.parser-tree.select-mode .tree-mark{display:inline-flex}
.tree-row.is-selected{background:rgba(255,69,0,0.08);color:var(--lava)}
.tree-row.is-selected .tree-mark{background:var(--lava);border-color:var(--lava);box-shadow:0 0 6px rgba(255,69,0,0.5)}
.tree-row.is-selected .tree-mark::after{content:"";display:block;width:6px;height:9px;border:solid #000;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}
.tree-dir>summary.is-selected{background:rgba(255,69,0,0.08);color:var(--lava);border-radius:2px}
.tree-toolbar{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 0;border-bottom:1px solid var(--border3);margin-bottom:0.5rem;flex-wrap:wrap}
.tree-toolbar .undo-btn{color:#FF9F1C;border-color:#FF9F1C}
.tree-toolbar button[disabled]{opacity:0.4;cursor:not-allowed}
.tree-hint{margin-left:auto;font-size:0.6rem;letter-spacing:0.15em;text-transform:uppercase;color:var(--text3)}
/* просмотрщик файла (fileViewerModal из панели) */
.fv-modal{max-width:760px;--bg2:#111111;--text4:#7a7a7a;--border3:rgba(255,255,255,0.12)}
:root.light .fv-modal{--bg2:#e5e3e0;--text4:#8a8a8a;--border3:rgba(0,0,0,0.11)}
.fv-modal .bm-body{padding:0}
.fv-wrap{display:flex;height:60vh;min-height:240px;flex-direction:column}
.fv-toolbar{display:flex;gap:0.5rem;align-items:center;padding:0.5rem 0.75rem;border-bottom:1px solid var(--border3);background:var(--bg2)}
.fv-body{display:flex;flex:1;overflow:hidden}
.fv-nums{background:var(--bg2);padding:0.75rem 0.5rem;font-size:0.68rem;font-family:'DM Mono',monospace;color:var(--text4);text-align:right;user-select:none;overflow:hidden;min-width:40px;line-height:1.5;margin:0}
.fv-editor{flex:1;padding:0.75rem;font-size:0.68rem;font-family:'DM Mono',monospace;background:#000;color:#cfcfcf;resize:none;border:none;outline:none;overflow:auto;line-height:1.5;white-space:pre}

/* Просмотр markdown-таблицы: выделение по столбцам/прямоугольником для копирования в таблицы */
.fv-views{margin-left:0.5rem}
.fv-views button{font-size:0.7rem;padding:0.2rem 0.6rem}
.fv-selinfo{white-space:nowrap}
.fv-tables{flex:1;overflow:auto;background:#000}
.fv-tblwrap{overflow-x:auto}
.fv-tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:0.72rem;color:#cfcfcf;user-select:none}
.fv-tbl th,.fv-tbl td{border-right:1px solid var(--border3);border-bottom:1px solid var(--border3);padding:0.32rem 0.55rem;text-align:left;vertical-align:top;white-space:nowrap}
.fv-tbl thead th{position:sticky;top:0;z-index:2;background:var(--bg2);cursor:pointer;font-weight:600}
.fv-tbl thead th:hover{color:#fff}
.fv-tbl .fv-corner{width:34px;cursor:pointer}
.fv-tbl .fv-rn{position:sticky;left:0;z-index:1;background:var(--bg2);color:var(--text4);text-align:right;font-family:'DM Mono',monospace;font-size:0.64rem;cursor:default}
.fv-tbl td{cursor:cell}
.fv-tbl td.sel,.fv-tbl thead th.sel{background:rgba(90,150,255,0.28);color:#fff}
:root.light .fv-editor{background:#fff;color:#222}
/* ===== Приёмщик заявок ===== */
.wb-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border:1px solid var(--border);border-radius:12px;background:var(--card-2);margin-bottom:8px}
.wb-addbot{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.wb-addbot .finp{flex:1;min-width:200px}
.wb-cat{margin-bottom:12px}
.wb-cat-name{font-size:13px;color:var(--accent);font-weight:600;margin-bottom:5px}
.wb-stats{font-size:14px;color:var(--text-2);margin-bottom:14px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wb-stats b{color:var(--text)}
.wb-step{border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:12px;background:var(--card-2)}
.wb-step-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.wb-step-n{font-size:13.5px;font-weight:600;color:var(--text)}
.wb-step-delay{font-size:12.5px;color:var(--text-3);display:inline-flex;align-items:center;gap:6px}
.wb-step-acts{margin-left:auto;display:flex;gap:4px}
.wb-row.wb-sel{border-color:var(--accent);background:var(--accent-soft,rgba(255,90,31,.12))}
.wb-base-route{border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:10px;background:var(--card-2)}
.wb-base-h{font-weight:700;font-size:14px;margin-bottom:6px}
.wb-base-ch{margin:6px 0 4px 10px;padding-left:10px;border-left:2px solid var(--border)}
.wb-base-ch-h{font-weight:600;font-size:13px;color:var(--text-2);margin-bottom:3px}
.wb-base-u{font-size:12.5px;color:var(--text-2);display:flex;justify-content:space-between;gap:10px;padding:1px 0}
.wb-combo{position:relative}
.wb-combo-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:6;background:var(--card-2);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.45);max-height:230px;overflow:auto;padding:6px;display:none}
.wb-combo-list.show{display:block}
.wb-combo-opt{padding:9px 12px;border-radius:9px;cursor:pointer;font-size:14px;color:var(--text)}
.wb-combo-opt:hover{background:var(--accent-soft,rgba(255,90,31,.12));color:var(--accent)}
.wb-combo-opt.is-muted{color:var(--text-3);cursor:default}
.wb-combo-opt.is-muted:hover{background:none;color:var(--text-3)}
.wb-tabs{display:flex;gap:8px;padding:0 20px;border-bottom:1px solid var(--border);margin-bottom:8px}
.wb-tabs button{background:transparent;border:0;border-bottom:2px solid transparent;color:var(--text-2);font-family:inherit;font-weight:600;font-size:14px;padding:11px 6px;cursor:pointer;transition:.18s}
.wb-tabs button:hover{color:var(--text)}
.wb-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}
/* приёмщик: дерево бот → каналы + аккуратная раскладка строк */
.wb-row-main{min-width:0;flex:1 1 auto}
.wb-row-acts{flex:0 0 auto;display:flex;align-items:center;gap:6px}
.wb-bot{cursor:pointer}
.wb-node{margin-bottom:8px}
.wb-node .wb-row{margin-bottom:0}
.wb-children{margin:6px 0 4px 15px;border-left:2px solid var(--border);padding-left:14px}
.wb-tip{margin-top:8px}
.wb-leaf{position:relative;margin-top:8px}
.wb-leaf::before{content:"";position:absolute;left:-14px;top:22px;width:12px;height:2px;background:var(--border)}
.wb-leaf-card{background:var(--card-2);border:1px solid var(--border);border-radius:12px;padding:11px 14px}
.wb-child-h b{font-size:14px}
.wb-child-acts{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
/* приёмщик: редактор сообщения — «отдельным сообщением», блок кнопки, Telegram-превью */
.wb-seprow{display:flex;align-items:center;gap:10px;margin-top:11px;font-size:13px;color:var(--text-3)}
.wb-seprow b{color:var(--text)}
.wb-btnblock{margin-top:12px;border:1.5px solid var(--border);border-radius:12px;padding:11px 13px;transition:border-color .15s}
.wb-btnblock.on{border-color:var(--accent)}
.wb-btnblock-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:600;font-size:13px}
.wb-btnblock-body{margin-top:12px;display:flex;flex-direction:column;gap:11px}
.wb-btnblock-body .bm-fld{display:flex;flex-direction:column;gap:5px}
.wb-btnblock-body .bm-fld>span{font-size:12px;color:var(--text-3)}
.wb-btnstyle{flex-wrap:wrap}
.wb-btnadv{margin-top:2px}
.wb-btnadv summary{cursor:pointer;font-size:12px;color:var(--text-3);user-select:none}
.wb-btnadv summary:hover{color:var(--text)}
.wb-btnnote{font-size:12px;line-height:1.5;color:var(--text-3);background:rgba(224,83,61,.08);border:1px solid rgba(224,83,61,.25);border-radius:9px;padding:8px 10px}
.wb-btnnote b{color:var(--text)}
.wb-prev{margin-top:12px}
.tgprev-head{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin-bottom:7px}
.tgprev{display:flex;flex-direction:column;gap:9px;padding:14px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border)}
.tgmsg{max-width:80%;align-self:flex-start;display:flex;flex-direction:column;gap:3px}
.tgbub{background:var(--card-2);border:1px solid var(--border);border-radius:14px 14px 14px 5px;padding:8px 11px;box-shadow:0 1px 2px rgba(0,0,0,.12);word-break:break-word}
.tgbub-txt{font-size:14px;line-height:1.4}
.tgbub-media{padding:4px}
.tgprev-img{display:block;max-width:100%;border-radius:11px}
.tgprev-vidwrap{position:relative;border-radius:11px;overflow:hidden;background:#000}
.tgprev-vid{display:block;max-width:100%;max-height:260px}
.tgprev-playbig{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px}
.tgbub-cap{padding:7px 7px 2px;font-size:14px;line-height:1.4}
.tgprev-ph{min-width:150px;min-height:88px;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:12px;border-radius:11px;border:1px dashed var(--border)}
.tgprev-audio{display:flex;align-items:center;gap:8px;padding:6px 7px;font-size:13px}
.tgprev-audio-n{word-break:break-all}
.tgbub-voice{display:flex;align-items:center;gap:9px;min-width:190px}
.tgprev-play{width:34px;height:34px;flex:none;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px}
.tgprev-wave{flex:1;height:18px;background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 5px);color:var(--accent);opacity:.5;border-radius:2px}
.tgprev-dur{font-size:12px;color:var(--text-3)}
.tgprev-circle{width:168px;height:168px;border-radius:50%;overflow:hidden;background:#000;align-self:flex-start}
.tgprev-circle-v{width:100%;height:100%;object-fit:cover}
.tgprev-circle-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#889;font-size:12px}
.tgbtns{display:flex;margin-top:1px}
.tgbtn{flex:1;text-align:center;padding:9px 12px;border-radius:9px;font-size:13px;font-weight:600;color:#fff}
.tgbtn-default{background:rgba(130,150,170,.28);color:var(--text)}
.tgbtn-primary{background:#3390ec}
.tgbtn-success{background:#2fb56b}
.tgbtn-danger{background:#e0533d}
.tgbtn-ic{opacity:.9}
.wb-types{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.wb-type{padding:5px 11px;border-radius:999px;background:var(--card);border:1px solid var(--border);color:var(--text-2);font-size:12.5px;cursor:pointer}
.wb-type.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.wb-media{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.wb-media-name{font-size:12px;color:var(--accent);word-break:break-all}
@media (max-width:720px){.ref-stats{grid-template-columns:1fr}.ref-links{grid-template-columns:1fr}.ref-cond-groups{grid-template-columns:1fr}.ref-tbl-head,.ref-tbl-row{grid-template-columns:2fr 1fr 1fr}.ref-tbl-head span:nth-child(4),.ref-tbl-row span:nth-child(4){display:none}
  /* таблицы активности узкими не режем — они читаются целиком, поэтому даём горизонтальную прокрутку */
  .ref-tbl-2,.ref-tbl-4,.ref-tbl-6{overflow-x:auto}
  .ref-tbl-2 .ref-tbl-head,.ref-tbl-2 .ref-tbl-row{grid-template-columns:2fr 1fr}
  .ref-tbl-4 .ref-tbl-head,.ref-tbl-4 .ref-tbl-row{grid-template-columns:2fr 1fr 1fr 1fr;min-width:460px}
  .ref-tbl-6 .ref-tbl-head,.ref-tbl-6 .ref-tbl-row{grid-template-columns:1.4fr 1fr .7fr .9fr 1fr 1.2fr;min-width:600px}
  .ref-tbl-4 .ref-tbl-head span:nth-child(4),.ref-tbl-4 .ref-tbl-row span:nth-child(4){display:block}
  .ref-tbl-6 .ref-tbl-head span:nth-child(4),.ref-tbl-6 .ref-tbl-row span:nth-child(4){display:block}}
@media (max-width:420px){.ref-cond-group{padding-left:12px;padding-right:12px}.ref-cond{grid-template-columns:minmax(72px,92px) minmax(0,1fr);gap:10px}.ref-cond-rate{font-size:18px}.ref-cond-lbl{font-size:13.5px}.ref-cond-hint{font-size:12px}}
@media (max-width:900px){
  .tgw-page{height:calc(100dvh - var(--nav-h));padding:8px 10px}
  .tgw-head-row{margin-bottom:8px}
  .tgw-head-row h1{font-size:19px}
  .tgw-conv-tools{flex-basis:100%;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .tgw-app{grid-template-columns:56px 1fr}
  .tgw-app .tgw-conv{display:none}
  .tgw-app.show-conv .tgw-list{display:none}
  .tgw-app.show-conv .tgw-conv{display:flex}
  .tgw-back{display:block}
  .tgw-msg{max-width:86%}
}

/* ===== App shell (logged-in): sidebar desktop / fullscreen menu mobile ===== */
.hamb{display:none;width:36px;height:36px;border:1px solid var(--border);border-radius:10px;background:transparent;cursor:pointer;position:relative;flex-shrink:0}
.hamb span{position:absolute;left:9px;right:9px;height:1.6px;background:var(--text);transition:.3s var(--ease)}
.hamb span:nth-child(1){top:13px}.hamb span:nth-child(2){top:18px}.hamb span:nth-child(3){top:23px}
.app-top{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:120;display:none;align-items:center;gap:14px;padding:0 16px;background:var(--nav-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--border);transition:transform .4s var(--ease)}
.app-top.hidden{transform:translateY(-100%)}
.app-top .brand-word{font-size:17px}
.app-top .hamb{margin-left:auto;display:block}
.side{position:fixed;top:0;left:0;bottom:0;width:242px;z-index:130;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.side-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;padding:20px 14px}
.side-close{display:none}
.side-brand{color:var(--accent);padding:4px 10px 20px;text-decoration:none}
.side-brand .brand-word{font-size:22px}
.side-nav{display:flex;flex-direction:column;gap:4px}
.side-nav a{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:11px;color:var(--text-2);font-size:14.5px;font-weight:500;cursor:pointer;transition:.16s;text-decoration:none}
.side-nav a:hover{background:var(--card);color:var(--text)}
.side-nav a.active{background:var(--accent-soft);color:var(--accent)}
.side-nav a.soon{opacity:.5}
.nav-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3);flex-shrink:0;opacity:.4;transition:.25s}
.side-nav a.tool.active .nav-dot,.side-nav a.tool:hover .nav-dot{opacity:.7}
.nav-dot.on{background:var(--accent);opacity:1;box-shadow:0 0 8px var(--accent),0 0 3px var(--accent)}
/* звёздочка «уже хорошо работает» — золотисто-акцентная, в стиле сайта */
.nav-star{flex-shrink:0;color:#ffc24b;font-size:.82em;line-height:1;margin-right:-4px;text-shadow:0 0 6px rgba(255,194,75,.55)}
@media (max-width:900px){.nav-dot{width:10px;height:10px}.nav-star{font-size:.7em}}
.side-group{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);padding:14px 13px 6px;font-weight:700}
.dev-badge{display:inline-block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:3px 11px;vertical-align:middle;margin-left:10px}
.planned-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px 22px;margin-top:22px;max-width:640px}
.planned-title{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-bottom:12px}
.planned-card ul{list-style:none;display:flex;flex-direction:column;gap:11px}
.planned-card li{padding-left:20px;position:relative;color:var(--text-2);font-size:14px;line-height:1.5}
.planned-card li::before{content:"→";position:absolute;left:0;color:var(--accent)}
.side-tools{display:flex;align-items:center;gap:10px;padding:12px 8px;border-top:1px solid var(--border);margin-top:auto}
.side-foot{border-top:1px solid var(--border);padding-top:10px;display:flex;flex-direction:column;gap:3px}
.side-foot a{padding:10px 13px;border-radius:11px;color:var(--text-2);font-size:14px;transition:.16s;text-decoration:none}
.side-foot a:hover{background:var(--card);color:var(--text)}
.side-foot a.active{background:var(--accent-soft);color:var(--accent)}
.side-user{font-size:11.5px;color:var(--text-3);padding:8px 13px 0;word-break:break-all}
.app-main{margin-left:242px;position:relative;z-index:1;min-height:100vh;overflow-x:clip}
.app-shell .dash{padding-top:44px}
@media (max-width:900px){
  .app-top{display:flex}
  /* меню как на лендинге: полноэкранный лист, растёт сверху (clip-path), крестик по --hy */
  .side{top:0;inset:0;z-index:10000;width:auto;border-right:0;background:var(--bg);overflow:hidden;
    clip-path:inset(0 0 100% 0);opacity:0;pointer-events:none;
    transition:clip-path .5s var(--ease),opacity .25s var(--ease)}
  body.side-open .side{clip-path:inset(0 0 0 0);opacity:1;pointer-events:auto}
  body.side-open{overflow:hidden}
  .side-scroll{position:absolute;inset:0;padding:calc(var(--hy,27px) + 34px) 24px 46px}
  .side-brand{display:none}
  .side-close{display:flex;align-items:center;justify-content:center;position:absolute;top:var(--hy,27px);right:22px;transform:translateY(-50%);z-index:3;width:34px;height:34px;border:1px solid var(--border);border-radius:10px;background:transparent;color:var(--text);font-size:16px;cursor:pointer}
  .side-tools{margin-top:0;justify-content:flex-start;padding:16px 2px;border-top:1px solid var(--border)}
  .side-nav a{font-size:22px;font-weight:600;color:var(--text);gap:16px;padding:14px 2px;border-radius:0;border-bottom:1px solid var(--border)}
  .side-nav a:hover{background:transparent;color:var(--text)}
  .side-nav a.active{background:transparent;color:var(--accent)}
  .side-group{font-size:12px;letter-spacing:.16em;padding:22px 2px 6px;color:var(--text-3)}
  .side-foot{padding-top:6px}
  .side-foot a{font-size:18px;padding:13px 2px;border-radius:0;border-bottom:1px solid var(--border)}
  .side-foot a:hover{background:transparent;color:var(--text)}
  .side-user{padding:14px 2px 0}
  .app-main{margin-left:0;padding-top:var(--nav-h)}
  .app-shell .dash{padding-top:20px}
  /* плашки над контентом (просмотр админом от лица юзера / триал / почта) прятались ЗА фикс-шапкой — показываем ПОД ней */
  .imp-banner,.acc-strip{margin-top:var(--nav-h)}
  .imp-banner~.acc-strip,.acc-strip~.acc-strip{margin-top:0}
  body:has(.imp-banner) .app-main,body:has(.acc-strip) .app-main{padding-top:0}
}

/* ===== Accounts tab ===== */
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.section-num{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:4px}
.acc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:18px 0}
.acc-filters{display:flex;gap:8px;flex-wrap:wrap}
.acc-filter{background:var(--card);border:1px solid var(--border);color:var(--text-2);border-radius:999px;padding:7px 14px;font:inherit;font-size:13px;cursor:pointer;transition:.15s}
.acc-filter:hover{color:var(--text)}
.acc-filter.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.acc-slots{margin-left:auto;align-self:center;font-size:12.5px;font-weight:600;color:var(--text-2);background:rgba(127,127,127,.12);border:1px solid var(--border);border-radius:999px;padding:6px 12px;white-space:nowrap}
.acc-slots.over{color:#e5484d;border-color:#e5484d;background:rgba(229,72,77,.1)}
.acc-empty{padding:40px 16px;text-align:center;color:var(--text-3);font-size:14px}
/* Заморозка по тарифу — состояние, а не авария: серая строка + пояснение над таблицей. */
.acc-frozen-note{margin:0 0 12px;padding:10px 13px;border:1px solid var(--border);border-radius:10px;background:rgba(127,127,127,.1);color:var(--text-2);font-size:12.5px;line-height:1.5}
.acc-frozen-note a{color:var(--accent)}
.acc-row-frozen{opacity:.5}
.acc-row-frozen .acc-name{filter:grayscale(1)}
.acc-lock{font-size:11px;font-weight:600;color:var(--text-3);white-space:nowrap}
/* Рабочая зона тарифа: состав выбирает клиент — «колода» из аккаунтов, которыми можно работать. */
.zone-box{margin:0 0 14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:rgba(127,127,127,.08)}
.zone-box.picking{border-color:var(--accent);background:var(--accent-soft)}
.zone-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;margin-bottom:10px}
.zone-count{font-size:12.5px;font-weight:700;color:var(--text-2);background:var(--card);border:1px solid var(--border);border-radius:999px;padding:3px 10px}
.zone-count.full{color:var(--accent);border-color:var(--accent)}
.zone-grid{display:flex;flex-wrap:wrap;gap:8px}
.zone-card{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:6px 11px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--text);font:inherit;font-size:12.5px;cursor:default}
.zone-card[disabled]{opacity:1}
.zone-card .zone-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}
.zone-card.pick{cursor:pointer;border-style:dashed;transition:.15s}
.zone-card.pick:hover{border-color:var(--accent);border-style:solid;color:var(--accent)}
.zone-repl{font-size:11px;color:var(--text-3)}
.zone-card.pick:hover .zone-repl{color:var(--accent)}
.zone-card.waiting{border-color:var(--accent);color:var(--accent);animation:zone-in .22s ease-out}
.zone-pend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}
.zone-pend-up{color:var(--accent);font-weight:700}
.zone-pend-txt{font-size:12.5px;color:var(--text-2);flex:1 1 220px}
.zone-out{font-size:11px;font-weight:600;color:var(--text-3);white-space:nowrap}
/* «Вынуть из зоны»: крестик живёт внутри плашки, поэтому сама плашка — span, а не button
   (кнопку в кнопку вкладывать нельзя). */
.zone-x{margin-left:2px;padding:0 2px;border:0;background:none;color:var(--text-3);font:inherit;font-size:12px;line-height:1;cursor:pointer}
.zone-x:hover{color:var(--accent)}
.zone-note{margin-top:10px;padding-top:9px;border-top:1px dashed var(--border);font-size:12px;color:var(--text-2);line-height:1.5}
.acc-row-pending{background:var(--accent-soft)}
@keyframes zone-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.zone-card.waiting{animation:none}.zone-card.pick{transition:none}}
.am-frozen{margin:0 18px;padding:10px 13px;border:1px solid var(--border);border-radius:10px;background:rgba(127,127,127,.1);color:var(--text-2);font-size:12.5px;line-height:1.5}
.am-frozen a{color:var(--accent)}
.sb-title,.sb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.sb-message{margin-top:10px}
.sb-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}
.sb-kpis>div{padding:11px;border:1px solid var(--border);border-radius:10px;background:rgba(127,127,127,.07)}
.sb-kpis b{display:block;font-size:19px;color:var(--text);font-variant-numeric:tabular-nums}
.sb-kpis span{display:block;margin-top:2px;color:var(--text-3);font-size:11px;line-height:1.25}
.sb-actions{justify-content:flex-start;flex-wrap:wrap}
.sb-event{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--border)}
.sb-event:last-child{border-bottom:0}.sb-detail{max-width:55%;color:var(--text-2);font-size:12px}
.sb-detail summary{cursor:pointer;color:var(--accent)}.sb-detail>div{margin-top:6px;line-height:1.45}
.sb-empty{padding:18px 0}
@media(max-width:680px){.sb-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.sb-event{display:block}.sb-detail{max-width:none;margin-top:7px}}
.acc-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.acc-tbl th{text-align:left;padding:10px 12px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--border);font-weight:600}
.acc-tbl td{padding:12px;border-bottom:1px solid var(--border);vertical-align:top}
.acc-name{font-weight:600;color:var(--text)}
.tiny{font-size:11.5px}
.muted.tiny{color:var(--text-3)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--text-3);vertical-align:middle;margin-right:2px}
.dot.working{background:#3fbf6f}.dot.captcha_pending{background:#ff8a34}.dot.banned{background:#ff3b3b}.dot.frozen{background:#9aa0ff}
.dot.session_dead{background:#ffc24b}
.dot.quarantine{background:#ff9f1c}.dot.unchecked{background:#888}.dot.uncheckable{background:#cc9977}
.acc-actual{display:inline-flex;align-items:center;gap:7px;white-space:normal;line-height:1.25}
.acc-actual .dot{flex:none}.acc-op-warn{margin-top:7px;padding:7px 9px;border:1px solid rgba(255,159,28,.32);border-radius:8px;background:rgba(255,159,28,.08);color:#d88a18;font-size:11.5px;line-height:1.35}
.q-reason{background:rgba(255,159,28,.15);color:#ff9f1c;border-radius:6px;padding:1px 7px;font-size:11.5px}
.q-cd{color:#ff9f1c;font-size:12px;font-variant-numeric:tabular-nums}
/* Приписка на левом поле строки: аккаунт под ограничением. Занимает своё место в потоке, а не
   висит абсолютом — на узком экране просто переносится над именем и строку не ломает. */
.acc-row-held{box-shadow:inset 3px 0 0 #ff9f1c}
.q-rail{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;margin:0 0 4px -4px;line-height:1.3}
.q-rail-tag{background:rgba(255,159,28,.15);color:#ff9f1c;border-radius:6px;padding:1px 7px;font-size:11px;white-space:nowrap}
.q-rail-perm{color:#ff9f1c;font-size:11.5px;white-space:nowrap}
.st-when{margin-top:3px}
.st-when b{font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}
/* Заголовок таблицы набран КАПСОМ вразрядку, и подсказка «?» это наследовала: текст всплывашки
   выходил капсом. Сбрасываем только внутри неё. */
.acc-tbl th .htip::after{text-transform:none;letter-spacing:normal}
.chip{display:inline-block;background:var(--bg-2);border:1px solid var(--border);color:var(--text-3);border-radius:7px;padding:2px 9px;font-size:12px}
.chip.ok{color:var(--ok);border-color:rgba(52,211,153,.4)}
.chip.lava{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.cell-actions{display:flex;gap:6px;flex-wrap:wrap}
.mini{background:transparent;border:1px solid var(--border);color:var(--text-2);border-radius:8px;padding:6px 10px;font:inherit;font-size:12px;cursor:pointer;transition:.15s}
.mini:hover{border-color:var(--accent);color:var(--text)}
.mini.danger:hover{border-color:#ff3b3b;color:#ff6b6b}
.mini:disabled{opacity:.5;cursor:default}
.anchor-block.spaminfo{margin-top:40px;padding-top:24px;border-top:1px solid var(--border)}
.cv-tool{margin:12px 0;color:var(--text-2);font-size:13px;display:flex;align-items:center;gap:8px}
.cv-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.cv-tile{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}
.cv-tile b{display:block;font-size:22px;color:var(--text)}
.cv-tile span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}

/* modal */
.modal-ov{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}
.modal-card{background:var(--bg-2);border:1px solid var(--border-2,var(--border));border-radius:18px;width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 12px}
.modal-head h2{font-size:20px;font-weight:700}
.modal-x{background:transparent;border:1px solid var(--border);border-radius:9px;width:34px;height:34px;color:var(--text);font-size:15px;cursor:pointer}
.modal-body{padding:6px 22px;overflow-y:auto}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:16px 22px 20px;flex-wrap:wrap}
.acc-tabs{display:flex;gap:8px;margin-bottom:16px}
.acc-tab{flex:1;background:var(--card);border:1px solid var(--border);color:var(--text-2);border-radius:11px;padding:11px;font:inherit;font-size:13.5px;cursor:pointer;transition:.15s}
.acc-tab.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.fld{display:block;margin:14px 0;font-size:12.5px;color:var(--text-2)}
.fld span{display:block;margin-bottom:6px}
.inp{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:11px 13px;font:inherit;font-size:14px}
.inp:focus{outline:none;border-color:var(--accent)}
.file-btn{display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:11px 15px;font-size:13px;cursor:pointer;margin:8px 10px 4px 0}
.file-btn:hover{border-color:var(--accent)}
.json-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.jf-bool{display:flex;align-items:center;justify-content:space-between;gap:10px}
.jf-bool input{width:auto}
@media (max-width:640px){.json-grid{grid-template-columns:1fr}.cv-stats{grid-template-columns:repeat(2,1fr)}}

/* spam-block scenarios (admin) + editor */
.scn-admin{margin-top:18px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 18px}
.scn-admin-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.scn-admin-btns{display:flex;gap:8px;flex-wrap:wrap}
.scn-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border)}
.scn-name{font-weight:600;color:var(--text)}
.scn-editor-ov{position:fixed;inset:0;z-index:300;background:var(--bg)}
.scn-editor-ov iframe{width:100%;height:100%;border:0;display:block}
.sb-head{display:flex;align-items:center;gap:10px}
.sb-head h3{font-size:19px;font-weight:700;color:var(--text)}
.sb-help-btn{width:24px;height:24px;flex-shrink:0;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-3);font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.sb-help-btn:hover,.sb-help-btn.open{border-color:var(--accent);color:var(--accent)}
.sb-help{margin-top:12px;max-width:640px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;color:var(--text-2);font-size:13.5px;line-height:1.6}
.sb-help[hidden]{display:none}
/* ===== lava-skin: угловатая тема старой панели (страница «Прокси») ===== */
.lava-skin{--lv:#FF4500;--lv-soft:rgba(255,69,0,.08);--pbg1:#080808;--pbg2:#111111;
  --pborder:rgba(255,69,0,.5);--pborder2:rgba(255,255,255,.24);--pborder3:rgba(255,255,255,.12);
  --ptext:#f5f5f5;--ptext2:#c8c8c8;--ptext3:#888;--pok:#3fbf6f;--perr:#ff3b3b;
  font-family:'DM Mono',ui-monospace,monospace;color:var(--ptext2)}
:root.light .lava-skin{--lv:#CC2E00;--lv-soft:rgba(204,46,0,.05);--pbg1:#eeece9;--pbg2:#e5e3e0;
  --pborder:rgba(204,46,0,.55);--pborder2:rgba(0,0,0,.22);--pborder3:rgba(0,0,0,.11);
  --ptext:#0a0a0a;--ptext2:#2a2a2a;--ptext3:#666}
.lava-skin .section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--pborder)}
.lava-skin .section-num{font-size:.55rem;letter-spacing:.25em;text-transform:uppercase;color:var(--lv);margin-bottom:.5rem}
.lava-skin .page-title{font-family:'Bebas Neue',Impact,sans-serif;font-size:clamp(2rem,4.5vw,3.5rem);line-height:1;letter-spacing:.05em;color:var(--ptext)}
.lava-skin .btn-lava,.lava-skin .btn-outline,.lava-skin .btn-danger{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.6rem;font-family:'DM Mono',monospace;font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;border:none;cursor:pointer;transition:all .22s}
.lava-skin .btn-lava{background:var(--lv);color:#fff}
.lava-skin .btn-lava:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 20px rgba(255,69,0,.35)}
.lava-skin .btn-outline{background:transparent;color:var(--ptext2);border:1px solid var(--pborder2)}
.lava-skin .btn-outline:hover:not(:disabled){border-color:var(--pborder);color:var(--lv)}
.lava-skin .btn-danger{background:transparent;color:var(--perr);border:1px solid var(--perr)}
.lava-skin .btn-danger:hover{background:var(--perr);color:#fff}
.lava-skin .btn-sm{padding:.5rem 1rem;font-size:.55rem}
.lava-skin button:disabled{opacity:.4;cursor:not-allowed}
.lava-skin .filter-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;padding:.75rem 0;border-bottom:1px solid var(--pborder3);margin-bottom:1rem}
.lava-skin .filter-btn{background:transparent;border:1px solid var(--pborder2);color:var(--ptext3);padding:.4rem .85rem;font-family:inherit;font-size:.6rem;letter-spacing:.15em;text-transform:uppercase;cursor:pointer;transition:all .2s}
.lava-skin .filter-btn:hover{border-color:var(--pborder);color:var(--ptext)}
.lava-skin .filter-btn.active{border-color:var(--pborder);color:var(--lv);background:var(--lv-soft)}
.lava-skin .muted{color:var(--ptext3)}
.lava-skin .chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .6rem;font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--pborder3);color:var(--ptext2)}
.lava-skin .chip.lava{border-color:var(--pborder);color:var(--lv);background:var(--lv-soft)}
.lava-skin .chip.ok{border-color:var(--pok);color:var(--pok)}
.lava-skin .chip.err{border-color:var(--perr);color:var(--perr)}
.lava-skin .table-wrap{overflow-x:auto;border:1px solid var(--pborder3)}
.lava-skin table.lava-table{width:100%;border-collapse:collapse;font-size:.72rem;min-width:640px}
.lava-skin table.lava-table th{text-align:left;padding:.7rem .8rem;background:var(--pbg2);font-size:.55rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ptext3);border-bottom:1px solid var(--pborder)}
.lava-skin table.lava-table td{padding:.7rem .8rem;border-bottom:1px solid var(--pborder3);color:var(--ptext2);vertical-align:middle}
.lava-skin table.lava-table tr:hover td{background:var(--lv-soft)}
.lava-skin table.lava-table strong{color:var(--ptext)}
.lava-skin .cell-actions{display:flex;gap:.3rem;flex-wrap:nowrap}
.lava-skin .px-act{background:transparent;border:1px solid var(--pborder2);color:var(--ptext2);width:32px;height:32px;font-size:.8rem;cursor:pointer;transition:all .18s;display:inline-flex;align-items:center;justify-content:center}
.lava-skin .px-act:hover{border-color:var(--pborder);color:var(--lv)}
.lava-skin .px-act.danger:hover{border-color:var(--perr);color:var(--perr)}
.lava-skin .empty-state{padding:3rem 1rem;text-align:center;border:1px dashed var(--pborder3);color:var(--ptext3);font-style:italic;font-size:1rem}
.lava-skin .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.lava-skin .form-row{display:flex;flex-direction:column;gap:.4rem}
.lava-skin .form-row label{font-size:.55rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ptext3)}
.lava-skin .input{background:var(--pbg2);color:var(--ptext);border:1px solid var(--pborder2);padding:.6rem .8rem;font-family:'DM Mono',monospace;font-size:.75rem;width:100%;transition:border-color .2s}
.lava-skin .input:focus{outline:none;border-color:var(--lv)}
/* custom animated select */
.lava-skin .csel{position:relative}
.lava-skin .csel-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--pbg2);border:1px solid var(--pborder2);color:var(--ptext);padding:.6rem .8rem;font-family:'DM Mono',monospace;font-size:.75rem;cursor:pointer;transition:border-color .2s}
.lava-skin .csel-btn:hover,.lava-skin .csel.open .csel-btn{border-color:var(--lv)}
.lava-skin .csel-arr{color:var(--ptext3);transition:transform .2s;font-size:.6rem}
.lava-skin .csel.open .csel-arr{transform:rotate(180deg)}
.lava-skin .csel-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;background:var(--pbg2);border:1px solid var(--pborder);opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .18s,transform .18s;max-height:220px;overflow:auto}
.lava-skin .csel.open .csel-list{opacity:1;transform:none;pointer-events:auto}
.lava-skin .csel-opt{padding:.55rem .8rem;font-size:.72rem;color:var(--ptext2);cursor:pointer;transition:.15s;white-space:nowrap}
.lava-skin .csel-opt:hover{background:var(--lv-soft);color:var(--lv)}
/* paste-by-string */
.lava-skin .paste-box{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--pborder3)}
.lava-skin .paste-lbl{display:block;font-size:.55rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ptext3);margin-bottom:.6rem}
.lava-skin .paste-row{display:flex;gap:.5rem}
.lava-skin .paste-row .csel{min-width:210px;flex-shrink:0}
.lava-skin .paste-row #pStr{flex:1}
.lava-skin .paste-box .btn-outline{margin-top:.5rem}
/* modal */
.modal-backdrop.lava-skin{position:fixed;inset:0;background:rgba(0,0,0,.78);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}
.modal-backdrop.lava-skin .modal-panel{background:var(--pbg1);border:1px solid var(--pborder);width:100%;max-width:600px;max-height:88vh;display:flex;flex-direction:column}
.modal-backdrop.lava-skin .modal-head{padding:1.1rem 1.4rem;border-bottom:1px solid var(--pborder3);display:flex;align-items:center;justify-content:space-between}
.modal-backdrop.lava-skin .modal-head h3{font-family:'Bebas Neue',Impact,sans-serif;font-size:1.4rem;letter-spacing:.06em;color:var(--ptext)}
.modal-backdrop.lava-skin .modal-x{background:transparent;border:1px solid var(--pborder2);color:var(--ptext2);width:32px;height:32px;cursor:pointer;flex-shrink:0}
.modal-backdrop.lava-skin .modal-x:hover{border-color:var(--pborder);color:var(--lv)}
.modal-backdrop.lava-skin .modal-body{padding:1.25rem 1.4rem;overflow-y:auto}
.modal-backdrop.lava-skin .modal-foot{padding:1rem 1.4rem;border-top:1px solid var(--pborder3);display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:560px){
  .lava-skin .form-grid{grid-template-columns:1fr}
  .lava-skin .paste-row{flex-direction:column}
  .lava-skin .paste-row .csel{min-width:0;width:100%}
  .modal-backdrop.lava-skin{padding:0}
  .modal-backdrop.lava-skin .modal-panel{max-width:100%;max-height:100dvh;height:100dvh}
}
/* custom cursor (desktop mouse only) — как в старой панели */
#cursor,#cursor-ring{display:none}
@media (hover:hover) and (pointer:fine){
  body{cursor:none}
  *,*::before,*::after{cursor:none!important}
  #cursor{display:block;width:7px;height:7px;background:var(--accent);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:99999;transform:translate(-50%,-50%);transition:transform .12s ease}
  #cursor-ring{display:block;width:30px;height:30px;border:1px solid var(--accent);border-radius:50%;position:fixed;top:0;left:0;pointer-events:none;z-index:99998;transform:translate(-50%,-50%);transition:transform .18s ease,opacity .18s ease;opacity:.5}
  body.hover-state #cursor{transform:translate(-50%,-50%) scale(2.2)}
  body.hover-state #cursor-ring{transform:translate(-50%,-50%) scale(1)}
}

/* segmented toggle (Мои прокси / Магазин) — угловатый, как карточки коммуникатора */
.lava-skin .seg-toggle{display:inline-flex;border:1px solid var(--pborder2);margin-bottom:1.25rem;flex-wrap:wrap}
.lava-skin .seg{display:flex;align-items:center;gap:.55rem;background:transparent;border:none;border-right:1px solid var(--pborder2);color:var(--ptext3);padding:.6rem 1.15rem;font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:all .2s}
.lava-skin .seg:last-child{border-right:none}
.lava-skin .seg:hover{color:var(--ptext)}
.lava-skin .seg.is-active{background:var(--lv-soft);color:var(--lv)}
.lava-skin .seg-dot{width:9px;height:9px;border:2px solid currentColor;border-radius:50%;position:relative;opacity:.55;flex-shrink:0}
.lava-skin .seg.is-active .seg-dot{opacity:1}
.lava-skin .seg.is-active .seg-dot::after{content:"";position:absolute;inset:1px;background:var(--lv);border-radius:50%;box-shadow:0 0 5px var(--lv)}
/* proxy shop skeleton */
.lava-skin .shop-note{border:1px dashed var(--pborder3);color:var(--ptext3);padding:.9rem 1.1rem;font-size:.72rem;margin-bottom:1.25rem}
.lava-skin .shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}
.lava-skin .shop-card{border:1px solid var(--pborder3);background:var(--pbg2);padding:1.1rem;display:flex;flex-direction:column;gap:.6rem}
.lava-skin .shop-card-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.lava-skin .shop-geo{font-size:.65rem;color:var(--ptext3)}
.lava-skin .shop-card-price{font-family:'Bebas Neue',Impact,sans-serif;font-size:2rem;color:var(--ptext);line-height:1}
.lava-skin .shop-card-meta{font-size:.65rem;color:var(--ptext3);letter-spacing:.05em}
.lava-skin .shop-card .btn-outline{margin-top:.3rem;justify-content:center}
/* угловатые скелет-страницы (lava-skin) */
.lava-skin .eyebrow{font-size:.55rem;letter-spacing:.25em;text-transform:uppercase;color:var(--lv);margin-bottom:.5rem}
.lava-skin h1{font-family:'Bebas Neue',Impact,sans-serif;font-size:clamp(2rem,4.5vw,3.2rem);letter-spacing:.05em;color:var(--ptext);line-height:1}
.lava-skin .muted{color:var(--ptext3)}
.lava-skin .dev-badge{display:inline-block;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--lv);border:1px solid var(--pborder);padding:3px 11px;vertical-align:middle;margin-left:10px}
.lava-skin .planned-card{background:var(--pbg2);border:1px solid var(--pborder3);border-radius:0;padding:1.25rem 1.4rem;margin-top:1.5rem;max-width:640px}
.lava-skin .planned-title{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ptext3);margin-bottom:.9rem}
.lava-skin .planned-card ul{list-style:none;display:flex;flex-direction:column;gap:.7rem}
.lava-skin .planned-card li{padding-left:1.2rem;position:relative;color:var(--ptext2);font-size:.8rem;line-height:1.5}
.lava-skin .planned-card li::before{content:"→";position:absolute;left:0;color:var(--lv)}

/* admin actions */
.badge.blocked{color:var(--err);background:rgba(255,84,112,.14)}
.tbl-scroll{overflow-x:auto}
.row-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.row-actions form{margin:0}
.acc-grant{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}
.acc-grant input{background:var(--card-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:5px 8px;font:inherit;font-size:12px}
.acc-grant input[name=days]{width:52px}
.acc-grant input[name=plan]{width:78px}
.acc-grant input:focus{outline:none;border-color:var(--accent)}
.aiu .aiu-body{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.aiu-row{display:flex;gap:8px}
.aiu-btns{display:flex;gap:8px;flex-wrap:wrap}
.aiu-conn{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2)}
.aiu-connform{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--bg-2)}
.acc-search{margin-left:auto;min-width:180px;background:var(--card-2);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:8px 14px;font:inherit;font-size:13px}
.acc-search:focus{outline:none;border-color:var(--accent)}
@media(max-width:640px){.acc-search{margin-left:0;width:100%;min-width:0}}
.twofa-res{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow:auto}
.twofa-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.twofa-n{font-weight:600;min-width:110px}
.twofa-row code{background:var(--card-2);padding:2px 8px;border-radius:6px;font-size:12px;user-select:all}
.twofa-cell{color:var(--accent);word-break:break-all;margin-top:2px}
.chip.err{color:var(--err);border-color:var(--err)}
.mini{display:inline-block;background:var(--card-2);border:1px solid var(--border);color:var(--text-2);border-radius:8px;padding:6px 10px;font-size:12px;font-family:inherit;cursor:pointer;white-space:nowrap;transition:.2s}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.mini.danger:hover{border-color:var(--err);color:var(--err)}

/* social login */
.social-div{display:flex;align-items:center;gap:12px;margin:22px 0 16px;color:var(--text-3);font-size:12.5px}
.social-div::before,.social-div::after{content:"";flex:1;height:1px;background:var(--border)}
.social{display:flex;flex-direction:column;gap:10px;align-items:center}
.social>*{max-width:100%}
.btn-social{flex:none;width:100%;background:var(--card-2);color:var(--text);border-color:var(--border);justify-content:center;gap:9px}
.social iframe{max-width:100%!important}
.btn-social:hover{border-color:var(--accent-2)}
.btn-social .g{font-weight:800;color:#4285f4}
.btn-social .tg{color:#3aa8e6}
.bot-auth-box{margin:10px 0 0;padding:11px 13px;border:1px solid rgba(34,197,94,.35);border-radius:11px;background:rgba(34,197,94,.08);color:var(--text-2);font-size:13px;line-height:1.45}
.bot-auth-box.bad{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.08);color:#ef9a9a}
.bot-auth-box a{color:var(--accent-2);font-weight:700}

/* Аудитория — выбор каналов ниши для парсинга */
.pr-all{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;color:var(--text);cursor:pointer;margin-bottom:10px}
.pr-all input{accent-color:var(--accent);width:16px;height:16px;cursor:pointer}
.pr-chans{display:flex;flex-direction:column;gap:2px;max-height:230px;overflow-y:auto;border:1px solid var(--border);border-radius:12px;background:var(--card-2);padding:6px}
.pr-chan{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:9px;font-size:13px;color:var(--text-2);cursor:pointer;transition:background .12s,color .12s}
.pr-chan:hover{background:var(--card);color:var(--text)}
.pr-chan input{accent-color:var(--accent);width:15px;height:15px;flex:none;cursor:pointer}
.pr-chan span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-chan:has(input:checked){color:var(--text)}
.pr-chan-sub{margin-left:22px;font-size:12.5px;color:var(--text-3);border-left:2px solid var(--border);border-radius:0 9px 9px 0}
.pr-disc{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:13px;flex-wrap:wrap}
.pr-disc-p{color:var(--text-2)}
.pr-disc-a{color:var(--accent-2)}
/* Поиск каналов — треки */
.ex-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ex-head h3{margin:0}
.ex-srcs{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.ex-src{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;color:var(--text-2);cursor:pointer}
.ex-src input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
.ex-vol{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--border);padding-top:12px}
.ex-vol-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--text-2)}
.ex-vol-row input{max-width:110px}
.fd-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
/* Карта найденного — горизонтальное древо (майндмэп-стиль) */
.tn-chk,.fd-chk{accent-color:var(--accent);width:15px;height:15px;flex:none;cursor:pointer}
.tn-wrap{overflow:auto;max-height:640px;margin-top:10px;padding:6px 2px}
.tn-root,.tn-kids{list-style:none;margin:0;padding:0}
.tn-root{display:flex;flex-direction:column;gap:14px}
.tn{display:flex;align-items:center}
.tn-kids{display:flex;flex-direction:column;justify-content:center;gap:8px;margin-left:26px;padding-left:16px;border-left:1.5px solid var(--border)}
.tn-kids>.tn{position:relative}
.tn-kids>.tn::before{content:"";position:absolute;left:-16px;top:50%;width:16px;height:1.5px;background:var(--border)}
.tn-box{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border:1px solid var(--border);border-radius:11px;background:var(--card-2);white-space:nowrap;transition:border-color .12s}
.tn-box:hover{border-color:var(--border-2)}
.tn-box:has(.fd-chk:checked){border-color:var(--accent);background:var(--accent-soft)}
.tn-src{border-color:var(--accent-2);background:var(--accent-soft);font-weight:600}
.tn-users{border-color:#9aa0ff;background:rgba(120,120,255,0.12);font-weight:600}
.tn-label{font-size:13px;color:var(--text);max-width:260px;overflow:hidden;text-overflow:ellipsis}
.tn-subs{font-size:11.5px;color:var(--text-3);font-variant-numeric:tabular-nums}
.tn-b{font-size:12px}
.tn-count{font-size:11px;color:var(--text-3);background:var(--card);border:1px solid var(--border);border-radius:999px;padding:0 6px;min-width:18px;text-align:center}
.tn-node{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.tn-tgl{cursor:pointer;font-size:10px;color:var(--text-3);width:11px;flex:none;user-select:none;text-align:center}
.tn-tgl-x{cursor:default;visibility:hidden}
.tn-meta{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.tn-info,.tn-del{cursor:pointer;font-size:12px;color:var(--text-3);flex:none;opacity:.55;transition:opacity .12s,color .12s;margin-left:1px}
.tn-box:hover .tn-info,.tn-box:hover .tn-del{opacity:1}
.tn-info:hover{color:var(--accent)}
.tn-del:hover{color:#e5484d;opacity:1}
.tn-detail{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:9px 12px;max-width:440px;white-space:normal;font-size:12px;color:var(--text-2);line-height:1.5}
.tn-d-title{font-weight:600;color:var(--text);margin-bottom:5px}
.tn-d-stats{display:flex;flex-wrap:wrap;gap:3px 12px;color:var(--text-3);margin-bottom:6px}
.tn-d-about{color:var(--text-2)}
.tn-d-load{color:var(--text-3);font-size:12px}
.tn-d-act{margin-top:7px}
.tn-d-reload{cursor:pointer;font-size:11.5px;color:var(--accent);user-select:none}
.tn-d-reload:hover{text-decoration:underline}
.tn-hidden{display:none}
.tn-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.tn-fs-btn{background:var(--card-2);border:1px solid var(--border);border-radius:9px;width:32px;height:30px;cursor:pointer;font-size:15px;color:var(--text-2);flex:none;line-height:1}
.tn-fs-btn:hover{border-color:var(--accent);color:var(--accent)}
.set-card.tn-fs{position:fixed;inset:0;z-index:1000;margin:0;border-radius:0;max-height:100vh;overflow:auto;padding:22px 26px}
.set-card.tn-fs .tn-wrap{max-height:calc(100vh - 150px)}

/* ── Проверки и капчи ── номер строки = приоритет метода, поэтому он визуально ведущий */
.vf-list{display:flex;flex-direction:column;gap:10px}
.vf-m{border:1px solid var(--border);border-radius:14px;background:var(--card-2);overflow:hidden;transition:.2s}
.vf-m.on{border-color:var(--accent);background:var(--accent-soft)}
.vf-m-head{display:flex;align-items:center;gap:14px;padding:13px 16px}
.vf-m-num{flex:none;width:26px;height:26px;border-radius:8px;background:var(--card);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;color:var(--text-3);
  font-variant-numeric:tabular-nums}
.vf-m.on .vf-m-num{background:var(--accent);border-color:var(--accent);color:#fff}
.vf-m-main{flex:1;min-width:0}
.vf-m-title{font-size:14px;font-weight:600}
.vf-m-hint{font-size:12.5px;color:var(--text-3);line-height:1.45;margin-top:3px}
.vf-m-body{padding:2px 16px 14px;border-top:1px solid var(--border)}
.vf-note{font-size:12.5px;color:var(--text-3);line-height:1.5;margin-top:10px}
.vf-field{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.cap-need{margin-top:6px;padding:7px 10px;border-radius:10px;font-size:12.5px;line-height:1.4;
  background:var(--accent-soft);border:1px solid var(--accent)}
.cap-need a{color:var(--accent);font-weight:700;text-decoration:underline}
.cap-remote-modal{max-width:980px}
.cap-remote-status{margin-bottom:10px;padding:9px 11px;border:1px solid var(--border);border-radius:10px;
  background:var(--bg-3);font-size:13px;color:var(--text-2)}
.cap-remote-frame{display:flex;align-items:center;justify-content:center;min-height:260px;max-height:62vh;
  overflow:auto;border:1px solid var(--border);border-radius:12px;background:#181818}
.cap-remote-frame img{display:block;max-width:100%;height:auto;cursor:crosshair;user-select:none;-webkit-user-drag:none}
.cap-remote-frame img:not([src]){visibility:hidden}
.cap-remote-type{display:flex;gap:8px;margin:10px 0}
.cap-remote-type input{flex:1;min-width:0}
@media(max-width:700px){
  .cap-remote-modal{max-width:100%;height:96vh}
  .cap-remote-frame{max-height:55vh}
}
.cap-btns{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}

/* ── Автоведение: дерево подписок по ролям чатов ── */
.grb-tb{margin-bottom:14px}
.grb-tb-h{font-size:13px;font-weight:700;margin-bottom:7px}
.grb-ti{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;margin-bottom:6px;
  border:1px solid var(--border);border-radius:11px;background:var(--card-2)}
.grb-ti-main{flex:1;min-width:0}
.grb-ti-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.grb-ti-sub{font-size:11.5px;color:var(--text-3);margin-top:2px}
.grb-ti-chips{margin-top:6px;display:flex;flex-wrap:wrap;gap:5px}
.grb-ti-hint{margin-top:6px;font-size:12px;line-height:1.45;color:var(--accent)}
.chip.warn{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}

/* ── незакрытые пункты инструмента (подписки, права) — висят до устранения ── */
.mc-warn{margin:10px 14px 0;padding:11px 13px;border-radius:12px;font-size:12.5px;line-height:1.5;
  background:var(--accent-soft);border:1px solid var(--accent)}
.mc-warn-h{font-weight:700;margin-bottom:6px}
.mc-warn-i{padding:5px 0;border-top:1px solid var(--border)}
.mc-warn-i:first-of-type{border-top:0}
.mc-warn-ref{color:var(--text-3);font-size:11.5px}

/* ── Telegram Web: аватарки аккаунтов, карточка по наведению, поиск по всем ── */
.tgw-acct-img{position:absolute;inset:0;width:100%;height:100%;border-radius:14px;object-fit:cover}
.tgw-who{margin:12px 14px 0;font-size:13px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.tgw-who-u{color:var(--text-3)}
.tgw-who-bad{color:var(--err)}
.tgw-acc-card{position:fixed;z-index:300;display:none;min-width:230px;max-width:320px;padding:12px 14px;
  border-radius:14px;background:var(--card);border:1px solid var(--border-2);box-shadow:var(--shadow);
  font-size:12.5px;line-height:1.5}
.tgw-ac-title{font-size:14px;font-weight:700;margin-bottom:2px}
.tgw-ac-sess{color:var(--text-3);font-size:11.5px;margin-bottom:8px}
.tgw-ac-rows>div{display:flex;gap:8px;padding:2px 0}
.tgw-ac-rows span{flex:none;min-width:66px;color:var(--text-3)}
.tgw-ac-about{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);color:var(--text-2)}
.tgw-ac-load{margin-top:6px;color:var(--text-3)}
.tgw-find-all{border-style:solid}
.tgw-fa-head{margin:2px 0 6px;font-size:12px;color:var(--text-3)}
.tgw-fa-row{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;margin-bottom:6px;
  padding:8px 11px;border:1px solid var(--border);border-radius:11px;background:var(--card-2);
  color:var(--text);cursor:pointer;font-family:inherit}
.tgw-fa-row:hover{border-color:var(--accent)}
.tgw-fa-acc{font-size:11.5px;color:var(--text-3)}
.tgw-fa-chat{font-size:13px;font-weight:600}

/* ── пакетная загрузка сессий и массовое удаление ── */
.acc-bulk{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 10px;font-size:13px;
  justify-content:space-between}

/* Нейрочатинг: доп. настройки */
.nadv{margin-top:12px}
.nadv-tabs{display:flex;width:100%;overflow-x:auto;margin-bottom:2px}
.nadv-tabs button{flex:1 1 auto;white-space:nowrap;font-weight:600}
.nadv-pane{display:none}
.nadv-pane.on{display:block}
.nadv-grp{margin-top:16px;padding:14px 0 2px 14px;border-left:2px solid var(--border)}
.nadv-grp-t{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--text-3);margin-bottom:4px}
.nadv-grp .mm-set:first-of-type{margin-top:10px}
.nsl{margin-top:16px}
.nsl .slrow{margin-top:8px}
.nsl .set-label{display:block}
.nadv-warn{margin-top:10px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.5;
  color:#e8a33d;background:rgba(232,163,61,.10);border:1px solid rgba(232,163,61,.34)}
.btn.danger:hover:not(:disabled){border-color:#e5484d;color:#e5484d}
.acc-del-list{max-height:190px;overflow:auto;margin-top:8px;font-size:13px;line-height:1.7}
.up-head{margin:12px 0 6px;font-size:13px}
.up-list{max-height:300px;overflow:auto;display:flex;flex-direction:column;gap:6px}
.up-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--border);
  border-radius:10px;background:var(--card-2);flex-wrap:wrap}
.up-name{flex:1;min-width:150px;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.up-opts{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.up-flag{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-2);cursor:pointer;
  white-space:nowrap}
.up-proxy{max-width:180px;flex:none}
.up-state.ok{color:#3fb950}
.up-state.bad{color:#e5484d}
.up-bulk-row{display:flex;align-items:flex-end;gap:10px;margin-top:12px}
.vf-canvas{padding:12px 0 4px;border-bottom:1px solid var(--border)}
.vf-canvas-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

@media (max-width:760px){.grid{grid-template-columns:1fr}.nav-right .lang{display:none}}

/* Автоведение: создание каналов */
.grb-mk{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 2px}
.grb-mk .set-hint{flex:1;min-width:180px;line-height:1.45}
.grb-mk-drop{align-self:flex-start}
/* Поле с «серой приставкой»: подложка рисует текст, input держит каретку и выделение.
   Метрики подложки обязаны совпадать с .finp — иначе текст поедет. */
.grb-mirror{position:relative}
/* line-height задан числом у обоих: браузеры по-разному считают его для однострочного input,
   а подложка обязана попасть в ту же строку, что и каретка. */
.grb-mirror .finp{position:relative;z-index:1;background:transparent;color:transparent;-webkit-text-fill-color:transparent;caret-color:var(--text);line-height:21px}
.grb-mirror .finp::selection{background:var(--accent-soft)}
.grb-ghost{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;white-space:pre;
  background:var(--bg);border:1px solid transparent;border-radius:10px;padding:10px 12px;
  font:inherit;font-size:14px;line-height:21px;color:var(--text)}
.grb-ghost .dim{color:var(--text-3)}

/* Telegram Web: карточка аккаунта */
/* На телефоне карточка открывалась «наведением», которое браузер синтезирует из тапа, и уже не
   закрывалась: клик перерисовывал рельсу и уносил плитку вместе с её mouseleave. Теперь на узком
   экране её открывает долгое нажатие (tgweb.js), а показываем её не сбоку — там всего 56px рельсы,
   и карточка ложилась прямо на список чатов, — а нижней карточкой во всю ширину. */
.tgw-acct{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.tgw-acc-card.tgw-ac-sheet{left:8px;right:8px;bottom:8px;top:auto;min-width:0;max-width:none;
  max-height:62vh;overflow-y:auto;z-index:10500;border-radius:16px;padding:14px 16px;
  box-shadow:0 -10px 34px rgba(0,0,0,.38)}
.tgw-ac-hint{margin-top:10px;padding-top:8px;border-top:1px solid var(--border);
  color:var(--text-3);font-size:11.5px}

/* Рассылки: посты и бот */
.bcp-bot{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);
  border-radius:12px;background:var(--bg-2)}
.bcp-bot-main{flex:1;min-width:0}
.bcp-bot-acts{display:flex;gap:6px;flex-shrink:0}
.bcp-collector{display:flex;align-items:center;gap:9px;margin-top:10px;padding:10px 14px;
  border:1px solid var(--border);border-radius:12px;font-size:13px}
.bcp-dot{width:9px;height:9px;border-radius:50%;background:var(--text-3);flex-shrink:0}
.bcp-dot.on{background:#2ecc71;box-shadow:0 0 0 3px rgba(46,204,113,.18)}
.bcp-posts{display:flex;flex-direction:column;gap:8px}
.bcp-post{display:flex;align-items:center;gap:11px;padding:10px 13px;border:1.5px solid var(--border);
  border-radius:12px;cursor:pointer;transition:border-color .15s,background .15s}
.bcp-post:hover{background:var(--bg-2)}
.bcp-post.on{border-color:var(--accent)}
.bcp-radio{width:15px;height:15px;border-radius:50%;border:2px solid var(--border);flex-shrink:0}
.bcp-post.on .bcp-radio{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--accent)}
.bcp-no{font-weight:700;font-size:13px;flex-shrink:0;min-width:38px}
.bcp-title{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.bcp-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.bcp-acts{display:flex;gap:5px;flex-shrink:0}
.chip-ok{border-color:var(--accent);color:var(--accent)}
.bcp-chosen{padding:10px 13px;border:1px solid var(--border);border-radius:10px;font-size:13px;
  background:var(--bg-2)}
.bcp-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--bg-2);
  border:1px solid var(--border);color:var(--text-2);font-size:12.5px;line-height:1.65}
.bcp-err{padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.6;
  background:rgba(231,76,60,.10);border:1px solid rgba(231,76,60,.35);color:var(--text)}
@media (max-width:640px){
  .bcp-bot,.bcp-post{flex-wrap:wrap}
  .bcp-bot-acts,.bcp-acts{width:100%;justify-content:flex-end}
}
/* Рассылки: список тех, кто вправе присылать боту посты */
.bcp-allow{margin-top:12px;padding:12px 13px;border:1px solid var(--border);border-radius:12px;background:var(--card-2)}
.bcp-allow-h{font-size:13px;font-weight:600;color:var(--text);margin-bottom:6px}
/* Автоведение: выбор типа буфера в окне создания (сегмент .seg переиспользован) */
.grb-mk-kind{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.grb-mk-kind-l{font-size:12.5px;color:var(--text-2)}

/* Антифрод: очередь разбора */
.af-legend{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:14px 0 4px;
  padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:var(--card-2);
  font-size:12.5px;color:var(--text-2)}
.af-mono{font-family:"DM Mono",ui-monospace,monospace;font-size:12px;word-break:break-all}
.af-case{margin-top:16px;padding:14px 16px;border:1px solid var(--border);border-left-width:4px;
  border-radius:12px;background:var(--card-2)}
.af-case.review{border-left-color:#f5a524}
.af-case.held{border-left-color:var(--err)}
.af-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.af-badge{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 9px;border-radius:20px;border:1px solid var(--border);color:var(--text-2)}
.af-badge.review{border-color:#f5a524;color:#f5a524}
.af-badge.held{border-color:var(--err);color:var(--err)}
.af-score{min-width:34px;text-align:center;font-weight:800;font-size:15px;padding:2px 8px;
  border-radius:8px;background:var(--bg-2);color:var(--text)}
.af-pair{flex:1;min-width:220px;font-size:13.5px}
.af-sum{font-weight:800;font-size:15px;white-space:nowrap}
.af-meta{margin-top:6px;font-size:11.5px;color:var(--text-3)}
.af-reason{margin-top:9px;padding:8px 11px;border-radius:9px;font-size:12.5px;line-height:1.55;
  background:rgba(255,84,112,.09);border:1px solid rgba(255,84,112,.30);color:var(--text)}
.af-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}
.af-col{min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg-2)}
.af-col-h{font-size:12px;font-weight:700;color:var(--text);margin-bottom:6px}
.af-list{margin:0;padding-left:16px;font-size:12.5px;line-height:1.65;color:var(--text-2)}
.af-list li{margin:2px 0}
.af-list.af-warn li{color:#f5a524}
.af-list.af-ok li{color:var(--ok)}
.af-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.af-acts form{display:inline}
@media (max-width:820px){.af-cols{grid-template-columns:1fr}}

/* Прогрев · живые диалоги: смета расхода и блок тонких настроек */
.wu-cost{margin-top:14px;padding:12px 14px;border-radius:12px;font-size:13.5px;line-height:1.55;
  background:var(--accent-soft);border:1px solid var(--accent);color:var(--text)}
.wu-cost .set-hint{color:var(--text-2)}
.wu-adv{margin-top:16px;border:1px solid var(--border);border-radius:12px;background:var(--bg-2);padding:0 14px}
.wu-adv>summary{cursor:pointer;padding:12px 0;font-size:13px;font-weight:600;color:var(--text-2);list-style:none}
.wu-adv>summary::-webkit-details-marker{display:none}
.wu-adv>summary::before{content:"▸ "}
.wu-adv[open]>summary::before{content:"▾ "}
.wu-adv[open]{padding-bottom:14px}

/* Рассылки: раскрытие поста прямо в списке — превью «как увидит получатель» */
.bcp-item{display:flex;flex-direction:column;min-width:0}
.bcp-item.open .bcp-post{border-bottom-left-radius:0;border-bottom-right-radius:0}
.bcp-prev{padding:12px 14px;border:1.5px solid var(--border);border-top:none;
  border-radius:0 0 12px 12px;background:var(--bg-2)}
.bcp-item.open .bcp-post.on{border-bottom-color:transparent}
.bcp-prev-note{font-size:12.5px;line-height:1.6;color:var(--text-2);margin-bottom:10px}
.bcp-prev .tgprev{background:var(--card-2)}
.bcp-prev .tgprev-ph{padding:14px 12px;text-align:center;line-height:1.5;max-width:260px}
.bcp-prev .tgprev-circle-ph{padding:0 16px;text-align:center;line-height:1.4}
/* Шапка «Переслано из …» — так пост видно у получателя при доставке с пометкой */
.tgfwd{font-size:12px;color:var(--accent);font-weight:600;padding:0 2px 1px}
/* Кнопка «загрузить медиа поста для просмотра» и плитка альбома в превью */
.bcp-prev-get{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:9px;line-height:1.55}
.tgalbum{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:3px;border-radius:11px;overflow:hidden}
.tgalb-i{display:block;width:100%;max-height:190px;object-fit:cover;background:var(--bg-2)}
audio.tgalb-i,.tgprev-au{width:100%;max-width:280px;height:38px;object-fit:unset}
/* Прежний текст убранного текстового режима — показываем, чтобы человек собрал из него пост */
.bcp-legacy{margin-top:8px;padding:9px 11px;border-radius:9px;background:var(--bg-2);
  border:1px solid var(--border);color:var(--text-2);font-size:12.5px;line-height:1.55;
  max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word}

/* Кошелёк: выбор ёмкости при покупке модуля (сколько аккаунтов) */
.cap-box{max-width:440px}
.cap-lab{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);margin-bottom:8px}
.cap-lab b{margin-left:auto;font-size:20px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.cap-range{width:100%;accent-color:var(--accent);margin:0 0 10px}
.cap-presets{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.cap-chip{background:var(--bg-2);border:1px solid var(--border);color:var(--text-2);border-radius:9px;
  padding:6px 11px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.cap-chip:hover{border-color:var(--border-2);color:var(--text)}
.cap-chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.cap-num{width:84px;background:var(--bg-2);border:1px solid var(--border);color:var(--text);
  border-radius:9px;padding:6px 9px;font-size:13px;font-weight:600}
.cap-own{margin:-4px 0 10px}
.cap-sum{background:var(--card-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:14px}
.cap-line{display:flex;justify-content:space-between;align-items:center;padding:5px 0;
  color:var(--text-2);font-size:13.5px;font-variant-numeric:tabular-nums}
.cap-line b{color:var(--text);font-weight:600}
.cap-line.total{border-top:1px solid var(--border);margin-top:7px;padding-top:11px;color:var(--text)}
.cap-line.total b{color:var(--accent);font-size:19px;font-weight:800}

/* Автоведение · вкладка «Нейросетевой фильтр». Вкладка читается как воронка сверху вниз:
   обычные условия (бесплатные) стоят выше нейросетевых (платных) — так видно, что каждое
   включённое обычное условие уменьшает счёт. Оба блока — обычные .gsec со своим выключателем. */
/* выбор модели, которой судим посты, — внутри блока нейросетевых условий */
.pf-aimodel{margin:2px 0 14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;
  background:var(--bg-2)}
/* типы вложений «своего сочетания» — плитка чекбоксов, а не три числовых поля */
.pf-types{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.pf-chk{display:inline-flex;align-items:center;gap:6px;background:var(--bg-2);
  border:1px solid var(--border);color:var(--text-2);border-radius:9px;padding:6px 10px;
  font-size:13px;cursor:pointer;transition:.15s}
.pf-chk:hover{border-color:var(--border-2);color:var(--text)}
.pf-chk input{flex:0 0 auto;accent-color:var(--accent)}
/* предупреждение о большой базе — рядом со сметой, а не только в модалке запуска */
.pf-warn{margin-top:14px;padding:12px 14px;border-radius:12px;font-size:13.5px;line-height:1.55;
  background:rgba(248,113,113,.08);border:1px solid var(--err);color:var(--text)}
.pf-warn b{color:var(--text)}
/* «как сделать дешевле» — советы по текущим настройкам, под сметой */
.pf-tips{margin-top:10px;padding:11px 14px;border-radius:12px;background:var(--bg-2);
  border:1px solid var(--border);font-size:13px;line-height:1.6;color:var(--text-2)}
.pf-tips-h{font-weight:700;color:var(--text);margin-bottom:5px}
.pf-tips>div+div{margin-top:4px}

/* --- Автоведение: события движка (остановленный нейрофильтр, придержанные посты) --- */
/* Полоса про непроверенные посты. Не окно: такие посты копятся постоянно, и всплывашка на
   каждый заход стала бы фоновым шумом. Стоит сразу под кнопками запуска, гасится крестиком. */
.grb-astrip{display:flex;align-items:flex-start;gap:10px;margin:0 0 16px;padding:12px 14px;
  border-radius:12px;font-size:13.5px;line-height:1.55;color:var(--text);
  background:rgba(251,191,36,.09);border:1px solid var(--warn,#fbbf24)}
.grb-astrip>div{flex:1}
.grb-astrip .mini{flex:0 0 auto;background:none;border:none;color:var(--text-3);cursor:pointer;
  font-size:14px;line-height:1;padding:2px 4px}
.grb-astrip .mini:hover{color:var(--text)}
/* Список остановленных маршрутов в окне: у каждого своя кнопка — искать нужный человек не должен. */
.grb-arows{display:flex;flex-direction:column;gap:8px}
.grb-arow{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 12px;border-radius:10px;background:var(--bg-2);border:1px solid var(--border)}
.grb-arow>div{min-width:0}

/* --- Админка · «Наш ИИ»: ГРУППЫ ключей. Карточка ключа (.pk-*) раньше жила инлайном в admin.html;
   переехала сюда без изменений, потому что теперь рисуется внутри группы. --- */
.pk-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.pk{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:start;
    background:var(--surface,#16181d);border:1px solid var(--line,#2a2e35);border-radius:12px;padding:12px 14px}
.pk.is-primary{border-color:#c76a2a;box-shadow:inset 3px 0 0 #c76a2a}
.pk.is-resting{border-color:#8a6d1f;box-shadow:inset 3px 0 0 #8a6d1f}
.pk.is-off{opacity:.55}
.pk-ord{display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:2px}
.pk-num{font:700 13px/1 ui-monospace,Menlo,Consolas,monospace;color:var(--muted,#8b929c)}
.pk-arrow{width:26px;height:22px;line-height:20px;text-align:center;border-radius:6px;cursor:pointer;
          background:transparent;border:1px solid var(--line,#2a2e35);color:var(--muted,#8b929c);padding:0;font-size:12px}
.pk-arrow:hover:not(:disabled){color:#e9e8e4;border-color:#4a5058}
.pk-arrow:disabled{opacity:.25;cursor:default}
.pk-badge{display:inline-flex;align-items:center;gap:6px;font:700 10px/1 ui-monospace,Menlo,Consolas,monospace;
          letter-spacing:.09em;text-transform:uppercase;padding:4px 9px;border-radius:99px;border:1px solid currentColor}
.pk-b-primary{color:#e08a4c} .pk-b-reserve{color:#7d93a8} .pk-b-resting{color:#d7a93c}
.pk-b-off{color:#7a8089} .pk-b-nokey{color:#c9564c}
.pk-dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.pk-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.pk-note{font-size:12px;color:var(--muted,#8b929c)}
.pk-fields{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.pk-acts{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:96px}

/* ── Выбор группы и модели «Нашего ИИ» (ai_conn.js) + выбор модели нейрофильтра Автоведения ── */
.aip{display:flex;flex-direction:column}
/* Группы — тот же ряд кнопок, что и переключатель провайдера (.iseg). На узком экране ряд
   переносится по словам, а не вылезает за край: три группы там встают в два-три ряда. */
.aip-groups{max-width:100%}
.aip-groups button{display:inline-flex;align-items:center;gap:8px}
/* Список «не поместившихся» — только когда группы в ряд не влезли (см. ROW_MAX в ai_conn.js) */
.aip-more{margin-top:8px}
/* Компактный вид (внутри окна маршрута): группа одной строкой, без ряда на всю ширину */
.aip-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 4px}
.aip-line-l{font-size:13px;color:var(--text-2)}
.aip-line .lsel{flex:1 1 190px;min-width:0}
/* Раскрытый список растёт в потоке, и центрирование по строке уводило подпись вниз, к середине
   открытого меню. Открыт — равняем по верху, подпись держим на уровне закрытой кнопки. */
.aip-line:has(.lsel.open){align-items:flex-start}
.aip-line:has(.lsel.open) .aip-line-l{padding-top:10px}
/* Модели — плитки ОДНОЙ ширины: имена у них разной длины, и рядом чипов ряд выглядел рваным.
   Узкий экран (и модалка) сам сводит сетку в одну колонку — колонка не уже 186px. */
.aip-models{display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:8px}
.aip-model{display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--card-2);border:1px solid var(--border);color:var(--text-2);border-radius:10px;
  padding:9px 12px;font:inherit;font-size:13px;line-height:1.35;text-align:left;cursor:pointer;transition:.15s}
.aip-model:hover{border-color:var(--border-2)}
.aip-model.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.aip-model-n{min-width:0;overflow-wrap:anywhere}
/* «дешевле всего» — метка ВНУТРИ плитки модели: порядок и так по цене, но глазами это не читается */
.aip-cheap{font-size:10px;letter-spacing:.04em;text-transform:uppercase;opacity:.75;flex:0 0 auto;
  border:1px solid currentColor;border-radius:99px;padding:2px 6px;line-height:1;white-space:nowrap}
/* Вынужденное переключение — не ошибка: спокойная плашка, а не красная */
.aip-fb{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;
  border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;
  background:var(--bg-2);font-size:12.5px;line-height:1.55;color:var(--text-2)}
.aip-notice .mc-modal-box{width:min(520px,94vw)}

/* Группа: рамка вокруг своих ключей — видно, где кончается одна лестница отказа и начинается другая. */
.pg-list{display:flex;flex-direction:column;gap:16px;margin-top:14px}
.pg{border:1px solid var(--border);border-radius:14px;padding:14px 16px;background:var(--card)}
.pg-off{opacity:.62}
.pg-orphan{border-color:var(--err)}
.pg-top{display:flex;gap:12px;align-items:flex-start}
.pg-ord{display:flex;flex-direction:column;align-items:center;gap:4px;width:34px;flex:0 0 34px;padding-top:2px}
.pg-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.pg-title b{font-size:16px}
.pg-warn{font-size:12px;color:var(--err)}
.pg-form{display:flex;flex-direction:column;gap:8px;min-width:300px;max-width:520px}
.pg-lab{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--text-2)}
.pg-lab input,.pg-lab textarea{background:var(--card-2);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:6px 9px;font:inherit;font-size:13px;resize:vertical}
.pg-lab input:focus,.pg-lab textarea:focus{outline:none;border-color:var(--accent)}
.pg-check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2)}
.pg-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.pg-m-p{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pg-new{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:16px;padding:12px 14px;
  border:1px dashed var(--border-2,var(--border));border-radius:12px}

/* ── Раздел «Наш ИИ»: ключи, модели с ценами и настройки — тремя пронумерованными полосами ──
   Раньше цены жили отдельным списком наверху страницы, а модели перепечатывались руками в поле
   группы: два экрана, между которыми нет связи. Теперь модель добавляется в группу вместе со своей
   ценой одной формой, поэтому строка модели устроена как строка ключа (номер, стрелки, поля). */
.pg-sec{margin:14px 0 4px}
/* Блок «Ключи» — общий, вне групп: своя рамка, чтобы читалось как отдельный шаг, а не как часть
   ближайшей группы. Заголовок блока «Группы» — просто строка над списком карточек. */
.pg-block{padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--card)}
.pg-block-h{margin-top:22px}
/* Настройки группы — подвал карточки: имя и галочки нужны редко, а модели и цены — каждый раз */
.pg-gset{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
.pg-sec-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--text-3);margin-bottom:9px}
/* Базовый тариф: одна строка над списком групп — страховка, а не рабочая цена */
.pg-base{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-top:14px;padding:12px 14px;
  border:1px solid var(--border);border-radius:12px;background:var(--card-2)}
.pg-base>b{align-self:center}
/* Строка модели: тот же скелет, что у ключа (.pk) — номер и стрелки слева, поля справа */
.pgm-list{display:flex;flex-direction:column;gap:10px}
.pgm{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start;
  border:1px solid var(--border);border-radius:12px;padding:11px 13px;background:var(--card-2)}
.pgm-nopr{border-color:var(--err)}
.pgm-b{min-width:0}
.pgm-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.pgm-shown{font-size:14px}
/* Техническое имя — моноширинным и приглушённо: в запрос уходит оно, но человеку важнее видимое */
.pgm-tech{font:12px/1.4 ui-monospace,Menlo,Consolas,monospace;color:var(--text-3);
  background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:2px 7px;
  overflow-wrap:anywhere}
.pgm-fields,.pgm-new,.pk-new{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.pgm-new,.pk-new{margin-top:12px;padding:12px 14px;
  border:1px dashed var(--border-2,var(--border));border-radius:12px}
.pk-new{align-items:center}
.pgm-new-h{flex:0 0 100%;font-size:13px}
.pgm-f{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--text-3)}
.pgm-f input{background:var(--card);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:6px 9px;font:inherit;font-size:13px;max-width:150px}
.pgm-f input[type=number]{max-width:104px}
.pgm-f input:focus{outline:none;border-color:var(--accent)}
/* Выбор провайдера/группы — СВОИ кнопки: браузерных <select> в панели нет */
.pk-chips{display:inline-flex;gap:6px;flex-wrap:wrap}
.pk-chip{position:relative;display:inline-flex}
.pk-chip input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.pk-chip span{display:inline-block;border:1px solid var(--border);border-radius:999px;
  background:var(--card-2);color:var(--text-2);padding:5px 11px;font-size:12.5px;line-height:1.2;
  cursor:pointer;transition:.15s;white-space:nowrap}
.pk-chip span:hover{border-color:var(--border-2,var(--accent))}
.pk-chip input:checked+span{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}
.pk-chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.pk-fl{font-size:11.5px;color:var(--text-3);align-self:center}
/* Цены, оставшиеся без группы: по ним никто не работает, но молча удалять их нельзя */
.pg-free{margin-top:18px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;
  background:var(--card-2)}
.pg-free-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 0;
  border-bottom:1px solid var(--border)}
.pg-free-row:last-child{border-bottom:none}

/* ── Кошелёк: расходы по инструментам (wallet.js) ──
   Сводка компактная, детализация — по раскрытию строки. На узком экране число списаний и сумма
   обязаны остаться на одной строке с названием: разбивка нужна «на бегу», а не только с ПК. */
.wl-sp-total{display:flex;justify-content:space-between;align-items:baseline;
  padding:10px 12px;margin:2px 0 10px;border-radius:12px;background:var(--card-2);
  border:1px solid var(--border);font-size:14px;color:var(--text-2)}
.wl-sp-total b{font-size:18px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.wl-sp-list{display:flex;flex-direction:column;gap:6px}
.wl-sp-g{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--bg-2)}
.wl-sp-row{display:flex;align-items:center;gap:9px;width:100%;padding:11px 13px;cursor:pointer;
  background:none;border:0;color:var(--text);font:inherit;text-align:left}
.wl-sp-row:hover{background:var(--card-2)}
.wl-sp-car{flex:none;width:12px;color:var(--text-3);font-size:11px}
.wl-sp-name{flex:1 1 auto;min-width:0;font-weight:600;font-size:14px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl-sp-tag{flex:none;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent)}
.wl-sp-cnt{flex:none;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.wl-sp-sum{flex:none;font-weight:700;font-variant-numeric:tabular-nums}
.wl-sp-det{border-top:1px solid var(--border);padding:4px 13px 10px}
.wl-sp-item{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border)}
.wl-sp-item:last-of-type{border-bottom:none}
.wl-sp-item-l{flex:1 1 auto;min-width:0}
.wl-sp-note{font-size:13px;color:var(--text-2);overflow-wrap:anywhere}
.wl-sp-more{margin-top:8px}
.wl-tx-src{color:var(--text-2)}
@media(max-width:560px){
  .wl-sp-row{gap:7px;padding:10px}
  .wl-sp-name{font-size:13px}
  .wl-sp-tag{display:none}     /* на телефоне место дороже ярлыка: категория видна при раскрытии */
}
.pg-new input[type=text]{background:var(--card-2);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:6px 9px;font:inherit;font-size:13px}
/* Подтверждение удаления группы — своё окно, БЕЗ браузерного confirm() */
.pg-ov{position:fixed;inset:0;z-index:1200;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:20px}
.pg-dlg{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px 22px;
  width:min(520px,96vw);box-shadow:var(--shadow)}
.pg-dlg h3{font-size:18px;margin-bottom:10px}
.pg-dlg p{font-size:13.5px;line-height:1.55;margin-bottom:10px}
.pg-dlg-btns{display:flex;gap:10px;justify-content:flex-end;align-items:center;margin-top:16px}
.pg-dlg-btns .mini{text-decoration:none}

/* ── Главная: заметка «Telegram не привязан» сбоку от строки-обзора (home.js) ──
   Не баннер и не окно: человек ничего не нарушил, просто уведомления платформы до него не
   доходят. Карточка того же роста, что и плитки обзора, с акцентной полосой слева. Закрыть её
   нельзя — она и не мешает, потому что исчезает сама после привязки. */
.home-top{display:flex;align-items:stretch;gap:12px;margin:18px 0 26px}
.home-top>.home-ov{flex:1 1 auto;min-width:0;margin:0}
.home-side{flex:0 0 268px;background:var(--card);border:1px solid var(--border);
  border-left:3px solid var(--accent);border-radius:14px;padding:14px 16px;
  font-size:12.5px;line-height:1.55;color:var(--text-2)}
.home-side[hidden]{display:none}
.home-side-h{display:flex;align-items:center;gap:2px;font-size:13.5px;font-weight:700;
  color:var(--text);margin-bottom:6px}
.home-side p{margin:0 0 10px}
@media(max-width:980px){.home-top{flex-direction:column}.home-side{flex:1 1 auto}}

/* ── Автоведение: окно «ИИ недоступен» (grb.js) ──
   Причина отказа стоит отдельной строкой: «кончился баланс» и «провайдер не отвечает» требуют
   от человека разных действий, и одинаковый текст на оба случая бесполезен. */
.grb-adown-why{font-size:12.5px;line-height:1.55;color:var(--text-2);margin:0}

/* ── «Наш ИИ»: описание группы + жёсткое подтверждение удаления группы ──
   .aip-note — «Описание для клиента» под селектором группы (ai_conn.js). Это подпись, а не абзац:
   держим три строки максимум, дальше многоточие; слитный кусок без пробелов (ссылка, ключ) ломаем
   принудительно — иначе он вылезает за карточку настроек и растягивает её по горизонтали. */
.aip-note{margin:6px 0 2px;font-size:12.5px;line-height:1.5;color:var(--text-3);
  overflow-wrap:anywhere;word-break:break-word;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
/* Окно удаления группы в админке: потеря ключей необратима, поэтому она не «ещё один muted-абзац». */
.pg-dlg-hard{font-size:13.5px;line-height:1.55;margin-bottom:10px;color:var(--text-2);
  border-left:3px solid var(--err);border-radius:0 8px 8px 0;padding:8px 10px;background:var(--card-2)}
.pg-dlg-hard b{color:var(--err)}
.pg-dlg-ack{margin-top:14px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;
  background:var(--card-2);cursor:pointer}

/* ── Окно удаления группы: перенос ВСЕХ ключей одной кнопкой ──
   Совет «перенесите ключи» без кнопки не выполняют, поэтому кнопка стоит прямо в окне, рядом с
   предупреждением. На узком экране поле и кнопка встают в столбик — окно и так во весь экран. */
.pg-dlg-move{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:0 0 4px}
.pg-dlg-movel{display:flex;flex-direction:column;gap:6px;flex:1 1 240px;min-width:0;
  font-size:12.5px;color:var(--text-2)}
@media(max-width:520px){.pg-dlg-move{flex-direction:column;align-items:stretch}}

/* ── «Наш ИИ»: заметка «провайдер не отвечает» (ai_conn.js) ──
   Тот же спокойный вид, что и у заметки о вынужденном переключении (.aip-fb), но полоса слева
   приглушённая: человеку тут делать нечего, состояние временное и гаснет само. */
.aip-down{border-left-color:var(--text-3)}

/* ── Прокси обязателен: окно запуска, плашки и метки ──
   Аккаунт без прокси мы в сеть не выпускаем вовсе, поэтому предложение решить это должно быть
   заметным, но не кричащим: «Купить у нас» — единственная акцентная (оранжевая) кнопка. */
.btn-buy{background:linear-gradient(180deg,#ff9f45,#f37820);border:1px solid #e06a10;color:#1a1206;
  font-weight:700;box-shadow:0 4px 14px rgba(243,120,32,.28)}
.btn-buy:hover{filter:brightness(1.06)}
.btn-buy:active{transform:translateY(1px)}

/* Список аккаунтов внутри окна «нужен прокси» */
.prx-need-list{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px;max-height:132px;overflow:auto}
.prx-need-list span{font-size:12px;padding:3px 9px;border-radius:999px;background:var(--card-2);
  border:1px solid var(--border);color:var(--text-2);white-space:nowrap}

/* --- Вход строго в свой кабинет: экран подтверждения, разбор дублей Telegram, выход из «от лица» --- */
/* Экран «Войти в кабинет X?» (webapp/templates/auth_confirm.html) */
.ac-enter .form{margin-top:4px}
.ac-enter .btn-primary{width:100%}
/* Предупреждение о СМЕНЕ кабинета — не ошибка, а внимание: жёлтое, а не красное */
.alert.ac-switch{background:rgba(240,169,43,.12);border-color:rgba(240,169,43,.45);color:var(--text)}
.ac-note{color:var(--text-3);line-height:1.5}
/* Подтверждение успеха на служебных страницах админки */
.alert.ok-alert{background:rgba(56,199,126,.12);border-color:rgba(56,199,126,.45);color:var(--text)}
/* Кнопка выхода из просмотра «от лица»: POST-форма, но выглядит как прежняя ссылка в баннере */
.imp-banner .imp-back{display:inline}
.imp-banner .imp-back button{background:none;border:none;padding:0;margin-left:4px;font:inherit;
  color:var(--accent);font-weight:700;cursor:pointer}
.imp-banner .imp-back button:hover{text-decoration:underline}
/* Разбор дублей Telegram (webapp/templates/admin_identity.html) */
.idn-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 16px;margin:12px 0}
.idn-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.idn-card .tbl{margin:0}
/* Небольшое окно подтверждения (вход «от лица») — та же модалка, но уже */
.au-modal.au-modal-sm{width:min(460px,96vw)}
.au-modal-sm .au-body p{font-size:14px;line-height:1.5;color:var(--text-2)}

/* Список «аккаунты не в рабочем состоянии» в окне запуска инструмента: имя + причина (бан,
   заморозка, разлогин, флуд со сроком). Строками, а не плашками, — причина длиннее имени. */
.mc-unhealthy{margin:10px 0 2px;max-height:190px;overflow:auto;border:1px solid var(--border);
  border-radius:10px;background:var(--card-2)}
.mc-unhealthy-i{padding:7px 11px;font-size:12.5px;color:var(--text-2);border-top:1px solid var(--border)}
.mc-unhealthy-i:first-child{border-top:0}
.mc-unhealthy-i b{color:var(--text)}

/* Честное предупреждение под выбором «Единый прокси»: адрес общий на всех клиентов. */
.prx-shared-warn{margin:6px 0 0;padding:9px 11px;border-radius:10px;font-size:12px;line-height:1.5;
  color:var(--text-2);background:var(--card-2);border:1px solid var(--border);border-left:3px solid #f37820}
.prx-shared-warn b{color:var(--text)}

/* Плашка над таблицей аккаунтов: «нужен прокси» (работа закрыта) и «пока без прокси» (послабление) */
.prx-note{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin:0 0 10px;padding:11px 14px;border:1px solid var(--border);border-left:3px solid var(--text-3);
  border-radius:10px;background:var(--card-2)}
.prx-note b{display:block;margin-bottom:2px}
.prx-note>div{min-width:0;flex:1 1 320px}
.prx-note-stop{border-left-color:#f37820}
.prx-need-btn{cursor:pointer;font:inherit;font-size:12px}

/* «Без прокси» в выборе — серое и невыбираемое тем, кому это не разрешено */
select option:disabled{color:var(--text-3)}
@media(max-width:520px){.prx-note{flex-direction:column;align-items:stretch}}

/* ── Фильтр находок по языку («Сбор аудитории»: «Поиск каналов» и «Поиск») ──
   Четырнадцать языков — это ряд плашек-переключателей, а не список с галочками: так блок занимает
   две-три строки и одинаково жмётся на телефоне. Отмеченный язык подсвечивается как выбранная
   вкладка; ничего не отмечено — фильтр выключен, и об этом прямо говорит подпись под рядом. */
.lng-row{display:flex;flex-wrap:wrap;gap:8px}
.lng-chip{font-family:inherit;font-size:13px;font-weight:600;line-height:1;padding:8px 13px;
  border-radius:999px;cursor:pointer;white-space:nowrap;transition:.18s var(--ease);
  background:transparent;color:var(--text-2);border:1px solid var(--border-2)}
.lng-chip:hover{border-color:var(--accent);color:var(--accent)}
.lng-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}

/* ── Точка «инструмент сейчас работает» у подвкладки раздела ──
   Цвет — тот же оранжевый акцент темы, что и у точки в меню (.nav-dot.on), отдельного цвета не
   заводим. Пока модуль стоит, точка НУЛЕВОЙ ширины: ряд вкладок выглядит ровно как раньше и на
   узком экране ничего не переносится; загорелась — раздвинулась на 7px. */
.run-dot{display:inline-block;width:0;height:7px;border-radius:50%;background:transparent;
  vertical-align:middle;flex-shrink:0;transition:width .2s var(--ease),margin .2s var(--ease),background .2s}
.run-dot.on{width:7px;margin-right:7px;background:var(--accent);
  box-shadow:0 0 8px var(--accent),0 0 3px var(--accent)}
.run-dot.on.warn{background:#e6a23c;box-shadow:0 0 8px #e6a23c,0 0 3px #e6a23c}
@media (prefers-reduced-motion:no-preference){
  .run-dot.on{animation:runPulse 2.4s ease-in-out infinite}
  @keyframes runPulse{0%,100%{box-shadow:0 0 8px var(--accent),0 0 3px var(--accent)}
    50%{box-shadow:0 0 3px var(--accent)}}
}
/* ряд вкладок + знак «?» рядом с ним */
.run-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px}
/* «?» у заголовка группы меню: у самого заголовка разрядка и капс — на кружке они не нужны */
.side-group .htip{letter-spacing:normal;text-transform:none;margin-left:6px}
