.disclaimer-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000}.disclaimer-dialog{background:#fff;border-radius:8px;padding:2rem;max-width:500px;width:90%;box-shadow:0 8px 32px #0000004d}.disclaimer-dialog h2{margin-bottom:1rem;color:#c62828;font-size:1.25rem}.disclaimer-dialog p{margin:.75rem 0;font-size:.95rem;line-height:1.6}.disclaimer-ok-btn{display:block;margin:1.5rem auto 0;padding:.6rem 2rem;font-size:1rem;font-weight:600;background:#c62828;color:#fff;border:none;border-radius:4px;cursor:pointer}.disclaimer-ok-btn:hover{background:#b71c1c}.github-corner:hover .octo-arm{animation:octocat-wave .56s ease-in-out}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#1a1a1a;background:#f5f5f5;line-height:1.5}h1,h2,h3,h4{margin-top:0}button{cursor:pointer;padding:.4rem .8rem;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.875rem;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#e8e8e8;border-color:#999}button:disabled{opacity:.5;cursor:not-allowed}input,select{padding:.35rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.875rem}input:focus,select:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.app-container{padding:2rem}.app-container--files{max-width:800px;margin:0 auto}.editor-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.editor-title{margin:0}.editor-layout{display:grid;grid-template-columns:350px 1fr;gap:2rem}.file-load-error{color:#dc3545;margin-top:1rem}.wasm-status{font-size:.75rem;padding:.2rem .6rem;border-radius:12px;font-weight:500;white-space:nowrap}.wasm-status--idle{background:#e0e0e0;color:#666}.wasm-status--loading{background:#fff3cd;color:#856404}.wasm-status--ready{background:#d4edda;color:#155724}.wasm-status--rendering{background:#cce5ff;color:#004085}.wasm-status--error{background:#f8d7da;color:#721c24}.file-manager{margin-top:1rem}.file-manager-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.file-manager-controls{display:flex;gap:.5rem;align-items:center}.file-manager-error{color:#dc3545;margin-bottom:.5rem}.file-manager-loading,.file-manager-empty{color:#666;padding:1rem;text-align:center;background:#fff;border:1px solid #ddd;border-radius:6px}.file-list{list-style:none;margin:0;padding:0}.file-list-item{display:flex;align-items:center;gap:.75rem;padding:.6rem .8rem;background:#fff;border:1px solid #ddd;border-bottom:none;cursor:pointer;transition:background .15s}.file-list-item:first-child{border-radius:6px 6px 0 0}.file-list-item:last-child{border-bottom:1px solid #ddd;border-radius:0 0 6px 6px}.file-list-item:only-child{border-radius:6px}.file-list-item:hover{background:#f0f4ff}.file-list-item.selected{background:#e3ecf9;border-color:#4a90d9}.file-name{font-weight:500;flex:1}.file-meta{font-size:.8rem;color:#888}.file-delete-btn{padding:.15rem .5rem;border:none;background:transparent;color:#999;font-size:1.1rem;line-height:1}.file-delete-btn:hover:not(:disabled){color:#dc3545;background:transparent}.example-files{margin-top:1.5rem}.example-files h3{margin:0 0 .5rem;font-size:.95rem;color:#888}.example-load-btn{padding:.2rem .6rem;font-size:.8rem;border:1px solid #555;background:#333;color:#ccc;border-radius:3px;cursor:pointer}.example-load-btn:hover:not(:disabled){background:#444;color:#fff}.example-load-btn:disabled{opacity:.5;cursor:default}.param-editor{margin-bottom:1.5rem}.param-editor-empty{color:#666;font-style:italic}.param-list{display:flex;flex-direction:column;gap:.75rem}.param-field{display:flex;flex-direction:column;gap:.25rem}.param-label{display:flex;flex-direction:column}.param-name{font-weight:600;font-size:.9rem;font-family:SF Mono,Fira Code,Consolas,monospace}.param-help{font-size:.8rem;color:#666;margin-top:.1rem}.param-input input[type=number],.param-input input[type=text],.param-input select,.param-input .param-textarea{width:100%}.param-input .param-textarea{resize:vertical;font-family:inherit;font-size:inherit;min-height:4em}.param-input input[type=checkbox]{width:auto}.vector-input{display:flex;gap:.35rem}.vector-input input{flex:1;min-width:0}.param-set-selector{margin-bottom:1.5rem}.param-set-group h4{font-size:.85rem;color:#555;margin-bottom:.35rem}.param-set-list{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}.param-set-item{display:flex;align-items:center;gap:.15rem}.param-set-apply-btn{font-size:.8rem;padding:.25rem .6rem;background:#eef2ff;border-color:#b3c6ff;color:#35a}.param-set-apply-btn:hover:not(:disabled){background:#dbe4ff}.param-set-delete-btn{padding:.15rem .4rem;border:none;background:transparent;color:#999;font-size:.9rem;line-height:1}.param-set-delete-btn:hover:not(:disabled){color:#dc3545;background:transparent}.param-set-empty{color:#666;font-size:.85rem;font-style:italic;margin-bottom:.75rem}.param-set-save{display:flex;gap:.35rem}.param-set-save input{flex:1;min-width:0}.file-description{margin:0 0 1rem;padding:.75rem 1rem;background:#1e2a3a;border-left:3px solid #4a9eff;border-radius:4px;color:#c0c8d4;font-size:.9rem;line-height:1.5;white-space:pre-line}.export-controls{margin-bottom:1.5rem}.export-section{padding:.5rem 0;border-bottom:1px solid #e0e0e0}.export-section:last-of-type{border-bottom:none}.export-section-title{margin:0 0 .35rem;font-size:.85rem;color:#555}.export-section-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.export-render-btn{flex:1;min-width:80px}.export-error{color:#dc3545;margin-top:.5rem;font-size:.85rem}.preview-panel{position:sticky;top:1rem}.preview-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.preview-header h3{margin:0}.preview-error{color:#dc3545;margin-bottom:.75rem;font-size:.85rem}.preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem}.preview-placeholder{color:#666;text-align:center;padding:2rem;background:#fff;border:2px dashed #ddd;border-radius:6px;grid-column:1 / -1}.preview-item{background:#fff;border:1px solid #ddd;border-radius:6px;overflow:hidden}.preview-label{padding:.4rem .6rem;font-size:.8rem;font-weight:500;background:#f8f9fa;border-bottom:1px solid #eee}.preview-loading{padding:2rem;text-align:center;color:#666}.preview-item-error{padding:1rem;color:#dc3545;font-size:.85rem}.preview-image{display:block;width:100%;height:auto}.preview-3d-container{width:100%;height:500px;border:1px solid #ddd;border-radius:6px;overflow:hidden}.preview-empty{color:#666;font-style:italic}.openscad-logs{margin-top:.5rem;padding:.6rem;background:#1e1e1e;color:#d4d4d4;border-radius:4px;font-size:.75rem;font-family:SF Mono,Fira Code,Consolas,monospace;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.toast{position:fixed;bottom:1.5rem;right:1.5rem;padding:.75rem 1.25rem;background:#155724;color:#fff;border-radius:6px;font-size:.9rem;font-weight:500;box-shadow:0 4px 12px #00000040;cursor:pointer;transition:opacity .3s,transform .3s;z-index:2000}.toast--visible{opacity:1;transform:translateY(0)}.toast--hidden{opacity:0;transform:translateY(1rem);pointer-events:none}.export-download{margin-top:.5rem}.export-download-btn{background:#155724;color:#fff;border-color:#155724;font-weight:500}.export-download-btn:hover:not(:disabled){background:#1a7a30;border-color:#1a7a30}.export-cache-badge{font-size:.7rem;color:#155724;background:#d4edda;padding:.1rem .4rem;border-radius:3px;margin-left:.35rem;font-weight:500}.file-screen-actions{display:flex;gap:.5rem;align-items:center}.build-plate-open-btn{font-size:.85rem;padding:.35rem .75rem;border-radius:4px;border:1px solid #4a90d9;background:#4a90d9;color:#fff;cursor:pointer}.build-plate-open-btn:hover{background:#357abd}.export-build-plate-btn{font-size:.75rem;padding:.25rem .5rem;border-radius:3px;border:1px solid #4a90d9;background:transparent;color:#4a90d9;cursor:pointer}.export-build-plate-btn:hover{background:#4a90d9;color:#fff}.printer-settings-btn{margin-left:auto;font-size:.85rem}.printer-settings-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:3000}.printer-settings-dialog{background:#fff;border-radius:8px;padding:1.5rem;width:90%;max-width:480px;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px #0000004d}.printer-settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.printer-settings-header h3{margin:0}.printer-settings-close{border:none;background:transparent;font-size:1.5rem;color:#666;padding:0 .3rem;line-height:1}.printer-settings-close:hover:not(:disabled){color:#333;background:transparent}.printer-settings-empty{color:#666;font-style:italic;margin:0 0 1rem}.printer-list{list-style:none;margin:0 0 1rem;padding:0}.printer-list-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .6rem;border:1px solid #ddd;border-bottom:none;background:#fafafa}.printer-list-item:first-child{border-radius:6px 6px 0 0}.printer-list-item:last-child{border-bottom:1px solid #ddd;border-radius:0 0 6px 6px}.printer-list-item:only-child{border-radius:6px}.printer-info{display:flex;flex-direction:column;flex:1;min-width:0}.printer-name{font-weight:600;font-size:.9rem}.printer-address{font-size:.8rem;color:#666;font-family:SF Mono,Fira Code,Consolas,monospace}.printer-profile-label{font-size:.75rem;color:#888;font-style:italic}.printer-profile-field{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem}.printer-profile-field>span{font-size:.8rem;color:#555}.printer-profile-field select{padding:.3rem .5rem;border-radius:4px;border:1px solid #ccc;font-size:.85rem}.printer-actions{display:flex;gap:.25rem}.printer-edit-btn{font-size:.8rem;padding:.2rem .5rem}.printer-delete-btn{border:1px solid #ccc;background:#fff;color:#dc3545;font-size:.8rem;padding:.2rem .5rem;line-height:1;border-radius:4px;cursor:pointer}.printer-delete-btn:hover:not(:disabled){color:#fff;background:#dc3545;border-color:#dc3545}.printer-edit-form{display:flex;flex-direction:column;gap:.35rem;width:100%}.printer-edit-actions{display:flex;gap:.35rem}.printer-validation-error{color:#dc3545;font-size:.85rem;margin-bottom:.5rem}.printer-add-form h4{margin:0 0 .5rem;font-size:.9rem;color:#555}.printer-add-fields{display:flex;flex-direction:column;gap:.4rem}.printer-add-fields input{width:100%}.printer-add-btn{align-self:flex-start;background:#155724;color:#fff;border-color:#155724;font-weight:500}.printer-add-btn:hover:not(:disabled){background:#1a7a30;border-color:#1a7a30}.printer-scan-section{padding:.75rem 0;border-top:1px solid #444}.printer-scan-btn{width:100%;background:#004085;color:#fff;border-color:#004085;font-weight:500;padding:.5rem}.printer-scan-btn:hover:not(:disabled){background:#0056b3;border-color:#0056b3}.printer-scan-btn:disabled{opacity:.6;cursor:wait}.printer-scan-results{list-style:none;padding:0;margin:.5rem 0 0}.printer-scan-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem .5rem;background:#1a3a1a;border:1px solid #2a5a2a;border-radius:4px;margin-top:.4rem}.printer-scan-empty{color:#aaa;font-size:.85rem;text-align:center;margin:.5rem 0 0}.send-to-printer{position:relative}.send-to-printer-btn{font-size:.8rem;padding:.3rem .6rem;background:#004085;color:#fff;border-color:#004085;font-weight:500;white-space:nowrap}.send-to-printer-btn:hover:not(:disabled){background:#0056b3;border-color:#0056b3}.send-to-printer-btn:disabled{opacity:.7}.send-to-printer-dropdown{position:absolute;top:100%;right:0;margin-top:.25rem;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:2500;min-width:180px;overflow:hidden}.send-to-printer-option{display:flex;flex-direction:column;width:100%;padding:.5rem .75rem;border:none;border-radius:0;background:#fff;text-align:left;cursor:pointer}.send-to-printer-option:hover:not(:disabled){background:#f0f4ff}.send-to-printer-option:not(:last-child){border-bottom:1px solid #eee}.send-to-printer-option-name{font-weight:500;font-size:.85rem}.send-to-printer-option-address{font-size:.75rem;color:#666;font-family:SF Mono,Fira Code,Consolas,monospace}.filament-dialog{max-width:520px}.filament-list{list-style:none;margin:0 0 1rem;padding:0}.filament-list-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .6rem;border:1px solid #ddd;border-bottom:none;background:#fafafa}.filament-list-item:first-child{border-radius:6px 6px 0 0}.filament-list-item:last-child{border-bottom:1px solid #ddd;border-radius:0 0 6px 6px}.filament-list-item:only-child{border-radius:6px}.filament-info{display:flex;flex-direction:column;flex:1;min-width:0}.filament-header-row{display:flex;align-items:center;gap:.4rem}.filament-name{font-weight:600;font-size:.9rem}.filament-builtin-badge{font-size:.65rem;color:#666;background:#e8e8e8;padding:.05rem .35rem;border-radius:3px;font-weight:400;margin-left:.3rem}.filament-details{font-size:.8rem;color:#666}.filament-notes{font-size:.75rem;color:#999;font-style:italic}.filament-actions{display:flex;gap:.25rem;flex-shrink:0}.filament-add-btn{margin-top:.25rem}.filament-add-section h4{margin:0 0 .5rem;font-size:.9rem;color:#555}.filament-form{display:flex;flex-direction:column;gap:.4rem;width:100%}.filament-form-row{display:flex;gap:.5rem}.filament-form-row>.filament-form-field{flex:1}.filament-form-field{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem;font-weight:500;color:#555}.filament-form-field input{width:100%}.filament-advanced-section{margin-top:.5rem;border:1px solid #ddd;border-radius:4px;padding:.25rem .5rem}.filament-advanced-section summary{cursor:pointer;font-weight:600;font-size:.85rem;color:#444;padding:.25rem 0}.filament-advanced-section h4{margin:.5rem 0 .25rem;font-size:.8rem;color:#555}.filament-checkbox-field{flex-direction:row;align-items:center;gap:.4rem}.filament-checkbox-field input[type=checkbox]{width:auto}.filament-form-actions{display:flex;gap:.35rem;margin-top:.25rem}.filament-save-btn{background:#155724;color:#fff;border-color:#155724;font-weight:500}.filament-save-btn:hover:not(:disabled){background:#1a7a30;border-color:#1a7a30}.print-dialog{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0;display:flex;flex-direction:column}.print-dialog-summary{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#f0f4f8;border-radius:6px;margin-bottom:.75rem;font-size:.85rem}.print-dialog-printer{font-weight:600;color:#333}.print-dialog-filament{color:#555}.print-dialog-filament-select{display:flex;align-items:center;gap:6px;color:#555;font-size:.9em}.print-dialog-filament-select select{flex:1;padding:2px 4px;font-size:.95em}.print-dialog-subheading{margin:12px 0 6px;font-size:.85em;color:#666;text-transform:uppercase;letter-spacing:.5px}.print-dialog-tabs{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:.75rem}.print-dialog-tab{padding:.3rem .5rem;font-size:.75rem;border:1px solid #ddd;background:#f5f5f5;border-radius:4px;color:#555;cursor:pointer}.print-dialog-tab:hover:not(:disabled){background:#e8e8e8}.print-dialog-tab--active{background:#155724;color:#fff;border-color:#155724}.print-dialog-section{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem;min-height:120px}.print-dialog-field{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem;font-weight:500;color:#555}.print-dialog-field input,.print-dialog-field select{width:100%}.print-dialog-field--checkbox{flex-direction:row;align-items:center;gap:.4rem}.print-dialog-field--checkbox input{width:auto}.print-dialog-hint{font-size:.75rem;color:#888;font-style:italic;margin:.25rem 0 0}.print-dialog-field.override-active{border-left:3px solid #4fc3f7;padding-left:.4rem;background:#4fc3f70f;border-radius:2px}.print-dialog-field.override-inherited{opacity:.55}.override-reset-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;margin-left:4px;font-size:11px;line-height:1;border:1px solid #4fc3f7;border-radius:50%;background:transparent;color:#4fc3f7;cursor:pointer;vertical-align:middle;flex-shrink:0}.override-reset-btn:hover{background:#4fc3f7;color:#fff}.print-dialog-details{border:1px solid #444;border-radius:4px;padding:.5rem;margin:.5rem 0}.print-dialog-details summary{cursor:pointer;font-weight:500;font-size:.85rem}.print-dialog-inline-row{display:flex;align-items:center;gap:.4rem;margin:.25rem 0}.print-dialog-inline-row .print-dialog-field{flex:1;min-width:0;margin:0}.print-dialog-inline-row .print-dialog-field input{width:100%}.print-dialog-remove-btn{background:transparent;border:1px solid #666;color:#f66;cursor:pointer;border-radius:4px;font-size:1rem;line-height:1;padding:.2rem .5rem;flex-shrink:0}.print-dialog-add-btn{font-size:.8rem;margin-top:.25rem;padding:.2rem .6rem;cursor:pointer}.print-dialog-extruder-row{display:flex;align-items:center;gap:.5rem}.print-dialog-color-label{display:flex;align-items:center;gap:.4rem;min-width:90px}.print-dialog-color-swatch{display:inline-block;width:16px;height:16px;border-radius:3px;border:1px solid #555;flex-shrink:0}.print-dialog-gcode{font-family:monospace;font-size:.8rem;resize:vertical;min-height:60px}.print-dialog-slice-btn{width:100%;padding:.6rem 1rem;font-size:.95rem;font-weight:600;background:#155724;color:#fff;border:1px solid #155724;border-radius:6px;cursor:pointer}.print-dialog-slice-btn:hover:not(:disabled){background:#1a7a30;border-color:#1a7a30}.print-dialog-slice-btn:disabled{opacity:.5;cursor:not-allowed}.print-dialog-cancel-btn{width:100%;padding:.5rem 1rem;font-size:.9rem;font-weight:600;background:transparent;color:#ccc;border:1px solid #555;border-radius:6px;cursor:pointer}.print-dialog-cancel-btn:hover{background:#333;border-color:#888}.print-dialog-progress{padding:1.5rem 0;text-align:center}.print-dialog-progress-label{font-size:.9rem;margin-bottom:.75rem;color:#333;text-transform:capitalize}.print-dialog-progress-bar{width:100%;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden}.print-dialog-progress-fill{height:100%;background:#155724;border-radius:4px;transition:width .3s ease}.print-dialog-done{padding:1rem 0;text-align:center;flex:1;display:flex;flex-direction:column;min-height:0}.print-dialog-success{font-weight:600;color:#155724;font-size:1rem;margin-bottom:.5rem}.print-dialog-done p{margin:.25rem 0;font-size:.85rem;color:#555}.print-dialog-done-actions{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.print-dialog-error{padding:1rem 0}.print-dialog-error p{color:#721c24;font-weight:600;margin:0 0 .5rem}.print-dialog-error-detail{font-size:.8rem;background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;padding:.5rem;color:#721c24;white-space:pre-wrap;word-break:break-word;max-height:150px;overflow-y:auto}.print-dialog-error-actions{display:flex;gap:.5rem;margin-top:.75rem}.print-dialog-overridable-label{display:flex;align-items:center;gap:.4rem}.print-dialog-from-profile{font-size:.7rem;color:#999;font-weight:400;font-style:italic}.print-dialog-reset-btn{font-size:.65rem;padding:.1rem .35rem;border:1px solid #d4a017;background:#fff8e1;color:#b8860b;border-radius:3px;cursor:pointer;font-weight:500;line-height:1}.print-dialog-reset-btn:hover{background:#fff0b3;border-color:#b8860b}@media(max-width:768px){.app-container{padding:.75rem}.app-container--files{max-width:100%}.editor-header{flex-wrap:wrap;gap:.5rem}.editor-title{font-size:1rem;flex:1 1 100%;order:-1}.editor-layout{grid-template-columns:1fr;gap:1rem}.preview-3d-container{height:300px}.preview-panel{position:static}.export-section-actions{flex-wrap:wrap}.printer-settings-dialog{width:95%;padding:1rem;max-height:90vh}h1{font-size:1.25rem}.param-set-save{flex-direction:column}.file-list-item{padding:.5rem;gap:.5rem}.toast{left:.75rem;right:.75rem;bottom:.75rem}.print-dialog{max-width:100%;width:100%;border-radius:0;max-height:100%;height:100%}.print-dialog-summary{flex-direction:column;align-items:flex-start;gap:.35rem}.print-dialog-filament-select{width:100%}.print-dialog-filament-select select{flex:1}.print-dialog-tabs{gap:4px;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.print-dialog-tabs::-webkit-scrollbar{display:none}.print-dialog-tab{padding:.45rem .65rem;font-size:.8rem;white-space:nowrap;flex-shrink:0;min-height:36px}.print-dialog-section{min-height:80px}.print-dialog-field input,.print-dialog-field select{min-height:40px;font-size:1rem}.print-dialog-field--checkbox input{min-height:auto;width:20px;height:20px}.print-dialog-extruder-row{flex-direction:column;align-items:flex-start;gap:.25rem}.print-dialog-color-label{min-width:auto}.print-dialog-extruder-row select{width:100%}.print-dialog-gcode{font-size:.85rem;min-height:80px}.print-dialog-slice-btn{min-height:48px;font-size:1rem}.print-dialog-done-actions{flex-direction:column;gap:.5rem}.print-dialog-done-actions button{width:100%;min-height:44px}.print-dialog-error-actions{flex-direction:column;gap:.5rem}.print-dialog-error-actions button{width:100%;min-height:44px}.filament-dialog{max-width:100%;width:100%;border-radius:0;max-height:100vh;height:100%}.filament-form-row{flex-direction:column;gap:.4rem}.filament-form-field input{min-height:40px;font-size:1rem}.filament-form-actions button{min-height:44px}.filament-actions button{min-height:36px;min-width:36px;padding:.3rem .5rem}.send-to-printer-dropdown{position:fixed;inset:auto 0 0;border-radius:12px 12px 0 0;box-shadow:0 -4px 20px #0003;max-height:50vh;overflow-y:auto;z-index:3000}.send-to-printer-option{padding:.75rem 1rem;min-height:48px}.printer-edit-btn,.printer-delete-btn{min-height:36px;min-width:36px;font-size:.85rem;padding:.3rem .6rem}.printer-add-btn{min-height:44px;width:100%}.printer-scan-btn{min-height:48px}.preview-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.gcode-layer-range{width:36px;-webkit-appearance:none;appearance:none}.gcode-layer-slider{right:8px;top:8px;bottom:8px}.gcode-layer-info{padding:8px 12px}.gcode-layer-number{font-size:1.2rem}.gcode-preview-back{padding:8px 20px;font-size:.9rem;min-height:40px}}.gcode-preview-container{position:relative;width:100%;height:100%}.gcode-preview-container .gcode-preview-3d{width:100%;height:100%}.gcode-layer-slider{position:absolute;right:12px;top:12px;bottom:12px;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.gcode-layer-info{display:flex;flex-direction:column;align-items:center;background:#000000b3;border-radius:6px;padding:6px 10px;pointer-events:auto}.gcode-layer-number{color:#fff;font-size:1.1rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}.gcode-layer-z{color:#fff9;font-size:.75rem;font-variant-numeric:tabular-nums}.gcode-layer-sliders{display:flex;flex-direction:row;flex:1;min-height:0;gap:2px;pointer-events:auto}.gcode-layer-range{writing-mode:vertical-lr;direction:rtl;flex:1;min-height:0;width:28px;cursor:pointer;accent-color:#4a90d9}.gcode-layer-range-min{accent-color:#f5a623}.gcode-layer-total{color:#ffffff80;font-size:.7rem;background:#000000b3;border-radius:4px;padding:3px 8px;white-space:nowrap;pointer-events:auto}.gcode-color-toggle{position:absolute;bottom:12px;left:12px;display:flex;gap:0;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.2)}.gcode-color-toggle button{display:flex;align-items:center;gap:5px;padding:6px 12px;font-size:.75rem;font-weight:500;color:#fff9;background:#000000b3;border:none;cursor:pointer;transition:background .15s,color .15s}.gcode-color-toggle button:not(:last-child){border-right:1px solid rgba(255,255,255,.15)}.gcode-color-toggle button.active{background:#ffffff26;color:#fff}.gcode-color-toggle button:hover:not(.active){background:#ffffff14}.gcode-color-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.3)}.gcode-legend{position:absolute;bottom:48px;left:12px;display:flex;flex-direction:column;gap:3px;background:#000000b3;border-radius:6px;padding:6px 10px;pointer-events:none}.gcode-legend-item{display:flex;align-items:center;gap:6px}.gcode-legend-swatch{width:12px;height:3px;border-radius:1px;flex-shrink:0}.gcode-legend-label{color:#ffffffb3;font-size:.65rem;white-space:nowrap}.gcode-preview-fullscreen{position:fixed;inset:0;z-index:10001;background:#1a1a2e}.gcode-preview-fullscreen .gcode-preview-container{width:100%;height:100%}.gcode-preview-back{position:absolute;top:12px;left:12px;padding:8px 20px;font-size:.9rem;font-weight:500;background:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:6px;cursor:pointer;z-index:10}.gcode-preview-back:hover:not(:disabled){background:#000000e6;border-color:#fff6}.print-dialog-inline-preview{position:relative;width:100%;flex:1;min-height:200px;border-radius:8px;overflow:hidden;margin-bottom:.5rem}.print-dialog-inline-preview .gcode-preview-container{width:100%;height:100%}.print-dialog-fullscreen-btn{position:absolute;top:8px;right:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;background:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:6px;cursor:pointer;z-index:10}.print-dialog-fullscreen-btn:hover{background:#000000e6;border-color:#fff6}.print-dialog-preview-loading{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;text-align:center;color:#555;font-size:.85rem;gap:.5rem}.print-dialog-preview-loading .print-dialog-progress-bar{max-width:300px}.print-dialog-engine-badge{font-size:.7rem;font-weight:600;padding:.1rem .5rem;border-radius:10px;white-space:nowrap}.print-dialog-engine-badge--wasm{background:#cce5ff;color:#004085}.print-dialog-engine-badge--native{background:#d4edda;color:#155724}.print-dialog-done-info{display:flex;gap:1rem;font-size:.85rem;color:#ffffffb3;margin-bottom:.5rem}.build-plate-overlay{position:fixed;inset:0;z-index:9999;background:#f5f5f5;display:flex;align-items:stretch;justify-content:stretch}.build-plate-loading{display:flex;align-items:center;justify-content:center;width:100%;font-size:1.1rem;color:#666}.build-plate-view{display:flex;flex-direction:column;width:100%;height:100%}.build-plate-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:#fff;border-bottom:1px solid #ddd;flex-shrink:0}.build-plate-header h3{margin:0;font-size:1rem}.build-plate-header-actions{display:flex;align-items:center;gap:1rem}.build-plate-object-count{font-size:.85rem;color:#666}.build-plate-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;line-height:1;padding:.25rem .5rem;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.build-plate-close:hover{color:#333}.build-plate-body{display:flex;flex:1;min-height:0}.build-plate-sidebar{width:280px;min-width:280px;background:#fff;border-right:1px solid #ddd;display:flex;flex-direction:column;overflow-y:auto}.build-plate-section-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;font-size:.85rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.5px;border:none;border-bottom:1px solid #eee;background:#fafafa;cursor:pointer;text-align:left;min-height:36px;flex-shrink:0}.build-plate-section-toggle:hover{background:#f0f0f0}.build-plate-section-arrow{font-size:.6rem;transition:transform .15s ease;display:inline-block;flex-shrink:0}.build-plate-section-arrow--open{transform:rotate(90deg)}.build-plate-sidebar-section-body{padding:.75rem;border-bottom:1px solid #eee}.build-plate-sidebar-header{padding:.5rem .75rem;font-size:.85rem;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #eee}.build-plate-empty{padding:1rem .75rem;font-size:.85rem;color:#999;text-align:center;line-height:1.6}.build-plate-object-list{flex:1;overflow-y:auto}.build-plate-object-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;border-bottom:1px solid #f0f0f0;font-size:.85rem;min-height:44px}.build-plate-object-item:hover{background:#f5f5ff}.build-plate-object-item--selected{background:#e8f0fe;border-left:3px solid #4a90d9}.build-plate-object-type-badge{font-size:.65rem;font-weight:600;padding:1px 4px;border-radius:3px;background:#e0e0e0;color:#555;flex-shrink:0}.build-plate-object-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.build-plate-object-colors{display:inline-flex;gap:2px;margin-left:4px;align-items:center}.build-plate-color-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid rgba(255,255,255,.3)}.build-plate-object-override-badge{color:#e67e22;font-weight:700;font-size:1rem}.build-plate-center{flex:1;display:flex;flex-direction:column;min-width:0}.build-plate-toolbar{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;background:#fff;border-bottom:1px solid #ddd;flex-shrink:0;flex-wrap:wrap}.build-plate-toolbar-group{display:flex;gap:.25rem}.build-plate-toolbar-right{margin-left:auto}.build-plate-btn{padding:.4rem .7rem;font-size:.8rem;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;white-space:nowrap;min-height:44px;min-width:44px}.build-plate-btn:hover:not(:disabled){background:#f0f0f0;border-color:#aaa}.build-plate-btn:disabled{opacity:.4;cursor:not-allowed}.build-plate-btn--active{background:#e8f0fe;border-color:#4a90d9;color:#2962b0}.build-plate-btn--primary{background:#4a90d9;color:#fff;border-color:#3a7bc8;font-weight:600}.build-plate-btn--primary:hover:not(:disabled){background:#3a7bc8}.build-plate-btn--small{padding:.2rem .5rem;font-size:.75rem;min-height:auto}.build-plate-canvas{width:100%;height:100%;touch-action:none;position:relative}.build-plate-transform-overlay{position:absolute;bottom:8px;left:8px;background:#000000b3;color:#fff;padding:6px 10px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;line-height:1.6;z-index:5}.build-plate-canvas-container{flex:1;min-height:0;position:relative;background:#1a1a2e}.build-plate-canvas-container--drag-over{outline:3px dashed #4ecdc4;outline-offset:-3px}.build-plate-array-popover{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 12px;background:#2a2a3e;border:1px solid #444;border-radius:6px}.build-plate-array-popover label{display:flex;align-items:center;gap:4px;font-size:.85rem;color:#ccc}.build-plate-array-popover input{width:50px}.build-plate-array-popover-actions{display:flex;gap:4px}.build-plate-scad-picker-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000080;z-index:20}.build-plate-scad-picker{background:#2a2a3e;border:1px solid #555;border-radius:8px;padding:16px;min-width:260px;max-width:360px}.build-plate-scad-picker h3{margin:0 0 12px;font-size:1rem;color:#eee}.build-plate-scad-multicolor-toggle{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:.85rem;color:#ccc;cursor:pointer}.build-plate-scad-picker-list{display:flex;flex-direction:column;gap:4px;max-height:300px;overflow-y:auto;margin-bottom:12px}.build-plate-scad-picker-item{display:block;width:100%;padding:8px 12px;text-align:left;background:transparent;border:1px solid #444;border-radius:4px;color:#ddd;font-size:.9rem;cursor:pointer}.build-plate-scad-picker-item:hover{background:#3a3a5e;border-color:#4ecdc4;color:#fff}.build-plate-drop-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#4ecdc426;color:#4ecdc4;font-size:1.2rem;font-weight:600;z-index:10;pointer-events:none}.build-plate-rendering-overlay{position:absolute;top:8px;left:50%;transform:translate(-50%);background:#000000b3;color:#4ecdc4;padding:6px 16px;border-radius:4px;font-size:.85rem;z-index:10;pointer-events:none}.build-plate-scad-error{position:absolute;top:8px;left:50%;transform:translate(-50%);background:#b42828e6;color:#fff;padding:6px 16px;border-radius:4px;font-size:.85rem;z-index:10;display:flex;align-items:center;gap:8px}.build-plate-scad-error button{background:#fff3;border:none;color:#fff;padding:2px 8px;border-radius:3px;cursor:pointer}.build-plate-scad-params-section{border-bottom:1px solid #eee;padding-bottom:12px;margin-bottom:12px}.build-plate-scad-params-section h4{margin:0 0 8px;font-size:.85rem;color:#555}.build-plate-scad-params-section .param-editor{max-height:300px;overflow-y:auto}.build-plate-scad-params-section .param-editor h3{display:none}.build-plate-rerender-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.build-plate-rerender-error{margin-top:6px;background:#b428281a;color:#b42828;padding:6px 10px;border-radius:4px;font-size:.8rem;display:flex;align-items:center;gap:6px}.build-plate-rerender-error button{background:#b4282826;border:none;color:#b42828;padding:2px 8px;border-radius:3px;cursor:pointer;font-size:.75rem}.build-plate-object-settings{display:flex;flex-direction:column;gap:.5rem}.build-plate-plate-settings{display:flex;flex-direction:column;gap:.75rem}.build-plate-transform-section{margin-bottom:1rem}.build-plate-transform-section h4{margin:0 0 .5rem;font-size:.8rem;color:#555;text-transform:uppercase;letter-spacing:.3px}.build-plate-transform-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.build-plate-transform-grid label{display:flex;flex-direction:column;font-size:.75rem;color:#666;gap:2px}.build-plate-transform-grid input{width:100%;padding:.3rem;font-size:.85rem;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.build-plate-overrides-section{margin-bottom:1rem}.build-plate-overrides-section h4{margin:0 0 .5rem;font-size:.8rem;color:#555;text-transform:uppercase;letter-spacing:.3px}.build-plate-override-hint{font-size:.8rem;color:#888;margin:0 0 .5rem;line-height:1.4}.build-plate-settings-tabs{margin-top:.75rem;border-top:1px solid #e0e0e0;padding-top:.5rem}.build-plate-settings-tab-bar{display:flex;flex-wrap:wrap;gap:2px;margin-bottom:.5rem}.build-plate-settings-tab{padding:.25rem .4rem;font-size:.7rem;border:1px solid #ccc;border-radius:3px;background:#f5f5f5;cursor:pointer;white-space:nowrap}.build-plate-settings-tab:hover{background:#e8e8e8}.build-plate-settings-tab--active{background:#4a9eff;color:#fff;border-color:#3a8eef}.build-plate-settings-tab-content{max-height:400px;overflow-y:auto;padding-right:.25rem}.build-plate-override-summary{margin:.5rem 0;padding:.4rem .5rem;background:#f8f8f8;border-radius:4px;font-size:.8rem}.build-plate-override-summary-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.build-plate-override-summary-row span{color:#666}.build-plate-scale-section{margin-top:.5rem}.build-plate-scale-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem;font-size:.8rem;font-weight:600}.build-plate-uniform-toggle{display:flex;align-items:center;gap:.25rem;font-size:.75rem;font-weight:400;cursor:pointer}.build-plate-uniform-toggle input[type=checkbox]{margin:0}.build-plate-extruder-section{margin-bottom:.75rem}.build-plate-extruder-section h4{margin:0 0 .3rem;font-size:.8rem;color:#555;text-transform:uppercase;letter-spacing:.3px}.build-plate-extruder-section select{width:100%;padding:.3rem;font-size:.85rem;border:1px solid #ccc;border-radius:3px}@media(max-width:768px){.build-plate-body{flex-direction:column}.build-plate-sidebar{width:100%;min-width:100%;max-height:40vh;border-right:none;border-bottom:1px solid #ddd}}.build-plate-prime-tower-config{margin-bottom:12px}.build-plate-prime-tower-config h4{margin:0 0 8px;font-size:13px;font-weight:600}.build-plate-prime-tower-config .print-dialog-field{margin-bottom:6px}.build-plate-prime-tower-config .print-dialog-field label{display:flex;align-items:center;gap:6px;font-size:13px}.build-plate-prime-tower-config .print-dialog-field label span{min-width:100px;font-size:12px;color:#666}.build-plate-prime-tower-config .print-dialog-field input[type=number]{width:70px;padding:3px 6px;border:1px solid #ccc;border-radius:3px;font-size:12px}.build-plate-prime-tower-warnings{margin-top:8px}.build-plate-prime-tower-warning{padding:4px 8px;background:#fff3cd;border:1px solid #ffc107;border-radius:3px;font-size:12px;color:#856404;margin-bottom:4px}.build-plate-flush-volumes{padding:8px 0}.build-plate-flush-volumes h4{margin:0 0 4px;font-size:13px;font-weight:600}.flush-volume-matrix{overflow-x:auto;margin:8px 0}.flush-volume-table{border-collapse:collapse;font-size:12px;width:100%}.flush-volume-table th,.flush-volume-table td{padding:3px;text-align:center;border:1px solid #444}.flush-volume-corner{font-size:10px;color:#999;white-space:nowrap}.flush-volume-header,.flush-volume-row-header{font-weight:600;background:#2a2a3e;min-width:36px}.flush-volume-color-dot{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid #666;vertical-align:middle}.flush-volume-cell{padding:2px}.flush-volume-cell--diagonal{background:#1a1a2e}.flush-volume-diagonal{color:#555}.flush-volume-input{width:56px;padding:2px 4px;font-size:12px;text-align:center;background:#2a2a3e;border:1px solid #555;border-radius:3px;color:inherit}.flush-volume-input:focus{border-color:#4fc3f7;outline:none}.flush-volume-multiplier{margin-top:8px}.flush-volume-multiplier label{display:flex;align-items:center;gap:8px}.flush-volume-multiplier label span{flex:1;font-size:12px}.flush-volume-multiplier input[type=number]{width:64px;padding:3px 6px;font-size:12px;background:#2a2a3e;border:1px solid #555;border-radius:3px;color:inherit}.flush-volume-reset{margin-top:8px;font-size:12px}.build-plate-validation-errors{position:absolute;top:8px;left:50%;transform:translate(-50%);background:#b47814e6;color:#fff;padding:8px 12px;border-radius:6px;font-size:.85rem;z-index:10;max-width:90%}.build-plate-validation-error{margin-bottom:4px}.build-plate-validation-errors button{background:#fff3;border:none;color:#fff;padding:2px 8px;border-radius:3px;cursor:pointer;margin-top:4px}.build-plate-slice-progress{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000000d9;color:#fff;padding:16px 24px;border-radius:8px;z-index:10;text-align:center;min-width:200px}.build-plate-slice-progress-label{font-size:.9rem;margin-bottom:8px}.build-plate-slice-progress-bar{height:6px;background:#333;border-radius:3px;overflow:hidden;margin-bottom:10px}.build-plate-slice-progress-fill{height:100%;background:#4fc3f7;border-radius:3px;transition:width .2s ease}.build-plate-slice-result{width:100%;display:flex;flex-direction:column;overflow:hidden;flex:1}.build-plate-slice-result-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #333}.build-plate-slice-result-header h4{margin:0;font-size:14px}.build-plate-slice-stats{display:flex;gap:16px;padding:8px 12px;font-size:13px;color:#aaa}.build-plate-gcode-preview{flex:1;min-height:300px;position:relative}.build-plate-preview-loading{display:flex;align-items:center;justify-content:center;padding:40px;color:#888;font-size:13px}.build-plate-slice-actions{padding:8px 12px;border-top:1px solid #333}.build-plate-upload-error{margin-top:6px;color:#f44;font-size:12px}
