:root{color:#1f2933;font-synthesis:none;--navy:#17324d;--navy-2:#244863;--teal:#0f766e;--teal-soft:#e8f4f2;--blue-soft:#eaf2f8;--amber:#a96e16;--amber-soft:#fff7e6;--red:#b7443e;--red-soft:#fff0ee;--line:#dce3e8;--muted:#667985;background:#f4f6f8;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{grid-template-columns:224px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--navy);color:#ecf2f6;flex-direction:column;min-height:100vh;padding:20px 12px;display:flex}.brand{align-items:center;gap:10px;padding:0 10px;font-size:18px;font-weight:700;display:flex}.brand-mark{width:34px;height:34px;color:var(--navy);background:#d2ece8;border-radius:6px;place-items:center;display:grid}.workspace-label{color:#93a9b7;padding:34px 12px 10px;font-size:11px}nav{gap:4px;display:grid}.nav-item{color:#bdcbd4;text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:11px;width:100%;min-height:42px;padding:0 12px;display:flex}.nav-item:hover{color:#fff;background:#23445e}.nav-item.active{color:#fff;background:#2c5876;font-weight:700}.side-bottom{margin-top:auto}.version-box{background:#1d3a52;border:1px solid #35556c;border-radius:6px;margin:0 4px 14px;padding:12px}.version-box span,.version-box b,.version-box small{display:block}.version-box span{color:#9fb1bd;margin-bottom:6px;font-size:10px}.version-box b{font-size:12px}.version-box small{color:#9fb1bd;margin-top:4px;font-size:10px}.test-admin{border-top:1px solid #36536a;align-items:center;gap:9px;padding:15px 10px 0;display:flex}.test-admin>span{color:#3e2a07;background:#f3c873;border-radius:50%;place-items:center;width:30px;height:30px;font-weight:700;display:grid}.test-admin b,.test-admin small{display:block}.test-admin b{font-size:12px}.test-admin small{color:#9fb1bd;margin-top:2px;font-size:10px}main{width:100%;min-width:0;max-width:1680px;margin:0 auto;padding:28px 36px 48px}header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:24px;display:flex}.eyebrow{color:#6a7d88;margin:0 0 6px;font-size:12px}h1{letter-spacing:0;margin:0;font-size:25px}h2,h3{letter-spacing:0}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.status{color:#176250;white-space:nowrap;background:#e9f5ef;border-radius:5px;align-items:center;gap:6px;padding:7px 10px;font-size:11px;display:inline-flex}.status.local{color:#5a6770;background:#e9edf0}.panel{border:1px solid var(--line);background:#fff;border-radius:7px;box-shadow:0 1px 2px #17324d0a}.workbench,.config-page,.archive-page{gap:16px;display:grid}.stepper{justify-content:center;align-items:center;padding:10px 0 4px;display:flex}.step{color:#81909a;white-space:nowrap;align-items:center;gap:8px;font-size:12px;display:flex}.step>span{background:#fff;border:1px solid #c9d3d9;border-radius:50%;place-items:center;width:26px;height:26px;font-weight:700;display:grid}.step.active{color:#23455b}.step.active>span{color:#fff;background:#356985;border-color:#4e829f}.step.done>span{background:var(--teal);border-color:var(--teal)}.stepper>i{background:#d5dee3;width:clamp(36px,8vw,100px);height:1px;margin:0 12px}.stepper>i.active{background:#7aa79e}.upload-stage{width:100%;max-width:900px;margin:4px auto 0;padding:26px}.upload-intro{align-items:flex-start;gap:12px;display:flex}.section-icon{color:#265f7b;background:var(--blue-soft);border-radius:6px;flex:none;place-items:center;width:38px;height:38px;display:grid}.upload-intro h2,.stage-head h2,.results-toolbar h2,.panel-heading h2,.config-overview h2{margin:0 0 5px;font-size:16px}.upload-intro p,.stage-head span,.results-toolbar span,.panel-heading p,.config-overview p{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.drop-zone{color:#3c718e;cursor:pointer;text-align:center;background:#fafcfd;border:1px dashed #9ab2c1;border-radius:7px;place-content:center;justify-items:center;gap:9px;min-height:230px;margin-top:22px;display:grid}.drop-zone:hover{background:#f6fafc;border-color:#477e9b}.drop-zone.busy{cursor:wait}.drop-zone b{color:#294b60;font-size:14px}.drop-zone span{color:#758791;font-size:11px}.drop-zone input{opacity:0;pointer-events:none;position:absolute}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.upload-actions,.button-row,.stage-actions{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.upload-actions{margin-top:15px}.stage-actions{justify-content:flex-end}.plain-tip{color:#4d626e;background:#f2f6f8;border-left:3px solid #5d8ba4;align-items:flex-start;gap:8px;margin-top:18px;padding:11px 12px;font-size:12px;line-height:1.6;display:flex}.plain-tip svg{flex:none;margin-top:1px}.primary-button,.secondary-button,.text-button{border-radius:5px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:0 13px;font-size:12px;font-weight:700;display:inline-flex}.primary-button{border:1px solid var(--teal);color:#fff;background:var(--teal)}.primary-button:hover{background:#0b635d}.primary-button.compact{width:auto;margin:0}.secondary-button{color:#36576b;background:#fff;border:1px solid #bdcbd3}.secondary-button:hover{background:#f4f7f8}.text-button{color:#376d88;background:0 0;border:0;padding:0 5px}.stage-head,.results-toolbar,.config-overview,.panel-heading,.archive-actions{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.stage-head,.results-toolbar,.config-overview{padding:18px 20px}.stage-kicker{color:#507588;text-transform:uppercase;margin:0 0 4px;font-size:10px;font-weight:700}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.metric{min-height:112px;padding:17px}.metric span,.metric b,.metric small{display:block}.metric span{color:#667985;font-size:11px}.metric b{color:#263f50;margin:7px 0 5px;font-size:25px}.metric small{color:#81909a;font-size:10px;line-height:1.4}.metric.good{border-top:3px solid #37806e}.metric.warn{border-top:3px solid #c18a34}.preflight-panel,.config-editor,.archive-toolbar,.archive-results,.comparison{padding:20px}.panel-heading svg{color:#467791}.issue-list{border:1px solid #efd1cd;border-radius:6px;max-height:360px;margin-top:15px;overflow:hidden auto}.issue-row{border-top:1px solid #f0dddd;grid-template-columns:90px 260px minmax(0,1fr);align-items:start;gap:12px;padding:10px 12px;font-size:11px;display:grid}.issue-row:first-child{border-top:0}.issue-row span{color:#8a5a55}.issue-row b{color:#532e2b}.issue-row p{color:#905149;margin:0;line-height:1.5}.issue-more{color:#74443f;background:var(--red-soft);padding:10px 12px;font-size:11px}.all-clear{color:#176250;background:#edf7f3;align-items:center;gap:8px;margin-top:15px;padding:12px;font-size:12px;display:flex}.batch-overrides{overflow:hidden}.batch-overrides summary{cursor:pointer;justify-content:space-between;align-items:center;gap:14px;padding:15px 20px;list-style:none;display:flex}.batch-overrides summary::-webkit-details-marker{display:none}.batch-overrides summary>span:first-child{grid-template-columns:20px auto;align-items:center;column-gap:8px;display:grid}.batch-overrides summary b{font-size:13px}.batch-overrides summary small{color:#71828c;grid-column:2;margin-top:2px;font-size:10px}.version-tag,.changed-tag,.count-tag{white-space:nowrap;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:700}.version-tag,.count-tag{color:#426177;background:#edf2f5}.changed-tag{color:#825817;background:#fff0cf}.override-content{border-top:1px solid var(--line);padding:18px 20px}.subsection-title{justify-content:space-between;align-items:baseline;gap:12px;margin:8px 0 10px;display:flex}.subsection-title b{font-size:12px}.subsection-title span{color:#7a8a93;font-size:10px}.input-grid{gap:12px;display:grid}.input-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.input-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.route-grid{gap:8px;display:grid}.route-row{background:#fbfcfd;border:1px solid #e3e9ed;border-radius:5px;grid-template-columns:130px repeat(3,minmax(0,1fr));align-items:end;gap:10px;padding:10px 12px;display:grid}.route-row>b{align-self:center;font-size:12px}.field{gap:6px;min-width:0;margin:0;display:grid}.field>span{color:#5c707c;font-size:10px}.field input,.filter-bar input,.filter-bar select,.archive-filters input,.rate-cell input,select{color:#253b48;background:#fff;border:1px solid #c9d4da;border-radius:5px;outline:none;width:100%;min-height:36px;padding:0 9px}.field input:focus,.filter-bar input:focus,select:focus,.rate-cell input:focus{border-color:#54859e;box-shadow:0 0 0 2px #54859e1f}.results-toolbar{align-items:center}.result-layout{grid-template-columns:minmax(0,1.7fr) minmax(310px,.72fr);align-items:start;gap:14px;display:grid}.result-list-panel{min-width:0;overflow:hidden}.filter-bar{border-bottom:1px solid var(--line);grid-template-columns:minmax(220px,1fr) 150px 130px;gap:9px;padding:14px;display:grid}.search-box{margin:0;position:relative}.search-box svg{color:#778a94;position:absolute;top:10px;left:10px}.search-box input{padding-left:32px}.result-table{max-height:660px;overflow:auto}.result-table-head,.result-table-row{text-align:left;grid-template-columns:1.25fr 1.05fr 1.45fr 1fr 78px;align-items:center;gap:10px;min-width:820px;padding:10px 13px;display:grid}.result-table-head{z-index:2;color:#5d727e;background:#f0f4f6;font-size:11px;font-weight:700;position:sticky;top:0}.result-table-row{color:#344d5c;background:#fff;border:0;border-top:1px solid #e9eef1;width:100%;font-size:11px}.result-table-row:hover{background:#f8fafb}.result-table-row.selected{background:#edf5f8;box-shadow:inset 3px 0 #477e9b}.result-table-row b,.result-table-row small{display:block}.result-table-row b{color:#263f50;font-size:11px}.result-table-row small{color:#7a8d98;margin-top:3px;line-height:1.35}.price-cell{color:#0f615d;font-size:13px;font-weight:700}.state-pill{white-space:nowrap;border-radius:4px;justify-self:start;padding:4px 7px;font-size:10px}.state-pill.calculated{color:#176250;background:#e7f4ef}.state-pill.error{color:#9b3f39;background:#fce9e7}.result-detail{min-height:360px;padding:18px;position:sticky;top:14px}.result-detail.empty{color:#778a95;text-align:center;place-content:center;justify-items:center;gap:8px;display:grid}.result-detail.empty b{color:#3f5969}.result-detail.empty span{font-size:11px}.detail-head{justify-content:space-between;gap:12px;display:flex}.detail-head span,.detail-head p{color:#71848f;font-size:10px}.detail-head h2{margin:3px 0;font-size:16px}.detail-head p{margin:0}.state-icon.calculated{color:#23755f}.state-icon.error{color:var(--red)}.hero-price{color:#173f4e;background:var(--teal-soft);margin:15px -18px 8px;padding:18px}.hero-price span,.hero-price b,.hero-price small{display:block}.hero-price span{font-size:10px}.hero-price b{margin:4px 0;font-size:28px}.hero-price small{color:#55747d;font-size:10px}.detail-issues{color:#8c423b;background:var(--red-soft);align-items:flex-start;gap:9px;margin:15px 0;padding:12px;display:flex}.detail-issues svg{flex:none}.detail-issues b{font-size:12px}.detail-issues p{margin:4px 0 0;font-size:10px;line-height:1.6}.detail-section{border-top:1px solid #e5ebee;padding:12px 0}.detail-section h3{color:#4e6674;margin:0 0 6px;font-size:11px}.detail-line{justify-content:space-between;align-items:center;gap:10px;padding:5px 0;font-size:10px;display:flex}.detail-line span{color:#687b86}.detail-line b{color:#314957}.detail-line.strong{border-top:1px dashed #d6dfe4;margin-top:4px;padding-top:8px;font-size:11px}.formula-note{background:#f7f9fa;border:1px solid #dce5ea;border-radius:5px;padding:10px}.formula-note b,.formula-note span,.formula-note small{display:block}.formula-note b{font-size:10px}.formula-note span{color:#4f6571;margin:4px 0;font-size:10px;line-height:1.5}.formula-note small{color:#87959d;font-size:9px}.specified-profit{color:#604714;background:var(--amber-soft);justify-content:space-between;align-items:center;margin-top:10px;padding:10px;font-size:11px;display:flex}.inline-message,.global-notice{color:#245e4e;background:#edf7f3;border:1px solid #bed8cf;border-radius:5px;padding:10px 13px;font-size:11px;line-height:1.5}.global-notice{margin-top:16px}.inline-message.error{color:#8b413a;background:var(--red-soft);border-color:#ebc7c3}.config-overview{align-items:center}.version-chips{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.version-chips span{color:#5d717d;background:#eef2f4;border-radius:4px;padding:7px 9px;font-size:10px}.version-chips b{color:#314b5b;margin-left:4px}.tab-bar{border-bottom:1px solid #ccd6dc;gap:4px;display:flex}.tab-bar button{color:#667985;background:0 0;border:0;border-bottom:2px solid #0000;min-height:38px;padding:0 14px;font-size:12px}.tab-bar button.active{color:#244f67;border-color:#3d7592;font-weight:700}.config-editor{gap:14px;display:grid}.config-routes{gap:8px;display:grid}.config-route{border:1px solid #e2e8ec;border-radius:5px;grid-template-columns:170px repeat(3,minmax(0,1fr));align-items:end;gap:12px;padding:12px;display:grid}.config-route>div{align-self:center}.config-route>div b,.config-route>div span{display:block}.config-route>div b{font-size:12px}.config-route>div span{color:#81909a;margin-top:3px;font-size:9px}.rate-editor{min-width:0}.rate-table{border:1px solid #e0e7eb;border-radius:5px;max-height:620px;overflow:auto}.rate-head,.rate-row{grid-template-columns:190px 160px repeat(5,100px);align-items:center;gap:8px;min-width:900px;padding:8px 10px;display:grid}.rate-head{z-index:2;color:#5c707c;background:#eff3f5;font-size:10px;font-weight:700;position:sticky;top:0}.rate-row{border-top:1px solid #e8edf0;font-size:10px}.rate-row>span b,.rate-row>span small{display:block}.rate-row>span small{color:#84939b;margin-top:2px}.rate-cell{margin:0;position:relative}.rate-cell input{min-height:31px;padding-right:20px;font-size:10px}.rate-cell i{color:#768791;font-size:9px;font-style:normal;position:absolute;top:9px;right:7px}.publish-bar{justify-content:space-between;align-items:end;gap:15px;padding:14px 16px;display:flex}.publish-meta{flex:1;grid-template-columns:160px minmax(260px,520px);gap:12px;display:grid}.archive-page{gap:14px}.archive-filters{grid-template-columns:1.2fr 1.1fr 1fr 1fr auto;align-items:end;gap:10px;margin-top:14px;display:grid}.archive-actions{align-items:center}.archive-actions b,.archive-actions span{display:block}.archive-actions b{font-size:13px}.archive-actions span{color:#758791;margin-top:3px;font-size:10px}.archive-table{border:1px solid #e0e7eb;border-radius:5px;max-height:620px;margin-top:14px;overflow:auto}.archive-head,.archive-row{grid-template-columns:50px 160px 1.1fr 1.1fr .75fr .9fr 78px;align-items:center;gap:8px;min-width:850px;padding:9px 11px;font-size:10px;display:grid}.archive-head{color:#5c707c;background:#eff3f5;font-weight:700;position:sticky;top:0}.archive-row{border-top:1px solid #e8edf0}.archive-row.selected{background:#eef5f8}.archive-row input{width:15px;height:15px;accent-color:var(--teal)}.empty-state{color:#7b8c95;text-align:center;padding:30px;font-size:11px}.comparison-table{border:1px solid #e0e7eb;border-radius:5px;margin-top:14px;overflow:auto}.comparison-head,.comparison-row{grid-template-columns:1.3fr repeat(4,1fr);gap:8px;min-width:660px;padding:9px 11px;font-size:10px;display:grid}.comparison-head{color:#5c707c;background:#eff3f5;font-weight:700}.comparison-row{border-top:1px solid #e8edf0}.comparison-row b{color:#17645b}@media (width<=1180px){main{padding:24px}.metric-grid{grid-template-columns:repeat(2,1fr)}.result-layout{grid-template-columns:1fr}.result-detail{position:static}.input-grid.four,.archive-filters{grid-template-columns:repeat(2,1fr)}.archive-filters .primary-button{width:100%}}@media (width<=760px){.app-shell{display:block}.sidebar{min-height:auto;padding:12px}.workspace-label,.side-bottom{display:none}.sidebar nav{margin-top:12px;display:flex;overflow-x:auto}.nav-item{flex:none;width:auto}main{padding:18px 12px 36px}header{display:block}.header-actions{justify-content:flex-start;margin-top:12px}.step b{display:none}.stepper>i{width:44px}.upload-stage{padding:18px}.drop-zone{min-height:190px}.metric-grid{grid-template-columns:1fr 1fr;gap:8px}.issue-row{grid-template-columns:70px 1fr}.issue-row p{grid-column:1/-1}.route-row,.config-route{grid-template-columns:1fr 1fr}.route-row>b,.config-route>div{grid-column:1/-1}.input-grid.three,.input-grid.four{grid-template-columns:1fr 1fr}.results-toolbar,.config-overview,.publish-bar{display:block}.button-row,.version-chips{justify-content:flex-start;margin-top:12px}.filter-bar{grid-template-columns:1fr 1fr}.search-box{grid-column:1/-1}.publish-meta{grid-template-columns:1fr;margin-bottom:12px}.archive-filters{grid-template-columns:1fr}}
