:root{--navy:#15384d;--ink:#203848;--muted:#607784;--green:#246f60;--line:#d6e1e5;--canvas:#f3f6f8;--soft:#f0f7f4;--amber:#95631c;--red:#a04436;color-scheme:light;font-family:"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;font-size:14px;color:var(--ink);background:var(--canvas)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--navy);text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.4;font-weight:650;letter-spacing:-.5px}h2{font-size:18px;font-weight:650}h3{font-size:15px}p{line-height:1.7}button,input,select{border-radius:5px}input,select{width:100%;min-width:0;border:1px solid #c8d6de;background:#fff;padding:10px 11px;color:var(--ink);height:42px}input::placeholder{color:#8a9aa5}label{display:grid;gap:6px;font-size:12px;color:var(--muted)}:focus-visible{outline:3px solid #88b7cf;outline-offset:2px}[hidden]{display:none!important}.primary,.quiet{display:inline-flex;justify-content:center;align-items:center;gap:7px;min-height:40px;padding:10px 16px;font-size:13px;font-weight:600;white-space:normal}.primary{color:#fff;background:var(--navy)}.primary:hover:not(:disabled){background:#234d64}.quiet{color:var(--navy);background:#fff;border:1px solid #cfdde4}.quiet:hover:not(:disabled){background:#f0f5f8}.small{font-size:12px;line-height:1.7}.muted{color:var(--muted)}.status{font-size:13px;line-height:1.7;white-space:pre-wrap}.status:empty{display:none}.status.error{color:var(--red)}.status.success{color:var(--green)}.status.loading{color:var(--muted)}.startup{padding:80px 24px;text-align:center;color:var(--muted)}.login-page{min-height:100dvh;display:grid;place-items:center;padding:40px 20px}.login-shell{width:min(100%,460px);background:white;padding:40px;border:1px solid var(--line);border-top:5px solid var(--navy);border-radius:8px}.brand{display:flex;align-items:center;gap:12px;color:var(--navy)}.brand-mark{width:38px;height:38px;display:grid;place-items:center;color:white;background:var(--navy);font-size:22px;font-weight:700;border-radius:7px}.brand b{display:block;font-size:18px}.brand span:not(.brand-mark){display:block;font-size:11px;color:var(--muted);margin-top:4px}.login-shell h1{font-size:26px;margin:34px 0 10px}.login-shell>p{font-size:13px;color:var(--muted)}#login-form{display:grid;gap:20px;margin:26px 0 14px}#login-form input{height:46px}#login-submit{height:45px}#login-status{margin-bottom:16px}.app-shell{min-height:100dvh;display:grid;grid-template-columns:208px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100dvh;background:white;border-right:1px solid var(--line);padding:30px 17px;display:flex;flex-direction:column;gap:40px}.sidebar .brand{padding-left:5px}.sidebar nav{display:grid;gap:7px}.nav{padding:13px 12px;text-align:left;font-size:13px;font-weight:550;background:transparent;color:#5f7583;border-radius:5px;display:block}.nav:hover{background:#f3f7f8}.nav.active{color:var(--navy);background:#e8f0f5;border-left:3px solid var(--navy);padding-left:9px}.sidebar-note{margin-top:auto;padding:16px 8px 0;border-top:1px solid var(--line);font-size:11px;color:var(--muted);line-height:1.7}.sidebar-note b,.sidebar-note span{display:block}.sidebar-note b{color:var(--green);font-size:12px;margin-bottom:5px}main{min-width:0;max-width:1600px;width:100%;margin:auto;padding:0 32px}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.topbar>div{display:flex;gap:14px;align-items:center}.topbar .quiet{min-height:32px;padding:6px 10px;font-size:11px}.page-heading{display:flex;gap:20px;justify-content:space-between;align-items:center;margin:28px 0 22px}.page-heading p{font-size:13px;color:var(--muted);margin-top:7px}.panel{border:1px solid var(--line);border-radius:7px;background:white;margin-bottom:20px}.query-panel{padding:22px}.form-grid{display:grid;gap:17px}.query-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.query-grid label:first-child{grid-column:span 2}.query-action{display:flex;align-items:end}.query-action .primary{width:100%;height:42px}.field-note{font-size:11px;color:var(--muted);margin-top:17px}.global-status{margin-top:16px;padding:12px 15px;border:1px solid #e5c3ba;background:#fff8f5;border-radius:5px}#query-status-message{margin:14px 0}.query-context{display:flex;flex-wrap:wrap;gap:10px 24px;font-size:12px;margin:20px 0;color:var(--muted)}.query-context strong{color:var(--ink)}.notice{padding:13px 16px;border-left:3px solid #d6a14f;background:#fff7e9;color:#855c22;font-size:12px;line-height:1.8;margin-bottom:10px;overflow-wrap:anywhere}.notice.error{border-color:#bf6653;color:var(--red);background:#fff2ed}.notice.info{border-color:#8bb1c0;color:#466d80;background:#edf5f8}.analysis-panel{padding:20px 22px;border-left:4px solid var(--green)}.analysis-panel h2{font-size:16px;margin-bottom:12px}.analysis-panel p{font-size:13px;margin-bottom:8px}.analysis-panel>.small{font-size:11px;color:var(--muted);margin:12px 0 0}.empty-state{padding:40px 30px;background:white;border:1px dashed #c6d7df;text-align:center;border-radius:7px}.empty-state h2{font-size:18px}.empty-state p{font-size:13px;color:var(--muted);margin:10px 0 18px}.customer-result{border:1px solid #c7d9d2;border-top:4px solid var(--green);background:white;border-radius:7px;overflow:hidden;margin:22px 0}.customer-result>header{padding:19px 22px;display:flex;align-items:start;justify-content:space-between;gap:15px;background:var(--soft)}.customer-result h2{font-size:24px;color:#1c5c4f;margin-bottom:5px}.customer-result .record-count{font-size:12px;color:var(--muted);padding-top:6px}.customer-subtitle{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.customer-summary{padding:0 22px 18px;display:flex;align-items:end;flex-wrap:wrap;gap:18px 32px;background:var(--soft)}.customer-summary label{font-size:11px}.customer-summary strong{display:block;font-size:20px;color:#245f50;font-variant-numeric:tabular-nums;line-height:1.5}.customer-summary .weighted strong{font-size:27px}.customer-summary small{font-size:11px;color:var(--muted)}.customer-result .notice{margin:12px 16px}.table-wrap{max-width:100%;overflow:auto;border-top:1px solid var(--line)}table{border-collapse:collapse;width:100%;font-size:12px}th{background:#f7fafb;font-size:11px;color:#718591;font-weight:550;white-space:nowrap;text-align:left;padding:12px 14px}td{padding:14px;border-top:1px solid #e9eef1;vertical-align:top;line-height:1.65}td.number,th.number{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}td.price{color:var(--green);font-weight:650;font-size:14px}.cell-note{display:block;font-size:10px;color:var(--muted);line-height:1.6}.source-cell{max-width:230px;min-width:140px;overflow-wrap:anywhere}.source-cell button{font-size:10px;padding:4px 7px;min-height:26px;margin-top:7px}.period-cell{min-width:110px;white-space:nowrap}.tag{display:inline-block;font-size:10px;background:#eef3f5;border-radius:3px;padding:2px 6px;color:#526e7b;white-space:nowrap}.delta{font-size:11px;color:#647c87;display:block;margin-top:4px}.section-heading{display:flex;align-items:start;justify-content:space-between;gap:15px;padding:22px 22px 16px}.section-heading p{font-size:12px;color:var(--muted);margin-top:6px;max-width:80ch}.upload-line{display:flex;align-items:center;flex-wrap:wrap;gap:15px;padding:0 22px 18px;font-size:12px;color:var(--muted)}.file-button{position:relative;overflow:hidden;display:inline-flex;cursor:pointer}.file-button input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-line>label:last-child{display:flex;align-items:center}.upload-line select{min-width:140px}.mapping-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;padding:0 22px 18px}.mapping-row{display:grid;grid-template-columns:minmax(115px,1fr) minmax(110px,1fr) minmax(110px,1fr);align-items:center;gap:9px;padding-bottom:10px;border-bottom:1px solid #edf1f3}.mapping-row label{font-size:11px}.mapping-row .mapping-name{font-size:12px;color:var(--ink)}.mapping-row select,.mapping-row input{height:37px;font-size:11px;padding:7px 8px}.mapping-row .required{color:#986c2c;margin-left:4px;font-size:10px}.import-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:4px 22px 22px}.manual-panel summary{padding:20px 22px;font-weight:600;cursor:pointer}.manual-grid{padding:0 22px 20px;grid-template-columns:repeat(3,minmax(0,1fr))}.manual-grid .wide{grid-column:span 2}.preview-panel>p,.preview-panel>#preview-errors,.preview-panel>#preview-warnings{margin:0 22px 16px}.preview-panel .table-wrap{max-height:440px;margin-bottom:18px}.preview-panel th{position:sticky;top:0}.preview-panel .import-actions{padding-top:4px}.preview-panel .status{flex:1;min-width:200px}.data-rules{padding:22px}.data-rules h2{font-size:15px;margin-bottom:10px}.data-rules p{font-size:12px;color:var(--muted);max-width:100ch;margin-top:8px}#import-read-status{margin:0 22px 18px}footer{padding:30px 0;color:#8495a0;font-size:11px}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}dialog{border:1px solid var(--line);border-radius:8px;max-width:min(1100px,94vw);width:100%;padding:24px;color:var(--ink)}dialog::backdrop{background:#14304466}#history-content{max-height:70vh;overflow:auto}.history-version{border:1px solid var(--line);border-radius:5px;margin-bottom:15px;padding:14px}.history-version h3{margin-bottom:9px}.history-version dl{display:grid;grid-template-columns:125px 1fr;gap:6px 15px;font-size:12px}.history-version dt{color:var(--muted)}.history-version dd{margin:0;overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1100px){main{padding-inline:24px}.query-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.query-grid label:first-child{grid-column:span 1}.mapping-grid{grid-template-columns:1fr}.manual-grid{grid-template-columns:1fr 1fr}}@media(max-width:780px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:15px 18px;gap:16px;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{padding:0}.sidebar nav{display:flex;overflow:auto;gap:6px}.nav{font-size:12px;white-space:nowrap;padding:10px}.nav.active{border-left:0;border-bottom:2px solid var(--navy);padding-left:10px}.sidebar-note{display:none}main{padding-inline:18px}.topbar{height:54px}.page-heading{margin-block:24px 18px;align-items:start}.page-heading h1{font-size:24px}.page-heading>.quiet{font-size:11px;padding-inline:10px}.query-grid{grid-template-columns:1fr 1fr}.query-panel{padding:17px}.customer-result>header{padding:17px}.customer-summary{padding-inline:17px;gap:12px 22px}.customer-result h2{font-size:22px}.customer-summary strong{font-size:18px}.customer-summary .weighted strong{font-size:24px}.manual-grid{gap:13px}.section-heading{padding:18px}.upload-line,.mapping-grid{padding-inline:18px}.mapping-row{grid-template-columns:105px 1fr 1fr}.import-actions{padding-inline:18px}}@media(max-width:480px){.login-shell{padding:28px}.query-grid,.manual-grid{grid-template-columns:1fr}.manual-grid .wide{grid-column:auto}.page-heading{flex-wrap:wrap;gap:12px}.mapping-row{grid-template-columns:1fr 1fr}.mapping-name{grid-column:1/-1}.topbar{font-size:11px}.topbar>div{gap:8px}.customer-result>header{flex-wrap:wrap;gap:6px}.customer-summary{gap:15px}.customer-summary>div{min-width:40%}.import-actions{align-items:stretch;flex-direction:column}.dialog-heading h2{font-size:17px}.history-version dl{grid-template-columns:90px 1fr}}
