:root{--bg:#fafaf9;--panel:#fff;--ink:#17181a;--ink-2:#6e6e73;--ink-3:#ababb0;--line:#e7e7e3;--line-strong:#d8d8d3;--band:#232426;--band-ink:#e9e9e5;--accent:#2e62d9;--accent-soft:#2e62d914;--run:#1b7a3d;--run-soft:#1b7a3d1a;--star:#b8860b;--danger:#b3261e;--mono:"SF Mono", ui-monospace, "Menlo", monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;padding:0;font:15px/1.55 -apple-system,SF Pro Text,PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select{font:inherit;color:inherit}::selection{background:#2e62d92e}.wrap{flex-direction:column;height:100dvh;margin:0 auto;padding:22px 24px 14px;display:flex}.wrap>*{flex-shrink:0;min-width:0}.wrap>.sheet-frame{flex-direction:column;flex-shrink:1;min-height:0;display:flex}.titlebar{align-items:baseline;gap:14px;padding:2px 2px 0;display:flex}.titlebar .name{letter-spacing:.01em;font-size:19px;font-weight:700}.titlebar .brand{color:var(--ink-3);letter-spacing:.05em;font-size:12px}.titlebar .gap{flex:1}.titlebar .sync{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:12px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:14px 0 12px;display:flex}.chip{border:1px solid var(--line-strong);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;background:0 0;border-radius:2px;padding:4px 12px;font-size:13px;font-weight:550}.chip:hover{border-color:var(--ink-3);color:var(--ink)}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip.star-chip.on{background:var(--star);border-color:var(--star);color:#fff}.tsep{background:var(--line);align-self:stretch;width:1px;margin:3px 6px}.toolbar .gap{flex:1}.hint{color:var(--ink-3);font-size:12.5px}select.customer-filter{border:1px solid var(--line-strong);color:var(--ink-2);background:0 0;border-radius:2px;padding:4px 8px;font-size:13px}.search-wrap{align-items:center;display:inline-flex;position:relative}.search-in{border:1px solid var(--line-strong);width:210px;color:var(--ink);background:0 0;border-radius:2px;padding:4px 26px 4px 9px;font-size:13px}.search-in:focus{outline:2px solid var(--accent);outline-offset:-1px;width:280px}.search-in::-webkit-search-cancel-button{display:none}.search-x{width:18px;height:18px;color:var(--ink-3);border-radius:50%;font-size:11px;line-height:18px;position:absolute;right:4px}.search-x:hover{color:var(--ink);background:var(--line)}.chip.merge-chip{color:var(--accent);border-color:var(--accent)}.chip.merge-chip:hover{background:var(--accent-soft)}.mg-group{border:1px solid var(--line-strong);opacity:.55;border-radius:2px;margin:12px 0}.mg-group.on{opacity:1;border-color:var(--accent)}.mg-head{cursor:pointer;border-bottom:1px solid var(--line);align-items:baseline;gap:10px;padding:10px 12px;display:flex}.mg-head input{position:relative;top:1px}.mg-head b{font-size:13.5px}.mg-head .gap{flex:1}.mg-sub{color:var(--ink-3);font-size:12px;font-family:var(--mono)}.mg-sum{color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:650}.mg-warn{color:#b45309;border-bottom:1px solid var(--line);background:#f59e0b14;padding:7px 12px;font-size:12px}.mg-table td.dim{color:var(--ink-3);white-space:nowrap;font-size:11.5px}.mg-table{border-collapse:collapse;width:100%;font-size:12.5px}.mg-table td{border-bottom:1px solid var(--line);color:var(--ink-2);padding:6px 12px}.mg-table tr:last-child td{border-bottom:none}.mg-table td.mono{font-family:var(--mono);font-size:12px}.mg-table td.num{font-variant-numeric:tabular-nums;text-align:right}.mg-keep{white-space:nowrap;color:var(--ink-3);font-size:11.5px}.mg-table tr:first-child .mg-keep{color:var(--run);font-weight:650}.sheet-frame{background:var(--panel);border:1px solid var(--line-strong);border-radius:2px;overflow:hidden;box-shadow:0 1px 2px #0000000a,0 12px 32px #0000000d}.sheet-scroll{min-height:0;overflow:auto}.sheet-scroll::-webkit-scrollbar{width:13px;height:13px}.sheet-scroll::-webkit-scrollbar-thumb{border:3px solid var(--panel);background:#b9b9b4 padding-box padding-box;border-radius:7px}.sheet-scroll::-webkit-scrollbar-thumb:hover{background:#8f8f8a}.sheet-scroll::-webkit-scrollbar-track{background:var(--panel)}.sheet-scroll::-webkit-scrollbar-corner{background:var(--panel)}table.sheet{border-collapse:collapse;width:100%;min-width:1280px;font-size:13.5px}table.sheet>thead>tr>th,table.sheet>tbody>tr>td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;vertical-align:middle;height:var(--rowh,38px);padding:0}table.sheet>tbody>tr>td{text-overflow:ellipsis;overflow:hidden}table.sheet>tbody>tr>td.pop-cell{overflow:visible}table.sheet>tbody>tr.detail>td{height:auto;overflow:visible}table.sheet>thead>tr>th:last-child,table.sheet>tbody>tr>td:last-child{border-right:none}table.sheet>thead>tr>th{background:var(--band);color:var(--band-ink);letter-spacing:.03em;z-index:3;border-bottom:none;border-right:1px solid #ffffff17;padding:9px 12px;font-size:12px;font-weight:600;position:sticky;top:0}table.sheet>thead>tr>th.autoh{color:#e9e9e580;font-weight:550}.sheet thead th .sub{letter-spacing:.08em;opacity:.55;margin-left:5px;font-size:10px}table.sheet>thead>tr>th.zsplit,table.sheet>tbody>tr>td.zsplit{border-left:3px double var(--line-strong)}table.sheet>tbody>tr>td.static{padding:0 12px}table.sheet>tbody>tr>td.num,table.sheet>thead>tr>th.num{text-align:right}table.sheet>tbody>tr>td.num{font-variant-numeric:tabular-nums}table.sheet>tbody>tr>td.mono{font-family:var(--mono);font-size:12px}table.sheet>tbody>tr>td.autoz{color:var(--ink-2);padding:0 12px}table.sheet>tbody>tr>td.dim{color:var(--ink-3)}table.sheet>tbody>tr:hover>td{background-color:#7f7f7f0b}table.sheet>tbody>tr.detail:hover>td{background-color:var(--bg)}table.sheet>tbody>tr.expanded>td{background-color:var(--accent-soft)}.sheet tbody tr.shipped-row td,.sheet tbody tr.shipped-row td button{color:var(--ink-3)}.cell-in{width:100%;height:var(--rowh,38px);font:inherit;color:inherit;background:0 0;border:none;min-width:0;padding:0 12px}.cell-in:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--panel)}.cell-in.num{text-align:right;font-variant-numeric:tabular-nums}.cell-in.mono{font-family:var(--mono);font-size:12px}.cell-in.ai{color:var(--accent)}td.ai-cell{position:relative}td.ai-cell:after{content:"";border-bottom:1px dashed var(--accent);pointer-events:none;position:absolute;bottom:7px;left:10px;right:10px}.ghost td,.ghost .cell-in::placeholder{color:var(--ink-3)}table.sheet>tbody>tr.ghost>td{border-bottom:none}.col-grip{cursor:col-resize;z-index:5;width:10px;height:100%;position:absolute;top:0;right:-5px}.col-grip:after{content:"";width:2px;position:absolute;top:0;bottom:0;left:4px}.col-grip:hover:after,body.col-resizing .col-grip:after{background:var(--accent)}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}td.ecell{position:relative}td.ecell .fill-handle{background:var(--accent);border:1.5px solid var(--panel);cursor:crosshair;z-index:4;touch-action:none;width:10px;height:10px;display:none;position:absolute;bottom:0;right:0}td.ecell:focus-within .fill-handle,body.fill-dragging td.ecell .fill-handle:active{display:block}body.fill-dragging{cursor:crosshair;-webkit-user-select:none;user-select:none}body.fill-dragging .cell-in{pointer-events:none}td.fill-target{box-shadow:inset 1.5px 0 0 var(--accent), inset -1.5px 0 0 var(--accent);background:var(--accent-soft)!important}td.fill-target.fill-first{box-shadow:inset 1.5px 0 0 var(--accent), inset -1.5px 0 0 var(--accent), inset 0 1.5px 0 var(--accent)}td.fill-target.fill-last{box-shadow:inset 1.5px 0 0 var(--accent), inset -1.5px 0 0 var(--accent), inset 0 -1.5px 0 var(--accent)}td.fill-target.fill-first.fill-last{box-shadow:inset 1.5px 0 0 var(--accent), inset -1.5px 0 0 var(--accent), inset 0 1.5px 0 var(--accent), inset 0 -1.5px 0 var(--accent)}.rowh-ctl{color:var(--ink-3);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.rowh-ctl input{width:72px;accent-color:var(--accent)}.dot{vertical-align:.5px;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.dot.run{background:var(--run)}.dot.h1{border:1.5px solid var(--ink-3);background:0 0}.dot.h15{border:1.5px solid var(--ink-2);background:linear-gradient(to right, var(--ink-2) 50%, transparent 50%)}.dot.h2{border:1.5px solid var(--ink-2);background:var(--ink-2);opacity:.55}.dot.full{background:var(--ink-3)}.status-btn{text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;height:38px;padding:0 12px;overflow:hidden}.status-pop{z-index:20;background:var(--panel);border:1px solid var(--line-strong);border-radius:2px;min-width:130px;padding:4px;position:absolute;box-shadow:0 8px 28px #0000001f}.status-pop button{text-align:left;border-radius:2px;width:100%;padding:7px 12px;font-size:13px;display:block}.status-pop button:hover{background:var(--accent-soft)}.star-btn{width:100%;height:38px;color:var(--line-strong);font-size:15px}.star-btn.on,.star-btn:hover{color:var(--star)}.att-btn{text-align:left;width:100%;height:38px;color:var(--ink-2);padding:0 12px;font-size:12.5px}.att-btn .pg{font-family:var(--mono);color:var(--ink-3);margin-left:4px;font-size:11px}.att-btn.none{color:var(--ink-3)}.att-btn:hover{color:var(--accent)}.hintdot{background:var(--accent);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-left:7px;display:inline-block}.rowcheck{width:100%;height:38px;color:var(--ink-3);justify-content:center;align-items:center;display:flex}.rowcheck input{width:14px;height:14px;accent-color:var(--ink);cursor:pointer}.selcell{cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.selcell .rowcheck input{pointer-events:none}.selcell:hover .rowcheck input{outline:2px solid var(--accent);outline-offset:1px}table.sheet>tbody>tr>td.selcell{position:relative;overflow:visible}.ins-zone{z-index:5;cursor:pointer;width:110px;height:16px;display:block;position:absolute;bottom:-8px;left:0}.ins-zone.top{top:-8px;bottom:auto}.ins-line{background:var(--accent);opacity:0;pointer-events:none;width:55vw;height:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.ins-edge{background:var(--accent);color:#fff;text-align:center;opacity:0;z-index:6;border-radius:50%;width:18px;height:18px;padding:0;font-size:13px;line-height:17px;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.ins-zone:hover .ins-edge{opacity:1}.ins-zone:hover .ins-line{opacity:.45}.selcell-h input{width:14px;height:14px;accent-color:var(--ink);cursor:pointer}table.sheet>thead>tr>th.selcell-h,table.sheet>thead>tr>th.star-h{text-align:center;padding:9px 0}.selcell-h input{vertical-align:middle;width:14px;height:14px;margin:0;display:inline-block}.selcell-h input:focus,.selcell-h input:focus-visible{outline:none}th.star-h{color:var(--star);font-size:13px}.danhao-btn{text-align:left;width:100%;height:38px;font-family:var(--mono);padding:0 12px;font-size:12px}.danhao-btn:hover{color:var(--accent)}.caret{width:14px;color:var(--ink-3);margin-right:2px;font-size:10px;transition:transform .12s;display:inline-block}.caret.open{transform:rotate(90deg)}tr.detail>td{background:var(--bg);border-bottom:1px solid var(--line-strong);padding:0}.detail-in{border-left:3px solid var(--accent);grid-template-columns:320px minmax(0,1fr);gap:0;max-width:min(100%,100vw - 52px);display:grid;position:sticky;left:0}@media (max-width:900px){.detail-in{grid-template-columns:1fr}}.detail-left{border-right:1px solid var(--line);padding:18px}.detail-left img{border:1px solid var(--line-strong);cursor:zoom-in;background:#fff;border-radius:2px;width:100%}.detail-left .nofile{border:1px dashed var(--line-strong);text-align:center;color:var(--ink-3);border-radius:2px;padding:28px 12px;font-size:13px}.detail-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.btn{border:1px solid var(--line-strong);color:var(--ink);background:var(--panel);white-space:nowrap;border-radius:2px;padding:6px 14px;font-size:13px;font-weight:550}.btn:hover{border-color:var(--ink-2)}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.primary:hover{opacity:.88}.btn.quiet{color:var(--ink-2)}.btn.folder-btn{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:650}.btn.folder-btn:hover{background:var(--accent);color:#fff}.btn.danger-quiet{color:var(--danger);border-color:var(--line)}.detail-right{min-width:0;padding:18px 22px}.detail-right .ledger{max-width:720px}.steps-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.step-tile{border:1px solid var(--line-strong);color:var(--ink-2);font-variant-numeric:tabular-nums;cursor:grab;border-radius:2px;padding:8px 14px;font-size:13px}.step-tile:active{cursor:grabbing}.step-tile b{color:var(--ink);font-size:15px;font-weight:650;display:block}.step-tile.done-t{border-color:var(--run)}.step-tile.done-t b{color:var(--run)}.ledger{border-collapse:collapse;width:100%;font-size:13px}.ledger th{text-align:left;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);padding:6px 10px 6px 0;font-size:11px;font-weight:600}.ledger td{border-bottom:1px solid var(--line);vertical-align:middle;padding:7px 10px 7px 0}.ledger tr:last-child td{border-bottom:none}.ledger td.num{text-align:left;font-variant-numeric:tabular-nums}.ledger .voided td{color:var(--ink-3);text-decoration:line-through}.ledger img.thumb{object-fit:cover;border:1px solid var(--line-strong);vertical-align:middle;cursor:zoom-in;border-radius:2px;width:46px;height:34px}.void-btn{color:var(--ink-3);font-size:12px}.void-btn:hover{color:var(--danger)}.void-btn.del{margin-left:8px}table.focus{border-collapse:collapse;width:100%;min-width:980px}table.focus th{text-align:left;color:var(--ink-2);letter-spacing:.04em;background:var(--bg);border-bottom:1px solid var(--line-strong);padding:14px 18px;font-size:12.5px;font-weight:550;position:relative}table.focus td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);vertical-align:middle;background:var(--panel);padding:20px 18px}table.focus td:last-child,table.focus th:last-child{border-right:none}table.focus th{border-right:1px solid var(--line)}table.focus .fnum{width:56px;font-family:var(--mono);color:var(--ink-3);text-align:center;font-size:13px}.fdanhao{font-family:var(--mono);letter-spacing:.01em;font-size:16.5px;font-weight:700}.fdanhao .arr{color:var(--ink-3);font-size:12px;font-weight:400}.fdanhao:hover .arr{color:var(--accent)}.fchip{color:var(--ink-2);border:1px solid var(--line-strong);vertical-align:2px;white-space:nowrap;border-radius:4px;margin-left:10px;padding:2px 8px;font-size:12px}.fprod{font-size:15.5px}.fprod .fdim{color:var(--ink-2);font-family:var(--mono);margin-right:6px;font-size:13.5px}.fdue .d1{font-family:var(--mono);color:var(--ink-2);font-size:15.5px;font-weight:600}.fdue .d2{color:var(--ink-3);margin-top:2px;font-size:12.5px}.fdue.today .d1,.fdue.today .d2{color:var(--star)}.fdue.late .d1,.fdue.late .d2{color:var(--danger)}.fwx{color:var(--ink-2);font-variant-numeric:tabular-nums}.fb-in{width:100%;font:inherit;color:var(--ink);background:0 0;border:none;padding:4px 0;font-size:15px}.fb-in::placeholder{color:var(--ink-3)}.fb-in:focus{border-bottom:2px solid var(--accent);outline:none;padding-bottom:2px}.funstar{text-align:center}.fempty{text-align:center;color:var(--ink-3);font-size:14px;padding:48px 0!important}.selbar{z-index:40;background:var(--band);color:var(--band-ink);white-space:nowrap;border-radius:2px;align-items:center;gap:10px;padding:10px 12px 10px 18px;font-size:13.5px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 10px 36px #00000047}.selbar .btn{color:var(--band-ink);background:0 0;border-color:#ffffff40}.selbar .btn:hover{border-color:#fff9}.selbar .btn.go{background:var(--band-ink);color:var(--band);border-color:var(--band-ink);font-weight:650}.selbar .btn:disabled{opacity:.45;cursor:not-allowed}.dropveil{z-index:60;border:3px dashed var(--accent);color:var(--accent);pointer-events:none;background:#2e62d912;border-radius:2px;justify-content:center;align-items:center;margin:10px;font-size:17px;font-weight:650;display:flex;position:fixed;inset:0}.busy-strip{color:var(--ink-2);align-items:center;gap:10px;padding:10px 2px 0;font-size:13px;display:flex}.spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:13px;height:13px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.col-filter{cursor:pointer;color:var(--ink-3);vertical-align:middle;opacity:.5;background:0 0;border:none;border-radius:3px;margin-left:2px;padding:0 2px;font-size:10px}th:hover .col-filter{opacity:1}.col-filter:hover{color:var(--ink);background:var(--line)}.col-filter.on{color:var(--accent);opacity:1;font-weight:700}.filter-chip.on{border-color:var(--accent);color:var(--accent)}.cf-backdrop{z-index:70;position:fixed;inset:0}.cf-pop{z-index:71;border:1px solid var(--line-strong);background:#fff;border-radius:10px;width:250px;padding:10px;font-size:13px;position:fixed;box-shadow:0 10px 32px #00000029}.cf-head{justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:650;display:flex}.cf-clear{color:var(--accent);cursor:pointer;background:0 0;border:none;font-size:12px}.cf-q{border:1px solid var(--line-strong);box-sizing:border-box;border-radius:6px;width:100%;margin-bottom:6px;padding:5px 8px;font-size:13px}.cf-all{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.cf-all button{border:1px solid var(--line);cursor:pointer;color:var(--ink-2);background:0 0;border-radius:6px;padding:2px 8px;font-size:12px}.cf-all button:hover{border-color:var(--ink-3);color:var(--ink)}.cf-list{gap:2px;max-height:260px;display:grid;overflow-y:auto}.cf-item{cursor:pointer;border-radius:5px;align-items:center;gap:7px;padding:4px;display:flex}.cf-item:hover{background:var(--bg)}.cf-val{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cf-n{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:11px}.cf-empty{color:var(--ink-3);text-align:center;padding:10px 0}.step-tile{position:relative}.step-x{border:1px solid var(--line-strong);width:17px;height:17px;color:var(--ink-3);cursor:pointer;background:#fff;border-radius:50%;padding:0;font-size:9px;line-height:15px;position:absolute;top:-7px;right:-7px}.step-x:hover{color:var(--danger);border-color:currentColor}.step-add-form{flex-wrap:wrap;align-items:stretch;gap:8px;display:inline-flex}.step-addtile{cursor:pointer;color:var(--ink-2);box-sizing:border-box;text-align:center;background:0 0;border-style:dashed;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-width:84px;min-height:84px;padding:14px 10px;font-size:15px;display:flex}.step-addtile b{margin-top:2px;font-size:16px}.step-addtile:hover{border-color:var(--accent);color:var(--accent)}.step-addtile:hover b{color:var(--accent)}.step-add-in{border:1px dashed var(--line-strong);box-sizing:border-box;text-align:center;border-radius:8px;width:132px;min-height:84px;padding:4px 10px;font-size:15px}.lightbox{z-index:80;cursor:zoom-out;background:#141413d1;justify-content:center;align-items:center;padding:30px;display:flex;position:fixed;inset:0}.lightbox img{background:#fff;border-radius:2px;max-width:100%;max-height:100%}.lb-nav{z-index:82;color:#fff;cursor:pointer;background:#1414138c;border:1px solid #ffffff47;border-radius:2px;width:46px;height:76px;font-size:30px;line-height:1;position:fixed;top:50%;transform:translateY(-50%)}.lb-nav:hover{background:#141413d9;border-color:#ffffffa6}.lb-del{z-index:20;color:#fff;background:#b3261eeb;border-radius:4px;padding:8px 14px;font-size:13px;font-weight:650;position:fixed;top:16px;right:16px}.lb-del:hover{background:#8f1e18}.lb-nav.prev{left:14px}.lb-nav.next{right:14px}.lb-pos{z-index:82;cursor:default;color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;background:#14141399;border-radius:2px;align-items:baseline;gap:10px;padding:6px 14px;font-size:13px;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}.lb-pos .sub{opacity:.6;font-size:12px}.lb-tabs{z-index:82;cursor:default;gap:6px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.lb-tabs button{color:#fff;background:#14141399;border:1px solid #ffffff47;border-radius:2px;padding:6px 16px;font-size:13px}.lb-tabs button:hover{border-color:#ffffffa6}.lb-tabs button.on{color:#17181a;background:#fff;border-color:#fff;font-weight:650}.sheet-chip{z-index:2;color:#fff;pointer-events:none;background:#141413b3;border-radius:2px;padding:2px 8px;font-size:11px;position:absolute;bottom:6px;right:6px}.mark-editor{cursor:default;flex-direction:column;align-items:center;gap:10px;max-width:100%;max-height:100%;display:flex}.mark-hint{color:#fff;opacity:.85;font-size:13px}.mark-wrap{cursor:crosshair;touch-action:none;position:relative}.mark-wrap img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;background:#fff;max-width:calc(100vw - 80px);max-height:calc(100vh - 110px);display:block}.mark-box{background:#fff;outline:1px dashed #c8282899;position:absolute}.mark-box.draft{background:#ffffffd9;outline:1.5px dashed #c82828}.mark-del{color:#fff;cursor:pointer;background:#c82828;border-radius:50%;width:18px;height:18px;font-size:11px;line-height:16px;display:none;position:absolute;top:-9px;right:-9px}.mark-box:hover .mark-del{display:block}.dwg-prev{cursor:zoom-in;position:relative}.dwg-prev img{display:block}.mark-fill{background:#fff;position:absolute}.modal-veil{z-index:60;background:#18181473;justify-content:center;align-items:flex-start;padding:5vh 16px;display:flex;position:fixed;inset:0}.match-panel{background:var(--panel);border:1px solid var(--line-strong);border-radius:2px;flex-direction:column;width:100%;max-width:920px;max-height:88vh;display:flex;box-shadow:0 18px 60px #00000040}.mp-head{border-bottom:1px solid var(--line);align-items:baseline;gap:12px;padding:14px 18px;display:flex}.mp-head b{font-size:15px}.mp-head span{color:var(--ink-3);flex:1;font-size:12.5px}.mp-close{color:var(--ink-2);font-size:14px}.mp-close:hover{color:var(--ink)}.mp-busy{text-align:center;color:var(--ink-2);padding:54px 20px;font-size:14px}.mp-warn{color:var(--danger);padding:9px 18px 0;font-size:13px}.mp-scroll{flex:1;padding:0 18px;overflow:auto}.mp-table{border-collapse:collapse;width:100%;font-size:13px}.mp-table th{text-align:left;letter-spacing:.08em;color:var(--ink-3);border-bottom:1px solid var(--line-strong);background:var(--panel);padding:10px 10px 6px 0;font-size:11px;font-weight:600;position:sticky;top:0}.mp-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px 9px 0}.mp-thumb{border:1px solid var(--line-strong);cursor:zoom-in;background:#fff;width:96px;max-width:100%;display:block}.mp-read .no{font-family:var(--mono);font-size:12.5px}.mp-read .nm{color:var(--ink-2);margin-top:2px;font-size:12.5px}.mp-sel{border:1px solid var(--line-strong);background:var(--panel);border-radius:2px;width:100%;height:36px;padding:0 8px;font-size:13px}.mp-sel.dup{border-color:var(--danger);color:var(--danger)}.mp-via{white-space:nowrap;border:1px solid;border-radius:999px;padding:3px 9px;font-size:11.5px}.mp-via.exact{color:var(--run);border-color:var(--run)}.mp-via.ai{color:var(--accent);border-color:var(--accent);border-style:dashed}.mp-via.none{color:var(--ink-3);border-color:var(--line-strong)}.mp-foot{border-top:1px solid var(--line);align-items:center;gap:10px;padding:12px 18px;display:flex}.mp-foot .gap{flex:1}.mp-dup{color:var(--danger);font-size:13px}.m-wrap{max-width:480px;margin:0 auto;padding:18px 16px 60px}.m-head{align-items:baseline;gap:10px;padding:4px 2px 14px;display:flex}.m-head .name{font-size:17px;font-weight:700}.m-head .gap{flex:1}.m-head .who{color:var(--ink-2);font-size:13px}.m-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:2px;margin-bottom:14px;padding:18px}.camera-btn{border:1px solid var(--line-strong);background:var(--panel);text-align:center;border-radius:2px;width:100%;padding:44px 20px;font-size:17px;font-weight:650}.camera-btn .ico{margin-bottom:10px;font-size:34px;display:block}.camera-btn .sub{color:var(--ink-2);margin-top:6px;font-size:13px;font-weight:400;display:block}.camera-btn:active{background:var(--accent-soft)}.m-order .dh{font-family:var(--mono);color:var(--ink-2);font-size:13px}.m-order .nm{margin:2px 0 4px;font-size:19px;font-weight:700}.m-order .meta{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:13.5px}.m-flag{border:1.5px solid var(--danger);color:var(--danger);background:#b3261e12;border-radius:2px;margin-top:12px;padding:13px 14px;font-size:17px;font-weight:750;line-height:1.45}.m-note{border:1.5px solid var(--star);background:#b07f0c14;border-radius:2px;margin-top:10px;padding:12px 14px;font-size:17px;font-weight:650;line-height:1.5}.m-note-lab{letter-spacing:.08em;color:var(--star);vertical-align:2px;margin-right:8px;font-size:11px;font-weight:700;display:inline-block}.m-dwg{border:1px solid var(--line-strong);background:var(--panel);text-align:center;border-radius:2px;width:100%;margin-top:10px;padding:0;display:block;overflow:hidden}.m-dwg img{object-fit:contain;background:#fff;width:100%;max-height:220px;display:block}.m-dwg span{color:var(--ink-2);border-top:1px solid var(--line-strong);letter-spacing:.03em;padding:7px;font-size:12px;display:block}.m-dwg-full{z-index:60;-webkit-overflow-scrolling:touch;background:#141414f0;padding:14px 8px 50px;position:fixed;inset:0;overflow:auto}.m-dwg-full img{background:#fff;border-radius:2px;width:100%}.m-dwg-close{text-align:center;color:#ffffffbf;font-size:13px;position:fixed;bottom:12px;left:0;right:0}.m-steps{gap:10px;margin:16px 0;display:grid}.m-step{border:1.5px solid var(--line-strong);background:var(--panel);border-radius:2px;justify-content:space-between;align-items:center;padding:13px 16px;font-size:16px;font-weight:600;display:flex}.m-step .tally{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.m-step.sel{border-color:var(--ink);background:var(--bg)}.m-step.full-step{opacity:.5}.ticklist{gap:10px;margin:14px 0 8px;display:grid}.tick-big{border:2px solid var(--run);background:var(--run-soft);text-align:center;cursor:pointer;border-radius:16px;padding:18px 16px}.tick-big .lab{color:var(--run);font-size:24px;font-weight:800;display:block}.tick-big .sub2{color:var(--ink-2);margin-top:6px;font-size:13px;display:block}.tick-big:active{filter:brightness(.95)}.tick-row{border:1px solid var(--line-strong);cursor:pointer;text-align:left;border-radius:12px;justify-content:space-between;align-items:center;padding:13px 14px;font-size:16px;font-weight:600;display:flex}.tick-row:active{background:var(--accent-soft)}.tick-done{border:1px dashed var(--line-strong);color:var(--ink-2);opacity:.75;border-radius:12px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:15px;display:flex}.tick-row .tally,.tick-done .tally{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.tick-big.open,.tick-row.open{outline:2px solid var(--ink);outline-offset:1px}.tickwrap{gap:8px;display:grid}.tickqty{justify-content:center;align-items:center;gap:10px;display:flex}.tickqty button{border:1px solid var(--line-strong);cursor:pointer;background:#fff;border-radius:10px;width:46px;height:40px;font-size:20px;font-weight:700}.tickqty button:active{background:var(--accent-soft)}.tickqty input{text-align:center;border:1px solid var(--line-strong);font-variant-numeric:tabular-nums;border-radius:10px;width:74px;height:40px;font-size:20px;font-weight:800}.tickqty .unit{color:var(--ink-2);margin-left:-4px;font-size:13px}.tickqty .allbtn{width:auto;color:var(--ink-2);height:40px;padding:0 12px;font-size:13px;font-weight:600}.tick-row.arm{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);justify-content:center;font-weight:700}.qty-row{justify-content:center;align-items:center;gap:12px;margin:20px 0;display:flex}.qty-row button{border:1px solid var(--line-strong);background:var(--panel);border-radius:2px;width:56px;height:56px;font-size:26px;font-weight:600}.qty-row button:active{background:var(--accent-soft)}.qty-in{text-align:center;border:1.5px solid var(--line-strong);background:var(--panel);font-variant-numeric:tabular-nums;border-radius:2px;width:110px;height:60px;font-size:30px;font-weight:700}.m-submit{background:var(--ink);width:100%;color:var(--bg);border:none;border-radius:2px;padding:16px;font-size:17px;font-weight:700}.m-submit:disabled{opacity:.35}.m-ok{text-align:center;padding:30px 10px}.m-ok .big{color:var(--run);font-size:42px}.m-ok .big.warn{color:var(--danger)}.sec-lab{color:var(--ink-2);letter-spacing:.06em;margin-top:18px;font-size:12.5px;font-weight:650}.m-steps.tight{margin:8px 0 4px}.wx-block{margin:8px 0 2px}.wx-row{flex-wrap:wrap;gap:8px;display:flex}.wx-btn{border:1.5px solid var(--line-strong);background:var(--panel);border-radius:2px;padding:11px 16px;font-size:15px;font-weight:600}.wx-btn.sel{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.ship-block{margin-top:6px}.demo-chip{color:var(--accent);border-color:var(--accent)}.mboard{background:var(--line-strong);border:1px solid var(--line-strong);border-radius:2px;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:1px;margin:12px 18px;display:grid;overflow:hidden}.mcard{background:var(--panel);min-width:0;padding:13px 15px 11px}.chip.mach-chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.mc-top{justify-content:space-between;align-items:baseline;display:flex}.mc-id{font-family:var(--mono);letter-spacing:.02em;font-size:14px;font-weight:700}.mc-st{letter-spacing:.08em;align-items:center;gap:5px;font-size:11px;font-weight:650;display:inline-flex}.mc-st:before{content:"";background:currentColor;width:7px;height:7px}.mcard.run .mc-st{color:var(--run)}.mcard.idle .mc-st{color:var(--ink-3)}.mcard.mx .mc-st{color:var(--star)}.mc-model{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:11px;overflow:hidden}.mc-order{align-items:center;height:24px;margin-top:8px;display:flex}.mc-order button{font-family:var(--mono);border:1px solid var(--line-strong);text-overflow:ellipsis;white-space:nowrap;background:0 0;border-radius:2px;max-width:100%;padding:2px 7px;font-size:12px;overflow:hidden}.mc-order button:hover{border-color:var(--accent);color:var(--accent)}.mc-idle{color:var(--ink-3);font-size:11px}.mc-bar{background:#00000014;height:3px;margin-top:8px}.mc-bar i{background:var(--run);height:100%;transition:width 1.4s linear;display:block}.mcard.idle .mc-bar i{background:var(--ink-3)}.mcard.mx .mc-bar i{background:var(--star)}.mc-nums{color:var(--ink-3);letter-spacing:.02em;white-space:nowrap;grid-template-columns:1fr 1fr;gap:3px 12px;margin-top:7px;font-size:10.5px;display:grid}.mc-nums span{justify-content:space-between;min-width:0;display:flex}.mc-nums b{font-family:var(--mono);color:var(--ink-2);font-variant-numeric:tabular-nums;font-weight:650}.mach-btn{text-align:left;width:100%;height:38px;font-family:var(--mono);padding:0 12px;font-size:12px}.mach-btn:hover{color:var(--accent)}.mdot{width:7px;height:7px;margin-right:7px;display:inline-block}.mdot.run{background:var(--run)}.mdot.idle{background:var(--ink-3)}.mdot.mx{background:var(--star)}.pop-sub{color:var(--ink-3);margin-left:5px;font-size:11px}.ship-btn{border:1.5px solid var(--line-strong);background:var(--panel);border-radius:2px;width:100%;margin-top:8px;padding:15px;font-size:16px;font-weight:650}.ship-btn.arm{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.shipped-tick{border:1.5px solid var(--run);color:var(--run);background:var(--run-soft);border-radius:2px;justify-content:center;align-items:center;gap:14px;margin-top:8px;padding:13px;font-size:16px;font-weight:700;display:flex}.verdict-block{margin:4px 0 2px}.verdict-lab{color:var(--ink-2);margin-bottom:8px;font-size:13px}.verdict-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.verdict-btn{border:1.5px solid var(--line-strong);background:var(--panel);border-radius:2px;padding:13px 6px;font-size:16px;font-weight:650}.verdict-btn.sel.ok{border-color:var(--run);color:var(--run);background:var(--run-soft)}.verdict-btn.sel.bad{border-color:var(--danger);color:var(--danger);background:#b3261e14}.verdict-note{border:1px solid var(--line-strong);background:var(--panel);border-radius:2px;width:100%;margin-top:10px;padding:12px;font-size:15px}.step-tile.insp b{color:var(--run)}.insp-line{color:var(--ink-2);font-variant-numeric:tabular-nums;margin:2px 0 12px;font-size:12.5px}.insp-line .bad{color:var(--danger);font-weight:650}.ledger .vd{font-weight:650}.ledger .vd.ok{color:var(--run)}.ledger .vd.bad{color:var(--danger)}.ledger .note{color:var(--ink-2);font-size:12px}.m-ok .line{margin:10px 0 2px;font-size:17px;font-weight:650}.m-ok .sub{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:14px}.m-alt{text-align:center;color:var(--ink-2);padding:6px 0;font-size:13.5px}.m-alt input{border:1px solid var(--line-strong);text-align:center;width:130px;font-size:16px;font-family:var(--mono);background:var(--panel);border-radius:2px;padding:9px 12px}.m-err{color:var(--danger);text-align:center;padding:8px 0;font-size:14px}.name-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.name-grid button{border:1px solid var(--line-strong);background:var(--panel);border-radius:2px;padding:14px;font-size:16px;font-weight:600}.m-photo-preview{border:1px solid var(--line-strong);border-radius:2px;width:100%;margin-bottom:12px}.m-link{color:var(--ink-2);text-underline-offset:3px;font-size:14px;text-decoration:underline}.print-page{color:#111;background:#fff}.print-bar{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 20px;display:flex}@media print{.print-bar{display:none!important}body{background:#fff}.a4{box-shadow:none!important;border:none!important;margin:0!important}.a4+.a4{page-break-before:always}}.a4{border:1px solid var(--line-strong);color:#111;background:#fff;flex-direction:column;width:210mm;min-height:285mm;margin:16px auto;padding:12mm;display:flex;box-shadow:0 8px 30px #00000012}.a4.land{width:297mm;max-width:calc(100vw - 32px);min-height:0;padding:6mm}.a4 .dwg-img{object-fit:contain;border:1px solid #ddd;flex:1;width:100%;max-height:205mm}.a4 .dwg-missing{color:#999;border:1px dashed #bbb;flex:1;justify-content:center;align-items:center;font-size:14px;display:flex}.stampx{background:#fff;border:1.5px solid #1a1a1a;align-items:stretch;display:flex;box-shadow:0 0 0 1px #fff}.stampx .stamp{flex:1;min-width:0}.stamp{background:#fff;grid-template-columns:1.7fr 1fr 1fr;display:grid}.stamp-qr{border-left:.5px solid #999;justify-content:center;align-items:center;padding:1mm 1.4mm;display:flex}.stamp-qr img{width:15mm;height:15mm;display:block}.stamp .cell{border-bottom:.5px solid #999;border-right:.5px solid #999;padding:1mm 1.8mm}.stamp .cell:nth-child(3n){border-right:none}.stamp .cell:nth-child(n+4){border-bottom:none}.stamp .cell.wide{grid-column:span 1}.stamp .cell.sy{justify-content:flex-end;align-items:flex-end;display:flex}.stamp .cell{min-width:0}.stamp .lab{letter-spacing:.1em;color:#777;white-space:nowrap;margin-bottom:.3mm;font-size:6px}.stamp .val{font-family:var(--mono);overflow-wrap:break-word;font-size:8.5px;font-weight:650}.stamp .val.big{letter-spacing:.04em;white-space:nowrap;font-size:13px}.stamp .val.dim{color:#aaa;font-size:6px;font-weight:500}.dwg-wrap{align-self:flex-start;width:100%;position:relative}.dwg-wrap .dwg-full{border:1px solid #ddd;width:100%;display:block}.stamp-float{position:absolute}.stamp-float .stampx{width:100%}.stamp-under{margin-top:6mm}.stamp-under .stamp .cell{padding:3mm 4mm}.stamp-under .stamp .val.big{font-size:24px}.stamp-under .stamp-qr img{width:24mm;height:24mm}.stamp-under .stamp-qr{padding:2mm 4mm}.cd-doc{font-size:13px}.cd-doc h1{text-align:center;letter-spacing:.35em;margin:2mm 0 6mm;font-size:22px;font-weight:700}.cd-meta{flex-wrap:wrap;justify-content:space-between;gap:4px 20px;margin-bottom:4mm;font-size:12.5px;display:flex}table.cd{border-collapse:collapse;width:100%;font-size:12.5px}.cd th,.cd td{text-align:left;border:1px solid #111;padding:2.6mm 3mm}.cd th{background:#f2f2ef;font-weight:650}.cd td.num,.cd th.num{text-align:right;font-variant-numeric:tabular-nums}.cd-sign{justify-content:space-between;margin-top:12mm;font-size:12.5px;display:flex}.cd-sign span{border-top:1px solid #111;padding:2mm 18mm 0 2mm}.cd2-wrap{outline:none;gap:4mm;display:flex}.cd2-wrap .cd-doc{flex:1;min-width:0}.cd2-co{text-align:center;letter-spacing:.08em;font-size:17px;font-weight:700}.cd2-titlerow{text-align:center;position:relative}.cd2-titlerow h1{letter-spacing:.3em;border-bottom:2px solid #111;margin:2mm 0 4mm;padding:0 4mm 1mm;font-size:21px;font-weight:700;display:inline-block}.cd2-no{font-size:12px;position:absolute;bottom:5mm;right:0}.cd2-meta{flex-wrap:wrap;justify-content:space-between;gap:2px 24px;margin-bottom:2.2mm;font-size:12.5px;display:flex}.cd2-meta span:only-child{flex:1}.cd2 table.cd{margin-top:1.5mm}.cd2 .cd th{text-align:center;background:0 0}.cd2 .cd td:empty:after{content:" "}.cd2-total td{font-weight:650}.cd2-boxes{border:1px solid #111;margin-top:6mm;font-size:12.5px;display:flex}.cd2-boxes>div{flex:1;padding:3mm 4mm;line-height:1.9}.cd2-boxes>div+div{border-left:1px solid #111}.cd2-signrow{flex-wrap:wrap;justify-content:space-between;gap:2px 24px;margin-top:8mm;font-size:12.5px;display:flex}.cd2-signrow span{min-width:30mm}.cd2-remark{color:#333;margin-top:6mm;font-size:11px;line-height:1.7}.cd2-strip{writing-mode:vertical-rl;letter-spacing:.25em;color:#333;border-left:1px solid #999;align-self:stretch;padding-left:2mm;font-size:11px}.danhao-wrap{align-items:center;display:flex}.danhao-wrap .danhao-btn{flex:1;width:auto}.ai-ok{color:var(--accent);border:1px dashed var(--accent);text-align:center;border-radius:2px;width:22px;height:22px;margin-right:8px;font-size:13px;font-weight:700;line-height:20px}.ai-ok:hover{background:var(--accent-soft)}.clone-btn{opacity:0;border:1px solid var(--line-strong);background:var(--bg);width:18px;height:18px;color:var(--accent);cursor:pointer;border-radius:3px;flex:none;margin-left:4px;padding:0;font-size:12px;line-height:1;transition:opacity .12s}table.sheet>tbody>tr:hover .clone-btn{opacity:1}.clone-btn:hover{background:var(--accent-soft);border-color:var(--accent)}@keyframes rowflash{0%{background:var(--accent-soft)}to{background:0 0}}tr.flash-row>td{animation:1.5s ease-out rowflash}.chip.ai-chip{color:var(--accent);border-color:var(--accent);border-style:dashed}.chip.ai-chip:hover{background:var(--accent-soft)}.btn.del{color:var(--danger)}
