*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:#0f0f1a;color:#e0e0e0}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-header{background:#1a1a2e;padding:.75rem 1.5rem;border-bottom:1px solid #333;display:flex;align-items:baseline;gap:1rem}.app-header h1{font-size:1.5rem;font-weight:600;color:#4a90d9}.app-header p{font-size:.875rem;color:#888}.app-main{display:flex;flex:1;overflow:hidden}.sidebar{width:300px;background:#16213e;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.left-sidebar{border-right:1px solid #333}.right-sidebar{border-left:1px solid #333}.viewport{flex:1;position:relative}.viewport-container{width:100%;height:100%}.panel{background:#1a1a2e;border-radius:8px;overflow:hidden}.panel-title{background:#252545;padding:.75rem 1rem;font-size:.875rem;font-weight:600;color:#4a90d9;border-bottom:1px solid #333}.panel-content{padding:1rem}.form-grid{display:flex;flex-direction:column;gap:.75rem}.form-grid label{display:flex;flex-direction:column;gap:.25rem}.form-grid label span{font-size:.75rem;color:#888}.form-grid input{background:#252545;border:1px solid #333;border-radius:4px;padding:.5rem;color:#e0e0e0;font-size:.875rem}.form-grid input:focus{outline:none;border-color:#4a90d9}.face-grid{display:flex;flex-direction:column;gap:.5rem;align-items:center}.face-row{display:flex;gap:.5rem}.face-spacer{width:70px;height:50px}.face-button{width:70px;height:50px;border:2px solid #333;border-radius:6px;background:#252545;color:#e0e0e0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;font-size:.75rem;font-weight:500;transition:all .2s}.face-button:hover{border-color:#4a90d9}.face-button.solid{background:#3498db30;border-color:#3498db}.face-button.open{background:#e74c3c20;border-color:#e74c3c}.face-status{font-size:.625rem;opacity:.7}.subdivision-controls{display:flex;flex-direction:column;gap:1rem}.control-section{display:flex;flex-direction:column;gap:.5rem}.control-section h4{font-size:.75rem;color:#888;font-weight:500}.button-row{display:flex;gap:.5rem}.button-row button{flex:1;padding:.5rem;background:#252545;border:1px solid #333;border-radius:4px;color:#e0e0e0;cursor:pointer;font-size:.75rem;transition:all .2s}.button-row button:hover:not(:disabled){background:#4a90d9;border-color:#4a90d9}.button-row button:disabled{opacity:.4;cursor:not-allowed}.axis-hint{font-size:.625rem;color:#e67e22;margin-top:.5rem;text-align:center}.distribute-row{display:flex;align-items:center;gap:.5rem}.distribute-row label{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#888}.distribute-row input{width:60px;background:#252545;border:1px solid #333;border-radius:4px;padding:.35rem .5rem;color:#e0e0e0;font-size:.875rem}.subdivision-list{list-style:none;display:flex;flex-direction:column;gap:.25rem}.subdivision-list li{display:flex;justify-content:space-between;align-items:center;background:#252545;padding:.35rem .5rem;border-radius:4px;font-size:.75rem}.remove-btn{background:#e74c3c;border:none;color:#fff;width:20px;height:20px;border-radius:3px;cursor:pointer;font-size:.625rem}.reset-btn{width:100%;padding:.5rem;background:#e74c3c30;border:1px solid #e74c3c;border-radius:4px;color:#e74c3c;cursor:pointer;font-size:.75rem;margin-top:.5rem}.reset-btn:hover{background:#e74c3c;color:#fff}.hint{font-size:.75rem;color:#666;text-align:center;padding:1rem}.face-preview-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.face-preview-item{background:#252545;border-radius:6px;padding:.5rem;display:flex;flex-direction:column;align-items:center}.face-preview-item.open{opacity:.5}.face-preview-header{font-size:.625rem;font-weight:600;color:#4a90d9;margin-bottom:.25rem}.face-preview-svg{width:100%;height:80px;background:#1a1a2e;border-radius:4px}.face-preview-dimensions{font-size:.625rem;color:#666;margin-top:.25rem}.face-preview-empty{height:80px;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:#666}.export-controls{display:flex;flex-direction:column;gap:1rem}.kerf-input{display:flex;flex-direction:column;gap:.25rem}.kerf-input span{font-size:.75rem;color:#888}.kerf-input input{background:#252545;border:1px solid #333;border-radius:4px;padding:.5rem;color:#e0e0e0;font-size:.875rem}.export-section h4{font-size:.75rem;color:#888;margin-bottom:.5rem}.export-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.export-buttons button{padding:.5rem;background:#252545;border:1px solid #333;border-radius:4px;color:#e0e0e0;cursor:pointer;font-size:.75rem;transition:all .2s}.export-buttons button:hover:not(:disabled){background:#4a90d9;border-color:#4a90d9}.export-buttons button:disabled{opacity:.4;cursor:not-allowed}.export-all-btn{width:100%;padding:.75rem;background:#27ae6030;border:1px solid #27ae60;border-radius:4px;color:#27ae60;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.export-all-btn:hover:not(:disabled){background:#27ae60;color:#fff}.export-all-btn:disabled{opacity:.4;cursor:not-allowed}.export-info{background:#252545;border-radius:6px;padding:.75rem;font-size:.75rem;color:#888}.export-info p{margin-bottom:.5rem}.export-info ul{margin-left:1rem}.export-info li{margin-bottom:.25rem}.face-preview-section{margin-bottom:1rem}.face-preview-section:last-child{margin-bottom:0}.face-preview-section h4{font-size:.75rem;color:#888;margin-bottom:.5rem;font-weight:500}.face-preview-item.subdivision{border:1px solid #f39c1240}.face-preview-item.subdivision .face-preview-header{color:#f39c12}.void-info{background:#252545;border-radius:4px;padding:.5rem;font-size:.75rem;color:#888}.void-info p{margin:0}.remove-subdivision-btn{width:100%;padding:.5rem;background:#e67e2230;border:1px solid #e67e22;border-radius:4px;color:#e67e22;cursor:pointer;font-size:.75rem;transition:all .2s}.remove-subdivision-btn:hover{background:#e67e22;color:#fff}.subdivision-list .more-indicator{color:#666;font-style:italic}.preview-config{display:flex;flex-direction:column;gap:.75rem}.count-control{display:flex;flex-direction:column;gap:.5rem}.count-control label{font-size:.75rem;color:#888}.count-buttons{display:flex;align-items:center;gap:.5rem}.count-buttons button{width:32px;height:32px;background:#252545;border:1px solid #333;border-radius:4px;color:#e0e0e0;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.count-buttons button:hover:not(:disabled){background:#4a90d9;border-color:#4a90d9}.count-buttons button:disabled{opacity:.4;cursor:not-allowed}.count-buttons input{width:60px;text-align:center;background:#252545;border:1px solid #333;border-radius:4px;padding:.5rem;color:#e0e0e0;font-size:.875rem}.preview-info{font-size:.75rem;color:#2ecc71;text-align:center}.confirm-buttons{display:flex;gap:.5rem}.confirm-buttons button{flex:1;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.apply-btn{background:#27ae6030;border:1px solid #27ae60;color:#27ae60}.apply-btn:hover{background:#27ae60;color:#fff}.cancel-btn{background:#252545;border:1px solid #333;color:#e0e0e0}.cancel-btn:hover{background:#333;border-color:#444}.box-tree{font-size:.8rem}.tree-node-content:hover{background:#252545}.tree-node-content.selected{background:#4a90d930;border-left:2px solid #4a90d9}.tree-node-content.leaf{color:#e0e0e0}.tree-node-content.branch{color:#888}.tree-icon{font-size:.75rem;width:16px;text-align:center}.tree-label{flex:1}.tree-dimensions{font-size:.65rem;color:#666;font-family:monospace}.viewport-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;background:linear-gradient(to bottom,#1a1a2ef2,#1a1a2ecc);border-bottom:1px solid #333;padding:.5rem 1rem;display:flex;gap:1rem}.toolbar-group{display:flex;align-items:center;gap:.5rem}.toolbar-label{font-size:.75rem;color:#888;margin-right:.25rem}.toolbar-btn{display:flex;align-items:center;gap:.35rem;padding:.35rem .6rem;background:#252545;border:1px solid #333;border-radius:4px;color:#aaa;cursor:pointer;font-size:.75rem;transition:all .15s}.toolbar-btn:hover{background:#303060;border-color:#444;color:#e0e0e0}.toolbar-btn.active{background:#4a90d930;border-color:#4a90d9;color:#4a90d9}.toolbar-icon{font-size:.9rem}.toolbar-text{font-weight:500}.viewport{position:relative}.panel-properties{display:flex;flex-direction:column;gap:.75rem}.property-header{display:flex;align-items:center;gap:.5rem;padding-bottom:.5rem;border-bottom:1px solid #333}.property-icon{font-size:1rem}.property-title{font-weight:600;color:#e0e0e0}.property-group{display:flex;flex-direction:column;gap:.4rem}.property-row{display:flex;justify-content:space-between;font-size:.8rem}.property-label{color:#888}.property-value{color:#e0e0e0;font-family:monospace}.toggle-row{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:#e0e0e0;cursor:pointer}.toggle-row input[type=checkbox]{width:16px;height:16px;cursor:pointer}.subassembly-buttons{flex-wrap:wrap}.subassembly-info{display:flex;flex-direction:column;gap:.5rem}.subassembly-info h4{color:#9b59b6;margin:0}.select-subassembly-btn{background:#9b59b630;border:1px solid #9b59b6;color:#9b59b6;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.8rem;transition:all .2s}.select-subassembly-btn:hover{background:#9b59b6;color:#fff}.remove-subassembly-btn{background:#e74c3c30;border:1px solid #e74c3c;color:#e74c3c;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.8rem;transition:all .2s}.remove-subassembly-btn:hover{background:#e74c3c;color:#fff}.tree-node-content.subassembly{color:#9b59b6}.tree-node-content.subassembly.selected{background:#9b59b630;border-left:2px solid #9b59b6}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:#1a1a2e;border:1px solid #333;border-radius:8px;min-width:400px;max-width:600px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #333;background:#16162a}.modal-header h2{margin:0;font-size:1.25rem;color:#e0e0e0}.modal-close{background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;padding:0;line-height:1;transition:color .2s}.modal-close:hover{color:#e0e0e0}.modal-body{padding:1.5rem;overflow-y:auto}.export-modal-content{display:flex;flex-direction:column;gap:1rem}.export-modal-content .export-section{margin-bottom:1rem}.export-modal-content .export-section h4{margin:0 0 .75rem;color:#888;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.export-modal-content .export-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.export-modal-content .export-buttons button{padding:.5rem 1rem;background:#252545;border:1px solid #333;border-radius:4px;color:#e0e0e0;cursor:pointer;font-size:.8rem;transition:all .2s}.export-modal-content .export-buttons button:hover:not(:disabled){background:#4a90d9;border-color:#4a90d9}.export-modal-content .export-buttons button:disabled{opacity:.4;cursor:not-allowed}.export-all-section{padding-top:1rem;border-top:1px solid #333}.export-modal-content .export-all-btn{width:100%;padding:.75rem 1.5rem;background:#27ae60;border:none;border-radius:4px;color:#fff;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}.export-modal-content .export-all-btn:hover:not(:disabled){background:#2ecc71}.export-modal-content .export-all-btn:disabled{background:#333;cursor:not-allowed}.export-modal-content .export-info{background:#252545;border-radius:4px;padding:1rem;margin-top:1rem}.export-modal-content .export-info p{margin:0 0 .5rem;color:#888;font-size:.8rem}.export-modal-content .export-info ul{margin:0;padding-left:1.25rem;color:#aaa;font-size:.75rem}.export-modal-content .export-info li{margin-bottom:.25rem}.app-header{display:flex;justify-content:space-between;align-items:center}.header-content{display:flex;flex-direction:column}.header-menu{display:flex;gap:.5rem}.header-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#27ae60;border:none;border-radius:4px;color:#fff;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s}.header-btn:hover{background:#2ecc71}.header-btn-icon{font-size:1rem}.assembly-properties{display:flex;flex-direction:column;gap:1rem}.property-section{display:flex;flex-direction:column;gap:.5rem}.property-section h4{font-size:.75rem;color:#888;font-weight:500;margin:0;text-transform:uppercase;letter-spacing:.5px}.face-grid.compact{transform:scale(.85);transform-origin:center}.face-button.small{width:40px;height:32px;font-size:.7rem}.face-spacer.small{width:40px;height:32px}.tree-node-content{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border-radius:4px;cursor:pointer;transition:background .15s}.tree-node-main{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.tree-controls{display:flex;gap:4px;margin-left:auto;opacity:0;transition:opacity .15s}.tree-node-content:hover .tree-controls{opacity:1}.tree-btn{width:20px;height:20px;border:1px solid #444;border-radius:3px;background:#252545;color:#888;cursor:pointer;font-size:.7rem;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}.tree-btn:hover{background:#4a90d9;border-color:#4a90d9;color:#fff}.tree-btn.active{background:#e67e22;border-color:#e67e22;color:#fff}.tree-node-content.hidden{opacity:.4}.tree-node-content.hidden .tree-controls{opacity:1}.tree-node-content.isolated{border:1px solid #e67e22;background:#e67e2220}.tree-node-content.panel,.tree-node-content.panel .tree-icon{color:#f39c12}.tree-node-content.panel.selected{background:#f39c1230;border-left:2px solid #f39c12}.unisolate-btn{width:100%;padding:.5rem;margin-top:.5rem;background:#e67e2230;border:1px solid #e67e22;border-radius:4px;color:#e67e22;cursor:pointer;font-size:.75rem;transition:all .2s}.unisolate-btn:hover{background:#e67e22;color:#fff}
