:root{--bg:#15191e;--panel:#1c2127;--panel2:#232a31;--line:#2f3842;--line2:#3b4652;--text:#d8dee6;--muted:#8a96a3;--dim:#5d6974;--acc:#5b8def;--acc-dim:#2f4d8a;--acc-bg:#5b8def2e;--acc-text:#fff;--info:#4fb3d9;--warn:#e06c4f;--ok:#7bc47f;--scroll:#3b4652;--scroll-hover:#4a5766;--input:#12161a;--shadow:#0006;--hover:#283039;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}html[data-theme=light]{--bg:#eef0f3;--panel:#f7f8fa;--panel2:#e8ebef;--line:#d6dbe2;--line2:#c3cad3;--text:#1f262e;--muted:#5b6673;--dim:#8a94a0;--acc:#1f4e9e;--acc-dim:#9db4dd;--acc-bg:#1f4e9e24;--acc-text:#fff;--info:#1f86b3;--warn:#c8482c;--ok:#3f9a4d;--scroll:#c3cad3;--scroll-hover:#aab3be;--input:#fff;--shadow:#00000026;--hover:#dfe4ea;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html[data-theme=light] .overlay .lbl{background:#f7f8faf2}html[data-theme=light] .toolbar .grp,html[data-theme=light] .legend,html[data-theme=light] .toolhint{background:#f7f8faf0}html[data-theme=light] .drop .box{background:#eef0f3cc}html[data-theme=light] .help{background:#282e3673}*{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scroll);border:2px solid var(--panel);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover)}::-webkit-scrollbar-corner{background:0 0}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:13px/1.45 var(--sans);margin:0;overflow:hidden}button,input,select{font:inherit;color:inherit}button{background:var(--panel2);border:1px solid var(--line2);cursor:pointer;border-radius:4px;padding:4px 9px}button:hover{border-color:var(--acc-dim);background:var(--hover)}button.primary{background:var(--acc);color:var(--acc-text);border-color:var(--acc);font-weight:600}button.primary:hover{background:var(--acc);filter:brightness(1.12)}button.danger{color:var(--warn);border-color:var(--warn);background:0 0}button.danger:hover{background:var(--warn);color:#fff;border-color:var(--warn)}button.icon{min-width:28px;padding:3px 7px}button.active{border-color:var(--acc);color:var(--acc)}button:focus-visible{outline:2px solid var(--acc);outline-offset:1px}input:focus-visible{outline:2px solid var(--acc);outline-offset:1px}input[type=text],input[type=search],input[type=number],select{background:var(--input);border:1px solid var(--line2);border-radius:4px;padding:4px 7px}input[type=range]{accent-color:var(--acc)}input[type=color]{border:1px solid var(--line2);background:0 0;border-radius:4px;width:28px;height:24px;padding:0}input[type=checkbox]{accent-color:var(--acc)}.app{grid-template-rows:42px 1fr 26px;grid-template-columns:var(--left,300px) 1fr var(--right,340px);height:100%;display:grid}.app.noleft aside.left,.app.noright aside.right{display:none}aside.left{grid-area:2/1}main{grid-area:2/2}aside.right{grid-area:2/3}.handle{cursor:col-resize;z-index:4;width:6px;position:absolute;top:0;bottom:0}.handle.l{left:0}.handle.r{right:0}.handle:hover,.handle.drag{background:var(--acc-bg)}.edgebtn{z-index:4;width:14px;height:44px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:0;padding:0;font-size:9px;position:absolute;top:50%;transform:translateY(-50%)}.edgebtn.l{border-left:0;border-radius:0 4px 4px 0;left:0}.edgebtn.r{border-right:0;border-radius:4px 0 0 4px;right:0}header{border-bottom:1px solid var(--line);background:var(--panel);grid-column:1/4;align-items:center;gap:8px;padding:0 12px;display:flex}header h1{letter-spacing:.2px;margin:0 14px 0 0;font-size:14px;font-weight:600}header h1 small{color:var(--muted);margin-left:6px;font-weight:400}.envbadge{letter-spacing:.4px;text-transform:uppercase;vertical-align:1px;color:#1a1300;background:#f2a33a;border-radius:4px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-block}.envbadge.dev{background:#5ad1c1}header .spacer{flex:1}header>*{flex:none}header button{white-space:nowrap}header .hico{vertical-align:-3px;flex:none}header .hico+.lbl{margin-left:5px}#mapLayer{text-overflow:ellipsis;max-width:220px}#mapOpacity{width:90px}#btnSettings{z-index:1;box-shadow:-8px 0 8px -4px var(--panel);margin-left:auto;position:sticky;right:0}header.c1 h1 .ttl{display:none}header.c1 h1{margin:0}header.c1 .envbadge{margin:0 4px 0 0}header.c1 #mapLayer{max-width:160px}header.c1 #mapOpacity{width:70px}header.c2{gap:6px}header.c2 .lbl{display:none}header.c2 .hico+.lbl{margin-left:0}header.c2 button:has(.hico){padding-left:8px;padding-right:8px}header.c2 #mapLayer{max-width:130px}#btnMapMenu,#btnProject{display:none}#btnMode.viz{color:var(--acc);border-color:var(--acc)}.menu.dropmenu .it.withico{grid-template-columns:22px 1fr;align-items:center;column-gap:8px;display:grid}.menu.dropmenu .it.withico .ico{color:var(--muted);grid-row:1/3;display:inline-flex}.menu.dropmenu .it.on b,.menu.dropmenu .it.on .ico{color:var(--acc)}.menu.dropmenu .sep{background:var(--line);height:1px;margin:4px 0}.maptools{display:contents}.maptools>*{flex:none}header:has(#btnMap.active) #btnMapMenu{color:var(--acc)}header.c3 #btnMapMenu{display:inline-block}header.c3 .maptools{display:none}header.c3 .maptools.open{z-index:30;background:var(--panel);border:1px solid var(--line2);width:240px;box-shadow:0 6px 24px var(--shadow);border-radius:6px;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex;position:fixed}header.c3 .maptools.open #mapLayer{width:100%;max-width:none}header.c3 .maptools.open #mapOpacity{flex:1;width:auto;min-width:0}header.c3 .maptools.open #cutThr{flex:1;min-width:0}header.c4 #btnProject{display:inline-block}header.c4 #btnSave,header.c4 #btnLoadProj{display:none}header.c5{gap:4px;padding-left:8px;padding-right:8px}header.c5 button{padding-left:7px;padding-right:7px}aside{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}aside.right{border-right:0;border-left:1px solid var(--line)}.tabs{border-bottom:1px solid var(--line);flex:none;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:1;padding:8px 4px}.tabs button.active{color:var(--text);border-bottom-color:var(--acc)}.pane{flex:1;min-height:0;padding:10px;display:none;overflow:auto}.pane.active{display:block}.lower{border-top:1px solid var(--line);flex-direction:column;flex:none;min-height:0;display:flex}.lower.open{flex:0 45%}.lowgrip{cursor:row-resize;touch-action:none;height:6px;margin-top:-3px;display:none}.lower.open .lowgrip{display:block}.lowgrip:hover,.lowgrip.drag{background:var(--acc)}.lower .tabs{border-bottom:0}.lower.open .tabs{border-bottom:1px solid var(--line)}.lower .tabs button:after{content:" ▴";font-size:10px}.lower.open .tabs button.active:after{content:" ▾"}.pane h3{text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:12px 0 6px;font-size:11px;font-weight:600}.pane h3:first-child{margin-top:0}main{min-width:0;min-height:0;position:relative}canvas#c{width:100%;height:100%;display:block}.toolbar{flex-wrap:wrap;gap:6px;max-width:calc(100% - 20px);display:flex;position:absolute;top:10px;left:12px}.toolbar .grp{border:1px solid var(--line);background:#1c2127eb;border-radius:6px;gap:2px;padding:3px;display:flex}.toolbar .grp button{background:0 0;border:0;padding:4px 8px}.toolbar .grp button:hover{background:var(--panel2)}.toolbar .grp button.active{color:var(--acc);background:var(--panel2)}.drop{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.drop .box{border:1px dashed var(--line2);color:var(--muted);text-align:center;background:#15191eb3;border-radius:10px;padding:28px 36px}.drop .box b{color:var(--text);margin-bottom:6px;font-size:15px;display:block}.drop.hidden{display:none}.examples{text-align:center;z-index:3;position:absolute;bottom:34px;left:50%;transform:translate(-50%)}.examples.hidden{display:none}.examples .cards{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px;display:flex}.examples button.card{border:1px solid var(--line2);text-align:left;cursor:pointer;background:#1c2127eb;border-radius:8px;flex-direction:column;align-items:stretch;width:150px;padding:0;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}html[data-theme=light] .examples button.card{background:#f7f8faeb}.examples button.card:hover{border-color:var(--acc);transform:translateY(-1px)}.examples button.card:disabled{opacity:.6;cursor:progress;transform:none}.examples .card img{object-fit:cover;background:var(--panel2);width:100%;height:72px;display:block}.examples .card b{color:var(--text);margin:6px 9px 1px;font-size:12.5px;font-weight:600;display:block}.examples .card span{color:var(--muted);margin:0 9px 7px;font-size:11px;display:block}main.dragover .drop{display:flex}main.dragover .drop .box{border-color:var(--acc);color:var(--text)}.legend{border:1px solid var(--line);background:#1c2127eb;border-radius:6px;padding:6px 10px;font-size:12px;display:none;position:absolute;bottom:10px;right:10px}.legend.show{display:block}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}footer{border-top:1px solid var(--line);background:var(--panel);font-family:var(--mono);color:var(--muted);grid-column:1/4;align-items:center;gap:16px;padding:0 12px;font-size:11.5px;display:flex}footer .coord{color:var(--text)}footer .warn{color:var(--warn);cursor:pointer}footer .spacer{flex:1}.footmap{display:none}.model.hassel{border-color:var(--acc);box-shadow:inset 3px 0 0 var(--acc);background:var(--acc-bg)}.model .selcnt{font:11px var(--mono);color:var(--acc-text);background:var(--acc);cursor:pointer;border-radius:9px;padding:0 6px}.model .selcnt:empty{display:none}details.folder.hassel>summary .fname{color:var(--acc)}.gizmolabel{background:var(--panel);border:1px solid var(--acc);font:12px var(--mono);color:var(--text);pointer-events:none;white-space:nowrap;z-index:4;border-radius:5px;padding:4px 9px;position:absolute;transform:translate(-50%,-100%)}.split{cursor:col-resize;z-index:4;background:var(--line);width:6px;position:absolute;top:0;bottom:0}.split:hover,.split.drag{background:var(--acc)}.split.horiz{cursor:row-resize;width:auto;height:6px}.secbar{background:var(--panel);border:1px solid var(--line);z-index:4;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:flex;position:absolute;top:10px}.secbar .secsel{max-width:260px;padding:1px 4px;font-weight:600}.secbar .grp2{border-left:1px solid var(--line);gap:2px;padding:0 4px;display:inline-flex}.secbar{box-sizing:border-box;max-width:calc(100% - 20px)}.overlay .dim{background:var(--panel);border:1px solid var(--line2);font:11.5px var(--mono);color:var(--text);pointer-events:auto;white-space:nowrap;border-radius:3px;padding:1px 5px;position:absolute;transform:translate(-50%,-50%)}.overlay .dim .x{color:var(--dim);cursor:pointer;background:0 0;border:0;font-size:12px;line-height:1;position:absolute;top:-8px;right:-10px}.overlay .dim .x:hover{color:var(--warn)}.overlay .dim{border-color:var(--dimcol,#e83ee8);cursor:pointer}.overlay .dim.sel{border-color:#f2a33a;box-shadow:0 0 0 1px #f2a33a}.axismarker{border:1.5px solid var(--acc);pointer-events:auto;cursor:pointer;border-radius:50%;width:18px;height:18px;position:absolute;transform:translate(-50%,-50%)}.axismarker:before,.axismarker:after{content:"";background:var(--acc);position:absolute}.axismarker:before{width:1.5px;margin-left:-.75px;top:-6px;bottom:-6px;left:50%}.axismarker:after{height:1.5px;margin-top:-.75px;top:50%;left:-6px;right:-6px}.axismarker span{font:11px var(--mono);color:var(--acc);white-space:nowrap;position:absolute;top:12px;left:14px}.snapmarker{pointer-events:none;border:2px solid var(--acc);box-sizing:border-box;width:12px;height:12px;position:absolute;transform:translate(-50%,-50%)}.snapmarker.vertex{background:var(--acc)}.snapmarker.mid{border-radius:0;transform:translate(-50%,-50%)rotate(45deg)}.snapmarker.edge{border-radius:50%}.snapmarker.circle{border-radius:50%;width:16px;height:16px}.snapmarker.circle:after{content:"";background:var(--acc);border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:absolute;top:50%;left:50%}.snapmarker.guide{border-style:dashed;border-radius:50%}.snapmarker.face{opacity:.8;border-width:1.5px;border-radius:50%;width:8px;height:8px}#snap3{z-index:3}.snapmarker span{font:11px var(--mono);color:var(--acc);white-space:nowrap;background:var(--panel);border-radius:2px;padding:0 3px;position:absolute;top:-4px;left:14px}.snapmarker.mid span{top:-12px;left:12px;transform:rotate(-45deg)}.measbar{z-index:4;background:var(--panel);border:1px solid var(--line2);max-width:calc(100% - 24px);box-shadow:0 6px 24px var(--shadow);border-radius:8px;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;padding:5px 8px;font-size:12px;display:flex;position:absolute;transform:translate(-50%)}.measbar .sep{background:var(--line2);align-self:stretch;width:1px;margin:0 4px}.measbar .step{color:var(--muted);margin-right:4px}.measbar .mini.active{color:var(--acc);border-color:var(--acc);background:var(--acc-bg)}.overlay.dimming{cursor:crosshair;box-shadow:inset 0 0 0 3px var(--acc)}.overlay.wand{cursor:cell;box-shadow:inset 0 0 0 3px var(--acc)}.dimrubber{border-top:1.5px dashed var(--acc);transform-origin:0 0;pointer-events:none;height:0;position:absolute}.dimrubber span{font:11px var(--mono);color:var(--acc);background:var(--panel);white-space:nowrap;border-radius:2px;padding:0 4px;position:absolute;top:-18px;left:50%;transform:translate(-50%)}.toolbar .grp[data-title]{flex-direction:column;align-items:stretch;gap:0;padding:2px 3px 3px}.toolbar .grp[data-title] .ttl{letter-spacing:.5px;text-transform:uppercase;color:var(--muted);text-align:left;pointer-events:none;padding:0 4px 2px 5px;font-size:9px;line-height:1.2}.toolbar .grp[data-title] .row{gap:2px;display:flex}.toolbar .grp button.ico{color:var(--text);justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.toolbar .grp button.ico:hover{color:var(--acc)}.toolbar .grp button.ico.active{color:var(--acc);background:var(--acc-bg)}.tip{z-index:50;background:var(--panel);color:var(--text);border:1px solid var(--line2);box-shadow:0 4px 14px var(--shadow);pointer-events:none;white-space:nowrap;border-radius:5px;max-width:360px;padding:4px 8px;font-size:12px;position:fixed}.ctxmenu{z-index:6;background:var(--panel);border:1px solid var(--line2);min-width:200px;box-shadow:0 6px 24px var(--shadow);border-radius:6px;padding:4px 0;font-size:12.5px;position:absolute}.ctxmenu .hd{color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;max-width:260px;margin-bottom:3px;padding:4px 12px 6px;font-size:11px;overflow:hidden}.ctxmenu .it{cursor:pointer;padding:5px 12px}.ctxmenu .it:hover{background:var(--panel2);color:var(--acc)}.ctxmenu .it.opt:before{content:"";width:16px;display:inline-block}.ctxmenu .it.opt.on{color:var(--acc)}.ctxmenu .it.opt.on:before{content:"✓"}.toolbar .grp.off button{opacity:.35;pointer-events:none}.toolbar .grp{position:relative}.toolbar .grp:not(.fold)>.gbtn,.toolbar .grp.fold>.ttl,.toolbar .grp.fold>.row{display:none}.toolbar .grp.fold{justify-content:center}.toolbar .grp.fold>.gbtn{gap:0;padding:4px 2px 4px 6px}.toolbar .grp.fold .gchev{color:var(--muted);align-self:flex-end;margin-bottom:1px;font-size:8px;line-height:1}.toolbar .grp.fold.open>.gbtn{background:var(--panel2)}.toolbar .grp.fold:has([data-tool].active)>.gbtn{color:var(--acc)}.toolbar .grp.fold.open>.row{z-index:7;background:inherit;border:1px solid var(--line);box-shadow:0 6px 24px var(--shadow);border-radius:6px;padding:3px;display:flex;position:absolute;top:calc(100% + 4px)}.toolbar .popwrap{display:inline-flex;position:relative}.toolbar .hiddenpick{opacity:0;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:absolute;bottom:0;left:0}#selColorBtn{box-shadow:inset 0 -3px 0 var(--sw,transparent)}.pop{z-index:30;background:var(--panel);border:1px solid var(--line2);box-shadow:0 6px 24px var(--shadow);border-radius:6px;align-items:center;gap:8px;padding:8px 10px;display:none;position:fixed}.pop.show{display:flex}.pop input[type=range]{width:130px}.toolbar .pop .swatch{border:1px solid var(--line2);border-radius:4px;width:26px;min-width:0;height:26px;min-height:0;padding:0}.toolbar .pop .swatch:hover{outline:2px solid var(--acc);outline-offset:1px}.toolbar .grp .splitbtn{background:var(--panel2);border-radius:4px;display:inline-flex}.toolbar .grp .splitbtn button:hover{background:var(--line)}.toolbar .grp button.ico.chev{padding:4px 1px}.toolbar .grp button.ico.chev svg{width:12px}details.comp{margin-top:4px}details.comp>summary{color:var(--muted);cursor:pointer;font-size:11px;list-style:none}details.comp>summary:before{content:"▸ ";font-size:10px}details.comp[open]>summary:before{content:"▾ "}.model.waiting{opacity:.7;border-style:dashed}.model.waiting .row .mini.load{color:var(--acc);border-color:var(--acc-dim)}.model.loading{opacity:.75}.model .prog{background:var(--line);border-radius:2px;height:3px;margin:6px 0 3px;overflow:hidden}.model .prog .bar{background:var(--acc);width:0;height:100%;transition:width .15s}.rubber{border:1px dashed var(--acc);background:var(--acc-bg);pointer-events:none;position:absolute}.help{z-index:5;background:#0a0c0eb3;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.help .box{background:var(--panel);border:1px solid var(--line2);border-radius:8px;min-width:360px;padding:16px 22px}.help h2{margin:0 0 10px;font-size:14px}.help table td{padding:3px 10px 3px 0;font-size:12.5px}.help table td:first-child{font-family:var(--mono);color:var(--acc);white-space:nowrap}.scalebar{font:11px var(--mono);color:var(--muted);display:none;position:absolute;bottom:10px;left:10px}.scalebar.show{display:block}.scalebar .bar{border:1px solid var(--muted);border-top:0;height:4px;margin-bottom:2px}.ampel{vertical-align:-1px;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.ampel.ok{background:var(--ok)}.ampel.warn{background:var(--acc)}.ampel.fail{background:var(--warn)}.report{font-size:12px}.report div{border-bottom:1px solid var(--line);padding:2px 0}.report small{color:var(--muted);padding-left:15px;display:block}.rule{border:1px solid var(--line);background:var(--panel2);border-radius:6px;margin-bottom:8px;padding:8px}.rule .chev{min-width:22px;padding:0 4px}.rule.clip{padding:6px 8px}.rule.clip .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rule.clip .sub{flex-wrap:nowrap;margin-top:3px}.rule.clip .sub .hint{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rule .sec2d details.sect>summary{margin:8px 0 4px}.rule .sec2d{border-top:1px solid var(--line);margin-top:8px;padding-top:4px}.rule .lg{flex-wrap:wrap;gap:4px 10px;margin-top:6px;font-size:11.5px;display:flex}.rule .lg span{cursor:pointer}.rule .lg i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.view{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:4px 6px;display:flex}.view .nm{cursor:pointer;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.view .thumb{background:var(--panel2);border:1px solid var(--line);cursor:pointer;border-radius:4px;flex:none;width:64px;height:40px;position:relative;overflow:hidden}.view .thumb img{object-fit:cover;width:100%;height:100%;display:block}.view .thumb .key{color:#fff;text-shadow:0 0 3px #000;font-size:10px;position:absolute;top:1px;left:2px}.dist{cursor:pointer}.dist div:hover{color:var(--acc)}.tree .leafrow{white-space:nowrap;cursor:pointer;border-radius:3px;align-items:center;gap:5px;padding:1px 2px;display:flex}.tree .leafrow:hover{background:var(--panel2)}.tree .leafrow.sel{background:var(--acc-bg);color:var(--acc)}.tree .more{color:var(--info);cursor:pointer;padding:2px 14px;font-size:11.5px}#loadState{margin-right:6px}.toolhint{color:var(--info);pointer-events:none;background:#1c2127e6;border-radius:4px;padding:3px 8px;font-size:12px;position:absolute;top:52px;left:10px}.toolhint:empty{display:none}.overlay{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.overlay .lbl{border:1px solid var(--acc);font:11.5px var(--mono);color:var(--text);white-space:pre;pointer-events:auto;background:#1c2127f0;border-radius:5px;flex-direction:column;gap:1px;padding:4px 22px 4px 8px;display:flex;position:absolute;transform:translate(-50%,-120%)}.overlay .lbl.pt{border-color:var(--info);transform:translate(8px,-50%)}.overlay .lbl b{color:var(--acc)}.overlay .lbl.pt b{color:var(--info)}.overlay .lbl span{color:var(--muted);font-size:10.5px}.overlay .lbl .x{color:var(--dim);background:0 0;border:0;padding:0 4px;font-size:13px;line-height:1;position:absolute;top:2px;right:2px}.overlay .lbl .x:hover{color:var(--warn)}.overlay .lbl.dimlbl{cursor:pointer;border-color:var(--dimcol,#e83ee8);padding-right:20px}.overlay .lbl.dimlbl b{color:var(--text)}.overlay .lbl.dimlbl.sel{border-color:#f2a33a;box-shadow:0 0 0 1px #f2a33a}.dimgrip{background:var(--panel);cursor:move;pointer-events:auto;touch-action:none;border:2px solid #f2a33a;width:10px;height:10px;margin:-6px 0 0 -6px;position:absolute}.dimgrip.line{border-radius:50%}.dimgrip:hover{background:#f2a33a}.model{border:1px solid var(--line);background:var(--panel2);border-radius:6px;margin-bottom:6px;padding:7px 8px}.model .row{align-items:center;gap:6px;display:flex}.model .sw{border-radius:2px;flex:none;width:10px;height:10px}.model .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.model .meta{color:var(--muted);font-size:11px;font-family:var(--mono);margin-top:3px}.model .meta .g{color:var(--ok)}.model .meta .i{color:var(--info)}.model .meta .n{color:var(--warn)}.model .actions{gap:4px;margin-top:6px;display:flex}.model .actions button{padding:2px 6px;font-size:11.5px}.model .meta{margin-top:2px}.model.hid{opacity:.55}details.folder>summary{cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:4px;font-weight:500;list-style:none;display:flex}details.folder>summary::-webkit-details-marker{display:none}details.folder>summary:before{content:"▸";color:var(--muted);width:12px;font-size:14px;line-height:1}details.folder[open]>summary:before{content:"▾"}details.folder>summary:hover{background:var(--panel2)}details.folder .fname{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}details.folder .cnt{color:var(--dim);font-family:var(--mono);font-size:10.5px}details.folder .fbody{border-left:1px solid var(--line);margin-left:10px;padding-left:8px}button.mini{border-color:var(--line);color:var(--muted);background:0 0;border-radius:3px;padding:1px 6px;font-size:10.5px}button.mini.icon{padding:1px 7px;font-size:14px;line-height:1}button.mini:hover{color:var(--text);border-color:var(--line2)}.model .nm{cursor:pointer}.model.open{border-color:var(--line2)}.model .row .mini{flex:none}#tree,#models,.tabs,.toolbar,.ctxmenu,.model .row,.tree summary,.tree .leafrow{-webkit-user-select:none;user-select:none}.tree{font-size:12.5px}.tree details{margin-left:0}.tree details details{margin-left:14px}.tree summary{cursor:pointer;white-space:nowrap;border-radius:3px;align-items:center;gap:5px;padding:1px 2px;list-style:none;display:flex}.tree summary::-webkit-details-marker{display:none}.tree summary:before{content:"▸";color:var(--muted);width:13px;font-size:14px;line-height:1;display:inline-block}.tree details[open]>summary:before{content:"▾"}.tree details.leaf>summary:before{content:""}.tree summary:hover{background:var(--panel2)}.tree summary.sel{background:var(--acc-bg);color:var(--acc)}.tree .t{color:var(--muted);font-family:var(--mono);font-size:10.5px}.tree .cnt{color:var(--dim);margin-left:auto;font-size:10.5px}.tree summary.hidden-node .lab{color:var(--dim);text-decoration:line-through}table.props{border-collapse:collapse;width:100%;font-size:12px}table.props td{border-bottom:1px solid var(--line);vertical-align:top;word-break:break-word;padding:3px 4px}table.props td:first-child{color:var(--muted);width:42%}table.props tr.hd td{background:var(--panel2);color:var(--text);border-bottom:1px solid var(--line2);padding-top:5px;font-weight:600}table.props tr.hd td small{color:var(--muted);margin-left:6px;font-weight:400}table.props .diff{color:var(--acc);cursor:pointer}.phead{align-items:baseline;gap:8px;margin:2px 0 6px;display:flex}.phead small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pgall{justify-content:flex-end;margin:8px 0 2px}details.pgroup{margin-top:4px}details.pgroup>summary{cursor:pointer;background:var(--panel2);border-bottom:1px solid var(--line2);align-items:baseline;gap:6px;padding:4px 6px;font-size:12px;font-weight:600;list-style:none;display:flex}details.pgroup>summary::-webkit-details-marker{display:none}details.pgroup>summary:before{content:"▸";color:var(--muted);width:10px}details.pgroup[open]>summary:before{content:"▾"}details.pgroup>summary small{color:var(--muted);font-weight:400}details.pgroup>summary .gn{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}details.pgroup>summary .cnt{color:var(--dim);font:10.5px var(--mono);margin-left:auto}table.props .dist{color:var(--muted);padding-left:10px;font-size:11px}.mono{font-family:var(--mono);font-size:11.5px}.kv{grid-template-columns:auto 1fr;gap:3px 10px;font-size:12px;display:grid}.kv div:nth-child(odd){color:var(--muted)}.badge{border:1px solid var(--line2);color:var(--muted);border-radius:10px;padding:1px 7px;font-size:11px;display:inline-block}.badge.ok{border-color:var(--ok);color:var(--ok)}.badge.warn{border-color:var(--warn);color:var(--warn)}.badge.info{border-color:var(--info);color:var(--info)}.warnline{color:var(--warn);border-left:2px solid var(--warn);margin:4px 0;padding:4px 0 4px 10px;font-size:12px}.empty{color:var(--dim);text-align:center;padding:20px 6px}.ctl{align-items:center;gap:8px;margin:6px 0;display:flex}.ctl label{color:var(--muted);min-width:82px}.ctl input[type=range]{flex:1}.sec{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}.north{width:64px;height:64px}.log{font-family:var(--mono);color:var(--muted);white-space:pre-wrap;max-height:200px;font-size:11px;overflow:auto}.hint{color:var(--dim);font-size:11.5px}details.sect>summary{cursor:pointer;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin:10px 0 4px;font-size:11px;font-weight:600}.fl{flex-wrap:wrap;align-items:center;gap:6px;display:flex}#progress{background:var(--acc);transform-origin:0;height:2px;transition:transform .2s;position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.menu{z-index:30;box-sizing:border-box;background:var(--panel);border:1px solid var(--line2);max-width:calc(100vw - 16px);box-shadow:0 10px 32px var(--shadow);border-radius:8px;position:fixed}.menu.settings{width:360px;padding:10px 14px 12px}.menu.dropmenu{min-width:260px;padding:4px 0}.menu.dropmenu .it{cursor:pointer;flex-direction:column;gap:1px;padding:7px 14px;display:flex}.menu.dropmenu .it:hover{background:var(--panel2)}.menu.dropmenu .it:hover b{color:var(--acc)}button.dropbtn:after{content:" ▾";color:var(--muted);font-size:10px}.menu.settings h2{margin:0 0 6px;font-size:13px}.menu.settings .ctl{grid-template-columns:120px minmax(0,1fr);align-items:center;gap:8px;margin:6px 0;display:grid}.menu.settings .ctl label{min-width:0}.menu.settings select{box-sizing:border-box;width:100%;min-width:0}.menu.settings .flyspeed{align-items:center;gap:6px;display:flex}.menu.settings .flyspeed input{flex:1;min-width:0}.menu.settings .flyspeed input[type=color]{flex:none;width:36px;padding:0 2px}.menu.settings .flyspeed .mono{white-space:nowrap;text-align:right;flex:none;min-width:34px}.menu.settings .flyico{color:var(--muted);display:inline-flex}.menu.settings .flyinfo{justify-content:flex-end;align-items:center;gap:6px;margin:-2px 0 4px;display:flex}.menu.settings .flyinfo .flyico{color:var(--acc)}.menu.settings .setfoot{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:8px;display:flex}.menu.settings details.setgroup{border-top:1px solid var(--line);margin:8px 0 2px;padding-top:6px}.menu.settings details.setgroup>summary{cursor:pointer;margin:2px 0 4px;font-weight:400}.menu.settings .setsub{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:10px 0 2px;font-size:11px}.menu.settings .setchk input:disabled+span{color:var(--dim)}.menu.settings .setchk{min-width:0;color:var(--text);align-items:center;gap:6px;display:flex}.menu.settings details.perfsteps{margin:2px 0 6px}.menu.settings details.perfsteps>summary{cursor:pointer;color:var(--muted);margin:4px 0;font-size:12px}.menu.settings details.perfsteps .setchk{margin:5px 0 5px 4px}.menu.settings details.perfsteps .hint{margin:4px 0 0 4px}.menu.settings .off{opacity:.5}.menu.settings .version{color:var(--muted);font-size:11.5px}#btnSettings{line-height:inherit;padding:4px 8px}#btnSettings svg{vertical-align:-3px}body:not(.viz) .toolbar .grp.vizonly,body.viz .toolbar .grp.anaonly{display:none}body.viz #overlay,body.viz #dimGrips,body.viz #measBar,body.viz #toolHint,body.viz #snap3,body.viz #gizmoLabel,body.viz .scalebar,body.viz #secMeasBar{display:none!important}.toolbar .grp button.haspop.open{color:var(--acc);background:var(--acc-bg)}.vizbar{z-index:4;background:var(--panel);border:1px solid var(--line2);width:max-content;max-width:calc(100% - 24px);box-shadow:0 6px 24px var(--shadow);--vznight:#1b2433;--vzday:#e9c46a;border-radius:8px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:none;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.vizbar.show{display:flex}.drivehud{z-index:4;background:color-mix(in srgb,var(--panel) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line2);max-width:min(360px,100% - 24px);box-shadow:0 2px 10px var(--shadow);border-radius:8px;flex-direction:column;gap:5px;padding:8px 11px;font-size:12px;display:none;position:absolute;bottom:60px;left:12px}.drivehud.show{display:flex}.drivehud .dtop{align-items:baseline;gap:6px;display:flex}.drivehud #driveSpeed{color:var(--text);text-align:right;min-width:2.2em;font-size:22px;line-height:1}.drivehud .dunit{color:var(--muted)}.drivehud #driveGear{color:var(--acc);font-size:16px}.drivehud .dname{color:var(--text);margin-left:auto;font-weight:600}.drivehud .dbtns{flex-wrap:wrap;gap:4px;display:flex}.drivehud #driveExit{margin-right:6px}.drivehud .dkeys{color:var(--muted);font-size:11.5px;line-height:1.45}.drivehud .dbtns .mini{align-items:center;gap:4px;display:inline-flex}.drivehud .dbtns .mini svg{flex:none}.drivehud .dbtns .mini.toggle.active{background:var(--acc);border-color:var(--acc);color:var(--acc-text)}.drivehud .dbtns .mini.toggle:not(.active){color:var(--muted)}.drivehud .touchonly{display:none}.drivehud.touch .touchonly{display:inline-block}.drivehud.touch .dkeys{display:none}.drivehud #driveHand{touch-action:none;-webkit-user-select:none;user-select:none}.drivestick{z-index:5;touch-action:none;-webkit-user-select:none;user-select:none;background:#0000002e;border:2px solid #ffffff8c;border-radius:50%;width:150px;height:150px;display:none;position:absolute;bottom:84px;right:20px;box-shadow:0 0 0 1px #0003}.drivestick.show{display:block}.lenshint{z-index:4;background:color-mix(in srgb,var(--panel) 72%,transparent);color:var(--text);font:12px var(--mono);pointer-events:none;opacity:0;border-radius:12px;padding:3px 10px;transition:opacity .3s;position:absolute;top:64px;left:50%;transform:translate(-50%)}.lenshint.show{opacity:1;transition:opacity 80ms}.driveside{z-index:5;flex-direction:column;align-items:center;gap:10px;display:none;position:absolute;bottom:30px;left:12px}.driveside.top{top:64px;bottom:auto}.driveside .rb{color:#fff;touch-action:manipulation;background:#00000059;border:2px solid #fff9;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;padding:0;font-size:18px;display:flex}.driveside .rb.exit{border-color:#ff786ebf}.driveside .rb.hand{touch-action:none;-webkit-user-select:none;user-select:none}.driveside .rb.hand.active{background:#dc3c328c}.driveside .rb.on{border-color:var(--acc);color:var(--acc)}.driveside .rb.mute{opacity:.6;border-style:dashed}.driveside .rb b.v{font:600 13px var(--mono)}.driveside .dspeed{color:#fff;text-shadow:0 1px 3px #000000b3;font-size:15px;font-weight:600}.driveside .dspeed:empty{display:none}.driverot{z-index:5;touch-action:none;-webkit-user-select:none;user-select:none;border:3px solid #ffffffb3;border-radius:50%;width:170px;height:170px;margin:-85px 0 0 -85px;display:none;position:fixed;box-shadow:0 0 0 1px #00000059,inset 0 0 0 1px #00000040}.driverot.show{display:block}.driverot .go{color:#fff;touch-action:manipulation;background:#2fb344;border:2px solid #fff;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;padding:0;font-size:15px;font-weight:700;position:absolute;top:50%;left:50%;box-shadow:0 1px 8px #00000073}.driverot .go:active{filter:brightness(1.15)}.driverot .knob{background:var(--acc);pointer-events:none;border:2px solid #fff;border-radius:50%;width:38px;height:38px;margin:-19px 0 0 -19px;position:absolute;top:50%;left:50%;box-shadow:0 1px 6px #0006}.drivestick .knob{pointer-events:none;background:#fff6;border:2px solid #ffffffb3;border-radius:50%;width:58px;height:58px;margin:-29px 0 0 -29px;position:absolute;top:50%;left:50%}.drivestick:before,.drivestick:after{content:"";background:#ffffff40;position:absolute}.drivestick:before{width:2px;margin-left:-1px;top:12%;bottom:12%;left:50%}.drivestick:after{height:2px;margin-top:-1px;top:50%;left:12%;right:12%}.vizbar .vzsun{color:var(--muted);min-width:150px}.vizbar input[type=date]{width:128px}.vizbar .vzpre{gap:2px;display:inline-flex}.vizbar #vzTime{-webkit-appearance:none;appearance:none;background:var(--day,linear-gradient(90deg,var(--vznight),var(--vzday),var(--vznight)));border-radius:4px;width:clamp(140px,26vw,360px);height:8px}.vizbar #vzTime::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--acc);cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px}.vizbar #vzTime::-moz-range-thumb{border:2px solid var(--acc);cursor:pointer;background:#fff;border-radius:50%;width:14px;height:14px}.vizbar #vzTimeV{min-width:78px}.vizbar .mini.active{color:var(--acc);border-color:var(--acc);background:var(--acc-bg)}.vizbar #vzPathInfo:empty{display:none}body.viz .legend{bottom:64px}.vzpop{z-index:30;background:var(--panel);border:1px solid var(--line2);min-width:220px;box-shadow:0 6px 24px var(--shadow);border-radius:6px;flex-direction:column;gap:6px;padding:8px 10px;font-size:12px;display:flex;position:fixed}.vzpop .hd{font-size:11.5px;font-weight:600}.vzpop .vzrow{align-items:center;gap:6px;display:flex}.vzpop .vzrow input[type=range]{flex:1;min-width:0}.vzpop .vzrow .mono{text-align:right;min-width:48px}.vzpop .mini.active{color:var(--acc);border-color:var(--acc);background:var(--acc-bg)}.vzpop .mini.wide{text-align:left}.sheetbtn,.sheetback{display:none}canvas#c{touch-action:none}@media (max-width:900px),(max-height:520px){.drivehud .dkeys{display:none}.app{grid-template-rows:auto 1fr 22px;grid-template-columns:1fr}header{padding:6px 8px;padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right));scrollbar-width:none;flex-wrap:nowrap;grid-column:1;gap:6px;overflow-x:auto}header::-webkit-scrollbar{display:none}header .spacer{display:none}header button,header select{min-height:36px}main{grid-column:1}aside.left,aside.right,.app.noleft aside.left,.app.noright aside.right{z-index:20;visibility:hidden;width:min(88vw,380px);box-shadow:0 0 28px var(--shadow);transition:transform .22s,visibility .22s;display:flex;position:fixed;top:0;bottom:0}aside.left{padding-left:env(safe-area-inset-left);left:0;transform:translate(-102%)}aside.right{padding-right:env(safe-area-inset-right);right:0;transform:translate(102%)}.app.sheet-left aside.left,.app.sheet-right aside.right{visibility:visible;transform:none}.sheetback{z-index:19;opacity:0;pointer-events:none;background:#00000073;transition:opacity .22s;display:block;position:fixed;top:0;bottom:0;left:0;right:0}.app.sheet-left .sheetback,.app.sheet-right .sheetback{opacity:1;pointer-events:auto}.handle,.edgebtn{display:none!important}.tabs{scrollbar-width:none;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:1 0 auto;padding:12px 8px}.sheetbtn{z-index:4;border:1px solid var(--line2);height:42px;color:var(--text);box-shadow:0 2px 10px var(--shadow);background:#1c2127f0;border-radius:21px;align-items:center;gap:6px;padding:0 14px;display:flex;position:absolute;bottom:12px}html[data-theme=light] .sheetbtn{background:#f7f8faf2}.sheetbtn.l{left:max(12px,env(safe-area-inset-left))}.sheetbtn.r{right:max(12px,env(safe-area-inset-right))}.sheetbtn .cnt{font:600 11px var(--mono);color:var(--acc-text);background:var(--acc);border-radius:9px;padding:0 6px;font-style:normal}.sheetbtn .cnt:empty{display:none}.toolbar{flex-wrap:nowrap;max-width:none;top:8px;left:8px}.toolbar .grp{flex:none}.toolbar .grp[data-title] .ttl{display:none}.toolbar .grp button{min-width:40px;min-height:40px;padding:6px 8px}.toolbar .grp button.ico.chev{min-width:24px;padding:6px 2px}.scalebar{bottom:64px;left:12px}.examples{width:calc(100% - 16px);bottom:68px}.examples button.card{width:136px}footer{white-space:nowrap;grid-column:1;gap:10px;padding:0 10px;font-size:10.5px;overflow:hidden}footer #originInfo,footer .coord,footer #persist,footer #stats{display:none}.secbar{scrollbar-width:none;flex-wrap:nowrap;gap:3px;max-width:none;padding:3px 4px;right:8px;overflow-x:auto}.secbar::-webkit-scrollbar{display:none}.secbar>*{flex:none}.secbar .spacer{display:none}.secbar .secsel{max-width:112px;font-size:12px}.secbar #secScale{font-size:10.5px}.secbar .grp2{gap:1px;padding:0 2px}.secbar #secSide{display:none}#secMeasBar,#measBar{gap:3px 4px;max-width:none;padding:4px 6px;font-size:11.5px;right:8px;transform:none;left:8px!important}#secMeasBar{bottom:62px!important}#secMeasBar .hint,#measBar .hint{display:none}#secMeasBar .mini,#measBar .mini{padding:3px 6px}.secbar .mini{min-width:30px;min-height:30px;padding:2px 4px}footer .footmap{text-overflow:ellipsis;opacity:.85;flex:1;min-width:0;font-size:9px;display:block;overflow:hidden}.legend,body.viz .legend{display:none!important}.help .box{width:calc(100vw - 24px);min-width:0;max-height:86vh;padding:14px 16px;overflow:auto}.menu.settings .ctl{grid-template-columns:1fr;gap:4px}.ctxmenu .it{padding:11px 14px}.model .row button,.pane button{min-height:32px}.vizbar{gap:4px 6px;width:calc(100% - 16px);max-width:none;padding:5px 6px;bottom:10px}.vizbar .vzsun{text-align:center;flex-basis:100%;min-width:0}.vizbar #vzTime{flex:1;width:auto;min-width:120px}body.viz .sheetbtn,.vizbar #vzRiseSet{display:none}.vizbar{gap:3px 5px;padding:4px 6px;font-size:11px;bottom:6px}body.driving .vizbar{background:color-mix(in srgb,var(--panel) 55%,transparent);width:min(56%,240px);box-shadow:none;border-color:#0000;padding:3px 8px;bottom:3px}body.driving .vizbar>:not(#vzTime){display:none}body.driving .vizbar #vzTime{min-width:0;height:4px}body.driving .vizbar #vzTime::-webkit-slider-thumb{width:12px;height:12px}body.driving .vizbar #vzTime::-moz-range-thumb{width:10px;height:10px}.drivehud.show{display:none}.driveside.show{display:flex}.drivehud #driveSpeed{font-size:20px}.drivehud .dname{font-size:11px}.drivehud .dbtns{flex-wrap:wrap;gap:3px}.drivehud .dbtns .mini{padding:2px 6px;font-size:10.5px}.drivestick{width:136px;height:136px;bottom:26px;right:12px}}@media (pointer:coarse){.drop .box,.toolhint{display:none}}
