:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#193c34;background:#f3f5f1;font-synthesis:none;--green:#174f43;--line:#dfe7df;--muted:#74827b;--red:#aa4337}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.43}[hidden]{display:none!important}.top{height:84px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1040px)/2));background:#fbfcf9}.brand{display:flex;gap:13px;align-items:center;font-size:20px;font-weight:700;letter-spacing:1px}.brand-mark{background:var(--green);color:white;width:42px;height:42px;display:grid;place-items:center;border-radius:12px;font-size:29px}.brand small{display:block;font-size:9px;letter-spacing:2px;color:#809087;font-weight:500;margin-top:5px}main{max-width:1040px;padding:35px 24px 40px;margin:auto}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.eyebrow{font-size:10px;letter-spacing:2px;color:#7a9084;font-weight:700}h1{font-size:29px;line-height:1.4;letter-spacing:-.5px;margin:7px 0 0}h2{font-size:18px;margin:0}h3{margin:9px 0 5px;font-size:19px}.pill{font-size:12px;background:#e7ede5;border-radius:20px;padding:8px 13px}.connection{font-size:12px;border:1px solid #dce5d9;border-radius:8px;padding:11px 14px;background:#edf2e8;color:#556d51}.connection.warning{background:#fff2dc;border-color:#eddfc2;color:#855d25}.tabs{display:flex;gap:6px;background:#e7ece5;border-radius:12px;padding:5px;max-width:560px;margin:24px 0}.tabs button{border:0;background:none;color:#677e70;flex:1;padding:12px;font-weight:700;border-radius:8px}.tabs button.active{background:#fff;color:var(--green);box-shadow:0 2px 7px #1b3c3010}.workspace{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.85fr);gap:24px;align-items:start}.card{border:1px solid var(--line);background:#fff;border-radius:18px;padding:28px;box-shadow:0 4px 22px #24433203}.step-title{display:flex;gap:12px;align-items:center;margin-bottom:20px}.step{font-family:ui-monospace,monospace;font-size:13px;border:1px solid #d4dfd3;width:31px;height:31px;border-radius:50%;display:grid;place-items:center;color:#648269;flex-shrink:0}.muted{color:var(--muted);font-size:13px;line-height:1.65}.step-title p{margin:4px 0 0;font-size:12px}.scan-button{border:1px dashed #a4b9a3;background:#f5f8f1;display:flex;gap:11px;justify-content:center;align-items:center;color:var(--green);width:100%;height:92px;border-radius:10px;font-weight:700;margin-bottom:15px}.scan-button:hover{background:#eaf1e4}.barcode-row{display:flex;gap:8px}.barcode-row input{min-width:0;flex:1;font-size:12px}.secondary{background:#fff;border:1px solid #d1ded1;border-radius:8px;padding:10px 15px;color:#395b49;white-space:nowrap;font-size:13px}.text-btn{border:0;background:none;color:#597663;font-size:12px;padding:8px}.divider{height:1px;background:var(--line);margin:26px 0}.quantity{margin-left:auto;font-family:ui-monospace,monospace;color:#91a28d}.part-card{margin-top:16px;background:#eff5e9;border-left:3px solid #7e9b68;padding:16px;border-radius:3px 8px 8px 3px}.mini-tag{font-size:9px;letter-spacing:1.2px;font-weight:700;color:#728b61}.part-card p{font-size:12px;line-height:1.5;color:#64785b;margin:4px 0 9px}.fine{color:#859184;font-size:11px;line-height:1.7}.input-help{margin:5px 0 0}label{display:block;font-size:13px;font-weight:650;margin:19px 0 8px}label span{font-weight:400;color:#91a28e;font-size:11px;margin-left:6px}input,select{width:100%;height:47px;border:1px solid #d7e1d5;border-radius:8px;padding:10px 12px;color:#254b3d;background:#fff;outline:none}input:focus,select:focus{border-color:#6c966c;box-shadow:0 0 0 3px #809f6819}.serial{font-family:ui-monospace,monospace;letter-spacing:.4px}.primary{border:0;background:var(--green);color:#fff;padding:15px 18px;border-radius:9px;font-size:14px;font-weight:700}.primary:hover{filter:brightness(1.07)}#submit,#loginButton{width:100%;margin-top:26px}body.outbound{--green:#8d4f30}body.transfer{--green:#2f5a8d}.align-center{text-align:center}.full{width:100%;margin-top:12px}.log-heading{display:flex;justify-content:space-between;align-items:center}.log-heading h2{margin-top:6px}.logs-card{padding:25px 23px;max-height:850px;overflow:auto}.log-row{padding:16px 0;border-bottom:1px solid #edf1eb}.log-row:last-child{border:0}.log-top{display:flex;justify-content:space-between;gap:6px;font-size:12px}.log-state{color:#4a8053}.log-state.issue{color:#b66536}.log-serial{font-family:ui-monospace,monospace;font-size:13px;margin:9px 0 5px;overflow-wrap:anywhere}.log-info{font-size:10px;color:#82907f;line-height:1.8;overflow-wrap:anywhere}.log-error{font-size:11px;color:#9a653d;line-height:1.6;margin-top:7px}footer{text-align:center;color:#99a292;font-size:10px;letter-spacing:1px;margin-top:30px}.login-card{max-width:430px;margin:40px auto}.login-card h1{font-size:27px}.login-card>.muted{margin:12px 0 26px}#feedback{border-radius:12px;padding:16px 20px;margin-top:20px;background:#e4f1de;border:1px solid #bed5b7;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;font-size:13px;position:sticky;bottom:16px;box-shadow:0 5px 20px #193c3414}#feedback.error{background:#fff0e5;border-color:#e7bca1;color:#884327}video{width:100%;max-height:300px;object-fit:cover;background:#132c22;border-radius:10px}.camera-tools{display:flex;gap:10px;justify-content:center;margin:10px 0}dialog{border:1px solid var(--line);border-radius:16px;max-width:440px;width:calc(100% - 32px);padding:28px;color:#244737}dialog::backdrop{background:#13251db0}dialog h2{margin:10px 0 25px}dl{display:grid;grid-template-columns:80px 1fr;gap:13px;font-size:13px}dt{color:#83917f}dd{margin:0;overflow-wrap:anywhere}.dialog-actions{display:flex;gap:12px;margin-top:25px}.dialog-actions button{flex:1}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}button:focus-visible{outline:3px solid #9bb78e;outline-offset:3px}@media(max-width:700px){.top{height:72px;padding:0 20px}main{padding:25px 16px 30px}h1{font-size:24px}.workspace{grid-template-columns:1fr;gap:20px}.card{padding:22px 20px;border-radius:14px}.tabs{max-width:none;margin:20px 0}.intro{margin-bottom:17px}.pill{font-size:11px;padding:7px 10px}.logs-card{max-height:420px}.login-card{margin:20px auto}.connection{line-height:1.6}.scan-button{height:86px}input,select{font-size:16px}.barcode-row input{font-size:13px}#feedback{bottom:12px}}
.log-info{white-space:pre-line}
.camera-stage{position:relative;line-height:0}
.scan-frame{position:absolute;left:20%;top:25%;width:60%;height:50%;pointer-events:none;box-shadow:0 0 0 9999px rgba(10,26,20,.42);border-radius:8px}
.scan-frame span{position:absolute;width:26px;height:26px;border:3px solid #7ee08a;border-radius:3px}
.scan-frame span:nth-child(1){left:-2px;top:-2px;border-right:0;border-bottom:0}
.scan-frame span:nth-child(2){right:-2px;top:-2px;border-left:0;border-bottom:0}
.scan-frame span:nth-child(3){left:-2px;bottom:-2px;border-right:0;border-top:0}
.scan-frame span:nth-child(4){right:-2px;bottom:-2px;border-left:0;border-top:0}
.scan-hint{margin:8px 0 0;letter-spacing:.5px}
.secondary.on{background:var(--green);color:#fff;border-color:var(--green)}
