*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}:root{--bg:#0a0a0c;--bg-elev:#0e0e11;--surface-1:#141418;--surface-2:#1b1b21;--surface-3:#23232b;--line:#2a2a33;--line-soft:#1e1e25;--text:#f5f5f7;--text-dim:#a2a2ae;--text-faint:#6b6b78;--brand:#ff6500;--brand-hi:#ff7d29;--brand-2:#c675ba;--brand-ink:#1a0a00;--grad:linear-gradient(120deg, #ff6500 0%, #ff5a3c 42%, #c675ba 100%);--grad-soft:linear-gradient(120deg, #ff650029, #c675ba29);--glow:#ff65004d;--ok:#3ecf8e;--ok-bg:#3ecf8e24;--warn:#f2b03c;--warn-bg:#f2b03c24;--info:#6aa5ff;--info-bg:#6aa5ff24;--bad:#ff5d5d;--bad-bg:#ff5d5d24;--r-xs:7px;--r-sm:10px;--r:14px;--r-lg:18px;--r-pill:999px;--shadow-1:0 1px 2px #0006;--shadow-2:0 12px 34px -12px #000000b3;--shadow-brand:0 8px 24px -8px var(--glow);--sidebar-w:248px;--font:"Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;--mono:"SF Mono", ui-monospace, "JetBrains Mono", "Roboto Mono", Menlo, monospace}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);letter-spacing:-.006em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100vh;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}::selection{color:#fff;background:#ff65004d}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--surface-3);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#34343f padding-box content-box}.app{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--bg-elev);border-right:1px solid var(--line-soft);z-index:40;flex-direction:column;flex-shrink:0;height:100vh;padding:18px 14px 14px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;margin-bottom:18px;padding:6px 8px 4px;display:flex}.brand .logo{flex-shrink:0}.brand .wordmark{letter-spacing:-.02em;font-size:19px;font-weight:800}.brand .tag{color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;margin-top:1px;font-size:10.5px;font-weight:600}.logo{background:var(--grad);width:34px;height:34px;box-shadow:var(--shadow-brand), inset 0 1px 0 #ffffff40;border-radius:9px;place-items:center;display:grid}.logo svg{display:block}.logo.lg{border-radius:15px;width:56px;height:56px}.nav-label{letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);margin:12px 0 6px;padding:0 10px;font-size:10.5px;font-weight:700}.nav{flex-direction:column;gap:2px;display:flex}.nav-item{border-radius:var(--r-sm);color:var(--text-dim);align-items:center;gap:11px;padding:9px 11px;font-size:13.5px;font-weight:550;transition:background .12s,color .12s;display:flex;position:relative}.nav-item svg{opacity:.85;flex-shrink:0;width:18px;height:18px}.nav-item:hover{background:var(--surface-1);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text)}.nav-item.active:before{content:"";background:var(--grad);border-radius:0 3px 3px 0;width:3px;height:20px;position:absolute;top:50%;left:-14px;transform:translateY(-50%)}.nav-item.active svg{opacity:1;color:var(--brand)}.nav-item .count{color:var(--text-faint);background:var(--surface-2);border-radius:var(--r-pill);margin-left:auto;padding:1px 7px;font-size:11px;font-weight:700}.nav-item.active .count{color:var(--text-dim);background:var(--surface-3)}.side-foot{margin-top:auto;padding-top:12px}.side-status{border-radius:var(--r-sm);background:var(--surface-1);border:1px solid var(--line-soft);color:var(--text-dim);align-items:center;gap:9px;margin-bottom:10px;padding:10px 11px;font-size:12.5px;display:flex}.side-status .dot{background:var(--text-faint);border-radius:50%;flex-shrink:0;width:8px;height:8px}.side-status.on{color:var(--text)}.side-status.on .dot{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg);animation:1.6s ease-in-out infinite pulse}.side-status .n{color:var(--text);font-weight:700}.side-foot .meta{color:var(--text-faint);justify-content:space-between;padding:0 4px;font-size:11px;display:flex}.side-foot .logout{color:var(--text-faint)}.side-foot .logout:hover{color:var(--bad)}.topbar-m,.backdrop{display:none}.content{flex-direction:column;flex:1;min-width:0;display:flex;overflow-x:hidden}.content-in{width:100%;max-width:1240px;margin:0 auto;padding:26px 34px 60px}.page-head{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-head .titles{min-width:0}.page-title{letter-spacing:-.02em;font-size:22px;font-weight:800}.page-sub{color:var(--text-dim);margin-top:3px;font-size:13px}.page-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}button{font-family:inherit}.btn{border:1px solid var(--line);background:var(--surface-2);height:38px;color:var(--text);border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-size:13.5px;font-weight:650;transition:background .12s,border-color .12s,transform 50ms,box-shadow .12s;display:inline-flex}.btn:hover{background:var(--surface-3);border-color:#33333e}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn svg{width:16px;height:16px}.btn-primary{background:var(--grad);color:#fff;box-shadow:var(--shadow-brand);border:0;font-weight:700}.btn-primary:hover{filter:brightness(1.06);box-shadow:0 10px 28px -8px var(--glow)}.btn-ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-1);color:var(--text);border-color:#0000}.btn-danger{border-color:var(--line);color:var(--bad);background:0 0}.btn-danger:hover{background:var(--bad-bg);border-color:#ff5d5d66}.btn-sm{height:32px;padding:0 11px;font-size:12.5px}.icon-btn{border-radius:var(--r-xs);border:1px solid var(--line);background:var(--surface-2);width:30px;height:30px;color:var(--text-dim);cursor:pointer;place-items:center;transition:all .12s;display:inline-grid}.icon-btn:hover{color:var(--bad);background:var(--bad-bg);border-color:#ff5d5d66}input,select,textarea{font-family:inherit;font-size:13.5px}input[type=text],input[type=password],input[type=number],select,textarea{background:var(--bg-elev);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);appearance:none;width:100%;height:38px;padding:0 12px;transition:border-color .12s,box-shadow .12s}textarea{resize:vertical;height:auto;padding:10px 12px;line-height:1.5}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,select:focus,textarea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #ff650029}select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23a2a2ae' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 11px center;background-repeat:no-repeat;padding-right:32px}input[type=file]{color:var(--text-dim);font-size:12.5px}input[type=file]::file-selector-button{border-radius:var(--r-xs);border:1px solid var(--line);background:var(--surface-2);height:30px;color:var(--text);cursor:pointer;margin-right:12px;padding:0 12px;font-family:inherit;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-dim);font-size:12px;font-weight:600}.card{background:var(--surface-1);border:1px solid var(--line-soft);border-radius:var(--r);margin-bottom:16px;padding:18px 20px}.card.flush{padding:0;overflow:hidden}.section-head{align-items:center;gap:10px;margin-bottom:14px;display:flex}.section-head h2{letter-spacing:-.01em;font-size:14px;font-weight:700}.section-head .sub{color:var(--text-dim);font-size:12px}.section-head .spacer{flex:1}.card-pad{padding:18px 20px}.card-head{border-bottom:1px solid var(--line-soft);align-items:center;gap:10px;padding:15px 20px;display:flex}.card-head h2{font-size:14px;font-weight:700}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar .grow{flex:1;min-width:120px}.hint{color:var(--text-dim);font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.mono{font-family:var(--mono);letter-spacing:-.02em;font-size:12px}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.kpis{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px;display:grid}.kpi{background:var(--surface-1);border:1px solid var(--line-soft);border-radius:var(--r);padding:16px 18px;position:relative;overflow:hidden}.kpi:before{content:"";background:var(--grad);opacity:.9;height:3px;position:absolute;inset:0 0 auto}.kpi .k-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:7px;font-size:11.5px;font-weight:600;display:flex}.kpi .k-label svg{width:14px;height:14px;color:var(--brand);opacity:.9}.kpi .k-val{letter-spacing:-.03em;margin-top:8px;font-size:30px;font-weight:800;line-height:1}.kpi .k-foot{color:var(--text-faint);margin-top:7px;font-size:12px}.kpi .k-foot b{color:var(--ok);font-weight:700}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--line);background:var(--surface-1);white-space:nowrap;padding:11px 14px;font-size:11px;font-weight:700;position:sticky;top:0}tbody td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:11px 14px;font-size:13px}tbody tr:last-child td{border-bottom:0}tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface-1)}.card.flush tbody tr:hover{background:#ffffff05}tr.sel{background:var(--grad-soft)!important}tr.clickable{cursor:pointer}.avatar{object-fit:cover;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;width:30px;height:30px}.avatar.ph{color:var(--text-faint);place-items:center;font-size:12px;display:inline-grid}.u-name{font-weight:600}.badge{border-radius:var(--r-pill);white-space:nowrap;align-items:center;gap:6px;padding:3px 9px 3px 8px;font-size:11.5px;font-weight:650;line-height:1.4;display:inline-flex}.badge .d{background:currentColor;border-radius:50%;width:6px;height:6px}.badge.active,.badge.done{color:var(--ok);background:var(--ok-bg)}.badge.warming{color:var(--warn);background:var(--warn-bg)}.badge.assigned{color:var(--info);background:var(--info-bg)}.badge.banned,.badge.failed{color:var(--bad);background:var(--bad-bg)}.badge.neutral{color:var(--text-dim);background:var(--surface-2)}.pill{border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-dim);border:1px solid var(--line-soft);align-items:center;gap:6px;padding:4px 11px;font-size:12px;font-weight:650;display:inline-flex}.pill.live{color:var(--brand);background:#ff65001f;border-color:#ff650040}.pill.live .d{background:var(--brand);border-radius:50%;width:7px;height:7px;animation:1.5s infinite pulse;box-shadow:0 0 0 3px #ff650040}.chip{border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-dim);align-items:center;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.tabs{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.tab{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-1);height:30px;color:var(--text-dim);cursor:pointer;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:12.5px;font-weight:600;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.tab:hover{color:var(--text);background:var(--surface-2)}.tab.active{color:var(--text);background:var(--surface-2);border-color:#ff650059}.tab .td{background:var(--brand);border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:1.5s infinite pulse;box-shadow:0 0 0 3px #ff650033}.console{border:1px solid var(--line);border-radius:var(--r-sm);background:#08080a;overflow:hidden}.console-bar{border-bottom:1px solid var(--line-soft);background:var(--surface-1);align-items:center;gap:8px;padding:9px 13px;display:flex}.console-bar .dots{gap:5px;display:flex}.console-bar .dots i{border-radius:50%;width:9px;height:9px;display:block}.console-bar .dots i:first-child{background:#ff5f57}.console-bar .dots i:nth-child(2){background:#febc2e}.console-bar .dots i:nth-child(3){background:#28c840}.console-bar .t{color:var(--text-dim);font-size:12px;font-family:var(--mono)}.console pre{font-family:var(--mono);color:#d6d6dd;white-space:pre-wrap;word-break:break-word;max-height:340px;margin:0;padding:14px 16px;font-size:12px;line-height:1.65;overflow:auto}.console pre::-webkit-scrollbar-thumb{background:#2a2a33}.models-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.models-split .card{margin-bottom:0}@media (max-width:960px){.models-split{grid-template-columns:1fr}}.grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:12px;margin-top:14px;display:grid}.thumb{border-radius:var(--r-sm);border:1px solid var(--line);aspect-ratio:1;background:var(--surface-2);position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb .del{color:#fff;cursor:pointer;opacity:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0a0cb8;border:0;border-radius:6px;place-items:center;width:24px;height:24px;transition:opacity .12s;display:grid;position:absolute;top:6px;right:6px}.thumb:hover .del{opacity:1}.thumb .del:hover{background:var(--bad)}.empty{text-align:center;color:var(--text-faint);padding:38px 20px}.empty .ico{background:var(--surface-2);width:44px;height:44px;color:var(--text-dim);border-radius:12px;place-items:center;margin:0 auto 12px;display:grid}.empty h3{color:var(--text-dim);margin-bottom:4px;font-size:14px;font-weight:700}.empty p{font-size:12.5px}.auth{background:radial-gradient(60% 55% at 20% 0%, #ff65001a, transparent 60%), radial-gradient(50% 50% at 100% 100%, #c675ba1a, transparent 60%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:372px;box-shadow:var(--shadow-2);flex-direction:column;padding:30px 28px;display:flex}.auth-card .logo{margin:0 auto 16px}.auth-card h1{text-align:center;letter-spacing:-.02em;font-size:20px;font-weight:800}.auth-card .sub{text-align:center;color:var(--text-dim);margin:4px 0 20px;font-size:13px}.auth-card input{height:42px}.auth-card .err{margin-top:12px}.auth-card .btn-primary{width:100%;height:42px;margin-top:12px}.err{color:var(--bad);text-align:center;background:var(--bad-bg);border-radius:var(--r-sm);padding:8px;font-size:12.5px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.card,.kpi{animation:.28s both fadeIn}@media (max-width:1080px){.kpis{grid-template-columns:repeat(2,1fr)}.content-in{padding:22px 22px 56px}}@media (max-width:860px){.sidebar{height:100vh;box-shadow:var(--shadow-2);transition:transform .22s;position:fixed;top:0;left:0;transform:translate(-100%)}.app.nav-open .sidebar{transform:translate(0)}.app.nav-open .backdrop{z-index:35;background:#0000008c;animation:.2s fadeIn;display:block;position:fixed;inset:0}.topbar-m{z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft);background:#0a0a0cd1;align-items:center;gap:12px;padding:11px 16px;display:flex;position:sticky;top:0}.topbar-m .burger{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-1);width:38px;height:38px;color:var(--text);cursor:pointer;place-items:center;display:grid}.topbar-m .wordmark{font-size:16px;font-weight:800}.content-in{padding:18px 16px 48px}.page-title{font-size:19px}}@media (max-width:520px){.kpis{grid-template-columns:repeat(2,1fr);gap:10px}.kpi .k-val{font-size:24px}.page-actions{width:100%}}
