.axis-editor{display:flex;flex-direction:column;height:100%}.axis-header{padding:1rem;background:#fff;border-bottom:1px solid #ddd;display:flex;align-items:center;gap:1rem}.axis-header h2{margin-bottom:.25rem;font-size:1.1rem;color:#2c3e50}.axis-header p{margin:0;font-size:.85rem;color:#7f8c8d}.axis-zoom-controls{margin-left:auto;display:flex;align-items:center;gap:.5rem}.axis-zoom-controls span{font-size:.85rem;color:#2c3e50}.axis-zoom-controls button{padding:.3rem .6rem;font-size:.8rem}.axis-main{flex:1;display:flex;overflow:hidden}.axis-form{min-width:520px;background:#fff;border-right:1px solid #ddd;padding:1rem;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.axis-form-header{display:grid;grid-template-columns:30px 120px 120px 60px 120px;gap:.5rem;font-size:.8rem;color:#7f8c8d;margin-bottom:.25rem}.axis-point-row{display:grid;grid-template-columns:30px 120px 120px 60px 120px;gap:.5rem;align-items:center;margin-bottom:.25rem;padding:.5rem;border-radius:4px;cursor:pointer;transition:all .2s}.axis-point-row:hover{background:#f0f0f0}.axis-point-row.selected{background:#d4edda;border:2px solid #3498db;box-shadow:0 2px 4px #3498db33}.axis-point-index{font-size:.85rem;color:#2c3e50}.axis-point-row input{padding:.3rem .4rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;width:100%}.axis-point-type{width:100%;padding:.25rem .3rem;border-radius:4px;border:1px solid #ddd;font-size:.8rem;background:#fff}.axis-point-type:focus{outline:none;border-color:#3498db}.axis-point-radius{display:flex;align-items:center;gap:.25rem}.axis-point-radius input{max-width:none}.axis-point-row input:focus{outline:none;border-color:#3498db}.axis-point-remove{background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;width:28px;height:28px;display:flex;align-items:center;justify-content:center;padding:0}.axis-point-remove:hover{background:#c0392b}.axis-empty-hint{font-size:.85rem;color:#95a5a6;margin-top:.5rem}.axis-form-actions{margin-top:.75rem;display:flex;gap:.5rem}.axis-form-actions button{padding:.45rem .9rem;border-radius:4px;border:none;cursor:pointer;font-size:.9rem}.axis-form-actions button:first-of-type{background:#3498db;color:#fff}.axis-form-actions button.secondary{background:#ecf0f1;color:#2c3e50}.axis-form-actions button.secondary:disabled{opacity:.5;cursor:not-allowed}.axis-form-actions button:hover:not(:disabled){opacity:.9}.axis-canvas-container{flex:1;background:#fff;display:flex;align-items:stretch;justify-content:center}.axis-canvas-container>div{flex:1}.profile-editor{display:flex;flex-direction:column;height:100%}.toolbar{padding:1rem;background:#fff;border-bottom:1px solid #ddd;display:flex;gap:.5rem;align-items:center}.toolbar button{padding:.5rem 1rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.toolbar button:hover{background:#229954}.toolbar button.active{background:#1e8449}.profile-name-input{padding:.5rem;border:1px solid #ddd;border-radius:4px;margin-left:1rem;min-width:160px}.toolbar-new-profile{position:relative;margin-left:.5rem}.new-profile-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;min-width:200px;z-index:1000;overflow:hidden}.new-profile-option{padding:8px 14px;cursor:pointer;font-size:.85rem;color:#2c3e50;transition:background .15s}.new-profile-option:hover{background:#f0f7ff}.new-profile-divider{height:1px;background:#e0e0e0;margin:4px 0}.new-profile-section-label{padding:6px 14px 2px;font-size:.75rem;color:#95a5a6;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.profile-hints-compact{font-size:.78rem;color:#7f8c8d;cursor:help;border-bottom:1px dotted #bdc3c7;margin-left:.75rem;white-space:nowrap}.zoom-controls{margin-left:auto;display:flex;align-items:center;gap:.5rem}.zoom-controls span{font-size:.85rem;color:#2c3e50}.zoom-controls button{padding:.3rem .6rem;font-size:.8rem}.radius-input{margin-left:1rem;display:flex;align-items:center;gap:.5rem}.radius-input input{padding:.5rem;border:1px solid #ddd;border-radius:4px}.profile-editor-content{flex:1;display:flex;overflow:hidden}.profiles-list{width:250px;background:#fff;border-right:1px solid #ddd;padding:1rem;overflow-y:auto}.profiles-list h3{margin-bottom:1rem;font-size:.9rem}.profile-item{padding:.75rem;background:#f8f9fa;margin-bottom:.5rem;border-radius:4px;cursor:pointer;transition:background .2s;display:flex;flex-direction:column;gap:.25rem}.profile-item:hover{background:#e9ecef}.profile-item.active{background:#d4edda;border:2px solid #27ae60}.profile-name-input-small{padding:.25rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;width:100%}.segment-count{font-size:.8rem;color:#666}.profile-timestamp{font-size:.7rem;color:#999}.delete-btn{align-self:flex-end;background:#e74c3c;color:#fff;border:none;border-radius:4px;width:24px;height:24px;cursor:pointer;font-size:1.2rem;line-height:1;padding:0}.delete-btn:hover{background:#c0392b}.new-folder-btn{width:100%;padding:.4rem;margin-bottom:.5rem;background:#f0f0f0;border:1px dashed #bbb;border-radius:4px;cursor:pointer;font-size:.8rem;color:#666;transition:background .2s}.new-folder-btn:hover{background:#e0e0e0;color:#333}.profile-folder{margin-bottom:.5rem}.profile-folder-header{display:flex;align-items:center;gap:.3rem;padding:.5rem .4rem;background:#eef2f7;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;-webkit-user-select:none;user-select:none;transition:background .2s}.profile-folder-header:hover{background:#dde4ed}.folder-toggle{font-size:.65rem;color:#888;width:12px}.folder-icon{font-size:.9rem}.folder-name{flex:1}.folder-count{font-size:.75rem;color:#888}.profile-folder-contents{padding-left:1rem;margin-top:.25rem}.folder-empty{font-size:.75rem;color:#bbb;font-style:italic;padding:.25rem 0;display:block}.archive-divider{border-top:1px solid #ddd;margin:.75rem 0}.archive-header{display:flex;align-items:center;gap:.3rem;padding:.5rem .4rem;cursor:pointer;font-size:.85rem;color:#888;-webkit-user-select:none;user-select:none;transition:color .2s}.archive-header:hover{color:#555}.archive-contents{padding-left:.5rem;margin-top:.25rem}.archive-contents .profile-item{opacity:.7}.context-menu{position:fixed;z-index:1000;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 16px #00000026;min-width:160px;padding:4px 0;font-size:.82rem}.context-menu-item{padding:6px 12px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;white-space:nowrap;transition:background .1s;position:relative}.context-menu-item:hover{background:#f0f4f8}.context-menu-danger{color:#e74c3c}.context-menu-danger:hover{background:#fdf0ef}.context-menu-separator{height:1px;background:#eee;margin:4px 0}.context-menu-arrow{font-size:.7rem;color:#999;margin-left:8px}.context-menu-submenu-trigger{position:relative}.context-menu-submenu{display:none;position:absolute;left:100%;top:-4px;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 16px #00000026;min-width:140px;padding:4px 0}.context-menu-submenu-trigger:hover>.context-menu-submenu{display:block}.canvas-container{flex:1;overflow:hidden;background:#fff}.profile-points-panel{width:520px;background:#fff;border-left:1px solid #ddd;padding:1rem;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto}.profile-points-header{display:grid;grid-template-columns:30px 120px 120px 60px 120px;gap:.5rem;font-size:.8rem;color:#7f8c8d}.profile-point-row{display:grid;grid-template-columns:30px 120px 120px 60px 120px;gap:.5rem;align-items:center;padding:.5rem;border-radius:4px;cursor:pointer;transition:all .2s}.profile-point-row:hover{background:#f0f0f0}.profile-point-row.selected{background:#d4edda;border:2px solid #27ae60;box-shadow:0 2px 4px #27ae6033}.profile-point-index{font-size:.85rem;color:#2c3e50}.profile-point-row input{padding:.3rem .4rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;width:100%}.profile-point-row input:focus{outline:none;border-color:#3498db}.profile-point-type{width:100%;padding:.25rem .3rem;border-radius:4px;border:1px solid #ddd;font-size:.8rem;background:#fff}.profile-point-type:focus{outline:none;border-color:#3498db}.profile-point-radius{display:flex;align-items:center;gap:.25rem}.profile-point-radius input{width:100%}.profile-points-empty{font-size:.85rem;color:#95a5a6;margin-top:.5rem}.profile-points-actions{margin-top:.75rem;display:flex;gap:.5rem}.profile-points-actions button{padding:.45rem .9rem;border-radius:4px;border:none;cursor:pointer;font-size:.9rem}.profile-points-actions button:first-of-type{background:#27ae60;color:#fff}.profile-points-actions button.secondary{background:#ecf0f1;color:#2c3e50}.profile-points-actions button.secondary:disabled{opacity:.5;cursor:not-allowed}.profile-points-actions button:hover:not(:disabled){opacity:.9}.no-profile-selected{display:flex;align-items:center;justify-content:center;height:100%;color:#999;font-size:1.1rem}.segments-list{width:200px;background:#fff;border-left:1px solid #ddd;padding:1rem;overflow-y:auto}.segments-list h3{margin-bottom:.5rem;font-size:.9rem}.segment-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background:#f8f9fa;margin-bottom:.25rem;border-radius:4px}.segment-item button{padding:.25rem .5rem;background:#e74c3c;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.8rem}.segment-item button:hover{background:#c0392b}.profile-assignment{display:flex;flex-direction:column;height:100%;padding:2rem;overflow-y:auto;background:#f8f9fa}.assignment-header h2{margin-bottom:.5rem;color:#2c3e50}.axis-info{color:#7f8c8d;font-size:.9rem}.assignment-form{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.form-group{display:flex;flex-direction:column;gap:.5rem;min-width:150px}.form-group label{font-weight:500;color:#2c3e50;font-size:.9rem}.form-group input,.form-group select{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#3498db}.add-button{padding:.5rem 1.5rem;background:#3498db;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background .2s;height:fit-content}.add-button:hover{background:#2980b9}.assignments-list{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;width:420px}.assignments-list h3{margin-bottom:1rem;color:#2c3e50}.no-assignments{color:#7f8c8d;text-align:center;padding:2rem}.assignments-table{display:flex;flex-direction:column;gap:.5rem}.table-header{display:grid;grid-template-columns:.5fr 1.5fr 1.5fr 2fr 1.5fr .8fr;gap:.75rem;padding:.7rem .75rem;background:#ecf0f1;font-weight:600;color:#2c3e50;border-radius:6px}.table-row{display:grid;grid-template-columns:.5fr 1.5fr 1.5fr 2fr 1.5fr .8fr;gap:.75rem;padding:.65rem .75rem;background:#f8f9fa;border-radius:6px;align-items:center;cursor:pointer;transition:all .2s}.table-row:hover{background:#e9ecef}.table-row.selected{background:#d4edda;border:2px solid #28a745;box-shadow:0 2px 8px #28a7454d}.table-row.expanded-row{background:#f8f9fa!important;border:1px solid #dee2e6!important;box-shadow:none!important}.table-row.expanded-row:hover{background:#f8f9fa!important}.assignments-table input[type=number],.assignments-table input[type=text]{width:100%;min-width:120px;padding:.55rem .7rem;border:1.5px solid #dcdcdc;border-radius:8px;font-size:.95rem;color:#2c3e50;background:#fff;transition:border-color .2s,box-shadow .2s}.assignments-table input[type=number]:focus,.assignments-table input[type=text]:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db26}.assignments-table .profile-select{width:100%;border:1.5px solid #dcdcdc;border-radius:8px;padding:.55rem .7rem;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none}.assignments-table .remove-btn{min-width:36px}.delete-button,.assignments-table .remove-btn{padding:.45rem .75rem;background:#e74c3c;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background .2s}.delete-button:hover,.assignments-table .remove-btn:hover{background:#c0392b}.coverage-visualization{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.coverage-visualization h3{margin-bottom:1rem;color:#2c3e50}.coverage-bar{position:relative;height:60px;background:#ecf0f1;border-radius:4px;margin-bottom:.5rem;overflow:hidden}.coverage-segment{position:absolute;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:500;font-size:.85rem;border-right:2px solid white;transition:opacity .2s}.coverage-segment:hover{opacity:.8}.coverage-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 .5rem}.coverage-scale{display:flex;justify-content:space-between;font-size:.85rem;color:#7f8c8d}.profile-select{padding:.5rem 2.5rem .5rem 1rem;border:2px solid #ddd;border-radius:6px;font-size:.95rem;background:#fff;color:#2c3e50;cursor:pointer;transition:all .2s;min-width:150px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%232c3e50' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}.profile-select:hover{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.profile-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db33}.profile-select option{padding:.5rem;background:#fff;color:#2c3e50}.assignment-layout{display:flex;gap:2rem;margin-top:2rem;align-items:flex-start}.assignment-views{flex:1;display:flex;gap:2rem;flex-wrap:wrap}.view-container{flex:1;min-width:400px;background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.view-container h3{margin-bottom:1rem;color:#2c3e50;font-size:1.1rem}.canvas-wrapper{border:1px solid #ddd;border-radius:4px;overflow:hidden;background:#fafafa;min-height:400px}.view-info{margin-top:.75rem;padding:.5rem;background:#e7f3ff;border-radius:4px;color:#2c3e50;font-size:.9rem}.view-info span{color:#27ae60;font-weight:500}.no-profile-view{display:flex;align-items:center;justify-content:center;min-height:400px;color:#7f8c8d;font-size:1rem;text-align:center;padding:2rem}.help-text{color:#7f8c8d;font-size:.9rem;margin-bottom:1rem;line-height:1.4}.empty-state{color:#7f8c8d;text-align:center;padding:2rem 1rem;font-style:italic;background:#f8f9fa;border-radius:6px}.interpolation-info{margin-top:1.5rem;padding:1rem;background:#e7f3ff;border-radius:6px;border-left:4px solid #3498db}.interpolation-info h4{margin:0 0 .75rem;color:#2c3e50;font-size:.95rem}.interpolation-info ul{margin:0;padding-left:1.25rem;color:#34495e;font-size:.9rem}.interpolation-info li{margin-bottom:.35rem}.interpolation-info li:last-child{margin-bottom:0}.tunnel-viewer{display:flex;flex-direction:column;height:100%;background:#fff}.viewer-header{padding:1rem 2rem;background:#2c3e50;color:#fff;display:flex;justify-content:space-between;align-items:center}.viewer-header h2{margin:0}.viewer-controls{display:flex;align-items:center;gap:1rem}.viewer-controls label{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.viewer-controls select{padding:.35rem .5rem;border-radius:4px;border:1px solid #7f8c8d;background:#34495e;color:#fff;font-size:.85rem;cursor:pointer}.viewer-controls select:hover{background:#3d566e}.viewer-info{display:flex;gap:1.5rem;font-size:.85rem;color:#bdc3c7}.viewer-canvas{flex:1;overflow:hidden;background:#fff;display:flex}.viewer-3d{flex:1;background:#111;position:relative}.viewer-3d-header{position:absolute;top:8px;left:12px;z-index:2;color:#ecf0f1;font-size:.9rem;background:#0006;padding:4px 8px;border-radius:4px}.viewer-legend{padding:1rem 2rem;background:#ecf0f1;border-top:1px solid #ddd;display:flex;gap:2rem}.legend-item{display:flex;align-items:center;gap:.5rem}.legend-color{width:20px;height:20px;border-radius:4px}.viewer-pointcloud-panel{position:absolute;top:8px;right:12px;z-index:2;background:#000000b3;border-radius:6px;padding:8px 10px;min-width:180px;max-width:280px;max-height:200px;overflow-y:auto}.viewer-pointcloud-title{color:#bdc3c7;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.viewer-pointcloud-item{display:flex;align-items:center;gap:6px;color:#ecf0f1;font-size:.8rem;padding:3px 0;cursor:pointer}.viewer-pointcloud-item input[type=checkbox]{width:14px;height:14px;cursor:pointer;flex-shrink:0}.viewer-pointcloud-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-pointcloud-count{color:#7f8c8d;font-size:.7rem;flex-shrink:0}.viewer-nav-hints{position:absolute;bottom:8px;right:8px;z-index:2;background:#000000bf;border-radius:20px;padding:6px 12px;display:flex;gap:12px;flex-wrap:wrap;font-size:.65rem;color:#bdc3c7;max-width:500px;line-height:1.3}.viewer-nav-hints span{white-space:nowrap}.viewer-nav-hints strong{color:#ecf0f1;font-weight:600}.viewer-orbit-indicator{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:2;background:#e74c3cd9;color:#fff;border-radius:20px;padding:6px 16px;font-size:.75rem;white-space:nowrap;pointer-events:none}.viewer-orbit-indicator strong{font-weight:700}.station-bar{position:relative;height:40px;background:#1a1a2e;border-top:1px solid #333;cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.station-bar-segments{position:absolute;top:0;left:0;right:0;bottom:16px;overflow:hidden}.station-bar-segment{position:absolute;top:0;bottom:0;opacity:.6;transition:opacity .15s}.station-bar-segment:hover{opacity:.85}.station-bar-handle{position:absolute;top:0;bottom:0;width:3px;transform:translate(-50%);z-index:3;pointer-events:none;left:0%}.station-bar-handle-marker{position:absolute;top:0;bottom:0;left:0;width:3px;background:#e74c3c;border-radius:1px;box-shadow:0 0 4px #e74c3c99}.station-bar-handle-marker:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #e74c3c}.station-bar-labels{position:absolute;bottom:0;left:0;right:0;height:16px;display:flex;justify-content:space-between;align-items:center;padding:0 8px;font-size:.65rem;color:#7f8c8d;pointer-events:none}.station-bar-label-current{color:#e74c3c;font-weight:600;font-size:.7rem}.profile-assignment .fixed-points-table .table-header,.profile-assignment .fixed-points-table .table-row{grid-template-columns:.3fr 1.5fr 2fr 2fr 2fr 1fr 1.5fr .5fr}.profile-assignment .pointclouds-table .table-header,.profile-assignment .pointclouds-table .table-row{grid-template-columns:.5fr 2.5fr 1fr 1.5fr 1fr .5fr .6fr .5fr}.pointcloud-editor-container{position:relative;flex:1;min-height:400px;background:#1a1a2e;border-radius:8px;overflow:hidden}.pointcloud-editor-container canvas{display:block}.pointcloud-editor-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.pointcloud-editor-overlay.selecting{pointer-events:auto;cursor:crosshair}.pointcloud-editor-toolbar{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#f8f9fa;border-radius:0 0 8px 8px;font-size:.8rem}.pointcloud-editor-toolbar button{font-size:.75rem;padding:.3rem .6rem;white-space:nowrap}.pointcloud-editor-hint{position:absolute;bottom:8px;left:50%;transform:translate(-50%);background:#000000b3;color:#ccc;padding:4px 12px;border-radius:4px;font-size:.7rem;pointer-events:none;white-space:nowrap}.analysis-svg-container{border:1px solid #34495e;-webkit-user-select:none;user-select:none}.analysis-svg-container svg{touch-action:none}.app{display:flex;flex-direction:column;height:100vh;width:100vw}.app-header{background:#2c3e50;color:#fff;padding:1rem 2rem;box-shadow:0 2px 4px #0000001a}.header-title{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.vm-logo{height:2.5rem;width:auto}.app-header h1{margin:0;font-size:1.5rem}.header-actions{display:flex;gap:.5rem;margin-bottom:1rem}.export-btn,.import-btn{padding:.5rem 1rem;background:#27ae60;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s;font-size:.9rem}.export-btn:hover,.import-btn:hover{background:#2ecc71}.import-btn{display:inline-block;text-align:center}.tabs{display:flex;gap:.5rem}.tabs button{padding:.5rem 1rem;background:#34495e;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.tabs button:hover{background:#4a5f7a}.tabs button.active{background:#3498db}.app-main{flex:1;overflow:hidden;display:flex;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f5}#root{width:100vw;height:100vh}
