.app-tabs[data-v-8f87ec6f]{display:flex;align-items:center;height:40px;background:var(--panel);border-bottom:1px solid var(--line);padding:0 8px;gap:6px}.tabs-scroll[data-v-8f87ec6f]{flex:1;min-width:0;display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:thin;height:100%}.tabs-scroll[data-v-8f87ec6f]::-webkit-scrollbar{height:4px}.tabs-scroll[data-v-8f87ec6f]::-webkit-scrollbar-thumb{background:var(--line);border-radius:2px}.tab-item[data-v-8f87ec6f]{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font-size:12px;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,color .15s,border-color .15s}.tab-item[data-v-8f87ec6f]:hover{color:var(--blue);border-color:#93c5fd}.tab-item.active[data-v-8f87ec6f]{background:#eff6ff;border-color:#93c5fd;color:#2563eb;font-weight:600}.tab-pin[data-v-8f87ec6f]{font-size:12px;color:#f59e0b}.tab-item.active .tab-pin[data-v-8f87ec6f]{color:#2563eb}.tab-title[data-v-8f87ec6f]{max-width:140px;overflow:hidden;text-overflow:ellipsis}.tab-close[data-v-8f87ec6f]{font-size:12px;border-radius:50%;padding:1px;color:var(--muted)}.tab-close[data-v-8f87ec6f]:hover{background:#dbeafe;color:#2563eb}.tabs-more[data-v-8f87ec6f]{flex-shrink:0}.tabs-more-btn[data-v-8f87ec6f]{color:var(--muted);padding:0 8px}.tabs-more-icon[data-v-8f87ec6f]{margin-left:4px}.gs-input-wrap[data-v-b31b71b6]{display:flex;align-items:center;gap:8px;padding:4px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.gs-input-icon[data-v-b31b71b6]{color:var(--muted);font-size:16px}.gs-input[data-v-b31b71b6]{flex:1;border:none;outline:none;background:transparent;font-size:14px;color:var(--text);height:34px}.gs-kbd[data-v-b31b71b6]{flex-shrink:0}.gs-results[data-v-b31b71b6]{margin-top:12px;max-height:420px;overflow-y:auto}.gs-group-name[data-v-b31b71b6]{font-size:12px;color:var(--muted);padding:8px 4px 4px;font-weight:600}.gs-item[data-v-b31b71b6]{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;cursor:pointer}.gs-item.active[data-v-b31b71b6]{background:#eff6ff}.gs-item.active .gs-item-label[data-v-b31b71b6]{color:#2563eb}.gs-item-tag[data-v-b31b71b6]{flex-shrink:0}.gs-item-label[data-v-b31b71b6]{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gs-item-sub[data-v-b31b71b6]{margin-left:auto;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.gs-placeholder[data-v-b31b71b6]{padding:30px 0;text-align:center;color:var(--muted);font-size:13px}.global-search-dialog .el-dialog__header{display:none}.global-search-dialog .el-dialog__body{padding:16px}.user-chip[data-v-f51d4f66]{display:flex;align-items:center;gap:8px}.user-avatar[data-v-f51d4f66]{background:#409eff;color:#fff;font-weight:600}.user-meta[data-v-f51d4f66]{display:flex;flex-direction:column;line-height:1.2}.user-name[data-v-f51d4f66]{font-size:13px;font-weight:600;color:#303133}.user-role[data-v-f51d4f66]{font-size:12px;color:#909399}.global-search-entry[data-v-f51d4f66]{display:flex;align-items:center;gap:6px;width:240px;height:28px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--muted);font-size:12px;cursor:pointer}.global-search-entry[data-v-f51d4f66]:hover{border-color:#93c5fd;color:var(--blue)}.global-search-entry .gse-placeholder[data-v-f51d4f66]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.gse-kbd[data-v-f51d4f66]{flex-shrink:0}.notif-head[data-v-f51d4f66]{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px;border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:4px}.notif-empty[data-v-f51d4f66]{padding:24px 0;text-align:center;color:#94a3b8;font-size:13px}.notif-item[data-v-f51d4f66]{padding:9px 8px;border-radius:6px;cursor:pointer}.notif-item[data-v-f51d4f66]:hover{background:#f1f5f9}.notif-item.unread[data-v-f51d4f66]{background:#eff6ff}.notif-title[data-v-f51d4f66]{font-size:13px;color:#1f2937;line-height:1.4}.notif-time[data-v-f51d4f66]{margin-top:3px;font-size:11px;color:#94a3b8}.role-tip[data-v-a90490e6]{color:#606266;font-size:13px;margin:0 0 14px}.role-group[data-v-a90490e6]{display:flex;flex-direction:column;gap:10px}.role-group[data-v-a90490e6] .el-radio{margin-right:0}:root{--bg: #f6f7f9;--panel: #ffffff;--text: #1f2937;--muted: #6b7280;--line: #dde3ea;--green: #0f766e;--blue: #2563eb;--amber: #b45309;--rose: #be123c}*{box-sizing:border-box}body{margin:0;color:var(--text);background:var(--bg);font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif}button,input{font:inherit}.el-button--primary:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed){--el-button-text-color: #ffffff;--el-button-bg-color: #3b82f6;--el-button-border-color: #3b82f6;--el-button-hover-text-color: #ffffff;--el-button-hover-bg-color: #2563eb;--el-button-hover-border-color: #2563eb;--el-button-active-text-color: #ffffff;--el-button-active-bg-color: #1d4ed8;--el-button-active-border-color: #1d4ed8;font-weight:500}.el-button--primary:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed),.el-button--primary:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) span,.el-button--primary:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) .el-icon,.el-button--primary:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) i{color:#fff!important}.el-button--success:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed){--el-button-text-color: #ffffff;--el-button-bg-color: #22c55e;--el-button-border-color: #22c55e;--el-button-hover-text-color: #ffffff;--el-button-hover-bg-color: #16a34a;--el-button-hover-border-color: #16a34a;--el-button-active-text-color: #ffffff;--el-button-active-bg-color: #15803d;--el-button-active-border-color: #15803d;--el-button-disabled-text-color: #ffffff;--el-button-disabled-bg-color: #86efac;--el-button-disabled-border-color: #86efac;font-weight:500}.el-button--warning:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed){--el-button-text-color: #ffffff;--el-button-bg-color: #f59e0b;--el-button-border-color: #f59e0b;--el-button-hover-text-color: #ffffff;--el-button-hover-bg-color: #d97706;--el-button-hover-border-color: #d97706;--el-button-active-text-color: #ffffff;--el-button-active-bg-color: #b45309;--el-button-active-border-color: #b45309;--el-button-disabled-text-color: #ffffff;--el-button-disabled-bg-color: #fcd34d;--el-button-disabled-border-color: #fcd34d;font-weight:500}.el-button--danger:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed){--el-button-text-color: #ffffff;--el-button-bg-color: #ef4444;--el-button-border-color: #ef4444;--el-button-hover-text-color: #ffffff;--el-button-hover-bg-color: #dc2626;--el-button-hover-border-color: #dc2626;--el-button-active-text-color: #ffffff;--el-button-active-bg-color: #b91c1c;--el-button-active-border-color: #b91c1c;--el-button-disabled-text-color: #ffffff;--el-button-disabled-bg-color: #fca5a5;--el-button-disabled-border-color: #fca5a5;font-weight:500}.el-button--success:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed),.el-button--success:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) span,.el-button--success:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) .el-icon,.el-button--success:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) i,.el-button--warning:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed),.el-button--warning:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) span,.el-button--warning:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) .el-icon,.el-button--warning:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) i,.el-button--danger:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed),.el-button--danger:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) span,.el-button--danger:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) .el-icon,.el-button--danger:not(.is-plain):not(.is-link):not(.is-text):not(.is-dashed) i{color:#fff!important}.app-shell{height:100vh;overflow:hidden}.sidebar{display:flex;flex-direction:column;border-right:1px solid var(--line);background:#fff}.sidebar .nav-menu{flex:1;overflow-y:auto}.sidebar-version{display:flex;align-items:center;gap:6px;padding:12px 18px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);-webkit-user-select:none;user-select:none}.sidebar-version .ver-dot{width:7px;height:7px;border-radius:50%;background:#10b981;flex:none}.sidebar-version .ver-text{flex:1}.brand{display:flex;align-items:center;gap:12px;height:72px;padding:0 18px;border-bottom:1px solid var(--line)}.brand-mark{display:grid;width:40px;height:40px;place-items:center;border-radius:8px;color:#fff;background:#334155;font-weight:800}.brand strong,.brand span{display:block}.brand span{margin-top:3px;color:var(--muted);font-size:12px}.nav-menu{border:0;padding:12px 8px}.nav-menu .el-menu-item{height:42px;border-radius:6px}.nav-menu .el-sub-menu__title{height:42px;border-radius:6px;color:#374151;font-weight:700}.nav-menu .el-sub-menu{margin-bottom:6px}.nav-menu .el-sub-menu .el-menu-item{height:38px;margin:2px 0;color:#4b5563;font-weight:500}.nav-menu .el-sub-menu .el-menu-item.is-active{color:var(--blue);background:#eff6ff}.topbar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fff}.topbar h1{margin:6px 0 0;font-size:18px;line-height:1}.topbar-actions,.toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.topbar-actions{flex-wrap:nowrap;white-space:nowrap}.project-select{width:220px}.main-view{padding:22px;height:100%;min-width:0;overflow-x:hidden;overflow-y:auto}.dashboard-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.detail-grid{display:flex;flex-wrap:wrap;gap:16px}.project-summary-grid{display:flex;flex-wrap:wrap;gap:12px}.stat-tile{flex:0 0 auto;min-width:190px;display:flex;min-height:52px;gap:10px;align-items:center;padding:8px 18px 8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.stat-icon{display:grid;width:32px;height:32px;place-items:center;border-radius:6px}.stat-body .stat-line{display:flex;align-items:baseline;gap:8px}.stat-body span,.stat-body em{color:var(--muted);font-size:12px;font-style:normal;white-space:nowrap}.stat-body em{display:block;margin-top:2px;white-space:normal}.stat-body strong{font-size:18px;line-height:1.2;white-space:nowrap}.stat-tile.green .stat-icon{color:var(--green);background:#d9f3ef}.stat-tile.blue .stat-icon{color:var(--blue);background:#dbeafe}.stat-tile.amber .stat-icon{color:var(--amber);background:#fef3c7}.stat-tile.rose .stat-icon{color:var(--rose);background:#ffe4e6}.panel{min-height:260px;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;min-height:66px;padding:14px 16px;border-bottom:1px solid var(--line)}.panel h2{margin:0 0 4px;font-size:16px}.panel span{color:var(--muted);font-size:13px}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.todo-list{display:grid;gap:10px;padding:16px}.todo-item{display:grid;grid-template-columns:24px 1fr auto;align-items:center;width:100%;min-height:54px;padding:0 14px;border:1px solid var(--line);border-radius:8px;color:var(--text);background:#fff;text-align:left;cursor:pointer}.todo-item strong{color:var(--blue)}.module-page{display:flex;flex-direction:column;gap:16px;min-width:0;height:100%}.module-page>*{min-width:0}.module-page>.panel:last-of-type{flex:1;display:flex;flex-direction:column}.module-page>.panel:last-of-type>.el-table{flex:1 1 auto;min-height:0}.pager-row{display:flex;justify-content:flex-end;padding:10px 16px;border-top:1px solid var(--line)}.module-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fff}.search-input{width:min(320px,36vw)}.login-view{display:grid;min-height:100vh;place-items:center;padding:24px;background:linear-gradient(#0f172a80,#0f172a9e),url(https://images.unsplash.com/photo-1503387762-592deb58ef4e?auto=format&fit=crop&w=1800&q=80) center/cover}.login-panel{display:grid;grid-template-columns:minmax(260px,1fr) 340px;width:min(860px,100%);overflow:hidden;border-radius:8px;background:#fffffff0;box-shadow:0 24px 70px #0f172a40}.login-copy{padding:46px}.eyebrow{color:var(--blue);font-size:13px;font-weight:700}.login-copy h1{margin:16px 0 12px;font-size:34px}.login-copy p,.project-hero p{color:var(--muted)}.login-form{display:grid;align-content:center;padding:34px;border-left:1px solid var(--line)}.login-form .el-button{width:100%}.project-detail{display:grid;gap:16px}.project-hero{display:flex;align-items:center;justify-content:space-between;padding:22px;border:1px solid var(--line);border-radius:8px;background:#fff}.project-hero-actions{display:flex;align-items:center;gap:10px}.project-hero h2{margin:8px 0 6px;font-size:24px}.trace-panel{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(360px,1.6fr);gap:18px;margin-top:16px;padding:18px;border:1px solid var(--line);border-radius:8px;background:#fff}.trace-panel h3{margin:0 0 8px;font-size:16px}.trace-panel p{margin:0;color:var(--muted)}.trace-panel .profit-formula{margin-top:10px;color:var(--text);font-weight:700}.trace-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:center}.trace-steps span{min-height:42px;display:grid;place-items:center;border:1px solid #c7d2fe;border-radius:8px;color:#1d4ed8;background:#eff6ff;font-size:13px;text-align:center}@media(max-width:1080px){.sidebar{width:84px!important}.brand span,.brand strong,.nav-menu .el-sub-menu__title span,.nav-menu span{display:none}.stat-tile,.project-summary-grid .stat-tile,.span-4,.span-6,.span-8{grid-column:span 6}}@media(max-width:720px){.app-shell{display:block;height:auto;overflow:visible}.main-view{height:auto;overflow:visible}.sidebar{display:none}.topbar,.module-toolbar,.trace-panel,.project-hero,.login-panel{display:grid;grid-template-columns:1fr}.topbar{height:auto!important;gap:12px;padding:14px}.topbar-actions,.toolbar-actions{flex-wrap:wrap;justify-content:flex-start}.main-view{padding:14px}.stat-tile,.project-summary-grid .stat-tile,.span-4,.span-6,.span-8{grid-column:span 12}.search-input,.project-select{width:100%}.login-form{border-left:0;border-top:1px solid var(--line)}.trace-steps{grid-template-columns:1fr}}
