:root{--bg:#0a1929;--surface:#0c1e30;--surface-2:#102a40;--border:rgba(120,160,190,.16);--text:#eaf4f2;--text-muted:#7c96a6;--primary:#33f0b0;--primary-rgb:51,240,176;--primary-foreground:#06231a;--success:#33f0b0;--success-rgb:51,240,176;--warning:#f6c560;--warning-rgb:246,197,96;--danger:#ff7a8a;--danger-rgb:255,122,138;--radius:14px;--shadow-card:0 1px 2px rgba(0,0,0,.35),0 6px 20px rgba(0,0,0,.28);--shadow-hover:0 2px 6px rgba(0,0,0,.45),0 14px 34px rgba(0,0,0,.4);--shadow-pop:0 10px 30px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.4);--grid:rgba(120,160,190,.12)}.dark{--bg:#081420;--surface:#0b1b2b;--surface-2:#0f2739;--border:rgba(120,160,190,.18);--text:#eaf4f2;--text-muted:#7c96a6;--grid:rgba(120,160,190,.12)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:Manrope,system-ui,sans-serif;background:radial-gradient(1200px 600px at 78% -10%,rgba(var(--primary-rgb),.08),transparent 60%),radial-gradient(900px 500px at -5% 5%,rgba(79,195,247,.06),transparent 55%),var(--bg);background-attachment:fixed;color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background .35s ease,color .35s ease}.mono{font-family:JetBrains Mono,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}button{font-family:inherit;cursor:pointer;border:none;background:none}a,button{color:inherit}a{text-decoration:none}::selection{background:rgba(var(--primary-rgb),.28);color:#06231a}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:20px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#1d3f5c}::-webkit-scrollbar-track{background:transparent}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;transition:background .35s ease,border-color .35s ease}.brand{display:flex;align-items:center;gap:11px;padding:20px 20px 18px}.brand .logo{width:34px;height:34px;border-radius:9px;flex:none;display:grid;place-items:center;color:var(--primary-foreground);background:linear-gradient(135deg,var(--primary),rgba(var(--primary-rgb),.7));box-shadow:0 4px 12px rgba(var(--primary-rgb),.35)}.brand .bname,.brand .logo{font-weight:800;font-size:15px}.brand .bname{letter-spacing:-.2px;line-height:1.1}.brand .btag{font-size:11px;color:var(--text-muted);font-weight:500}.nav{padding:6px 12px;flex:1 1;overflow-y:auto}.nav .sec{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;padding:14px 12px 6px;opacity:.8}.nav .sec,.nav a{color:var(--text-muted)}.nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;font-weight:600;font-size:13.5px;margin-bottom:1px;transition:.15s}.nav a svg{width:17px;height:17px;flex:none}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:rgba(var(--primary-rgb),.12);color:var(--primary);position:relative}.nav a.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--primary)}.nav a.active svg{color:var(--primary)}.side-foot{padding:14px;border-top:1px solid var(--border)}.modesw{display:flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px}.modesw button{flex:1 1;font-size:11.5px;font-weight:700;padding:7px 6px;border-radius:8px;color:var(--text-muted);transition:.15s}.modesw button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-card)}.brand .side-collapse{margin-left:auto;width:30px;height:30px;flex:none;color:var(--text-muted)}.brand .side-collapse:hover{color:var(--text)}.app{transition:grid-template-columns .22s ease}.app.collapsed{grid-template-columns:74px 1fr}.sidebar.collapsed .brand{flex-direction:column;gap:10px;padding:18px 0 14px}.sidebar.collapsed .brand-text{display:none}.sidebar.collapsed .brand .side-collapse{margin-left:0}.sidebar.collapsed .nav{padding:6px 10px}.sidebar.collapsed .nav a{justify-content:center;padding:10px 0}.sidebar.collapsed .nav a span,.sidebar.collapsed .nav a.active:before{display:none}.sidebar.collapsed .nav .sec{font-size:0;padding:10px 0 4px;height:1px;overflow:hidden;color:transparent}.sidebar.collapsed .side-foot{display:none}.main{display:flex;flex-direction:column;min-width:0}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);background:color-mix(in srgb,var(--bg) 82%,transparent);border-bottom:1px solid var(--border);padding:13px 26px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.page-title{font-size:19px;font-weight:800;letter-spacing:-.4px}.page-sub{font-size:12.5px;color:var(--text-muted);font-weight:500;margin-top:1px}.spacer{flex:1 1}.content{padding:24px 26px 60px;max-width:1480px;width:100%;margin:0 auto}.filterbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.seg{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:3px;box-shadow:var(--shadow-card)}.seg button{font-size:12px;font-weight:600;padding:6px 11px;border-radius:7px;color:var(--text-muted);transition:.12s}.seg button.on{background:rgba(var(--primary-rgb),.12);color:var(--primary)}.ctl{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:7px 12px;color:var(--text);box-shadow:var(--shadow-card);transition:.15s;position:relative}.ctl:hover{border-color:rgba(var(--primary-rgb),.4)}.ctl svg{width:15px;height:15px;color:var(--text-muted)}.icon-btn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);transition:.15s}.icon-btn:hover{border-color:rgba(var(--primary-rgb),.4);transform:translateY(-1px)}.icon-btn svg{width:17px;height:17px;color:var(--text-muted)}.btn{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:12.5px;padding:8px 14px;border-radius:10px;transition:.15s;white-space:nowrap}.btn svg{width:15px;height:15px}.btn-primary{background:var(--primary);color:var(--primary-foreground);box-shadow:0 4px 14px rgba(var(--primary-rgb),.32)}.btn-primary:hover{filter:brightness(1.06);transform:translateY(-1px)}.btn-ghost{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card)}.btn-ghost:hover{border-color:rgba(var(--primary-rgb),.4)}.grid{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:22px;gap:22px}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-6{grid-column:span 6}.col-8{grid-column:span 8}.col-12{grid-column:span 12}.span-third{grid-column:span 4}.span-half{grid-column:span 6}.span-2third{grid-column:span 8}.span-full{grid-column:span 12}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:20px 22px;transition:box-shadow .18s,transform .18s,border-color .18s;position:relative;min-width:0}.card.hoverable:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px}.card-title{font-size:14.5px;font-weight:700;letter-spacing:-.2px}.card-desc{font-size:11.5px;color:var(--text-muted);font-weight:500;margin-top:2px}.cbody,.chart-body{max-width:100%;overflow:hidden}.card svg{max-width:100%}.kpi{overflow:hidden}.kpi:after{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,var(--primary),transparent)}.kpi .kpi-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;gap:8px}.kpi-label{font-size:12px;font-weight:600;color:var(--text-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none;background:rgba(var(--primary-rgb),.1);color:var(--primary)}.kpi-ico svg{width:16px;height:16px}.kpi-val{font-size:30px;font-weight:700;letter-spacing:-1px;line-height:1.05;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:8px}.delta{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:700;padding:2px 7px;border-radius:20px}.delta svg{width:12px;height:12px}.delta.up{color:var(--success);background:rgba(var(--success-rgb),.14)}.delta.down{color:var(--danger);background:rgba(var(--danger-rgb),.14)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px}.badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-active{color:var(--success);background:rgba(var(--success-rgb),.14)}.badge-syncing{color:var(--warning);background:rgba(var(--warning-rgb),.14)}.badge-error{color:var(--danger);background:rgba(var(--danger-rgb),.14)}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);padding:8px 12px}.tbl td,.tbl th{border-bottom:1px solid var(--border)}.tbl td{padding:12px;font-size:13px;font-weight:500}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr{transition:.12s;cursor:pointer}.tbl tbody tr:hover{background:var(--surface-2)}.tbl .name-cell{display:flex;align-items:center;gap:10px;font-weight:700}.avatar{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:11.5px;font-weight:800;color:#fff;flex:none}.bar-track{height:7px;border-radius:20px;background:var(--surface-2);overflow:hidden}.bar-fill{height:100%;border-radius:20px;transition:width .8s cubic-bezier(.2,.8,.2,1)}.chart-tip{position:fixed;pointer-events:none;z-index:9999;opacity:0;transform:translateY(4px);background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-pop);padding:9px 12px;min-width:120px;transition:opacity .12s,transform .12s}.chart-tip.show{opacity:1;transform:translateY(0)}.chart-tip .tl{font-size:11px;color:var(--text-muted);font-weight:600;margin-bottom:5px}.chart-tip .tr{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:12px;margin-top:3px}.chart-tip .tr .k{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-weight:600}.chart-tip .tr .sw{width:8px;height:8px;border-radius:3px}.chart-tip .tr .v{font-weight:700;font-family:JetBrains Mono,monospace}.card.editing{border-style:dashed;border-color:rgba(var(--primary-rgb),.55);cursor:-webkit-grab;cursor:grab}.card.editing:active{cursor:-webkit-grabbing;cursor:grabbing}.card.dragging{opacity:.45;outline:2px dashed var(--primary)}.card.dragover{outline:2px solid var(--primary);outline-offset:2px}.edit-handle{display:none;align-items:center;gap:4px;color:var(--text-muted)}.card.editing .edit-handle{display:inline-flex}.edit-handle svg{width:15px;height:15px}.dotmenu{position:relative}.menu-pop{position:absolute;right:0;top:30px;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;min-width:210px;display:none}.menu-pop.open{display:block}.menu-lbl{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);padding:8px 10px 4px}.menu-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;font-size:12.5px;font-weight:600;width:100%;text-align:left;transition:.1s}.menu-item:hover{background:var(--surface-2)}.menu-item svg{width:15px;height:15px;color:var(--text-muted)}.menu-item.danger,.menu-item.danger svg{color:var(--danger)}.menu-grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:4px;gap:4px;padding:4px 8px 8px}.chip{font-size:11px;font-weight:700;padding:6px 4px;border-radius:7px;background:var(--surface-2);text-align:center;transition:.1s}.chip:hover{background:rgba(var(--primary-rgb),.12);color:var(--primary)}.chip.on{background:var(--primary);color:var(--primary-foreground)}.overlay{position:fixed;inset:0;background:rgba(12,10,9,.45);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;opacity:0;pointer-events:none;transition:.2s}.overlay.show{opacity:1;pointer-events:auto}.sheet{position:fixed;top:0;right:0;height:100vh;width:420px;max-width:92vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-pop);z-index:201;transform:translateX(100%);transition:transform .28s cubic-bezier(.3,.8,.3,1);display:flex;flex-direction:column}.sheet.show{transform:translateX(0)}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-46%);width:600px;max-width:94vw;max-height:88vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-pop);z-index:201;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.modal.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}.modal-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal-body{padding:18px 20px}.sheet-head{padding:20px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.sheet-body{padding:18px 22px;overflow-y:auto;flex:1 1}.gallery-item{display:flex;align-items:center;gap:13px;padding:13px;border:1px solid var(--border);border-radius:12px;margin-bottom:10px;transition:.15s;cursor:pointer;background:var(--surface)}.gallery-item:hover{border-color:rgba(var(--primary-rgb),.5);box-shadow:var(--shadow-card);transform:translateY(-1px)}.gi-ico{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:rgba(var(--primary-rgb),.1);color:var(--primary);flex:none}.gi-ico svg{width:21px;height:21px}.gi-t{font-weight:700;font-size:13.5px}.gi-d{font-size:11.5px;color:var(--text-muted);margin-top:1px}.dd{position:relative}.dd-pop{position:absolute;top:42px;left:0;z-index:60;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;min-width:190px;display:none}.dd-pop.open{display:block}.toasts{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:11px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:12px 16px;min-width:260px;animation:toastIn .3s cubic-bezier(.2,.9,.3,1)}.toast .t-ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:rgba(var(--success-rgb),.14);color:var(--success);flex:none}.toast .t-ico svg{width:16px;height:16px}.toast .t-t{font-weight:700;font-size:13px}.toast .t-d{font-size:11.5px;color:var(--text-muted)}@keyframes toastIn{0%{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}.skel{background:linear-gradient(90deg,var(--surface-2) 25%,rgba(var(--primary-rgb),.06) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s infinite;border-radius:8px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 20px;gap:12px}.state .s-ico{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:var(--surface-2);color:var(--text-muted)}.state .s-ico svg{width:26px;height:26px}.state .s-t{font-weight:700;font-size:15px}.state .s-d{font-size:13px;color:var(--text-muted);max-width:320px}.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 160px);max-width:860px;margin:0 auto}.chat-scroll{flex:1 1;overflow-y:auto;padding:10px 4px;display:flex;flex-direction:column;gap:16px}.msg{display:flex;gap:11px;max-width:88%}.msg.user{align-self:flex-end;flex-direction:row-reverse}.msg .mav{width:32px;height:32px;border-radius:9px;flex:none;display:grid;place-items:center;color:#fff;font-weight:800;font-size:12px}.msg.bot .mav{background:linear-gradient(135deg,var(--primary),rgba(var(--primary-rgb),.7));color:var(--primary-foreground)}.msg.user .mav{background:var(--surface-2);color:var(--text-muted)}.bubble{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:13px 15px;font-size:13.5px;box-shadow:var(--shadow-card);line-height:1.55}.msg.user .bubble{background:var(--primary);color:var(--primary-foreground);border-color:transparent}.suggest{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 14px}.sg-chip{font-size:12px;font-weight:600;padding:8px 13px;border-radius:20px;background:var(--surface);border:1px solid var(--border);transition:.15s;box-shadow:var(--shadow-card)}.sg-chip:hover{border-color:rgba(var(--primary-rgb),.5);transform:translateY(-1px)}.chat-input{display:flex;gap:10px;padding-top:14px}.chat-input input{flex:1 1;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 15px;font-family:inherit;font-size:13.5px;color:var(--text);outline:none;box-shadow:var(--shadow-card)}.chat-input input:focus{border-color:rgba(var(--primary-rgb),.5)}.typing{display:inline-flex;gap:4px;padding:4px 0}.typing i{width:7px;height:7px;border-radius:50%;background:var(--text-muted);animation:bounce 1.2s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}.assist-wrap{display:grid;grid-template-columns:246px 1fr;grid-gap:20px;gap:20px;height:calc(100vh - 150px)}.assist-side{display:flex;flex-direction:column;gap:8px;min-height:0;border-right:1px solid var(--border);padding-right:18px}.assist-new{justify-content:center}.assist-threads{flex:1 1;overflow-y:auto;display:flex;flex-direction:column;gap:3px}.assist-thread{display:flex;align-items:center;gap:6px;padding:9px 10px;border-radius:9px;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-muted);border:1px solid transparent;background:none;width:100%}.assist-thread:hover{background:var(--surface-2);color:var(--text)}.assist-thread.on{background:rgba(var(--primary-rgb),.12);color:var(--primary);border-color:rgba(var(--primary-rgb),.25)}.assist-thread .att-title{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.assist-thread .att-del{opacity:0;width:24px;height:24px;flex:none}.assist-thread:hover .att-del{opacity:.65}.assist-thread .att-del:hover{opacity:1;color:var(--danger)}.assist-chat{max-width:none;margin:0;height:100%}@media (max-width:820px){.assist-wrap{grid-template-columns:1fr;height:calc(100vh - 160px)}.assist-side{display:none}}@keyframes bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 70% -10%,rgba(var(--primary-rgb),.16),transparent 60%),var(--bg)}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-pop);padding:34px 32px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:700;margin-bottom:6px;color:var(--text-muted)}.field input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:11px;padding:11px 13px;font-family:inherit;font-size:13.5px;color:var(--text);outline:none}.field input:focus{border-color:rgba(var(--primary-rgb),.55)}.reveal{opacity:0;transform:translateY(12px)}.reveal.in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}.between,.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.muted{color:var(--text-muted)}.tnum{font-family:JetBrains Mono,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 0 rgba(var(--success-rgb),.5);animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(var(--success-rgb),.5)}70%{box-shadow:0 0 0 7px rgba(var(--success-rgb),0)}to{box-shadow:0 0 0 0 rgba(var(--success-rgb),0)}}.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.legend span{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--text-muted)}.legend i{width:9px;height:9px;border-radius:3px;display:inline-block}@media (max-width:1280px){.kpi-row{grid-template-columns:repeat(3,1fr)!important}}@media (max-width:1080px){.app{grid-template-columns:1fr}.sidebar{display:none}.col-4,.col-6,.col-8,.span-2third,.span-half,.span-third{grid-column:span 12}.col-3{grid-column:span 6}}@media (max-width:680px){.kpi-row{grid-template-columns:repeat(2,1fr)!important}}@media (max-width:560px){.col-3{grid-column:span 12}.content{padding:16px}.topbar{padding:12px 16px}}@media (max-width:420px){.kpi-row{grid-template-columns:1fr!important}}.hide{display:none!important}