:root{--blue:#245bd7;--navy:#142440;--ink:#23324b;--muted:#7b879b;--line:#e7ebf2;--bg:#f4f6fa;--green:#159a78;--amber:#b87c19;--radius:12px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 "Microsoft YaHei","PingFang SC",Arial,sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button,a{ -webkit-tap-highlight-color:transparent}a{color:var(--blue);text-decoration:none}button{border:0}input,select,textarea{border:1px solid #dce2ec;border-radius:7px;background:#fff;color:var(--ink);padding:9px 11px;max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #b4caff;border-color:#6f96ed}textarea{resize:vertical;min-height:83px}h1,h2,h3,p{margin:0}h1{font-size:26px;letter-spacing:.5px;font-weight:650}h2{font-size:17px;font-weight:600}h3{font-size:15px;font-weight:600}.muted{color:var(--muted)}.sidebar{width:216px;background:var(--navy);color:#9eaec7;position:fixed;inset:0 auto 0 0;z-index:10;padding:30px 16px 22px;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;color:#fff;font-size:18px;font-weight:600;padding:0 8px 42px}.brand-mark{width:37px;height:40px;display:grid;place-items:center;color:#d9e6ff}.brand-mark svg{width:37px}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:3px;color:#a2b4d2;margin-top:3px}.nav-label{font-size:11px;padding:0 18px 14px;color:#7e91b2;letter-spacing:1px}nav{display:grid;gap:9px}nav a{padding:12px 15px;color:#acbad1;border-radius:8px;display:flex;align-items:center;gap:12px;font-size:14px}nav a.active{background:#2d5bd4;color:#fff;box-shadow:0 5px 20px #0b183a33}nav a:hover{color:#fff;background:#ffffff10}.nav-icon{font-size:19px;width:21px;text-align:center}.sidebar-note{margin:45px 13px 0;font-size:12px;color:#cfdaeb;border-top:1px solid #ffffff13;padding-top:22px}.green-dot{display:inline-block;width:6px;height:6px;border-radius:100%;background:#57c0a3;margin-right:5px}.sidebar-note p{color:#8194b3;line-height:2;margin-top:9px}.sidebar-bottom{margin-top:auto;padding:22px 13px 0;font-size:11px;color:#7b8ead}.sidebar-bottom p{margin-top:12px}.version-tag{font-family:Arial,sans-serif;letter-spacing:1.6px;border:1px solid #ffffff25;border-radius:4px;padding:4px 7px}.shell{margin-left:216px;min-height:100vh}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;font-size:12px}.slash{color:#c5ccda;padding:0 13px}.top-actions{display:flex;align-items:center;gap:20px}.demo-label{font-size:11px;color:#8d691f;background:#fcf6e8;padding:4px 10px;border-radius:4px;white-space:nowrap}.avatar{display:grid;place-items:center;width:31px;height:31px;border-radius:50%;background:#eaf0fc;color:#4e6b9d}.text-button{padding:3px;background:transparent;color:#60718d}.text-button:hover{color:var(--blue)}main{padding:28px 32px 30px;max-width:1920px;margin:auto}.page-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px;gap:20px}.page-title p{font-size:12px;color:var(--muted);margin-top:6px}.title-actions{display:flex;align-items:center;gap:10px}.btn{border-radius:7px;padding:9px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px;background:#fff;border:1px solid #dce2ec;color:#435573;white-space:nowrap}.btn:hover{border-color:#7294de;color:var(--blue)}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn.primary:hover{background:#1b4fca}.btn.small{padding:5px 10px;font-size:12px}.btn.light{background:#fff;color:var(--blue);border:0}.import-banner{display:flex;align-items:center;justify-content:space-between;background:#eaf0fd;border:1px solid #dbe6fd;border-radius:var(--radius);padding:22px 25px;margin-bottom:22px;gap:20px}.import-banner .left{display:flex;align-items:center;gap:18px}.file-icon{width:47px;height:53px;background:#fff;border-radius:7px;display:grid;place-items:center;font-size:13px;font-weight:700;color:var(--blue);box-shadow:0 4px 12px #2e5ed410}.file-icon svg{width:30px;height:30px}.import-banner h2{font-size:17px;color:#21467e}.import-banner p{font-size:12px;color:#6b81a8;margin-top:4px}.banner-actions{display:flex;align-items:center;gap:14px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:23px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;position:relative}.stat-label{color:#78869c;font-size:12px;display:flex;justify-content:space-between;align-items:center}.stat-label .tile-symbol{background:#eef3fc;color:#6c8bcc;width:27px;height:27px;display:grid;place-items:center;border-radius:7px}.stat-value{font-family:Arial,"Microsoft YaHei",sans-serif;font-size:29px;line-height:1.3;font-weight:600;margin:8px 0 6px;letter-spacing:.3px}.stat-value small{font-size:12px;color:#8994a6;font-weight:400;letter-spacing:0;margin-left:7px}.stat-sub{font-size:11px;color:#9aa4b5}.stat-sub .blue{color:var(--blue)}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:19px 21px;border-bottom:1px solid #edf0f6;gap:12px}.panel-title small{font-size:11px;color:#8b97a9}.panel-title h2{font-size:16px}.filters{padding:17px 21px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid #edf0f6}.search{min-width:250px;flex:1;max-width:365px}.filters input,.filters select{font-size:12px;padding:8px 10px}.filters select{min-width:115px}.filter-count{font-size:12px;color:#8a96a8;margin-left:auto}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap;text-align:left}th{color:#7e8a9f;background:#f9fafc;font-weight:400;padding:12px 16px;border-bottom:1px solid #edf0f6}td{padding:16px;border-bottom:1px solid #edf0f6}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfe}.project-name{font-weight:500;color:#2c3c57;max-width:250px;white-space:normal;display:block;text-align:left;background:transparent;padding:0}.project-code{font-size:10px;color:#a0aabc;margin-top:3px;font-family:Arial,sans-serif}.amount{font-variant-numeric:tabular-nums;font-family:Arial,sans-serif;font-size:13px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:3px 7px;border-radius:4px;background:#edf2fb;color:#5b79aa;white-space:nowrap}.badge.green{background:#eaf6f1;color:#328c74}.badge.amber{background:#fcf4e4;color:#b68732}.badge.gray{background:#f1f3f7;color:#8c98aa}.badge.red{background:#ffeded;color:#c95353}.progress-line{display:flex;align-items:center;gap:8px}.progress-track{height:5px;background:#edf1f7;border-radius:10px;width:68px;overflow:hidden}.progress-track i{height:100%;background:#6994e9;display:block;border-radius:10px}.progress-line span{font-size:11px;color:#7d8ca5;min-width:30px}.row-action{color:var(--blue);background:transparent;font-size:12px;padding:3px 5px}.table-bottom{display:flex;justify-content:space-between;padding:14px 21px;color:#98a2b3;font-size:11px;background:#fefefe}.page-footer{padding:0 32px 18px;color:#9ba6b8;font-size:10px;display:flex;justify-content:space-between;gap:10px}.two-col{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;margin-bottom:20px}.chart-body{padding:25px}.bars{display:grid;gap:19px}.bar-row{display:grid;grid-template-columns:64px 1fr 65px;align-items:center;gap:14px;font-size:12px}.bar-track{height:9px;background:#eff3fa;border-radius:4px;overflow:hidden}.bar-track i{height:100%;background:#537fe0;display:block;border-radius:4px}.bar-value{text-align:right;font-family:Arial,sans-serif;color:#6b7c96}.legend{display:flex;gap:20px;align-items:center;font-size:11px;color:#8c97a9;margin:0 0 22px}.legend i{width:8px;height:8px;display:inline-block;border-radius:2px;margin-right:5px}.donut-layout{display:flex;align-items:center;gap:30px;justify-content:center}.donut{width:156px;height:156px;display:grid;place-items:center;border-radius:50%;position:relative;flex-shrink:0}.donut:before{content:"";position:absolute;inset:18px;background:#fff;border-radius:50%}.donut-center{z-index:1;text-align:center;font-size:11px;color:#8b96a9}.donut-center strong{display:block;font:600 30px Arial;color:#2a3954}.donut-legend{display:grid;gap:14px;min-width:165px}.donut-legend div{display:flex;gap:9px;align-items:center;font-size:12px}.donut-legend i{width:7px;height:7px;border-radius:2px}.donut-legend strong{margin-left:auto;font:500 14px Arial}.empty{padding:45px;text-align:center;color:#96a0b0}.info-strip{padding:11px 15px;background:#f5f8ff;color:#6d83a9;border:1px solid #e1e9fa;font-size:12px;border-radius:7px;margin-bottom:18px}.cockpit-mode{background:#0e1d34;color:#dae5f6}.cockpit-mode .topbar{background:#14243d;border-color:#263852;color:#b5c5e0}.cockpit-mode .sidebar{background:#0c192d;border-right:1px solid #26354b}.cockpit-mode .page-footer{color:#607494}.cockpit-mode main{padding-top:23px}.cockpit-title{text-align:center;margin:0 0 25px;position:relative;min-height:63px}.cockpit-title h1{font-size:26px;color:#edf3ff;font-weight:500;letter-spacing:4px}.cockpit-title p{font-size:11px;letter-spacing:1.5px;color:#8196b6;margin-top:6px}.cockpit-controls{display:flex;gap:8px;justify-content:center;margin-bottom:23px}.cockpit-controls select,.cockpit-controls button{background:#1a2c48;border-color:#324463;color:#c0d2ec;font-size:12px}.cockpit-controls .btn.primary{background:#2856b4;border-color:#3565c7;color:#e3ecff}.cockpit-mode .stats{gap:15px}.cockpit-mode .stat{background:#172944;border-color:#2b3d59}.cockpit-mode .stat-label{color:#93a9ca}.cockpit-mode .tile-symbol{background:#213959;color:#719ad7}.cockpit-mode .stat-value{color:#eaf1ff;font-size:32px}.cockpit-mode .stat-sub{color:#6f87ad}.cockpit-mode .stat-value small{color:#6e87af}.cockpit-grid{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:17px}.dark-panel{background:#14263f;border:1px solid #2b3b55;border-radius:9px;overflow:hidden}.dark-panel h2{font-size:14px;letter-spacing:1px;color:#bfd1ed;padding:16px 18px;border-bottom:1px solid #293b58;display:flex;justify-content:space-between;align-items:center}.dark-panel h2 small{font-size:10px;color:#7892b6;font-weight:400;letter-spacing:0}.dark-panel .chart-body{padding:23px 18px}.dark-panel .bar-row{grid-template-columns:52px 1fr 47px;gap:8px;font-size:11px}.dark-panel .bar-track{background:#203451}.dark-panel .bar-track i{background:#4c84cc}.dark-panel .bar-value{color:#9bb6da}.stage-list{display:flex;justify-content:space-around;margin:5px 0 23px;gap:8px}.stage{text-align:center;font-size:11px;color:#8ca6ce}.stage strong{display:block;font:500 26px Arial;color:#c2d9fb;margin-bottom:6px}.stage+.stage{border-left:1px solid #2b3d59;flex:1}.stage{flex:1}.completion-block{background:#1b304e;border:1px solid #2c4365;border-radius:9px;padding:20px;display:flex;align-items:center;gap:23px}.completion-ring{width:111px;height:111px;border-radius:50%;display:grid;place-items:center;position:relative;flex-shrink:0}.completion-ring:before{content:"";position:absolute;inset:8px;border-radius:50%;background:#1b304e}.completion-ring span{z-index:1;font:500 25px Arial;color:#b4d2ff}.completion-copy{font-size:11px;color:#7f9ac0;line-height:2}.completion-copy strong{font-size:14px;color:#b7cdec;font-weight:500}.cockpit-footnote{font-size:10px;color:#7087aa;margin-top:17px;line-height:1.8}.issue-list{display:grid;gap:9px}.issue-card{border:1px solid #30425f;border-radius:6px;background:#1b2e4a;padding:12px;text-align:left;width:100%;color:#b4c7e5}.issue-card:hover{border-color:#607eab}.issue-card strong{display:block;font-size:11px;line-height:1.8;font-weight:400}.issue-card p{color:#d9ba80;font-size:11px;margin-top:4px}.issue-card small{color:#7089ae;font-size:10px}.cockpit-bottom{margin-top:18px;display:grid;grid-template-columns:1.35fr 1fr;gap:17px}.dark-panel table th{background:#192c47;color:#8099bf;border-color:#2c3d59}.dark-panel table td{color:#a7bddb;border-color:#263a59}.dark-panel tbody tr:hover{background:#1b304e}.fullscreen .sidebar,.fullscreen .topbar,.fullscreen .page-footer{display:none}.fullscreen .shell{margin-left:0}.fullscreen main{padding:25px 35px}.fullscreen .cockpit-title h1{font-size:31px}dialog{border:0;border-radius:14px;width:min(1030px,calc(100vw - 50px));padding:0;color:var(--ink);max-height:90vh;box-shadow:0 30px 100px #0d1b3750}dialog::backdrop{background:#101f3e80;backdrop-filter:blur(2px)}.modal-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:20px 25px;background:#fff;position:sticky;top:0;z-index:2}.modal-header h2{font-size:18px}.modal-header p{font-size:11px;color:#8d99ac;margin-top:3px}.close{background:#f1f4f9;color:#7b89a0;border-radius:5px;width:27px;height:27px;font-size:20px;line-height:1}.modal-body{padding:23px 25px;max-height:calc(90vh - 158px);overflow:auto;background:#fff}.modal-footer{display:flex;justify-content:space-between;align-items:center;padding:15px 25px;border-top:1px solid var(--line);background:#fafbfd;gap:15px;position:sticky;bottom:0;font-size:11px;color:#8e9bb0}.modal-footer .actions{display:flex;gap:10px}.steps{display:flex;gap:14px;border-bottom:1px solid #eef1f7;padding-bottom:21px;margin-bottom:24px}.step{display:flex;align-items:center;gap:8px;color:#a2adbd;font-size:12px;flex:1}.step i{font-style:normal;border-radius:50%;width:25px;height:25px;background:#f1f3f7;text-align:center;line-height:25px}.step.current{color:var(--blue)}.step.current i{background:var(--blue);color:white}.step.done{color:#6c87ba}.dropzone{padding:43px 30px;border:1px dashed #9fb9ee;background:#f7f9fe;text-align:center;border-radius:9px;cursor:pointer}.dropzone.dragover{background:#e6efff;border-color:#245bd7}.dropzone .upload-icon{font-size:36px;color:#7095d8;margin-bottom:9px;line-height:1.5}.dropzone h3{font-size:16px}.dropzone p{font-size:12px;color:#97a3b6;margin:8px 0 20px}.import-alternative{display:flex;justify-content:center;gap:25px;margin-top:20px}.import-alternative button{font-size:12px}.sheet-controls{display:flex;gap:16px;margin-bottom:20px;align-items:end;flex-wrap:wrap}.field{display:grid;gap:6px;font-size:12px;min-width:0}.field>span{color:#77859b}.field em{font-style:normal;color:#d15a5a;margin-left:2px}.sheet-controls .field{min-width:160px}.mapping-table select{font-size:12px;min-width:195px;padding:6px 9px}.mapping-table td{padding:9px 15px}.mapping-table .sample{max-width:270px;overflow:hidden;text-overflow:ellipsis;color:#8895aa}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 22px}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{width:100%;font-size:12px}.field .field-error{font-size:11px;color:#ce5555;min-height:0}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#d58c8c;background:#fffbfb}.form-section{font-size:14px;margin:0 0 16px;padding-left:9px;border-left:3px solid #5c84dc}.form-note{font-size:11px;color:#98a4b7;margin-bottom:20px}.validation-note{border-radius:7px;padding:11px 15px;background:#eff8f4;color:#438c73;margin-bottom:17px;font-size:12px}.validation-note.error{background:#fff3ef;color:#bb7156}.preview-list{max-height:198px;overflow:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:20px}.preview-list td{padding:10px 13px}.preview-list tr.selected{background:#edf3ff}.review-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.review-heading h3{font-size:13px}.review-heading small{font-size:11px;color:#96a2b5}.description-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:23px;margin:5px 0 24px}.description-grid dt{font-size:11px;color:#96a1b2}.description-grid dd{margin:7px 0 0;font-size:13px;color:#3d506e}.detail-text{background:#f7f9fc;border-radius:7px;padding:15px;margin:12px 0;font-size:12px;line-height:2}.detail-text h3{font-size:12px;margin-bottom:5px;color:#8795aa}.help-copy{font-size:13px;line-height:2;color:#63738d}.help-copy h3{margin:16px 0 5px;color:#344a6c}.help-copy ul{padding-left:22px}.help-copy .btn{margin-top:15px}#toast{position:fixed;bottom:28px;left:calc(50% + 108px);transform:translate(-50%,20px);border-radius:8px;padding:11px 22px;background:#243e65;color:#fff;z-index:100;font-size:12px;opacity:0;transition:all .18s;pointer-events:none;max-width:80vw}#toast.show{opacity:1;transform:translate(-50%,0)}@media(min-width:1600px){main{padding:34px 42px}.stat{padding:22px 25px}td{padding:19px 18px}.cockpit-grid{gap:22px}.dark-panel .chart-body{padding:28px 22px}}@media(max-width:1180px){.sidebar{width:184px;padding-left:11px;padding-right:11px}.shell{margin-left:184px}.brand{font-size:16px;padding-left:4px}.brand-mark{width:30px}main{padding:23px}.topbar{padding:0 23px}.banner-actions{gap:7px}.import-banner{padding:20px}.import-banner p{max-width:310px}.stats{gap:12px}.stat{padding:15px}.stat-value{font-size:25px}.cockpit-grid{grid-template-columns:1fr 1.2fr}.cockpit-grid .issue-panel{grid-column:1/-1}.issue-list{grid-template-columns:repeat(3,1fr)}.cockpit-bottom{grid-template-columns:1fr}.donut-layout{gap:15px}.two-col{grid-template-columns:1fr 1fr}.bar-row{grid-template-columns:55px 1fr 50px;gap:8px}#toast{left:calc(50% + 92px)}}@media(max-width:850px){.sidebar{width:67px;padding:20px 8px}.brand{padding:0 8px 29px}.brand>span:last-child,.nav-label,.sidebar-note,.sidebar-bottom{display:none}.brand-mark svg{width:30px}nav a{font-size:0;padding:11px;justify-content:center;gap:0}.nav-icon{font-size:23px}.shell{margin-left:67px}.topbar{height:60px;padding:0 17px}.top-actions{gap:10px}.avatar{display:none}main{padding:20px 17px}.stats{grid-template-columns:repeat(2,1fr)}.page-title{align-items:flex-start}h1{font-size:22px}.import-banner{align-items:flex-start;gap:15px;flex-direction:column}.banner-actions{padding-left:65px}.import-banner p{max-width:none}.two-col,.cockpit-grid,.cockpit-bottom{grid-template-columns:1fr}.cockpit-grid .issue-panel{grid-column:auto}.issue-list{grid-template-columns:1fr}.page-footer{padding:0 17px 18px;flex-direction:column}.donut-layout{justify-content:center}.search{min-width:170px}dialog{width:calc(100vw - 24px)}.modal-body{padding:20px}.form-grid{gap:15px}.description-grid{grid-template-columns:repeat(2,1fr)}#toast{left:calc(50% + 33px)}.cockpit-title h1{font-size:21px;letter-spacing:2px}}@media(max-width:560px){.sidebar{display:none}.shell{margin-left:0}.topbar{padding:0 12px;font-size:10px}.demo-label{font-size:10px}.text-button{font-size:11px}.page-title{flex-direction:column;gap:12px}.stats{gap:10px}.stat-value{font-size:23px}.stat-sub{font-size:10px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.modal-footer{padding:13px 18px}.modal-footer>span{max-width:145px}.banner-actions{padding-left:0}.description-grid{grid-template-columns:1fr 1fr}.cockpit-controls{flex-wrap:wrap}.steps{gap:4px}.step{font-size:10px;gap:4px}#toast{left:50%}}
