:root{font-family:"Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif;color:#20334f;background:#f4f7fc;font-synthesis:none;font-size:14px;--primary:#176bd3;--ink:#20334f;--muted:#7d8aa0;--border:#e4eaf2;--surface:#fff;--soft:#eff5ff;--shadow:0 3px 17px rgba(26,72,127,.055)}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}a{color:var(--primary)}.hidden{display:none!important}
.layout{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;width:242px;min-width:242px;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--border);z-index:5}.brand{height:83px;display:flex;gap:11px;align-items:center;padding:20px 19px;border-bottom:1px solid #edf1f7}.brand-logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#1167d2,#399ff1);display:grid;place-items:center;color:#fff;font-size:22px;font-weight:800;box-shadow:0 4px 9px #227ad22a}.brand strong,.brand span{display:block}.brand strong{font-size:16px;white-space:nowrap;color:#152f54}.brand span{font-size:11px;color:#8592a4;margin-top:5px}.nav{padding:13px 10px;overflow-y:auto;scrollbar-width:none;flex:1}.nav::-webkit-scrollbar{width:0}.nav-group{font-size:11px;letter-spacing:1px;color:#99a8bd;font-weight:600;padding:17px 14px 8px}.nav button{width:100%;height:41px;display:flex;align-items:center;gap:11px;background:transparent;border:0;color:#53647d;border-radius:9px;text-align:left;padding:0 12px;margin:3px 0;transition:background .15s}.nav button:hover{background:#f3f7fc}.nav button.active{background:#eaf3ff;color:#1467ce;font-weight:700}.nav .nav-icon{font-size:14px;width:21px;text-align:center;opacity:.82}.sidebar-foot{padding:18px 23px;border-top:1px solid var(--border);color:#5c7290;font-size:11px}.sidebar-foot small{display:block;color:#9bacc2;margin:5px 0 0 16px}.tiny-dot{display:inline-block;width:7px;height:7px;background:#3ba779;border-radius:50%;margin-right:7px}
.workspace{display:flex;min-width:0;flex:1;flex-direction:column}.topbar{height:69px;flex-shrink:0;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 30px}.breadcrumbs{display:flex;gap:9px;align-items:center;color:#8594a8;font-size:13px}.breadcrumbs b{color:#28456b;font-weight:600}.top-actions{display:flex;gap:14px;align-items:center}.pill{display:inline-flex;align-items:center;border-radius:20px;padding:7px 11px;background:#f2f5f9;color:#687b92;font-size:12px}.pill.good{background:#e9f8ef;color:#248654}.pill.warn{background:#fff3e5;color:#a66b1d}.main{padding:28px 30px 35px;width:100%;max-width:1640px;margin:0 auto;flex:1}.footnote{text-align:center;color:#9ba8b7;font-size:11px;padding:12px 18px 23px}.page-title{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:20px}.page-title h1{font-size:24px;line-height:1.4;margin:0;color:#19375a;letter-spacing:.1px}.page-title p{margin:8px 0 0;color:#8290a4;font-size:13px;line-height:1.8}.eyebrow{color:var(--primary);font-weight:700;font-size:12px;letter-spacing:.4px;margin-bottom:8px}
.btn{height:35px;border-radius:8px;padding:0 14px;border:1px solid #cde0f7;background:#176bd3;color:white;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;justify-content:center}.btn:hover{filter:brightness(.97)}.btn.secondary{background:#fff;color:#1d69c4;border-color:#d3e3f4}.btn.ghost{background:#f5f8fc;color:#546783;border-color:#ebeff5}.btn:focus-visible,.nav button:focus-visible,.clickable:focus-visible{outline:3px solid #a4ccff;outline-offset:1px}
.card{background:#fff;border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow);padding:20px}.hero{border:1px solid #cddff9;border-radius:14px;background:linear-gradient(112deg,#eaf3ff,#f8fbff 70%);padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.hero h2{font-size:21px;margin:0 0 8px;color:#1b4e88}.hero p{color:#6d84a2;font-size:13px;margin:0;line-height:1.8}.hero-tag{display:inline-flex;background:#fff;color:#2f73bc;padding:8px 12px;border:1px solid #d5e6fa;border-radius:8px;font-size:12px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi{min-height:113px;padding:17px 19px}.kpi b{display:block;font-size:26px;line-height:1.5;color:#24476f;font-weight:700}.kpi span{font-size:12px;color:#8292a7}.kpi small{display:block;font-size:11px;color:#a5aebb;margin-top:5px}.grid-2{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px}.section-title{font-size:15px;font-weight:700;margin:0 0 15px;color:#264868}.modules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.module{border:1px solid #e8edf5;background:#fff;border-radius:11px;padding:16px;text-align:left;min-height:108px;transition:border-color .15s,transform .15s}.module:hover{border-color:#85b6ed;transform:translateY(-1px)}.module strong{display:block;color:#2b4c70;font-size:13px}.module p{margin:8px 0 0;color:#8797ac;font-size:12px;line-height:1.65}.module .number{float:right;color:#bad1ec;font-size:18px;font-weight:700}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.feature{background:#fff;border:1px solid var(--border);border-radius:11px;padding:15px 17px;min-height:90px}.feature strong{font-size:13px;color:#285178}.feature p{color:#8390a4;font-size:12px;margin:8px 0;line-height:1.7}.status{display:inline-block;color:#637f9a;background:#f2f5f9;border-radius:4px;padding:3px 6px;font-size:11px}.status.live{background:#e5f5ea;color:#248753}.status.todo{background:#fff5e8;color:#ab751c}.notice{border:1px solid #dae7f6;background:#f4f9ff;color:#496b91;padding:13px 16px;border-radius:9px;line-height:1.8;font-size:12px;margin-bottom:15px}.notice.warn{background:#fffaf1;border-color:#ffebc8;color:#9c7132}.empty{padding:35px 20px;text-align:center;color:#8b9bb1;font-size:13px}.empty strong{display:block;color:#526a85;margin-bottom:8px}.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:14px}.toolbar .grow{flex:1}.search{height:35px;border:1px solid #dce6f2;border-radius:8px;padding:0 12px;min-width:200px;color:#294766;background:#fff}.search:focus{outline:2px solid #b8d5fa}.data-table{border:1px solid var(--border);border-radius:10px;overflow:auto;max-height:460px}.data-table table{width:100%;border-collapse:collapse;table-layout:fixed}.data-table th{background:#f7f9fc;color:#68819c;font-size:12px;font-weight:600;text-align:left;padding:13px 15px;border-bottom:1px solid var(--border)}.data-table td{font-size:12px;color:#465e7a;padding:12px 15px;border-bottom:1px solid #edf1f6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#f9fbff}.muted{color:#8797ac}.mini{font-size:11px}.buttons{display:flex;gap:8px;flex-wrap:wrap}.modal-root{position:fixed;inset:0;background:#18335766;display:grid;place-items:center;z-index:30;padding:20px}.dialog{background:#fff;border-radius:15px;padding:26px;max-width:470px;width:100%;box-shadow:0 18px 55px #17365930}.dialog h2{font-size:19px;margin:0 0 18px}.field{display:block;font-size:12px;color:#67809b;margin:15px 0}.field input{display:block;width:100%;height:42px;margin-top:7px;padding:0 12px;border:1px solid #d7e3f1;border-radius:8px}.field input:focus{outline:2px solid #a9cffd}.dialog .buttons{justify-content:flex-end;margin-top:22px}.error{color:#bb4040;font-size:12px}.success{color:#248753}.import-box{border:1px dashed #9ebde0;border-radius:10px;background:#f8fbff;padding:20px;margin:12px 0}.import-box input{max-width:100%}
@media(max-width:1270px){.sidebar{width:205px;min-width:205px}.main{padding:22px}.topbar{padding:0 22px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.modules{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:780px){.layout{display:block}.sidebar{position:relative;width:100%;height:auto;border-right:0}.brand{height:57px}.nav{display:flex;overflow-x:auto;padding:7px 10px;border-bottom:1px solid var(--border)}.nav-group{display:none}.nav button{width:auto;flex-shrink:0;white-space:nowrap;padding:0 10px}.sidebar-foot{display:none}.topbar{padding:0 14px;height:58px}.breadcrumbs{display:none}.main{padding:18px 14px}.hero{display:block}.hero-tag{margin-top:12px}.grid-2,.detail-grid{grid-template-columns:1fr}.page-title h1{font-size:20px}.kpis{gap:9px}.modules{gap:9px}.pill{font-size:11px}.data-table{overflow-x:auto}.data-table table{min-width:650px}}
