/* ───────── Токены ───────── */
:root{
  --bg:#f5f6f8;--panel:#fff;--soft:#f9fafb;--line:#e7e9ee;--line-2:#d8dce4;
  --text:#141821;--muted:#6b7385;--accent:#4361ee;--accent-h:#3450d6;--accent-soft:#eef1ff;--accent-ink:#2f45b8;
  --up:#16a34a;--down:#dc2626;--warn:#b45309;
  --r:10px;--r-sm:7px;
  --sh-1:0 1px 2px rgba(16,24,40,.05);--sh-2:0 8px 28px rgba(16,24,40,.14);
  --ring:0 0 0 3px rgba(67,97,238,.18);
  --head-h:52px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:13.5px/1.45 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  display:flex;flex-direction:column;-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-h)}
button{font:inherit;cursor:pointer}
h2{letter-spacing:-.01em}
.muted{color:var(--muted)}
.spacer{flex:1}
.hint{color:var(--muted)}
code{background:#f0f2f6;border-radius:4px;padding:1px 5px;font-size:12px}
::selection{background:#dbe2ff}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#d5d9e2;border-radius:10px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#b9bfcc;background-clip:content-box;border:2px solid transparent}

/* ───────── Иконки ───────── */
.i{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.btn .i{margin-right:6px;margin-left:-2px}
.btn.icon .i,.iconbtn .i{margin:0}

/* ───────── Шапка ───────── */
.top{display:flex;align-items:center;gap:10px;height:var(--head-h);padding:0 16px;background:var(--panel);border-bottom:1px solid var(--line);flex:none;position:relative;z-index:30}
.top form{margin:0}
.brand{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:15px;color:var(--text);letter-spacing:-.01em}
.brand:hover{color:var(--text)}
.logo{width:44px;height:auto;display:block;flex:none}
.crumbs{display:flex;align-items:center;gap:8px;min-width:0;color:var(--muted)}
.crumbs .sep{color:#c3c8d3}
.crumbs .ttl{color:var(--text);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34vw}
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;background:#f0f2f6;color:#4b5365;font-size:12px;white-space:nowrap;line-height:1.5}
.pill b{font-weight:600;color:var(--text)}
.pill.accent,.role-badge{background:var(--accent-soft);color:var(--accent-ink)}
.role-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 9px;font-size:12px;white-space:nowrap}
.balance{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-weight:600;font-size:12.5px;white-space:nowrap}
.balance .i{width:14px;height:14px}
.avatar{width:32px;height:32px;border-radius:50%;background:#e9ecf5;color:#3a4566;font-weight:600;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);padding:0;text-transform:uppercase;font-size:13px}
.avatar:hover,.avatar[aria-expanded=true]{background:#dfe4f5}
.usermenu{position:relative}
.usermenu .menu{right:0;top:calc(100% + 8px);min-width:230px;padding:6px}
.menu .who{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin:-2px -2px 6px}
.menu .who b{display:block;font-size:13.5px}
.menu .who span{color:var(--muted);font-size:12px}
.menu .mi{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:0;background:none;border-radius:7px;color:var(--text);text-align:left;font-size:13px;cursor:pointer}
.menu .mi:hover{background:#f3f4f8;color:var(--text)}
.menu .mi .i{color:var(--muted)}
.menu .mi.danger,.menu .mi.danger .i{color:var(--down)}
.menu form{margin:0}
.menu hr{border:0;border-top:1px solid var(--line);margin:6px 0}

/* ───────── Кнопки ───────── */
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-2);background:#fff;border-radius:var(--r-sm);padding:6px 12px;color:var(--text);
  line-height:1.4;font-weight:500;white-space:nowrap;box-shadow:var(--sh-1);transition:background .12s,border-color .12s,box-shadow .12s}
.btn:hover{border-color:#c2c8d4;background:#f8f9fb;color:var(--text)}
.btn:focus-visible,.chip:focus-visible,.tab:focus-visible,.avatar:focus-visible{outline:0;box-shadow:var(--ring);border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px rgba(67,97,238,.35)}
.btn.primary:hover{background:var(--accent-h);border-color:var(--accent-h);color:#fff}
.btn.ghost{border-color:transparent;background:transparent;box-shadow:none;color:#3b4459}
.btn.ghost:hover{background:#eef0f5}
.btn.danger{color:var(--down)}
.btn.danger:hover{background:#fef2f2;border-color:#f3b8b8}
.btn.sm{padding:3px 9px;font-size:12px}
.btn.icon{padding:6px;width:32px;height:32px}
.btn:disabled{opacity:.5;cursor:default;box-shadow:none}

/* ───────── Уведомления ───────── */
.messages{padding:10px 16px 0;flex:none}
.msg{padding:9px 12px;border-radius:var(--r-sm);margin-bottom:6px;background:var(--accent-soft);color:#243a8a;border:1px solid #dbe2ff}
.msg.success{background:#ecf9f1;color:#14532d;border-color:#c9eed8} .msg.error{background:#fef1f1;color:#7f1d1d;border-color:#f6cfcf}
.msg.warning{background:#fff7e6;color:#7a4a05;border-color:#f6e2b3}
.msg.note-row{display:flex;align-items:center;gap:10px;justify-content:space-between}
.msg.note-row form{margin:0}
.progress{height:2px;background:var(--accent);width:0;transition:width .3s;flex:none}

/* ───────── Каркас ───────── */
.layout{flex:1;min-height:0;display:grid;grid-template-columns:var(--aside-w,268px) 1px 1fr}
aside{background:var(--panel);overflow:hidden;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.aside-top{flex:1;min-height:90px;overflow:auto}
.aside-runs{flex:none;height:var(--runs-h,240px);min-height:60px;overflow:auto;border-top:1px solid var(--line);background:var(--soft)}
aside>.hsplit{margin:-5px 0 -4px;flex:none}
.aside-runs .sec:first-child{margin-top:10px;position:sticky;top:0;background:var(--soft);padding-bottom:4px;z-index:1}
.vsplit,.hsplit{--c:transparent;flex:none;touch-action:none;position:relative;z-index:5}
.vsplit{cursor:col-resize;margin-left:-5px;margin-right:-4px;width:9px;background:linear-gradient(to right,transparent 3px,var(--c) 3px,var(--c) 5px,transparent 5px)}
.hsplit{height:9px;margin:-4px 0;cursor:row-resize;background:linear-gradient(to bottom,transparent 3px,var(--c) 3px,var(--c) 5px,transparent 5px)}
.vsplit:hover,.hsplit:hover,.vsplit.on,.hsplit.on{--c:var(--accent)}
body.dragging{user-select:none}
body.dragging.dx{cursor:col-resize} body.dragging.dy{cursor:row-resize}
body.dragging iframe,body.dragging canvas{pointer-events:none}
main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
main.page{overflow:auto;padding:24px 28px}

/* ───────── Сайдбар ───────── */
.sec{display:flex;align-items:center;gap:2px;margin:14px 10px 6px 14px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#8a91a3}
.sec:first-child{margin-top:12px}
.sec>span{flex:1}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;color:#6b7385;border:0;background:none;padding:0}
.iconbtn:hover{background:#eef0f5;color:var(--accent)}
.tree ul{list-style:none;margin:0;padding-left:12px}
.tree>ul{padding:0 8px 4px}
.tree li{margin:1px 0}
.tree .row{display:flex;align-items:center;gap:2px;border-radius:var(--r-sm);padding-right:2px;position:relative}
.tree .row:hover{background:#f3f4f8}
.tree .f{flex:1;min-width:0;cursor:pointer;padding:6px 6px 6px 4px;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#3b4459;display:flex;align-items:center;gap:6px}
.tree .f::before{content:"";flex:none;width:14px;height:14px;background:currentColor;opacity:.45;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .12s}
.tree li.open>.row>.f::before{transform:rotate(90deg)}
.tree li:not(.open)>ul{display:none}
.tree .fe{flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:var(--muted);opacity:0}
.tree .fe .i{width:14px;height:14px}
.tree .row:hover>.fe,.tree .fe:focus-visible{opacity:1}
.tree .fe:hover{background:#e4e8f1;color:var(--accent)}
.tree .p{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 8px 6px 22px;border-radius:var(--r-sm);display:block;color:#2b3345}
.tree .p:hover{color:var(--text)}
.tree .p.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
.tree .p.active::before{content:"";position:absolute;left:-8px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}
.shared-mark{font-size:11px;opacity:.7}

.runs{padding:0 8px 14px}
.runs>div{padding:7px 10px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 8px;border-radius:var(--r-sm);font-size:12.5px;position:relative}
.runs>div>span{font-weight:500}
.runs div[data-run]{cursor:pointer}
.runs div[data-run]:hover{background:#f3f4f8}
.runs div.active{background:var(--accent-soft);color:var(--accent-ink)}
.runs div.active>span{font-weight:600}
.runs small{color:var(--muted);font-weight:400;margin-left:auto;font-size:11.5px}
.runs .run-del{border:0;background:none;color:var(--muted);padding:0 4px;font-size:15px;line-height:1;opacity:0;position:absolute;right:4px;top:6px;border-radius:5px}
.runs div:hover .run-del{opacity:.9;background:#f3f4f8}
.runs .run-del:hover{color:var(--down);opacity:1}
.runs .st-failed small{color:var(--down)} .runs .st-partial small{color:var(--warn)}

/* ───────── Панели инструментов ───────── */
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line)}
.toolbar .sepv{width:1px;height:22px;background:var(--line);margin:0 2px}
.selbar{display:inline-flex;gap:6px;align-items:center;margin-left:4px;padding:3px 4px 3px 12px;border-radius:9px;background:var(--accent-soft);color:var(--accent-ink)}
/* место под панель выделения зарезервировано, чтобы таблица не прыгала при первой отметке */
.selbar.off{visibility:hidden}
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:9px 16px;background:var(--panel);border-bottom:1px solid var(--line)}
.chip{border:1px solid var(--line);border-radius:999px;padding:3px 11px;background:#fff;color:#3b4459;font-size:12.5px;transition:all .12s}
.chip:hover{border-color:#bfc6d6;background:#f8f9fb}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chips .btn.sm{border-color:transparent;background:none;box-shadow:none;color:var(--muted)}
.chips .btn.sm:hover{color:var(--accent);background:#eef0f5}
.legend{display:flex;gap:3px;margin-left:auto;font-size:11px;align-items:center}
.legend i{display:inline-block;min-width:28px;text-align:center;border-radius:5px;font-style:normal;padding:2px 4px}
#table,#dtable{background:var(--panel)}
.summary{display:flex;gap:6px 20px;padding:8px 16px;background:var(--soft);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);flex-wrap:wrap}
.summary b{color:var(--text);font-weight:600}
.bottom{flex:1;min-height:180px;display:flex;flex-direction:column;background:var(--panel)}
.tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--line);align-items:center}
.tab{border:0;background:none;padding:10px 13px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}
.tab:hover{color:var(--text)}
.tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
select{font:inherit;color:var(--text)}
.tabs select,.toolbar select{margin-left:auto;padding:5px 26px 5px 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background-color:#fff;box-shadow:var(--sh-1)}
.toolbar select{margin-left:0}
.pane{display:none;flex:1;min-height:0;overflow:auto;padding:14px 18px}
.pane.on{display:block}
.charts2{display:grid;grid-template-columns:1fr 1fr;gap:20px;height:100%}
.chartbox{position:relative;height:100%;min-height:200px}

/* ───────── Простые таблицы ───────── */
table.simple{border-collapse:collapse;width:100%;font-size:12.5px}
table.simple th,table.simple td{border-bottom:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
table.simple th{color:var(--muted);font-weight:600;white-space:nowrap;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}
table.simple th.sortable{cursor:pointer;user-select:none}
table.simple th.sortable:hover{color:var(--text)}
table.simple th.num{text-align:right}
table.simple tr:last-child td{border-bottom:0}
/* «Конкуренты»: фиксированная сетка, числа выровнены вправо одним столбцом */
table.comp{table-layout:fixed}
table.comp col.c-n{width:48px} table.comp col.c-s{width:150px} table.comp col.c-d{width:120px}
table.comp th,table.comp td{vertical-align:middle;padding:6px 12px}
table.comp th{background:var(--soft);position:sticky;top:-14px;z-index:1;border-bottom:1px solid var(--line-2)}
table.comp td.num,table.comp th.num{text-align:right;font-variant-numeric:tabular-nums;padding-right:22px}
table.comp td.idx{color:var(--muted);text-align:right;padding-right:10px}
table.comp td:nth-child(2){overflow:hidden;text-overflow:ellipsis}
table.comp tr.dom{cursor:pointer}
table.comp tr.dom:hover td{background:#f6f8fc}
table.comp tr.dom.open td{font-weight:600;background:#f3f5fb;border-bottom-color:var(--line-2)}
table.comp tr.dom .caret{display:inline-block;width:12px;color:var(--muted)}
table.comp tr.sub td{font-size:12px;background:#fbfbfd;font-weight:400}
table.comp tr.sub td:nth-child(2){padding-left:36px;white-space:nowrap}
table.comp tr.sub.our td{background:var(--accent-soft);font-weight:600}
table.comp td.fresh{color:var(--up)} table.comp td.stale{color:var(--down)} table.comp td.muted{color:var(--muted)}
table.comp.fresh-t{margin-bottom:0;table-layout:auto} table.comp.fresh-t th{position:static} table.comp.fresh-t th,table.comp.fresh-t td{white-space:nowrap;padding:5px 12px}
table.comp.fresh-t th:first-child,table.comp.fresh-t td:first-child{text-align:left}
table.comp.fresh-t td.num,table.comp.fresh-t th.num{padding-right:14px}
table.comp tr.our td{background:var(--accent-soft)}
table.comp tr.dom.open.our td{background:#e3e8ff}
table.simple tr.our td{background:var(--accent-soft);font-weight:600}
table.simple td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
table.simple .sn{color:var(--muted);font-size:11.5px;max-width:520px}
.up{color:var(--up)} .down{color:var(--down)}
.empty-state{margin:auto;text-align:center;color:var(--muted);padding:48px 24px;max-width:460px}
.empty-state h2{color:var(--text);margin:0 0 6px;font-size:18px}
.empty-state p{margin:0 0 18px}
.empty-state .ic{width:52px;height:52px;border-radius:14px;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
.empty-state .ic .i{width:24px;height:24px;margin:0}

/* ───────── Tabulator ───────── */
.tabulator{font-size:13px;border:0;background:transparent}
.tabulator .tabulator-header{background:var(--soft);border-bottom:1px solid var(--line-2);color:#3b4459}
.tabulator .tabulator-header .tabulator-col{background:transparent;border-right:1px solid var(--line)}
.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:7px 8px}
.tabulator .tabulator-header .tabulator-col .tabulator-col-title{font-weight:600}
.tabulator-row{border-bottom:1px solid #eef0f4;background:#fff}
.tabulator-row.tabulator-row-even{background:#fff}
.tabulator-row:hover,.tabulator-row.tabulator-row-even:hover{background:#f6f8fc}
.tabulator-row .tabulator-cell{padding:4px 8px;border-right:1px solid #f0f2f6}
.tabulator-row.tabulator-selected,.tabulator-row.tabulator-selected:hover{background:var(--accent-soft)}
.tabulator .tabulator-header-filter input,.mm input{padding:3px 6px;font-size:12px;border:1px solid var(--line-2);border-radius:5px;background:#fff}
.tabulator .tabulator-header-filter input:focus,.mm input:focus,form.stack input:focus,form.stack select:focus,form.stack textarea:focus,.tabs select:focus,.toolbar select:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}
.mm{display:flex;gap:3px}
.mm input{width:50%;min-width:0}
.pos{display:flex;align-items:center;justify-content:flex-start;gap:4px;margin:-4px -8px;padding:4px 8px;height:calc(100% + 8px)}
.pos .v{font-weight:600;min-width:20px;text-align:right}
.pos .sp{margin-left:auto}
/* изменение позиции: мелко и спокойно, без плашки */
.pos .d{font-size:10px;font-weight:500;line-height:1;align-self:flex-start;margin-top:1px;opacity:.9}
.pos .d.up{color:#2e7a4b} .pos .d.down{color:#b04a4a} .pos .d.new{color:#4a64b0}
.pos .sp{cursor:pointer;opacity:.6;font-size:12px}
.pos .sp:hover{opacity:1}
.pos.pend{justify-content:center;background:#eef1f6}
.spin{display:inline-block;width:13px;height:13px;border:2px solid #c9d0de;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.url{color:var(--accent)}
.chg{display:inline-block;font-size:10px;padding:0 5px;border-radius:4px;background:#fdeeb3;color:#7a5b00;margin-left:4px}

/* ───────── Выпадающие меню и модалки ───────── */
.dropdown{position:relative}
.menu{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2);padding:6px;z-index:50;min-width:250px;display:none}
.menu.on{display:block}
.menu label{display:flex;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;align-items:center}
.menu label:hover{background:#f3f4f8}
.modal-bg{position:fixed;inset:0;background:rgba(17,24,39,.4);backdrop-filter:blur(2px);display:none;align-items:center;justify-content:center;z-index:100}
.modal-bg.on{display:flex}
.modal{background:#fff;border-radius:14px;padding:22px 24px;width:480px;max-width:calc(100vw - 32px);box-shadow:0 20px 60px rgba(16,24,40,.28)}
.modal h3{margin:0 0 12px;font-size:16px}
.modal table{width:100%;border-collapse:collapse;margin:8px 0 14px}
.modal td{padding:6px 0;border-bottom:1px solid var(--line)}
.modal td:last-child{text-align:right;white-space:nowrap}
.modal .row{display:flex;gap:8px;justify-content:flex-end}

/* ───────── Карточки, формы, страницы настроек ───────── */
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin:0 0 18px;max-width:980px;box-shadow:var(--sh-1)}
.card h2{margin:0 0 12px;font-size:15.5px;font-weight:650}
.card>.hint:first-of-type{line-height:1.55}
form.stack>div{margin-bottom:14px}
form.stack label{display:block;font-weight:600;margin-bottom:5px;font-size:12.5px;color:#2b3345}
form.stack input[type=text],form.stack input[type=number],form.stack input[type=url],form.stack input[type=email],form.stack input[type=password],form.stack select,form.stack textarea,
.card input[type=text][readonly],.modal input[type=text],.modal input[type=number]{font:inherit;padding:8px 11px;border:1px solid var(--line-2);border-radius:var(--r-sm);width:100%;max-width:520px;background:#fff;transition:border-color .12s,box-shadow .12s}
form.stack textarea{min-height:110px}
form.stack .helptext{display:block;color:var(--muted);font-size:12px;margin-top:4px}
form.stack ul{list-style:none;padding:0;margin:0}
form.stack ul label,form.stack input[type=checkbox]+label{font-weight:400;display:inline}
form.stack .errorlist{color:var(--down);list-style:none;padding:0;margin:4px 0}
.card select{padding:5px 8px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:#fff}
.kwbox{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 10px;margin:10px 0;background:var(--soft)}
.kwbox label{display:block;padding:2px 0}
.inline{display:inline}
.login-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:24px;background:radial-gradient(1200px 500px at 50% -10%,#e6ebff 0%,transparent 60%)}
.login{text-align:center;width:100%;max-width:370px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;box-shadow:0 12px 40px rgba(16,24,40,.08)}
.auth-brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:22px;color:var(--text);letter-spacing:-.01em}
.auth-brand:hover{color:var(--text)}
.auth-brand .logo{width:40px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.login form.stack>div{text-align:left}
.login .row-opts{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12.5px}
.login .row-opts .check{display:flex;align-items:center;gap:7px;margin:0;font-weight:400;cursor:pointer}
.login .row-opts input{width:auto;margin:0}
.login .hint{margin:14px 0 0}
.login h2+.hint{margin:-4px 0 20px;line-height:1.45}
.login h2{margin:0 0 16px;font-size:20px}
.login form.stack input{max-width:none}
.login .btn.primary{width:100%;padding:9px 12px;margin-top:4px}
.layout.public{grid-template-columns:1fr}
/* демо-обзор проекта */
.card.wide{max-width:none}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;box-shadow:var(--sh-1)}
.stat .k{color:var(--muted);font-size:12px}
.stat .v{font-size:28px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.avgchip{display:inline-block;min-width:44px;text-align:center;border-radius:6px;padding:1px 7px;font-weight:600}

@media (max-width:900px){
  .layout{grid-template-columns:1fr}
  aside,.vsplit{display:none}
  .charts2{grid-template-columns:1fr}
  .top{padding:0 12px;gap:8px}
  .crumbs .pill{display:none}
  .top .btn .lbl{display:none}
  .top .btn .i{margin:0}
  main.page{padding:16px}
  .brand{font-size:0;gap:0}
  .crumbs .ttl{max-width:38vw}
  .balance .lbl{display:none}
  .selbar.off{display:none}
  .top .spacer{display:none}
  .crumbs{flex:1}
  .top{justify-content:flex-end}
}
body.auth .top{display:none}
form.stack fieldset{border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 14px 10px;margin:0;max-width:520px;background:var(--soft)}
form.stack fieldset legend{font-weight:600;padding:0 6px;font-size:12.5px}
input[type=checkbox],input[type=radio]{accent-color:var(--accent)}
.card table.simple{margin-bottom:6px}

/* ───────── Теги ───────── */
.tg{--tc:#64748b;display:inline-flex;align-items:center;max-width:110px;padding:0 8px;height:19px;border-radius:999px;font-size:11px;font-weight:600;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  background:color-mix(in srgb,var(--tc) 15%,#fff);color:color-mix(in srgb,var(--tc) 72%,#000);border:1px solid color-mix(in srgb,var(--tc) 30%,#fff)}
.tdot{--tc:#64748b;flex:none;width:10px;height:10px;border-radius:50%;background:var(--tc);display:inline-block}
.tdot.none{background:none;border:1.5px dashed #b6bcc9}
.kwcell{display:flex;align-items:center;gap:8px;min-width:0}
.kwcell .kwt{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kwcell .kwtags{flex:none;display:flex;gap:4px}
.menu.left{left:0;right:auto}
.tagmenu{min-width:270px;padding:6px 0}
.tagmenu .mh{padding:6px 12px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#8a91a3}
.tagmenu hr{border:0;border-top:1px solid var(--line);margin:6px 0}
.tagmenu .tlist{max-height:250px;overflow:auto;padding:0 6px}
.tagmenu .ti{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:7px;cursor:pointer;color:var(--text);font-weight:400}
.tagmenu .ti:hover{background:#f3f4f8}
.tagmenu .ti .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tagmenu .ti .n{color:var(--muted);font-size:11.5px;min-width:14px;text-align:right}
.tagmenu .ti .x{border:0;background:none;color:var(--muted);font-size:15px;line-height:1;padding:0 3px;border-radius:4px;opacity:0}
.tagmenu .ti:hover .x{opacity:.8}.tagmenu .ti .x:hover{color:var(--down);opacity:1}
.tagmenu .cb{width:16px;height:16px;border:1.5px solid #b6bcc9;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;background:#fff;color:#fff;flex:none}
.tagmenu .cb .i{width:12px;height:12px;stroke-width:3;opacity:0}
.tagmenu .ti.all .cb{background:var(--accent);border-color:var(--accent)}.tagmenu .ti.all .cb .i{opacity:1}
.tagmenu .ti.some .cb{background:var(--accent);border-color:var(--accent)}
.tagmenu .ti.some .cb::after{content:"";width:8px;height:2px;background:#fff;border-radius:1px}
.tagmenu label.ti input{margin:0}
.tagmenu .newtag{padding:2px 10px 0}
.tagmenu .mi{margin:0 6px;width:calc(100% - 12px)}
.newtag input[type=text]{width:100%;font:inherit;padding:7px 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);margin-bottom:8px}
.newtag input[type=text]:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}
.colorpick{position:relative;display:inline-block}
.cpbtn{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:#fff;font-size:12.5px;color:#2b3345}
.cpbtn:hover{background:#f6f7fa}
.cpbtn .i{width:14px;height:14px;margin:0;color:var(--muted)}
.cpbtn .tdot.auto{background:conic-gradient(#ef4444,#eab308,#22c55e,#06b6d4,#6366f1,#d946ef,#ef4444)}
.cppop{position:absolute;z-index:60;top:calc(100% + 6px);left:0;width:max-content;max-width:calc(100vw - 24px);display:grid;grid-template-columns:repeat(12,22px);gap:6px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2)}
.cppop[hidden]{display:none}
.cppop .sw{--tc:#999;width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line-2);background:var(--tc);padding:0;cursor:pointer;justify-self:center}
.cppop .sw:not(.auto):hover{transform:scale(1.15)}
.cppop .sw.auto:hover{background:#e8eaf1}
.cppop .sw.on{box-shadow:0 0 0 2px var(--accent)}
.cppop .sw.auto{grid-column:1/-1;width:auto;height:26px;border-radius:7px;background:#f3f4f8;border:0;box-shadow:none;font-size:12px;font-weight:600;color:#3b4459;justify-self:stretch}
.cppop .sw.auto.on{background:var(--accent-soft);color:var(--accent-ink);box-shadow:0 0 0 1px var(--accent)}
.tagfilter.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.chips .btn.tagfilter{border:1px solid var(--line);background:#fff;box-shadow:none;color:#3b4459;border-radius:999px;padding:3px 11px;font-size:12.5px}
.chips .btn.tagfilter .i{width:14px;height:14px;margin-right:5px}
.chips .btn.tagfilter.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
/* окно «Добавить ключи» */
.kwmodal{width:560px}
.kwmodal textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);resize:vertical;min-height:150px}
.kwmodal textarea:focus{outline:0;border-color:var(--accent);box-shadow:var(--ring)}
.kwmodal .kwcount{margin:6px 0 14px;font-size:12px}
.tagpick{margin-bottom:16px}.tagpick .lbl{font-weight:600;font-size:12.5px;margin-bottom:7px}
.tagrow{display:flex;flex-wrap:wrap;gap:6px}
.tgpick{--tc:#64748b;display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;border:1px solid var(--line-2);background:#fff;font-size:12.5px;color:#2b3345}
.tgpick:hover{background:#f6f7fa}
.tgpick.on{background:color-mix(in srgb,var(--tc) 15%,#fff);border-color:var(--tc);font-weight:600}
.tgpick.add{border-style:dashed;color:var(--muted)}
.kwmodal .newtag{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--soft)}

.tabulator .tabulator-row.tabulator-selectable:hover{background:#f6f8fc;cursor:default}
.tabulator .tabulator-row.tabulator-selected,.tabulator .tabulator-row.tabulator-selected:hover{background:var(--accent-soft)}

/* активная строка: лёгкая подсветка + акцентная полоска слева, без рамок */
.tabulator .tabulator-row .tabulator-cell:focus,.tabulator .tabulator-row .tabulator-cell:focus-visible{outline:0!important;box-shadow:none}
.tabulator .tabulator-row.active-kw,.tabulator .tabulator-row.active-kw .tabulator-cell{background:#f1f4ff}
.tabulator .tabulator-row.active-kw.tabulator-selected,.tabulator .tabulator-row.active-kw.tabulator-selected .tabulator-cell{background:#e6ecff}
.tabulator .tabulator-row.active-kw .tabulator-cell[tabulator-field="sel"]{box-shadow:inset 3px 0 0 var(--accent)}
.tabulator .tabulator-row.active-kw{border-bottom-color:#d9e1fb}

.cardhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.cardhead h2{margin:0}
.inherit-note{background:var(--accent-soft);color:#243a8a;border:1px solid #dbe2ff;border-radius:var(--r-sm);padding:9px 12px;margin:0 0 12px}
table.simple tr.kwrow td{background:var(--soft)}

/* настройка колонок: перетаскивание и переименование */
table.cols td.grip{width:28px;padding-right:0;color:#a3a9b8;cursor:grab;user-select:none;text-align:center;letter-spacing:-2px}
table.cols td.grip:hover{color:var(--accent)}
table.cols tr.dragging{opacity:.4;background:var(--accent-soft)}
table.cols td.ctitle{cursor:text}
table.cols td.ctitle .pen{width:13px;height:13px;margin-left:6px;color:var(--muted);opacity:0;vertical-align:-2px}
table.cols td.ctitle:hover .pen{opacity:.8}
table.cols td.ctitle.editing .pen{display:none}
.ctedit{font:inherit;padding:4px 8px;border:1px solid var(--accent);border-radius:6px;box-shadow:var(--ring);width:100%;max-width:320px}
.ctedit:focus{outline:0}
.savednote{min-height:18px;margin-top:6px;font-size:12px;color:var(--up)}.savednote.bad{color:var(--down)}

/* динамика спроса Wordstat: колонки таблицы и вкладка «Спрос» */
.pct{font-variant-numeric:tabular-nums;white-space:nowrap}.nd{color:var(--muted)}
.flag.yes{color:#1b3a66;background:#dbe7fb;padding:1px 9px;border-radius:10px;font-size:12px}
.demand-sec{margin-bottom:22px}
.demand-facts{display:flex;flex-wrap:wrap;gap:4px 18px;margin:6px 0 8px}
.demand-facts b{color:var(--text)}
.demand-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.demand-grid.one{grid-template-columns:1fr}
.demand-grid .chartbox{height:240px;min-height:0}
@media (max-width:900px){.demand-grid{grid-template-columns:1fr}}
.newtag.bad input{border-color:var(--down);box-shadow:0 0 0 2px rgba(220,38,38,.15)}

/* тип проекта при создании: карточки-предустановки */
.ptypes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:6px}
form.stack label.ptype{position:relative;display:flex;gap:12px;align-items:flex-start;padding:14px 16px 14px 14px;border:1.5px solid var(--line-2);border-radius:12px;background:var(--panel);cursor:pointer;font-weight:400;margin:0;transition:border-color .12s,box-shadow .12s,background .12s}
.ptype:hover{border-color:#b8c3dc}
.ptype input{position:absolute;opacity:0;pointer-events:none}
.ptype:has(input:checked){border-color:var(--accent);box-shadow:var(--ring);background:#f6f8ff}
.ptype:has(input:focus-visible){box-shadow:var(--ring)}
.ptype.soon{opacity:.55;cursor:not-allowed;background:#fafbfc}
.ptype.soon:hover{border-color:var(--line-2)}
.pbadge{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 8px;border-radius:10px;font-weight:700;font-size:15px;color:#fff;letter-spacing:.2px}
.pbadge .i{width:20px;height:20px}
.pbadge.ya{background:#e04b3f}.pbadge.go{background:#3b6fe0}.pbadge.both{background:linear-gradient(135deg,#e04b3f 50%,#3b6fe0 50%);font-size:13px}.pbadge.dyn{background:#16a34a}
.pbody{display:flex;flex-direction:column;gap:4px;min-width:0}
.ptitle{font-weight:650;font-size:14px;color:#1b2333;display:flex;align-items:center;gap:8px}
.soontag{font-style:normal;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);background:#eef0f4;padding:1px 7px;border-radius:8px}
.pdesc{font-size:12.5px;line-height:1.45;color:#4b5567}
.pwhat{font-size:12px;line-height:1.45;color:var(--muted);border-top:1px dashed var(--line);padding-top:6px;margin-top:2px}
.pcheck{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;display:none;align-items:center;justify-content:center}
.pcheck .i{width:12px;height:12px}
.ptype:has(input:checked) .pcheck{display:flex}
@media (max-width:760px){.ptypes{grid-template-columns:1fr}}

/* автокомплит регионов */
.rg{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:34px;padding:3px 6px;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;max-width:520px}
.rg:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.rg-chips{display:contents}
.rg-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 4px 2px 9px;background:var(--accent-soft);color:var(--accent-ink);border-radius:6px;font-weight:500}
.rg-chip b{font-weight:400;font-size:11px;opacity:.65}
.rg-chip button{border:0;background:none;color:inherit;cursor:pointer;font-size:15px;line-height:1;padding:0 4px;opacity:.6}
.rg-chip button:hover{opacity:1}
.rg .rg-q{flex:1;min-width:140px;border:0!important;box-shadow:none!important;outline:0;background:transparent;padding:4px 2px}
.rg-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;max-height:280px;overflow:auto;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;box-shadow:0 8px 24px rgba(20,24,33,.12)}
.rg-it{display:flex;align-items:baseline;gap:8px;padding:7px 10px;cursor:pointer}
.rg-it b{min-width:52px;color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums}
.rg-it span{margin-left:auto;color:var(--muted);font-size:12px}
.rg-it.on,.rg-it:hover{background:var(--accent-soft)}
.rg-empty{padding:9px 10px;color:var(--muted)}

/* ---- главная ---- */
.dash{display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,2fr);gap:18px;max-width:1180px;align-items:start}
.dash .dcol{display:flex;flex-direction:column;gap:18px;min-width:0}
.dash .dcard{max-width:none;margin:0}
.dash .projects td a{font-weight:600}
.dash .dom{margin-left:8px;font-size:12px}
.dash .dempty{text-align:center;padding:18px 0 6px}
.dash .dshared{margin:12px 0 0;font-size:12.5px}
.bigbal{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;margin:2px 0 4px;min-width:0}
.bigbal .i{width:20px;height:20px;align-self:center;color:var(--accent)}
.bigbal b{font-size:clamp(24px,3.2vw,34px);overflow-wrap:anywhere;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.bigbal span{color:var(--muted)}
.balance-card .hint{margin:0 0 14px;font-size:12.5px}
.entries{list-style:none;margin:0 0 16px;padding:0;font-size:12.5px}
.entries li{display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line)}
.entries .ecmt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.entries .plus{color:var(--up)}.entries .minus{color:var(--down)}
.steps{margin:0 0 16px;padding-left:20px;line-height:1.55;color:#3b4459}
.feed{list-style:none;margin:0;padding:0}
.feed li{padding:11px 0;border-top:1px solid var(--line)}
.feed li:first-child{border-top:0;padding-top:0}
.meta{display:flex;align-items:center;gap:10px;font-size:12px;margin-bottom:3px}
.kind{padding:1px 8px;border-radius:999px;font-weight:600;font-size:11.5px;background:var(--accent-soft);color:var(--accent-ink)}
.kind.article{background:#fff4e5;color:var(--warn)}
.feed .ptitle{font-weight:600;font-size:14px}
.feed .pex{margin-top:2px;font-size:12.5px}
.post{max-width:760px}.post .body{line-height:1.65;margin-bottom:14px}
@media (max-width:900px){.dash{grid-template-columns:1fr}}

/* ---- регистрация, профиль, документация, юр. страницы ---- */
.login .accept .check{display:flex;gap:8px;align-items:flex-start;font-weight:400;font-size:12.5px;line-height:1.4}
.login .accept input{margin-top:2px;width:auto}
.legal-links{font-size:12px;margin:10px 0 0}
.pub{max-width:860px;margin:0 auto}
.card.legal,.card.topup{max-width:760px}
.card.legal h3{margin:18px 0 4px;font-size:14px}.card.legal p{margin:0;line-height:1.6;color:#3b4459}
.notice-stub{background:#fff7e6;border:1px solid #f1d49b;color:var(--warn);border-radius:var(--r-sm);padding:8px 12px;margin-bottom:6px;font-size:12.5px}
.topup li{margin:3px 0}
.ptabs{display:flex;gap:4px;align-items:center;margin-bottom:16px;border-bottom:1px solid var(--line)}
.ptabs a{padding:8px 14px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}
.ptabs a.on{color:var(--accent-ink);border-bottom-color:var(--accent)}
.profile .card{max-width:640px}.profile .card.wide{max-width:980px}
table.kv th{width:140px}
.plus{color:var(--up)}.minus{color:var(--down)}
.pager{display:flex;gap:12px;align-items:center;justify-content:center;padding-top:14px}
.notes{list-style:none;margin:0;padding:0}
.notes li{display:flex;gap:14px;padding:9px 8px;border-top:1px solid var(--line)}
.notes li.unread{background:var(--accent-soft)}.notes li.error .ntext{color:var(--down)}
.notes .muted{white-space:nowrap}
.doclinks{margin:0 0 14px;padding-left:18px;line-height:1.7}
.docs-layout{flex:1;min-height:0;display:grid;grid-template-columns:240px 1fr}
.docs-nav{background:var(--panel);border-right:1px solid var(--line);padding:14px 10px;display:flex;flex-direction:column;gap:2px;overflow:auto}
.docs-nav a{padding:7px 10px;border-radius:var(--r-sm);color:#3b4459}
.docs-nav a:hover{background:#eef0f5}.docs-nav a.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
.docs-nav .back{margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}
.docs-body{overflow:auto;padding:28px 36px}
.doc{max-width:760px;line-height:1.65}
.doc h1{font-size:24px;margin:0 0 12px;letter-spacing:-.01em}.doc h2{font-size:17px;margin:24px 0 8px}
.doc .lead{font-size:15px;color:#3b4459}.doc table{margin:12px 0}
.doc .tip{background:var(--accent-soft);border-radius:var(--r-sm);padding:10px 14px;margin:16px 0;color:var(--accent-ink)}
.doc-pager{max-width:760px;display:flex;justify-content:space-between;margin-top:30px;padding-top:14px;border-top:1px solid var(--line)}
@media (max-width:800px){.docs-layout{grid-template-columns:1fr}.docs-nav{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line)}.docs-nav .sec,.docs-nav .back{display:none}.docs-body{padding:20px 16px}}
.dash td.act{width:36px;text-align:right}
