.global-search[data-v-acfbac84]{position:relative}.global-search-input[data-v-acfbac84]{color:var(--text);background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:13px}.global-search-input[data-v-acfbac84]::placeholder{color:var(--muted)}.global-search-panel[data-v-acfbac84]{z-index:100;background:var(--panel);border:1px solid var(--line);border-radius:8px;max-height:320px;padding:6px 0;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000059}.global-search-group+.global-search-group[data-v-acfbac84]{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}.global-search-label[data-v-acfbac84]{color:var(--muted);padding:6px 12px 4px;font-size:11px;font-weight:600}.global-search-item[data-v-acfbac84]{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;padding:8px 12px;font-size:13px;display:block}.global-search-item[data-v-acfbac84]:hover{background:var(--panel2)}.global-search-empty[data-v-acfbac84]{color:var(--muted);text-align:center;padding:14px 12px;font-size:13px}.muted[data-v-acfbac84]{color:var(--muted)}:root{--bg:#0e1015;--panel:#161a24;--panel2:#1d2230;--panel3:#242a3a;--line:#272d3d;--line2:#323a50;--text:#e6e9f2;--text2:#9aa3b8;--muted:#626b82;--primary:#5b8def;--primary-d:#3d6fe0;--primary-bg:#5b8def24;--green:#22c55e;--green-bg:#22c55e24;--red:#f0514a;--red-bg:#f0514a24;--amber:#f5b042;--amber-bg:#f5b04224;--purple:#a78bfa;--cyan:#22d3ee;--sidebar-w:232px;--footer-bar-h:58px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;overflow:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#2c3346;border-radius:4px}::-webkit-scrollbar-track{background:0 0}button.btn{background:0 0;font-family:inherit}.app{height:100vh;display:flex}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--panel);border-right:1px solid var(--line);flex-direction:column;display:flex;overflow-y:auto}.logo{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:18px 18px 16px;display:flex}.logo .mark{background:linear-gradient(135deg, var(--primary), var(--primary-d));color:#fff;letter-spacing:.02em;border-radius:9px;justify-content:center;align-items:center;width:34px;height:34px;font-size:13px;font-weight:800;display:flex}.logo .nm{color:#fff;font-size:15px;font-weight:700}.logo .nm b{color:var(--primary)}.nav{flex:1;padding:12px 10px}.nav-group{margin-bottom:6px}.nav-group .gt{color:var(--muted);letter-spacing:.16em;padding:12px 12px 6px;font-size:10px;font-weight:600}.nav-item{color:var(--text2);cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin-bottom:2px;padding:9px 12px;font-size:13.5px;font-weight:500;display:flex}.nav-item:hover{background:var(--panel2);color:var(--text)}.nav-item.on{background:var(--primary-bg);color:var(--primary);font-weight:600}.nav-item .ct{background:var(--red);color:#fff;border-radius:8px;margin-left:auto;padding:1px 6px;font-size:10px;font-weight:600}.side-foot{border-top:1px solid var(--line);color:var(--muted);padding:12px 16px;font-size:11px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 60px;align-items:center;gap:14px;height:60px;padding:0 22px;display:flex}.crumb{color:var(--muted);font-size:12px}.crumb b{color:var(--text2)}.top-title{color:#fff;font-size:17px;font-weight:700}.search{background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:8px;flex:0 0 280px;align-items:center;gap:8px;margin-left:16px;padding:8px 12px;font-size:13px;display:flex}.top-right{align-items:center;gap:14px;margin-left:auto;display:flex}.tbtn{background:var(--panel2);border:1px solid var(--line);width:36px;height:36px;color:var(--text2);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:flex;position:relative}.tbtn .dot{background:var(--red);border:1.5px solid var(--panel);border-radius:50%;width:7px;height:7px;position:absolute;top:7px;right:8px}.admin{align-items:center;gap:9px;display:flex}.admin .av{background:linear-gradient(135deg, var(--purple), #7c5bef);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:flex}.admin .ai{font-size:12px;line-height:1.3}.admin .ai .n{color:var(--text);font-weight:600}.admin .ai .r{color:var(--muted);font-size:11px}.content{flex:1;min-height:0;padding:22px;overflow-y:auto}.content:has(>[id^=v-] .grid2 .footer-bar){flex-direction:column;display:flex;overflow:hidden}.content:has(>[id^=v-] .grid2 .footer-bar)>[id^=v-]{flex:1;min-height:0;overflow:hidden}:is(.content:has(>[id^=v-]>.footer-bar),.content:has(>[id^=v-]:not(:has(>.grid2)) .footer-bar)){padding-bottom:var(--footer-bar-h)}.content>[id^=v-]:has(.grid2 .footer-bar){flex-direction:column;min-height:100%;display:flex}.content>[id^=v-]:has(.grid2 .footer-bar) .grid2{flex:1;min-height:0}.content>[id^=v-]{animation:.2s fade}@keyframes fade{0%{opacity:0}to{opacity:1}}.toast{color:#fff;border:1px solid var(--line2);z-index:9999;opacity:0;pointer-events:none;text-align:center;white-space:normal;word-break:break-word;background:#1d2230;border-radius:10px;max-width:min(92vw,560px);padding:12px 22px;font-size:13px;font-weight:600;line-height:1.55;transition:all .25s;position:fixed;bottom:32px;left:50%;transform:translate(-50%)translateY(16px);box-shadow:0 10px 30px #00000073}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.page-hd{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.page-hd .pt{color:#fff;font-size:20px;font-weight:700}.page-hd .ps{color:var(--muted);margin-top:3px;font-size:12px}.actions{gap:9px;display:flex}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:8px 15px;font-size:13px;font-weight:600;display:inline-flex}.btn-pri{background:var(--primary);color:#fff}.btn-pri:hover{background:var(--primary-d)}button.btn.btn-pri{background:var(--primary);color:#fff}button.btn.btn-pri:hover{background:var(--primary-d)}.btn-gh{background:var(--panel2);color:var(--text);border-color:var(--line)}.btn-gh:hover{border-color:var(--line2)}button.btn.btn-gh{background:var(--panel2);color:var(--text);border-color:var(--line)}button.btn.btn-gh:hover{border-color:var(--line2)}.btn-danger,button.btn.btn-danger{background:var(--red-bg);color:var(--red);border-color:#f0514a4d}.btn-sm{padding:5px 11px;font-size:12px}.stats{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;position:relative;overflow:hidden}.stat .lab{color:var(--text2);align-items:center;gap:7px;font-size:12px;display:flex}.stat .lab .emo{border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;font-size:15px;display:flex}.stat .val{color:#fff;margin-top:10px;font-size:27px;font-weight:800}.stat .trend{align-items:center;gap:4px;margin-top:6px;font-size:11px;display:flex}.up{color:var(--green)}.down{color:var(--red)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-bottom:16px}.panel-hd{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:15px 18px;display:flex}.panel-hd .t{color:#fff;font-size:15px;font-weight:700}.panel-bd{padding:16px 18px}.grid2{grid-template-columns:1.6fr 1fr;gap:16px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.chart-bars{align-items:flex-end;gap:10px;height:180px;padding:10px 0;display:flex}.chart-bars .bar-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:7px;height:100%;display:flex}.chart-bars .bar{background:linear-gradient(180deg, var(--primary), #5b8def4d);border-radius:5px 5px 0 0;width:60%;max-width:34px;transition:height .3s;position:relative}.chart-bars .bar.alt{background:linear-gradient(180deg, var(--purple), #a78bfa4d)}.chart-bars .bl{color:var(--muted);font-size:10px}.chart-bars .bv{color:var(--text2);font-size:10px;font-weight:600}.donut{align-items:center;gap:18px;display:flex}.legend{flex-direction:column;flex:1;gap:11px;display:flex}.legend .li{align-items:center;gap:9px;font-size:12.5px;display:flex}.legend .li .dc{border-radius:3px;flex:none;width:10px;height:10px}.legend .li .ln{color:var(--text2);flex:1}.legend .li .lv{color:#fff;font-weight:700}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--muted);background:var(--panel2);border-bottom:1px solid var(--line);white-space:nowrap;padding:11px 14px;font-size:12px;font-weight:600}.table td{color:var(--text);vertical-align:middle;padding:12px 14px}.table tbody tr{border-bottom:1px solid var(--line)}.table tbody td{border-bottom:none}.table tr:hover td{background:#5b8def0a}.table .strong{color:#fff;font-weight:700}.table .muted{color:var(--muted);font-size:12px}.table td.actions{white-space:nowrap}.table td.actions .btn,.table td.actions a.btn{vertical-align:middle;margin-right:7px}.table td.actions .btn:last-child,.table td.actions a.btn:last-child{margin-right:0}:is(.table td:has(>.btn),.table td:has(>a.btn)){white-space:nowrap}.table td:has(>.btn)>.btn{vertical-align:middle;margin-right:7px}.table td:has(>a.btn)>a.btn{vertical-align:middle;margin-right:7px}.table td:has(>.btn)>.btn:last-child{margin-right:0}.table td:has(>a.btn)>a.btn:last-child{margin-right:0}.cell-actions{flex-wrap:wrap;align-items:center;gap:7px;display:inline-flex}.tag{white-space:nowrap;border-radius:6px;align-items:center;gap:4px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.tag .d{background:currentColor;border-radius:50%;width:5px;height:5px}.t-green{background:var(--green-bg);color:var(--green)}.t-red{background:var(--red-bg);color:var(--red)}.t-amber{background:var(--amber-bg);color:var(--amber)}.t-blue{background:var(--primary-bg);color:var(--primary)}.t-purple{color:var(--purple);background:#a78bfa24}.t-gray{color:var(--text2);background:#9298aa24}.t-gold{color:var(--amber);background:#f5b04224}.toolbar{flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:14px;display:flex}.toolbar .sp{flex:1}.seg{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:3px;display:inline-flex}.seg button{color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 13px;font-size:12.5px;font-weight:500}.seg button.on{background:var(--primary);color:#fff;font-weight:600}.form{max-width:860px}.frow{gap:16px;margin-bottom:16px;display:flex}.fcol{flex:1}.label{color:var(--text2);align-items:center;gap:4px;margin-bottom:7px;font-size:12.5px;font-weight:600;display:flex}.label .req{color:var(--red)}.input,.select,.textarea{background:var(--panel2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:13px}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);outline:none}.textarea{resize:vertical;min-height:88px;line-height:1.6}.hint{color:var(--muted);margin-top:5px;font-size:11px}.help{color:var(--muted);background:var(--panel2);border-left:3px solid var(--primary);border-radius:0 8px 8px 0;margin-bottom:18px;padding:10px 13px;font-size:11px;line-height:1.6}.stage-row{background:var(--panel2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:10px;margin-bottom:9px;padding:11px 12px;display:flex}.stage-row .sn{background:var(--primary);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:700;display:flex}.stage-row .si{flex:1}.stage-row .si .in{color:var(--text);background:0 0;border:none;width:100%;font-size:13px;font-weight:600}.stage-row .si .in:focus{outline:none}.stage-row .si .meta{color:var(--muted);margin-top:2px;font-size:11px}.score-row{align-items:center;gap:14px;margin-bottom:14px;display:flex}.score-row .sl{width:90px;color:var(--text);font-size:13px}.score-row .bar{background:var(--panel3);border-radius:5px;flex:1;height:8px;position:relative}.score-row .fill{background:linear-gradient(90deg, var(--primary), var(--purple));border-radius:5px;height:100%}.score-row .vv{text-align:right;color:#fff;width:46px;font-size:14px;font-weight:700}.pager{color:var(--muted);justify-content:space-between;align-items:center;padding:14px;font-size:12px;display:flex}.pager .pages{gap:5px;display:flex}.pager .pg{background:var(--panel2);border:1px solid var(--line);min-width:30px;height:30px;color:var(--text2);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0 8px;display:flex}.pager .pg.on{background:var(--primary);color:#fff;border-color:#0000}.switch{background:var(--primary);cursor:pointer;border-radius:11px;flex:none;width:38px;height:22px;position:relative}.switch.off{background:var(--panel3)}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;top:2px;right:2px}.switch.off:after{left:2px;right:auto}.kv{border-bottom:1px solid var(--line);justify-content:space-between;padding:8px 0;font-size:13px;display:flex}.kv:last-child{border:none}.kv .k{color:var(--text2)}.kv .v{color:#fff;font-weight:600}.mini-stat{background:var(--panel2);border:1px solid var(--line);text-align:center;border-radius:10px;padding:13px}.mini-stat .v{color:#fff;font-size:20px;font-weight:800}.mini-stat .l{color:var(--muted);margin-top:3px;font-size:11px}.toolbar .sp,.footer-bar .sp{flex:1}.score-row .bar{cursor:pointer}a.btn{color:inherit;text-decoration:none}.footer-bar{background:var(--panel);border-top:1px solid var(--line);z-index:10;justify-content:flex-end;gap:10px;padding:14px 22px;display:flex}:is(.content>[id^=v-]>.footer-bar,.content>[id^=v-]:not(:has(>.grid2)) .footer-bar){bottom:0;left:var(--sidebar-w);z-index:100;margin:0;position:fixed;right:0}.grid2:has(.footer-bar){align-items:stretch}.grid2:has(.footer-bar)>.panel:not(:has(>.footer-bar)){flex-direction:column;min-height:0;margin-bottom:0;display:flex}.grid2:has(.footer-bar)>.panel:not(:has(>.footer-bar))>.panel-bd{flex:1;min-height:0;overflow-y:auto}.grid2 .panel:has(>.footer-bar){flex-direction:column;min-height:0;margin-bottom:0;display:flex}.grid2 .panel:has(>.footer-bar)>.panel-hd{flex-shrink:0}.grid2 .panel:has(>.footer-bar)>.panel-bd{flex:1;min-height:0;overflow-y:auto}.grid2 .panel:has(>.footer-bar)>.footer-bar{z-index:1;flex-shrink:0;margin:0;position:static}
