body{margin:0;padding:0;font-family:monospace;background:#1a1a1a;color:#fff;overflow:hidden;min-height:100vh}#container{display:flex;flex-direction:column;height:100vh;width:100vw}#toolbar{background:#2a2a2a;padding:10px;border-bottom:1px solid #444;display:flex;gap:20px;align-items:center}#canvas{flex:1;display:block}#info{background:#2a2a2a;padding:10px;border-top:1px solid #444;font-size:12px}select{background:#1a1a1a;color:#fff;border:1px solid #444;padding:5px 10px;font-family:monospace}label{font-size:12px}.info-row{display:inline-block;margin-right:20px}button{background:#1a1a1a;color:#fff;border:1px solid #444;padding:5px 10px;font-family:monospace;cursor:pointer}button:hover{background:#333}#viewport-controls{position:absolute;top:60px;right:10px;display:flex;flex-direction:column;gap:10px;pointer-events:none}#viewport-controls>*{pointer-events:auto}#orientation-gizmo{width:100px;height:100px;position:relative;cursor:pointer}#gizmo-canvas{width:100%;height:100%;display:block}#orientation-gizmo.dragging{cursor:none}#orientation-gizmo.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}#control-buttons{display:flex;flex-direction:column;gap:8px;align-items:center}.control-btn{width:40px;height:40px;padding:0;background:#2a2a2ae6;border:1px solid #555;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.control-btn:hover{background:#3c3c3cf2;border-color:#777;transform:scale(1.05)}.control-btn svg{width:20px;height:20px;fill:none;stroke:#aaa;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.control-btn:hover svg{stroke:#fff}.control-btn.dragging{cursor:none;background:#007bffe6;border-color:#007bff}.control-btn.dragging svg{stroke:#fff}.control-btn.disabled{opacity:.4;cursor:not-allowed}.control-btn.disabled:hover{background:#2a2a2ae6;border-color:#555;transform:none}.control-btn.disabled svg{stroke:#666}.control-btn.disabled:hover svg{stroke:#666}#btn-pan:not(.dragging):not(.disabled){cursor:grab}#btn-zoom:not(.dragging):not(.disabled){cursor:ns-resize}#btn-camera,#btn-lock{cursor:pointer}#btn-lock .lock-body,#btn-lock .lock-shackle{fill:none;stroke:#aaa;stroke-width:2;stroke-linecap:round}#btn-lock:hover .lock-body,#btn-lock:hover .lock-shackle{stroke:#fff}
