/* t304A: не уезжать в пустоту ниже контента */
html,body{overscroll-behavior-y:none;}
body{overflow-x:hidden;}
#app{align-content:start;}
main{padding-bottom:24px;}
:root{--bg:#0f1115;--card:#161a21;--line:#2a2f3a;--txt:#e6e6e6;--mut:#9aa3b2;--acc:#2d6cdf;--ok:#2e9d5b;--warn:#d9a400;--bad:#c94444}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--txt);font-size:15px}
a{color:#7cb7ff}
.hidden{display:none!important}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bar,#12151b);border-bottom:1px solid var(--line)}
.grow{flex:1}
#app{display:grid;grid-template-columns:240px minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100vh}
#app header{grid-column:1/-1}
nav{border-right:1px solid var(--line);padding:8px;background:var(--nav-bg,#12151b)}
nav a{display:block;padding:9px 10px;border-radius:8px;color:var(--txt);text-decoration:none;margin:2px 0}
nav a:hover{background:var(--nav-hover,#1c212b)}
nav a.on{background:var(--nav-on,#203152);color:var(--nav-on-fg,#fff)}
main{padding:16px 20px;max-width:1200px;width:100%;min-width:0;box-sizing:border-box}
h1{font-size:22px;margin:4px 0 12px}h2{font-size:18px;margin:18px 0 8px}h3{font-size:16px;margin:12px 0 6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px;margin:10px 0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.muted{color:var(--mut)}.small{font-size:13px}
button,.btn{background:var(--acc);color:#fff;border:0;border-radius:8px;padding:8px 13px;cursor:pointer;font-size:14px;text-decoration:none;display:inline-block}
button:hover,.btn:hover{filter:brightness(1.15)}
button.ghost{background:transparent;border:1px solid var(--line);color:var(--txt)}
button.no,.btn.no{background:var(--bad)}button.ok{background:var(--ok)}button.warn{background:#8a6d00}
button:disabled{opacity:.5;cursor:default}
input,textarea,select{background:var(--input-bg,#1a1d24);color:var(--input-fg,#eee);border:1px solid var(--input-line,#333);border-radius:8px;padding:9px;width:100%;font:inherit}
textarea{min-height:90px}
table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid var(--line);padding:7px 6px;text-align:left;vertical-align:top}
th{color:var(--mut);font-weight:500;font-size:13px}
pre{white-space:pre-wrap;word-break:break-word;background:var(--code-bg,#0b0d11);color:var(--code-fg,inherit);border:1px solid var(--line);padding:10px;border-radius:8px;max-height:480px;overflow:auto;font-size:12.5px}
code{background:var(--code-bg,#0b0d11);color:var(--code-fg,inherit);padding:1px 5px;border-radius:5px;font-size:13px}
.badge{background:var(--warn);color:#000;border-radius:12px;padding:2px 9px;font-size:13px;cursor:pointer}
.tag{display:inline-block;border:1px solid var(--line);border-radius:12px;padding:1px 8px;font-size:12px;color:var(--mut);margin-right:4px}
.sev-critical{color:var(--sev-critical,#ff7b7b)}.sev-warning{color:var(--sev-warning,#ffcf4d)}.sev-ok{color:var(--sev-ok,#6fdc98)}.sev-info{color:var(--mut)}
.item{cursor:pointer}.item:hover{border-color:#3d4656}
.big{font-size:26px;font-weight:600}
.err{color:#ff7b7b;margin-top:8px;min-height:1em}
.loginbox{max-width:360px;margin:12vh auto;display:flex;flex-direction:column;gap:10px}
.modal{position:fixed;inset:0;background:var(--modal-bg,rgba(0,0,0,.6));display:flex;align-items:flex-start;justify-content:center;z-index:20;overflow:auto;padding:5vh 10px}
.modalbox{max-width:720px;width:100%}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--toast-bg,#232a36);color:var(--toast-fg,var(--txt));border:1px solid var(--line);padding:10px 16px;border-radius:10px;z-index:30;max-width:90vw}
.prog{border-left:3px solid var(--acc);padding:6px 10px;margin:8px 0;background:var(--prog-bg,#121722)}
.chips button{background:var(--chip-bg,#1c212b);border:1px solid var(--line);color:var(--txt);padding:5px 10px}
.chips button.on{background:var(--chip-on,#203152)}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px}
img.shot{max-width:100%;border:1px solid var(--line);border-radius:8px}
#menuBtn{display:none}
@media (max-width:820px){
  #app{grid-template-columns:1fr}
  #menuBtn{display:inline-block}
  nav{position:fixed;top:52px;left:0;bottom:0;width:250px;z-index:6;transform:translateX(-100%);transition:.2s;overflow:auto}
  nav.open{transform:none}
  main{padding:12px}
}

.cp-bar{height:10px;background:var(--code-bg,#0b0d11);border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:8px 0}
.cp-bar div{height:100%;background:var(--acc);transition:width .6s}
.cp-scroll{overflow-x:auto}.cp-scroll table{min-width:760px}
.cp-th{cursor:pointer;user-select:none;white-space:nowrap}.cp-th:hover{color:var(--txt)}
.cp-nav{position:sticky;top:0;background:var(--bg);z-index:2;padding:6px 0}

/* ===== Фаза 6: цвета разделов (те же, что на home.proffi.app и в мини-приложении) ===== */
:root{--g-main:#64748b;--g-sites:#10b981;--g-manage:#3b82f6;--g-monitor:#f59e0b;--g-analytics:#8b5cf6;--g-personal:#ec4899;--g-help:#06b6d4}
header{background:var(--header-bg,linear-gradient(90deg,#1e293b 0%,#172033 45%,#2a1b3d 100%));border-bottom:1px solid var(--header-line,#334155)}
header b{letter-spacing:.2px}
.ng{margin:4px 0 10px;padding-left:8px;border-left:3px solid var(--gc,#475569)}
.ngt{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--gc,#94a3b8);padding:6px 10px 2px;font-weight:600}
.ng a.on{background:color-mix(in srgb,var(--gc) 28%,var(--nav-mix,#0f1115));color:var(--nav-on-fg,#fff)}
.ng a:hover{background:color-mix(in srgb,var(--gc) 14%,var(--nav-mix,#0f1115))}
.g-main{--gc:var(--g-main)}.g-sites{--gc:var(--g-sites)}.g-manage{--gc:var(--g-manage)}.g-monitor{--gc:var(--g-monitor)}
.g-analytics{--gc:var(--g-analytics)}.g-personal{--gc:var(--g-personal)}.g-help{--gc:var(--g-help)}
body[data-group=sites]{--gcur:var(--g-sites)}body[data-group=manage]{--gcur:var(--g-manage)}body[data-group=monitor]{--gcur:var(--g-monitor)}
body[data-group=analytics]{--gcur:var(--g-analytics)}body[data-group=personal]{--gcur:var(--g-personal)}body[data-group=help]{--gcur:var(--g-help)}
main>h1:first-child,main>.row:first-child h1{border-left:4px solid var(--gcur,#64748b);padding-left:10px}
.pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}
.pill.ok{background:var(--pill-ok-bg,#0f3d2a);color:var(--pill-ok-fg,#6fdc98)}.pill.warn{background:var(--pill-warn-bg,#3d300f);color:var(--pill-warn-fg,#ffcf4d)}.pill.bad{background:var(--pill-bad-bg,#3d1414);color:var(--pill-bad-fg,#ff8f8f)}.pill.demo{background:var(--pill-demo-bg,#2b1f45);color:var(--pill-demo-fg,#c4b5fd)}.pill.mut{background:var(--pill-mut-bg,#1f2633);color:var(--pill-mut-fg,#9aa3b2)}
.danger{border-color:var(--danger-line,#7f1d1d)!important;background:var(--danger-bg,linear-gradient(180deg,#1d1214,#161a21))}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.tabs button{background:var(--chip-bg,#1c212b);border:1px solid var(--line);color:var(--txt)}
.tabs button.on{background:color-mix(in srgb,var(--gcur,#3b82f6) 35%,var(--chip-on-mix,#161a21));border-color:var(--gcur,#3b82f6)}
.demo-banner{border:1px dashed var(--demo-line,#8b5cf6);background:var(--demo-bg,#1b1530);color:var(--demo-fg,#ddd6fe);border-radius:10px;padding:10px 14px;margin:10px 0}
.kpi{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.kpi .card{margin:0;padding:10px}
.kpi .v{font-size:22px;font-weight:700}.kpi .l{font-size:12px;color:var(--mut)}
/* Блокнот */
.nb{display:grid;grid-template-columns:200px 280px minmax(0,1fr);gap:10px;min-height:70vh}
.nb .col{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px;overflow:auto;max-height:78vh}
.nb .f,.nb .n{padding:8px;border-radius:8px;cursor:pointer;margin:2px 0}.nb .f:hover,.nb .n:hover{background:#1c212b}
.nb .f.on,.nb .n.on{background:#3b1530}
.nb .n .p{font-size:12px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbtool{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.nbtool button{background:#1c212b;border:1px solid var(--line);color:var(--txt);padding:5px 9px;font-size:13px}
.nbed{min-height:52vh;background:#0f1218;border:1px solid var(--line);border-radius:8px;padding:14px;outline:none;line-height:1.55;overflow:auto}
.nbed:focus{border-color:#ec4899}.nbed .todo{list-style:none}
.nb.full{position:fixed;inset:0;z-index:15;background:var(--bg);padding:10px;grid-template-columns:minmax(0,1fr)}.nb.full .col.side{display:none}
.nb.full .nbed{min-height:80vh}
@media (max-width:820px){.nb{grid-template-columns:1fr}.nb .col{max-height:none}}
/* ===== мини-приложение Telegram: полный пульт в мобильной оболочке ===== */
a{color:var(--link,#7cb7ff)}
body.tg{overscroll-behavior-y:contain;-webkit-tap-highlight-color:transparent;padding:0 var(--tg-right,0) 0 var(--tg-left,0)}
html:has(body.tg){scroll-padding-bottom:96px;scroll-padding-top:calc(60px + var(--tg-top,0px))}
body.tg #menuBtn,body.tg #logout{display:none}
body.tg #app{grid-template-columns:minmax(0,1fr)}
body.tg #app header{padding:calc(8px + var(--tg-top,0px)) 12px 8px;min-height:44px}
body.tg #app header b{font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
body.tg #app>nav{display:none}
body.tg main{padding:10px 10px calc(86px + var(--tg-bottom,0px) + env(safe-area-inset-bottom));max-width:100%}
body.tg h1{font-size:20px}
body.tg .grid{grid-template-columns:minmax(0,1fr)}
body.tg button,body.tg .btn{min-height:38px}
body.tg .toast{bottom:calc(84px + var(--tg-bottom,0px))}
body.tg .modal{padding:calc(10px + var(--tg-top,0px)) 8px calc(90px + var(--tg-bottom,0px));z-index:20}
body.tg .modalbox{max-width:100%}
body.tg .kv{grid-template-columns:minmax(0,max-content) minmax(0,1fr)}
body.tg img,body.tg video,body.tg iframe{max-width:100%}
body.tg table{max-width:100%}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:12;display:none;background:var(--bar,#12151b);border-top:1px solid var(--line);
  padding:5px calc(4px + var(--tg-right,0px)) calc(5px + var(--tg-bottom,0px) + env(safe-area-inset-bottom)) calc(4px + var(--tg-left,0px));backdrop-filter:blur(8px)}
body.tg .tabbar{display:flex}
/* вкладки — это <nav>: сбросить мобильные правила бокового меню (иначе панель уезжает за левый край) */
body.tg nav.tabbar{top:auto;bottom:0;left:0;right:0;width:auto;transform:none;transition:none;overflow:visible;border-right:0}
.tabbar a{flex:1;min-width:0;text-align:center;color:var(--mut);text-decoration:none;font-size:10.5px;padding:4px 1px;border-radius:10px;transition:background .15s}
.tabbar a span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tabbar a b{display:block;font-size:20px;line-height:1.2}
.tabbar a.on{color:var(--txt);background:color-mix(in srgb,var(--gcur,#3b82f6) 30%,transparent);font-weight:600}
body[data-tab=home] .tabbar a.on{--gcur:var(--g-main)}
.tgsearch{position:sticky;top:calc(52px + var(--tg-top,0px));z-index:3;background:var(--bg);padding:4px 0 8px}
.tgsearch input{border-radius:12px;padding:11px 12px}
.tggroup{margin:12px 0 4px}.tggroup .ngt{padding:4px 2px 6px}
.tgmenu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tgmenu a,.tgtile{display:flex;flex-direction:column;justify-content:center;gap:4px;min-height:58px;padding:12px;border-radius:14px;text-decoration:none;color:var(--txt);
  background:color-mix(in srgb,var(--gc) 20%,var(--card));border:1px solid color-mix(in srgb,var(--gc) 45%,var(--card));font-weight:500;overflow-wrap:anywhere}
.tgtile:active{transform:scale(.98)}
.tgtile small{font-size:11px;color:var(--mut);font-weight:400}
.tgstrip{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -10px 6px;padding:2px 10px 6px}
.tgstrip::-webkit-scrollbar{display:none}
.tgstrip a{flex:0 0 auto;padding:7px 12px;border-radius:999px;font-size:13px;text-decoration:none;color:var(--txt);white-space:nowrap;
  background:color-mix(in srgb,var(--gc) 12%,var(--card));border:1px solid color-mix(in srgb,var(--gc) 35%,var(--card))}
.tgstrip a.on{background:color-mix(in srgb,var(--gc) 45%,var(--card));border-color:var(--gc);font-weight:600}
main>.tgstrip+h1,main>.tgstrip+.row h1{border-left:4px solid var(--gcur,#64748b);padding-left:10px}
/* окно «Точно?» поверх всего (в т.ч. поверх других окон) */
.askdlg{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px}
.askbox{max-width:440px;width:100%;margin:0}.askmsg{white-space:normal;line-height:1.45}
/* светлая тема Telegram */
html.tg-light{--bg:#ffffff;--card:#f4f6f9;--line:#dde2ea;--txt:#111827;--mut:#64748b;--acc:#2481cc;--link:#2481cc;--bar:#f1f5f9}
html.tg-light body{background:var(--bg);color:var(--txt)}
html.tg-light header{background:var(--bar)!important;border-bottom-color:var(--line)!important}
html.tg-light input,html.tg-light textarea,html.tg-light select{background:#fff;color:var(--txt);border-color:var(--line)}
html.tg-light pre,html.tg-light code{background:#eef1f5;color:#111827;border-color:var(--line)}
html.tg-light .prog{background:#eef4fd}
html.tg-light .toast{background:#1f2937;color:#fff}
html.tg-light .chips button,html.tg-light .tabs button,html.tg-light .nbtool button{background:#fff;color:var(--txt);border-color:var(--line)}
html.tg-light .chips button.on{background:#dbeafe}
html.tg-light .tabs button.on{background:color-mix(in srgb,var(--gcur,#3b82f6) 22%,#fff)}
html.tg-light .danger{background:#fff5f5!important;border-color:#fca5a5!important}
html.tg-light .demo-banner{background:#f5f3ff;color:#4c1d95}
html.tg-light .pill.ok{background:#dcfce7;color:#166534}html.tg-light .pill.warn{background:#fef3c7;color:#92400e}
html.tg-light .pill.bad{background:#fee2e2;color:#991b1b}html.tg-light .pill.demo{background:#ede9fe;color:#5b21b6}html.tg-light .pill.mut{background:#e5e7eb;color:#374151}
html.tg-light .sev-critical{color:#dc2626}html.tg-light .sev-warning{color:#b45309}html.tg-light .sev-ok{color:#15803d}
html.tg-light .nbed{background:#fff}html.tg-light .nb .f.on,html.tg-light .nb .n.on{background:#fce7f3}
html.tg-light .nb .f:hover,html.tg-light .nb .n:hover,html.tg-light .item:hover{background:#eef1f5}
html.tg-light button.ghost{color:var(--txt)}
html.tg-light .cp-bar{background:#e5e7eb}
html.tg-light .cp-nav{background:var(--bg)}

/* фаза 6b: почта, таблицы */
.tbl{overflow-x:auto}.tbl table{min-width:520px}
.mailgrid{display:grid;grid-template-columns:minmax(260px,1fr) 2fr;gap:12px;align-items:start}
.mailgrid .card{margin:0;max-height:75vh;overflow:auto}
.unread b{color:var(--acc)}
@media(max-width:760px){.mailgrid{grid-template-columns:1fr}.tbl table{min-width:0;font-size:13px}}

/* длинные ссылки в оповещениях не растягивают экран (мини-приложение 390px) */
.card{overflow-wrap:anywhere}
/* ===== фаза 7 */
#app{grid-template-rows:auto auto 1fr}
.srvbar{grid-column:1/-1;padding:8px 12px;background:var(--srv-bg,linear-gradient(90deg,#111827,#131a2a 60%,#1b1530));border-bottom:1px solid var(--srv-line,#263043);position:sticky;top:53px;z-index:4}
.srvbar .pfx-ov{cursor:pointer}
.hublogo{display:inline-flex;text-decoration:none;color:var(--txt)}
#app header>b{display:none}
body.tg #app header>b{display:block}
body.tg .hublogo{display:none}
body.tg .srvbar{position:static}
@media (max-width:600px){.srvbar:not(.home):not(.open) .pfx-g{display:none}.srvbar{top:auto;position:static}}
.testbadge{display:inline-block;background:#3b2a05;color:#fbbf24;border:1px dashed #b4830f;border-radius:10px;padding:1px 8px;font-size:12px;font-weight:600;margin-right:6px;white-space:nowrap}
.card.is-test{border:1px dashed #b4830f;background:repeating-linear-gradient(135deg,#1a1710,#1a1710 10px,#17150f 10px,#17150f 20px)}
.paycompact{display:flex;align-items:center;gap:12px;padding:10px 14px}
.paycompact .pc-ico{font-size:24px}.paycompact .pc-main{flex:1;min-width:0}.paycompact .pc-s{font-size:13px;margin-top:3px}
.paycompact.pc-ok{border-left:4px solid #22c55e}.paycompact.pc-warn{border-left:4px solid #eab308}.paycompact.pc-bad{border-left:4px solid #ef4444}
.vis{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.visrow{display:flex;align-items:center;gap:8px;justify-content:space-between;flex-wrap:wrap}.visn{font-size:13.5px}.tiny{font-size:11px}
.vishead{margin:4px 0 2px;color:var(--mut)}
/* фаза 8: правила для ИИ */
.argrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin:8px 0}
.arsw{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.arsw input{display:none}.arsl{flex:none;width:38px;height:22px;border-radius:11px;background:#64748b;position:relative;transition:.2s;margin-top:2px}
.arsl:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.2s}
.arsw input:checked+.arsl{background:#22c55e}.arsw input:checked+.arsl:after{left:19px}
.argrid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:6px;margin:8px 0}
.argrid2 label{display:flex;justify-content:space-between;gap:6px;align-items:center}
.pill.no{background:#ef444422;color:#ef4444}
/* фаза 7: файлы блокнота */
.nbfiles.drag{outline:2px dashed var(--acc)}
.nbq{height:6px;background:#33415555;border-radius:3px;overflow:hidden;margin:6px 0}.nbq div{height:100%}
.nbgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:8px}
.nbfc{background:var(--card2,#1e293b);border:1px solid #33415588;border-radius:10px;padding:6px;cursor:pointer;display:flex;flex-direction:column;gap:3px;min-width:0}
.nbfc:hover{border-color:var(--acc)}.nbfc b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nbfc small{font-size:11px}
.nbfc .th{height:110px;border-radius:7px;background:#0f172a center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:40px}
.nbwin{position:fixed;inset:0;z-index:18;padding-top:var(--tg-top,0px);padding-bottom:var(--tg-bottom,0px);background:var(--bg,#0b1220);display:flex;flex-direction:column}
body.nbwin-open{overflow:hidden}
.nbwh{display:flex;gap:6px;align-items:center;padding:8px 10px;border-bottom:1px solid #33415588;flex-wrap:wrap}
.nbwh b{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbwmenu{display:flex;gap:6px;flex-wrap:wrap;padding:6px 10px;border-bottom:1px solid #33415555}
.nbwb{flex:1;overflow:auto;padding:10px}
.xwrap{overflow:auto;max-height:58vh;border:1px solid #33415588;border-radius:8px}
.xt{border-collapse:collapse;font-size:13px}.xt td,.xt th{border:1px solid #33415588;padding:4px 7px;min-width:70px;white-space:nowrap}
.xt th{background:#1e293b;color:#94a3b8;position:sticky;top:0;font-weight:500}.xt td:focus{outline:2px solid var(--acc);background:#1e40af33}
.docpage{background:#fff;color:#111;max-width:820px;margin:0 auto;padding:28px 34px;min-height:60vh;border-radius:6px}
.pdfp{display:flex;flex-direction:column;align-items:center;gap:10px}.pdfp img{width:100%;background:#fff;min-height:200px;border-radius:4px}
.imgwrap{text-align:center}.imgwrap img{max-width:100%;max-height:58vh;border-radius:6px;background:repeating-conic-gradient(#ccc 0 25%,#eee 0 50%) 0 0/16px 16px}
.vidwrap{text-align:center}
@media (max-width:600px){.nbgrid{grid-template-columns:repeat(2,1fr)}.nbfc .th{height:90px}.nbwh b{max-width:100%;flex-basis:100%}.docpage{padding:14px}}
/* фаза 7: скрипты */
.scgrid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:12px;margin-top:8px}
.scgrid textarea{width:100%;min-height:380px;font-family:ui-monospace,monospace;font-size:13px}
.CodeMirror{height:auto;min-height:380px;max-height:70vh;border-radius:8px;font-size:13px}.CodeMirror-scroll{min-height:380px;max-height:70vh}
.scout{margin:8px 0}.scout2{max-height:260px;overflow:auto;white-space:pre-wrap;background:#0b1220;padding:8px;border-radius:6px}
.scai{align-self:start;position:sticky;top:110px}.scit{border-left:3px solid #33415588;padding:3px 8px;margin:4px 0}
.ok b{color:#22c55e}
@media (max-width:900px){.scgrid{grid-template-columns:1fr}.scai{position:static}.CodeMirror,.CodeMirror-scroll{min-height:260px}}
/* t163: ZIP-папки, блоки, конструктор */
.sbfold{display:inline-flex;gap:6px;margin-left:8px;vertical-align:middle}
#main h1 + .sbfold{display:flex;margin:4px 0 8px}
.sbdrop{border:2px dashed #33415599;border-radius:10px;padding:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.sbdrop.over{border-color:var(--acc)}
.sbz{margin:8px 0}.sbsteps{font-size:13px;margin-top:6px}.sbsteps>div{border-left:3px solid #33415588;padding:2px 8px;margin:3px 0}
.sbblock{margin-top:14px}.sbblock h2{margin:6px 0}
.sbgrid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:12px;margin-top:8px}
.sbright{align-self:start;position:sticky;top:110px}.sbframe{margin-top:8px;display:flex;justify-content:center}
.sbframe iframe{width:100%;height:68vh;border:1px solid #33415588;border-radius:8px;background:#fff}
.sbframe.mob iframe{width:390px;max-width:100%;height:74vh}
#sbcode{width:100%;min-height:260px;font-family:ui-monospace,monospace;font-size:13px}
@media (max-width:900px){.sbgrid{grid-template-columns:1fr}.sbright{position:static}.sbframe iframe{height:60vh}}
/* ---- 📓 Блокнот v2 (t171) ---- */
.nbhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nbhead h1{margin:6px 0}.nbhead #nbq{max-width:300px;flex:1 1 180px}
.nbtabs button{font-size:15px;padding:8px 14px}
.nb2{display:grid;grid-template-columns:230px 290px minmax(0,1fr);gap:10px;min-height:70vh}
.nb2.files{grid-template-columns:230px minmax(0,1fr)}
.nb2 .col{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px;overflow:auto;max-height:80vh}
.nb2 .nbfcol{max-height:none;overflow:visible}
.nbtree .tf{display:flex;align-items:center;gap:4px;padding:7px 6px;border-radius:8px;cursor:pointer;margin:1px 0;user-select:none}
.nbtree .tf:hover{background:#1c212b}.nbtree .tf.on{background:#3b1530}.nbtree .tf.drop{outline:2px dashed #ec4899;background:#ec489922}
.nbtree .tw{width:16px;text-align:center;color:var(--mut);flex:none}.nbtree .tn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbtree .tc{font-size:12px;color:var(--mut)}
.nbtact{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.nbtact button{flex:1 1 auto}
.nbsub{display:flex;gap:6px;align-items:center;margin-top:8px}.nbsub input{width:auto}.nbhint{margin:6px 0 0}
.nb2 .n{padding:8px;border-radius:8px;cursor:pointer;margin:2px 0}.nb2 .n:hover{background:#1c212b}.nb2 .n.on{background:#3b1530}
.nb2 .n .p{font-size:12px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nblh{align-items:center;margin-bottom:4px}.nblh select{width:auto;padding:4px 6px}
.nbempty{text-align:center;padding:30px 10px}
.nb2.full{position:fixed;inset:0;z-index:15;background:var(--bg);padding:10px;grid-template-columns:minmax(0,1fr)}.nb2.full .nbtree,.nb2.full .nblist{display:none}
.nb2.full .nbed{min-height:80vh}
.nbtreebtn{display:none;width:100%;text-align:left;margin-bottom:6px}
.nbback{display:none}
.nbftool,.nbfilt{flex-wrap:wrap;gap:6px;align-items:center}.nbfilt{margin-top:8px}.nbfilt select{width:auto;padding:5px 6px}
.nbfiles.drag{outline:3px dashed #22c55e;outline-offset:4px;border-radius:10px}
.nbfc .th{position:relative}.nbfc .th.has span{display:none}
.nbfc .badge-v,.nbfc .badge-x{position:absolute;font-style:normal;font-size:11px;background:#000a;color:#fff;border-radius:6px;padding:1px 6px}
.nbfc .badge-v{right:5px;bottom:5px}.nbfc .badge-x{left:5px;top:5px}
.nbfc .nbfp{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nbupl{max-height:46vh;overflow:auto;margin-top:8px;display:flex;flex-direction:column;gap:6px}
.nbupi{display:flex;gap:8px;align-items:center}.nbupi b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nbupi .pv{width:48px;height:48px;flex:none;border-radius:6px;background:#0f172a center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:22px}
.nbupi .pv.has{font-size:0}
.nbupq{margin-top:8px}.nbupq:empty{display:none}
.nbupr{border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin-top:6px}.nbupr .nm{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}
.nbupr.fail{border-color:#ef4444}.nbupr.done{opacity:.75}
.nbbar{height:6px;background:#33415555;border-radius:3px;overflow:hidden;margin:4px 0}.nbbar div{height:100%;background:#22c55e;transition:width .2s}
.nbtxt{white-space:pre-wrap;word-break:break-word;background:#0f1218;border:1px solid var(--line);border-radius:8px;padding:10px;max-height:60vh;overflow:auto;font-size:13px}
html.tg-light .nbtree .tf.on,html.tg-light .nb2 .n.on{background:#fce7f3}html.tg-light .nbtree .tf:hover,html.tg-light .nb2 .n:hover{background:#eef1f5}
html.tg-light .nbtxt{background:#fff}
@media (max-width:820px){
  .nb2,.nb2.files{grid-template-columns:minmax(0,1fr)}.nb2 .col{max-height:none}
  .nbtreebtn{display:block}.nb2 .nbtree{display:none}.nb2.tree-open .nbtree{display:block}
  .nb2.has-note .nblist{display:none}.nb2:not(.has-note) .nbedcol{display:none}
  .nb2.has-note .nbback{display:inline-block;background:#2d6cdf!important;color:#fff!important}
  .nbhead #nbq{max-width:none;order:5;flex-basis:100%}
  .nbtool button[data-ai],.nbtool button{padding:7px 9px}
}
/* ⚡ Ускорить сервер */
.spgrid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:8px}
.sprow{display:flex;gap:10px;align-items:flex-start;padding:9px 6px;border-bottom:1px solid var(--line);cursor:pointer}.sprow input{width:auto;margin-top:3px}
.sptbl{width:100%;border-collapse:collapse;margin:8px 0}.sptbl td,.sptbl th{padding:6px;border-bottom:1px solid var(--line);text-align:left}
.sev-ok-b{border-color:#22c55e}
/* t175: 🎯 режим «один инструмент за раз» — значок в шапке */
.tmchip{display:inline-flex;align-items:center;gap:4px;max-width:46vw;white-space:nowrap;overflow:hidden;border-radius:999px;padding:4px 10px;border:1px solid #334155}
.tmchip .tm-t{overflow:hidden;text-overflow:ellipsis;max-width:22vw}
.tmchip .tm-off{color:#fbbf24;font-size:11px}
@media (max-width:600px){.tmchip .tm-t{display:none}.tmchip{padding:4px 8px}}

/* t178: почта как на телефоне — несколько ящиков */
.mbadge{display:inline-block;min-width:18px;padding:0 6px;margin-left:6px;border-radius:10px;background:#e5484d;color:#fff;font-size:11px;line-height:18px;font-weight:700;text-align:center;vertical-align:middle}
.mbx{display:grid;grid-template-columns:220px minmax(300px,1.1fr) 1.7fr;gap:12px;align-items:start}
.mbx input[type=checkbox],.mbchk input,#mbtg{width:auto;flex:none;padding:0;margin:3px 4px 0 0}
.mbx>.card{margin:0;max-height:calc(100vh - 170px);overflow:auto}
.mbcompose{width:100%;margin:8px 0}
.mbacc{padding:8px;border-radius:10px;cursor:pointer;margin-bottom:4px;border:1px solid transparent}
.mbacc.on{border-color:var(--line);background:rgba(127,127,127,.08)}
.mbacc-h{display:flex;justify-content:space-between;align-items:center;gap:6px}.mbacc-n{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbacc-e{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbfolders{margin-top:6px}.mbfol{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:14px;text-decoration:none;color:inherit}
.mbfol.on{background:var(--acc);color:#fff}.mbfol:hover:not(.on){background:rgba(127,127,127,.12)}
.mbhead{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px}.mbback{display:none}
.mbtools input[type=search]{flex:1;min-width:120px}.mbchk{display:flex;gap:4px;align-items:center;white-space:nowrap}
.mbrow{display:flex;gap:8px;align-items:flex-start;padding:8px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.mbrow:hover{background:rgba(127,127,127,.06)}.mbrow.on{background:rgba(127,127,127,.14)}
.mbrow-b{flex:1;min-width:0}.mbrow-t{display:flex;justify-content:space-between;gap:6px}.mbrow-f{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbrow-s{font-size:13px;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbrow.unread .mbrow-f,.mbrow.unread .mbrow-s{font-weight:700}.mbrow.unread .mbrow-f{color:var(--acc)}
.mbck{margin-top:3px}.mbpager{justify-content:center;margin-top:8px}
.mbsubj{margin:4px 0 6px;font-size:20px}.mbmeta{line-height:1.5;margin-bottom:8px}.mbact{margin:6px 0}
.mbframe{width:100%;min-height:120px;border:0;border-radius:10px;background:#fff;display:block}
.mbimg{background:rgba(255,190,0,.12);padding:6px 8px;border-radius:8px;margin:6px 0;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mbatt{margin-top:10px;display:flex;flex-direction:column;gap:4px}.mbattf{padding:6px 8px;border:1px solid var(--line);border-radius:8px;text-decoration:none}
.mbguide{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:6px 0;font-size:14px}.mbguide ol{margin:6px 0 6px 18px;padding:0}
.mbguide.warnbox{border-color:#e5a000;background:rgba(229,160,0,.08)}.mbglink{font-weight:600}
.mbfile{cursor:pointer;display:inline-block;padding:6px 10px;border:1px dashed var(--line);border-radius:8px}.mbfiles{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.warnt{color:#c77700}.mbsetrow{border-bottom:1px solid var(--line);padding:8px 0}.mbprov p{margin:4px 0}.mbempty{text-align:center;padding:40px 0}
@media(max-width:1100px) and (min-width:761px){.mbx{grid-template-columns:200px 1fr}.mbx .mbview{grid-column:1/-1}}
@media(max-width:760px){.mbx{display:block}.mbx>.card{max-height:none}.mbback{display:inline-block}
 .mbx.pane-boxes .mblist,.mbx.pane-boxes .mbview{display:none}.mbx.pane-list .mbside,.mbx.pane-list .mbview{display:none}
 .mbx.pane-msg .mbside,.mbx.pane-msg .mblist{display:none}.mbact button{padding:8px 10px}.mbsubj{font-size:18px}}
.tabbar a b{position:relative}.tabbar a b .mbadge.g{position:absolute;top:-4px;right:-14px;margin:0;font-size:10px;line-height:16px;min-width:16px;padding:0 4px}
/* ---- t185: блокнот — липкая панель заметки, состояние сохранения, растущее поле, режим фокуса, недавние, доступы */
.nbbar2{position:sticky;top:0;z-index:6;display:flex;flex-wrap:wrap;align-items:center;gap:6px;background:var(--card);padding:6px 2px 8px;margin:-2px 0 6px;border-bottom:1px solid var(--line)}
.nbcrumbs{font-size:13px;color:var(--mut);min-width:0;flex:1 1 220px;overflow-wrap:anywhere}.nbcrumbs a{color:var(--mut);text-decoration:none}.nbcrumbs a:hover{color:var(--fg,#e5e7eb);text-decoration:underline}
.nbcrumbs b{color:var(--fg,#e5e7eb)}
.nbstate{font-size:13px;white-space:nowrap;padding:3px 8px;border-radius:999px;border:1px solid var(--line)}
.nbstate.saved{color:#22c55e;border-color:#14532d}.nbstate.dirty{color:#f59e0b;border-color:#78350f}.nbstate.saving{color:#93c5fd}.nbstate.err{color:#ef4444;border-color:#7f1d1d}
.nbsavebtn{font-weight:700;padding:8px 16px;font-size:15px}
.nbicon{min-width:38px;padding:7px 10px}
.nbst{display:inline-block;margin-left:6px;font-size:11px;font-weight:400}.nbst.saved{color:#22c55e}.nbst.dirty{color:#f59e0b}.nbst.err{color:#ef4444}.nbst.saving{color:#93c5fd}
.nb2.typing .nbedcol{max-height:none;overflow:visible}
.nb2.typing .nbed{overflow:visible;min-height:60vh}
.nb2.typing .nbtree,.nb2.typing .nblist{position:sticky;top:8px;align-self:start;max-height:calc(100vh - 24px)}
.nb2.focus{grid-template-columns:minmax(0,1fr)}.nb2.focus .nbtree,.nb2.focus .nblist{display:none}
.nb2.focus .nbed{font-size:17px;line-height:1.7;max-width:900px;margin:0 auto}
.nbrecent{display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:4px 2px 8px;border-bottom:1px solid var(--line);margin-bottom:6px}
.nbrecent .chip{font-size:12px;padding:3px 8px;border-radius:999px;background:transparent;border:1px solid var(--line);color:inherit;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbrecent .chip.on{border-color:#ec4899;background:#3b1530}
.vault{max-width:900px}
.vadd summary{cursor:pointer;padding:2px 0}
.vform{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin-top:8px}.vform label{display:block;font-size:13px}
.vform label:last-child{grid-column:1/-1}.vrow{display:flex;gap:6px;align-items:center}.vrow input{flex:1;min-width:0}
.vgrp{margin:12px 0}.vgh{font-weight:700;margin:6px 2px;color:var(--mut)}
.vitem{padding:10px 12px;margin:6px 0}
.vline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:3px 0}.vk{width:62px;color:var(--mut);font-size:13px}
.vv{background:#0f1218;border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:14px;word-break:break-all;max-width:100%}
.vtitle{font-size:15px;word-break:break-word}.vcom{margin:4px 0;white-space:pre-wrap}
html.tg-light .vv{background:#f3f4f6}html.tg-light .nbrecent .chip.on{background:#fce7f3}
@media (max-width:820px){
  .nbbar2{top:0}.nbcrumbs{flex-basis:100%;order:-1}.nbsavebtn{flex:1}
  .nb2.typing .nbtree,.nb2.typing .nblist{position:static;max-height:none}
  .vform{grid-template-columns:1fr}.vk{width:auto;min-width:54px}
  .vline button{padding:7px 10px}
}
/* ---- t185: блоки «Сайты и приложения» */
.sbbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 4px}
.sbbar #sbq{max-width:320px;flex:1 1 220px}
.sbchips{display:flex;gap:6px;flex-wrap:wrap}.sbchips button{font-size:12px;padding:4px 10px;border-radius:999px;background:transparent;border:1px solid var(--line);color:inherit;white-space:nowrap}
.sbchips button.dim{opacity:.45}.sbhint{flex-basis:100%}
.sbblock{border:1px solid var(--line);border-radius:12px;padding:4px 12px 10px;margin-top:12px;background:rgba(255,255,255,.015)}
.sbblock .sbbh{cursor:pointer;user-select:none;display:flex;align-items:center;gap:8px;margin:6px 0;font-size:18px}
.sbblock .sbtw{width:16px;color:var(--mut)}
.sbcnt{font-size:12px;font-weight:600;background:#1f2937;color:#cbd5e1;border-radius:999px;padding:1px 9px}
.sbblock.closed:not(.qopen)>.grid,.sbblock.closed:not(.qopen)>.sbempty,.sbblock.closed:not(.qopen)>.sbanote{display:none}
.sbblock.drop{outline:2px dashed #38bdf8;outline-offset:2px;background:rgba(56,189,248,.06)}
.sbblock.sb-ads_live{border-left:4px solid #22c55e}.sbblock.sb-apps_live{border-left:4px solid #38bdf8}.sbblock.sb-off{border-left:4px solid #94a3b8}
.sbblock.sb-tech{border-left:4px solid #a78bfa}.sbblock.sb-test{border-left:4px solid #f59e0b}.sbblock.sb-archive{border-left:4px solid #64748b;opacity:.92}
.card.item .sbmv{padding:2px 9px;margin-left:6px;font-weight:700;line-height:1}
.card.item .sbman{margin-left:4px;font-size:12px}
.card.item.dragging{opacity:.5}.card.item.sbflash{box-shadow:0 0 0 2px #38bdf8}
.sbmvlist{display:flex;flex-direction:column;gap:6px}.sbmvlist button{text-align:left}
html.tg-light .sbcnt{background:#e5e7eb;color:#374151}html.tg-light .sbblock{background:#fff}
@media (max-width:760px){
  .sbbar #sbq{max-width:none;flex-basis:100%}
  .sbchips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;width:100%}
  .sbblock{padding:4px 8px 8px}.sbblock .sbbh{font-size:16px}
  .card.item .sbmv{padding:6px 12px}
}
/* ===== t186: меню уже, скрыть/показать меню, показатели сервера в шапке (только браузер, не мини-приложение) */
@media (min-width:821px){
  body:not(.tg) #app{grid-template-columns:212px minmax(0,1fr)}
  body:not(.tg) #nav a{font-size:14px;padding:8px 9px}
  body:not(.tg) #menuBtn{display:inline-flex;align-items:center;justify-content:center;min-width:38px}
  body.navhide:not(.tg) #app{grid-template-columns:minmax(0,1fr)}
  body.navhide:not(.tg) #app>nav{display:none}
  body.hdrsrv:not(.tg) #app{grid-template-rows:auto 1fr}
  body.hdrsrv:not(.tg) #app header{align-items:center;flex-wrap:wrap;row-gap:6px;padding:8px 14px}
  body.hdrsrv:not(.tg) #app header>.grow{display:none}
  body.hdrsrv:not(.tg) header .srvbar{flex:1 1 560px;min-width:0;position:static;padding:0;background:none;border:0;grid-column:auto;order:0}
  body.hdrsrv:not(.tg) header .srvbar.hidden+.grow,body.hdrsrv:not(.tg) header .srvbar.hidden~.grow{display:block}
  body.hdrsrv:not(.tg) header .srvbar .pfx-ov{font-size:12px}
  body.hdrsrv:not(.tg) #logout{margin-left:auto}
  body.navhide:not(.tg) main{max-width:1440px}
}
@media (min-width:821px) and (max-width:1279px){
  body.hdrsrv:not(.tg) header .srvbar{flex:1 1 100%;order:10}
}
#srvBar .pfx-n{white-space:normal;overflow-wrap:anywhere}
/* ===== t201: компактная шапка — время под логотипом, состояние сервера справа над кнопками */
body.hdr201:not(.tg) .hdrbrand{display:flex;flex-direction:column;justify-content:center;gap:3px;flex:none;min-width:0}
body.hdr201:not(.tg) .hdrtime{display:flex;flex-direction:column;gap:1px;font-size:11px;line-height:1.2;color:var(--hdr-time,#a5b4cf);white-space:nowrap;padding-left:2px}
body.hdr201:not(.tg) .hdrtime .hdrt1{font-variant-numeric:tabular-nums;color:var(--hdr-time-strong,#dbe4f3);font-weight:600;letter-spacing:.02em}
body.hdr201:not(.tg) .hdrtime .hdrz{font-size:10px;font-weight:700;color:var(--hdr-zone,#7dd3fc);letter-spacing:.06em}
body.hdr201:not(.tg) .hdrtime.warn{color:#fbbf24}
body.hdr201:not(.tg) .hdrright{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none;margin-left:auto}
body.hdr201:not(.tg) .hdrbtns{display:flex;align-items:center;gap:8px}
body.hdr201:not(.tg) .hdrbtns #logout{margin-left:0}
body.hdr201:not(.tg) .hdrstat{--hc:#22c55e;display:flex;align-items:center;gap:8px;font-size:12.5px;line-height:1.2;white-space:nowrap;
  padding:5px 12px 5px 11px;border-radius:999px;border:1px solid color-mix(in srgb,var(--hc) 55%,transparent);background:color-mix(in srgb,var(--hc) 12%,rgba(15,23,42,.55));box-shadow:0 0 14px -6px var(--hc)}
body.hdr201:not(.tg) .hdot{width:9px;height:9px;border-radius:50%;flex:none;background:#22c55e;animation:hdrLive 2s infinite}
@keyframes hdrLive{0%{box-shadow:0 0 0 0 rgba(34,197,94,.6)}70%{box-shadow:0 0 0 7px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
body.hdr201:not(.tg) .hdrspeed{padding:3px 10px;border-radius:999px;border:1px solid var(--speed-line,rgba(250,204,21,.55));color:var(--speed-fg,#facc15);text-decoration:none;font-weight:600;font-size:12px;white-space:nowrap;background:var(--speed-bg,rgba(15,23,42,.5))}
body.hdr201:not(.tg) .hdrspeed:hover{background:var(--speed-hover,rgba(250,204,21,.12))}
@media (prefers-reduced-motion:reduce){body.hdr201 .hdot{animation:none}}
@media (min-width:821px){
  body.hdr201:not(.tg) #app header{flex-wrap:nowrap;gap:14px;padding:7px 14px;align-items:center;
    background:var(--header-bg,linear-gradient(90deg,#1e293b 0%,#172033 45%,#2a1b3d 100%));box-shadow:var(--header-shadow,0 1px 0 rgba(148,163,184,.08),0 6px 18px -12px rgba(56,189,248,.35))}
  body.hdr201:not(.tg) #app header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--header-shine,linear-gradient(90deg,transparent,#38bdf8 25%,#a78bfa 55%,#f472b6 80%,transparent));opacity:var(--header-shine-op,.55);pointer-events:none}
  body.hdr201:not(.tg) .hdrbrand{padding-right:14px;border-right:1px solid rgba(148,163,184,.16)}
  body.hdr201:not(.tg) .hdrright{padding-left:14px;border-left:1px solid rgba(148,163,184,.16)}
  body.hdr201:not(.tg) #srvBar .pfx-ov{display:none}
  body.hdr201:not(.tg) #srvBar .pfx-srv{gap:6px;flex-wrap:nowrap}
  body.hdr201:not(.tg) #srvBar .pfx-g{flex:1 1 0;min-width:0;padding:4px 8px 4px 6px;gap:7px;border-radius:11px;background:linear-gradient(180deg,rgba(148,163,184,.12),rgba(148,163,184,.05))}
  body.hdr201:not(.tg) #srvBar .pfx-n{font-size:12px}
  body.hdr201:not(.tg) #srvBar .pfx-s{font-size:10.5px;line-height:1.2;margin-top:1px;opacity:.9}
  body.hdr201:not(.tg) #srvBar svg text{font-size:10px}
}
@media (min-width:821px) and (max-width:1279px){
  body.hdr201:not(.tg) #app header{flex-wrap:wrap;row-gap:7px}
  body.hdr201:not(.tg) header .srvbar{flex:1 1 100%;order:10}
  body.hdr201:not(.tg) #srvBar .pfx-srv{flex-wrap:wrap}
  body.hdr201:not(.tg) #srvBar .pfx-g{flex:1 1 150px}
}
@media (max-width:820px){
  body.hdr201:not(.tg) #hdrStat{display:none}
  body.hdr201:not(.tg) #srvBar .pfx-ov .pfx-mut{display:none}
  body.hdr201:not(.tg) .hdrtime{font-size:10px}
  body.hdr201:not(.tg) .hdrright{flex-direction:row}
}
@media (min-width:1280px){
  body.hdr201:not(.tg) #srvBar .pfx-g{flex:1 1 0;padding:4px 7px 4px 5px;gap:6px}
  body.hdr201:not(.tg) #srvBar .pfx-n{white-space:nowrap;overflow-wrap:normal;font-size:11.5px}
  body.hdr201:not(.tg) #srvBar .pfx-s{font-size:10px}
  body.hdr201:not(.tg) .hdrstat{font-size:12px;gap:7px}
  body.hdr201:not(.tg) .hdrspeed{font-size:11.5px;padding:2px 9px}
  body.hdr201:not(.tg) #app header{gap:12px}
  body.hdr201:not(.tg) .hdrbrand{padding-right:12px}
  body.hdr201:not(.tg) .hdrright{padding-left:12px}
}
@media (min-width:821px){
  body.hdr201:not(.tg) header .srvbar{display:flex;align-items:center;gap:8px}
  body.hdr201:not(.tg) header .srvbar>.pfx-srv{flex:1 1 auto;min-width:0}
  body.hdr201:not(.tg) header .srvbar>.hdrspeed{flex:none;align-self:center}
}
@media (max-width:820px){ body.hdr201:not(.tg) #hdrSpeed{display:none} }
@media (min-width:1280px) and (max-width:1599px){
  body.hdr201:not(.tg) .hdrstat{white-space:normal;max-width:215px;border-radius:14px;padding:4px 11px}
  body.hdr201:not(.tg) .hdrstat b{line-height:1.25}
  body.hdr201:not(.tg) #srvBar .pfx-n{font-size:11px}
}
@media (min-width:821px) and (max-width:1279px){
  body.hdr201:not(.tg) .hdrtime{flex-direction:row;gap:10px}
  body.hdr201:not(.tg) .hdrright{gap:5px}
}
@media (min-width:1280px) and (max-width:1599px){
  body.hdr201:not(.tg) header .srvbar>.hdrspeed{white-space:normal;max-width:84px;text-align:center;line-height:1.2;border-radius:12px;padding:4px 8px}
  body.hdr201:not(.tg) #srvBar .pfx-g{padding:4px 6px 4px 4px;gap:5px}
}
@media (min-width:1280px){
  body.hdr201:not(.tg) #srvBar .pfx-g:nth-child(1){flex-grow:1.12}
  body.hdr201:not(.tg) #srvBar .pfx-g:nth-child(2),body.hdr201:not(.tg) #srvBar .pfx-g:nth-child(3){flex-grow:.92}
  body.hdr201:not(.tg) #srvBar .pfx-g:nth-child(5){flex-grow:1.3}
}
/* ===== t207: блокнот — разделы Файлы / Изображения / Видео, папки, выбор нескольких */
.m7fh{margin:10px 6px 2px;text-transform:uppercase;letter-spacing:.06em;font-size:11px}
.m7chips{display:none}
.m7head{flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px;padding:6px 8px;background:#12151b;border:1px solid var(--line);border-radius:10px}
.m7head select{width:auto;padding:5px 6px}
.m7all{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;user-select:none;white-space:nowrap}
.m7all input,.m7ck input{width:18px;height:18px;margin:0;accent-color:#ec4899;cursor:pointer}
.m7where{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40ch}
.m7page{display:contents}
.m7grid{display:grid;gap:10px;margin-top:10px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.m7grid.vid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.m7c{position:relative;background:var(--card2,#1e293b);border:1px solid #33415588;border-radius:12px;padding:6px;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:0;transition:border-color .12s,box-shadow .12s,transform .12s}
.m7c:hover{border-color:var(--acc);transform:translateY(-1px)}
.m7c .th{position:relative;aspect-ratio:1/1;height:auto;border-radius:8px;background:#0f172a center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:38px;overflow:hidden}
.m7grid.vid .m7c .th{aspect-ratio:16/9}
.m7c .th.has span,.m7r .th.has span{display:none}
.m7c .badge-v,.m7c .badge-x{position:absolute;font-style:normal;font-size:11px;background:#000b;color:#fff;border-radius:6px;padding:1px 6px}
.m7c .badge-v{right:6px;bottom:6px}.m7c .badge-x{left:6px;bottom:6px}
.m7play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;background:#000a;color:#fff;font-style:normal;font-size:17px;display:flex;align-items:center;justify-content:center;border:2px solid #fff9;padding-left:3px;box-sizing:border-box}
.m7n{min-width:0;display:flex;flex-direction:column;gap:1px}
.m7n b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m7n small{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m7fp{color:#c4b5fd}
.m7ck{position:absolute;left:8px;top:8px;z-index:2;background:#0f1115cc;border-radius:7px;padding:4px;display:flex;line-height:0;opacity:.85}
.m7c:hover .m7ck,.m7c.sel .m7ck,.selmode .m7ck{opacity:1}
.m7rn{position:absolute;right:8px;top:8px;z-index:2;padding:3px 7px;font-size:13px;background:#0f1115cc!important;border-radius:7px;opacity:0;transition:opacity .12s}
.m7c:hover .m7rn,.m7r:hover .m7rn{opacity:1}
.m7c.sel{border-color:#ec4899;box-shadow:0 0 0 2px #ec4899 inset}.m7c.sel .th{opacity:.82}
.m7list{margin-top:6px;display:flex;flex-direction:column;gap:4px}
.m7lh,.m7r{display:grid;grid-template-columns:28px 40px minmax(0,1fr) 90px 130px 40px;gap:10px;align-items:center}
.m7lh{margin-top:10px;padding:0 10px;font-size:12px;color:var(--mut)}
.m7r{position:relative;padding:6px 10px;border:1px solid #33415566;border-radius:10px;background:var(--card2,#1e293b);cursor:pointer}
.m7r:hover{border-color:var(--acc)}.m7r.sel{border-color:#ec4899;background:#3b153055}
.m7r .m7ck{position:static;background:none;padding:0;opacity:1}
.m7r .ic{width:40px;height:40px;border-radius:7px;background:#0f172a center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:20px}
.m7r .m7rn{position:static;opacity:.6}
.m7sz,.m7dt{font-size:12px;white-space:nowrap}.m7mob{display:none}
.m7more{text-align:center;margin:12px 0}.m7more:empty{display:none}
.m7act{position:sticky;bottom:10px;z-index:6;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0;padding:10px 12px;border-radius:14px;
  background:linear-gradient(135deg,#1d2433,#2a1730);border:1px solid #ec489966;box-shadow:0 10px 30px #000a}
.m7act.hidden{display:none}.m7act b{margin-right:4px}.m7act button:disabled{opacity:.45}
.m7ghost{position:fixed;top:-100px;left:0;padding:6px 10px;background:#ec4899;color:#fff;border-radius:8px;font-size:13px}
.m7fol{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}
.m7fol .m7fo{text-align:left;background:#1c212b;border:1px solid var(--line);color:var(--txt);padding:10px 12px}
.m7fol .m7fo:hover{border-color:var(--acc)}.m7fol .m7fo.cur{opacity:.6}
.m7lb .m7stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#05070a;overflow:hidden}
.m7lb .m7stage img{max-width:100%;max-height:100%;object-fit:contain;transition:filter .2s}.m7lb .m7stage img.lo{filter:blur(6px)}
.m7lb .m7stage img[src=""]{display:none}
.m7spin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:20px;pointer-events:none}
.m7nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:64px;font-size:34px;line-height:1;border-radius:12px;background:#000a!important;color:#fff!important;border:1px solid #fff3;z-index:2}
.m7nav.p{left:10px}.m7nav.n{right:10px}.m7nav:disabled{opacity:.25}
html.tg-light .m7head{background:#f5f7fa}html.tg-light .m7c,html.tg-light .m7r{background:#fff}
html.tg-light .m7act{background:linear-gradient(135deg,#fff,#fdf2f8);box-shadow:0 8px 24px #0003}html.tg-light .m7fol .m7fo{background:#fff}
@media (max-width:820px){
  .m7chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .m7chips .chip{flex:none;white-space:nowrap;padding:7px 11px;border-radius:999px}
  .m7fact{gap:6px;align-items:center;margin:2px 0 6px}
  .m7grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.m7grid.vid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .m7c{padding:4px;border-radius:10px}.m7c .th{font-size:28px}.m7c .m7n small{display:none}.m7n b{font-size:12px}
  .m7ck{left:6px;top:6px;padding:5px;opacity:1}.m7ck input{width:20px;height:20px}
  .m7c .m7rn{display:none}
  .m7lh{display:none}.m7r{grid-template-columns:26px 40px minmax(0,1fr) 40px;gap:8px;padding:8px}.m7sz,.m7dt{display:none}.m7mob{display:inline}
  .m7r .m7rn{opacity:1;padding:6px 8px}
  .m7act{position:fixed;left:8px;right:8px;bottom:calc(8px + var(--tg-bottom,0px));margin:0;gap:6px;padding:8px}
  .m7act button{flex:1 1 auto;padding:9px 8px;font-size:13px}.m7act b{flex-basis:100%;font-size:13px}
  #m7grid.selmode{padding-bottom:120px}
  .m7where{max-width:100%;flex-basis:100%;order:-1}
  .m7nav{width:40px;height:54px;font-size:28px}
  .m7lb .nbwh b{flex-basis:100%}
}
/* t207: в мини-приложении Telegram панель действий — над нижними вкладками */
body.tg .m7act{position:fixed;left:8px;right:8px;margin:0;bottom:calc(82px + var(--tg-bottom,0px) + env(safe-area-inset-bottom));z-index:13}
body.tg #m7grid.selmode{padding-bottom:130px}
/* t245 🚀 SEO-студия */
.sx .score{font-size:44px;font-weight:800;line-height:1}.sx .score small{font-size:16px;color:var(--mut);font-weight:500}
.sx .bar{height:8px;border-radius:6px;background:#262c38;overflow:hidden;margin-top:6px}.sx .bar i{display:block;height:100%;border-radius:6px}
.sx .s-ok{color:#4ade80}.sx .s-warn{color:#fbbf24}.sx .s-bad{color:#f87171}.sx .b-ok{background:#22c55e}.sx .b-warn{background:#f59e0b}.sx .b-bad{background:#ef4444}
.sx .cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}.sx .cats .card{margin:0;padding:10px}
.sx .iss{border-left:4px solid #555}.sx .iss.critical{border-left-color:#ef4444}.sx .iss.high{border-left-color:#f97316}.sx .iss.medium{border-left-color:#eab308}.sx .iss.low{border-left-color:#64748b}.sx .iss.info{border-left-color:#38bdf8}
.sx details>summary{cursor:pointer}.sx .urls{font-size:12px;word-break:break-all;color:var(--mut)}.sx .urls a{color:inherit}
.sx input[type=checkbox],.sx input[type=radio]{width:auto;flex:none;margin:0 6px 0 0}.sx label.ck{display:inline-flex;align-items:center;margin-right:12px;font-size:14px}
.sx .f2{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;align-items:end}.sx .f2 label{font-size:13px;color:var(--mut)}
.sx pre.diff{background:#0f1218;border:1px solid var(--line);border-radius:8px;padding:8px;font-size:12px;overflow:auto;max-height:340px;white-space:pre-wrap;word-break:break-all}
.sx .prog{height:10px;background:#262c38;border-radius:6px;overflow:hidden}.sx .prog i{display:block;height:100%;background:linear-gradient(90deg,#3b82f6,#8b5cf6);transition:width .4s}
.sx .delta-up{color:#4ade80;font-weight:700}.sx .delta-down{color:#f87171;font-weight:700}.sx td.n{text-align:right;white-space:nowrap}
.sx .len-ok{color:#4ade80}.sx .len-bad{color:#f87171}.sx .tbl td{font-size:13px}.sx .sxhead{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sx .sxhead select{max-width:420px}.sx .tabs{position:sticky;top:0;z-index:3;background:var(--bg,#0f1115);padding:6px 0}
@media(max-width:760px){.sx .score{font-size:36px}.sx .tabs button{padding:6px 9px;font-size:13px}.sx .sxhead select{max-width:100%}}
html.tg-light .sx .bar,html.tg-light .sx .prog{background:#e5e7eb}html.tg-light .sx pre.diff{background:#f8fafc}

/* t297: на компьютере левое меню «липкое» под шапкой и прокручивается само — страница короткого раздела не тянется вниз пустотой под ним */
@media (min-width:821px){
  body:not(.tg) #app>nav{position:sticky;top:var(--navtop,53px);align-self:start;height:calc(100vh - var(--navtop,53px));overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;scrollbar-width:thin}
}
/* t297: кнопки справа от заголовка (INFODRIVE-INFO и т.п.) */
h1.h1-act{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
h1.h1-act .h1-btns{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;font-size:14px;font-weight:600;letter-spacing:0}
h1.h1-act .h1-btns .btn{text-decoration:none}
.ds-infodrive{background:linear-gradient(90deg,#2563eb,#0ea5e9)!important;color:#fff!important;border:0!important;box-shadow:0 0 0 1px #60a5fa55,0 4px 14px #0ea5e933}
.ds-infodrive:hover{filter:brightness(1.1)}
nav a.nav-infodrive{color:#7dd3fc;font-weight:600}
/* t306: на 1280–1599px пять карточек в одной строке шапки не помещались (текст вылезал за рамки) — переносим их отдельной строкой во всю ширину */
@media (min-width:1280px) and (max-width:1599px){
  body.hdr201:not(.tg) #app header{flex-wrap:wrap;row-gap:7px}
  body.hdr201:not(.tg) header .srvbar{flex:1 1 100%;order:10}
  body.hdr201:not(.tg) #srvBar .pfx-srv{flex-wrap:nowrap}
  body.hdr201:not(.tg) #srvBar .pfx-g{flex:1 1 0;padding:4px 8px 4px 6px;gap:7px}
  body.hdr201:not(.tg) #srvBar .pfx-n{font-size:12px}
  body.hdr201:not(.tg) #srvBar .pfx-s{font-size:10.5px}
  body.hdr201:not(.tg) header .srvbar>.hdrspeed{white-space:nowrap;max-width:none;border-radius:999px;padding:3px 10px}
  body.hdr201:not(.tg) .hdrstat{white-space:nowrap;max-width:none;border-radius:999px}
}
/* 🔌 Подключения */
.cx-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cx-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-start;justify-content:space-between}
.cx-main{flex:1 1 220px;min-width:0}
.cx-act{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cx-act input{width:auto;flex:1 1 160px;min-width:0}
.cx-paste{display:none;flex-basis:100%;gap:6px;align-items:center}
.cx-paste.open{display:flex}
@media(max-width:760px){
  .cx-act{width:100%}
  .cx-act button,.cx-paste button{flex:1 1 auto}
  .cx-paste{flex-wrap:wrap}
}
/* 🩺 Диагностика сервера */
.diag-top{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.diag-bar{height:8px;background:#1e293b;border-radius:8px;overflow:hidden;margin:8px 0}
.diag-bar i{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#a78bfa);width:0;transition:width .3s}
.diag-log{max-height:150px;overflow:auto;font-size:12.5px;line-height:1.45;background:#0f141d;border-radius:8px;padding:8px 10px;margin:0}
.diag-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}
.diag-dot{width:12px;height:12px;border-radius:50%;flex:none;margin-top:4px}
.diag-ok{background:#22c55e}.diag-warn{background:#eab308}.diag-bad{background:#ef4444}.diag-unknown{background:#94a3b8}
.diag-groups{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
/* 🧬 Склейки: карточки выбора вместо голых checkbox */
.glue-search{display:block;margin:8px 0}
.glue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.glue-hide{display:none!important}
.glue-site{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:96px;
  padding:12px 12px 12px 40px;border:1px solid var(--line);border-radius:var(--ds-r,12px);background:var(--card);cursor:pointer}
.glue-site input{position:absolute;left:12px;top:14px;width:18px;height:18px;margin:0;padding:0;opacity:0;appearance:none;-webkit-appearance:none}
.glue-site input:focus{outline:none}
.glue-tick{position:absolute;left:12px;top:14px;width:18px;height:18px;border:2px solid var(--line);border-radius:4px;background:transparent;pointer-events:none}
.glue-site.is-on{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc)}
.glue-site.is-on .glue-tick{background:var(--acc);border-color:var(--acc)}
.glue-site.is-on .glue-tick::after{content:"";position:absolute;left:5px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.glue-site:focus-within{outline:2px solid var(--focus,var(--acc));outline-offset:2px}
.glue-host{font-weight:700;line-height:1.3;overflow-wrap:break-word}
.glue-title{font-size:13px;color:var(--mut);line-height:1.35}
.glue-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.glue-actions{margin-top:8px}
.glue-runs{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.glue-run{margin:0}
.glue-doms{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.glue-sum{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.glue-sum-card{margin:0}
.glue-overall{display:grid;gap:4px}
.glue-overall-k{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);font-weight:700}
.glue-overall-v{font-size:32px;font-weight:700;line-height:1.1}
.glue-lv-ok{border-left:4px solid var(--ok)}
.glue-lv-warn{border-left:4px solid var(--warn)}
.glue-lv-bad{border-left:4px solid var(--bad)}
.glue-factor{display:grid;grid-template-columns:auto minmax(140px,220px) minmax(0,1fr) auto;gap:8px 12px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}
.glue-factor:last-child{border-bottom:0}
.glue-val{display:block}
.glue-adv{display:block;color:var(--mut);margin-top:2px}
.glue-fact-act{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}
.glue-todo{margin:8px 0 8px 18px;padding:0}
.glue-todo li{margin:4px 0}
@media(max-width:720px){
  .glue-factor{grid-template-columns:auto minmax(0,1fr)}
  .glue-factor b,.glue-fact-act{grid-column:1/-1}
  .glue-fact-act{justify-content:flex-start}
}
