:root{--bg:#f6f7f9;--card:#fff;--ink:#1f2937;--muted:#6b7280;--line:#e5e7eb;--brand:#1f4e79;--brand2:#2563eb;--good:#15803d;--warn:#b45309;--bad:#b91c1c;
--vslow:#dbeafe;--slow:#e0f2fe;--normal:#f3f4f6;--busy:#fef3c7;--comp:#fee2e2}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}
.layout{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.side{background:var(--brand);color:#fff;padding:16px 0;position:sticky;top:0;height:100vh;overflow:auto}
.side .logo{font-weight:700;font-size:18px;padding:0 18px 12px}.side .logo small{display:block;font-weight:400;opacity:.7;font-size:12px}
.side a{display:block;color:#dbe7f3;padding:7px 18px;font-size:14px}.side a:hover,.side a.on{background:rgba(255,255,255,.12);color:#fff;text-decoration:none}
.side .sec{font-size:11px;text-transform:uppercase;letter-spacing:.06em;opacity:.6;padding:14px 18px 4px}
.side .badge{background:#ef4444;color:#fff;border-radius:10px;padding:0 6px;font-size:11px;margin-left:6px}
.main{padding:18px 26px 80px;max-width:1400px}
.top{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap}
.top h1{font-size:22px;margin:0}
select,input,textarea{font:inherit;padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}
textarea{width:100%;min-height:120px;font-family:ui-monospace,Consolas,monospace;font-size:12px}
button,.btn{font:inherit;padding:7px 14px;border-radius:6px;border:1px solid var(--brand2);background:var(--brand2);color:#fff;cursor:pointer;display:inline-block}
button.sec,.btn.sec{background:#fff;color:var(--brand2)}button.danger{background:var(--bad);border-color:var(--bad)}button.good{background:var(--good);border-color:var(--good)}
button:disabled{opacity:.5;cursor:default}button.sm{padding:3px 9px;font-size:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px}
.card h2{font-size:16px;margin:0 0 10px}.card h3{font-size:14px;margin:14px 0 6px}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.layout{grid-template-columns:1fr}.side{position:static;height:auto}.g2,.g3,.g4{grid-template-columns:1fr}}
.kpi .n{font-size:26px;font-weight:700}.kpi .l{color:var(--muted);font-size:12px}
table{border-collapse:collapse;width:100%}th,td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:12px;color:var(--muted);font-weight:600;background:#fafafa;position:sticky;top:0}
td.num,th.num{text-align:right}.tbl-wrap{overflow:auto;max-height:70vh}
.pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:600}
.lv-very_slow,.lv-Very.slow{background:var(--vslow)}.lv-slow{background:var(--slow)}.lv-normal{background:var(--normal)}.lv-busy{background:var(--busy)}.lv-compression{background:var(--comp);color:#991b1b}
tr.lv-compression td{background:#fff5f5}tr.lv-busy td{background:#fffbeb}
.st-pending{color:var(--warn);font-weight:600}.st-approved,.st-pushed{color:var(--good);font-weight:600}.st-rejected{color:var(--muted)}
.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.form label{display:block;font-size:12px;color:var(--muted);margin:8px 0 3px}.form input,.form select{width:100%}
.form .row input,.form .row select{width:auto}
.alert{border-left:4px solid var(--line);padding:8px 12px;margin:6px 0;background:#fff;border-radius:6px}
.alert.urgent{border-color:var(--bad)}.alert.info{border-color:var(--brand2)}.alert.read{opacity:.6}
.sold{background:#fee2e2;color:#991b1b;font-weight:600;font-size:12px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#111827;color:#fff;padding:10px 16px;border-radius:8px;z-index:99;max-width:90vw}
.toast.err{background:var(--bad)}.hidden{display:none!important}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:flex-start;justify-content:center;z-index:50;overflow:auto;padding:40px 10px}
.modal-box{background:#fff;border-radius:10px;padding:20px 22px;max-width:760px;width:100%;position:relative}.modal-x{position:absolute;right:10px;top:8px;background:none;border:none;color:#333;font-size:22px}
.auth{max-width:420px;margin:60px auto}.auth h1{text-align:center;color:var(--brand)}
.steps{display:flex;gap:6px;margin-bottom:14px}.steps div{flex:1;padding:6px;text-align:center;border-radius:6px;background:#e5e7eb;font-size:12px}.steps div.on{background:var(--brand2);color:#fff}
.reasons{margin:4px 0 0;padding-left:16px;font-size:12px;color:#374151}
code,pre{font-family:ui-monospace,Consolas,monospace;font-size:12px;background:#f3f4f6;border-radius:4px}code{padding:1px 4px}pre{padding:10px;overflow:auto;white-space:pre-wrap}
.doc h1{font-size:22px}.doc h2{font-size:18px;margin-top:22px;border-bottom:1px solid var(--line);padding-bottom:4px}.doc h3{font-size:15px}.doc table td,.doc table th{border:1px solid var(--line)}
.chat-fab{position:fixed;right:20px;bottom:20px;width:52px;height:52px;border-radius:50%;font-size:22px;font-weight:700;box-shadow:0 4px 12px rgba(0,0,0,.2);z-index:40;padding:0}
.chat{position:fixed;right:20px;bottom:84px;width:380px;max-width:calc(100vw - 40px);height:520px;max-height:70vh;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.2);display:flex;flex-direction:column;z-index:41}
.chat-head{padding:10px 14px;background:var(--brand);color:#fff;border-radius:12px 12px 0 0;font-weight:600;display:flex;justify-content:space-between}.chat-head button{background:none;border:none;padding:0;font-size:18px}
.chat-log{flex:1;overflow:auto;padding:10px}.msg{margin:6px 0;padding:8px 10px;border-radius:8px;white-space:pre-wrap;font-size:13px}.msg.u{background:#e0e7ff;margin-left:30px}.msg.a{background:#f3f4f6;margin-right:20px}
.chat-form{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line)}.chat-form input{flex:1}
.plan{border:1px solid var(--line);border-radius:10px;padding:14px}.plan.cur{border:2px solid var(--brand2)}.plan .price{font-size:24px;font-weight:700}
.tag{display:inline-block;background:#eef2ff;color:#3730a3;border-radius:4px;padding:0 6px;font-size:11px;margin-right:4px}

.headline{font-size:17px;font-weight:600;margin:4px 0 10px}
.gap{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:700}
.gap.hi2{background:#fee2e2;color:#991b1b}.gap.hi{background:#fef3c7;color:#92400e}.gap.eq{background:#dcfce7;color:#166534}.gap.lo{background:#e0f2fe;color:#075985}.gap.lo2{background:#dbeafe;color:#1e3a8a}
.up{color:#b45309}.down{color:#15803d}.rise{color:#b91c1c;font-weight:600}.drop{color:#1d4ed8;font-weight:600}
.arrow.rise{color:#b91c1c}.arrow.drop{color:#1d4ed8}
.comp-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin-bottom:16px}.comp-grid .card{margin:0}.comp .n{font-size:22px;font-weight:700}
.pchart{width:100%;height:240px;display:block}.pchart text{font-size:11px;fill:#6b7280}.pchart .grid-l{stroke:#eef0f3}.pchart .band{fill:#e5e7eb}
.pchart .med{fill:none;stroke:#6b7280;stroke-width:2;stroke-dasharray:5 4}.pchart .ours{fill:none;stroke:#1f4e79;stroke-width:2.5}.pchart .ours-dot{fill:#1f4e79}
.legend{display:flex;gap:16px;margin:6px 0}.legend .sw{display:inline-block;width:18px;height:10px;margin-right:5px;vertical-align:middle;border-radius:2px}
.legend .sw.ours{background:#1f4e79}.legend .sw.med{border-top:2px dashed #6b7280;height:0}.legend .sw.band{background:#e5e7eb}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.dot.ok{background:#16a34a}.dot.warn{background:#f59e0b}.dot.off{background:#9ca3af}
.alerts-form .arow{padding:8px 0;border-bottom:1px solid var(--line)}.alerts-form input{width:70px;margin:0 4px;text-align:right}
.tabs{display:flex;gap:6px;margin-bottom:10px;align-items:center;flex-wrap:wrap}.tab{padding:5px 12px;border-radius:16px;background:#fff;border:1px solid var(--line);color:var(--ink)}.tab.on{background:var(--brand2);color:#fff;border-color:var(--brand2)}.tab:hover{text-decoration:none}
.setup .bar{height:6px;background:#e5e7eb;border-radius:3px;margin:4px 0 10px}.setup .bar div{height:6px;background:var(--good);border-radius:3px}
.steps-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}
.steps-list li{display:flex;gap:10px;align-items:flex-start;padding:8px;border:1px solid var(--line);border-radius:8px}.steps-list li.done{opacity:.6}
.steps-list .chk{width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:none}.steps-list li.done .chk{background:var(--good);border-color:var(--good);color:#fff}
