:root{--ink:#153757;--ink-2:#294b6d;--muted:#6b7f93;--paper:#f3f6fa;--card:#ffffff;--line:#d8e3ef;--teal:#0b5cad;--teal-light:#eaf3ff;--lime:#dcecff;--amber:#b97625;--amber-bg:#fff3de;--red:#ad3e32;--red-bg:#fff0ed;--shadow:0 5px 18px rgba(22,66,110,.07)}*{box-sizing:border-box}body,html{background:var(--paper)}body{margin:0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button{color:inherit}svg{width:20px;height:20px;stroke-width:1.8}.app-shell{min-height:100vh}.topbar{height:76px;display:flex;align-items:center;gap:14px;padding:0 4vw;background:rgba(255,253,249,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;backdrop-filter:blur(16px)}.brand-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--ink);color:var(--lime)}.brand-mark svg{width:23px;height:23px}.brand-copy{display:flex;flex-direction:column;min-width:210px}.brand-copy strong{font-size:16px;letter-spacing:.02em}.brand-copy span{font-size:11px;color:var(--muted);margin-top:2px}.nav{display:flex;gap:4px;margin-left:auto}.nav button{border:0;background:transparent;display:flex;align-items:center;gap:7px;padding:10px 13px;border-radius:9px;font-size:13px;cursor:pointer}.nav button svg{width:17px}.nav button.active,.nav button:hover{background:var(--teal-light);color:var(--teal)}.confirm-button,.ghost-button,.new-order,.primary-button,.secondary-button{border:0;display:inline-flex;justify-content:center;align-items:center;gap:8px;cursor:pointer;text-decoration:none;border-radius:10px;font-weight:700;transition:transform .15s,opacity .15s,background .15s}.new-order{padding:11px 15px;margin-left:8px;color:white;background:var(--teal)}.new-order svg{width:16px}.primary-button{color:white;background:var(--teal);padding:13px 18px}.secondary-button{color:var(--ink);background:var(--lime);padding:11px 15px}.confirm-button{color:white;background:var(--teal);padding:11px 15px}.ghost-button{border:1px solid var(--line);background:white;padding:10px 14px}.confirm-button:hover,.new-order:hover,.primary-button:hover,.secondary-button:hover{transform:translateY(-1px)}.confirm-button:disabled,.primary-button:disabled,button:disabled{opacity:.45;cursor:not-allowed;transform:none}.full{width:100%}.icon-button{border:0;background:transparent;width:36px;height:36px;border-radius:8px;display:grid;place-items:center;cursor:pointer}.icon-button:hover{background:#eeece6}.icon-button.danger{color:var(--red)}.text-button{border:0;background:transparent;color:var(--teal);font-weight:700;padding:6px 0;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.text-button svg{width:17px}.mobile-only{display:none}main{width:min(1420px,94vw);margin:0 auto;padding:42px 0 70px}.hero-strip{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:28px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.16em;font-weight:800;color:var(--teal)}h1,h2,h3,p{margin-top:0}h1{margin:8px 0 0;font-size:clamp(28px,4vw,44px);line-height:1.15;letter-spacing:-.04em;font-weight:760}h2{font-size:20px;margin-bottom:5px;letter-spacing:-.02em}.assurance{display:flex;align-items:center;gap:10px;padding:13px 16px;background:var(--ink);color:white;border-radius:12px;box-shadow:var(--shadow)}.assurance>svg{color:var(--lime);width:25px;height:25px}.assurance div{display:flex;flex-direction:column}.assurance strong{font-size:13px}.assurance span{font-size:11px;opacity:.72;margin-top:2px}.progress-card{background:var(--card);border-radius:15px;padding:18px 20px 8px;box-shadow:var(--shadow);margin-bottom:22px}.progress-top{display:flex;justify-content:space-between;font-size:12px}.progress-top strong{color:var(--ink)}.progress-actions{display:flex;align-items:center;gap:14px}.clear-recognition{border:0;background:transparent;color:var(--red);display:inline-flex;align-items:center;gap:5px;padding:2px 0;font-size:11px;font-weight:700;cursor:pointer}.clear-recognition svg{width:14px;height:14px}.clear-recognition:disabled{opacity:.4;cursor:not-allowed}.progress-track{height:4px;background:#e8e5de;border-radius:99px;margin:11px 0 15px;overflow:hidden}.progress-track span{display:block;height:100%;background:var(--teal);border-radius:inherit;transition:width .4s ease}.stage-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.stage-tabs button{border:0;background:transparent;display:flex;align-items:center;gap:11px;padding:12px 14px 14px;text-align:left;border-radius:10px 10px 0 0;cursor:pointer;position:relative}.stage-tabs button.active{background:#f0eee8}.stage-tabs button.active:after{content:"";position:absolute;left:14px;right:14px;bottom:0;background:var(--teal);border-radius:3px 3px 0 0}.stage-tabs .step{width:30px;height:30px;flex:0 0 30px;display:grid;place-items:center;background:#e8e5dd;color:var(--muted);border-radius:50%;font-size:11px;font-weight:800}.stage-tabs .step.done{background:var(--teal);color:white}.stage-tabs .step svg{width:15px}.stage-tabs button>span:nth-child(2){display:flex;flex-direction:column}.stage-tabs strong{font-size:13px}.stage-tabs small{color:var(--muted);font-size:11px;margin-top:2px}.stage-tabs button>svg{margin-left:auto;width:16px;color:#a6afac}.workspace-grid{display:grid;grid-template-columns:minmax(310px,.72fr) minmax(520px,1.28fr);gap:22px;align-items:start}.panel{background:var(--card);border-radius:15px}.upload-panel{padding:22px;position:sticky;top:98px}.panel-heading{display:flex;gap:13px;align-items:flex-start;margin-bottom:18px}.heading-icon{width:40px;height:40px;flex:0 0 40px;border-radius:10px;display:grid;place-items:center;background:var(--teal-light);color:var(--teal)}.panel-heading span{font-size:10px;letter-spacing:.12em;font-weight:800;color:var(--teal);text-transform:uppercase}.panel-heading h2{margin:3px 0}.panel-heading p{color:var(--muted);font-size:12px;margin-bottom:0}.upload-drop{width:100%;min-height:180px;border:1.5px dashed #b9c6c2;border-radius:13px;background:#f7f5f0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:var(--ink)}.upload-drop:hover{border-color:var(--teal);background:#f0f6f3}.upload-drop input{display:none}.upload-circle{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--teal-light);color:var(--teal);margin-bottom:12px}.upload-drop strong{font-size:14px}.upload-drop small{color:var(--muted);font-size:11px;margin-top:5px}.image-upload-builder{display:flex;flex-direction:column;gap:12px}.selected-image-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.selected-image{position:relative;min-width:0;border:1px solid var(--line);border-radius:7px;overflow:hidden;background:white}.selected-image img{width:100%;height:105px;display:block;object-fit:contain;background:#eef3f8}.selected-image>button{position:absolute;top:5px;right:5px;width:26px;height:26px;display:grid;place-items:center;border:0;border-radius:50%;color:white;background:rgba(176,45,35,.9);cursor:pointer}.selected-image>button svg{width:15px;height:15px}.selected-image>span{display:block;padding:6px 7px;overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.selection-cost{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid #b9d6f2;border-radius:7px;color:#294b6d;background:#f1f7fe;font-size:11px}.selection-cost .primary-button{width:100%;min-height:42px}.file-list{margin:13px 0;display:flex;flex-direction:column;gap:8px}.file-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #ebe8e1;border-radius:10px;background:white}.file-icon{width:32px;height:32px;border-radius:7px;display:grid;place-items:center;background:#f0eee8;color:var(--teal)}.file-icon svg{width:16px}.file-item>div:nth-child(2){min-width:0;display:flex;flex-direction:column;flex:1}.file-item strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-item span{font-size:10px;color:var(--muted);margin-top:2px}.file-status{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#eee}.file-status.recognized{background:var(--teal-light);color:var(--teal)}.file-status.failed{background:var(--red-bg);color:var(--red)}.file-status svg{width:13px}.uploaded-file-actions{margin-left:auto;display:flex;align-items:center;gap:3px}.uploaded-file-actions>a{padding:6px;color:#0b5cad;font-size:11px;font-weight:700;text-decoration:none}.uploaded-file-actions .icon-button{width:30px;height:30px}.uploaded-file-actions .icon-button svg{width:16px;height:16px}.cost-note{display:flex;gap:8px;color:var(--muted);font-size:11px;line-height:1.5;margin-top:13px}.cost-note svg{flex:0 0 17px;width:17px;color:var(--teal)}.mac-node-card{margin-top:13px;padding:12px;border:1px solid #bfd0ca;background:#eef5f2;border-radius:10px}.mac-node-card>div{display:flex;align-items:center;gap:8px}.mac-node-card strong{font-size:11px}.mac-node-card p{margin:7px 0;font-size:10px;line-height:1.55;color:var(--muted)}.mac-node-card code{color:var(--teal);font-weight:700}.mac-node-card>span{font-size:9px;color:var(--teal);font-weight:750}.node-dot{width:8px;height:8px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px rgba(26,109,96,.12)}.review-panel{padding:22px;min-height:500px}.review-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.review-heading h2{margin:4px 0 0}.review-count{font-size:26px;font-weight:800;text-align:center;color:var(--amber);line-height:1}.review-count span{display:block;color:var(--muted);font-size:9px;margin-top:4px;font-weight:500}.bulk-confirm-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:12px;border:1px solid #b9d6f2;border-radius:7px;background:#f1f7fe}.bulk-confirm-bar>div{display:flex;flex-direction:column;gap:3px}.bulk-confirm-bar strong{color:#153757;font-size:12px}.bulk-confirm-bar span{color:#6b7f93;font-size:10px}.bulk-confirm-bar .primary-button{flex:0 0 auto;padding:10px 12px}.rows-list{display:flex;flex-direction:column;gap:12px}.review-row{border:1px solid var(--line);border-left:4px solid #d2cfc7;border-radius:12px;padding:15px;background:white}.review-row.risky{border-left-color:var(--amber);background:#fffdf8}.review-row.confirmed{border-left-color:var(--teal);background:#fbfdfc}.row-top{display:flex;align-items:center;gap:9px;margin-bottom:13px}.status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:99px;padding:5px 8px;font-size:10px;font-weight:800;background:#efede7}.status-pill svg{width:13px;height:13px}.status-pill.needs_review{color:var(--amber);background:var(--amber-bg)}.status-pill.confirmed{color:var(--teal);background:var(--teal-light)}.confidence{font-size:10px;color:var(--muted)}.row-top .icon-button{width:29px;height:29px}.row-top .icon-button svg{width:16px}.source-image-link{margin-left:auto;display:inline-flex;align-items:center;gap:5px;color:#0b5cad;font-size:11px;font-weight:700;text-decoration:none;white-space:nowrap}.source-image-link svg{width:15px;height:15px}.row-fields{display:grid;grid-template-columns:1fr 90px 70px;gap:9px}label{display:flex;flex-direction:column;gap:5px}label>span{font-size:10px;font-weight:700;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #d8d5cd;background:white;border-radius:8px;padding:10px 11px;outline:none;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(26,109,96,.09)}textarea{resize:vertical;line-height:1.45}.material-match{display:flex;gap:10px;align-items:flex-end;margin-top:10px}.material-match label{flex:1}.new-material-box{margin-top:11px;padding:13px;border:1px solid #bfcec9;background:#f0f6f3;border-radius:10px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.box-title{grid-column:1/-1;display:flex;align-items:center;gap:9px}.box-title svg{color:var(--teal)}.box-title div{display:flex;flex-direction:column}.box-title strong{font-size:12px}.box-title span{font-size:10px;color:var(--muted)}.approval{grid-column:1/-1;flex-direction:row;align-items:center}.approval input{width:17px;height:17px;accent-color:var(--teal)}.approval span{color:var(--ink);font-weight:600}.new-material-box .secondary-button{grid-column:1/-1}.risk-note{display:flex;gap:7px;align-items:center;margin-top:10px;padding:8px 10px;color:#875619;background:var(--amber-bg);border-radius:8px;font-size:10px}.risk-note svg{width:15px;flex:0 0 15px}.row-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #eeece6;margin-top:13px;padding-top:12px}.row-actions svg{width:16px}.empty-rows{min-height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-illustration{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:var(--teal-light);color:var(--teal);margin-bottom:14px}.empty-illustration svg{width:30px;height:30px}.empty-rows h3{margin-bottom:6px}.empty-rows>p{max-width:360px;color:var(--muted);font-size:12px;line-height:1.6}.manual-form{width:100%;display:grid;grid-template-columns:1fr 160px auto auto;gap:9px;align-items:end;background:#f3f1ec;border-radius:10px;padding:12px;margin-top:12px;text-align:left}.quantity-input{display:grid;grid-template-columns:1fr 55px}.quantity-input label{grid-column:1/-1}.quantity-input .unit{border-radius:0 8px 8px 0;border-left:0}.quantity-input input:first-of-type{border-radius:8px 0 0 8px}.add-manual{margin-top:13px}.export-gate{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-radius:13px;margin-bottom:16px}.export-gate.blocked{background:var(--amber-bg);border:1px solid #e6c799}.export-gate.ready{background:var(--teal-light);border:1px solid #a9c9bf}.export-gate>div{display:flex;align-items:center;gap:11px}.export-gate>div>svg{width:26px;height:26px;color:var(--teal)}.export-gate.blocked>div>svg{color:var(--amber)}.export-gate span{display:flex;flex-direction:column}.export-gate small{color:var(--muted);margin-top:3px}.summary-table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:13px}.summary-mobile-actions{display:none}table{width:100%;border-collapse:collapse;min-width:700px}th{padding:14px 16px;text-align:left;background:var(--ink);color:white;font-size:12px}td{padding:15px 16px;border-bottom:1px solid #ebe8e1;font-size:13px}td:first-child{font-weight:700}tr:last-child td{border-bottom:0}.empty-cell{text-align:center;padding:48px!important;color:var(--muted)}.materials-grid{display:grid;grid-template-columns:minmax(300px,.65fr) minmax(500px,1.35fr);gap:22px;align-items:start}.material-create{padding:22px;position:sticky;top:98px}.material-create form{display:flex;flex-direction:column;gap:12px}.material-list{padding:22px}.list-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}.list-title h2{margin:3px 0 0}.list-title input{max-width:270px}.material-rows{display:flex;flex-direction:column}.material-row{display:flex;align-items:center;gap:13px;padding:14px 5px;border-bottom:1px solid #ebe8e1}.material-row .material-delete{margin-left:auto;flex:0 0 34px;color:var(--red)}.material-row .material-delete svg{width:17px;height:17px}.material-index{color:#a7afac;font:11px ui-monospace,monospace}.material-row>div{display:flex;flex:1;flex-direction:column}.material-row strong{font-size:13px}.material-row small,.material-row span{color:var(--muted);font-size:10px;margin-top:3px}.material-row>svg{color:var(--teal);width:18px}.toast{position:fixed;z-index:100;top:88px;left:50%;transform:translateX(-50%);width:min(520px,90vw);padding:13px 15px;display:flex;align-items:center;gap:9px;border-radius:11px;box-shadow:0 16px 50px rgba(0,0,0,.16);color:white;font-size:12px}.toast.ok{background:var(--teal)}.toast.error{background:var(--red)}.toast span,.toast span svg{width:18px;height:18px}.toast button{border:0;background:transparent;color:white;margin-left:auto;display:grid;place-items:center;cursor:pointer}.toast button svg{width:16px}.loading-screen{height:100vh;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}footer{width:min(1420px,94vw);margin:0 auto;border-top:1px solid var(--line);padding:18px 0 30px;display:flex;justify-content:space-between;color:var(--muted);font-size:10px}@media (max-width:900px){.mobile-only{display:grid;margin-left:auto}.brand-copy{min-width:0}.brand-copy span{display:none}.topbar{padding:0 18px;height:68px}.nav{display:none;position:absolute;top:68px;left:12px;right:12px;background:white;border:1px solid var(--line);padding:8px;border-radius:12px;box-shadow:var(--shadow)}.nav.open{display:flex;flex-direction:column}.nav button{width:100%}.new-order{display:none}main{width:min(94vw,720px);padding-top:28px}.materials-grid,.workspace-grid{grid-template-columns:1fr}.material-create,.upload-panel{position:static}.assurance{display:none}.hero-strip{margin-bottom:18px}.stage-tabs button>svg{display:none}}@media (max-width:620px){main{width:100%;padding:22px 14px 58px}h1{font-size:29px}.hero-strip{padding:0 3px}.progress-card{padding:15px 10px 5px;border-radius:12px}.stage-tabs{gap:3px}.stage-tabs button{padding:10px 5px;justify-content:center;flex-direction:column;gap:5px;text-align:center}.stage-tabs .step{width:26px;height:26px;flex-basis:26px}.stage-tabs small{display:none}.stage-tabs strong{font-size:11px}.workspace-grid{gap:14px}.panel,.summary-table-wrap{border-radius:12px}.material-create,.material-list,.review-panel,.upload-panel{padding:16px}.upload-drop{min-height:145px}.row-fields{grid-template-columns:1fr 1fr}.row-fields .name-field{grid-column:1/-1}.material-match{flex-direction:column;align-items:stretch}.new-material-box{grid-template-columns:1fr}.new-material-box>*{grid-column:1!important}.row-actions{display:grid}.manual-form,.row-actions{grid-template-columns:1fr}.manual-form>*{width:100%}.export-gate,.list-title{align-items:stretch;flex-direction:column}.list-title input{max-width:none}footer{width:calc(100% - 28px);flex-direction:column;gap:5px}}body,html{background:var(--paper)}.topbar{height:68px;padding:0 max(24px,4vw);color:white;background:#0b5cad;border-bottom:0;backdrop-filter:none}.brand-mark{width:38px;height:38px;color:white;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.2);border-radius:8px}.brand-copy strong{font-size:17px;letter-spacing:.01em}.brand-copy span{color:rgba(255,255,255,.72)}.nav button{color:rgba(255,255,255,.86);border-radius:6px}.nav button.active,.nav button:hover{color:white;background:rgba(255,255,255,.15)}.new-order{color:#0b5cad;background:white;border-radius:6px}.topbar .icon-button{color:white}.topbar .icon-button:hover{background:rgba(255,255,255,.12)}main{width:min(1280px,94vw);padding:28px 0 58px}.hero-strip{margin-bottom:18px;align-items:center}h1{margin:0;color:#123a63;font-size:clamp(24px,3vw,32px);letter-spacing:-.02em}h2{color:#153757;letter-spacing:-.01em}.eyebrow{color:#0b5cad}.progress-card{margin-bottom:18px;padding:16px 18px 6px;background:white;border:1px solid var(--line);border-radius:8px;box-shadow:none}.progress-top{color:var(--muted);font-size:13px}.progress-top strong{color:#153757}.progress-track{height:3px;margin:10px 0 14px;background:#e6edf5}.progress-track span{background:#0b5cad}.stage-tabs button{border-radius:6px 6px 0 0}.stage-tabs button.active{background:#edf5ff}.stage-tabs button.active:after{height:3px;background:#0b5cad}.stage-tabs .step{color:#60758a;background:#edf1f5}.stage-tabs .step.done,.stage-tabs button.active .step{color:white;background:#0b5cad}.workspace-grid{grid-template-columns:minmax(320px,.82fr) minmax(520px,1.18fr);gap:18px}.panel{background:white;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.material-create,.material-list,.review-panel,.upload-panel{padding:20px}.material-create,.upload-panel{top:88px}.panel-heading{margin-bottom:15px}.heading-icon{color:#0b5cad;background:#eaf3ff;border-radius:7px}.panel-heading span{color:#0b5cad}.panel-heading h2{margin:3px 0 0}.upload-drop{min-height:155px;color:#153757;background:#f7fbff;border:1.5px dashed #77a8d8;border-radius:8px}.upload-drop:hover{border-color:#0b5cad;background:#eff6ff}.upload-circle{width:44px;height:44px;margin-bottom:10px;color:#0b5cad;background:#e2efff}.upload-drop strong{font-size:15px}.upload-drop small{color:#6b7f93;font-size:12px}.file-item{border-color:#e0e8f1;border-radius:7px}.file-icon,.file-status.recognized{color:#0b5cad;background:#eaf3ff}.confirm-button,.ghost-button,.new-order,.primary-button,.secondary-button{border-radius:6px}.confirm-button,.primary-button{color:white;background:#0b5cad}.secondary-button{color:#0b5cad;background:#eaf3ff;border:1px solid #b9d6f2}.ghost-button{color:#294b6d;border-color:#cfdce9}.text-button{color:#0b5cad}.confirm-button:hover,.new-order:hover,.primary-button:hover{background-color:#084f96}.review-panel{min-height:440px}.review-heading{min-height:38px;padding-bottom:12px;border-bottom:1px solid #e4ebf3}.review-heading h2{margin:0}.review-count{color:#0b5cad}.empty-rows{min-height:320px}.empty-illustration{color:#0b5cad;background:#eaf3ff}.manual-form{background:#f4f7fb;border-radius:7px}.review-row{border-color:#d8e3ef;border-radius:8px}.review-row.confirmed{border-left-color:#0b5cad;background:#f9fcff}.status-pill.confirmed{color:#0b5cad;background:#eaf3ff}.new-material-box{border-color:#bdd5ed;background:#f1f7fe;border-radius:7px}input,select,textarea{border-color:#cfdbe7;border-radius:6px}input:focus,select:focus,textarea:focus{border-color:#0b5cad;box-shadow:0 0 0 3px rgba(11,92,173,.1)}.approval input{accent-color:#0b5cad}.export-gate{border-radius:8px}.export-gate.ready{background:#eaf3ff;border-color:#b9d6f2}.summary-table-wrap{border-radius:8px;box-shadow:var(--shadow)}th{background:#0b5cad}.material-row>svg{color:#0b5cad}.toast.ok{background:#0b5cad}@media (max-width:900px){.nav{background:white;border-color:var(--line);border-radius:8px}.nav button{color:#294b6d}.nav button.active,.nav button:hover{color:#0b5cad;background:#eaf3ff}.materials-grid,.workspace-grid{grid-template-columns:1fr}}@media (max-width:620px){.topbar{height:62px;padding:0 14px}.brand-mark{width:34px;height:34px}.brand-mark svg{width:20px;height:20px}.brand-copy strong{font-size:17px}.nav{top:62px}main{width:100%;padding:14px 12px 38px}main.summary-main{height:calc(100dvh - 62px);padding:10px 12px max(10px,env(safe-area-inset-bottom));overflow:hidden}.hero-strip{display:none}.progress-card{margin-bottom:12px;padding:13px 10px 4px;border-radius:7px}.progress-top{padding:0 2px;font-size:12px}.progress-actions{gap:8px}.clear-recognition{font-size:0;width:28px;height:28px;justify-content:center;border-radius:6px;background:var(--red-bg)}.clear-recognition svg{width:16px;height:16px}.progress-track{margin:8px 2px 11px}.stage-tabs button{padding:8px 3px 10px}.stage-tabs .step{width:28px;height:28px;flex-basis:28px}.stage-tabs strong{font-size:12px}.workspace-grid{gap:12px}.panel{border-radius:7px;box-shadow:none}.material-create,.material-list,.review-panel,.upload-panel{padding:15px}.panel-heading{margin-bottom:12px}.heading-icon{width:36px;height:36px;flex-basis:36px}.panel-heading h2{font-size:20px}.upload-drop{min-height:132px}.upload-circle{width:40px;height:40px;margin-bottom:8px}.selected-image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.selected-image img{height:120px}.primary-button.full{min-height:46px;margin-top:10px}.recognize-button{display:none}.review-panel{min-height:320px}.review-heading{margin-bottom:8px}.bulk-confirm-bar{align-items:stretch;flex-direction:column}.bulk-confirm-bar .primary-button{width:100%;min-height:42px}.empty-rows{min-height:250px}.empty-illustration{width:54px;height:54px;margin-bottom:10px}.summary-view{height:100%;min-height:0;display:flex;flex-direction:column}.summary-view .export-gate{flex:0 0 auto;margin:0 0 8px;padding:10px 12px;border-radius:7px}.summary-view .export-gate>div{gap:8px}.summary-view .export-gate>div>svg{width:21px;height:21px}.summary-view .export-gate strong{font-size:13px}.summary-view .export-gate small,.summary-view .export-gate>.primary-button,.summary-view .export-gate>.secondary-button{display:none}.summary-view .summary-table-wrap{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;border-radius:7px;box-shadow:none;-webkit-overflow-scrolling:touch}.summary-view table,.summary-view tbody{display:block;min-width:0;width:100%}.summary-view thead{display:none}.summary-view tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:white;border-bottom:8px solid #edf3f9}.summary-view tbody td{display:block;min-width:0;padding:9px 8px;border:0;color:#153757;text-align:center;font-size:12px}.summary-view tbody td:first-child{grid-column:1/-1;padding:12px 11px;border-bottom:1px solid #e1e9f2;text-align:left;font-size:13px;line-height:1.45}.summary-view tbody td:nth-child(2):before,.summary-view tbody td:nth-child(3):before,.summary-view tbody td:nth-child(4):before{display:block;margin-bottom:4px;color:#6b7f93;font-size:9px;font-weight:500}.summary-view tbody td:nth-child(2):before{content:"明日到货"}.summary-view tbody td:nth-child(3):before{content:"今日货单"}.summary-view tbody td:nth-child(4):before{content:"今日加订"}.summary-view tbody .empty-cell{grid-column:1/-1;padding:45px 12px!important;text-align:center}.summary-mobile-actions{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:8px;padding-top:9px}.summary-mobile-actions .ghost-button,.summary-mobile-actions .primary-button{min-height:46px;width:100%;padding:10px}.summary-mobile-actions .clear-summary{color:var(--red);border-color:#e4b3ae;background:#fff8f7}.summary-mobile-actions svg{width:17px;height:17px}}.header-logout{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;margin-left:2px;border:1px solid rgba(255,255,255,.28);border-radius:6px;color:white;background:transparent;cursor:pointer}.header-logout:hover{background:rgba(255,255,255,.12)}.header-logout svg{width:17px;height:17px}.mobile-logout{display:none!important}.login-page{width:100%;min-height:100dvh;padding:28px;display:grid;place-items:center;background:linear-gradient(145deg,#eaf3ff,#f5f8fc 52%,#edf3f9)}.login-card{width:min(430px,100%);padding:34px;border:1px solid #cbdbea;border-top:5px solid #0b5cad;border-radius:8px;background:white;box-shadow:0 18px 45px rgba(18,58,99,.12)}.login-brand{display:flex;align-items:center;gap:12px;padding-bottom:24px;border-bottom:1px solid #e1e9f2}.login-brand>span{width:44px;height:44px;display:grid;place-items:center;border-radius:7px;color:white;background:#0b5cad}.login-brand>span svg{width:24px;height:24px}.login-brand>div{display:flex;flex-direction:column}.login-brand strong{font-size:19px}.login-brand small{margin-top:3px;color:var(--muted)}.login-heading{margin:25px 0 22px}.login-heading h1{font-size:25px}.login-heading p{margin:7px 0 0;color:var(--muted);font-size:13px}.login-card form{display:flex;flex-direction:column;gap:16px}.login-card label>span{display:block;margin-bottom:7px;color:#294b6d;font-size:12px;font-weight:700}.login-card label>div{position:relative}.login-card label>div>svg{position:absolute;top:50%;left:13px;width:18px;height:18px;color:#6b7f93;transform:translateY(-50%)}.login-card input{width:100%;height:46px;padding-left:42px}.login-submit{width:100%;min-height:46px;margin-top:5px}.login-error{display:flex;align-items:center;gap:7px;padding:10px 12px;border:1px solid #efc1bb;border-radius:6px;color:var(--red);background:var(--red-bg);font-size:12px}.login-error svg{width:17px;height:17px}.history-detail,.history-view{display:flex;flex-direction:column;gap:14px}.history-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border:1px solid var(--line);border-radius:8px;background:white}.history-toolbar>div{display:flex;flex-direction:column}.history-toolbar>div>strong{font-size:17px}.history-toolbar>div>span{margin-top:4px;color:var(--muted);font-size:12px}.danger-button{min-height:42px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #e3b4ae;border-radius:6px;color:var(--red);background:#fff8f7;font-weight:700;cursor:pointer}.danger-button:hover{background:var(--red-bg)}.danger-button:disabled{opacity:.5}.danger-button svg{width:17px;height:17px}.history-list{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:white;box-shadow:var(--shadow)}.history-item{min-height:74px;padding:13px 16px;display:grid;grid-template-columns:42px minmax(230px,1fr) 75px 75px 95px auto;gap:14px;align-items:center;border-bottom:1px solid #e4ebf3}.history-item:last-child{border-bottom:0}.history-number{color:#8a9bad;font:12px ui-monospace,monospace}.history-date{min-width:0;display:flex;flex-direction:column}.history-date strong{font-size:14px}.history-date span{overflow:hidden;margin-top:4px;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.history-stat{display:flex;flex-direction:column}.history-stat span{color:var(--muted);font-size:10px}.history-stat strong{margin-top:3px;font-size:15px}.history-status{justify-self:start;padding:6px 9px;border-radius:99px;font-size:11px;font-weight:700}.history-status.done{color:#0b5cad;background:#eaf3ff}.history-status.pending{color:var(--amber);background:var(--amber-bg)}.history-item .secondary-button{padding:9px 12px;white-space:nowrap}.history-item .secondary-button svg{width:16px;height:16px}.history-actions{display:flex;justify-content:flex-end;gap:7px}.history-clear-button{padding:8px 10px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid #e3b4ae;border-radius:6px;color:var(--red);background:#fff8f7;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}.history-clear-button svg{width:15px;height:15px}.history-clear-button:disabled{opacity:.45}.history-empty,.history-loading{min-height:320px;display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--line);border-radius:8px;color:var(--muted);background:white}.history-empty{flex-direction:column}.history-empty>svg{width:38px;height:38px;color:#0b5cad}.history-empty>strong{color:var(--ink)}.history-empty>span{font-size:12px}.history-detail-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:15px 17px;border:1px solid var(--line);border-radius:8px;background:white}.history-detail-head>div{display:flex;flex-direction:column}.history-detail-head>div>span{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.history-detail-head>div>span svg{width:15px;height:15px}.history-detail-head>div>strong{margin-top:4px;font-size:14px}.history-detail-head .back-icon{width:16px;height:16px;transform:rotate(180deg)}@media (max-width:900px){.header-logout{display:none}.mobile-logout{display:flex!important;color:var(--red)!important;border-top:1px solid #e3eaf2!important;border-radius:0!important}.history-item{grid-template-columns:minmax(0,1fr) auto auto}.history-number{display:none}.history-date{grid-column:1/-1}.history-stat{flex-direction:row;gap:5px;align-items:baseline}.history-status{justify-self:end}.history-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.history-actions>button{width:100%}.history-actions>:only-child{grid-column:1/-1}}@media (max-width:620px){.login-page{padding:16px}.login-card{padding:24px 20px}.login-heading{margin:21px 0 18px}.history-toolbar{align-items:stretch;flex-direction:column;padding:14px}.history-toolbar>div>span{line-height:1.55}.danger-button{width:100%}.history-item{padding:13px;gap:10px}.history-detail-head{grid-template-columns:1fr}.history-detail-head>.primary-button{width:100%}.history-summary-table{overflow-x:hidden}.history-summary-table table,.history-summary-table tbody{display:block;min-width:0;width:100%}.history-summary-table thead{display:none}.history-summary-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:white;border-bottom:8px solid #edf3f9}.history-summary-table tbody td{display:block;min-width:0;padding:9px 8px;border:0;text-align:center;font-size:12px}.history-summary-table tbody td:first-child{grid-column:1/-1;padding:12px 11px;border-bottom:1px solid #e1e9f2;text-align:left;font-size:13px}.history-summary-table tbody td:nth-child(2):before,.history-summary-table tbody td:nth-child(3):before,.history-summary-table tbody td:nth-child(4):before{display:block;margin-bottom:4px;color:#6b7f93;font-size:9px;font-weight:500}.history-summary-table tbody td:nth-child(2):before{content:"明日到货"}.history-summary-table tbody td:nth-child(3):before{content:"今日货单"}.history-summary-table tbody td:nth-child(4):before{content:"今日加订"}}