:root{--bg-0:#0b0c0e;--bg-1:#111317;--bg-2:#16191e;--bg-3:#1c2026;--bg-hover:#20252c;--border:#23272e;--border-strong:#2d333c;--text-0:#e6e9ee;--text-1:#b6bcc6;--text-2:#7a8290;--text-3:#4a525e;--accent:#4fb3a9;--accent-dim:#2a6e69;--warn:#d4a657;--danger:#d46a5e;--grid-gap:8px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-0);height:100%;color:var(--text-0);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;font-size:12.5px;line-height:1.4;overflow:hidden}input,button,select{color:inherit;font-family:inherit}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.app{grid-template-rows:36px 44px 36px 1fr 26px;min-width:1200px;height:100vh;display:grid}.menubar{background:var(--bg-1);border-bottom:1px solid var(--border);align-items:center;gap:18px;padding:0 14px;display:flex}.brand{letter-spacing:.08em;text-transform:uppercase;color:var(--text-1);align-items:center;gap:8px;font-size:11px;font-weight:600;display:flex}.brand-mark{border:1.5px solid var(--accent);width:14px;height:14px;position:relative;transform:rotate(45deg)}.brand-mark:after{content:"";background:var(--accent);opacity:.4;position:absolute;inset:3px}.menu-items{gap:16px;display:flex}.menu-item{color:var(--text-2);cursor:default;font-size:11.5px}.menubar-spacer{flex:1}.session-pill{color:var(--text-2);border:1px solid var(--border);border-radius:2px;padding:3px 8px;font-family:JetBrains Mono,monospace;font-size:10.5px}.session-pill .dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.session-pill .dot.warn{background:var(--warn)}.session-pill .dot.err{background:var(--danger)}.toolbar{background:var(--bg-1);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:0 14px;display:flex}.toolbar-group{background:var(--bg-2);border:1px solid var(--border);border-radius:3px;align-items:center;gap:1px;height:28px;display:flex;overflow:hidden}.seg{height:100%;color:var(--text-2);background:var(--bg-2);cursor:pointer;letter-spacing:.02em;border:none;align-items:center;padding:0 11px;font-family:inherit;font-size:11px;display:flex}.seg:hover:not(:disabled){background:var(--bg-hover);color:var(--text-0)}.seg:disabled{color:var(--text-3);cursor:not-allowed}.seg.active{background:var(--bg-3);color:var(--accent);box-shadow:inset 0 -2px 0 0 var(--accent)}.toolbar-divider{background:var(--border);width:1px;height:18px;margin:0 4px}.ctrl{background:var(--bg-2);border:1px solid var(--border);border-radius:3px;align-items:center;gap:8px;height:28px;padding:0 10px;display:flex}.ctrl-label{color:var(--text-2);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.ctrl-val{color:var(--text-0);text-align:right;min-width:44px;font-family:JetBrains Mono,monospace;font-size:11px}.range-slider{appearance:none;cursor:pointer;background:0 0;outline:none;width:90px;height:14px;margin:0;padding:0;position:relative}.range-slider::-webkit-slider-runnable-track{background:var(--bg-0);border:1px solid var(--border-strong);border-radius:2px;height:4px}.range-slider::-moz-range-track{background:var(--bg-0);border:1px solid var(--border-strong);border-radius:2px;height:4px}.range-slider::-webkit-slider-thumb{appearance:none;background:var(--text-0);border:1px solid var(--text-2);border-radius:1px;width:10px;height:10px;margin-top:-4px}.range-slider::-moz-range-thumb{background:var(--text-0);border:1px solid var(--text-2);border-radius:1px;width:10px;height:10px}.toolbar-spacer{flex:1}.chip{background:var(--bg-2);border:1px solid var(--border);height:26px;color:var(--text-1);border-radius:13px;align-items:center;gap:6px;padding:0 10px;font-size:11px;display:inline-flex}.chip-num{color:var(--accent);font-family:JetBrains Mono,monospace;font-weight:600}.toggle{color:var(--text-1);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:11px;display:inline-flex}.switch{background:var(--bg-0);border:1px solid var(--border-strong);border-radius:7px;width:26px;height:14px;position:relative}.switch:after{content:"";background:var(--text-2);border-radius:50%;width:10px;height:10px;transition:all .15s;position:absolute;top:1px;left:1px}.switch.on{border-color:var(--accent);background:var(--accent-dim)}.switch.on:after{background:var(--accent);left:13px}.pass-strip-wrap{background:var(--bg-1);border-bottom:1px solid var(--border);align-items:stretch;min-width:0;display:flex;position:relative;overflow:hidden}.pass-search{border-right:1px solid var(--border);background:var(--bg-1);flex:none;align-items:center;padding:0 8px;display:flex;position:relative}.pass-search input{background:var(--bg-2);border:1px solid var(--border);width:140px;height:22px;color:var(--text-0);border-radius:2px;outline:none;padding:0 22px 0 8px;font-size:11px}.pass-search input::placeholder{color:var(--text-3)}.pass-search input:focus{border-color:var(--accent-dim)}.pass-search-clear{width:16px;height:16px;color:var(--text-3);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:16px;position:absolute;right:11px}.pass-search-clear:hover{color:var(--text-0)}.pass-nav{background:var(--bg-1);border:none;border-right:1px solid var(--border);width:28px;color:var(--text-2);cursor:pointer;z-index:2;flex:none;font-size:10px}.pass-nav.right{border-right:none;border-left:1px solid var(--border)}.pass-nav:hover{color:var(--text-0);background:var(--bg-2)}.pass-nav.hidden{visibility:hidden}.pass-strip{flex:1;align-items:center;gap:1px;min-width:0;padding:0 4px;display:flex;overflow:hidden}.pass-strip:focus{box-shadow:inset 0 -2px 0 var(--accent-dim);outline:none}.pass-strip.scrollable{cursor:grab;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;overflow:auto hidden}.pass-strip.scrollable:active{cursor:grabbing}.pass-strip.scrollable::-webkit-scrollbar{height:6px}.pass-strip.scrollable::-webkit-scrollbar-track{background:0 0}.pass-strip.scrollable::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.pass-strip.scrollable::-webkit-scrollbar-thumb:hover{background:var(--text-3)}.pass-strip.scrollable .pass-tab{flex-shrink:0}.pass-tab{height:36px;color:var(--text-2);letter-spacing:.01em;border-right:1px solid var(--border);cursor:pointer;white-space:nowrap;background:0 0;border-top:none;border-bottom:none;border-left:none;align-items:center;padding:0 12px;font-size:11.5px;display:flex;position:relative}.pass-tab:hover{color:var(--text-0);background:var(--bg-2)}.pass-tab.active{color:var(--accent);background:var(--bg-0);font-weight:500}.pass-tab.active:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:0;left:0;right:0}.pass-tab .fam{color:var(--text-3);letter-spacing:.06em;margin-right:6px;font-family:JetBrains Mono,monospace;font-size:9px}.pass-tab.active .fam{color:var(--accent-dim)}.pass-overflow{height:36px;color:var(--text-2);border-left:1px solid var(--border);cursor:default;align-items:center;margin-left:auto;padding:0 12px;font-family:JetBrains Mono,monospace;font-size:11px;display:flex}.pass-empty{height:36px;color:var(--text-3);align-items:center;padding:0 14px;font-size:11px;font-style:italic;display:flex}.body{background:var(--bg-0);grid-template-columns:240px 1fr;min-height:0;display:grid;overflow:hidden}.sidebar{background:var(--bg-1);border-right:1px solid var(--border);flex-direction:column;display:flex;overflow-y:auto}.sidebar-section{border-bottom:1px solid var(--border);padding:12px 14px}.sidebar-label{letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-bottom:6px;font-size:9.5px;font-weight:600}.path-row{gap:4px;display:flex}.path-input{background:var(--bg-0);border:1px solid var(--border-strong);min-width:0;color:var(--text-0);border-radius:2px;outline:none;flex:1;padding:6px 8px;font-family:JetBrains Mono,monospace;font-size:10.5px}.path-input:focus{border-color:var(--accent)}.path-pick{background:var(--bg-2);border:1px solid var(--border-strong);width:26px;color:var(--text-1);cursor:pointer;border-radius:2px;flex:none;padding:0;font-size:13px;line-height:1}.path-pick:hover{background:var(--bg-hover);color:var(--text-0);border-color:var(--accent-dim)}.tree{flex:1;padding:8px 0}.tree-node{height:22px;color:var(--text-1);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:0 14px;font-size:11.5px;display:flex}.tree-node:hover{background:var(--bg-2);color:var(--text-0)}.tree-node.selected{color:var(--accent);background:#4fb3a90f}.tree-indent{flex-shrink:0;width:14px}.caret{width:10px;color:var(--text-3);justify-content:center;align-items:center;font-size:9px;display:inline-flex}.check{border:1px solid var(--border-strong);background:var(--bg-0);cursor:pointer;border-radius:2px;flex-shrink:0;width:12px;height:12px;position:relative}.check.on{background:var(--accent-dim);border-color:var(--accent)}.check.on:after{content:"";border:solid var(--text-0);border-width:0 1.5px 1.5px 0;width:4px;height:8px;position:absolute;top:0;left:3px;transform:rotate(45deg)}.ico{color:var(--text-3);flex-shrink:0;width:12px;font-family:JetBrains Mono,monospace;font-size:10px}.tree-name{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.tree-meta{color:var(--text-3);margin-left:auto;font-family:JetBrains Mono,monospace;font-size:10px}.tree-empty{color:var(--text-3);padding:14px;font-size:11px;font-style:italic}.main{background:var(--bg-0);flex-direction:column;gap:10px;min-height:0;padding:14px;display:flex;overflow:hidden}.grid-header{color:var(--text-2);align-items:center;gap:12px;font-size:11px;display:flex}.grid-header .active-pass{color:var(--accent);font-family:JetBrains Mono,monospace;font-weight:600}.grid-header .pass-meta{color:var(--text-3);font-family:JetBrains Mono,monospace}.grid{gap:var(--grid-gap);flex:1;min-width:0;min-height:0;display:grid}.grid.cols-1{grid-template-columns:1fr}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:1fr 1fr 1fr}.grid.cols-4{grid-template-columns:1fr 1fr 1fr 1fr}.panel{background:var(--bg-1);border:1px solid var(--border);border-radius:3px;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.panel-head{background:var(--bg-2);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;height:30px;padding:0 10px;display:flex}.panel-label{color:var(--text-0);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:JetBrains Mono,monospace;font-size:11px;overflow:hidden}.panel-label .scene{color:var(--text-2)}.panel-dd{background:var(--bg-0);border:1px solid var(--border-strong);height:22px;color:var(--text-1);cursor:pointer;border-radius:2px;outline:none;padding:0 8px;font-family:JetBrains Mono,monospace;font-size:10.5px}.panel-dd:focus{border-color:var(--accent)}.panel-icons{gap:4px;display:flex}.panel-ico{width:22px;height:22px;color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;font-family:JetBrains Mono,monospace;font-size:11px;display:flex}.panel-ico:hover{background:var(--bg-3);color:var(--text-0)}.panel-body{cursor:grab;background-color:#0d0e11;background-image:linear-gradient(45deg,#0a0b0e 25%,#0000 25%),linear-gradient(-45deg,#0a0b0e 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#0a0b0e 75%),linear-gradient(-45deg,#0000 75%,#0a0b0e 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:16px 16px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;flex:1;position:relative;overflow:hidden}.panel-body.dragging{cursor:grabbing}.panel-img{transform-origin:0 0;-webkit-user-select:none;user-select:none;pointer-events:none;max-width:none;max-height:none;image-rendering:pixelated;position:absolute;top:50%;left:50%}.panel-overlay{color:var(--text-1);border:1px solid var(--border);letter-spacing:.04em;pointer-events:none;background:#0b0c0ea6;border-radius:2px;flex-direction:column;gap:4px;padding:4px 6px;font-family:JetBrains Mono,monospace;font-size:9.5px;display:flex;position:absolute;top:8px;left:8px}.panel-overlay .lbl{color:var(--text-3)}.panel-corner{color:var(--text-2);border:1px solid var(--border);letter-spacing:.04em;pointer-events:none;background:#0b0c0eb3;padding:3px 6px;font-family:JetBrains Mono,monospace;font-size:9px;position:absolute;bottom:8px;right:8px}.panel-missing{color:var(--text-3);letter-spacing:.04em;justify-content:center;align-items:center;font-family:JetBrains Mono,monospace;font-size:11px;font-style:italic;display:flex;position:absolute;inset:0}.panel-loading{color:var(--text-3);letter-spacing:.1em;text-transform:uppercase;justify-content:center;align-items:center;font-family:JetBrains Mono,monospace;font-size:10px;display:flex;position:absolute;inset:0}.panel-error{color:var(--danger);letter-spacing:.04em;text-align:center;justify-content:center;align-items:center;padding:8px;font-family:JetBrains Mono,monospace;font-size:10px;display:flex;position:absolute;inset:0}.ab-wrap{background:var(--bg-1);border:1px solid var(--border);border-radius:3px;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.ab-side{position:absolute;inset:0;overflow:hidden}.ab-side.b{clip-path:inset(0 0 0 var(--ab-split,50%))}.ab-divider{background:var(--accent);width:2px;top:0;bottom:0;left:var(--ab-split,50%);cursor:col-resize;z-index:5;position:absolute;transform:translate(-1px)}.ab-divider:after{content:"";background:var(--accent);border-radius:2px;width:14px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.panel-body.crypto-mode{cursor:crosshair}.panel-body.crypto-mode.dragging{cursor:grabbing}.crypto-picker{border:1px solid var(--border-strong);z-index:12;background:#0b0c0eeb;border-radius:3px;min-width:180px;max-width:260px;padding:8px 10px;font-size:10.5px;line-height:1.45;position:absolute;top:8px;right:8px;box-shadow:0 4px 14px #00000080}.crypto-picker-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:6px;padding-bottom:4px;display:flex}.crypto-picker-head .lbl{letter-spacing:.14em;color:var(--text-3);font-size:9px;font-weight:600}.crypto-clear{color:var(--text-2);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:10px}.crypto-clear:hover{color:var(--danger)}.crypto-hint{color:var(--text-3);font-style:italic}.crypto-row{justify-content:space-between;align-items:center;gap:6px;padding:2px 0;display:flex}.crypto-name{color:var(--text-0);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.crypto-x{border:1px solid var(--border);width:18px;height:18px;color:var(--text-2);cursor:pointer;background:0 0;border-radius:2px;flex:none;padding:0;font-size:13px;line-height:14px}.crypto-x:hover{color:var(--danger);border-color:var(--danger)}.panel-body.relight-mode{cursor:crosshair}.panel-body.relight-mode.dragging{cursor:grabbing}.composite-panel{border:1px solid var(--border-strong);z-index:12;background:#0b0c0eeb;border-radius:3px;min-width:188px;max-width:260px;padding:8px 10px;font-size:10.5px;line-height:1.45;position:absolute;top:8px;right:8px;box-shadow:0 4px 14px #00000080}.composite-toggle{cursor:pointer;align-items:center;gap:6px;display:flex}.composite-toggle .lbl{letter-spacing:.14em;color:var(--text-3);font-size:9px;font-weight:600}.composite-row{align-items:center;gap:6px;padding:3px 0;display:flex}.composite-row:first-of-type{border-top:1px solid var(--border);margin-top:6px;padding-top:6px}.composite-k{color:var(--text-2);flex:0 0 52px}.composite-v{text-align:right;color:var(--text-0);flex:0 0 32px}.composite-row input[type=range]{flex:auto;min-width:0}.composite-sel{background:var(--bg-1,#16181c);min-width:0;color:var(--text-0);border:1px solid var(--border);border-radius:2px;flex:auto;padding:1px 3px;font-family:inherit;font-size:10px}.composite-check{cursor:pointer}.composite-modes{gap:4px}.composite-mode{border:1px solid var(--border);color:var(--text-2);cursor:pointer;background:0 0;border-radius:2px;flex:1 1 0;padding:2px 0;font-family:inherit;font-size:10px}.composite-mode.on{border-color:var(--border-strong);color:var(--text-0);background:#ffffff0f}.composite-mode:disabled{opacity:.4;cursor:not-allowed}.composite-hint{color:var(--text-3);margin-top:6px;font-style:italic}.composite-sphere{justify-content:center;margin-top:8px;display:flex}.light-sphere{background:#00000040;border-radius:50%}.light-marker{pointer-events:none;z-index:11;border:1.5px solid #ffd44d;border-radius:50%;width:14px;height:14px;margin-top:-7px;margin-left:-7px;position:absolute;box-shadow:0 0 0 1px #000000b3,inset 0 0 0 1px #000000b3}.light-marker:after{content:"";background:#ffd44d;border-radius:50%;width:2px;height:2px;margin-top:-1px;margin-left:-1px;position:absolute;top:50%;left:50%}.hover-chip{border:1px solid var(--border-strong);pointer-events:none;z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0b0c0eeb;border-radius:3px;min-width:160px;padding:6px 8px;font-size:10.5px;line-height:1.45;position:absolute;box-shadow:0 4px 14px #00000080}.hover-chip-head{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;margin-bottom:4px;padding-bottom:4px;display:flex}.hover-chip-pass{color:var(--accent);font-weight:600}.hover-chip-xy{color:var(--text-3)}.hover-chip-row{justify-content:space-between;gap:12px;display:flex}.hover-chip-row .ch{color:var(--text-2)}.hover-chip-row .val{color:var(--text-0)}.status{background:var(--bg-1);border-top:1px solid var(--border);color:var(--text-2);align-items:center;gap:16px;padding:0 14px;font-family:JetBrains Mono,monospace;font-size:10.5px;display:flex}.status-item{align-items:center;gap:6px;display:flex}.status-item .dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.status-item .dot.warn{background:var(--warn)}.status-item .dot.err{background:var(--danger)}.status-spacer{flex:1}.status-item .k{color:var(--text-3)}.unsupported{background:var(--bg-0);height:100vh;color:var(--text-1);text-align:center;justify-content:center;align-items:center;padding:24px;display:flex}.unsupported-card{border:1px solid var(--border-strong);background:var(--bg-1);border-radius:4px;max-width:540px;padding:28px 32px}.unsupported-card h1{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:14px;font-size:14px;font-weight:600}.unsupported-card p{margin-bottom:10px;font-size:13px;line-height:1.55}.unsupported-card .hint{color:var(--text-3);margin-top:18px;font-family:JetBrains Mono,monospace;font-size:11.5px}.feature-overlay-layer{pointer-events:none;z-index:5;position:absolute;inset:0}.feature-overlay-layer>*{pointer-events:auto}.inspect-test-panel{border-top:1px solid var(--border);font-family:JetBrains Mono,monospace;font-size:11.5px}.inspect-test-toggle{text-align:left;background:var(--bg-2,#1a1a1a);width:100%;color:var(--text-2,#aaa);cursor:pointer;letter-spacing:.06em;border:none;padding:6px 10px}.inspect-test-body{flex-direction:column;gap:12px;max-height:50vh;padding:8px 10px;display:flex;overflow-y:auto}.feature-section{border:1px solid var(--border);border-radius:4px;padding:8px}.feature-section-title{color:var(--text-2,#ccc);letter-spacing:.06em;margin-bottom:6px}.feature-stub-note{color:var(--text-3,#777);font-style:italic}.feature-row{align-items:center;gap:8px;margin:4px 0;display:flex}.feature-check{cursor:pointer}.feature-k{color:var(--text-3,#888);min-width:70px}.feature-seg{gap:2px;display:flex}.feature-seg-btn{background:var(--bg-2,#222);color:var(--text-3,#888);border:1px solid var(--border);cursor:pointer;padding:2px 6px;font-size:10.5px}.feature-seg-btn.on{background:var(--accent,#4a90d9);color:#fff}.pointcloud-modal{background:var(--bg-1,#111);border:1px solid var(--border-strong,#444);z-index:100;border-radius:6px;flex-direction:column;padding:12px;display:flex;position:fixed;inset:8% 10%}.pointcloud-modal-head{color:var(--text-2,#ccc);justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}
