:root{--primary:#2563eb;--primary-hover:#3b82f6;--text-main:#1e293b;--text-sub:#475569;--text-muted:#64748b;--text-light:#94a3b8;--danger:#ef4444;--success:#10b981;--warning:#f59e0b;--bg-page:#f5f7fa;--sider-bg:#1e1e2d;--mono:"JetBrains Mono", "Consolas", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}body{background:var(--bg-page);color:var(--text-main)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.page{max-width:1600px;margin:0 auto}.page-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px;display:flex}.page-title{color:var(--text-main);letter-spacing:-.02em;font-size:24px;font-weight:750}.page-subtitle{color:var(--text-muted);margin-top:6px;font-size:13px}.page-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.section-label{color:var(--text-light);letter-spacing:.11em;text-transform:uppercase;margin:0 0 12px;font-size:11px;font-weight:750}.surface{background:#fff;border:1px solid #e7edf5;border-radius:12px;box-shadow:0 4px 16px #1931530b}.surface-pad{padding:20px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.metric-card{min-height:122px;padding:18px 19px;position:relative;overflow:hidden}.metric-card:after{content:"";background:#2563eb0f;border-radius:50%;width:100px;height:100px;position:absolute;bottom:-31px;right:-16px}.metric-card .metric-label{color:var(--text-muted);font-size:12px}.metric-card .metric-value{color:var(--text-main);font-family:var(--mono);letter-spacing:-.03em;margin:10px 0 8px;font-size:28px;font-weight:700}.metric-card .metric-foot{color:var(--text-light);align-items:center;gap:8px;font-size:11px;display:flex}.metric-card.blue .metric-value{color:#2563eb}.metric-card.teal .metric-value{color:#0f9f86}.metric-card.red .metric-value{color:#d84753}.metric-card.amber .metric-value{color:#c47c12}.delta{color:#138a64;background:#ecfdf5;border-radius:5px;padding:2px 6px;font-weight:700}.delta.warn{color:#b6761b;background:#fff7e8}.delta.red{color:#c33d4a;background:#fff0f1}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:17px;display:flex}.panel-title{color:var(--text-main);font-size:15px;font-weight:700}.panel-title small{color:var(--text-light);margin-left:8px;font-size:11px;font-weight:400}.muted{color:var(--text-muted)}.tiny{font-size:11px}.gap8{gap:8px}.gap12{gap:12px}.mt16{margin-top:16px}.mb16{margin-bottom:16px}.two-col{grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:16px;display:grid}.table-wrap{overflow-x:auto}.table-wrap .ant-table{background:0 0}.table-wrap .ant-table-thead>tr>th{color:var(--text-muted);white-space:nowrap;background:#f8fafc;font-size:11px;font-weight:700}.table-wrap .ant-table-tbody>tr>td{color:var(--text-sub);font-size:12px}.code-pill{color:#43536a;font-family:var(--mono);background:#f1f5f9;border-radius:5px;padding:3px 7px;font-size:11px;display:inline-flex}.risk-list{gap:11px;display:grid}.risk-row{grid-template-columns:9px 1fr auto;align-items:start;gap:9px;display:grid}.risk-dot{border-radius:50%;width:8px;height:8px;margin-top:4px}.risk-dot.red{background:#df4f5c;box-shadow:0 0 0 4px #fff0f1}.risk-dot.yellow{background:#e7a128;box-shadow:0 0 0 4px #fff7e8}.risk-dot.blue{background:#4b8be8;box-shadow:0 0 0 4px #edf5ff}.risk-main{color:var(--text-main);font-size:12px;font-weight:650}.risk-detail{color:var(--text-muted);margin-top:3px;font-size:11px;line-height:1.45}.risk-count{color:var(--text-main);font-family:var(--mono);font-size:13px;font-weight:700}.timeline{gap:16px;display:grid}.timeline-item{grid-template-columns:48px 10px 1fr;align-items:start;gap:10px;display:grid}.timeline-time{color:var(--text-light);font-family:var(--mono);font-size:11px}.timeline-line{justify-content:center;display:flex;position:relative}.timeline-line:before{content:"";z-index:1;background:#fff;border:2px solid #6da3ed;border-radius:50%;width:7px;height:7px;margin-top:4px}.timeline-line:after{content:"";background:#dbe7f4;width:1px;position:absolute;top:13px;bottom:-24px}.timeline-item:last-child .timeline-line:after{display:none}.timeline-body strong{color:var(--text-main);font-size:12px}.timeline-body p{color:var(--text-muted);margin-top:4px;font-size:11px;line-height:1.5}.drop-zone{text-align:center;background:linear-gradient(135deg,#f7fbff,#f9fbfd);border:1px dashed #b7cae1;border-radius:12px;place-items:center;min-height:190px;padding:28px;display:grid}.drop-icon{color:#2b72cc;background:#e8f2ff;border-radius:14px;place-items:center;width:48px;height:48px;margin:0 auto 11px;font-size:23px;display:grid}.drop-zone h3{color:var(--text-main);font-size:15px}.drop-zone p{color:var(--text-muted);margin:7px 0 15px;font-size:12px}.filter-bar{background:#f8fafc;border:1px solid #e8eef5;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:14px;display:flex}.filter-bar .ant-input,.filter-bar .ant-select{min-width:140px}.status-summary{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.status-summary-item{color:var(--text-muted);align-items:center;gap:7px;font-size:12px;display:flex}.status-summary-item strong{color:var(--text-main);font-family:var(--mono)}.board-grid{grid-template-columns:repeat(3,minmax(290px,1fr));gap:14px;display:grid}.container-card{padding:16px}.container-card-head{justify-content:space-between;gap:10px;display:flex}.container-code{color:var(--text-main);font-family:var(--mono);font-size:15px;font-weight:700}.container-agent{color:var(--text-muted);margin-top:5px;font-size:12px}.container-cost{color:#1d5aa9;font-family:var(--mono);font-size:17px;font-weight:700}.container-meta{border-top:1px solid #eef2f7;border-bottom:1px solid #eef2f7;grid-template-columns:repeat(3,1fr);gap:8px;margin:15px 0;padding:11px 0;display:grid}.container-meta span{color:var(--text-light);font-size:10px;display:block}.container-meta strong{color:var(--text-main);font-family:var(--mono);margin-top:4px;font-size:13px;display:block}.container-footer{justify-content:space-between;align-items:center;margin-top:14px;display:flex}.price-ok{color:#16836a;font-size:11px}.price-warn{color:#bb7a15;font-size:11px}.price-danger{color:#c8414d;font-size:11px}.severity-card{grid-template-columns:4px 1fr auto;align-items:start;gap:13px;padding:15px 16px;display:grid}.severity-bar{border-radius:4px}.severity-bar.red{background:#dc4c57}.severity-bar.yellow{background:#e2a12d}.severity-bar.blue{background:#4c8ee6}.severity-title{color:var(--text-main);font-size:13px;font-weight:700}.severity-detail{color:var(--text-muted);margin-top:5px;font-size:11px;line-height:1.5}.severity-count{color:var(--text-main);font-family:var(--mono);font-size:21px;font-weight:700}.mapping-grid{grid-template-columns:1fr 40px 1fr;align-items:center;gap:10px;display:grid}.mapping-arrow{color:var(--primary);text-align:center}.mapping-row{border-bottom:1px solid #eef2f7;grid-template-columns:1fr 180px;align-items:center;gap:12px;padding:10px 0;display:grid}.mapping-row:last-child{border-bottom:0}.template-list{gap:8px;display:grid}.template-item{background:#fff;border:1px solid #e9eef5;border-radius:8px;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:9px 11px;display:grid}.template-index{color:var(--text-light);font-family:var(--mono);text-align:center;font-size:11px}.template-label{color:var(--text-main);font-size:12px}.template-source{color:var(--text-light);font-family:var(--mono);font-size:10px}.empty-state{text-align:center;color:var(--text-muted);padding:45px 20px}@media (width<=1150px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.board-grid{grid-template-columns:repeat(2,minmax(290px,1fr))}}@media (width<=720px){.page-head{display:block}.page-actions{margin-top:14px}.grid-4,.grid-3,.grid-2,.board-grid{grid-template-columns:1fr}.metric-card .metric-value{font-size:24px}.mapping-row,.mapping-grid{grid-template-columns:1fr}.mapping-arrow{transform:rotate(90deg)}}.review-note{color:#476784;background:#eef6ff;border-bottom:1px solid #dbe8f5;padding:8px 20px;font-size:12px}.workspace-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px;display:grid}.work-panel{background:#fff;border:1px solid #dfe7ef;border-radius:10px;min-width:0;padding:24px}.work-panel h2{margin:0 0 16px;font-size:16px;font-weight:650}.work-panel h3{margin:20px 0 12px;font-size:14px}.review-kicker{color:#52708a;letter-spacing:.12em;margin-bottom:8px;font-size:11px}.review-stats{border-block:1px solid #e2eaf2;flex-wrap:wrap;gap:32px;margin:0 0 20px;padding:20px 0;display:flex}.review-stats small{color:#60758a;margin-bottom:6px;display:block}.review-stats strong{font-size:25px;font-family:var(--mono);color:#244967}.review-toolbar{flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:20px;display:flex}.review-toolbar label{color:#52677a;gap:6px;font-size:12px;display:grid}.review-toolbar .ant-select{min-width:130px}.review-callout{color:#456077;background:#f3f8fc;border-left:3px solid #4b91be;margin-bottom:16px;padding:14px;font-size:12px;line-height:1.8}.review-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:20px;display:flex}.review-code{width:100%;font-family:var(--mono);color:#254f71;white-space:pre-wrap;overflow-wrap:anywhere;background:#f3f7fb;padding:16px;line-height:1.8}.review-list{gap:12px;display:grid}.review-list button{text-align:left;cursor:pointer;color:#334b63;background:#f7fafc;border:1px solid #dce7ef;border-radius:8px;padding:14px}.review-list button.active{background:#eaf5ff;border-color:#4d8fbc}.review-list small{color:#627a91;margin-top:6px;display:block}.review-pair{border-bottom:1px solid #e9eff5;justify-content:space-between;gap:16px;padding:12px 0;font-size:12px;display:flex}.review-pair span{color:#65788c}.review-flow{color:#607b92;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:24px;font-size:12px;display:flex}.review-flow b{color:#24658f;background:#e6f2fc;border-radius:5px;padding:7px 12px}.review-result{color:#276448;background:#f1faf6;border:1px solid #bedbd0;border-radius:8px;margin-top:16px;padding:16px}button:focus-visible{outline-offset:3px;outline:2px solid #2679b8}@media (width<=1200px){.workspace-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.work-panel{padding:16px}.review-stats{gap:20px}}
