*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #1a1a2e;--bg-secondary: #16213e;--bg-panel: #1f2940;--text-primary: #e8e8e8;--text-secondary: #a0a0a0;--accent: #4ecca3;--accent-hover: #3db892;--border: #2d3a4f;--error: #e74c3c;--warning: #f39c12;--color-copper-top: #c43b3b;--color-copper-bottom: #3b7bc4;--color-drill: #f1c40f;--color-outline: #9b59b6;--color-toolpath: #2ecc71}html,body,#app{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg-primary);color:var(--text-primary)}.app{display:flex;flex-direction:column;height:100%}.header{display:flex;align-items:baseline;gap:1rem;padding:.75rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.header h1{font-size:1.25rem;font-weight:600;color:var(--accent)}.subtitle{font-size:.875rem;color:var(--text-secondary)}.main{display:flex;flex:1;overflow:hidden}.sidebar{width:320px;min-width:280px;display:flex;flex-direction:column;background:var(--bg-secondary);border-right:1px solid var(--border);overflow-y:auto}.panel{padding:1rem;border-bottom:1px solid var(--border)}.panel h2{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.75rem}.visualizer-container{flex:1;position:relative;overflow:hidden}input[type=number],input[type=text],select{width:100%;padding:.5rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:.875rem}input[type=number]:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--accent)}label{display:block;font-size:.75rem;color:var(--text-secondary);margin-bottom:.25rem}button{padding:.5rem 1rem;background:var(--accent);border:none;border-radius:4px;color:var(--bg-primary);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}button:hover{background:var(--accent-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border)}button.secondary:hover{background:var(--border)}.flex{display:flex}.gap-sm{gap:.5rem}.gap-md{gap:1rem}.mt-sm{margin-top:.5rem}.mt-md{margin-top:1rem}
