:root{--bg: #10141a;--panel-bg: #171d26;--panel-2: #1e2631;--border: #2a3442;--text: #dce3ec;--text-dim: #8b98a8;--accent: #4f9cf9;--accent-2: #3b82f6;--ok: #27ae60;--warn: #e6a23c;--bad: #e5533d;--x-col: #e5533d;--y-col: #35c38a;--z-col: #3aa0e4;--panel: var(--panel-bg);--line: var(--border);--line-2: var(--border);--danger: var(--bad);--muted: var(--text-dim);--radius: 6px;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.45;overflow:hidden}button,input,select{font:inherit;color:inherit}.app{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:16px;min-height:52px;padding:6px 14px;background:var(--panel-bg);border-bottom:1px solid var(--border);flex:none}.toolbar__brand{display:flex;flex-direction:column;justify-content:center;min-width:0}.toolbar__name{font-size:16px;font-weight:600;letter-spacing:.3px;line-height:1.15}.toolbar__subtitle{color:var(--text-dim);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar__stats{display:flex;align-items:center;gap:14px;margin-left:auto;color:var(--text-dim);font-size:12px}.toolbar__actions{display:flex;align-items:center;gap:8px}.stat{font-variant-numeric:tabular-nums}.pill{padding:2px 9px;border-radius:999px;border:1px solid var(--border);font-size:11px;text-transform:lowercase}.pill--idle{color:var(--ok);border-color:#27ae6073}.pill--computing,.pill--boot{color:var(--warn);border-color:#e6a23c80}.pill--error{color:var(--bad);border-color:#e5533d80}.errorbar{flex:none;padding:7px 14px;background:#e5533d1f;border-bottom:1px solid rgba(229,83,61,.4);color:#f0a0a0;font-size:12px;white-space:pre-wrap}.app__main{position:relative;display:grid;grid-template-columns:340px minmax(0,1fr) 360px;transition:grid-template-columns .2s ease;flex:1;min-height:0}.app__main.is-collapsed-left{grid-template-columns:0 minmax(0,1fr) 360px}.app__main.is-collapsed-right{grid-template-columns:340px minmax(0,1fr) 0}.app__main.is-collapsed-left.is-collapsed-right{grid-template-columns:0 minmax(0,1fr) 0}.app__backdrop{position:absolute;inset:0;z-index:20;background:#080b0f8c;backdrop-filter:blur(1px)}.app__side{min-width:0;min-height:0;overflow:hidden;background:var(--panel-bg);display:flex}.app__side--left{border-right:1px solid var(--border)}.app__side--right{border-left:1px solid var(--border)}.app__center{min-width:0;min-height:0;position:relative}.panel{display:flex;flex-direction:column;width:100%;min-height:0}.panel__head{flex:none;min-height:36px;display:flex;align-items:center;gap:8px;padding:0 14px;font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--text-dim);border-bottom:1px solid var(--border);background:var(--panel-bg)}.panel__head>span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel__head-sub{margin-left:auto;text-transform:none;letter-spacing:0;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel__close{flex:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text-dim);font-size:12px;line-height:1;cursor:pointer}.panel__close:hover{background:var(--panel-2);border-color:var(--border);color:var(--text)}.panel__body{flex:1;min-height:0;overflow:auto;padding:12px 14px 40px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.viewport{position:absolute;inset:0}.viewport canvas{display:block}.viewport__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-dim);pointer-events:none;background:radial-gradient(ellipse at center,#12161b00 40%,#12161bbf)}.viewport__overlay--muted span{font-size:12px}.viewport__hud{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:12px}.viewport__hud-row{display:flex;align-items:center;gap:8px}.hud-badge{font-size:13px;padding:6px 10px;border-radius:5px;background:var(--accent);color:#fff}.hud-hint{font-size:13px;padding:6px 10px;border-radius:5px;background:var(--border);color:var(--text);white-space:nowrap}.hud-hint--dim{opacity:.7}.hud-close{font-size:13px;padding:6px 10px;border:1px solid var(--border);border-radius:5px;background:var(--panel-2);color:var(--text);cursor:pointer;white-space:nowrap}.hud-close:hover{border-color:var(--accent);color:var(--accent)}.viewport__hud-result{font-size:14px;color:var(--text)}.viewport__hud-result strong{color:var(--accent)}.btn{background:var(--border);border:1px solid transparent;border-radius:5px;padding:6px 10px;cursor:pointer;color:var(--text);font-size:13px;transition:background .15s,border-color .15s;white-space:nowrap}.btn:hover:not(:disabled){background:#33404f}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:#6fb0ff;border-color:#6fb0ff}.btn--ghost{background:transparent}.btn--icon{padding:3px 7px;line-height:1;background:transparent;border-color:transparent;color:var(--text-dim)}.btn--icon:hover:not(:disabled){color:var(--text);background:transparent}.btn--danger:hover:not(:disabled){color:var(--bad)}.btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.btn--seg{flex:1 1 auto;justify-content:center;font-size:12px;padding:4px 6px}.btn--seg.is-active{background:#4f9cf92e;border-color:var(--accent);color:var(--accent)}.no-wrap{white-space:nowrap}.input{background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:5px 8px;width:100%;outline:none}.input:focus{border-color:var(--accent-2)}.input--num{width:100%;font-variant-numeric:tabular-nums;font-size:13px}select.input,select{background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:5px 8px;color:var(--text);font-size:13px;outline:none}select:focus{border-color:var(--accent-2)}input[type=checkbox]{accent-color:var(--accent)}.tree{padding:6px 4px}.tree__subtree{position:relative}.tree__row{position:relative;display:flex;align-items:center;gap:6px;padding:3px 6px;margin-right:4px;border-radius:5px;cursor:default;border:1px solid transparent}.tree__row:hover{background:#ffffff0d}.tree__row.is-selected{background:#4f9cf929;border-color:#4f9cf959}.tree__row.is-disabled{opacity:.45}.tree__twist{width:16px;flex:none;background:none;border:none;color:var(--text-dim);cursor:pointer;padding:0}.tree__icon{color:var(--accent);flex:none;font-size:12px}.tree__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree__summary{font-variant-numeric:tabular-nums;font-size:11px;color:var(--text-dim);white-space:nowrap}.tree__actions{display:none;gap:1px;flex:none}.tree__row:hover .tree__actions,.tree__row.is-selected .tree__actions{display:inline-flex}.tree__row:hover .tree__summary,.tree__row.is-selected .tree__summary{display:none}.tree__slot{position:relative;display:flex;align-items:center;gap:8px;margin-right:4px;padding:2px 6px;color:var(--text-dim);font-size:12px}.tree__slot--empty{border:1px dashed var(--border);border-radius:5px;margin-top:2px}.tree__slot-label{flex:1}.tree__empty{padding:14px 10px;color:var(--text-dim)}.tree__empty-actions{display:flex;flex-direction:column;gap:6px;margin-top:10px}.menu{position:absolute;top:100%;left:8px;z-index:40;min-width:210px;background:var(--panel-bg);border:1px solid var(--border);border-radius:8px;padding:6px;box-shadow:0 14px 34px #0000008c}.menu__group+.menu__group{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.menu__title{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);padding:2px 6px 4px}.menu__item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:6px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text);cursor:pointer}.menu__item:hover{background:#4f9cf929}.params{display:flex;flex-direction:column;gap:12px}.params__hint{margin:0;color:var(--text-dim);font-size:12px;line-height:1.5}.params__footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:10px;border-top:1px solid var(--border)}.params__type{font-variant-numeric:tabular-nums;font-size:12px;color:var(--text-dim)}.field{display:flex;flex-direction:column;gap:4px}.field__label{font-size:12px;color:var(--text-dim)}.field__control{display:flex;align-items:center;gap:6px}.field__unit{font-size:12px;color:var(--text-dim)}.field__vec{display:flex;gap:6px;width:100%}.field__vec-item{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.field__axis{font-size:11px;color:var(--text-dim)}.field input[type=checkbox]{width:15px;height:15px}.toolbar__group{display:flex;align-items:center;gap:4px}.toolbar__group .check{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-dim);cursor:pointer;user-select:none;white-space:nowrap;padding:4px 9px;border:1px solid var(--border);border-radius:5px;background:var(--panel-2)}.toolbar__group .check:hover{border-color:var(--accent)}.toolbar__group .check input{width:14px;height:14px;margin:0}.sketch{display:flex;flex-direction:column;gap:8px;width:100%}.sketch__bar{display:flex;flex-wrap:wrap;gap:6px}.sketch__hint{margin:0;font-size:12px;color:var(--text-dim)}.sketch__canvas{position:relative;width:100%;height:min(44vh,340px);min-height:160px}.sketch__svg{border:1px solid var(--border);border-radius:6px;display:block;touch-action:none}.sketch__footer{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim)}.sketch__dim{color:var(--text-dim)}.shape{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.shape__kinds{display:flex;flex-wrap:wrap;gap:4px}.shape__presets{display:flex;gap:4px}.verts{display:flex;flex-direction:column;gap:4px}.verts__head,.verts__row{display:grid;grid-template-columns:22px 1fr 1fr 26px;gap:6px;align-items:center}.verts__head{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em}.verts__idx{text-align:center;font-size:12px;color:var(--text-dim)}.verts__col{font-size:10px}.verts__input{width:100%;padding:3px 6px;font-size:12px}.build{display:flex;flex-direction:column;gap:12px}.build__section{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.build__title{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--text);margin-bottom:2px}.build__row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:6px;border-radius:5px;border:1px solid transparent;background:none;color:var(--text);cursor:pointer;min-width:0}.build__row:hover{background:#ffffff0d}.build__row.is-active{background:#4f9cf929;border-color:#4f9cf959}.build__row.is-off{opacity:.5}.build__icon{color:var(--accent);flex:none;font-size:14px;width:18px;text-align:center}.build__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.build__sub{font-size:11px;color:var(--text-dim);white-space:nowrap}.build__row-actions{display:flex;align-items:center;gap:4px;flex:none}.build__row-actions select{font-size:11px;padding:2px 4px}.build__checkbox{display:flex;align-items:center;flex:none}.build__checkbox input{width:14px;height:14px;margin:0}.build__addrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}.build__pill{font-size:11px;color:var(--text-dim);padding:2px 7px;border:1px solid var(--border);border-radius:999px}.build__empty{padding:6px 4px;color:var(--text-dim);font-size:12px;font-style:italic}.build__foot{margin-top:auto;padding:10px 2px 4px;border-top:1px solid var(--border)}.wall-contour{display:flex;flex-direction:column;gap:6px;border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--panel-2)}.wall-contour__head{display:flex;align-items:center;gap:6px}.wall-contour__sub{font-size:11px;color:var(--text-dim);white-space:nowrap}.wall-contour__body{display:flex;flex-direction:column;gap:8px}.text-sec{display:flex;flex-direction:column;gap:10px;margin-top:6px;padding-top:10px;border-top:1px dashed var(--border)}.text-item{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--panel-2)}.text-item__head{display:flex;align-items:center;gap:6px}.text-item__head .input{flex:1;min-width:0}.collapse__twist{flex:none;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;padding:0;font-size:11px;line-height:1}.collapse__twist:hover{background:var(--panel-2);color:var(--text)}.panel__body::-webkit-scrollbar{width:10px}.panel__body::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px;border:2px solid var(--panel-bg)}.panel__body::-webkit-scrollbar-track{background:transparent}@media(max-width:1100px){.toolbar__subtitle{display:none}}@media(max-width:820px){.toolbar{flex-wrap:wrap;min-height:52px;gap:6px;padding:6px 10px}.toolbar__stats{display:none}.toolbar__actions{margin-left:auto}.app__main,.app__main.is-collapsed-left,.app__main.is-collapsed-right,.app__main.is-collapsed-left.is-collapsed-right{grid-template-columns:minmax(0,1fr)}.app__center{grid-column:1;grid-row:1}.app__side{position:absolute;top:0;bottom:0;z-index:30}.app__side--left{left:0;width:min(340px,92vw)}.app__side--right{right:0;width:min(360px,92vw)}}@media(prefers-reduced-motion:reduce){.app__main{transition:none}}
