@font-face{font-family:Inter;src:url(../fonts/Inter.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{--bg:#1d1d1d;--region:#303030;--header:#303030;--panel:#3d3d3d;--panel-h:#2b2b2b;--widget:#545454;--widget-hi:#656565;--widget-dark:#282828;--text:#e6e6e6;--text-dim:#a0a0a0;--sel:#4772b3;--sel-hi:#5680c2;--outline:#3d3d3d;--menu:#181818;--vp:#3d3d3d;--ax-x:#ff3352;--ax-y:#8bdc00;--ax-z:#2890ff;--orange:#ffa028;--radius:4px;--fs:12px}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:var(--fs)/1.35 Inter, "DejaVu Sans", system-ui, sans-serif;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}.ic{vertical-align:middle;flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.ic svg{width:16px;height:16px}.hidden{display:none!important}.muted{color:var(--text-dim);font-size:11px}.pad{padding:10px}input,button{font:inherit;color:inherit}.topbar{background:var(--bg);flex:none;align-items:center;gap:2px;height:26px;padding:0 6px;display:flex}.tb-logo{color:#ddd;padding:0 6px;display:flex}.tb-menu,.hd-menu{border-radius:var(--radius);cursor:default;padding:3px 8px}.tb-menu:hover,.hd-menu:hover{background:#ffffff1a}.tb-tabs{margin-left:12px;display:flex}.tb-tab{border-radius:var(--radius) var(--radius) 0 0;color:var(--text-dim);padding:3px 10px}.tb-tab.on{background:var(--region);color:var(--text)}.tb-spacer,.hd-spacer{flex:1}.tb-file{color:var(--text-dim);align-items:center;gap:4px;padding:0 10px;display:flex}.tb-auth{border-radius:var(--radius);background:var(--widget-dark);cursor:pointer;align-items:center;gap:4px;padding:2px 8px;display:flex}.tb-auth:hover{background:var(--widget)}.main{flex:1;min-height:0;display:flex}.area{background:var(--region);border-radius:6px;flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.area-vp{flex:1;min-width:200px;margin:2px 0 2px 2px}.col-right{flex-direction:column;flex:none;margin:2px 2px 2px 0;display:flex}.area-outliner{flex:none}.area-props{flex-direction:row;flex:1}.split-v{cursor:col-resize;flex:none;width:4px}.split-h{cursor:row-resize;flex:none;height:4px}.statusbar{height:22px;color:var(--text-dim);flex:none;align-items:center;gap:10px;padding:0 8px;font-size:11px;display:flex}.st-hint{white-space:nowrap;flex:1;align-items:center;gap:4px;display:flex;overflow:hidden}.st-right{white-space:nowrap}.area-h{background:var(--header);border-bottom:1px solid #262626;flex:none;align-items:center;gap:4px;height:26px;padding:0 6px;display:flex}.area-b{flex:1;min-height:0;overflow:auto}.vp-header{z-index:3;background:#303030eb;flex:none;align-items:center;gap:4px;height:28px;padding:0 6px;display:flex}.vp-body{flex:1;min-height:0;position:relative;overflow:hidden}.vp-canvas{outline:none;display:block;position:absolute;inset:0}.vp-modalhdr{z-index:5;font-variant-numeric:tabular-nums;white-space:pre;background:#303030;align-items:center;height:28px;padding:0 12px;display:none;position:absolute;top:0;left:0;right:0}.vp-text{color:#e6e6e6;text-shadow:0 1px 2px #000;pointer-events:none;font-size:12px;line-height:1.45;position:absolute;top:8px;left:52px}.vp-stats{pointer-events:none;text-shadow:0 1px 2px #000;font-size:11px;position:absolute;top:64px;left:52px}.vp-stats td{padding:0 10px 0 0}.vp-labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.vp-label{color:#fff;white-space:nowrap;background:#0000008c;border-radius:3px;padding:1px 4px;font-size:11px;position:absolute;top:0;left:0}.vp-label.len{color:#fff}.vp-label.area{color:#a8ff80}.vp-label.ang{color:#ffd480}.vp-label.ruler{background:#141414d9;border:1px solid #777}.vp-label.ruler.act{border-color:#fff}.circlesel{pointer-events:none;z-index:4;border:1px solid #ffffffd9;border-radius:50%;position:absolute;box-shadow:0 0 0 1px #00000059}.boxsel{pointer-events:none;z-index:4;background:#ffffff0a;border:1px dashed #fff;display:none;position:absolute}.navgizmo{z-index:2;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:6px;right:8px}.sidebar-wrap:not(.hidden)~.navgizmo{right:268px}.vp-body:has(.sidebar-wrap:not(.hidden)) .navgizmo{right:268px}.navbtns{flex-direction:column;gap:4px;display:flex}.navbtn{cursor:pointer;background:#28282899;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.navbtn:hover{background:#5a5a5acc}.toolbar{z-index:2;background:#282828eb;border-radius:6px;flex-direction:column;gap:2px;padding:3px;display:flex;position:absolute;top:8px;left:6px}.tool{cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.tool .ic,.tool .ic svg{width:20px;height:20px}.tool:hover{background:#4a4a4a}.tool.on{background:var(--sel)}.tool-sep{background:#4a4a4a;height:1px;margin:3px 4px}.sidebar-wrap{z-index:2;background:#303030f0;border-left:1px solid #262626;width:262px;display:flex;position:absolute;top:0;bottom:0;right:0}.sb-content{flex:1;padding:4px;overflow:auto}.sb-tabs{background:#252525;flex-direction:column;gap:2px;width:22px;padding-top:6px;display:flex}.sb-tab{writing-mode:vertical-rl;color:var(--text-dim);cursor:pointer;border-radius:0 4px 4px 0;padding:8px 2px;font-size:11px}.sb-tab.on{color:var(--text);background:#3d3d3d}.lastop{z-index:3;background:#282828f2;border-radius:6px;min-width:230px;max-width:300px;position:absolute;bottom:8px;left:6px}.lastop-h{cursor:pointer;align-items:center;gap:4px;padding:4px 8px;display:flex}.lastop-b{flex-direction:column;gap:3px;padding:4px 8px 8px;display:flex}.btn,.tbtn,.dd{background:var(--widget);border-radius:var(--radius);cursor:default;white-space:nowrap;justify-content:center;align-items:center;gap:4px;min-width:22px;height:22px;padding:0 8px;display:inline-flex}.btn:hover,.tbtn:hover,.dd:hover{background:var(--widget-hi)}.btn.primary{background:var(--sel)}.btn.primary:hover{background:var(--sel-hi)}.btn.wide{width:100%;margin:2px 0;display:flex}.btn.grow{flex:1}.tbtn.on{background:var(--sel)}.dd{background:var(--widget-dark);justify-content:flex-start}.dd.small{min-width:16px;padding:0 4px}.dd-l{text-overflow:ellipsis;text-align:left;flex:1;overflow:hidden}.dd-arrow{color:var(--text-dim);font-size:10px}.dd-x{color:var(--text-dim);padding:0 3px}.dd-x:hover{color:#fff}.mode-dd{min-width:120px}.align{display:inline-flex}.align>*{border-radius:0;margin-right:1px}.align>:first-child{border-radius:var(--radius) 0 0 var(--radius)}.align>:last-child{border-radius:0 var(--radius) var(--radius) 0;margin-right:0}.col .align{flex-direction:column;display:flex}.col .align>*{border-radius:0;margin:0 0 1px}.col .align>:first-child{border-radius:var(--radius) var(--radius) 0 0}.col .align>:last-child{border-radius:0 0 var(--radius) var(--radius)}.selmodes .tbtn{padding:0 4px}.num{background:var(--widget);border-radius:var(--radius);cursor:ew-resize;font-variant-numeric:tabular-nums;align-items:center;min-width:60px;height:20px;padding:0 14px;display:flex;position:relative;overflow:hidden}.num:hover{background:var(--widget-hi)}.num.drag{background:#3a3a3a}.num.err{background:#8a2b2b}.num.slider:before{content:"";width:var(--fill,0%);background:var(--sel);opacity:.6;position:absolute;top:0;bottom:0;left:0}.num-l{color:var(--text-dim);margin-right:6px;position:relative}.num-v{text-align:right;white-space:nowrap;flex:1;position:relative;overflow:hidden}.num-l:empty{display:none}.num-l:empty+.num-v{text-align:center}.num-a{width:13px;color:var(--text-dim);cursor:pointer;justify-content:center;align-items:center;display:none;position:absolute;top:0;bottom:0}.num-a.l{left:0}.num-a.r{right:0}.num:hover .num-a{display:flex}.num.editing{cursor:text}.num.editing>span{visibility:hidden}.num-in{border:1px solid var(--sel);border-radius:var(--radius);-webkit-user-select:text;user-select:text;background:#1d1d1d;outline:none;padding:0 6px;position:absolute;inset:0}.chk{cursor:default;align-items:center;gap:6px;padding:2px 0;display:flex}.chk-b{background:var(--widget);border-radius:3px;flex:none;width:14px;height:14px;position:relative}.chk.on .chk-b{background:var(--sel)}.chk.on .chk-b:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.txt{border-radius:var(--radius);-webkit-user-select:text;user-select:text;background:#1d1d1d;border:1px solid #3d3d3d;outline:none;min-width:0;height:22px;padding:0 6px}.txt:focus{border-color:var(--sel)}.lbl{color:var(--text-dim);margin:6px 0 2px;font-size:11px}.row{align-items:center;gap:4px;margin:2px 0;display:flex}.prow{align-items:center;gap:6px;margin:2px 0;display:flex}.prow-l{text-align:right;width:40%;color:var(--text-dim);font-size:11px}.prow-w{flex:1;min-width:0;display:flex}.prow-w>*{flex:1;min-width:0}.prow>.dd,.prow>.align{flex:1}.col{margin:4px 0}.colorin{background:0 0;border:none;height:22px;padding:0}.panel{background:var(--panel-h);border-radius:5px;margin:4px 2px;overflow:hidden}.panel-h{cursor:default;align-items:center;gap:4px;padding:4px 6px;font-weight:500;display:flex}.panel-h:hover{background:#333}.panel-tri{color:var(--text-dim);transition:transform .1s;display:flex}.panel.open .panel-tri{transform:rotate(90deg)}.panel-b{padding:2px 8px 8px;display:none}.panel.open .panel-b{display:block}.ptabs{background:#1d1d1d;flex-direction:column;flex:none;gap:2px;width:30px;padding:4px 3px;display:flex}.ptab{cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.ptab:hover{background:#3a3a3a}.ptab.on{background:var(--region)}.pbody{padding:4px}.pname{align-items:center;gap:6px;padding:4px;display:flex}.pname .txt{flex:1}.mod{background:var(--panel-h);border-radius:5px;margin:6px 2px}.mod.err{box-shadow:inset 0 0 0 1px #a33535}.mod-h{align-items:center;gap:3px;padding:4px;display:flex}.mod-h .tbtn,.mod-h .btn{background:0 0;height:20px;padding:0 3px}.mod-h .tbtn.on{color:#fff;background:0 0}.mod-h .tbtn:not(.on){opacity:.45}.mod-name{flex:1;height:20px}.mod-ic{display:flex}.mod-b{flex-direction:column;gap:3px;padding:2px 8px 8px;display:flex}.mod-err{color:#ff8080;align-items:center;gap:4px;font-size:11px;display:flex}.ol-body{padding:2px 0}.ol-row{cursor:default;white-space:nowrap;align-items:center;gap:3px;height:21px;padding-right:6px;display:flex}.ol-row:nth-child(2n){background:#ffffff05}.ol-row:hover{background:#ffffff0f}.ol-row.sel{background:#334d80}.ol-row.act{background:#4772b3}.ol-row.act .ol-name{color:#fff;font-weight:500}.ol-row.dim .ol-name,.ol-row.dim .ol-ic{opacity:.45}.ol-row.drop{outline:1px solid var(--orange)}.ol-tri{width:14px;color:var(--text-dim);display:flex}.ol-chk{opacity:.85;display:flex}.ol-ic{color:#f0a050;display:flex}.ol-name{text-overflow:ellipsis;overflow:hidden}.ol-row .ol-ic .ic{color:#e6a35c}.ol-btn{opacity:.75;padding:0 1px;display:flex}.ol-btn:hover{opacity:1}.ol-mod{color:#7fb2ff;display:flex}.ol-ren{flex:1;height:18px}.menu{z-index:100;background:var(--menu);border:1px solid #242424;border-radius:6px;flex-direction:column;min-width:180px;max-height:80vh;padding:4px 0;display:flex;position:fixed;box-shadow:0 6px 20px #0009}.menu-list{overflow-y:auto}.menu-title{color:var(--text-dim);border-bottom:1px solid #2a2a2a;margin-bottom:3px;padding:3px 12px 5px;font-size:11px}.menu-item{color:#ddd;white-space:nowrap;align-items:center;gap:6px;height:23px;padding:3px 10px;display:flex}.menu-item:hover,.menu-item.hl{background:var(--sel);color:#fff}.menu-item.disabled{color:#666}.menu-item.disabled:hover{background:0 0}.mi-ic{width:16px;display:flex}.mi-l{flex:1}.mi-k{color:#888;margin-left:18px;font-size:11px}.menu-item:hover .mi-k{color:#ddd}.mi-sub{color:#888}.menu-sep{background:#2c2c2c;height:1px;margin:4px 6px}.menu-hdr{color:#8a8a8a;padding:4px 12px 2px;font-size:11px}.menu-search{-webkit-user-select:text;user-select:text;background:#2a2a2a;border:1px solid #3d3d3d;border-radius:4px;outline:none;height:24px;margin:2px 8px 6px;padding:0 8px}.pie{z-index:100;width:0;height:0;position:fixed}.pie-title{background:var(--menu);color:var(--text-dim);white-space:nowrap;border-radius:4px;padding:3px 10px;position:absolute;transform:translate(-50%,-160px)}.pie-item{background:var(--menu);white-space:nowrap;border-radius:12px;align-items:center;gap:6px;padding:4px 12px;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 3px 10px #00000080}.pie-item.w{transform:translate(-100%,-50%)}.pie-item.e{transform:translateY(-50%)}.pie-item:hover{background:var(--sel)}.pie-item.checked{box-shadow:inset 0 0 0 1px var(--sel)}.pie-center{border:6px solid #181818e6;border-radius:50%;width:36px;height:36px;position:absolute;transform:translate(-50%,-50%)}.pie-dir{transform-origin:0;opacity:0;background:linear-gradient(90deg,#0000 50%,#4772b3 50%);width:24px;height:4px;margin-top:-2px;position:absolute;top:50%;left:50%}.pie-item.hl{background:var(--sel)}.pie-item.disabled{color:#666}.dlg-back{z-index:200;background:#00000059;justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.dlg{background:#232323;border:1px solid #333;border-radius:8px;flex-direction:column;max-width:92vw;max-height:76vh;display:flex;box-shadow:0 10px 40px #0009}.dlg-t{border-bottom:1px solid #333;padding:8px 12px;font-weight:600}.dlg-b{flex-direction:column;gap:6px;padding:10px 12px;display:flex;overflow:auto}.dlg-btns{border-top:1px solid #333;justify-content:flex-end;gap:6px;padding:8px 12px;display:flex}.save-targets{flex-direction:column;gap:4px;display:flex}.save-targets .btn{justify-content:flex-start;height:30px}.cloud-list{flex-direction:column;gap:2px;min-height:60px;max-height:40vh;display:flex;overflow:auto}.cloud-row{border-radius:4px;align-items:center;gap:8px;padding:3px 4px;display:flex}.cloud-row:hover{background:#2c2c2c}.cl-n{flex:1;align-items:center;gap:4px;display:flex;overflow:hidden}.cl-s,.cl-t{color:var(--text-dim);white-space:nowrap;font-size:11px}.reports{z-index:300;pointer-events:none;flex-direction:column;align-items:center;gap:4px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.report{background:#2b2b2b;border-radius:4px;align-items:center;gap:6px;padding:4px 10px;transition:opacity .4s;display:flex;box-shadow:0 3px 10px #00000080}.report.error{background:#8a2b2b}.report.warn{background:#7a5a1c}.report.out{opacity:0}table.keys{border-collapse:collapse;width:100%}table.keys td{border-bottom:1px solid #2c2c2c;padding:2px 8px}table.keys th{text-align:left;color:var(--orange);padding:8px 8px 2px}.p3d-report{background:#252525;border-radius:4px;margin-top:6px;padding:4px 6px}.p3d-row{justify-content:space-between;padding:2px 0;display:flex}.p3d-row.click{cursor:pointer}.p3d-row.click:hover{color:#fff;background:#333}.p3d-v.bad{color:#ff8a5c;font-weight:600}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:4px}::-webkit-scrollbar-track{background:0 0}
