.toast-wrap[data-v-956e4b78]{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast-item[data-v-956e4b78]{padding:9px 18px;border-radius:8px;font-size:13px;color:#fff;background:#1f2329e0;box-shadow:0 4px 16px #00000026;max-width:480px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-success[data-v-956e4b78]{background:#2fa84feb}.t-error[data-v-956e4b78]{background:#e5484deb}.t-warning[data-v-956e4b78]{background:#d97706eb}.theme-sw[data-v-ce78650c]{display:flex;align-items:center;position:relative}.swatches[data-v-ce78650c]{display:flex;gap:6px}.swatch[data-v-ce78650c]{width:20px;height:20px;border-radius:50%;cursor:pointer;border:2px solid transparent;padding:0;transition:all .15s}.swatch[data-v-ce78650c]:hover{transform:scale(1.15)}.swatch.active[data-v-ce78650c]{border-color:var(--c-text-2);box-shadow:0 0 0 2px var(--c-card)}.swatch-toggle[data-v-ce78650c]{display:none;width:22px;height:22px;border-radius:50%;padding:0;cursor:pointer;border:2px solid var(--c-border-strong)}@media (max-width: 900px){.theme-label[data-v-ce78650c]{display:none}.swatch-toggle[data-v-ce78650c]{display:inline-block}.swatches[data-v-ce78650c]{display:none}.swatches.swatches-open[data-v-ce78650c]{display:flex;position:absolute;top:40px;right:0;background:var(--c-card);border:1px solid var(--c-border);border-radius:10px;padding:10px;box-shadow:0 10px 30px var(--c-shadow);z-index:60}}.modal-mask[data-v-37d1ab19]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-37d1ab19]{background:var(--c-card);border-radius:12px;max-width:92vw;max-height:86vh;display:flex;flex-direction:column;box-shadow:0 20px 60px var(--c-shadow)}.modal-header[data-v-37d1ab19]{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--c-border)}.modal-title[data-v-37d1ab19]{font-size:15px;font-weight:600}.modal-x[data-v-37d1ab19]{cursor:pointer;color:var(--c-text-3);font-size:14px;padding:2px 6px}.modal-x[data-v-37d1ab19]:hover{color:var(--c-text)}.modal-body[data-v-37d1ab19]{padding:18px;overflow-y:auto}.modal-footer[data-v-37d1ab19]{padding:12px 18px;border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:10px}.modal-enter-active[data-v-37d1ab19],.modal-leave-active[data-v-37d1ab19]{transition:opacity .15s}.modal-enter-active .modal[data-v-37d1ab19],.modal-leave-active .modal[data-v-37d1ab19]{transition:transform .15s}.modal-enter-from[data-v-37d1ab19],.modal-leave-to[data-v-37d1ab19]{opacity:0}.modal-enter-from .modal[data-v-37d1ab19],.modal-leave-to .modal[data-v-37d1ab19]{transform:scale(.96)}@media (max-width: 640px){.modal-mask[data-v-37d1ab19]{align-items:flex-end}.modal[data-v-37d1ab19]{width:100%!important;max-width:100%;max-height:90vh;border-radius:14px 14px 0 0}.modal-header[data-v-37d1ab19]{padding:12px 14px}.modal-body[data-v-37d1ab19]{padding:14px}.modal-footer[data-v-37d1ab19]{padding:10px 14px}.modal-enter-from .modal[data-v-37d1ab19],.modal-leave-to .modal[data-v-37d1ab19]{transform:translateY(24px)}}.menu-sub-items[data-v-9585bb4d]{padding-left:10px}.menu-item[data-v-9585bb4d]{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:var(--radius);color:var(--c-sidebar-text);font-size:13px;text-decoration:none;transition:all .12s}.menu-item[data-v-9585bb4d]:hover{background:var(--c-hover)}.menu-item.active[data-v-9585bb4d]{background:var(--c-sidebar-active);color:var(--c-sidebar-active-text);font-weight:500}.menu-dot[data-v-9585bb4d]{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4;flex-shrink:0}.menu-item.active .menu-dot[data-v-9585bb4d]{opacity:1}.menu-parent[data-v-9585bb4d]{cursor:pointer;-webkit-user-select:none;user-select:none}.menu-parent .arrow[data-v-9585bb4d]{width:13px;height:13px;margin-left:auto;opacity:.5;transition:transform .15s;flex-shrink:0}.menu-parent.open .arrow[data-v-9585bb4d]{transform:rotate(90deg)}.menu-child[data-v-9585bb4d]{padding-top:7px;padding-bottom:7px;font-size:12.5px}.layout[data-v-39e7248b]{height:100%;display:flex;flex-direction:column}.header[data-v-39e7248b]{height:52px;background:var(--c-header-bg);border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:relative;z-index:10}.brand[data-v-39e7248b]{display:flex;align-items:center;gap:10px}.logo[data-v-39e7248b]{font-size:24px}.logo-img[data-v-39e7248b]{width:26px;height:26px;object-fit:contain}.brand-name[data-v-39e7248b]{font-size:15px;font-weight:600;line-height:1.2}.brand-sub[data-v-39e7248b]{font-size:10px;color:var(--c-text-3);letter-spacing:.5px}.header-right[data-v-39e7248b]{display:flex;align-items:center;gap:12px;min-width:0}.body[data-v-39e7248b]{flex:1;display:flex;min-height:0}.sidebar[data-v-39e7248b]{width:190px;background:var(--c-sidebar-bg);border-right:1px solid var(--c-border);padding:14px 10px;overflow-y:auto;flex-shrink:0}.menu-group[data-v-39e7248b]{margin-bottom:18px}.menu-group-title[data-v-39e7248b]{font-size:11px;color:var(--c-text-3);padding:0 10px;margin-bottom:6px}.main[data-v-39e7248b]{flex:1;overflow-y:auto;padding:20px;min-width:0}.hamburger[data-v-39e7248b]{align-items:center;justify-content:center;width:34px;height:34px;margin-right:2px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--c-text);cursor:pointer}.hamburger svg[data-v-39e7248b]{width:22px;height:22px}.hamburger[data-v-39e7248b]:active{background:var(--c-hover)}.drawer-mask[data-v-39e7248b]{position:fixed;top:52px;right:0;bottom:0;left:0;background:#0f172a73;z-index:39}.user-badge[data-v-39e7248b]{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-user[data-v-39e7248b]{display:none;padding:4px 10px 12px;margin-bottom:8px;border-bottom:1px solid var(--c-border)}.du-name[data-v-39e7248b]{font-size:13px;font-weight:600}.du-tenant[data-v-39e7248b]{font-size:12px;color:var(--c-text-3);margin-top:2px}@media (max-width: 900px){.header[data-v-39e7248b]{padding:0 10px}.header-right[data-v-39e7248b]{gap:8px}.brand-sub[data-v-39e7248b]{display:none}.user-badge[data-v-39e7248b]{max-width:150px}.sidebar[data-v-39e7248b]{position:fixed;top:52px;bottom:0;left:0;width:78vw;max-width:300px;z-index:40;transform:translate(-100%);transition:transform .22s ease;box-shadow:0 8px 30px #0000002e}.sidebar.open[data-v-39e7248b]{transform:translate(0)}.drawer-user[data-v-39e7248b]{display:block}.main[data-v-39e7248b]{padding:14px}}@media (max-width: 560px){.brand-text[data-v-39e7248b]{display:none}.logo[data-v-39e7248b]{font-size:20px}.user-badge[data-v-39e7248b]{display:none}.main[data-v-39e7248b]{padding:10px}}.pwd-form[data-v-39e7248b]{display:flex;flex-direction:column;gap:14px}.form-row[data-v-39e7248b]{display:flex;flex-direction:column;gap:6px}.form-row label[data-v-39e7248b]{font-size:13px;color:var(--c-text-2)}.form-row input[data-v-39e7248b]{padding:9px 12px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-input-bg, var(--c-card));color:var(--c-text);font-size:14px;outline:none}.form-row input[data-v-39e7248b]:focus{border-color:var(--c-primary, #3b82f6)}.form-tip[data-v-39e7248b]{font-size:12px;color:var(--c-text-3);background:var(--c-hover);padding:8px 10px;border-radius:var(--radius)}// ============ 设计令牌：主题 CSS 变量 ============ // 主题切换：theme.js 将预设色板写入 document.documentElement.style // 浅色主题（默认）与暗色主题共用同一套变量名 :root{--c-primary: #2563eb;--c-primary-hover: #1d4ed8;--c-primary-weak: #eff6ff;--c-bg: #f5f6f8;--c-card: #ffffff;--c-border: #e5e7eb;--c-border-strong: #d1d5db;--c-text: #1f2329;--c-text-2: #646a73;--c-text-3: #8f959e;--c-sidebar-bg: #ffffff;--c-sidebar-text: #3d4450;--c-sidebar-active: #eff6ff;--c-sidebar-active-text: #2563eb;--c-hover: #f3f4f6;--c-danger: #e5484d;--c-success: #2fa84f;--c-warning: #d97706;--c-header-bg: #ffffff;--c-shadow: rgba(16, 24, 40, .08);--radius: 8px;--radius-lg: 12px}html[data-theme=dark]{--c-primary: #3b82f6;--c-primary-hover: #60a5fa;--c-primary-weak: rgba(59, 130, 246, .15);--c-bg: #111418;--c-card: #1a1f26;--c-border: #2a313a;--c-border-strong: #3a424d;--c-text: #e6e8eb;--c-text-2: #9aa3ad;--c-text-3: #6b7480;--c-sidebar-bg: #161b21;--c-sidebar-text: #aab2bc;--c-sidebar-active: rgba(59, 130, 246, .15);--c-sidebar-active-text: #60a5fa;--c-hover: rgba(255, 255, 255, .06);--c-header-bg: #161b21;--c-shadow: rgba(0, 0, 0, .35)}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}.btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:7px 14px;border-radius:var(--radius);border:1px solid var(--c-border-strong);background:var(--c-card);color:var(--c-text);font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap;line-height:1.4}.btn:hover{border-color:var(--c-primary);color:var(--c-primary);background:var(--c-primary-weak)}.btn:disabled{opacity:.65;cursor:not-allowed}input:disabled,select:disabled,textarea:disabled,.input:disabled,.select:disabled,.textarea:disabled{background:var(--c-bg);color:var(--c-text-2);border-color:var(--c-border);opacity:1;cursor:not-allowed;-webkit-text-fill-color:var(--c-text-2)}.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn-primary:hover{background:var(--c-primary-hover);color:#fff}.btn-danger{color:var(--c-danger);border-color:var(--c-danger)}.btn-danger:hover{background:#e5484d14}.btn-sm{padding:4px 10px;font-size:12px}.btn-block{width:100%}.input,.select,.textarea{width:100%;padding:7px 10px;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-card);color:var(--c-text);font-size:13px;outline:none;transition:border-color .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--c-primary)}.textarea{resize:vertical;min-height:90px;font-family:inherit}.card{background:var(--c-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:16px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:12px;line-height:20px;white-space:nowrap}.badge-green{background:#2fa84f1f;color:var(--c-success)}.badge-red{background:#e5484d1f;color:var(--c-danger)}.badge-orange{background:#d977061f;color:var(--c-warning)}.badge-blue{background:var(--c-primary-weak);color:var(--c-primary)}.badge-gray{background:var(--c-hover);color:var(--c-text-2)}.text-2{color:var(--c-text-2)}.text-3{color:var(--c-text-3)}.mono{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.link{color:var(--c-primary);cursor:pointer;text-decoration:none}.link:hover{text-decoration:underline}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:transparent}.fade-enter-active,.fade-leave-active{transition:opacity .15s}.fade-enter-from,.fade-leave-to{opacity:0}.only-mobile{display:none!important}@media (max-width: 900px){.hide-md{display:none!important}.only-mobile{display:inline-flex!important}.main,.card{padding:14px}.filters,.head-row,.toolbar,.filter-row,.batch-bar,.tk-toolbar,.sv-toolbar,.dtable-toolbar{flex-wrap:wrap}.input[style*="width:"],.select[style*="width:"],.textarea[style*="width:"]{max-width:100%!important}[style*="min-width: 3"],[style*="min-width:3"]{min-width:0!important}.input,.select,.textarea{font-size:16px;height:auto!important;min-height:34px}input[type=date]{min-width:150px}input[type=datetime-local],input[type=datetime]{min-width:210px}.dtable-main{min-width:max-content!important;font-size:12.5px}.dtable-main th,.dtable-main td{white-space:nowrap}.dtable-main th,.dtable-main td{padding:9px 8px}.dtable-scroll{-webkit-overflow-scrolling:touch}.dtable-toolbar{gap:8px}.config-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.config-tab{white-space:nowrap;flex:0 0 auto}}@media (max-width: 560px){.hide-sm{display:none!important}.main{padding:10px}.card{padding:12px;border-radius:10px}.btn{padding:8px 12px}.btn-sm{padding:6px 10px}::-webkit-scrollbar{width:4px;height:4px}}
