.app-root[data-v-1acc232c]{position:relative;min-height:100vh}.ether-bg[data-v-1acc232c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%}.stat-card[data-v-ac3cd811]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:22px 24px;position:relative;overflow:hidden;transition:all var(--transition);cursor:default}.stat-card[data-v-ac3cd811]:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--primary),transparent);opacity:0;transition:opacity var(--transition)}.stat-card[data-v-ac3cd811]:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--glow)}.stat-card[data-v-ac3cd811]:hover:before{opacity:1}.stat-value[data-v-ac3cd811]{font-size:30px;font-weight:700;letter-spacing:-.5px;line-height:1.2}.stat-value.primary[data-v-ac3cd811]{color:var(--primary)}.stat-value.success[data-v-ac3cd811]{color:var(--success)}.stat-value.muted[data-v-ac3cd811]{color:var(--text-muted)}.stat-value.warning[data-v-ac3cd811]{color:var(--warning)}.stat-label[data-v-ac3cd811]{font-size:12px;color:var(--text-muted);margin-top:6px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.svc-panel[data-v-3cdd8a59]{padding:20px}.svc-grid[data-v-3cdd8a59]{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:14px}.svc-card[data-v-3cdd8a59]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;display:flex;justify-content:space-between;align-items:center;gap:14px;transition:border-color var(--transition)}.svc-card[data-v-3cdd8a59]:hover{border-color:var(--primary)}.svc-name[data-v-3cdd8a59]{font-size:14px;font-weight:600;color:var(--text-primary)}.svc-desc[data-v-3cdd8a59]{color:var(--text-muted);font-size:12px;margin-top:4px}.svc-mono[data-v-3cdd8a59]{font-size:11px;font-family:ui-monospace,monospace;color:var(--text-dim);margin-top:4px}.invoke-btn[data-v-3cdd8a59]{flex-shrink:0;padding:8px 18px;border-radius:var(--radius-sm);border:1px solid var(--primary);background:linear-gradient(135deg,var(--primary-dim),var(--primary));color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all var(--transition);white-space:nowrap;font-family:var(--font)}.invoke-btn[data-v-3cdd8a59]:hover{box-shadow:var(--glow);transform:translateY(-1px)}.invoke-btn[data-v-3cdd8a59]:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.log-section[data-v-3cdd8a59]{border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:14px;overflow:hidden}.log-head[data-v-3cdd8a59]{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--bg-elevated);border-bottom:1px solid var(--border);font-size:12px;font-weight:600}.log-list[data-v-3cdd8a59]{max-height:180px;overflow-y:auto;font-size:11px;font-family:ui-monospace,monospace}.log-row[data-v-3cdd8a59]{display:grid;grid-template-columns:64px 80px 40px 1fr;gap:8px;padding:6px 14px;border-bottom:1px solid var(--border-subtle);align-items:center}.log-row[data-v-3cdd8a59]:last-child{border-bottom:none}.log-row[data-v-3cdd8a59]:hover{background:var(--bg-elevated)}.log-time[data-v-3cdd8a59]{color:var(--text-dim)}.log-svc[data-v-3cdd8a59]{color:var(--text-primary);font-weight:500}.log-status[data-v-3cdd8a59]{font-weight:600}.log-status.ok[data-v-3cdd8a59]{color:var(--success)}.log-status.err[data-v-3cdd8a59]{color:var(--danger)}.log-status.sending[data-v-3cdd8a59]{color:var(--warning)}.log-msg[data-v-3cdd8a59]{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history[data-v-3cdd8a59]{border-top:1px solid var(--border);padding-top:14px}.history-head[data-v-3cdd8a59]{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:10px;font-size:13px}.ghost-btn[data-v-3cdd8a59]{background:transparent;color:var(--text-muted);border:1px solid var(--border);padding:4px 12px;border-radius:var(--radius-sm);font-size:11px;cursor:pointer;transition:all var(--transition);font-family:var(--font)}.ghost-btn[data-v-3cdd8a59]:hover{border-color:var(--primary);color:var(--primary)}.history-list[data-v-3cdd8a59]{max-height:360px;overflow-y:auto;display:grid;gap:4px}.history-list[data-v-3cdd8a59]::-webkit-scrollbar{width:4px}.history-list[data-v-3cdd8a59]::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.history-row[data-v-3cdd8a59]{display:grid;grid-template-columns:160px 1fr;gap:12px;color:var(--text-muted);font-size:12px;padding:4px 0}.h-topic[data-v-3cdd8a59]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,monospace}.history-empty[data-v-3cdd8a59],.history-error[data-v-3cdd8a59]{color:var(--text-muted);font-size:12px;padding:12px 0}@media(max-width:760px){.svc-grid[data-v-3cdd8a59]{grid-template-columns:1fr}.history-row[data-v-3cdd8a59]{grid-template-columns:100px 1fr}.log-row[data-v-3cdd8a59]{grid-template-columns:56px 70px 34px 1fr;font-size:10px}}.panel[data-v-766abe4a]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color var(--transition)}.panel[data-v-766abe4a]:hover{border-color:var(--primary)}.panel-header[data-v-766abe4a]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.panel-title[data-v-766abe4a]{font-weight:600;font-size:15px;color:var(--text-primary)}.hint[data-v-766abe4a]{color:var(--text-muted);font-size:12px}.table-wrap[data-v-766abe4a]{overflow-x:auto}table[data-v-766abe4a]{width:100%;border-collapse:collapse}th[data-v-766abe4a],td[data-v-766abe4a]{padding:14px 16px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;font-size:13px}th[data-v-766abe4a]{background:var(--bg-elevated);color:var(--text-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.device-row[data-v-766abe4a]{cursor:pointer;transition:background var(--transition)}.device-row:hover td[data-v-766abe4a]{background:var(--bg-elevated)}.device-row.open td[data-v-766abe4a]{background:var(--bg-hover)}.mono[data-v-766abe4a]{font-family:ui-monospace,monospace;font-size:13px;color:var(--text-secondary)}.badge[data-v-766abe4a]{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600}.badge.on[data-v-766abe4a]{background:var(--success-bg);color:var(--success);border:1px solid rgba(34,197,94,.2)}.badge.off[data-v-766abe4a]{background:var(--danger-bg);color:var(--danger);border:1px solid rgba(239,68,68,.2)}.dot[data-v-766abe4a]{width:6px;height:6px;border-radius:50%}.badge.on .dot[data-v-766abe4a]{background:var(--success);box-shadow:0 0 4px var(--success)}.badge.off .dot[data-v-766abe4a]{background:var(--danger)}.led[data-v-766abe4a]{color:var(--success);font-weight:600}.led-offled[data-v-766abe4a]{color:var(--text-muted)}.time[data-v-766abe4a]{color:var(--text-dim);font-size:12px}.chev[data-v-766abe4a]{color:var(--text-muted);transition:transform .2s ease;display:inline-block;font-size:18px;line-height:1}.open .chev[data-v-766abe4a]{transform:rotate(90deg);color:var(--primary)}.expand-row td[data-v-766abe4a]{padding:0;background:var(--bg-elevated);border-bottom:1px solid var(--border)}.empty[data-v-766abe4a]{text-align:center;color:var(--text-muted);padding:40px!important}@media(max-width:760px){th[data-v-766abe4a],td[data-v-766abe4a]{padding:10px 12px;font-size:12px}}.layout[data-v-de118e16]{max-width:1120px;margin:0 auto;padding:28px 24px 48px;position:relative;z-index:3}.topbar[data-v-de118e16]{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.gradient-text[data-v-de118e16]{font-size:28px;font-weight:700;letter-spacing:-.5px;background:var(--gradient);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradientShift-de118e16 4s ease infinite;margin:0}@keyframes gradientShift-de118e16{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.subtitle[data-v-de118e16]{color:var(--text-muted);font-size:13px;margin-top:4px}.topbar-right[data-v-de118e16]{display:flex;align-items:center;gap:16px;flex-shrink:0}.conn-status[data-v-de118e16]{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.status-dot[data-v-de118e16]{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 6px var(--success);animation:pulse-de118e16 2s infinite}.status-dot.off[data-v-de118e16]{background:var(--offline);box-shadow:none;animation:none}@keyframes pulse-de118e16{0%,to{opacity:1}50%{opacity:.5}}.time-display[data-v-de118e16]{font-size:13px;color:var(--text-muted);font-variant-numeric:tabular-nums}.user-chip[data-v-de118e16]{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 9px;font-size:12px}.logout-btn[data-v-de118e16]{border:1px solid var(--border);background:transparent;color:var(--text-muted);border-radius:var(--radius-sm);padding:6px 10px;cursor:pointer}.logout-btn[data-v-de118e16]:hover{color:var(--text-primary);border-color:var(--primary)}.stats[data-v-de118e16]{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.bind-bar[data-v-de118e16]{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,260px) auto minmax(90px,auto);align-items:center;gap:12px;margin-bottom:16px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}.bind-copy[data-v-de118e16]{display:grid;gap:2px}.bind-copy strong[data-v-de118e16]{font-size:14px}.bind-copy span[data-v-de118e16],.bind-message[data-v-de118e16]{color:var(--text-muted);font-size:12px}.bind-bar input[data-v-de118e16]{min-width:0;border:1px solid var(--border);background:var(--bg-body);color:var(--text-primary);border-radius:var(--radius-sm);padding:9px 10px;outline:none}.bind-bar input[data-v-de118e16]:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.bind-bar button[data-v-de118e16]{border:1px solid var(--primary);background:var(--primary);color:#fff;border-radius:var(--radius-sm);padding:9px 14px;cursor:pointer;font-weight:700}.bind-bar button[data-v-de118e16]:disabled{opacity:.65;cursor:wait}.bind-message.error[data-v-de118e16]{color:var(--danger)}@media(max-width:760px){.layout[data-v-de118e16]{padding:20px 14px 32px}.gradient-text[data-v-de118e16]{font-size:22px}.stats[data-v-de118e16]{grid-template-columns:repeat(2,1fr)}.topbar[data-v-de118e16]{flex-direction:column;align-items:flex-start;gap:12px}.bind-bar[data-v-de118e16]{grid-template-columns:1fr}}.login-shell[data-v-71a2cd9b]{min-height:100vh;display:grid;place-items:center;padding:24px}.login-panel[data-v-71a2cd9b]{width:min(420px,100%);background:#17131eeb;border:1px solid var(--border);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow-lg)}.brand[data-v-71a2cd9b]{display:flex;gap:14px;align-items:center;margin-bottom:26px}.mark[data-v-71a2cd9b]{width:42px;height:42px;display:grid;place-items:center;border-radius:10px;background:var(--bg-elevated);color:var(--primary);font-weight:800;border:1px solid var(--border)}h1[data-v-71a2cd9b]{font-size:22px;line-height:1.2}p[data-v-71a2cd9b]{color:var(--text-muted);font-size:13px}.login-form[data-v-71a2cd9b]{display:grid;gap:14px}label[data-v-71a2cd9b]{display:grid;gap:7px;color:var(--text-secondary);font-size:13px}input[data-v-71a2cd9b]{width:100%;border:1px solid var(--border);background:var(--bg-body);color:var(--text-primary);border-radius:var(--radius-sm);padding:11px 12px;outline:none}input[data-v-71a2cd9b]:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.primary-btn[data-v-71a2cd9b],.text-btn[data-v-71a2cd9b]{border:0;cursor:pointer}.primary-btn[data-v-71a2cd9b]{margin-top:4px;border-radius:var(--radius-sm);padding:12px;background:var(--primary);color:#fff;font-weight:700}.primary-btn[data-v-71a2cd9b]:disabled{opacity:.65;cursor:wait}.text-btn[data-v-71a2cd9b]{margin-top:16px;width:100%;background:transparent;color:var(--text-muted)}.error[data-v-71a2cd9b]{color:var(--danger)}:root{--bg-body: #0f0d15;--bg-card: #17131e;--bg-elevated: #1f1a2c;--bg-hover: #2a2340;--border: #2c2540;--border-subtle: rgba(44,37,64,.4);--primary: #a855f7;--primary-dim: #7c3aed;--primary-glow: rgba(168,85,247,.25);--secondary: #c084fc;--text-primary: #f0edf5;--text-secondary: #c9c4d6;--text-muted: #8a84a0;--text-dim: #5f5978;--success: #22c55e;--success-bg: rgba(34,197,94,.12);--warning: #f59e0b;--warning-bg: rgba(245,158,11,.12);--danger: #ef4444;--danger-bg: rgba(239,68,68,.12);--offline: #6b7280;--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--shadow: 0 2px 8px rgba(0,0,0,.3);--shadow-lg: 0 8px 32px rgba(0,0,0,.5);--glow: 0 0 20px rgba(168,85,247,.25);--gradient: linear-gradient(135deg,#fff 0%,#a855f7 25%,#7c3aed 50%,#a855f7 75%,#fff 100%);--transition: .2s cubic-bezier(.4,0,.2,1);--font: "Inter","SF Pro Text",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg-body);color:var(--text-primary);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}#app{min-height:100vh;position:relative;z-index:1}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--bg-hover)}#targetCursor{position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;z-index:9999;will-change:transform;filter:drop-shadow(0 0 4px rgba(0,0,0,.5))}.tc-dot{position:absolute;left:50%;top:50%;width:4px;height:4px;background:var(--primary);border-radius:50%;transform:translate(-50%,-50%);will-change:transform;box-shadow:0 0 6px var(--primary)}.tc-corner{position:absolute;left:50%;top:50%;width:12px;height:12px;border:2px solid var(--primary);will-change:transform;box-shadow:0 0 4px var(--primary-glow)}.tc-tl{transform:translate(-18px,-18px);border-right:none;border-bottom:none}.tc-tr{transform:translateY(-18px);border-left:none;border-bottom:none}.tc-bl{transform:translate(-18px);border-right:none;border-top:none}.tc-br{transform:translate(0);border-left:none;border-top:none}.cursor-target,.cursor-target *{cursor:pointer}
