:root{color-scheme:light;--h-font: "Mona Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--h-head: "Hubot Sans Variable", var(--h-font);--h-bg: #f1efe9;--h-panel: #faf9f5;--h-panel2: #f4f2ec;--h-deep: #ebe8e1;--h-deep2: #e7e4dc;--h-border: #dedad0;--h-border2: #d3cec2;--h-btn: #ffffff;--h-btn-border: #cfcabe;--h-btn-hover: #f1eee6;--h-text: #18181b;--h-text2: #3f3f46;--h-muted: #6b675f;--h-muted2: #8f8a7f;--h-faint: #aaa59a;--h-code: #27272a;--h-accent: #18181b;--h-accent-h: #3f3f46;--h-accent2: #8f8a7f;--h-accent-bg: #e4e0d6;--h-on-accent: #ffffff;--h-strong: #09090b;--h-yellow: #8a5a00;--h-blue: #0b5cad;--h-blue2: #2f5597;--h-purple: #6b3fa0;--h-green2: #2e7d4f;--h-ok: #1a7f37;--h-green: #1a7f37;--h-red: #cf222e;--h-amber: #9a6700;--h-err-bg: #fde2e4;--h-err-bg2: #f5b8be;--h-err-text: #8b1a2b;--h-title-shadow: 0 2px 3px rgba(24, 24, 27, .16), 0 8px 22px rgba(24, 24, 27, .18)}:root[data-theme=dark]{color-scheme:dark;--h-bg: #1e1f24;--h-panel: #26272e;--h-panel2: #2e2f37;--h-deep: #1b1c21;--h-deep2: #22232a;--h-border: #3a3b44;--h-border2: #3a3b46;--h-btn: #33343d;--h-btn-border: #4a4b55;--h-btn-hover: #41424d;--h-text: #e6e6e6;--h-text2: #b9bac2;--h-muted: #8a8b94;--h-muted2: #6f7078;--h-faint: #565761;--h-code: #d8dee9;--h-accent: #e6e6e6;--h-accent-h: #ffffff;--h-accent2: #8a8b94;--h-accent-bg: #3a3b44;--h-on-accent: #18181b;--h-strong: #ffffff;--h-yellow: #e8d3a8;--h-blue: #9ecbff;--h-blue2: #9db3d8;--h-purple: #c4a7e7;--h-green2: #a8d5b5;--h-ok: #8fd19e;--h-green: #3fb950;--h-red: #f85149;--h-amber: #e3b341;--h-err-bg: #5c1f2b;--h-err-bg2: #7a2938;--h-err-text: #ffb3c0;--h-title-shadow: 0 2px 3px rgba(0, 0, 0, .45), 0 8px 22px rgba(0, 0, 0, .5)}h1{font-family:var(--h-head);font-weight:800;font-stretch:125%;letter-spacing:-.02em;text-shadow:var(--h-title-shadow)}h1 span,h1 em{text-shadow:inherit;color:var(--h-muted)}.hub-theme{position:fixed;top:14px;right:16px;z-index:9999}.hub-theme button{all:unset;box-sizing:border-box;position:relative;display:block;width:52px;height:22px;border-radius:999px;cursor:pointer;background:linear-gradient(90deg,#f1efe9,#c9c4b7 38%,#3f3f46 62%,#09090b);border:1px solid var(--h-border2);touch-action:none}.hub-theme button:focus-visible{outline:2px solid var(--h-text);outline-offset:3px}.hub-theme i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000059,0 0 0 1px #00000014;transition:left .4s cubic-bezier(.65,0,.35,1)}:root[data-theme=dark] .hub-theme i{left:32px}.hub-theme.dragging i{transition:none}.hub-theme.docked{position:static;flex:none;display:flex;align-items:center;margin-left:6px}[data-hub-theme-slot]{display:contents}@media(prefers-reduced-motion:reduce){.hub-theme i{transition:none}}@media print{.hub-theme{display:none}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--h-bg);color:var(--h-text);font:14px/1.4 var(--h-font);overflow:hidden;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);height:100dvh;overscroll-behavior:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,input,select{font:inherit;color:inherit}.bar{padding-top:max(10px,env(safe-area-inset-top))}.phone-only{display:none!important}.selbar{position:absolute;z-index:4;display:none;gap:2px;padding:4px;border-radius:13px;background:var(--h-accent);color:var(--h-on-accent);box-shadow:0 6px 18px #0000002e;transform:translate(-50%);white-space:nowrap}.selbar.on{display:flex}.selbar button{all:unset;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border-radius:9px;cursor:pointer;font-size:13px}.selbar button:hover{background:#7f7f7f40}.selbar svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.grp{display:contents}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:200px;padding:6px;border-radius:13px;background:var(--h-panel);border:1px solid var(--h-border);box-shadow:0 10px 28px #00000024;display:none}.menu.on{display:block}.menu button{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:8px;cursor:pointer}.menu button:hover{background:var(--h-panel2)}.menu button[hidden]{display:none}.menu svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.menu hr{border:0;border-top:1px solid var(--h-border);margin:5px 4px}.dock{display:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000047;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s}.scrim.on{opacity:1;pointer-events:auto}.sheet-head{display:none}.bar{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--h-border);background:var(--h-panel)}.bar h1{font-size:19px;margin:0 14px 0 2px;white-space:nowrap}.bar .sep{width:1px;height:22px;background:var(--h-border);margin:0 4px}.bar .grow{flex:1}.btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border-radius:9px;border:1px solid var(--h-btn-border);background:var(--h-btn);cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.btn:hover{background:var(--h-btn-hover);border-color:var(--h-text)}.btn:disabled{opacity:.4;cursor:default;border-color:var(--h-btn-border);background:var(--h-btn)}.btn.icon{padding:0;width:32px;justify-content:center}.btn.dark{background:var(--h-accent);color:var(--h-on-accent);border-color:var(--h-accent)}.btn.dark:hover{background:var(--h-accent-h)}.btn.danger:hover{border-color:var(--h-red);color:var(--h-red)}.btn svg,.ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}main{display:grid;grid-template-columns:252px 1fr 248px;min-height:0}aside{background:var(--h-panel);overflow-y:auto;min-height:0}.pal{border-right:1px solid var(--h-border);padding:12px 12px 24px}.insp{border-left:1px solid var(--h-border);padding:14px}.sec{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--h-muted);margin:14px 2px 8px}.sec:first-child{margin-top:2px}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tile{display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;padding:8px 6px 7px;border-radius:12px;border:1px solid var(--h-border);background:var(--h-panel2);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;text-align:left;min-width:0;transition:transform .15s,border-color .15s,box-shadow .15s}.tile:hover{border-color:var(--h-text);transform:translateY(-1px);box-shadow:0 4px 10px #0000000f}.tile:focus-visible{outline:2px solid var(--h-text);outline-offset:2px}.tile:active{cursor:grabbing}.tile .pv{width:34px;height:34px;flex:none;border-radius:8px;background:var(--h-btn);border:1px solid var(--h-border);box-shadow:0 1px 0 var(--h-border2),inset 0 1px #ffffff80;display:grid;place-items:center}.tile .pv svg{width:28px;height:28px}.tile b{display:block;font-weight:550;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile small{display:block;font-size:11px;color:var(--h-muted)}.tile span{min-width:0;max-width:100%}.stage{position:relative;min-width:0;min-height:0;overflow:hidden}#cv{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;cursor:default;-webkit-user-select:none;user-select:none}#cv.panning{cursor:grabbing}.float{position:absolute;display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--h-panel);border:1px solid var(--h-border);box-shadow:0 4px 14px #00000014}.zoom{right:14px;bottom:14px}.zoom .btn{border:0;height:30px}.status{left:14px;bottom:14px;padding:6px 12px;font-size:12.5px;color:var(--h-text2)}.hint.gone{opacity:0}.hint{left:50%;top:14px;transform:translate(-50%);padding:7px 14px;font-size:12.5px;color:var(--h-text2);white-space:nowrap;pointer-events:none}.toast{left:50%;bottom:70px;transform:translate(-50%);padding:8px 14px;font-size:13px;background:var(--h-accent);color:var(--h-on-accent);border:0;opacity:0;transition:opacity .2s;pointer-events:none}.toast.on{opacity:1}kbd{font:11px var(--h-font);padding:1px 5px;border-radius:5px;border:1px solid var(--h-border2);background:var(--h-btn)}.insp h2{font-family:var(--h-head);font-stretch:112%;font-weight:750;font-size:16px;margin:0 0 2px}.insp .sub{color:var(--h-muted);font-size:12.5px;margin-bottom:14px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--h-muted);margin-bottom:4px}.field input[type=text],.field input[type=number]{width:100%;height:34px;padding:0 10px;border-radius:9px;border:1px solid var(--h-btn-border);background:var(--h-btn)}.field input:focus{outline:2px solid var(--h-text);outline-offset:-1px;border-color:transparent}.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.unit{position:relative}.unit input{padding-right:26px!important}.unit:after{content:"m";position:absolute;right:10px;top:8px;color:var(--h-muted);font-size:13px;pointer-events:none}.unit.cm:after{content:"cm"}.sw{display:flex;gap:6px;flex-wrap:wrap}.sw button{width:28px;height:28px;border-radius:8px;border:1px solid var(--h-border2);cursor:pointer;padding:0;position:relative;background-clip:padding-box}.sw button.on{outline:2px solid var(--h-text);outline-offset:2px}.acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.big{font-family:var(--h-head);font-stretch:112%;font-weight:750;font-size:30px;letter-spacing:-.01em;line-height:1.1}.list{margin:12px 0 0;padding:0;list-style:none;border-top:1px solid var(--h-border)}.list li{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid var(--h-border);cursor:pointer;border-radius:6px}.list li:hover{background:var(--h-panel2)}.list li i{width:12px;height:12px;border-radius:4px;border:1px solid var(--h-border2);flex:none}.list li span{flex:1}.list li em{font-style:normal;color:var(--h-muted);font-variant-numeric:tabular-nums}.keys{margin-top:18px;font-size:12px;color:var(--h-muted);line-height:2}@media(max-width:860px){.phone-only{display:revert!important}main{grid-template-columns:minmax(0,1fr)}.bar{gap:4px;padding:max(8px,env(safe-area-inset-top)) 10px 8px}.bar .sep{display:none}.bar .btn{height:38px}.bar .btn.icon{width:38px}.bar .btn:not(.icon){padding:0 10px}.bar .lbl{display:none}.bar h1{font-size:16px;margin-right:4px}.hint{top:auto;bottom:70px;white-space:normal;text-align:center;width:max-content;max-width:calc(100% - 32px)}.hint.hide{display:none}.status{top:10px;bottom:auto;left:10px;cursor:pointer;pointer-events:auto}.zoom{top:10px;bottom:auto;right:10px}.zoom .btn{height:36px;width:36px}.toast{bottom:20px}.selbar button{height:40px;padding:0 12px;font-size:14px}.dock{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px 10px max(8px,env(safe-area-inset-bottom));background:var(--h-panel);border-top:1px solid var(--h-border)}.dock button{all:unset;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 6px;border-radius:12px;border:1px solid var(--h-border);background:var(--h-panel2);font-size:12.5px;font-weight:550;cursor:pointer;text-align:center}.dock button:active{background:var(--h-deep)}.dock svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.pal,.insp{position:fixed;left:0;right:0;bottom:0;z-index:21;max-height:72dvh;border:0;border-top:1px solid var(--h-border);border-radius:18px 18px 0 0;box-shadow:0 -10px 30px #00000029;padding:0 14px max(18px,env(safe-area-inset-bottom));transform:translateY(105%);transition:transform .28s cubic-bezier(.3,.8,.3,1);overflow-y:auto;overscroll-behavior:contain}.pal.open,.insp.open{transform:none}.sheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1;background:var(--h-panel);padding:14px 0 6px;margin-bottom:4px}.sheet-head:before{content:"";position:absolute;left:50%;top:6px;width:36px;height:4px;margin-left:-18px;border-radius:4px;background:var(--h-border2)}.sheet-head h2{font-family:var(--h-head);font-stretch:112%;font-weight:750;font-size:17px;margin:0}.pal .grp{display:none}.pal .sheet-head+.sec{display:none}.pal .grp.on{display:block}.tiles{grid-template-columns:repeat(3,1fr);gap:8px}.tile{padding:10px 4px 8px;touch-action:pan-y;cursor:pointer}.tile .pv{width:44px;height:44px}.tile .pv svg{width:34px;height:34px}.tile b{font-size:13px}.field input[type=text],.field input[type=number]{height:42px;font-size:16px}.acts .btn{height:40px;padding:0 14px}.keys{display:none}}@media(max-width:360px){.bar h1{display:none}}@media(max-width:420px){.selbar span{display:none}.selbar button{padding:0 13px}.selbar svg{width:20px;height:20px}}#open3d .lbl3{font-weight:600}#open3d.loading{animation:pulse .9s ease-in-out infinite alternate;opacity:1}@keyframes pulse{0%{opacity:1}to{opacity:.45}}@media(prefers-reduced-motion:reduce){#open3d.loading{animation:none;opacity:.6}}
