*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #0d1117;--color-surface: #161b22;--color-surface2: #1c2128;--color-border: #30363d;--color-accent: #58a6ff;--color-accent-hover: #79c0ff;--color-success: #3fb950;--color-danger: #f85149;--color-warn: #d29922;--color-text: #e6edf3;--color-text-muted: #7d8590;--sidebar-width: 288px;--header-height: 54px;--footer-height: 32px;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--color-text);-webkit-font-smoothing:antialiased}body{background:var(--color-bg);overflow:hidden;width:100vw;height:100vh}#root{width:100vw;height:100vh}.face-selector{display:flex;gap:4px;margin-bottom:8px}.face-btn{flex:1;padding:4px 0;font-size:12px;border:1px solid var(--color-border, #444);border-radius:4px;background:var(--color-surface2, #2a2a2a);color:var(--color-text-muted, #aaa);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.face-btn:hover{background:var(--color-surface3, #333);color:var(--color-text, #eee)}.face-btn.active{background:var(--color-accent, #4a9eff);color:#fff;border-color:var(--color-accent, #4a9eff)}.layer-global-actions{display:flex;gap:6px;margin-bottom:8px}.layer-global-btn{flex:1;padding:4px 6px;font-size:11px;border:1px solid var(--color-border, #444);border-radius:4px;background:var(--color-surface2, #2a2a2a);color:var(--color-text-muted, #aaa);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.layer-global-btn:hover{background:var(--color-surface3, #333);color:var(--color-text, #eee)}.layer-global-btn.active{border-color:var(--color-accent, #4a9eff);color:var(--color-accent, #4a9eff)}.layer-list{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow-y:auto;padding-right:2px}.layer-group{display:flex;flex-direction:column;gap:2px}.layer-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted, #888);padding:2px 0 1px;border-bottom:1px solid var(--color-border, #333);margin-bottom:2px}.layer-item{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--color-text, #ddd);cursor:pointer;padding:2px 4px;border-radius:4px;transition:background .12s}.layer-item:hover{background:var(--color-surface2, #2a2a2a)}.layer-item.layer-dim{opacity:.35}.layer-item input[type=checkbox]{accent-color:var(--color-accent, #4a9eff);cursor:pointer}.layer-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0;opacity:.9}.layer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-group-header{display:flex;align-items:center;gap:5px;padding:3px 4px;cursor:pointer;border-radius:4px;-webkit-user-select:none;user-select:none;transition:background .12s}.layer-group-header:hover{background:var(--color-surface2, #2a2a2a)}.layer-group-arrow{font-size:9px;color:var(--color-text-muted, #888);width:10px;flex-shrink:0}.layer-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted, #999);flex:1}.layer-group-count{font-size:10px;color:var(--color-text-muted, #777);margin-right:2px}.layer-group-toggleall{font-size:13px;color:var(--color-text-muted, #888);padding:0 2px;border-radius:3px;line-height:1;transition:color .12s}.layer-group-toggleall:hover{color:var(--color-accent, #4a9eff)}.layer-group-body{display:flex;flex-direction:column;gap:1px;padding-left:4px;padding-bottom:4px;border-left:2px solid var(--color-border, #333);margin-left:5px}.calib-panel{display:flex;flex-direction:column;gap:6px}.calib-desc{font-size:11px;color:var(--color-text-muted, #888);line-height:1.5;margin:0}.calib-actions{display:flex;gap:6px}.calib-btn{flex:1;padding:5px 8px;font-size:12px;border:1px solid var(--color-border, #444);border-radius:4px;background:var(--color-surface2, #2a2a2a);color:var(--color-text, #ddd);cursor:pointer;transition:background .15s,border-color .15s}.calib-btn:hover{background:var(--color-surface3, #333)}.calib-btn.active{background:#1a4a2a;border-color:#3dbb6e;color:#3dbb6e}.calib-btn-clear{padding:5px 10px;font-size:12px;border:1px solid #664444;border-radius:4px;background:#2a1a1a;color:#c66;cursor:pointer}.calib-btn-clear:hover{background:#331a1a}.calib-hint{font-size:11px;color:#3dbb6e;margin:0;padding:4px 6px;background:#0d2218;border-radius:4px;border-left:3px solid #3dbb6e}.calib-point-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.calib-point{display:flex;align-items:flex-start;gap:6px;padding:5px 6px;border-radius:4px;background:var(--color-surface2, #222);border:1px solid transparent;transition:border-color .15s}.calib-point.matched{border-color:#2a6644}.calib-point.nomatch{border-color:#643}.calib-point-idx{min-width:18px;height:18px;border-radius:50%;background:var(--color-accent, #4a9eff);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.calib-point-body{flex:1;display:flex;flex-direction:column;gap:2px}.calib-point-input{width:100%;font-size:12px;padding:2px 5px;border-radius:3px;border:1px solid var(--color-border, #444);background:var(--color-surface, #1a1a2e);color:var(--color-text, #eee);box-sizing:border-box}.calib-point-input:focus{outline:none;border-color:var(--color-accent, #4a9eff)}.calib-point-coords{font-size:10px;color:var(--color-text-muted, #777)}.calib-point-match{font-size:10px;color:#3dbb6e}.calib-point-nomatch{font-size:10px;color:#c64}.calib-point-del{align-self:flex-start;background:none;border:none;color:#888;cursor:pointer;font-size:11px;padding:0 2px;margin-top:2px}.calib-point-del:hover{color:#f66}.calib-compute-row{display:flex}.calib-compute-btn{flex:1;padding:6px 8px;font-size:12px;border-radius:4px;border:1px solid #444;background:#2a2a2a;color:#888;cursor:not-allowed;transition:background .15s,color .15s,border-color .15s}.calib-compute-btn.ready{background:#1a3a5a;border-color:var(--color-accent, #4a9eff);color:var(--color-accent, #4a9eff);cursor:pointer;font-weight:600}.calib-compute-btn.ready:hover{background:#1e4670}.calib-status{display:flex;align-items:center;gap:8px;padding:5px 8px;background:#0d2218;border-radius:4px;border:1px solid #2a6644}.calib-ok{font-size:12px;color:#3dbb6e;font-weight:600}.calib-rmse{font-size:11px;color:#aaa}.calib-warn{font-size:11px;color:#c94;margin:0}.dfm-panel{background:#1e1e2e;border:1px solid #333356;border-radius:6px}.dfm-header{width:100%;display:flex;align-items:center;justify-content:space-between;background:#2a2a42;border:none;padding:6px 10px;cursor:pointer;color:#ccd6f6}.dfm-header:hover{background:#32324e}.dfm-title{font-size:12px;font-weight:600;letter-spacing:.5px}.dfm-chevron{font-size:10px;opacity:.7}.dfm-body{padding:8px 10px 10px}.dfm-section-label{font-size:10px;font-weight:600;color:#7c7ca0;text-transform:uppercase;letter-spacing:.6px;margin:8px 0 4px;border-bottom:1px solid #2e2e48;padding-bottom:2px}.dfm-section-label:first-child{margin-top:0}.dfm-table{width:100%;border-collapse:collapse;font-size:11.5px}.dfm-table td{padding:2px 4px;color:#a8b2d8;vertical-align:middle}.dfm-table td:first-child{width:58px;color:#7c7ca0;white-space:nowrap}.dfm-val{color:#ccd6f6!important;font-variant-numeric:tabular-nums}.dfm-note{color:#666690;font-size:10px}.dfm-warn{color:#fc4!important}.dfm-warn-tag{display:inline-block;margin-left:4px;font-size:10px;color:#ff8c42;background:#ff8c421f;border-radius:3px;padding:0 4px}.dfm-layers-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 4px;margin-top:2px}.dfm-layers-grid span{font-size:11px;color:#a8b2d8;display:flex;align-items:center;gap:4px}.dfm-tag{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:3px;font-size:10px;font-weight:700;flex-shrink:0}.dfm-tag-yes{background:#64d27833;color:#64d280}.dfm-tag-no{background:#9696b41f;color:#555570}.app-root{display:flex;flex-direction:column;width:100vw;height:100vh;background:var(--color-bg)}.app-header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;padding:0 16px;gap:16px;flex-shrink:0;z-index:10}.app-logo{font-size:16px;font-weight:700;color:var(--color-accent);white-space:nowrap;letter-spacing:.5px}.tab-nav{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow-x:auto;padding-bottom:2px}.tab-nav::-webkit-scrollbar{height:6px}.tab-nav::-webkit-scrollbar-thumb{background:#7d859059;border-radius:3px}.tab-btn{border:1px solid var(--color-border);background:var(--color-surface2);color:var(--color-text-muted);border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:all .18s ease}.tab-btn:hover{color:var(--color-text);border-color:#58a6ff73;background:#58a6ff1a}.tab-btn.tab-active{color:#d6e9ff;border-color:var(--color-accent);background:linear-gradient(135deg,#58a6ff3d,#58a6ff1a);box-shadow:0 0 0 1px #58a6ff33 inset}.tab-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.app-header .search-wrap{flex:0 1 min(420px,38vw);min-width:220px;max-width:460px;margin-left:auto}.app-body{display:flex;flex:1;overflow:hidden}.app-sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;padding:12px;gap:8px}.programming-panel{display:flex;flex-direction:column;gap:8px}.program-section{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--color-border);border-radius:8px;background:#1c21289e}.program-section h3{font-size:12px;font-weight:700;color:var(--color-text)}.program-input,.program-select{width:100%;background:var(--color-surface2);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:12px;padding:6px 8px;outline:none}.program-input:focus,.program-select:focus{border-color:var(--color-accent)}.program-row{display:flex;gap:6px;flex-wrap:wrap}.program-row>*{flex:1 1 120px}.program-file{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--color-text-muted)}.program-file input[type=file]{flex:1;min-width:0;max-width:170px;color:var(--color-text-muted);font-size:11px}.program-meta{font-size:11px;color:var(--color-text-muted);line-height:1.5}.program-toggle{border:1px solid var(--color-border);background:var(--color-surface2);color:var(--color-text-muted);border-radius:6px;padding:5px 8px;font-size:12px;cursor:pointer;transition:all .15s ease}.program-toggle:hover{border-color:#58a6ff80;color:var(--color-text)}.program-toggle.active{border-color:var(--color-accent);color:#d6e9ff;background:#58a6ff24}.program-origin-box{display:flex;justify-content:space-between;gap:6px;padding:6px 8px;border-radius:6px;background:#0d11178c;border:1px solid rgba(88,166,255,.2);font-size:11px;color:var(--color-text-muted)}.program-origin-box strong{color:var(--color-text)}.program-mark-list,.program-merge-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.program-mark-item{display:grid;grid-template-columns:minmax(70px,1fr) minmax(110px,1.2fr) 85px 48px;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;background:#0d111773;border:1px solid var(--color-border);font-size:11px;color:var(--color-text);cursor:pointer}.program-mark-item:hover{border-color:#58a6ff6b}.program-mark-item select{background:var(--color-surface2);border:1px solid var(--color-border);color:var(--color-text);border-radius:4px;font-size:11px;padding:2px 4px;min-width:0}.program-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(88,166,255,.35);background:#58a6ff14;color:var(--color-accent);border-radius:5px;padding:4px 8px;font-size:11px;font-weight:600;text-decoration:none;cursor:pointer;transition:all .15s ease}.program-link:hover{background:#58a6ff33}.virtual-list-container{border:1px solid var(--color-border);border-radius:6px;background:#0d11174d}.program-merge-item{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 8px;border-bottom:1px solid var(--color-border);font-size:11px;color:var(--color-text);background:transparent}.program-merge-item:last-child{border-bottom:none}.program-merge-item span{flex-shrink:0}.program-merge-item span:nth-child(1){min-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.program-merge-item summary{display:flex;justify-content:space-between;gap:8px;padding:7px 8px;cursor:pointer;font-size:11px;color:var(--color-text)}.program-merge-detail{border-top:1px solid var(--color-border);padding:7px 8px;display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--color-text-muted)}.program-preview{border:1px solid var(--color-border);border-radius:6px;background:#0d111773;padding:8px;display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--color-text-muted)}.program-preview-list{border:1px solid var(--color-border);border-radius:6px;background:#0d11174d}.program-download{display:inline-flex;align-items:center;margin-top:4px}.sidebar-divider{height:1px;background:var(--color-border);margin:4px 0}.app-main{flex:1;position:relative;overflow:hidden;background:#0a0e13}.app-main.app-main-inspection{display:flex;align-items:stretch}.inspection-panel-pane{flex-shrink:0;height:100%;border-left:1px solid var(--color-border);background:var(--color-surface);overflow:hidden;display:flex;flex-direction:column}.resize-handle{width:6px;flex-shrink:0;cursor:col-resize;background:linear-gradient(180deg,#30363db8,#30363d61);border-left:1px solid rgba(88,166,255,.08);border-right:1px solid rgba(88,166,255,.08);transition:background .15s ease}.resize-handle:hover{background:linear-gradient(180deg,#58a6ff59,#58a6ff2e)}.app-footer{height:var(--footer-height);background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;align-items:center;padding:0 16px;gap:12px;flex-shrink:0}.footer-hint{color:var(--color-text-muted);font-size:12px}.footer-error{color:var(--color-danger);font-size:12px}.status-panel{margin-top:4px;display:flex;flex-direction:column;gap:4px}.status-ok{color:var(--color-success);font-size:12px}.status-highlight{color:var(--color-warn);font-size:12px}.status-hint{color:var(--color-text-muted);font-size:11px;font-style:italic}.empty-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--color-text-muted);pointer-events:none}.empty-icon{font-size:48px;opacity:.4}.empty-hint p{font-size:14px}.empty-sub{font-size:12px!important;opacity:.7}.overlay-loading{position:absolute;inset:0;background:#0d1117cc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:50;color:var(--color-text)}.spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.session-error-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:12px;background:#f8514926;border:1px solid rgba(248,81,73,.5);border-radius:8px;padding:10px 16px;color:#f85149;font-size:13px;max-width:600px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.session-error-banner button{background:none;border:1px solid rgba(248,81,73,.5);border-radius:4px;color:#f85149;padding:2px 10px;cursor:pointer;font-size:12px;white-space:nowrap;flex-shrink:0}.session-error-banner button:hover{background:#f8514926}.upload-zone{border:1.5px dashed var(--color-border);border-radius:8px;padding:14px 12px;cursor:pointer;transition:border-color .2s,background .2s;background:var(--color-surface2);text-align:center}.upload-zone:hover,.upload-zone.drag-active{border-color:var(--color-accent);background:#58a6ff0f}.upload-zone p{font-size:12px;color:var(--color-text-muted);margin-top:4px}.upload-title{font-size:13px;font-weight:600;color:var(--color-text);margin-bottom:2px}.upload-icon{font-size:24px;margin-bottom:4px}.upload-btn{margin-top:8px;background:var(--color-accent);color:#0d1117;border:none;border-radius:6px;padding:5px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:background .2s;white-space:nowrap}.upload-btn:hover{background:var(--color-accent-hover)}.upload-filelist{margin-top:6px;list-style:none;font-size:11px;color:var(--color-text-muted);max-height:80px;overflow-y:auto}.upload-filelist li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 0}.upload-error{color:var(--color-danger);font-size:11px;margin-top:4px}.section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-muted);margin-bottom:6px}.search-wrap{flex:1;position:relative;max-width:400px}.search-input{width:100%;background:var(--color-surface2);border:1px solid var(--color-border);border-radius:6px;padding:6px 36px 6px 12px;font-size:13px;color:var(--color-text);outline:none;transition:border-color .2s}.search-input:focus{border-color:var(--color-accent)}.search-input::placeholder{color:var(--color-text-muted)}.search-clear-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:0;font-size:14px;line-height:1}.search-clear-btn:hover{color:var(--color-text)}.search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;max-height:200px;overflow-y:auto;z-index:100;box-shadow:0 8px 24px #00000080}.search-dropdown-item{padding:7px 12px;font-size:12px;cursor:pointer;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;transition:background .1s}.search-dropdown-item:last-child{border-bottom:none}.search-dropdown-item:hover{background:#58a6ff1a}.search-dropdown-item .ref{color:var(--color-accent);font-weight:600}.search-dropdown-item .coord{color:var(--color-text-muted);font-size:11px}.search-no-result{padding:10px 12px;color:var(--color-text-muted);font-size:12px;text-align:center}.pcb-viewer{position:relative;width:100%;height:100%;overflow:hidden;cursor:grab}.pcb-viewer:active{cursor:grabbing}.pcb-svg-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-origin:center center}.pcb-svg-container svg{display:block}.zoom-controls{position:absolute;bottom:18px;right:18px;display:grid;grid-template-columns:repeat(2,minmax(56px,auto));gap:6px;padding:8px;background:#0d1117b8;border:1px solid rgba(88,166,255,.25);border-radius:10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 10px 20px #00000059;z-index:25}.zoom-btn{min-width:56px;height:32px;padding:0 8px;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;-webkit-user-select:none;user-select:none}.zoom-btn:hover{background:var(--color-surface2);border-color:var(--color-accent)}.zoom-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}@media(max-width:640px){.zoom-controls{right:10px;bottom:10px;gap:5px;padding:6px}.zoom-btn{min-width:52px;height:30px;font-size:11px}}.calib-mode-badge{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#3dbb6e2e;border:1px solid #3dbb6e;color:#3dbb6e;font-size:13px;font-weight:600;padding:6px 16px;border-radius:20px;pointer-events:none;z-index:20;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loupe-container{position:absolute;top:10px;right:10px;width:180px;background:#1e1e1ef2;border:1px solid #444;border-radius:8px;padding:8px;box-shadow:0 4px 12px #0006;z-index:1000;color:#fff;font-family:monospace;-webkit-user-select:none;user-select:none}.loupe-title{font-size:11px;margin-bottom:6px;text-align:center;border-bottom:1px solid #555;padding-bottom:4px}.loupe-content{position:relative;width:164px;height:164px;overflow:hidden;background:#000;border:1px solid #333}.loupe-svg-wrapper{width:100%;height:100%}.loupe-svg-wrapper svg{width:100%;height:100%}.loupe-crosshair{position:absolute;top:50%;left:50%;width:20px;height:20px;transform:translate(-50%,-50%)}.loupe-crosshair:before,.loupe-crosshair:after{content:"";position:absolute;background:red;opacity:.8}.loupe-crosshair:before{top:50%;left:0;width:100%;height:1px}.loupe-crosshair:after{left:50%;top:0;height:100%;width:1px}.loupe-hint{font-size:10px;color:#666;text-align:center;margin-top:4px;pointer-events:none}.full-pcb-pane{position:relative;width:100%;height:100%}.inspection-pcb-pane{position:relative;flex:1;min-width:0;height:100%;overflow:hidden}.progress-bar{width:280px;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden;position:relative}.progress-bar-indeterminate{position:absolute;top:0;left:0;height:100%;width:40%;background:linear-gradient(90deg,var(--color-accent),#58a6ff);border-radius:2px;animation:progress-indeterminate 1.5s ease-in-out infinite}@keyframes progress-indeterminate{0%{left:-40%}50%{left:30%}to{left:100%}}.loading-text{font-size:14px;font-weight:500;color:var(--color-text)}.loading-subtext{font-size:12px;color:var(--color-text-muted);margin-top:-8px}.layer-loading-indicator{position:absolute;bottom:24px;left:50%;transform:translate(-50%);z-index:40;display:flex;flex-direction:column;align-items:center;gap:8px;background:#0d1117d9;border:1px solid rgba(88,166,255,.3);border-radius:8px;padding:12px 20px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 20px #0006;animation:layer-loading-fade-in .3s ease}@keyframes layer-loading-fade-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.layer-loading-bar{width:200px;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.layer-loading-progress{height:100%;background:linear-gradient(90deg,var(--color-accent),#58a6ff);border-radius:2px;transition:width .2s ease;box-shadow:0 0 8px #58a6ff66}.layer-loading-text{font-size:12px;color:var(--color-text);font-weight:500}@media(max-width:1120px){.app-header{height:auto;min-height:var(--header-height);padding:8px 12px;flex-wrap:wrap;row-gap:8px}.tab-nav{order:2;flex:1 1 100%}.app-header .search-wrap{order:3;flex:1 1 100%;min-width:0;max-width:none;margin-left:0}}@media(max-width:780px){.app-sidebar{width:260px;padding:10px}.program-mark-item{grid-template-columns:1fr 1fr;grid-auto-rows:auto}.program-row>*{flex:1 1 100%}}.machine-optimize-toggle{display:flex;justify-content:center;padding:8px}.machine-assignment-wrapper{background:var(--color-surface);border-radius:8px;padding:12px;margin:8px 0}.machine-assignment-panel{background:var(--color-surface);border-radius:8px;padding:16px;color:var(--color-text)}.machine-assignment-panel .panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.machine-assignment-panel .panel-header h2{margin:0;font-size:16px;font-weight:500}.machine-assignment-panel .header-actions{display:flex;gap:8px}.machine-assignment-panel .optimize-btn,.machine-assignment-panel .refresh-btn,.machine-assignment-panel .reset-btn,.machine-assignment-panel .assign-btn{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:all .2s}.machine-assignment-panel .optimize-btn{background:var(--color-accent);color:var(--color-text)}.machine-assignment-panel .optimize-btn:hover:not(:disabled){background:#58a6ffcc}.machine-assignment-panel .refresh-btn{background:var(--color-surface2);color:var(--color-text)}.machine-assignment-panel .refresh-btn:hover:not(:disabled){background:var(--color-border)}.machine-assignment-panel .reset-btn{background:#eba0ac4d;color:var(--color-text)}.machine-assignment-panel .reset-btn:hover:not(:disabled){background:#eba0ac80}.machine-assignment-panel button:disabled{opacity:.5;cursor:not-allowed}.machine-assignment-panel .error-message{background:#eba0ac4d;color:var(--color-text);padding:10px;border-radius:4px;margin-bottom:16px;font-size:12px}.machine-assignment-panel .panel-content{display:flex;gap:12px}.machine-assignment-panel .machines-container{display:flex;gap:12px;flex-wrap:wrap}.machine-assignment-panel .machine-card{background:var(--color-surface2);border-radius:6px;padding:12px;min-width:240px;flex:1}.machine-assignment-panel .machine-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.machine-assignment-panel .machine-header h3{margin:0;font-size:14px;font-weight:500}.machine-assignment-panel .machine-name{font-size:11px;color:var(--color-text-muted)}.machine-assignment-panel .machine-stats{display:flex;gap:12px;margin-bottom:10px;padding:6px 10px;background:#0003;border-radius:4px}.machine-assignment-panel .stat-item{display:flex;gap:4px}.machine-assignment-panel .stat-label{color:var(--color-text-muted);font-size:11px}.machine-assignment-panel .stat-value{color:var(--color-text);font-weight:500}.machine-assignment-panel .machine-items{max-height:250px;overflow-y:auto;margin-bottom:10px}.machine-assignment-panel .machine-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#0003;border-radius:4px;margin-bottom:4px}.machine-assignment-panel .item-info{display:flex;flex-direction:column;gap:1px}.machine-assignment-panel .item-designator{font-weight:500;color:var(--color-accent)}.machine-assignment-panel .item-partno{font-size:10px;color:var(--color-text-muted)}.machine-assignment-panel .item-slot{display:flex;gap:4px;align-items:center}.machine-assignment-panel .slot-label{font-size:10px;color:var(--color-text-muted)}.machine-assignment-panel .slot-value{font-weight:500;color:#a6e3a1}.machine-assignment-panel .empty-slots{text-align:center;color:var(--color-text-muted);padding:16px;font-style:italic;font-size:11px}.machine-assignment-panel .machine-capabilities{padding:6px 10px;background:#0003;border-radius:4px;display:flex;gap:4px;flex-wrap:wrap}.machine-assignment-panel .capabilities-label{font-size:10px;color:var(--color-text-muted)}.machine-assignment-panel .capabilities-value{font-size:10px;color:var(--color-text)}.machine-assignment-panel .unassigned-section{flex:1;min-width:340px;background:var(--color-surface2);border-radius:6px;padding:12px}.machine-assignment-panel .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.machine-assignment-panel .section-header h3{margin:0;font-size:14px;font-weight:500}.machine-assignment-panel .assign-controls{display:flex;gap:6px}.machine-assignment-panel .machine-select{padding:6px 10px;border-radius:4px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:11px;cursor:pointer}.machine-assignment-panel .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;max-height:300px;overflow-y:auto}.machine-assignment-panel .item-card{background:var(--color-surface);border-radius:4px;padding:10px;cursor:pointer;transition:all .2s;border:2px solid transparent}.machine-assignment-panel .item-card:hover{border-color:var(--color-border)}.machine-assignment-panel .item-card.selected{border-color:var(--color-accent);background:var(--color-surface2)}.machine-assignment-panel .item-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.machine-assignment-panel .item-details{margin-top:4px}.machine-assignment-panel .item-value{font-size:10px;color:var(--color-text-muted)}.machine-assignment-panel .item-package{font-size:10px;color:#a6e3a1}.machine-assignment-panel .panel-footer{margin-top:12px;padding-top:10px;border-top:1px solid var(--color-border)}.machine-assignment-panel .summary{display:flex;gap:12px;flex-wrap:wrap}.machine-assignment-panel .summary-item{font-size:11px;color:var(--color-text-muted)}.machine-assignment-panel .summary-item strong{color:var(--color-text)}.machine-assignment-panel{background:#1e1e2e;border-radius:8px;padding:16px;color:#cdd6f4}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #313244}.panel-header h2{margin:0;font-size:18px;font-weight:500}.header-actions{display:flex;gap:8px}.optimize-btn,.refresh-btn,.reset-btn,.assign-btn{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.optimize-btn{background:#89b4fa;color:#1e1e2e}.optimize-btn:hover:not(:disabled){background:#b4befe}.refresh-btn{background:#45475a;color:#cdd6f4}.refresh-btn:hover:not(:disabled){background:#585b70}.reset-btn{background:#f38ba8;color:#1e1e2e}.reset-btn:hover:not(:disabled){background:#eba0ac}button:disabled{opacity:.5;cursor:not-allowed}.error-message{background:#f38ba8;color:#1e1e2e;padding:12px;border-radius:4px;margin-bottom:16px}.panel-content{display:flex;gap:16px}.machines-container{display:flex;gap:16px;flex-wrap:wrap}.machine-card{background:#313244;border-radius:8px;padding:16px;min-width:280px;flex:1}.machine-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.machine-header h3{margin:0;font-size:16px;font-weight:500}.machine-name{font-size:12px;color:#a6adc8}.machine-stats{display:flex;gap:16px;margin-bottom:12px;padding:8px 12px;background:#1e1e2e;border-radius:4px}.stat-item{display:flex;gap:4px}.stat-label{color:#a6adc8;font-size:12px}.stat-value{color:#cdd6f4;font-weight:500}.machine-items{max-height:300px;overflow-y:auto;margin-bottom:12px}.machine-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#1e1e2e;border-radius:4px;margin-bottom:6px}.item-info{display:flex;flex-direction:column;gap:2px}.item-designator{font-weight:500;color:#89b4fa}.item-partno{font-size:12px;color:#a6adc8}.item-slot{display:flex;gap:4px;align-items:center}.slot-label{font-size:12px;color:#a6adc8}.slot-value{font-weight:500;color:#a6e3a1}.empty-slots{text-align:center;color:#a6adc8;padding:20px;font-style:italic}.machine-capabilities{padding:8px 12px;background:#1e1e2e;border-radius:4px;display:flex;gap:4px;flex-wrap:wrap}.capabilities-label{font-size:12px;color:#a6adc8}.capabilities-value{font-size:12px;color:#cdd6f4}.unassigned-section{flex:1;min-width:400px;background:#313244;border-radius:8px;padding:16px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-header h3{margin:0;font-size:16px;font-weight:500}.assign-controls{display:flex;gap:8px}.machine-select{padding:8px 12px;border-radius:4px;border:1px solid #45475a;background:#1e1e2e;color:#cdd6f4;font-size:14px;cursor:pointer}.items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;max-height:400px;overflow-y:auto}.item-card{background:#1e1e2e;border-radius:4px;padding:12px;cursor:pointer;transition:all .2s;border:2px solid transparent}.item-card:hover{border-color:#45475a}.item-card.selected{border-color:#89b4fa;background:#313244}.item-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.item-details{margin-top:6px}.item-value{font-size:12px;color:#a6adc8}.item-package{font-size:12px;color:#a6e3a1}.panel-footer{margin-top:16px;padding-top:12px;border-top:1px solid #313244}.summary{display:flex;gap:16px;flex-wrap:wrap}.summary-item{font-size:14px;color:#a6adc8}.summary-item strong{color:#cdd6f4}
