.ws-debug[data-v-509af95c]{position:fixed;right:16px;bottom:16px;z-index:9990;font-family:Microsoft YaHei,sans-serif}@media(max-width:768px){.ws-debug[data-v-509af95c]{bottom:calc(68px + env(safe-area-inset-bottom));right:10px}}.ws-debug-toggle[data-v-509af95c]{display:flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-overlay-bg, rgba(26, 26, 46, .92));backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--glass-shadow);transition:all .2s}.ws-debug-toggle[data-v-509af95c]:hover{border-color:var(--accent);transform:translateY(-1px)}.ws-dot[data-v-509af95c]{width:8px;height:8px;border-radius:50%;display:inline-block}.ws-dot.st-ok[data-v-509af95c]{background:#51cf66;box-shadow:0 0 6px #51cf66}.ws-dot.st-warn[data-v-509af95c]{background:#f9ca24;box-shadow:0 0 6px #f9ca24}.ws-dot.st-err[data-v-509af95c]{background:#ff6b6b;box-shadow:0 0 6px #ff6b6b}.ws-dot.st-off[data-v-509af95c]{background:#6c6c6c}.ws-debug-panel[data-v-509af95c]{position:absolute;right:0;bottom:48px;width:460px;max-width:calc(100vw - 32px);max-height:70vh;display:flex;flex-direction:column;background:#121224f7;backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--glass-shadow);overflow:hidden}.ws-debug-header[data-v-509af95c]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--glass-border)}.ws-debug-title[data-v-509af95c]{font-size:14px;font-weight:600;color:var(--text-primary)}.ws-debug-actions[data-v-509af95c]{display:flex;gap:6px}.ws-debug-btn[data-v-509af95c]{padding:4px 10px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.ws-debug-btn[data-v-509af95c]:hover{color:var(--text-primary);border-color:var(--accent)}.ws-conns[data-v-509af95c]{padding:10px 14px;border-bottom:1px solid var(--glass-border);display:flex;flex-direction:column;gap:10px;max-height:40%;overflow-y:auto}.ws-conn[data-v-509af95c]{border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:8px 10px}.ws-conn-row[data-v-509af95c]{display:flex;align-items:center;gap:8px}.ws-conn-status[data-v-509af95c]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;white-space:nowrap}.ws-conn-status.st-connected[data-v-509af95c]{color:#51cf66}.ws-conn-status.st-connecting[data-v-509af95c],.ws-conn-status.st-reconnecting[data-v-509af95c]{color:#f9ca24}.ws-conn-status.st-error[data-v-509af95c]{color:#ff6b6b}.ws-conn-status.st-disconnected[data-v-509af95c],.ws-conn-status.st-idle[data-v-509af95c]{color:var(--text-muted)}.ws-conn-path[data-v-509af95c]{font-size:12px;color:var(--text-secondary);font-family:Courier New,monospace;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-conn-actions[data-v-509af95c]{display:flex;gap:6px}.ws-conn-btn[data-v-509af95c]{padding:3px 8px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:#ffffff0a;color:var(--text-secondary);font-size:12px;cursor:pointer;white-space:nowrap;transition:all .15s}.ws-conn-btn[data-v-509af95c]:hover{color:var(--text-primary);border-color:var(--accent)}.ws-conn-btn-danger[data-v-509af95c]{border-color:#ff6b6b66;background:#ff6b6b14;color:#ff6b6b}.ws-conn-btn-danger[data-v-509af95c]:hover{background:#ff6b6b2e}.ws-conn-btn-primary[data-v-509af95c]{border-color:#4ecdc466;background:#4ecdc414;color:var(--success)}.ws-conn-btn-primary[data-v-509af95c]:hover{background:#4ecdc42e}.ws-conn-meta[data-v-509af95c]{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px;font-size:11px;color:var(--text-muted)}.ws-conn-meta .ws-err[data-v-509af95c]{color:#ff6b6b;word-break:break-all}.ws-conn-url[data-v-509af95c]{margin-top:4px;font-size:11px;color:var(--text-muted);font-family:Courier New,monospace;word-break:break-all}.ws-logs[data-v-509af95c]{flex:1;display:flex;flex-direction:column;min-height:0}.ws-logs-header[data-v-509af95c]{padding:8px 14px;font-size:12px;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--glass-border)}.ws-log-list[data-v-509af95c]{flex:1;overflow-y:auto;padding:8px 14px;display:flex;flex-direction:column;gap:6px;min-height:0}.ws-log-item[data-v-509af95c]{font-size:12px;line-height:1.5;display:grid;grid-template-columns:auto auto auto 1fr;align-items:start;gap:6px;font-family:Courier New,monospace}.ws-log-time[data-v-509af95c]{color:var(--text-muted);white-space:nowrap}.ws-log-dir[data-v-509af95c]{font-weight:700;white-space:nowrap}.ws-log-dir.dir-in[data-v-509af95c]{color:#51cf66}.ws-log-dir.dir-out[data-v-509af95c]{color:#f9ca24}.ws-log-dir.dir-info[data-v-509af95c]{color:var(--text-muted)}.ws-log-label[data-v-509af95c]{color:var(--text-secondary);white-space:nowrap}.ws-log-json[data-v-509af95c]{grid-column:1 / -1;margin:0;padding:6px 8px;background:#ffffff0a;border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-all;max-height:140px;overflow-y:auto}.ws-empty[data-v-509af95c]{padding:12px 0;text-align:center;color:var(--text-muted);font-size:12px}@media(max-width:768px){.ws-debug-panel[data-v-509af95c]{width:calc(100vw - 32px)}}.banner-bar[data-v-837c67bd]{display:flex;align-items:center;gap:10px;padding:8px 20px;background:linear-gradient(90deg,#7c8cf81f,#38bdf81f);border-bottom:1px solid rgba(124,140,248,.25);font-size:13px;color:var(--text-primary);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);position:relative;z-index:100}.banner-bar.banner-unclosable[data-v-837c67bd]{background:linear-gradient(90deg,#f59e0b1a,#ef44441a);border-bottom-color:#f59e0b4d}.banner-icon[data-v-837c67bd]{display:flex;align-items:center;flex-shrink:0;color:var(--accent);animation:bell-ring-837c67bd 2s ease-in-out infinite}.banner-unclosable .banner-icon[data-v-837c67bd]{color:#f59e0b}.banner-content[data-v-837c67bd]{flex:1;min-width:0;overflow:hidden;cursor:pointer;line-height:1.5;text-align:center}.banner-content.content-scrolling[data-v-837c67bd]{text-align:left}.banner-text-track[data-v-837c67bd]{display:inline-block;white-space:nowrap}.banner-text-track.is-scrolling[data-v-837c67bd]{display:inline-flex;width:max-content;animation:banner-scroll-837c67bd var(--scroll-duration, 15s) linear infinite}.banner-text-item[data-v-837c67bd]{display:inline-block;white-space:nowrap;flex-shrink:0}.is-scrolling .banner-text-item[data-v-837c67bd]{padding-right:240px}.banner-content[data-v-837c67bd] a{color:var(--accent);text-decoration:none}.banner-content[data-v-837c67bd] a:hover{text-decoration:underline}@keyframes banner-scroll-837c67bd{0%{transform:translate(0)}to{transform:translate(-50%)}}.banner-close[data-v-837c67bd]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:none;background:#7c8cf81a;color:var(--text-muted);cursor:pointer;padding:0;flex-shrink:0;transition:all .2s}.banner-close[data-v-837c67bd]:hover{background:#7c8cf833;color:var(--text-primary)}.banner-slide-enter-active[data-v-837c67bd],.banner-slide-leave-active[data-v-837c67bd]{transition:all .3s ease;overflow:hidden}.banner-slide-enter-from[data-v-837c67bd],.banner-slide-leave-to[data-v-837c67bd]{max-height:0;padding-top:0;padding-bottom:0;opacity:0}@keyframes bell-ring-837c67bd{0%,to{transform:rotate(0)}10%{transform:rotate(-12deg)}20%{transform:rotate(12deg)}30%{transform:rotate(-8deg)}40%{transform:rotate(8deg)}50%{transform:rotate(0)}}@media(max-width:768px){.banner-bar[data-v-837c67bd]{padding:8px 12px;font-size:12px}}.navbar[data-v-f6a57db8]{position:sticky;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 24px;background:var(--glass-light, rgba(26, 26, 46, .85));backdrop-filter:blur(var(--glass-blur, 14px));-webkit-backdrop-filter:blur(var(--glass-blur, 14px));border-bottom:1px solid var(--glass-border);height:56px;box-sizing:border-box;width:100%;max-width:100vw;overflow:hidden}.navbar-brand[data-v-f6a57db8]{display:flex;align-items:center;gap:10px;flex:0 0 auto;min-width:0;max-width:30%;overflow:hidden;color:var(--text-primary)}.navbar-brand img[data-v-f6a57db8]{height:30px;width:auto;flex-shrink:0;display:block;border-radius:0;animation:navbarLogoGlow-f6a57db8 3.2s ease-in-out infinite}@keyframes navbarLogoGlow-f6a57db8{0%,to{filter:drop-shadow(0 0 2px var(--accent-glow))}50%{filter:drop-shadow(0 0 9px var(--accent-glow))}}.theme-toggle[data-v-f6a57db8]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:50%;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--text-secondary);cursor:pointer;transition:all var(--duration-normal) var(--ease-smooth)}.theme-toggle[data-v-f6a57db8]:hover{color:var(--accent);border-color:var(--glass-border-hover);background:var(--glass-bg-hover);transform:rotate(20deg)}.navbar-title[data-v-f6a57db8]{font-size:16px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.navbar-links[data-v-f6a57db8]{flex:1 1 auto;min-width:0;display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;gap:4px;overflow:visible}.navbar-link[data-v-f6a57db8]{flex-shrink:1;min-width:0;padding:7px 14px;font-size:14px;color:var(--text-secondary, #a0a0b0);font-weight:500;border-radius:var(--radius-sm, 10px);transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:4px;-webkit-tap-highlight-color:transparent;text-decoration:none;line-height:1.2;background:transparent;border:none;font-family:inherit}.navbar-link[data-v-f6a57db8]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.06));color:var(--primary)}.navbar-link.active[data-v-f6a57db8]{background:var(--primary-shadow, rgba(99, 102, 241, .2));color:var(--primary);font-weight:600}.nav-label[data-v-f6a57db8]{white-space:nowrap;text-align:center;line-height:1.2}.nav-dot[data-v-f6a57db8]{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ff4757;margin-left:2px;vertical-align:top;box-shadow:0 0 4px #ff475799;flex-shrink:0}.navbar-link.has-badge[data-v-f6a57db8]{position:relative;padding-right:28px}.nav-unread-badge[data-v-f6a57db8]{position:absolute;top:2px;right:4px;display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#e5394f;color:#fff;font-size:10.5px;font-weight:800;line-height:1;box-shadow:none;flex-shrink:0;pointer-events:none}.nav-group-trigger[data-v-f6a57db8]{flex-shrink:1;min-width:0;padding:7px 14px;font-size:14px;color:var(--text-secondary);font-weight:500;border-radius:var(--radius-sm, 10px);transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:4px;background:transparent;border:none;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;line-height:1.2}.nav-group-trigger[data-v-f6a57db8]:hover{background:var(--glass-bg-hover, rgba(255,255,255,.06));color:var(--primary)}.nav-group-trigger.active[data-v-f6a57db8]{background:var(--primary-shadow, rgba(99, 102, 241, .2));color:var(--primary);font-weight:600}.nav-chevron[data-v-f6a57db8]{color:var(--text-muted, #8080a0);transition:transform .2s ease;flex-shrink:0}.nav-chevron.open[data-v-f6a57db8]{transform:rotate(180deg)}.nav-dropdown[data-v-f6a57db8]{position:fixed;min-width:160px;background:var(--glass-overlay-bg, rgba(26, 26, 46, .97));backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-sm);box-shadow:var(--glass-shadow, 0 8px 24px rgba(0,0,0,.25));padding:6px;z-index:1000;display:flex;flex-direction:column;gap:2px;animation:dropIn-f6a57db8 .2s ease}@keyframes dropIn-f6a57db8{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.nav-dropdown-link[data-v-f6a57db8]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:14px;text-decoration:none;transition:all .2s ease;white-space:nowrap}.nav-dropdown-link[data-v-f6a57db8]:hover,.nav-dropdown-link.active[data-v-f6a57db8]{color:var(--text-primary);background:var(--glass-bg-hover, rgba(255,255,255,.06))}[data-theme=light] .nav-dropdown[data-v-f6a57db8]{background:#fffdf6fa;border-color:#8c692833;box-shadow:0 8px 24px #8c692829}[data-theme=light] .nav-dropdown-link[data-v-f6a57db8]{color:var(--text-secondary)}[data-theme=light] .nav-dropdown-link[data-v-f6a57db8]:hover,[data-theme=light] .nav-dropdown-link.active[data-v-f6a57db8]{color:var(--accent);background:#d977061a}.navbar-user[data-v-f6a57db8]{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.navbar-user-info[data-v-f6a57db8]{font-size:13px;color:var(--text-secondary);max-width:10em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.btn-logout[data-v-f6a57db8]{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;color:var(--text-secondary);background:transparent;border:1px solid var(--glass-border);border-radius:var(--radius-sm, 10px);cursor:pointer;transition:all .2s ease;white-space:nowrap;font-family:inherit;font-weight:500;-webkit-tap-highlight-color:transparent;flex-shrink:0}.btn-logout[data-v-f6a57db8]:hover{background:var(--danger-shadow, rgba(239, 68, 68, .2));border-color:var(--danger, #ef4444);color:var(--danger, #ef4444)}.badge[data-v-f6a57db8]{display:inline-flex;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;border-radius:999px;line-height:1.4}.badge-danger[data-v-f6a57db8]{background:var(--danger, #ef4444);color:#fff}@media(max-width:1024px){.navbar[data-v-f6a57db8]{padding:10px 16px;gap:4px}.navbar-title[data-v-f6a57db8]{display:none!important}.navbar-brand[data-v-f6a57db8]{max-width:32px}.navbar-logo[data-v-f6a57db8]{height:22px}[data-theme=dark] .navbar-logo[data-v-f6a57db8]{filter:drop-shadow(0 0 6px rgba(124,140,248,.45))}.navbar-user-info[data-v-f6a57db8]{display:none!important}.navbar-link[data-v-f6a57db8],.nav-group-trigger[data-v-f6a57db8]{padding:6px 8px;font-size:12px;white-space:nowrap}.nav-label[data-v-f6a57db8]{display:inline;max-width:none;min-width:0;line-height:normal;text-align:center;white-space:nowrap}.btn-logout[data-v-f6a57db8]{padding:6px 10px;font-size:13px}}@media(max-width:768px){.navbar[data-v-f6a57db8]{padding:8px 10px;gap:2px}.navbar-links[data-v-f6a57db8]{display:none}.navbar-brand[data-v-f6a57db8]{gap:6px}.navbar-link[data-v-f6a57db8],.nav-group-trigger[data-v-f6a57db8]{padding:5px;font-size:12px}.nav-label[data-v-f6a57db8]{max-width:2.2em;min-width:2em}.btn-logout[data-v-f6a57db8]{padding:5px 8px;font-size:12px}}.bottom-nav[data-v-f6a57db8]{display:none}@media(max-width:768px){.bottom-nav[data-v-f6a57db8]{position:fixed;bottom:0;left:0;right:0;z-index:260;display:flex;align-items:stretch;height:calc(56px + env(safe-area-inset-bottom));padding:0 6px env(safe-area-inset-bottom);background:var(--glass-light, rgba(26, 26, 46, .92));backdrop-filter:blur(var(--glass-blur, 14px));-webkit-backdrop-filter:blur(var(--glass-blur, 14px));border-top:1px solid var(--glass-border);box-shadow:0 -4px 20px #0000001f}.bn-item[data-v-f6a57db8]{position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 0;border:none;background:transparent;color:var(--text-secondary, #a0a0b0);font-size:11px;line-height:1;text-decoration:none;cursor:pointer;transition:color .2s ease}.bn-item.active[data-v-f6a57db8]{color:var(--accent)}.bn-icon[data-v-f6a57db8]{display:inline-flex}.bn-label[data-v-f6a57db8]{white-space:nowrap}.bn-badge[data-v-f6a57db8]{position:absolute;top:4px;right:calc(50% - 20px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ff6b6b;color:#fff;font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.bn-sheet-mask[data-v-f6a57db8]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9995;background:#00000073;display:flex;align-items:flex-end}.bn-sheet[data-v-f6a57db8]{width:100%;max-height:85vh;overflow-y:auto;border-radius:16px 16px 0 0;border:1px solid var(--glass-border);border-bottom:none;background:var(--glass-light, rgba(26, 26, 46, .98));backdrop-filter:blur(var(--glass-blur, 14px));-webkit-backdrop-filter:blur(var(--glass-blur, 14px));padding:14px 12px calc(14px + env(safe-area-inset-bottom));box-sizing:border-box}.bn-sheet-title[data-v-f6a57db8]{font-size:13px;color:var(--text-secondary, #a0a0b0);text-align:center;margin-bottom:8px}.bn-sheet-item[data-v-f6a57db8]{display:flex;align-items:center;gap:10px;padding:12px 10px;border-radius:var(--radius-sm, 10px);color:var(--text-primary);font-size:14px;text-decoration:none;transition:background .15s ease}.bn-sheet-item.active[data-v-f6a57db8]{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.bn-sheet-item[data-v-f6a57db8]:active{background:color-mix(in srgb,var(--accent) 16%,transparent)}.bn-sheet-icon[data-v-f6a57db8]{display:inline-flex;color:inherit}.bn-sheet-item .bn-badge[data-v-f6a57db8]{position:static;margin-left:auto}}@media(max-width:414px){.navbar[data-v-f6a57db8]{padding:8px;gap:2px}.navbar-link[data-v-f6a57db8],.nav-group-trigger[data-v-f6a57db8]{padding:4px 3px}.nav-label[data-v-f6a57db8]{max-width:2em;min-width:1.8em;font-size:11px}.btn-logout[data-v-f6a57db8]{padding:5px 6px}.btn-logout[data-v-f6a57db8]{font-size:0}.btn-logout svg[data-v-f6a57db8]{width:18px;height:18px}}.impersonate-restore{position:fixed;right:16px;bottom:24px;z-index:9999;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#0d192eeb;box-shadow:0 4px 16px #00000059;cursor:pointer;font-size:13px;transition:transform .15s ease}.impersonate-restore:hover{transform:translateY(-2px)}.impersonate-badge{color:#ffd666;font-weight:600}.impersonate-action{color:#fff;border-left:1px solid rgba(255,255,255,.25);padding-left:8px}*{margin:0;padding:0;box-sizing:border-box}:root{color-scheme:dark;--bg-base: #1a1a2e;--bg-gradient-1: #16213e;--bg-gradient-2: #0f3460;--glass-bg: rgba(255, 255, 255, .08);--glass-bg-hover: rgba(255, 255, 255, .12);--glass-border: rgba(255, 255, 255, .12);--glass-border-hover: rgba(255, 255, 255, .2);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .3);--glass-blur: 20px;--text-primary: #e8e8e8;--text-secondary: #a0a0a0;--text-muted: #6c6c6c;--text-dark: #1a1a1a;--accent: #7c8cf8;--accent-hover: #6b7bef;--accent-glow: rgba(124, 140, 248, .3);--success: #4ecdc4;--success-glow: rgba(78, 205, 196, .3);--danger: #ff6b6b;--danger-glow: rgba(255, 107, 107, .3);--warning: #f9ca24;--vip: #f093fb;--vip-glow: rgba(240, 147, 251, .3);--pie-track: #28375a;--pie-gap: #1e1e33;--pie-vip: #9b9ae8;--pie-vip-text: #f0e2fa;--pie-success: #75c9c5;--pie-success-text: #d6f5ec;--glass-light: rgba(255, 255, 255, .05);--glass-strong: rgba(255, 255, 255, .15);--glass-dark: rgba(0, 0, 0, .2);--glass-overlay-bg: rgba(26, 26, 46, .82);--glass-overlay-scrim: rgba(10, 10, 20, .55);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .2s;--duration-normal: .3s;--duration-slow: .5s}[data-theme=light]{color-scheme:light;--bg-base: #f8f4e9;--bg-gradient-1: #f4eee0;--bg-gradient-2: #ece2cd;--glass-bg: rgba(255, 253, 247, .8);--glass-bg-hover: rgba(255, 253, 247, .95);--glass-border: rgba(140, 105, 40, .16);--glass-border-hover: rgba(140, 105, 40, .3);--glass-shadow: 0 6px 24px rgba(140, 105, 40, .12);--glass-blur: 20px;--text-primary: #3b3222;--text-secondary: #6d6350;--text-muted: #a69b85;--text-dark: #171310;--accent: #d97706;--accent-hover: #c26602;--accent-glow: rgba(217, 119, 6, .16);--success: #5c8a3c;--success-glow: rgba(92, 138, 60, .16);--danger: #d64545;--danger-glow: rgba(214, 69, 69, .14);--warning: #b8860b;--vip: #a63ea6;--vip-glow: rgba(166, 62, 166, .32);--pie-track: #f0ead8;--pie-gap: #f0ead8;--pie-vip: #d9bdf0;--pie-vip-text: #7a3fa0;--pie-success: #bcdca9;--pie-success-text: #3f7d55;--glass-light: rgba(255, 253, 247, .92);--glass-strong: rgba(255, 254, 250, .98);--glass-dark: rgba(100, 75, 25, .05);--glass-overlay-bg: rgba(255, 253, 248, .72);--glass-overlay-scrim: rgba(60, 48, 30, .28)}[data-theme=light] body:before{background:radial-gradient(ellipse at 20% 20%,rgba(217,119,6,.08) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(92,138,60,.06) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,rgba(180,82,180,.04) 0%,transparent 70%),linear-gradient(135deg,var(--bg-gradient-1) 0%,var(--bg-gradient-2) 100%)}[data-theme=light] .btn-glass,[data-theme=light] .btn-outline{border-color:#8c692840}[data-theme=light] .btn-glass:hover{border-color:var(--accent);color:var(--accent)}[data-theme=light] .input{border-color:#8c692833;background:#fffdf7f2}[data-theme=light] .card:hover{box-shadow:0 10px 32px #8c692829}[data-theme=light] .login-card{box-shadow:0 8px 32px #8c692824,0 0 60px #d977060f}body{font-family:Microsoft YaHei,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--text-primary);background:var(--bg-base);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;font-variant-numeric:tabular-nums}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse at 20% 20%,rgba(124,140,248,.15) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(78,205,196,.12) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,rgba(240,147,251,.08) 0%,transparent 70%),linear-gradient(135deg,var(--bg-gradient-1) 0%,var(--bg-gradient-2) 100%);z-index:-2;animation:bgShift 20s ease-in-out infinite alternate}@keyframes bgShift{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(15deg)}}@media(prefers-reduced-motion:reduce){body:before{animation:none!important}}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-smooth)}a:hover{color:var(--accent-hover)}.page-wrapper{max-width:1000px;margin:0 auto;padding:24px 20px 40px;animation:fadeInUp var(--duration-slow) var(--ease-smooth)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow);padding:28px 32px;transition:all var(--duration-normal) var(--ease-smooth)}.card:hover{border-color:var(--glass-border-hover);background:var(--glass-bg-hover);transform:translateY(-2px);box-shadow:0 12px 40px #00000059}.card+.card{margin-top:20px}.card-title{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:20px;display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 24px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer;transition:all var(--duration-normal) var(--ease-smooth);gap:8px;line-height:1;font-family:Microsoft YaHei,sans-serif;position:relative;overflow:hidden}.btn:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#fff3;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn:active:after{width:300px;height:300px;transition:0s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.96)}.btn-block{display:flex;width:100%;height:46px;font-size:15px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 20px var(--accent-glow);transform:translateY(-1px)}.btn-success{background:var(--success);color:#1a1a2e;border-color:var(--success)}.btn-success:hover:not(:disabled){box-shadow:0 4px 20px var(--success-glow);transform:translateY(-1px)}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover:not(:disabled){box-shadow:0 4px 20px var(--danger-glow);transform:translateY(-1px)}.btn-outline{background:transparent;color:var(--text-primary);border:1px solid var(--glass-border)}.btn-outline:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--glass-light)}.btn-glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));color:var(--text-primary);border:1px solid var(--glass-border)}.btn-glass:hover:not(:disabled){background:var(--glass-bg-hover);border-color:var(--glass-border-hover)}.btn-sm{padding:6px 14px;font-size:13px;border-radius:var(--radius-sm)}.btn-logout{background:var(--glass-light);border:1px solid var(--glass-border);color:var(--text-secondary);padding:6px 16px;border-radius:var(--radius-sm);font-size:13px;cursor:pointer;transition:all var(--duration-normal) var(--ease-smooth);display:inline-flex;align-items:center;gap:6px}.btn-logout:hover{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 4px 16px var(--danger-glow)}.input{width:100%;padding:0 16px;border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:14px;color:var(--text-primary);background:var(--glass-light);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--duration-normal) var(--ease-smooth);outline:none;height:46px;font-family:Microsoft YaHei,sans-serif}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:var(--glass-strong)}.input::placeholder{color:var(--text-secondary);opacity:1}.input:disabled{opacity:.5}textarea.input{padding:12px 16px;height:auto;resize:vertical}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a0a0a0' stroke-width='1.5' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}select.input option{background-color:#22223b;color:var(--text-primary, #e8e8e8)}[data-theme=light] select.input option{background-color:#fffdf7;color:#3a3226}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator,:root:not([data-theme=light]) input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8);cursor:pointer}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer}.form-group{margin-bottom:18px}.form-label{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:8px}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1}.table-wrap{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-light)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--glass-border)}.table th{background:var(--glass-dark);font-weight:600;color:var(--text-secondary);font-size:13px;white-space:nowrap}.table tr:last-child td{border-bottom:none}.table tr{transition:background var(--duration-fast) var(--ease-smooth)}.table tr:hover td{background:var(--glass-light)}.table td{color:var(--text-primary)}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px}.pagination .page-btn{min-width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:var(--glass-bg);color:var(--text-primary);font-size:14px;cursor:pointer;transition:all var(--duration-normal) var(--ease-smooth);font-family:Microsoft YaHei,sans-serif;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pagination .page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--glass-bg-hover);transform:translateY(-1px)}.pagination .page-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 16px var(--accent-glow)}.pagination .page-btn:disabled{opacity:.4;cursor:not-allowed}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;line-height:1.4;white-space:nowrap;transition:transform var(--duration-fast) var(--ease-bounce)}.badge:hover{transform:scale(1.05)}.badge-success{background:#4ecdc426;color:var(--success);border:1px solid rgba(78,205,196,.3)}.badge-danger{background:#ff6b6b26;color:var(--danger);border:1px solid rgba(255,107,107,.3)}.badge-warning{background:#f9ca2426;color:var(--warning);border:1px solid rgba(249,202,36,.3)}.badge-info{background:#7c8cf826;color:var(--accent);border:1px solid rgba(124,140,248,.3)}.badge-vip{background:#f093fb26;color:var(--vip);border:1px solid rgba(240,147,251,.3);box-shadow:0 0 12px var(--vip-glow)}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:16px;display:flex;align-items:center;gap:8px;animation:slideIn var(--duration-normal) var(--ease-smooth)}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.alert-error{background:#ff6b6b1a;color:var(--danger);border:1px solid rgba(255,107,107,.3)}.progress-bar{width:100%;height:8px;background:var(--glass-dark);border-radius:4px;overflow:hidden;position:relative}.progress-bar .progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--success));border-radius:4px;transition:width var(--duration-slow) var(--ease-smooth);position:relative}.progress-bar .progress-fill:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.record-list{display:flex;flex-direction:column;gap:10px}.record-item{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--glass-light);border:1px solid var(--glass-border);border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease-smooth)}.record-item:hover{background:var(--glass-bg-hover);border-color:var(--glass-border-hover);transform:translate(4px)}.record-date{font-size:14px;color:var(--text-primary);font-weight:500}.record-tags{display:flex;gap:8px}.switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--glass-dark);border:1px solid var(--glass-border);border-radius:24px;transition:all var(--duration-normal) var(--ease-smooth)}.switch-slider:before{content:"";position:absolute;height:18px;width:18px;left:2px;bottom:2px;background:var(--text-secondary);border-radius:50%;transition:all var(--duration-normal) var(--ease-bounce);box-shadow:0 1px 3px #0000004d}.switch input:checked+.switch-slider{background:#7c8cf84d;border-color:var(--accent)}.switch input:checked+.switch-slider:before{transform:translate(20px);background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn var(--duration-fast) var(--ease-smooth);overflow:hidden;overscroll-behavior:contain}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:32px;width:90%;max-width:520px;box-shadow:0 20px 60px #0006;animation:scaleIn var(--duration-normal) var(--ease-bounce)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.glass-popover{background:var(--glass-strong);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:0 12px 32px #00000040}.modal-title{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:20px}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.filter-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.filter-item{display:flex;flex-direction:column;gap:4px;min-width:140px}.filter-label{font-size:13px;font-weight:500;color:var(--text-secondary)}.filter-actions{display:flex;gap:8px;align-items:flex-end}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.stat-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;display:flex;align-items:center;gap:16px;transition:all var(--duration-normal) var(--ease-smooth)}.stat-card:hover{transform:translateY(-4px);border-color:var(--glass-border-hover);box-shadow:0 12px 40px #0000004d}.stat-icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.stat-info{display:flex;flex-direction:column;gap:2px}.stat-value{font-size:24px;font-weight:700;color:var(--text-primary)}.stat-label{font-size:13px;color:var(--text-secondary)}.chart-container{padding:8px 0}.chart{display:flex;height:240px}.chart-y-axis{display:flex;flex-direction:column;justify-content:space-between;padding-right:12px;width:50px;flex-shrink:0}.y-label{font-size:12px;color:var(--text-muted);text-align:right}.chart-body{flex:1;position:relative;border-left:1px solid var(--glass-border);border-bottom:1px solid var(--glass-border)}.chart-grid{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}.grid-line{width:100%;height:1px;background:var(--glass-border)}.chart-line-container{position:absolute;top:0;left:0;right:0;bottom:0}.chart-svg{width:100%;height:100%}.chart-x-labels{display:flex;margin-left:50px;padding-top:8px}.x-label{flex:1;font-size:12px;color:var(--text-muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-label-short{display:none}.back-btn{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all var(--duration-fast) var(--ease-smooth);margin-bottom:16px;background:none;border:none;font-family:Microsoft YaHei,sans-serif}.back-btn:hover{color:var(--accent);gap:10px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media(max-width:768px){.page-wrapper{padding:16px 12px calc(72px + env(safe-area-inset-bottom))}.card{padding:20px 16px;border-radius:var(--radius-md)}.stats-grid{grid-template-columns:1fr}.quick-actions{grid-template-columns:repeat(2,1fr)}.form-row{flex-direction:column;gap:0}.table th,.table td{padding:10px 12px;font-size:13px}.chart{height:180px}.chart-y-axis{width:36px}.chart-x-labels{margin-left:36px}.x-label{font-size:10px}.x-label-full{display:none}.x-label-short{display:inline}.filter-bar{flex-direction:column}.filter-item{width:100%;min-width:unset}.navbar{padding:10px 16px}.navbar-links{gap:2px}.navbar-link{padding:6px 10px;font-size:13px}}*{scrollbar-width:thin;scrollbar-color:var(--glass-border) transparent}.skeleton{position:relative;overflow:hidden;background:var(--glass-light);border-radius:6px}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.09),transparent);animation:skeletonShimmer 1.4s infinite}@keyframes skeletonShimmer{to{transform:translate(100%)}}.skeleton-table-row{display:grid;grid-template-columns:1fr 1.2fr 1fr 1fr 1fr;gap:12px;align-items:center;padding:14px 16px}.skeleton-table-row .skeleton{height:15px}.skeleton-list-row{display:flex;align-items:center;gap:12px;padding:14px 16px}.skeleton-list-row .skeleton{height:14px}.skeleton-list-row .skeleton:first-child{width:42px;height:42px;border-radius:50%;flex-shrink:0}.skeleton-list-row .skeleton:last-child{width:60%}.empty-state{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px;letter-spacing:.5px}@media(max-width:768px){.btn:not(.btn-sm){min-height:44px}.stats-grid{gap:10px}.login-brand{margin-bottom:20px}.login-brand-logo{width:52px;height:52px}.login-brand-name{font-size:19px}.toast{max-width:calc(100vw - 32px)}}.desktop-only{display:table-cell}.mobile-only{display:none}@media(max-width:768px){.table-mobile-cards .desktop-only{display:none}.table-mobile-cards .mobile-only{display:table-cell}.table-mobile-cards{display:block;width:100%}.table-mobile-cards thead{display:none}.table-mobile-cards tbody{display:block;width:100%}.table-mobile-cards tr{display:grid;grid-template-columns:1fr 1fr;column-gap:16px;width:100%}.table-mobile-cards tr{padding:8px 12px 12px;border-bottom:2px solid var(--text-secondary);border-radius:var(--radius-sm)}.table-mobile-cards tbody tr:last-child{border-bottom:none}.table-mobile-cards td{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding:6px 0;border-bottom:1px dashed var(--glass-border);box-sizing:border-box}.table-mobile-cards td.td-full{grid-column:1 / -1}.table-mobile-cards td:before{content:attr(data-label);font-size:12px;color:var(--text-secondary);font-weight:500;flex-shrink:0}.table-mobile-cards tr:hover td{background:transparent}.table-mobile-cards tr:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}}
