:root{--primary:#155eef;--primary-light:#eff4ff;--primary-dark:#004aca;--primary-hover:#3b7cf7;--success:#17b26a;--success-light:#ecfdf3;--warning:#f79009;--warning-light:#fffaeb;--danger:#f04438;--danger-light:#fef3f2;--bg:#f5f8ff;--surface:#fff;--surface-secondary:#f9fafb;--text:#101828;--text-secondary:#667085;--text-tertiary:#98a2b3;--border:#eaecf0;--border-light:#f2f4f7;--divider:#e4e7ec;--radius-sm:6px;--radius:8px;--radius-md:10px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-xs:0 1px 2px #1018280d;--shadow-sm:0 1px 3px #1018281a, 0 1px 2px #1018280f;--shadow:0 4px 8px -2px #1018281a, 0 2px 4px -2px #1018280f;--shadow-md:0 12px 16px -4px #10182814, 0 4px 6px -2px #10182808;--shadow-lg:0 20px 24px -4px #10182814, 0 8px 8px -4px #10182808;--transition-fast:.15s ease;--transition:.2s ease;--transition-slow:.3s ease;--sidebar-w:160px;--header-h:56px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}#app{width:100%;min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}pre,code{font-family:JetBrains Mono,SF Mono,Fira Code,Consolas,monospace}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit}::selection{color:inherit;background:#155eef26}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#d0d5dd;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#98a2b3}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s fadeIn}@keyframes slideIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.slide-in{animation:.2s slideIn}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#f2f4f7 25%,#eaecf0 50%,#f2f4f7 75%) 0 0/200% 100%;animation:1.5s infinite shimmer}.badge{border-radius:var(--radius-full);align-items:center;padding:2px 8px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.badge-primary{background:var(--primary-light);color:var(--primary)}.badge-success{background:var(--success-light);color:var(--success)}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-danger{background:var(--danger-light);color:var(--danger)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input[type=text],input[type=password],input[type=email],input[type=url],input[type=number],textarea,select{border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);background:var(--surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:9px 13px;font-size:14px}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #155eef1f}.page-enter-active{animation:pageIn var(--transition-slow) ease;animation-fill-mode:both}.page-leave-active{animation:.15s both pageOut}.page-enter-active,.page-leave-active{max-height:100vh;overflow:hidden}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pageOut{0%{opacity:1}to{opacity:0}}.toast-container{z-index:10000;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:20px;right:20px}.toast{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--text);pointer-events:auto;align-items:center;gap:10px;max-width:360px;padding:12px 16px;font-size:13px;font-weight:500;animation:.3s toastIn;display:flex}.toast.toast-success{border-left:3px solid var(--success)}.toast.toast-error{border-left:3px solid var(--danger)}.toast.toast-warning{border-left:3px solid var(--warning)}.toast.toast-info{border-left:3px solid var(--primary)}.toast-exit{animation:.2s forwards toastOut}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{to{opacity:0;transform:translate(20px)}}.empty-state{text-align:center;flex-direction:column;align-items:center;padding:60px 20px;display:flex}.empty-state-icon{background:var(--surface-secondary);border-radius:var(--radius-xl);width:64px;height:64px;color:var(--text-tertiary);justify-content:center;align-items:center;margin-bottom:16px;display:flex}.empty-state-title{color:var(--text);margin-bottom:6px;font-size:15px;font-weight:600}.empty-state-desc{color:var(--text-secondary);max-width:320px;font-size:13px;line-height:1.5}@media (width<=640px){.hide-mobile{display:none!important}}@media (width>=641px) and (width<=1024px){.hide-tablet{display:none!important}}.g-btn{border-radius:var(--radius);transition:all var(--transition-fast);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;line-height:1.4;display:inline-flex}.g-btn-primary{background:var(--primary);color:#fff}.g-btn-primary:hover{background:var(--primary-dark)}.g-btn-primary:disabled{opacity:.5;cursor:not-allowed}.g-btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.g-btn-secondary:hover{background:var(--surface-secondary);border-color:var(--divider)}.g-btn-danger{background:var(--danger-light);color:var(--danger)}.g-btn-danger:hover{background:#fee4e2}.g-btn-ghost{color:var(--text-secondary);background:0 0}.g-btn-ghost:hover{background:var(--surface-secondary);color:var(--text)}.g-btn-sm{padding:5px 12px;font-size:12px}.g-btn-lg{padding:10px 20px;font-size:14px}.pg-header{margin-bottom:24px}.pg-title{color:var(--text);margin:0 0 4px;font-size:22px;font-weight:700;line-height:1.3}.pg-subtitle{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.section-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg,12px);margin-bottom:16px;padding:20px 24px}.section-card h3{color:var(--text);margin:0 0 12px;font-size:15px;font-weight:700}.g-spinner{border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite g-spin}.g-spinner-sm{border-width:2px;width:14px;height:14px}@keyframes g-spin{to{transform:rotate(360deg)}}@media (width<=768px){input,textarea,select{font-size:16px!important}.toast-container{top:calc(12px + env(safe-area-inset-top,0px));left:12px;right:12px}}.login-page[data-v-3235fdbe]{--primary:#2563eb;--primary-hover:#66b1ff;--text-primary:#303133;--text-secondary:#909399;--radius:4px;z-index:4000;background:#0f172a73;justify-content:center;align-items:center;padding:24px 12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;display:flex;position:fixed;inset:0}.modern-login-dialog[data-v-3235fdbe]{border-radius:var(--radius);background:#fff;width:740px;max-width:96vw;position:relative;overflow:hidden;box-shadow:0 16px 40px #0f172a1a}.modern-login-dialog--narrow[data-v-3235fdbe]{width:420px}.close-btn[data-v-3235fdbe]{z-index:2;color:#999;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex;position:absolute;top:12px;right:12px}.close-btn[data-v-3235fdbe]:hover{color:#333;background:#f5f5f5}.dialog-content[data-v-3235fdbe]{box-sizing:border-box;flex-direction:column;height:460px;padding:18px 8px 8px;display:flex}.header-login-title[data-v-3235fdbe]{color:var(--text-primary);text-align:center;font-size:18px;font-weight:600;line-height:28px}.same-account-link[data-v-3235fdbe]{color:var(--primary,#1677ff);white-space:nowrap;margin-left:2px;font-size:13px;font-weight:400;text-decoration:none}.same-account-link[data-v-3235fdbe]:hover{text-decoration:underline}.split-layout[data-v-3235fdbe]{flex:1;align-items:flex-start;gap:12px;min-height:0;padding:8px 20px 10px;display:flex}.left-section[data-v-3235fdbe],.right-section[data-v-3235fdbe]{flex-direction:column;flex:1;min-width:0;padding-top:6px;display:flex}.right-section[data-v-3235fdbe]{align-items:center}.login-tabs-left[data-v-3235fdbe]{gap:32px;margin-bottom:22px;display:flex}.login-tab[data-v-3235fdbe]{color:#303133;cursor:pointer;border-bottom:3px solid #0000;padding:8px 0 6px;font-size:18px;font-weight:500}.login-tab.active[data-v-3235fdbe]{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.login-tab[data-v-3235fdbe]:hover:not(.active){color:var(--primary)}.phone-form[data-v-3235fdbe],.password-form[data-v-3235fdbe]{flex-direction:column;gap:14px;display:flex}.merged-input-group[data-v-3235fdbe],.merged-code-group[data-v-3235fdbe],.common-input-field[data-v-3235fdbe]{box-sizing:border-box}.merged-input-group[data-v-3235fdbe]{border-radius:var(--radius);background:#fff;border:1px solid #dcdfe6;height:46px;display:flex;overflow:hidden}.merged-input-group[data-v-3235fdbe]:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px #409eff1f}.country-select[data-v-3235fdbe]{color:#303133;appearance:none;background-color:#f9f9f9;background-image:linear-gradient(45deg,#0000 50%,#909399 50%),linear-gradient(135deg,#909399 50%,#0000 50%);background-position:calc(100% - 16px) 20px,calc(100% - 11px) 20px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;border:none;border-right:1px solid #dcdfe6;outline:none;flex:0 0 118px;width:118px;padding:0 8px 0 12px;font-size:14px}.phone-input-field[data-v-3235fdbe],.code-input-field[data-v-3235fdbe],.common-input-field[data-v-3235fdbe]{color:#303133;background:#fff;border:none;outline:none;width:100%;height:46px;padding:0 12px;font-size:16px}.phone-input-field[data-v-3235fdbe]::placeholder,.code-input-field[data-v-3235fdbe]::placeholder,.common-input-field[data-v-3235fdbe]::placeholder{color:#a8abb2}.merged-code-group[data-v-3235fdbe]{border-radius:var(--radius);border:1px solid #dcdfe6;height:48px;display:flex;overflow:hidden}.merged-code-group[data-v-3235fdbe]:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px #409eff1f}.merged-code-group .code-input-field[data-v-3235fdbe]{flex:1;min-width:0;height:48px}.send-code-btn[data-v-3235fdbe]{border:1px solid var(--primary);border-radius:0 var(--radius) var(--radius) 0;background:var(--primary);color:#fff;white-space:nowrap;cursor:pointer;height:48px;margin:-1px -1px -1px 0;padding:0 18px;font-size:14px;font-weight:500}.send-code-btn[data-v-3235fdbe]:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.send-code-btn[data-v-3235fdbe]:disabled{color:#999;cursor:default;background:#e5e7eb;border-color:#e5e7eb}.common-input-field[data-v-3235fdbe]{border-radius:var(--radius);border:1px solid #dcdfe6}.common-input-field[data-v-3235fdbe]:hover{border-color:#909399}.common-input-field[data-v-3235fdbe]:focus{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.password-wrap[data-v-3235fdbe]{position:relative}.password-wrap .common-input-field[data-v-3235fdbe]{padding-right:40px}.eye-btn[data-v-3235fdbe]{color:#909399;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:28px;height:28px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.register-tip[data-v-3235fdbe]{color:var(--text-secondary);text-align:center;height:24px;font-size:13px;line-height:24px}.login-submit-btn[data-v-3235fdbe]{border:1px solid var(--primary);border-radius:var(--radius);background:var(--primary);color:#fff;letter-spacing:1px;cursor:pointer;width:100%;height:48px;font-size:16px;font-weight:600}.login-submit-btn[data-v-3235fdbe]:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.login-submit-btn[data-v-3235fdbe]:disabled{opacity:.7;cursor:default}.form-options[data-v-3235fdbe]{justify-content:flex-end;display:flex}.right-options[data-v-3235fdbe]{align-items:center;gap:12px;display:flex}.forget-pwd[data-v-3235fdbe]{color:#909399;cursor:pointer;background:0 0;border:none;padding:0;font-size:13px}.forget-pwd[data-v-3235fdbe]:hover{color:var(--primary)}.field-error[data-v-3235fdbe],.form-error[data-v-3235fdbe]{color:#f56c6c;margin-top:-8px;font-size:12px;line-height:1.4}.form-error[data-v-3235fdbe]{text-align:center;margin-top:0}.form-notice[data-v-3235fdbe]{color:var(--primary);text-align:center;font-size:12px}.agreement-checkbox[data-v-3235fdbe]{justify-content:center;align-items:center;margin-top:14px;display:flex}.agree-text[data-v-3235fdbe]{color:#909399;font-size:13px}.agree-text a[data-v-3235fdbe],.agreement-links a[data-v-3235fdbe],.qr-refresh-link[data-v-3235fdbe],.mode-switch a[data-v-3235fdbe]{color:var(--primary);text-decoration:none}.el-check[data-v-3235fdbe]{cursor:pointer;color:var(--primary);align-items:center;gap:8px;font-size:13px;display:inline-flex;position:relative}.el-check input[data-v-3235fdbe]{opacity:0;width:0;height:0;position:absolute}.el-check-box[data-v-3235fdbe]{box-sizing:border-box;background:#fff;border:1px solid #dcdfe6;border-radius:2px;flex:none;width:14px;height:14px;position:relative}.el-check input:checked+.el-check-box[data-v-3235fdbe]{background:var(--primary);border-color:var(--primary)}.el-check input:checked+.el-check-box[data-v-3235fdbe]:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:3px;height:7px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.divider-section[data-v-3235fdbe]{flex-direction:column;flex:0 0 48px;justify-content:center;align-items:center;width:48px;height:260px;margin-top:18px;display:flex}.divider-line[data-v-3235fdbe]{background:#eee;flex:1;width:1px}.divider-or[data-v-3235fdbe]{color:#ccc;background:#fff;padding:12px 0;font-size:14px}.scan-login-title[data-v-3235fdbe]{color:var(--text-primary);text-align:center;margin:8px 0 18px;font-size:18px;font-weight:500}.qr-container[data-v-3235fdbe]{width:180px;height:180px;position:relative}.qr-image[data-v-3235fdbe]{object-fit:contain;width:100%;height:100%;display:block}.qr-loading[data-v-3235fdbe],.loading-placeholder[data-v-3235fdbe]{background:#f7f8fa;width:100%;height:100%}.qr-expired-mask[data-v-3235fdbe]{text-align:center;background:#ffffffeb;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:12px;display:flex;position:absolute;inset:0}.qr-expired-title[data-v-3235fdbe]{color:var(--text-primary);font-size:14px;font-weight:600}.qr-expired-desc[data-v-3235fdbe]{color:var(--text-secondary);font-size:12px;line-height:1.4}.refresh-qr-btn[data-v-3235fdbe],.btn-primary[data-v-3235fdbe]{border:1px solid var(--primary);border-radius:var(--radius);background:var(--primary);color:#fff;cursor:pointer;height:36px;padding:0 14px;font-size:13px}.qr-meta[data-v-3235fdbe]{text-align:center;min-height:22px;margin-top:10px}.qr-countdown[data-v-3235fdbe],.qr-status[data-v-3235fdbe]{color:var(--text-secondary);font-size:12px}.qr-refresh-link[data-v-3235fdbe]{cursor:pointer;background:0 0;border:none;margin-left:4px;padding:0;font-size:12px}.qr-refresh-link[data-v-3235fdbe]:disabled{opacity:.5;cursor:default}.scan-tip[data-v-3235fdbe]{text-align:center;color:var(--text-primary);margin-top:18px;font-size:13px;line-height:1.8}.agreement-links[data-v-3235fdbe]{text-align:center;color:var(--text-secondary);margin-top:8px;font-size:12px}.wechat-mobile-login-box[data-v-3235fdbe]{border-radius:var(--radius);background:#f8fafc;border:1px solid #e5e7eb;margin-bottom:16px;padding:14px 14px 12px}.wechat-mobile-title[data-v-3235fdbe]{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:600}.wechat-mobile-btn[data-v-3235fdbe]{border-radius:var(--radius);color:#fff;cursor:pointer;background:#07c160;border:none;width:100%;height:44px;font-weight:600}.wechat-mobile-tip[data-v-3235fdbe]{color:var(--text-secondary);margin-top:10px;font-size:12px;line-height:1.6}.h5-no-wechat-tip[data-v-3235fdbe]{color:var(--text-secondary);border-radius:var(--radius);background:#f7f8fa;border:1px solid #eef0f3;margin-bottom:12px;padding:10px 12px;font-size:12px}.local-form[data-v-3235fdbe]{padding:18px 28px 28px}.mode-switch[data-v-3235fdbe]{text-align:center;color:#909399;font-size:13px}.forgot-mask[data-v-3235fdbe]{z-index:20;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.forgot-dialog[data-v-3235fdbe]{border-radius:var(--radius);background:#fff;flex-direction:column;gap:14px;width:420px;max-width:100%;padding:18px 20px 16px;display:flex;box-shadow:0 16px 40px #0f172a1f}.forgot-title[data-v-3235fdbe]{color:#303133;font-size:16px;font-weight:600}.forgot-footer[data-v-3235fdbe]{justify-content:flex-end;gap:8px;display:flex}.btn-plain[data-v-3235fdbe]{border-radius:var(--radius);color:#606266;cursor:pointer;background:#fff;border:1px solid #dcdfe6;height:36px;padding:0 14px}.login-page--mobile .dialog-content[data-v-3235fdbe]{height:auto;max-height:calc(100dvh - 48px);overflow-y:auto}.login-page--mobile .modern-login-dialog[data-v-3235fdbe]{width:min(440px,96vw)}@media (width<=800px){.split-layout[data-v-3235fdbe]{flex-direction:column}.dialog-content[data-v-3235fdbe]{height:auto;max-height:calc(100dvh - 32px);overflow-y:auto}}.fb-fab[data-v-8b2e019d]{z-index:60;border:1px solid var(--border);background:var(--surface);height:40px;color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 16px 0 13px;font-size:13px;font-weight:600;transition:box-shadow .15s,transform .15s;display:inline-flex;position:fixed;bottom:20px;right:20px;box-shadow:0 6px 20px #0f172a1f}.fb-fab svg[data-v-8b2e019d]{color:#07c160}.fb-fab[data-v-8b2e019d]:hover{transform:translateY(-1px);box-shadow:0 10px 28px #0f172a2e}.fb-mask[data-v-8b2e019d]{z-index:95;position:fixed;inset:0}.fb-card[data-v-8b2e019d]{background:var(--surface);border:1px solid var(--border);text-align:center;width:300px;color:var(--text);border-radius:16px;padding:22px 20px 18px;position:fixed;bottom:20px;right:20px;box-shadow:0 18px 50px #0f172a38}.fb-x[data-v-8b2e019d]{width:32px;height:32px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:0;border-radius:8px;font-size:22px;line-height:1;position:absolute;top:8px;right:8px}.fb-x[data-v-8b2e019d]:hover{background:var(--surface-secondary);color:var(--text)}.fb-card h3[data-v-8b2e019d]{margin:0 0 6px;font-size:17px}.fb-note[data-v-8b2e019d]{color:var(--text-secondary);margin:0 0 14px;font-size:13px;line-height:1.6}.fb-qr[data-v-8b2e019d]{object-fit:contain;border:1px solid var(--border);background:#fff;border-radius:10px;width:184px;height:184px;margin:0 auto;padding:6px;display:block}.fb-hint[data-v-8b2e019d]{color:var(--text);margin:12px 0 2px;font-size:13px}.fb-remark[data-v-8b2e019d]{color:var(--text-tertiary);margin:0;font-size:12px;line-height:1.6}.fb-id[data-v-8b2e019d]{border-top:1px dashed var(--border);color:var(--text-secondary);justify-content:center;align-items:center;gap:8px;margin-top:12px;padding-top:12px;font-size:13px;display:flex}.fb-id b[data-v-8b2e019d]{color:var(--text);-webkit-user-select:all;user-select:all}.fb-id button[data-v-8b2e019d]{border:1px solid var(--border);background:var(--surface);color:var(--primary);cursor:pointer;border-radius:8px;padding:3px 10px;font-size:12px}@media (width<=768px){.fb-fab[data-v-8b2e019d]{display:none}.fb-mask[data-v-8b2e019d]{background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex}.fb-card[data-v-8b2e019d]{width:min(320px,100%);position:relative;bottom:auto;right:auto}}@media print{.fb-fab[data-v-8b2e019d],.fb-mask[data-v-8b2e019d]{display:none}}.app-layout{background:var(--bg);--shell-top:0px;--shell-bottom:0px;min-height:100vh;display:flex}.m-top,.tabbar,:is(.app-layout:has(.chat-page) .fb-fab,.app-layout:has(.ed) .fb-fab,.app-layout:has(.mi-room) .fb-fab){display:none}.app-layout:has(.action-bar) .fb-fab{justify-content:center;width:40px;padding:0}.app-layout:has(.action-bar) .fb-fab span{display:none}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);z-index:100;transition:width var(--transition);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden}.sidebar.collapsed{width:64px}.sidebar-top{flex-shrink:0;padding:16px 12px 8px}.brand{border-radius:var(--radius);color:inherit;transition:background var(--transition-fast);align-items:center;gap:10px;min-height:40px;padding:6px 8px;text-decoration:none;display:flex}.brand:hover{background:var(--surface-secondary);text-decoration:none}.brand-logo{flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.brand-text{flex-direction:column;min-width:0;display:flex}.brand-name{color:var(--text);white-space:nowrap;font-size:14px;font-weight:700}.brand-desc{color:var(--text-tertiary);white-space:nowrap;font-size:11px}.nav-body{flex:1;padding:0 8px;overflow-y:auto}.nav-group{margin-bottom:4px}.nav-group-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;padding:12px 12px 4px;font-size:11px;font-weight:600}.nav-group-divider{background:var(--border-light);height:1px;margin:8px 12px}.nav-list{list-style:none}.nav-list li{margin-bottom:1px}.nav-list a{color:var(--text-secondary);border-radius:var(--radius);transition:all var(--transition-fast);white-space:nowrap;align-items:center;gap:8px;padding:7px 10px;font-size:13px;font-weight:500;text-decoration:none;display:flex}.nav-list a:hover{background:var(--surface-secondary);color:var(--text);text-decoration:none}.nav-list a:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;border-radius:8px}.nav-list a.active{background:var(--primary-light);color:var(--primary);font-weight:600}.nav-list a.active .nav-icon{color:var(--primary)}.nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.nav-label{flex:1}.nav-list a{position:relative}.nav-badge{color:#fff;background:#ef4444;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.nav-badge.dot{width:8px;min-width:8px;height:8px;padding:0;position:absolute;top:4px;right:6px}.sidebar.collapsed .nav-list a{justify-content:center;padding:10px}.sidebar.collapsed .brand{justify-content:center;padding:6px}.sidebar-bottom{border-top:1px solid var(--border-light);flex-shrink:0;padding:8px}.user-card{border-radius:var(--radius);transition:background var(--transition-fast);align-items:center;gap:4px;padding-right:4px;display:flex;position:relative}.user-card:hover{background:var(--surface-secondary)}.user-link{border-radius:var(--radius);min-width:0;color:inherit;flex:1;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.user-link:hover{text-decoration:none}.user-link:focus-visible,.btn-logout:focus-visible,.balance-badge:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.user-actions{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;display:flex}.sidebar.collapsed .user-card{flex-direction:column;gap:2px;padding:0 0 4px}.sidebar.collapsed .user-link{flex:none;justify-content:center;padding:8px 0 4px}.sidebar.collapsed .user-actions{margin-left:0}.sidebar.collapsed .notif-panel{left:64px}.user-avatar{background:var(--primary);border-radius:var(--radius);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.user-meta{flex-direction:column;flex:1;min-width:0;display:flex}.user-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.user-role{color:var(--text-tertiary);font-size:11px}.btn-logout{cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;align-items:center;padding:6px;display:flex}.btn-logout:hover{color:var(--danger);background:var(--danger-light)}.collapse-btn{border-radius:var(--radius-sm);width:100%;color:var(--text-tertiary);white-space:nowrap;cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;margin-top:2px;padding:5px 8px 5px 16px;font-size:12px;display:flex}.collapse-btn:hover{background:var(--surface-secondary);color:var(--text)}.sidebar.collapsed .collapse-btn{justify-content:center;padding:6px}.balance-badge{text-align:left;border-radius:var(--radius);width:calc(100% - 16px);color:var(--success);cursor:pointer;background:linear-gradient(135deg,#f0fdf4 0%,#ecfdf5 100%);border:1px solid #bbf7d0;align-items:center;gap:6px;margin:0 8px 6px;padding:6px 12px;font-family:inherit;font-size:13px;font-weight:700;transition:all .15s;display:flex}.balance-badge:hover{background:linear-gradient(135deg,#dcfce7 0%,#d1fae5 100%)}.balance-badge svg{stroke:var(--success);flex-shrink:0}.main-content{margin-left:var(--sidebar-w);min-height:100vh;transition:margin-left var(--transition);flex:1;padding:28px 40px}.main-content.sidebar-collapsed{margin-left:64px}.fade-text-enter-active{transition:opacity .15s}.fade-text-leave-active{transition:opacity .1s}.fade-text-enter-from,.fade-text-leave-to{opacity:0}.offline-bar{z-index:1500;color:#92400e;background:#fef3c7;border-bottom:1px solid #fcd34d;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:500;display:flex;position:fixed;top:0;left:0;right:0}.offline-bar svg{flex-shrink:0}.offline-retry{color:#92400e;cursor:pointer;background:#fff;border:1px solid #f59e0b;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.offline-retry:disabled{opacity:.6;cursor:default}.boot-wait{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:100dvh;padding:24px 16px;display:flex}.boot-wait strong{color:var(--text);font-size:17px}.boot-wait p{max-width:26em;color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.boot-spinner{border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite boot-spin}@keyframes boot-spin{to{transform:rotate(360deg)}}.boot-retry{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text);cursor:pointer;margin-top:6px;padding:0 20px;font-size:14px;font-weight:600}.boot-retry:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.boot-retry:disabled{opacity:.6;cursor:default}.offline-bar-enter-active,.offline-bar-leave-active{transition:transform .25s,opacity .25s}.offline-bar-enter-from,.offline-bar-leave-to{opacity:0;transform:translateY(-100%)}.notif-bell-wrap{position:relative}.notif-bell{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:all .15s;display:flex;position:relative}.notif-bell:hover{background:var(--surface-secondary);color:var(--text)}.notif-dot{background:var(--danger,#ef4444);color:#fff;pointer-events:none;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:9px;font-weight:700;line-height:1;display:flex;position:absolute;top:1px;right:1px}.notif-panel{background:var(--surface);border:1px solid var(--border);z-index:1000;width:340px;max-height:420px;left:var(--sidebar-w);border-radius:12px;flex-direction:column;display:flex;position:fixed;bottom:60px;overflow:hidden;box-shadow:0 8px 32px #0000001f}.notif-header{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.notif-title{color:var(--text);font-size:14px;font-weight:700}.notif-readall{color:var(--primary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:12px;font-weight:600}.notif-readall:hover{background:var(--primary-light)}.notif-body{max-height:360px;overflow-y:auto}.notif-empty{text-align:center;color:var(--text-tertiary);padding:32px 16px;font-size:13px}.notif-item{border-bottom:1px solid var(--border-light);cursor:pointer;padding:10px 16px;transition:background .1s}.notif-item:hover{background:var(--surface-secondary)}.notif-item.unread{border-left:3px solid var(--primary);background:#eff6ff}.notif-item-head{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.notif-cat{color:#2563eb;background:#dbeafe;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}.notif-time{color:var(--text-tertiary);font-size:11px}.notif-item-title{color:var(--text);margin-bottom:2px;font-size:13px;font-weight:600}.notif-item-content{color:var(--text-secondary);font-size:12px;line-height:1.4}.notif-slide-enter-active,.notif-slide-leave-active{transition:all .2s}.notif-slide-enter-from,.notif-slide-leave-to{opacity:0;transform:translateY(8px)}@media print{@page{size:A4;margin:12mm 12mm 14mm}html,body,.app-layout{background:#fff!important}.sidebar,.m-top,.tabbar,.nav-scrim,.toast-container,.offline-bar{display:none!important}.app-layout{min-height:0;display:block}.main-content,.main-content.sidebar-collapsed{min-height:0;margin:0!important;padding:0!important}}@media (width<=768px){.app-layout{--shell-top:calc(52px + env(safe-area-inset-top,0px));--shell-bottom:calc(58px + env(safe-area-inset-bottom,0px));min-height:100dvh;display:block}.sidebar,.sidebar.collapsed{width:min(280px,86vw);transition:transform .2s;transform:translate(-105%)}.collapse-btn{display:none}.sidebar.nav-open{transform:none;box-shadow:8px 0 28px #0f172a2e}.nav-scrim{z-index:90;background:#0f172a73;position:fixed;inset:0}.m-top{z-index:80;height:var(--shell-top);padding:env(safe-area-inset-top,0px) 12px 0 4px;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:4px;display:flex;position:fixed;top:0;left:0;right:0}.m-iconbtn{width:44px;height:44px;color:var(--text);background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;display:flex}.m-brand{color:var(--text);padding:8px 4px;font-size:16px;font-weight:700;text-decoration:none}.m-balance{color:var(--success);background:#f0fdf4;border:1px solid #bbf7d0;border-radius:999px;min-height:36px;margin-left:auto;padding:6px 12px;font-size:13px;font-weight:700}.m-fb{min-height:36px;color:var(--text-secondary);background:0 0;border:0;border-radius:10px;align-items:center;gap:3px;margin-left:auto;padding:0 8px;font-size:12px;font-weight:600;display:flex}.m-fb svg{color:#07c160}.m-balance+.m-fb{margin-left:2px}.tabbar{z-index:80;height:var(--shell-bottom);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border);display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{min-width:0;color:var(--text-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-height:44px;font-size:11px;font-weight:600;text-decoration:none;display:flex}.tabbar a.active{color:var(--primary)}.main-content{min-width:0;max-width:100%;padding:16px;padding-top:calc(var(--shell-top) + 16px);padding-bottom:calc(var(--shell-bottom) + 16px);min-height:100dvh;margin-left:0;overflow-x:clip}.main-content :is(.chart-area,.chart-bars,.bars,.table-scroll,.table-wrap,.mp-card){min-width:0;max-width:100%}:is(.app-layout:has(.chat-page) .tabbar,.app-layout:has(.ed) .tabbar,.app-layout:has(.mi-room) .tabbar){display:none}:is(.app-layout:has(.chat-page),.app-layout:has(.ed),.app-layout:has(.mi-room)){--shell-bottom:env(safe-area-inset-bottom,0px)}}
