:root{--kn-ink:#293a34;--kn-muted:#7a867e;--kn-paper:#f3f5f1;--kn-line:#dce3d9;--kn-green:#416852;--kn-pale:#e7eee5;--kn-red:#ad564a;--kn-amber:#aa7b37;--kn-white:#fff;--kn-serif:"Noto Serif SC","Songti SC","SimSun",serif}
body[data-knit-app]{margin:0;background:var(--kn-paper);color:var(--kn-ink);font:14px/1.65 "PingFang SC","Microsoft YaHei",sans-serif}#knitApp *,#knitDialog *{box-sizing:border-box}#knitApp button,#knitDialog button,#knitApp input,#knitDialog input,#knitApp select,#knitDialog select,#knitDialog textarea{font:inherit}#knitApp button,#knitDialog button{cursor:pointer}#knitApp button:disabled,#knitDialog button:disabled{cursor:not-allowed;opacity:.5}#knitApp a{color:inherit}#knitApp [hidden],#knitDialog [hidden]{display:none!important}
.kn-top{height:79px;background:#fff;border-bottom:1px solid var(--kn-line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;gap:16px}.kn-brand{display:flex;align-items:center;gap:14px}.kn-monogram{height:38px;width:38px;display:grid;place-items:center;border:1px solid #aabbab;font:24px var(--kn-serif);color:#54715a}.kn-brand strong{display:block;font:500 20px/1.45 var(--kn-serif);letter-spacing:1px}.kn-brand small{display:block;color:var(--kn-muted);font:9px/1.8 Georgia,serif;letter-spacing:2px}.kn-top-right{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--kn-muted)}.kn-top-right a{text-decoration:none}.kn-status{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.kn-dot{width:6px;height:6px;border-radius:50%;background:#6d9676;box-shadow:0 0 0 3px #edf3ec}.kn-status.warn{color:var(--kn-amber)}.kn-status.warn .kn-dot{background:var(--kn-amber)}
.kn-nav{padding:0 34px;background:#fff;display:flex;gap:31px;border-bottom:1px solid var(--kn-line);overflow-x:auto}.kn-nav button{padding:17px 2px 15px;border:0;border-bottom:3px solid transparent;background:none;color:#7c877f;white-space:nowrap;font-size:13px!important}.kn-nav button.active{border-bottom-color:var(--kn-green);color:var(--kn-green);font-weight:600}.kn-main{max-width:1650px;margin:auto;padding:29px 34px 50px}.kn-pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}.kn-eyebrow{font:10px/1.5 Georgia,serif;letter-spacing:2.4px;color:#8a9987;margin:0 0 6px}.kn-pagehead h1{font:500 29px/1.4 var(--kn-serif);letter-spacing:1px;margin:0 0 5px}.kn-sub{font-size:12px;color:var(--kn-muted);margin:0}.kn-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kn-btn{border:1px solid #d8e0d5;background:#fff;color:#49634f;padding:7px 13px;border-radius:5px;line-height:1.5;white-space:nowrap;font-size:12px!important;text-decoration:none}.kn-btn:hover{background:#eef3eb;border-color:#afbeaa}.kn-btn.primary{background:var(--kn-green);border-color:var(--kn-green);color:#fff}.kn-btn.primary:hover{background:#31503e}.kn-btn.danger{color:var(--kn-red);border-color:#ebd8d0}.kn-btn.text{border-color:transparent;background:transparent;padding:4px 7px}.kn-btn.small{padding:4px 8px;font-size:11px!important}.kn-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px;margin-bottom:23px}.kn-kpi{background:#fff;border:1px solid var(--kn-line);border-radius:7px;padding:17px 19px;min-height:105px}.kn-kpi span{display:block;font-size:11px;color:var(--kn-muted)}.kn-kpi strong{display:inline-block;font:500 30px/1.5 Georgia,serif;letter-spacing:-.5px;margin-right:6px}.kn-kpi small{font-size:11px;color:var(--kn-muted)}.kn-kpi.accent{background:#e9eee4;border-color:#d9e1d2}.kn-kpi .kn-footnote{display:block;font:10px/1.5 "Microsoft YaHei",sans-serif;color:#87917f;margin-top:2px}.kn-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 17px}.kn-toolbar .spacer{flex:1}.kn-input,.kn-toolbar input,.kn-toolbar select{background:#fff;border:1px solid #d7dfd3;border-radius:5px;color:var(--kn-ink);padding:8px 11px;min-height:35px;font:12px/1.5 "Microsoft YaHei",sans-serif}.kn-toolbar input[type=search]{width:250px}.kn-chip{font-size:11px;border-radius:4px;background:#edf1e9;color:#75816d;padding:4px 8px;white-space:nowrap}.kn-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:4px;background:#f0f2ed;color:#82907d;font-size:10px;white-space:nowrap}.kn-badge.running,.kn-badge.finished{background:#e5efe6;color:#4a7859}.kn-badge.paused,.kn-badge.bad{background:#f9ece5;color:#b56a47}.kn-badge.queued{background:#eef0e5;color:#9a8b55}.kn-badge.cancelled{background:#f1f1ef;color:#999}.kn-machines{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.kn-machine{background:#fff;border:1px solid var(--kn-line);border-radius:7px;overflow:hidden;min-width:0}.kn-machine.running{border-top:3px solid #648468}.kn-machine.paused{border-top:3px solid #c08e5a}.kn-machine.idle{border-top:3px solid #d2dacb}.kn-machine-head{display:flex;justify-content:space-between;align-items:center;padding:14px 17px 11px;gap:10px}.kn-machine-head strong{font-size:14px;letter-spacing:.5px}.kn-machine-head small{font-size:10px;color:var(--kn-muted);display:block;margin-top:2px}.kn-machine-body{padding:3px 17px 15px}.kn-task-info{display:flex;gap:13px;min-height:103px}.kn-photo{display:flex;flex:0 0 78px;align-items:center;justify-content:center;width:78px;height:94px;object-fit:cover;border-radius:4px;background:#f2f1e9;border:1px solid #e4e6dc;color:#9ca691;font:11px var(--kn-serif);overflow:hidden}.kn-photo img{width:100%;height:100%;object-fit:cover}.kn-photo.tiny{width:46px;height:55px;flex-basis:46px}.kn-task-title{font-size:16px;margin:0 0 2px;font-weight:600;letter-spacing:.5px}.kn-task-data{min-width:0;flex:1}.kn-task-data p{font-size:11px;margin:3px 0;color:var(--kn-muted);overflow-wrap:anywhere}.kn-task-data .kn-task-style{color:#415b49;font-size:12px}.kn-progress{height:4px;background:#edf0e9;border-radius:6px;overflow:hidden;margin-top:10px}.kn-progress>i{display:block;height:100%;background:#94ab7a}.kn-progress-label{display:flex;justify-content:space-between;font-size:10px;color:#85917d;margin-top:5px}.kn-yarn{padding:9px 10px;background:#f6f7f2;border-radius:4px;font-size:10px;color:#84907b;margin-top:11px;overflow-wrap:anywhere}.kn-yarn strong{font-weight:400;color:#596d50}.kn-machine-foot{display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid #edf0e8;padding:10px 17px}.kn-queue{padding:9px 17px;border-top:1px solid #edf0e8;background:#fcfdf9;font-size:11px}.kn-queue-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0}.kn-queue-row span{color:#7d8975;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kn-empty-machine{height:158px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;color:#a0aa96;background:linear-gradient(135deg,#fdfefb,#f6f8f2);margin:0 17px 15px;border-radius:5px;border:1px dashed #e2e7db}.kn-empty-machine svg{width:42px;height:42px;stroke:#b5c1ac;fill:none;stroke-width:1.2}.kn-empty-machine strong{font:16px var(--kn-serif)}.kn-empty-machine p{margin:0;font-size:11px}.kn-note{padding:12px 15px;background:#edf2e8;border:1px solid #dce5d5;border-radius:5px;color:#6c7d61;font-size:12px;margin:14px 0}.kn-note.warn{background:#fff8e9;border-color:#ecdcb9;color:#95723d}.kn-empty{padding:58px 20px;text-align:center;border:1px dashed #d4dfcd;border-radius:7px;background:#fbfcf9;color:var(--kn-muted)}.kn-empty h3{font:22px var(--kn-serif);color:#6a805f;margin:0 0 10px}.kn-empty p{font-size:12px;margin:0 0 18px}.kn-section{background:#fff;border:1px solid var(--kn-line);border-radius:7px;margin:18px 0;overflow:hidden}.kn-section-title{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 19px;border-bottom:1px solid #e6ebe1}.kn-section-title h2{font-size:14px;font-weight:500;margin:0}.kn-section-title small{color:var(--kn-muted);font-size:11px}.kn-table-wrap{overflow:auto}.kn-table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;white-space:nowrap}.kn-table th{background:#f8faf5;color:#829075;font-weight:400;font-size:11px;padding:11px 15px;border-bottom:1px solid #e2e8dc}.kn-table td{padding:13px 15px;border-bottom:1px solid #edf0e8;vertical-align:middle}.kn-table tr:last-child td{border-bottom:0}.kn-table td.wrap{white-space:normal;min-width:160px;max-width:270px}.kn-table td small{display:block;color:var(--kn-muted);font-size:10px}.kn-table .kn-inline-style{display:flex;align-items:center;gap:11px}.kn-number{font-variant-numeric:tabular-nums;font-family:Georgia,"Microsoft YaHei",serif;font-size:15px}.kn-red{color:var(--kn-red)}.kn-split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.kn-microbars{display:flex;flex-direction:column;gap:11px;padding:18px}.kn-bar{display:grid;grid-template-columns:80px 1fr 90px;gap:12px;align-items:center;font-size:11px;color:var(--kn-muted)}.kn-bar>i{height:8px;background:#eff3e9;border-radius:3px;overflow:hidden}.kn-bar>i>b{display:block;height:100%;background:#93aa78;border-radius:3px}.kn-footer{border-top:1px solid #dce3d5;padding-top:17px;margin-top:30px;display:flex;justify-content:space-between;font-size:10px;color:#919d87;gap:10px}.kn-stage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.kn-job{padding:18px;border:1px solid var(--kn-line);border-radius:7px;background:#fff}.kn-job-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.kn-job h3{margin:0;font-size:15px}.kn-job p{margin:6px 0;font-size:11px;color:var(--kn-muted)}.kn-job .kn-actions{margin-top:13px}.kn-checks{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.kn-checks label{display:flex!important;align-items:center;gap:5px!important}.kn-checks input{width:auto!important;min-height:0!important}.kn-inline{display:inline-flex;gap:6px;align-items:center}.kn-legend{color:var(--kn-muted);font-size:11px;line-height:1.8}
#knitDialog{width:min(760px,calc(100vw - 32px));max-height:92vh;border:1px solid #d6dfcf;border-radius:9px;background:#fff;padding:0;color:var(--kn-ink);box-shadow:0 25px 70px #1d331f24}#knitDialog.wide{width:min(1050px,calc(100vw - 32px))}#knitDialog::backdrop{background:#19271a66;backdrop-filter:blur(2px)}.kn-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:20px 25px;border-bottom:1px solid #e4e9de;background:#fcfdf9}.kn-dialog-head h2{font:500 22px var(--kn-serif);margin:0}.kn-dialog-body{padding:22px 25px;max-height:calc(92vh - 145px);overflow:auto}.kn-dialog-foot{padding:15px 25px;background:#f8faf5;border-top:1px solid #e1e8da;display:flex;justify-content:flex-end;gap:10px}.kn-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 18px}.kn-form-grid>.full{grid-column:1/-1}.kn-field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#6f7d66}.kn-field input,.kn-field select,.kn-field textarea,.kn-edit-row input,.kn-edit-row select{width:100%;min-width:0;border:1px solid #d7dfcf;border-radius:4px;background:#fff;padding:9px 10px;min-height:38px;color:#33492e;outline:none}.kn-field input:focus,.kn-field select:focus,.kn-field textarea:focus,.kn-edit-row input:focus{border-color:#7f9d70;box-shadow:0 0 0 2px #e9f0e1}.kn-field input[readonly]{background:#f3f6ee;color:#8a9781}.kn-field small{font-size:10px;color:#95a08c}.kn-field textarea{resize:vertical;min-height:65px}.kn-field h3{font-size:13px;margin:7px 0 3px;font-weight:500;color:#557047}.kn-edit-group{border:1px solid #e0e7d9;border-radius:5px;padding:13px;margin:16px 0;background:#fafcf6}.kn-edit-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;gap:10px;font-size:12px}.kn-edit-row{display:grid;grid-template-columns:1fr 1fr 32px;gap:8px;align-items:end;margin:7px 0}.kn-edit-row.yarn{grid-template-columns:1.3fr .8fr 1.2fr 1fr 1fr 32px}.kn-edit-row.defect{grid-template-columns:1fr 100px 1.3fr 32px}.kn-edit-row label{font-size:10px;color:#8c9a7f;display:flex;flex-direction:column;gap:4px}.kn-edit-row button{border:0;background:transparent;color:#a2ad97;height:38px;font-size:18px!important}.kn-form-error{display:none;color:#a54e3e;background:#fdf0e9;border:1px solid #edcdbf;padding:11px 13px;border-radius:4px;font-size:12px;white-space:pre-line;margin:0 0 15px}.kn-form-error.active{display:block}.kn-form-error button{margin:8px 0 0;display:block}.kn-details-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:15px 0}.kn-details-grid div{padding:12px;background:#f5f8ef;border-radius:4px}.kn-details-grid small{display:block;color:#87977c;font-size:11px}.kn-details-grid strong{font-size:13px;word-break:break-all;font-weight:500}.kn-detail-image{max-height:260px;width:auto;max-width:100%;object-fit:contain;border:1px solid #e0e6d8;border-radius:5px}.kn-timeline{border-left:2px solid #d9e2d0;margin:10px 0 10px 7px;padding:0 0 0 19px}.kn-timeline p{position:relative;margin:0 0 17px;font-size:12px}.kn-timeline p:before{content:'';position:absolute;left:-24px;top:7px;width:8px;height:8px;border-radius:50%;background:#8fa67e}.kn-timeline small{display:block;color:#8c9982;font-size:10px}#knitToast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;background:#334f3c;color:#fff;border-radius:6px;padding:11px 22px;box-shadow:0 6px 24px #1a322833;font-size:12px;display:none;max-width:90vw}#knitToast.active{display:block}.kn-login-error{color:#a65b48;font-size:12px;min-height:18px;margin:10px 0}.kn-denied{text-align:center;padding:40px 26px}.kn-denied h2{font:26px var(--kn-serif)}.kn-denied p{color:var(--kn-muted)}
@media(min-width:1500px){.kn-machines{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1100px){.kn-machines{grid-template-columns:repeat(2,minmax(0,1fr))}.kn-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.kn-top{padding:0 22px}.kn-nav{padding:0 22px;gap:23px}.kn-main{padding:24px 22px}.kn-stage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kn-top-right .kn-version{display:none}}
@media(max-width:700px){.kn-top{height:auto;min-height:75px;padding:13px 16px;flex-wrap:wrap}.kn-top-right{gap:10px;font-size:11px;flex-wrap:wrap}.kn-brand strong{font-size:19px}.kn-nav{padding:0 16px;gap:22px}.kn-main{padding:23px 16px}.kn-pagehead{align-items:flex-start;flex-direction:column;gap:14px}.kn-pagehead h1{font-size:25px}.kn-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kn-kpi{padding:13px 14px;min-height:95px}.kn-kpi strong{font-size:28px}.kn-cards .kn-kpi:last-child{grid-column:1/-1;min-height:80px}.kn-machines,.kn-stage-grid,.kn-split{grid-template-columns:1fr}.kn-toolbar input[type=search]{width:100%}.kn-toolbar .spacer{display:none}.kn-dialog-head{padding:17px}.kn-dialog-body{padding:18px 17px}.kn-dialog-foot{padding:13px 17px}.kn-form-grid{grid-template-columns:1fr}.kn-details-grid{grid-template-columns:repeat(2,1fr)}.kn-edit-row.yarn{grid-template-columns:1fr 1fr 32px}.kn-edit-row.yarn label:nth-child(3){grid-column:1}.kn-edit-row.yarn label:nth-child(4){grid-column:2}.kn-edit-row.yarn label:nth-child(5){grid-column:1/3}.kn-edit-row.yarn button{grid-column:3;grid-row:1/4}.kn-edit-row.defect{grid-template-columns:1fr 90px 32px}.kn-edit-row.defect label:nth-child(3){grid-column:1/3}.kn-edit-row.defect button{grid-column:3;grid-row:1/3}.kn-footer{flex-direction:column}.kn-pagehead>.kn-actions{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.kn-allocation-row{display:grid;grid-template-columns:1fr 180px;gap:8px 20px;align-items:center;padding:14px 0;border-bottom:1px solid #e0e7d9}.kn-allocation-row:last-child{border-bottom:0}.kn-allocation-row strong{font-size:15px;font-weight:500}.kn-allocation-row small{display:block;font-size:11px;color:var(--kn-muted);margin-top:5px}.kn-allocation-parts{grid-column:1/-1;margin:2px 0 0;font-size:11px;color:#7a8c6c;overflow-wrap:anywhere}@media(max-width:700px){.kn-allocation-row{grid-template-columns:1fr 110px;gap:8px 12px}.kn-allocation-row small{max-width:150px}}

/* Compact equipment and task ledger, using the original knit palette and typography. */
.kn-board-layout .kn-main{max-width:none;width:100%;padding:22px 24px 40px}
.kn-plan-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.kn-plan-counts{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--kn-muted)}.kn-plan-counts>span:first-child{color:var(--kn-ink);padding-right:4px}.kn-count{display:inline-flex;align-items:center;gap:5px}.kn-count i{width:6px;height:6px;border-radius:50%;background:#a0aa9c}.kn-count.running i{background:#648468}.kn-count.paused i{background:#b56b5c}.kn-count.queued i{background:#b39a60}.kn-plan-alert{padding:10px 14px;background:#fbf1ec;border:1px solid #ecd9cf;border-radius:6px;color:#a06650;font-size:12px;margin-bottom:16px}
.kn-equipment-section,.kn-plan-details{padding:17px;background:#fff;border:1px solid var(--kn-line);border-radius:8px;margin-bottom:18px}.kn-plan-section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:15px}.kn-plan-section-head h2{font:500 18px/1.5 var(--kn-serif);letter-spacing:.6px;margin:0;color:var(--kn-ink)}.kn-plan-section-head small{font:11px/1.5 "Microsoft YaHei",sans-serif;font-weight:400;color:var(--kn-muted);margin-left:6px;letter-spacing:0}.kn-plan-section-head .kn-legend{font-size:11px;color:#909b88}
.kn-device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px}.kn-device{--device-accent:#8f9d89;--device-tint:#f4f6f0;--device-line:#dfe5d9;display:flex;flex-direction:column;gap:10px;min-width:0;min-height:137px;text-align:left;border:1px solid var(--device-line);border-top:3px solid var(--device-accent);border-radius:8px;background:linear-gradient(145deg,#fff,var(--device-tint));padding:11px 12px 10px;color:var(--kn-ink);cursor:pointer;position:relative;transition:box-shadow .18s,border-color .18s,transform .18s}.kn-device.running{--device-accent:#648468;--device-tint:#f0f6ed;--device-line:#d1dec9}.kn-device.paused{--device-accent:#b56b5c;--device-tint:#fcf1ec;--device-line:#ebd6cb}.kn-device.queued{--device-accent:#b39a60;--device-tint:#faf7ec;--device-line:#e6dfc5}.kn-device.selected{outline:2px solid var(--kn-green);outline-offset:2px;box-shadow:0 3px 12px #41685218}.kn-device:focus-visible{outline:2px solid var(--kn-green);outline-offset:3px}.kn-device:hover{border-color:var(--device-accent);box-shadow:0 5px 13px #344c3910;transform:translateY(-1px)}
.kn-device-title{display:flex;justify-content:space-between;align-items:center;gap:4px}.kn-device-title strong{font:600 14px/1.5 "Microsoft YaHei",sans-serif;letter-spacing:.3px;white-space:nowrap}.kn-device-state{display:inline-flex;align-items:center;gap:4px;font:10px/1.6 "Microsoft YaHei",sans-serif;color:var(--device-accent);white-space:nowrap}.kn-device-state i{width:5px;height:5px;border-radius:50%;background:currentColor}.kn-device-identity{display:flex;align-items:center;gap:9px;min-width:0}.kn-device-icon{flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--device-line);border-radius:7px;background:#ffffffb8;color:var(--device-accent)}.kn-device-icon svg{display:block;width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.kn-device-spec{min-width:0;display:flex;flex-direction:column;gap:1px}.kn-device-model{font:500 11px/1.55 "Microsoft YaHei",sans-serif;color:#586a54;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kn-device-gauge{font:10px/1.5 "Microsoft YaHei",sans-serif;color:var(--kn-muted)}.kn-device-summary{display:flex;justify-content:space-between;align-items:center;gap:4px;margin-top:auto;padding-top:7px;border-top:1px solid var(--device-line);font:10px/1.5 "Microsoft YaHei",sans-serif;color:var(--kn-muted)}.kn-device-summary strong{font-weight:600;color:#53634f}.kn-device-order{font:10px/1.5 "Microsoft YaHei",sans-serif;color:#76816e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:-6px}.kn-device.idle .kn-device-order{color:#9ba491}.kn-device.idle .kn-device-summary{color:#8f9a85}
.kn-plan-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px}.kn-task-filters{display:flex;gap:2px;background:#f0f3ec;padding:3px;border-radius:6px}.kn-task-filters .kn-btn{border:0;border-radius:4px;background:transparent;padding:5px 10px;color:#849079;font-size:11px!important}.kn-task-filters .kn-btn.selected{background:#fff;color:var(--kn-green);box-shadow:0 1px 4px #344f3420;font-weight:600}.kn-plan-toolbar input,.kn-plan-toolbar select{border:1px solid #d7dfd3;border-radius:5px;padding:7px 9px;font-size:11px!important;color:#68795e;background:#fff;max-width:100%;min-height:32px}.kn-plan-toolbar input[type=search]{width:235px}.kn-plan-toolbar label{font-size:11px;color:var(--kn-muted);display:flex;align-items:center;gap:6px}.kn-plan-hint{font-size:11px;line-height:1.7;color:#87937b;background:#f7f9f3;border-radius:5px;padding:8px 11px;margin:0 0 12px}
.kn-plan-table-wrap{max-height:67vh;border:1px solid #e1e7db;border-radius:5px;outline:none}.kn-plan-table{width:100%;min-width:0;table-layout:fixed;white-space:normal;font-size:11px;background:#fff}.kn-plan-table th{background:#f8faf5;color:#829075;font-size:11px;font-weight:400;padding:11px 9px;position:sticky;top:0;z-index:3;letter-spacing:0}.kn-plan-table td{padding:9px;font-size:11px;border-bottom:1px solid #edf0e8;vertical-align:middle}.kn-plan-table td:first-child{min-width:0;background:inherit}.kn-plan-table th:first-child,.kn-plan-table td:first-child{position:sticky;left:0;z-index:2}.kn-plan-table th:first-child{z-index:4;background:#f8faf5}.kn-plan-table tr{background:#fff}.kn-plan-table tr:nth-child(even){background:#fdfefa}.kn-plan-table tr.overdue{background:#fff3ed}.kn-plan-table tr.paused{background:#fdf8f3}.kn-plan-table tr:hover{background:#f1f5ec}.kn-plan-table .kn-photo.tiny{width:43px;height:48px;font-size:9px;border-radius:4px}.kn-plan-table td small{font-size:10px;line-height:1.45;margin-top:3px;color:#919d86}.kn-plan-table .kn-badge{font-size:10px;white-space:nowrap;padding:2px 6px}.kn-plan-table .kn-plan-row-actions{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.kn-plan-empty{padding:28px 15px;display:flex;align-items:center;gap:20px;color:var(--kn-muted)}.kn-plan-table-wrap:focus-visible{outline:2px solid #7f9d70;outline-offset:2px}
@media(max-width:700px){.kn-board-layout .kn-main{padding:18px 12px 30px}.kn-plan-actions{gap:12px;margin-bottom:15px}.kn-plan-counts{gap:10px;font-size:10px}.kn-equipment-section,.kn-plan-details{padding:12px}.kn-device-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.kn-device{padding:10px;min-height:134px}.kn-plan-section-head h2{font-size:17px}.kn-plan-section-head .kn-legend{display:none}.kn-plan-toolbar{gap:8px}.kn-plan-toolbar input[type=search]{width:100%}.kn-task-filters{max-width:100%;overflow:auto;white-space:nowrap}.kn-task-filters .kn-btn{flex-shrink:0;padding:5px 9px}.kn-plan-table-wrap{max-height:65vh}.kn-plan-empty{align-items:flex-start;flex-direction:column;gap:12px}}
@media(prefers-reduced-motion:reduce){.kn-device{transition:none}.kn-device:hover{transform:none}}

/* Knit Gantt: original sage palette, one machine per row. */
.kn-view-toggle{display:inline-flex;gap:2px;padding:3px;border-radius:6px;background:#edf2e8}.kn-view-toggle .kn-btn{border:0;background:transparent;padding:5px 14px;color:#7c8c73}.kn-view-toggle .kn-btn.selected{background:#fff;box-shadow:0 1px 4px #344f3420;color:var(--kn-green);font-weight:600}
.kn-gantt-panel{display:flex;flex-direction:column;gap:12px;position:relative;height:700px;max-height:88vh}.kn-gantt-panel .kn-plan-section-head{margin:0;flex-shrink:0}.kn-gantt-panel.is-expanded{position:fixed;inset:0;z-index:50;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:22px 26px 15px;background:#fcfdf9}.kn-gantt-expanded{overflow:hidden}.kn-gantt-title{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}.kn-gantt-tools{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.kn-gantt-tools input,.kn-gantt-tools select{border:1px solid #d7dfd3;border-radius:5px;color:#617559;background:#fff;padding:6px 8px;height:32px;font-size:11px!important}.kn-gantt-tools input[type=search]{width:205px}.kn-gantt-tools select{max-width:190px}.kn-gantt-scroll{flex:1;min-height:0;overflow:auto;isolation:isolate;border:1px solid #dce5d5;border-radius:7px;background:#fff;scrollbar-color:#bfccb5 #f4f7ef}.kn-gantt-scroll:focus-visible{outline:2px solid #7f9d70;outline-offset:2px}.kn-gantt-grid{width:100%}.kn-gantt-header,.kn-gantt-row{display:flex}.kn-gantt-header{position:sticky;top:0;z-index:7;height:49px;background:#f3f6ed;border-bottom:1px solid #dce5d5}.kn-gantt-corner,.kn-gantt-machine{position:sticky;left:0;flex:0 0 170px;width:170px;z-index:4;border:0;border-right:1px solid #e0e7d8;box-sizing:border-box;background:#fff;padding:8px 14px;text-align:left;color:var(--kn-ink)}.kn-gantt-corner{display:flex;align-items:center;background:#f3f6ed;font-size:11px;color:#78896a;z-index:8}.kn-gantt-machine{display:flex;flex-direction:column;justify-content:center;gap:1px;overflow:hidden}.kn-gantt-machine strong{font:600 12px/1.4 "Microsoft YaHei",sans-serif}.kn-gantt-machine small{font:10px/1.4 "Microsoft YaHei",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#87967b}.kn-gantt-machine:hover{background:#f4f8ee}.kn-gantt-axis,.kn-gantt-track{position:relative;flex:1;min-width:0}.kn-gantt-months{height:24px;border-bottom:1px solid #e1e8d9}.kn-gantt-months span{position:absolute;height:23px;padding:3px 8px;border-right:1px solid #e1e8d9;overflow:hidden;white-space:nowrap;font-size:10px;color:#7c8c6d}.kn-gantt-day{position:absolute;top:24px;height:24px;text-align:center;line-height:24px;border-right:1px solid #e8eddf;font-size:10px;color:#87977a;overflow:hidden}.kn-gantt-day.weekend{background:#eef2e9;color:#a1ab97}.kn-gantt-day.today{background:#dde9d6;color:#44643d;font-weight:600}.kn-gantt-row{border-bottom:1px solid #e9eee1}.kn-gantt-row:last-child{border-bottom:0}.kn-gantt-row:nth-child(odd) .kn-gantt-track{background-color:#fbfcf8}.kn-gantt-track{height:100%;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--kn-day-width) - 1px),#edf1e6 calc(var(--kn-day-width) - 1px),#edf1e6 var(--kn-day-width))}.kn-gantt-today{position:absolute;top:0;bottom:0;border-left:1px dashed #8da178;z-index:1;pointer-events:none}.kn-gantt-item{--bar-line:#68876a;--bar-bg:#edf4e9;--bar-ink:#486a48;position:absolute;height:28px;z-index:2;border:1px solid var(--bar-line);border-radius:5px;min-width:5px;background:var(--bar-bg)}.kn-gantt-item.queued{--bar-line:#b6a066;--bar-bg:#faf6e8;--bar-ink:#887440}.kn-gantt-item.paused{--bar-line:#ba7d6b;--bar-bg:#fcf0e9;--bar-ink:#a46752}.kn-gantt-item.finished{--bar-line:#a0ad96;--bar-bg:#f0f3eb;--bar-ink:#798b6b}.kn-gantt-item.late{border-style:dashed;border-width:2px}.kn-gantt-item.clipped-start{border-left-style:dashed;border-radius:0 5px 5px 0}.kn-gantt-item.clipped-end{border-right-style:dashed;border-radius:5px 0 0 5px}.kn-gantt-bar{position:absolute;inset:0;width:100%;border:0;border-radius:inherit;color:var(--bar-ink);background:transparent;text-align:left;padding:0 12px 0 7px;overflow:hidden;font-size:11px!important;white-space:nowrap}.kn-gantt-bar>span{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;line-height:24px;font-size:11px}.kn-gantt-progress{position:absolute;inset:0 auto 0 0;background:var(--bar-line);opacity:.13;pointer-events:none}.kn-gantt-bar:hover{box-shadow:0 0 0 2px #71896130}.kn-gantt-bar:focus-visible,.kn-gantt-machine:focus-visible{outline:2px solid var(--kn-green);outline-offset:-2px}.kn-gantt-resize{position:absolute;right:0;top:0;bottom:0;width:10px;cursor:ew-resize;touch-action:none;background:var(--bar-line);opacity:.25;border-left:1px solid currentColor;border-radius:0 4px 4px 0}.kn-gantt-resize:hover,.kn-gantt-resize:focus-visible{opacity:.7;outline:2px solid var(--bar-ink)}.kn-gantt-empty{position:absolute;top:50%;transform:translateY(-50%);left:12px;font-size:10px;color:#a3ae98}.kn-gantt-no-results{padding:42px;text-align:center;color:var(--kn-muted);font-size:12px}.kn-gantt-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#8d9b80;font-size:10px}.kn-gantt-footer .kn-plan-counts{font-size:10px;gap:11px}.kn-gantt-dragging{user-select:none;cursor:ew-resize}#kn-gantt-drag-tip{position:fixed;z-index:100;background:#416852;color:#fff;padding:8px 12px;border-radius:5px;box-shadow:0 3px 15px #293a3422;font-size:12px;pointer-events:none;max-width:300px}.kn-gantt-impact{margin-top:16px;padding:13px;background:#f5f8ef;border:1px solid #dce5d5;border-radius:6px;font-size:12px}.kn-gantt-impact>p{margin:0 0 10px;color:#738566}.kn-gantt-impact>div{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 0;border-top:1px solid #e1e8d8}.kn-gantt-impact strong{font-weight:500}.kn-gantt-impact span{text-align:right;color:#8f9b84;font-size:11px}.kn-gantt-impact b{color:#506e47;font-weight:500}.kn-gantt-impact small{width:100%;text-align:right;color:#a66a50;font-size:10px}
@media(max-width:700px){.kn-gantt-panel.is-expanded{padding:13px 12px 10px}.kn-gantt-title{gap:5px}.kn-gantt-title small{font-size:10px}.kn-gantt-panel .kn-plan-section-head{gap:8px}.kn-gantt-tools{gap:7px}.kn-gantt-tools .kn-actions{gap:5px}.kn-gantt-tools input[type=search]{width:170px}.kn-gantt-tools select{max-width:145px}.kn-gantt-footer .kn-plan-counts{gap:8px}.kn-gantt-corner,.kn-gantt-machine{flex-basis:140px;width:140px;padding-left:10px}.kn-gantt-footer>span{line-height:1.7}.kn-gantt-panel{height:650px}}

/* Fit all production fields to the available width, keeping every value readable. */
.kn-plan-table th,.kn-plan-table td{white-space:normal;overflow-wrap:anywhere;line-height:1.55;padding:10px 6px}
.kn-plan-table .kn-plan-date{display:block;white-space:nowrap;font-variant-numeric:tabular-nums}
.kn-plan-table .kn-badge{max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.5}
.kn-plan-table .kn-photo.tiny{max-width:100%;flex-basis:auto}
.kn-plan-table .kn-plan-row-actions .kn-btn{max-width:100%;white-space:normal;padding:4px 6px;line-height:1.4}
.kn-plan-table td[data-label="操作"]{padding-right:7px}
@media(max-width:1200px){
 .kn-plan-table-wrap{max-height:none;border:0;border-radius:0;overflow:visible}
 .kn-plan-table,.kn-plan-table tbody{display:block}
 .kn-plan-table colgroup{display:none}
 .kn-plan-table thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .kn-plan-table tr{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:1px solid #e1e7db;border-radius:6px;margin-bottom:12px;padding:5px}
 .kn-plan-table td,.kn-plan-table td:first-child{position:static;min-width:0;border:0;padding:8px;vertical-align:top}
 .kn-plan-table td[data-label]::before{content:attr(data-label);display:block;margin-bottom:5px;font-size:10px;color:#919d86;font-weight:400}
 .kn-plan-table td[data-label="操作"]{grid-column:span 2}
 .kn-plan-table .kn-plan-row-actions{gap:6px}
 .kn-plan-table .kn-plan-empty-row{display:block;padding:0}
 .kn-plan-table .kn-plan-empty-row>td{display:block;width:100%}
}
@media(max-width:700px){.kn-plan-table tr{grid-template-columns:repeat(2,minmax(0,1fr))}.kn-plan-table td[data-label="操作"]{grid-column:1/-1}}

/* Historical production uses the same full-width workspace as the plan. */
.kn-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0}.kn-history-filter-grid{padding:18px 20px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 20px}
.kn-history-filters .kn-section-title{flex-wrap:wrap;gap:12px}
.kn-history-explain{font-size:12px;line-height:1.8;color:var(--kn-muted);margin:0 0 22px}
.kn-history-pager{display:flex;align-items:center;justify-content:flex-end;gap:18px;flex-wrap:wrap;padding:16px 19px;font-size:12px;color:var(--kn-muted)}
.kn-history-pager>span{margin-right:auto}.kn-history-pager select{padding:6px;border:1px solid var(--kn-line);border-radius:6px;background:#fff}
#kn-history-records .kn-table{table-layout:fixed;min-width:0;width:100%;font-size:12px}
#kn-history-records .kn-table th,#kn-history-records .kn-table td{white-space:normal;overflow-wrap:anywhere;padding:12px 9px}
#kn-history-records .kn-inline-style{flex-wrap:wrap}#kn-history-records .kn-actions{gap:7px}
#kn-history-records .kn-table th:nth-child(2){width:14%}#kn-history-records .kn-table th:nth-child(6){width:14%}
@media(max-width:1100px){.kn-history-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#kn-history-records .kn-table{min-width:1050px}}
@media(max-width:600px){.kn-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kn-history-filter-grid{grid-template-columns:1fr}.kn-history-pager{gap:10px}}

/* Linking workshop: compact people overview and order allocation tables. */
.kn-link-worker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:12px}
.kn-link-worker{display:flex;flex-direction:column;gap:7px;min-width:0;padding:13px 15px;background:#fff;border:1px solid var(--kn-line,#e1e5e3);border-top:3px solid #b7bcb9;border-radius:7px;color:inherit;text-align:left;font:inherit;cursor:pointer}
.kn-link-worker.running{border-top-color:#59826d}.kn-link-worker.queued{border-top-color:#b69b65}.kn-link-worker.selected{outline:2px solid #52745e;outline-offset:1px;background:#f4f8f4}
.kn-link-worker-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.kn-link-worker-head>strong{font-size:15px;font-weight:600}.kn-link-worker-head .kn-badge{font-size:10px;padding:2px 7px}
.kn-link-worker-job{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kn-link-worker-meta{font-size:11px;color:#7a807b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kn-link-worker-foot{display:flex;align-items:center;gap:4px;border-top:1px solid #eceeeb;padding-top:7px;font-size:11px;color:#777d77}.kn-link-worker-foot b{color:#333d34}.kn-link-worker-foot>span{margin-left:auto}
.kn-link-details,.kn-link-orders{margin-top:20px}.kn-link-details .kn-table,.kn-link-orders .kn-table{width:100%;min-width:0;table-layout:auto}.kn-link-details .kn-table th,.kn-link-details .kn-table td,.kn-link-orders .kn-table th,.kn-link-orders .kn-table td{padding:12px 14px;white-space:normal}.kn-row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.kn-link-details .kn-table td:last-child{width:245px}.kn-link-orders .kn-table td:last-child{width:225px}.kn-link-orders .kn-photo.tiny,.kn-link-details .kn-photo.tiny{width:34px;height:42px;flex-shrink:0}.kn-link-details .kn-table td:nth-child(5),.kn-link-details .kn-table td:nth-child(6){white-space:nowrap}
@media(min-width:1500px){.kn-link-worker-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.kn-link-worker{max-width:270px}}
@media(max-width:900px){.kn-link-details .kn-table,.kn-link-orders .kn-table{min-width:880px}.kn-link-worker-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}

/* Knit dispatch: full-width cards with fields that wrap within the dialog. */
#knitDialog.kn-dispatch-dialog{width:min(1180px,calc(100vw - 32px))}
.kn-dispatch-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px);align-items:end;gap:14px 20px;margin-bottom:16px}
.kn-dispatch-top>*,.kn-dispatch-card-grid>*,.kn-dispatch-fields>*{min-width:0}
.kn-dispatch-top strong{display:block;color:var(--kn-ink);font-weight:600;overflow-wrap:anywhere}
.kn-dispatch-top small{display:block;color:var(--kn-muted);font-size:11px;overflow-wrap:anywhere}
.kn-dispatch-modes{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.kn-dispatch-modes button{border:1px solid var(--kn-line);border-radius:5px;background:#fff;color:var(--kn-green);padding:8px 14px;font-size:12px!important;line-height:1.5;white-space:normal}
.kn-dispatch-modes button:hover{background:#f1f5ed;border-color:#afbeaa}
.kn-dispatch-modes button[aria-pressed="true"]{background:var(--kn-green);border-color:var(--kn-green);color:#fff;font-weight:600}
.kn-dispatch-modes button:focus-visible{outline:2px solid var(--kn-green);outline-offset:2px}
.kn-dispatch-hint{font-size:12px;line-height:1.75;color:var(--kn-muted);margin:10px 0 18px;overflow-wrap:anywhere}
.kn-dispatch-head,.kn-dispatch-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap}
.kn-dispatch-head{margin:0 0 12px}
.kn-dispatch-head h3{font-size:14px;font-weight:500;color:var(--kn-ink);margin:0}
.kn-dispatch-head .kn-actions,.kn-dispatch-card-head .kn-actions{gap:6px}
.kn-dispatch-rows{display:flex;flex-direction:column;gap:12px;min-width:0}
.kn-dispatch-card{min-width:0;border:1px solid var(--kn-line);border-radius:6px;background:#fafcf7;padding:15px}
.kn-dispatch-card-head{margin-bottom:13px}
.kn-dispatch-card-head>strong{font-size:13px;font-weight:600;color:var(--kn-green);overflow-wrap:anywhere}
.kn-dispatch-card-grid,.kn-dispatch-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px 16px}
.kn-dispatch-card-grid .kn-field,.kn-dispatch-fields .kn-field{min-width:0;overflow-wrap:anywhere}
.kn-dispatch-card-grid input,.kn-dispatch-card-grid select,.kn-dispatch-fields input,.kn-dispatch-fields select{min-width:0;max-width:100%}
.kn-dispatch-sizes{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;margin:14px 0 0}
.kn-dispatch-size{display:flex;flex-direction:column;gap:6px;min-width:0;padding:11px 12px;border:1px solid #e0e7d9;border-radius:5px;background:#fff;color:#6f7d66;font-size:12px}
.kn-dispatch-size strong{color:var(--kn-ink);font-size:13px;font-weight:500;overflow-wrap:anywhere}
.kn-dispatch-size small{color:var(--kn-muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.kn-dispatch-size input{width:100%;min-width:0;max-width:100%;border:1px solid #d7dfcf;border-radius:4px;background:#fff;padding:9px 10px;min-height:38px;color:#33492e;outline:none}
.kn-dispatch-size input:focus{border-color:#7f9d70;box-shadow:0 0 0 2px #e9f0e1}
.kn-dispatch-part-note{font-size:11px;line-height:1.75;color:var(--kn-muted);margin:10px 0 0;overflow-wrap:anywhere}
.kn-dispatch-summary{margin:16px 0;padding:13px 15px;border:1px solid #dce5d5;border-radius:5px;background:#f3f7ee;color:#6c7d61;font-size:12px;line-height:1.8;overflow-wrap:anywhere}
.kn-dispatch-summary>strong{display:block;color:var(--kn-green);font-weight:600}
.kn-dispatch-summary>span{display:block}
.kn-dispatch-errors{margin:8px 0 0;padding-left:20px;color:var(--kn-red);font-size:12px;line-height:1.8}
.kn-dispatch-errors:empty{display:none}
.kn-dispatch-balances{border:1px solid var(--kn-line);border-radius:5px;background:#fff;margin:16px 0;min-width:0;overflow:hidden}
.kn-dispatch-balances>summary{cursor:pointer;padding:10px 13px;color:var(--kn-green);font-size:12px;overflow-wrap:anywhere}
.kn-dispatch-balances>summary:focus-visible{outline:2px solid var(--kn-green);outline-offset:-3px}
.kn-dispatch-balances[open]>summary{border-bottom:1px solid var(--kn-line);background:#fafcf7}
.kn-dispatch-balances .kn-table-wrap{max-width:100%}
@media(max-width:1000px){.kn-dispatch-card-grid,.kn-dispatch-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){#knitDialog.kn-dispatch-dialog{width:calc(100vw - 20px)}.kn-dispatch-top{grid-template-columns:1fr;gap:12px}.kn-dispatch-modes{display:grid;grid-template-columns:1fr;width:100%;gap:6px}.kn-dispatch-modes button{width:100%;padding:8px 10px}.kn-dispatch-card{padding:12px}.kn-dispatch-card-grid,.kn-dispatch-fields{gap:12px}.kn-dispatch-sizes{grid-template-columns:repeat(2,minmax(0,1fr))}.kn-dispatch-head,.kn-dispatch-card-head{align-items:flex-start}.kn-dispatch-summary{padding:11px 12px}}
@media(max-width:420px){.kn-dispatch-card-grid,.kn-dispatch-fields{grid-template-columns:1fr}}

/* Keep dispatch controls aligned across native input types and wrapped labels. */
#knitDialog.kn-dispatch-dialog .kn-dispatch-top{align-items:start}
#knitDialog:is(.kn-dispatch-dialog,.kn-batch-dialog) input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
#knitDialog:is(.kn-dispatch-dialog,.kn-batch-dialog) select{box-sizing:border-box;height:40px;min-height:40px;margin:0;padding:9px 10px;font-size:12px;line-height:20px}
#knitDialog.kn-dispatch-dialog .kn-dispatch-card-grid,
#knitDialog.kn-dispatch-dialog .kn-dispatch-fields{align-items:end}
#knitDialog.kn-dispatch-dialog .kn-dispatch-size input{margin-top:auto}
#knitDialog:is(.kn-dispatch-dialog,.kn-batch-dialog) .kn-edit-row button{height:40px}

/* Optional quality rows submitted together with the actual finish record. */
.kn-finish-defects{margin:16px 0;min-width:0}
.kn-finish-defect-row{margin:10px 0;padding:13px 14px;border:1px solid var(--kn-line);border-radius:5px;background:#fff;min-width:0}
.kn-finish-defect-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:12px;color:var(--kn-green)}
.kn-finish-defect-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px;align-items:end;min-width:0}
.kn-finish-defect-grid>.kn-field{min-width:0;overflow-wrap:anywhere}
.kn-finish-defect-grid>.full{grid-column:1/-1}
.kn-finish-defects .kn-legend{white-space:normal;overflow-wrap:anywhere}
.kn-finish-confirm{display:flex;align-items:flex-start;gap:8px;margin:16px 0;font-size:12px;line-height:1.7;color:var(--kn-green)}
.kn-finish-confirm input[type="checkbox"]{flex-shrink:0;width:auto;min-height:0;margin:3px 0 0;padding:0}
@media(max-width:760px){.kn-finish-defect-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.kn-finish-defect-grid{grid-template-columns:1fr}.kn-finish-defect-row{padding:11px}}

/* Stop events are visible exceptions; operation scope and stored status stay unchanged. */
:root{--kn-stop:#b91c1c;--kn-stop-dark:#991b1b;--kn-stop-pale:#fef2f2;--kn-stop-line:#fca5a5}
.kn-btn[data-action="pause"],.kn-btn[data-action="batch-pause"]{background:var(--kn-stop);border-color:var(--kn-stop);color:#fff;font-weight:600}
.kn-btn[data-action="pause"]:hover,.kn-btn[data-action="batch-pause"]:hover{background:var(--kn-stop-dark);border-color:var(--kn-stop-dark);color:#fff}
.kn-btn[data-action="pause"]:focus-visible,.kn-btn[data-action="batch-pause"]:focus-visible{outline:2px solid var(--kn-stop);outline-offset:3px}
.kn-badge.paused{background:#fee2e2;color:var(--kn-stop-dark);border:1px solid #fecaca;font-weight:600}
.kn-machine.paused{border-top-color:var(--kn-stop)}
.kn-device.paused{--device-accent:var(--kn-stop);--device-tint:var(--kn-stop-pale);--device-line:var(--kn-stop-line)}
.kn-device.paused .kn-device-state{color:var(--kn-stop-dark);font-weight:600}.kn-device.paused.selected{outline-color:var(--kn-stop)}
.kn-plan-table tr.paused,.kn-plan-table tr.paused:hover{background:#fff1f2}
.kn-gantt-item.paused{--bar-line:var(--kn-stop);--bar-bg:#fee2e2;--bar-ink:var(--kn-stop-dark)}
.kn-count.paused{color:var(--kn-stop-dark);font-weight:600}.kn-count.paused i{background:var(--kn-stop)}
.kn-task-filters .kn-btn[data-id="paused"]{border-color:var(--kn-stop-line);color:var(--kn-stop-dark)}
.kn-task-filters .kn-btn[data-id="paused"].selected{background:var(--kn-stop);border-color:var(--kn-stop);color:#fff}
#knitDialog.kn-pause-dialog{border-color:var(--kn-stop-line)}
#knitDialog.kn-pause-dialog .kn-dialog-head{background:var(--kn-stop-pale);border-bottom-color:#fecaca}
#knitDialog.kn-pause-dialog .kn-dialog-head h2{color:var(--kn-stop);font-weight:600}
#knitDialog.kn-pause-dialog #kn-submit{background:var(--kn-stop);border-color:var(--kn-stop);color:#fff;font-weight:600}
#knitDialog.kn-pause-dialog #kn-submit:hover{background:var(--kn-stop-dark);border-color:var(--kn-stop-dark)}
#knitDialog.kn-pause-dialog .kn-field input:focus,#knitDialog.kn-pause-dialog .kn-field select:focus,#knitDialog.kn-pause-dialog .kn-field textarea:focus{border-color:var(--kn-stop);box-shadow:0 0 0 2px #fee2e2}
#knitDialog.kn-pause-dialog .kn-note,.kn-note.kn-stop-note{background:var(--kn-stop-pale);border-color:#fecaca;color:#991b1b}
.kn-timeline p.paused{color:var(--kn-stop-dark)}.kn-timeline p.paused:before{background:var(--kn-stop)}.kn-timeline p.paused small{color:#9f4545}
.kn-interval-notes{display:block;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:4px}
.kn-stop-tracking .kn-table tr.paused{background:#fff7f7}.kn-stop-tracking .kn-table td{vertical-align:top}.kn-stop-tracking .kn-table td:nth-child(2)>strong{color:var(--kn-stop-dark)}
.kn-stop-notes{white-space:pre-wrap!important;overflow-wrap:anywhere;min-width:150px;max-width:280px}.kn-stop-empty{padding:4px 19px 16px;margin:0;color:var(--kn-muted);font-size:12px}

/* Plan controls reuse the task table and keep machine stops separate. */
.kn-badge.suspended{background:#eee8f5;color:#73528b}.kn-gantt-item.suspended{background:#eee8f5;border:1px dashed #9479a7}.kn-gantt-item.suspended .kn-gantt-progress{opacity:.2}
.kn-queue-controls{display:flex;align-items:center;justify-content:center;gap:2px;margin-top:5px}.kn-queue-controls .kn-btn{padding:2px 5px;min-height:23px}.kn-queue-drag{cursor:grab;font-size:19px;color:#8a7e71;padding:0 3px}.kn-queue-drop td{background:#f4e5c8!important}.kn-plan-row-actions{gap:4px}.kn-plan-row-actions .kn-btn{white-space:nowrap}

/* Match the woven plan's current-production and queued status colors. */
.kn-plan-table td:nth-child(4){padding-left:2px;padding-right:2px}
.kn-plan-table td:nth-child(4) .kn-badge.running,.kn-plan-table td:nth-child(4) .kn-badge.queued{padding:3px 6px;border-radius:999px;font-size:10px;font-weight:700;line-height:1.5;white-space:nowrap;max-width:none}
.kn-plan-table td:nth-child(4) .kn-badge.running{background:#28a745;color:#fff}
.kn-plan-table td:nth-child(4) .kn-badge.queued{background:#ffc107;color:#333}
/* Shared planning controls for knitting transfers and linking queues. */
.kn-link-details .kn-table{min-width:1150px}.kn-link-details .kn-table th:last-child{min-width:230px}.kn-link-details .kn-plan-row-actions{max-width:300px;flex-wrap:wrap}.kn-link-plan-row.running>td{background:#edf8f0}.kn-link-plan-row.queued>td{background:#fff8dd}.kn-link-plan-row.running>td:first-child{box-shadow:inset 4px 0 #57a471}.kn-link-plan-row.queued>td:first-child{box-shadow:inset 4px 0 #d9ad42}.kn-link-plan-row.kn-link-drop>td{border-top:3px solid #528066}.kn-plan-confirm{display:flex;align-items:flex-start;gap:9px;margin:18px 0;line-height:1.7}.kn-plan-confirm input{width:17px;height:17px;margin-top:4px;flex:none}.kn-link-worker-order{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#kn-queue-rates>label{display:flex;gap:12px;align-items:center;margin:12px 0}#kn-queue-rates input{max-width:160px}#kn-planning-preview .kn-table{min-width:500px}#kn-planning-preview>.kn-note{display:block;line-height:1.8}.kn-link-details .kn-table small.kn-red{color:#b54635}

.kn-link-plan-row.suspended{background:#edf0f5}.kn-link-plan-row.suspended>td:first-child{border-left:4px solid #7b8599}

/* Touch-friendly reason selection shared by production operation forms. */
.kn-reason-field{min-width:0;margin:16px 0;padding:0;border:0}
.kn-form-grid>.kn-reason-field{margin:0}
.kn-reason-field legend{padding:0;font-size:14px;font-weight:600;color:#33492e}
.kn-reason-hint{font-size:12px;color:#6f7d66;margin:6px 0 10px}
.kn-reason-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.kn-reason-choice{display:flex;align-items:center;gap:9px;min-height:48px;padding:10px 12px;border:1px solid #d7dfcf;border-radius:6px;background:#fbfcf9;color:#33492e;font-size:14px;line-height:1.45;cursor:pointer;touch-action:manipulation}
.kn-reason-choice input{appearance:auto;flex:0 0 auto;width:18px;height:18px;min-height:0;margin:0;padding:0;accent-color:#557347}
.kn-reason-choice span{overflow-wrap:anywhere}
.kn-reason-choice:hover{border-color:#8da67e}
.kn-reason-choice:has(input:checked){background:#edf4e7;border-color:#557347;box-shadow:inset 0 0 0 1px #557347;font-weight:600}
.kn-reason-choice:has(input:focus-visible){outline:3px solid #a5ba98;outline-offset:2px}
.kn-reason-other{margin-top:12px;font-size:13px}
.kn-reason-other[hidden]{display:none}
.kn-reason-other textarea{font-size:16px;min-height:76px}
#knitDialog.kn-pause-dialog .kn-reason-choice input{accent-color:var(--kn-stop)}
#knitDialog.kn-pause-dialog .kn-reason-choice:has(input:checked){background:var(--kn-stop-pale);border-color:var(--kn-stop);box-shadow:inset 0 0 0 1px var(--kn-stop);color:#991b1b}
@media(max-width:430px){.kn-reason-choices{grid-template-columns:1fr}.kn-reason-choice{min-height:46px}}

.kn-link-date-action{display:flex;align-items:center;gap:6px;white-space:nowrap}.kn-link-date-action>.kn-btn{flex:none;white-space:nowrap}
