:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:2px;border:1px solid transparent;padding:.15em .3em;font-size:.25em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.app{position:relative;height:100vh;width:100vw;margin:0;padding:0;overflow:hidden;background:#000;color:#fff}.app-main,.point-cloud-viewer{position:absolute;inset:0;z-index:1}.viewer-controls{position:absolute;top:20px;left:20px;right:20px;z-index:200;display:flex;flex-wrap:wrap;gap:1rem;align-items:center;max-width:calc(100% - 40px);overflow-x:auto}.control-group{display:flex;align-items:center;gap:.5rem;flex-shrink:0;min-width:0;background:#0000004d;padding:.25rem;border-radius:6px;backdrop-filter:blur(5px)}.control-group label{font-size:.9rem;color:#fff;white-space:nowrap;text-shadow:1px 1px 2px rgba(0,0,0,.8);font-weight:500}.control-group select,.control-group input[type=range]{background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.9rem;backdrop-filter:blur(5px)}.control-group select:focus,.control-group input:focus{outline:none;border-color:#61dafb;box-shadow:0 0 0 2px #61dafb33}.control-group input[type=checkbox]{margin-right:.5rem}.control-group input[type=file]{width:200px;max-width:200px}.control-group button{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.2rem .4rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px)}.control-group button:hover:not(:disabled){background:#61dafb;transform:translateY(-1px)}.control-group button:disabled{background:#55555580;color:#888c;cursor:not-allowed}.viewer-canvas-container{position:absolute;inset:0;z-index:1;background:#000}.viewer-canvas{display:block;width:100%;height:100%;cursor:grab;outline:none}.viewer-canvas:active{cursor:grabbing}.error-message{position:absolute;top:1rem;left:1rem;right:1rem;background:#d32f2f;color:#fff;padding:1rem;border-radius:4px;z-index:1000;font-weight:500}.point-count-display{position:absolute;top:1rem;left:1rem;background:#000000b3;color:#61dafb;padding:.5rem 1rem;border-radius:4px;z-index:200;font-size:.9rem;font-weight:500;backdrop-filter:blur(5px);border:1px solid rgba(97,218,251,.3);box-shadow:0 2px 8px #0000004d}.loading-progress{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000c;color:#fff;padding:2rem;border-radius:8px;z-index:1000;min-width:300px;text-align:center;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.progress-message{font-size:1.1rem;margin-bottom:1rem;color:#61dafb;font-weight:500}.progress-bar{width:100%;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden;margin-bottom:.5rem}.progress-fill{height:100%;background:linear-gradient(90deg,#61dafb,#21a0c4);border-radius:4px;transition:width .3s ease}.progress-percentage{font-size:.9rem;color:#ccc;font-weight:500}.filter-panel{background:#2a2a2a;padding:1rem;border-bottom:1px solid #444;margin-bottom:1rem}.filter-panel h3{margin:0 0 1rem;color:#61dafb;font-size:1.1rem}.filter-controls{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.statistics-panel{background:#2a2a2a;padding:1rem;border-bottom:1px solid #444;margin-bottom:1rem}.statistics-panel h3{margin:0 0 1rem;color:#61dafb;font-size:1.1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background:#3a3a3a;border-radius:4px}.stat-item label{font-weight:500;color:#ccc}.stat-item span{color:#61dafb;font-weight:600}.point-cloud-viewer-v2{display:flex;flex-direction:column;height:100%;background:#1a1a1a}.scene-controls-toggle{position:absolute;top:0;right:0;z-index:300;pointer-events:auto}.scene-controls-toggle-btn{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.2rem .4rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px)}.scene-controls-toggle-btn:hover{background:#61dafb;transform:translateY(-1px)}.scene-controls-panel{position:absolute;top:20px;right:20px;width:400px;max-height:80vh;background:#000c;color:#fff;border-radius:8px;padding:1rem;z-index:300;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #00000080;overflow-y:auto}.scene-controls-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.2)}.scene-controls-header h3{margin:0;color:#61dafb;font-size:1.1rem;font-weight:500}.scene-controls-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.scene-controls-close:hover{background:#ffffff1a}.scene-controls-content{display:flex;flex-direction:column;gap:1rem}.benchmark-toggle{position:absolute;bottom:20px;right:20px;z-index:300}.benchmark-toggle-btn{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.2rem .4rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px)}.benchmark-toggle-btn:hover{background:#61dafb;transform:translateY(-1px)}.benchmark-panel{position:absolute;bottom:20px;right:20px;max-width:90vw;max-height:400px;background:#000c;color:#fff;border-radius:8px;padding:1rem;z-index:300;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #00000080;overflow-x:auto;overflow-y:auto}.benchmark-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.2)}.benchmark-header h3{margin:0;color:#61dafb;font-size:1.1rem;font-weight:500}.benchmark-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.benchmark-close:hover{background:#ffffff1a}.benchmark-content{display:grid;grid-template-columns:repeat(8,minmax(140px,1fr));gap:.8rem;min-width:fit-content}.benchmark-column h4{margin:0 0 1rem;color:#61dafb;font-size:1rem;font-weight:500;text-align:center;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.benchmark-metrics{display:flex;flex-direction:column;gap:.75rem}.metric-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background:#ffffff0d;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.metric-label{font-size:.9rem;color:#ccc;font-weight:500}.metric-value{font-size:.9rem;color:#61dafb;font-weight:600;font-family:monospace}@media (max-width: 768px){.viewer-controls{flex-direction:column;align-items:stretch}.control-group{justify-content:space-between}.app-header h1{font-size:1.5rem}.stats-grid{grid-template-columns:1fr}.filter-controls{flex-direction:column;align-items:stretch}.benchmark-panel{width:calc(100vw - 40px);right:20px;left:20px;max-width:calc(100vw - 40px)}.benchmark-content{grid-template-columns:repeat(8,minmax(120px,1fr))}.benchmark-content{grid-template-columns:1fr;gap:1rem}.tools-table-header,.tools-table-row{grid-template-columns:1.5fr 1fr .4fr .4fr .4fr .4fr .4fr .4fr .4fr .4fr;gap:.2rem;font-size:.65rem}.tools-panel{width:calc(100vw - 40px);left:20px;right:20px}}.tools-toggle{position:absolute;bottom:20px;left:20px;z-index:300}.tools-toggle-btn{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.2rem .4rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px)}.tools-toggle-btn:hover{background:#61dafb;transform:translateY(-1px)}.tools-panel{position:absolute;bottom:20px;left:20px;width:850px;max-height:80vh;background:#000c;color:#fff;border-radius:8px;padding:1rem;z-index:300;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #00000080;overflow-y:auto}.tools-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.2)}.tools-header h3{margin:0;font-size:1.1rem;font-weight:600}.tools-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.tools-close:hover{background:#ffffff1a}.tools-content{width:100%}.tools-table{width:100%;border-collapse:collapse}.tools-table-header{display:grid;grid-template-columns:1.8fr 1fr .5fr .5fr .5fr .5fr .5fr .5fr .5fr .5fr;gap:.2rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.2);font-weight:600;font-size:.7rem}.tools-table-row{display:grid;grid-template-columns:1.8fr 1fr .5fr .5fr .5fr .5fr .5fr .5fr .5fr .5fr;gap:.2rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.1);align-items:center}.tools-table-row:last-child{border-bottom:none}.tool-name{font-weight:600;font-size:.9rem;margin-bottom:.25rem}.tool-description{font-size:.8rem;color:#ffffffb3;line-height:1.3}.tools-wasm-btn,.tools-ts-btn,.tools-be-btn,.tools-be-rust-btn,.tools-be-python-btn{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.3rem .4rem;border-radius:4px;font-size:.6rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px);width:100%;min-width:40px;min-height:28px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1}.tools-wasm-main-btn{background:#32cd32cc!important;color:#000!important;border:1px solid rgba(50,205,50,.5)!important;padding:.3rem .4rem;border-radius:4px;font-size:.6rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px);width:100%;min-width:40px;min-height:28px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1}.tools-wasm-rust-btn{background:#ff6347cc;color:#000;border:1px solid rgba(255,99,71,.5);padding:.3rem .4rem;border-radius:4px;font-size:.6rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px);width:100%;min-width:40px;min-height:28px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1}.tools-wasm-btn:hover,.tools-ts-btn:hover,.tools-be-btn:hover,.tools-be-rust-btn:hover,.tools-be-python-btn:hover{background:#61dafb;transform:translateY(-1px)}.tools-wasm-main-btn:hover{background:#32cd32!important;transform:translateY(-1px)}.tools-wasm-rust-btn:hover{background:tomato;transform:translateY(-1px)}.tools-wasm-btn:disabled,.tools-ts-btn:disabled,.tools-be-btn:disabled,.tools-be-rust-btn:disabled,.tools-be-python-btn:disabled,.tools-wasm-main-btn:disabled,.tools-wasm-rust-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.tools-wasm-btn:disabled:hover,.tools-ts-btn:disabled:hover,.tools-be-btn:disabled:hover,.tools-be-rust-btn:disabled:hover,.tools-be-python-btn:disabled:hover{background:#61dafbcc;transform:none}.tools-wasm-main-btn:disabled:hover{background:#32cd32cc;transform:none}.tools-rust-wasm-main-btn{background:#ff4500cc!important;color:#000!important;border:1px solid rgba(255,69,0,.5)!important;padding:.3rem .4rem;border-radius:4px;font-size:.6rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px);width:100%;min-width:40px;min-height:28px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1}.tools-rust-wasm-main-btn:hover{background:#ff4500!important;transform:translateY(-1px)}.tools-rust-wasm-main-btn:disabled,.tools-rust-wasm-main-btn:disabled:hover{opacity:.6;cursor:not-allowed;transform:none;background:#ff4500cc!important}.tools-wasm-rust-btn:disabled:hover{background:#ff6347cc;transform:none}.tools-ts-btn{background:#8a2be2cc;border-color:#8a2be280}.tools-ts-btn:hover{background:#8a2be2}.tools-be-btn{background:#ffa500cc;border-color:#ffa50080}.tools-be-btn:hover{background:orange}.tools-be-rust-btn{background:#ff1493cc;border-color:#ff149380}.tools-be-rust-btn:hover{background:#ff1493}.tools-be-python-btn{background:#228b22cc;border-color:#228b2280}.tools-be-python-btn:hover{background:#228b22}.tools-wasm-rust-btn{background:#ff6347cc;border-color:#ff634780}.tools-wasm-rust-btn:hover{background:tomato}.tool-control{width:100%;padding:.25rem 0}.tool-slider-container{display:flex;flex-direction:column;gap:.25rem;align-items:center}.tool-slider{width:100%;height:4px;background:#fff3;border-radius:2px;outline:none;-webkit-appearance:none;appearance:none}.tool-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;background:#61dafbcc;border-radius:50%;cursor:pointer;border:2px solid rgba(255,255,255,.3);transition:all .2s}.tool-slider::-webkit-slider-thumb:hover{background:#61dafb;transform:scale(1.1)}.tool-slider::-moz-range-thumb{width:16px;height:16px;background:#61dafbcc;border-radius:50%;cursor:pointer;border:2px solid rgba(255,255,255,.3);transition:all .2s}.tool-slider::-moz-range-thumb:hover{background:#61dafb;transform:scale(1.1)}.tool-value{font-size:.8rem;font-weight:600;color:#61dafbe6;text-align:center;min-width:50px}.load-points-toggle{position:absolute;top:20px;left:20px;z-index:300}.load-points-toggle-btn{background:#61dafbcc;color:#000;border:1px solid rgba(97,218,251,.5);padding:.2rem .4rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s;backdrop-filter:blur(5px)}.load-points-toggle-btn:hover{background:#61dafb;transform:translateY(-1px)}.load-points-panel{position:absolute;top:20px;left:20px;width:400px;max-height:80vh;background:#000c;color:#fff;border-radius:8px;padding:1rem;z-index:300;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #00000080;overflow-y:auto}.load-points-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #444;margin-bottom:1rem}.load-points-header h3{margin:0;color:#61dafb;font-size:1.1rem}.load-points-close{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.load-points-close:hover{color:#ff6b6b}.load-points-content{display:flex;flex-direction:column;gap:1rem}.top-controls-bar{position:absolute;top:20px;left:0;right:0;z-index:200;display:flex;justify-content:space-between;align-items:center;padding:0 20px;pointer-events:none}.scene-controls-toggle{position:absolute;top:0;right:0;z-index:400!important;pointer-events:auto!important}.scene-controls-panel{position:absolute;top:20px;right:20px;width:400px;max-height:80vh;background:#000c;color:#fff;border-radius:8px;padding:1rem;z-index:400!important;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #00000080;overflow-y:auto;pointer-events:auto!important}
