.factory-inline,.factory-stage{width:100%;height:100%;position:relative;min-height:0}.factory-stage{overflow:hidden;background:#263444;border:1px solid #394e61;border-radius:7px}.factory-canvas{position:absolute;inset:0}.factory-canvas canvas{display:block;touch-action:none;cursor:grab;width:100%;height:100%}.factory-canvas canvas:active{cursor:grabbing}.factory-controls{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:7px}.factory-controls button{display:grid;place-items:center;width:34px;height:34px;padding:7px;background:#344a5e;color:#edf6ff;border:1px solid #7c96aa;border-radius:5px;cursor:pointer}.factory-controls button:hover{background:#45647b}.factory-detail{position:absolute;bottom:13px;right:13px;width:218px;padding:17px;background:#f4f7faf5;border:2px solid #a4c7ce;border-radius:8px;box-shadow:0 12px 30px #11202e40;color:#172d45}.factory-detail-label{font-size:9px;color:#4e657a;font-weight:700;letter-spacing:.08em}.factory-detail h3{margin:10px 0 8px;font-size:25px;font-weight:800;line-height:1.2;color:#152c44}.factory-state{display:inline-block;padding:4px 8px;border-radius:4px;background:#e3ebf0;font-size:12px;font-weight:800}.factory-detail>p{font-size:12px;font-weight:600;color:#4b6379;margin:10px 0 16px}.factory-detail dl{margin:0;display:grid;gap:10px}.factory-detail dl>div{display:flex;justify-content:space-between;gap:9px;font-size:12px;line-height:1.5}.factory-detail dt{color:#4d647b;font-weight:600}.factory-detail dd{color:#172e46;font-weight:800;margin:0;text-align:right;max-width:130px}.factory-loading{position:absolute;top:42%;left:15%;right:15%;padding:20px;border-radius:8px;text-align:center;font-size:12px;color:#e2edf7;background:#263444ee}.factory-loading[hidden]{display:none}
@media(max-width:1000px){.factory-detail{width:182px;padding:12px}.factory-detail h3{font-size:22px}.factory-detail dl>div{font-size:11px}.factory-detail>p{font-size:11px}.factory-detail dl{gap:7px}
}
@media(max-width:650px){.factory-detail{width:155px;bottom:8px;right:8px;padding:10px}.factory-detail h3{font-size:19px}.factory-detail dl>div{font-size:10px}.factory-detail>p{font-size:10px;margin-bottom:10px}.factory-controls{top:42px;right:8px}.factory-controls button{width:29px;height:29px}
}.factory-detail dd{ word-break: keep-all; overflow-wrap: break-word; }.factory-detail>p{ word-break: keep-all; line-height: 1.6; }.factory-canvas canvas.is-panning,.factory-canvas canvas.is-panning:active{ cursor: move !important; }.factory-detail[hidden]{ display: none; }.factory-detail{ width: 244px; }.factory-detail-label{ font-size: 10px; }.factory-detail>p{ font-size: 13px; }.factory-detail dl>div{ font-size: 14px; }.factory-detail dd{ max-width: 145px; }
@media(max-width:1000px){.factory-detail{width:216px}.factory-detail>p{font-size:12px}.factory-detail dl>div{font-size:12px}
}.factory-detail{box-sizing:border-box;top:60px;bottom:13px;width:340px;overflow:auto;padding:20px;background:#f7fafdf7;scrollbar-width:thin}.machine-close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:25px;color:#607589;cursor:pointer}.factory-detail dl{gap:6px}.factory-detail dl>div{font-size:12px}.machine-control{border-top:1px solid #d4dfe8;margin-top:16px;padding-top:15px}.machine-control[hidden]{display:none}.machine-control-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:14px}.machine-control-heading span{font-size:10px;color:#57718a;background:#e4edf5;padding:4px 7px;border-radius:4px}.machine-control button{font:inherit;cursor:pointer;border:1px solid #c6d5e1;border-radius:7px;min-height:40px;font-size:12px;font-weight:700;color:#25415a;background:white}.machine-control button:focus-visible,.machine-close:focus-visible{outline:3px solid #2494d6;outline-offset:2px}.machine-control button:disabled{opacity:.42;cursor:not-allowed}.machine-control .machine-emergency{display:flex;align-items:center;justify-content:center;gap:15px;width:100%;padding:12px;background:#b92336;color:white;border:2px solid #941b2a;box-shadow:0 3px 0 #7c1c29;min-height:70px}.machine-emergency strong{display:block;font-size:19px;letter-spacing:1px}.machine-emergency small{display:block;font-size:9px;letter-spacing:1.5px;margin-top:4px}.emergency-icon{display:grid;place-items:center;width:40px;height:40px;border:4px solid #ffdf6c;border-radius:50%;background:#e9474d;font-size:17px}.machine-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:13px 0}.machine-action-grid .machine-start{background:#087e65;color:white;border-color:#087e65}.machine-feedback{font-size:12px;line-height:1.6;color:#175d79;background:#e2eff6;border-radius:6px;padding:10px;margin:12px 0}.machine-history{font-size:10px;color:#607589}.machine-history strong{color:#354e65}.machine-history ol{list-style:none;padding:0;margin:6px 0;display:grid;gap:5px;line-height:1.5}.machine-demo-note{font-size:10px;line-height:1.5;color:#78899a;margin:12px 0 0}
@media(max-width:650px){.factory-detail{top:80px;bottom:8px;right:8px;width:min(320px,calc(100% - 16px));padding:14px}.factory-detail h3{font-size:22px}}.machine-summary{font-size:11px;color:#48657b;margin:8px 0;line-height:1.6}.machine-action-grid button{min-height:44px;font-size:11px;padding:7px 4px}.control-dialog{box-sizing:border-box;width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid #bed0de;border-radius:14px;color:#17324a;background:#f8fbfe;box-shadow:0 24px 100px #07192c70;overflow:auto}.control-dialog::backdrop{background:#071828a6;backdrop-filter:blur(4px)}.control-dialog header{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 24px 15px;border-bottom:1px solid #dce6ee;background:white}.control-dialog-kicker{font-size:11px;font-weight:700;color:#5e8098;letter-spacing:.05em}.control-dialog h2{font-size:23px;margin:8px 0 0;line-height:1.3}.control-dialog button{cursor:pointer;border:1px solid #c5d5e2;border-radius:7px;background:white;color:#355069;padding:10px 17px;font:inherit;font-size:13px;font-weight:700}.control-dialog header button{padding:0 6px;border:0;font-size:28px;line-height:1}.control-dialog-description{font-size:12px;line-height:1.7;color:#587087;padding:0 24px;margin:18px 0}.control-fields{display:grid;gap:16px;padding:0 24px}.control-fields label{display:grid;gap:7px;font-size:12px;font-weight:700;color:#38556d}.control-fields input,.control-fields select{box-sizing:border-box;width:100%;min-height:44px;border:1px solid #c4d4e1;border-radius:7px;background:white;color:#17354e;font:inherit;font-size:14px;padding:10px 12px}.control-fields input[readonly]{background:#eaf0f5;color:#728598}.control-dialog :is(input,select,button):focus-visible{outline:3px solid #299fd5;outline-offset:2px}.control-error{color:#b6313e;font-size:12px;line-height:1.6;margin:16px 24px;min-height:20px}.control-dialog footer{padding:16px 24px;border-top:1px solid #dce6ee;display:flex;align-items:center;justify-content:space-between;gap:12px;background:white}.control-dialog footer span{font-size:10px;color:#7a8d9d}.control-dialog footer>div{display:flex;gap:8px;flex-shrink:0}.control-dialog .control-apply{background:#087d93;border-color:#087d93;color:white}.control-dialog button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:500px){.control-dialog footer{align-items:flex-start;flex-direction:column}.control-dialog footer>div{align-self:flex-end}}.machine-control .machine-emergency.is-emergency-active{background:#e67b16;border-color:#bc5c0b;box-shadow:0 3px 0 #994a0a;color:#fff}.machine-emergency.is-emergency-active .emergency-icon{background:#f49b37;border-color:#ffe3ab}.machine-control button[hidden]{display:none}body{--ops-bg:#101319;--ops-card:#191e26;--ops-line:#2a313d;--ops-text:#e8edf5;--ops-muted:#9caabd;--ops-orange:#4d94ff}body[data-view="factory"] .content{background:var(--ops-bg)}body[data-view="factory"] .sidebar{background:#11161d;border-color:#282e39}body[data-view="factory"] .app-brand{border-color:#282e39}body[data-view="factory"] .nav-item.active{color:#9ac4ff;background:#182c49;box-shadow:inset 3px 0 #4d94ff}body[data-view="factory"] .nav-item:hover{background:#242a33}body[data-view="factory"] .sidebar-bottom{border-color:#282e39}body[data-view="factory"] .topbar{background:#151a21;border-color:#2a313d}body[data-view="factory"] .app-breadcrumb>span{color:#89b8ff}body[data-view="factory"] .app-breadcrumb strong{color:#e6edf7}body[data-view="factory"] .topbar-meta{color:#9ba9bc}body[data-view="factory"] .topbar-meta b{background:#262e3b;color:#c6d2e3}.factory-inline{display:grid;grid-template-rows:88px minmax(0,1fr);gap:12px}.factory-stage{border-color:#303a49;border-radius:10px;background:#141d29}.factory-canvas{right:332px}.factory-controls{right:345px;top:16px}.factory-controls button{background:#182332;border-color:#42526a;color:#c7d6eb}.factory-detail{position:absolute;right:0;top:0;bottom:0;width:320px;background:#181f29;border:0;border-left:1px solid #344154;border-radius:0;color:#dbe5f2;padding:18px;overflow:auto;scrollbar-width:thin;scrollbar-color:#40516a #181f29;box-shadow:none}.battery-mini{display:inline-block;width:28px;height:6px;border:1px solid #526783;border-radius:2px;overflow:hidden}.battery-mini i{display:block;height:100%;background:#37c396}.worker-initial{background:#30344a;color:#c6b7f3;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;font-size:10px}.factory-detail{width:320px;padding:18px}.factory-detail-label{font-size:9px;letter-spacing:.13em;color:#84b8ff}.factory-detail h3{font-size:27px;color:#f0f5ff;margin:9px 0}.machine-close{color:#8ca4c4}.factory-detail>p{color:#7e98ba;font-size:12px;margin:10px 0 14px}.factory-state{background:#243748;font-size:11px;color:#b7d8fb!important}.factory-detail dl{display:grid;grid-template-columns:1fr 1fr;gap:8px}.factory-detail dl>div{display:flex;flex-direction:column;align-items:flex-start;gap:5px;background:#202c3b;border:1px solid #2e3f54;border-radius:6px;padding:9px;font-size:11px;min-width:0}.factory-detail dt{color:#7f98b8;font-size:10px}.factory-detail dd{color:#d5e4f8;font-size:13px;text-align:left;max-width:100%;overflow-wrap:anywhere}.selected-operation{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 0;border-bottom:1px solid #2d3c51}.selected-operation>div:first-child{grid-column:1/-1}.selected-operation span{display:block;color:#6f89ab;font-size:9px;margin-bottom:4px}.selected-operation strong{font-size:11px;color:#b5cbe7;font-weight:500}.machine-control{border-color:#2d3c51;margin-top:12px;padding-top:12px}.machine-control-heading{font-size:13px;color:#c4d6ee}.machine-control-heading span{background:#303a49;color:#849cbd;font-size:9px}.machine-control button{background:#253449;border-color:#3c506b;color:#c5d8f1}.machine-control button:hover:not(:disabled):not(.machine-emergency){border-color:#4d94ff;background:#253e60;color:#c2ddff}.machine-action-grid{gap:7px;margin:12px 0}.machine-action-grid button{font-size:10px;min-height:37px}.machine-action-grid .machine-start{background:#17644f;border-color:#298268;color:#baf5dc}.machine-control button:disabled{opacity:.28;filter:saturate(.4)}.machine-control .machine-emergency{min-height:66px;background:#9f2e40;border-color:#c04c60;box-shadow:0 2px 0 #6f2030}.machine-control .machine-emergency.is-emergency-active{background:#cf751d;border-color:#f5a442;box-shadow:0 2px 0 #87501e}.machine-emergency strong{font-size:17px}.machine-emergency small{font-size:8px}.emergency-icon{width:36px;height:36px;border-width:3px}.machine-summary{color:#839dbf;font-size:10px}.machine-feedback{background:#22364a;color:#a5c9e9;border:1px solid #34506a;font-size:11px;padding:9px}.machine-history{color:#7892b4}.machine-history strong{color:#b0c6e3}.machine-history ol{font-size:9px}.control-dialog{background:#19222e;border-color:#3d4e65;color:#d8e5f6}.control-dialog header,.control-dialog footer{background:#1c2837;border-color:#35445a}.control-dialog-kicker{color:#84b8ff}.control-dialog h2{color:#e6effb}.control-dialog button{background:#28384d;border-color:#405574;color:#bbd0eb}.control-dialog-description{color:#94aac7}.control-fields label{color:#a9bedb}.control-fields input,.control-fields select{background:#121d2c;border-color:#3b4e68;color:#d5e5f9}.control-fields input[readonly]{background:#263245;color:#829ab9}.control-dialog .control-apply{background:#397de7;border-color:#80b4ff;color:#161c24}.control-dialog footer span{color:#748eaf}.control-error{color:#f0949e}.control-dialog :is(input,select,button):focus-visible{outline-color:#80b4ff}
@media(max-height:780px){.factory-inline{grid-template-rows:76px minmax(0,1fr);gap:10px}.factory-detail{padding:14px}.factory-detail h3{font-size:23px}.factory-detail dl>div{padding:7px}.machine-action-grid button{min-height:33px}}
@media(max-width:1150px){.factory-canvas{right:290px}.factory-detail{width:280px}.factory-controls{right:301px}}
@media(max-width:760px){.factory-inline{grid-template-rows:66px minmax(0,1fr);gap:6px}.factory-canvas{right:0}.factory-detail{width:min(300px,calc(100% - 12px));top:6px;bottom:6px;right:6px;border:1px solid #415675;border-radius:8px}.factory-controls{right:12px}}
@media(max-height:780px){.worker-initial{width:19px;height:19px}}.factory-inline{display:block}.factory-canvas{inset:0}.factory-controls{right:16px;top:16px}.factory-detail{top:60px;bottom:13px;right:13px;width:320px;border:1px solid #3a4d66;border-radius:10px;background:#182331f5;box-shadow:0 14px 40px #0000004d}
@media(max-width:1150px){.factory-canvas{inset:0}.factory-controls{right:16px}.factory-detail{width:290px}}
@media(max-width:760px){.factory-inline{display:block}.factory-detail{top:80px;bottom:8px;right:8px;width:min(300px,calc(100% - 16px))}.factory-controls{right:12px}}.selected-battery{position:absolute;top:52px;right:18px;display:grid;grid-template-columns:1fr;gap:3px;min-width:67px;padding:7px 10px;background:#203956;border:1px solid #3c628e;border-radius:7px}.selected-battery[hidden]{display:none}.selected-battery>span{font-size:9px;color:#90b5e3}.selected-battery>strong{font-size:21px;color:#cce3ff;line-height:1.15;font-variant-numeric:tabular-nums}.selected-battery>i{height:3px;background:#354f6f;border-radius:2px;overflow:hidden}.selected-battery b{display:block;height:100%;background:#73b0ff}.factory-detail.has-battery h3{padding-right:90px;min-height:33px}.control-dialog .control-apply{color:#f3f8ff}body[data-view="factory"] .content{padding:0;background:#030712}.factory-stage{border:0;border-radius:0;box-shadow:none}.factory-canvas{inset:0}.factory-inline{width:100%;height:100%}body:not([data-view="factory"]) .content{background:#030712 url('./assets/cosmic.webp?v=3') center/cover no-repeat}#view-data .panel{background:rgba(23,30,43,.93)}#view-data .kpi{background:linear-gradient(120deg,rgba(29,38,55,.95),rgba(21,29,44,.92))}#view-data .donut>div{background:#171e2b}
@media(max-width:760px){body[data-view="factory"] .content{padding:0}.factory-stage{border:0;border-radius:0}}body:not([data-view="factory"]) .content{background-color:#030712;background-image:url('./assets/cosmic.webp?v=3');background-position:center;background-size:cover;background-repeat:no-repeat}.factory-detail-label{font-size:11px}.factory-detail h3{font-size:29px}.factory-detail>p{font-size:14px}.factory-state{font-size:13px}.factory-detail dt{font-size:12px}.factory-detail dd{font-size:15px}.machine-control-heading{font-size:15px}.machine-control-heading span{font-size:11px}.machine-action-grid button{font-size:12px;min-height:40px}.machine-summary{font-size:12px}.machine-feedback{font-size:13px}.machine-history,.machine-history ol{font-size:11px}.selected-operation span{font-size:11px}.selected-operation strong{font-size:13px}.control-dialog-description{font-size:14px}.control-fields label{font-size:14px}.control-fields input,.control-fields select{font-size:16px}.control-dialog button{font-size:14px}.control-dialog footer span{font-size:12px}.control-error{font-size:14px}
.machine-job-progress{margin:14px 0 12px;padding:12px;border:1px solid #37554f;border-radius:7px;background:#1d302e}.machine-job-progress[hidden]{display:none}.job-progress-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;color:#a8c6bc;font-size:12px}.job-progress-label strong{font-size:19px;font-variant-numeric:tabular-nums;color:#7cd8b7}.job-progress-track{height:11px;background:#354641;border-radius:6px;overflow:hidden}.job-progress-track>i{display:block;height:100%;background:linear-gradient(90deg,#32967f,#74d3ae);border-radius:6px}.job-progress-ends{display:flex;justify-content:space-between;gap:6px;margin-top:7px;color:#8ba89e;font-size:11px}.job-progress-ends>span:nth-child(2){font-size:10px;color:#b4cfc4}

.job-progress-track>i{transition:width 1s linear}@media(prefers-reduced-motion:reduce){.job-progress-track>i{transition:none}}
