:root{--chrome: #1b1d21;--panel: #202328;--panel-2: #272b31;--field: #16181b;--line: #33373e;--line-soft: #2a2d33;--text: #d8dbe0;--muted: #8b929c;--accent: #d9a441;--accent-hover: #e6b65a;--accent-ink: #1b1d21;--danger: #e06a66;--x: #e0524f;--y: #5dbb63;--z: #4f8fe6;--radius: 5px;--font: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--num: ui-monospace, "Cascadia Mono", Consolas, "SF Mono", monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:13px;line-height:1.4;color:var(--text);background:var(--chrome);-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.4}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}kbd{font-family:var(--num);font-size:11px;color:var(--muted);background:var(--field);border:1px solid var(--line);border-radius:3px;padding:0 5px}code{font-family:var(--num);color:var(--accent)}.muted{color:var(--muted)}.hint{color:var(--muted);font-size:12px;margin:8px 0 0}.app{display:grid;grid-template-rows:44px 1fr 30px;height:100%}.workspace{display:grid;grid-template-columns:208px 1fr 272px;min-height:0}.panel{background:var(--panel);overflow-y:auto;min-height:0}.library{border-right:1px solid var(--line)}.props{border-left:1px solid var(--line);overflow-x:hidden}.panel-title{font-size:12px;font-weight:600;color:var(--muted);margin:0;padding:12px 12px 8px;display:flex;align-items:center;gap:6px}.panel-title .count{font-weight:400;font-family:var(--num)}.menubar{display:flex;align-items:center;gap:6px;padding:0 10px;background:var(--chrome);border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:7px;font-weight:700;font-size:15px;letter-spacing:.02em;margin-right:10px}.menus{display:flex}.menu{position:relative}.menu-btn{background:none;border:0;padding:6px 10px;border-radius:var(--radius)}.menu-btn:hover,.menu-btn.open{background:var(--panel-2)}.menu-pop{position:absolute;top:calc(100% + 4px);left:0;min-width:220px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:4px;box-shadow:0 10px 28px #00000073}.menu-pop button{display:flex;width:100%;justify-content:space-between;align-items:center;gap:16px;background:none;border:0;padding:6px 8px;border-radius:3px;text-align:left}.menu-pop button:not(:disabled):hover{background:var(--accent);color:var(--accent-ink)}.menu-pop button:not(:disabled):hover kbd{color:var(--accent-ink);background:transparent;border-color:#00000040}.menu-pop hr{border:0;border-top:1px solid var(--line);margin:4px 2px}.tool-group{display:flex;gap:2px;padding-left:8px;margin-left:4px;border-left:1px solid var(--line)}.tool-btn{display:grid;place-items:center;width:32px;height:30px;background:none;border:1px solid transparent;border-radius:var(--radius);color:var(--muted)}.tool-btn:not(:disabled):hover{color:var(--text);background:var(--panel-2)}.tool-btn.active{color:var(--accent);background:var(--panel-2);border-color:var(--line)}.spacer{flex:1}.file-name{color:var(--muted);display:flex;align-items:center;gap:6px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dirty-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);display:inline-block;flex:none}.primary-btn{background:var(--accent);color:var(--accent-ink);border:0;border-radius:var(--radius);padding:6px 14px;font-weight:600}.primary-btn:not(:disabled):hover{background:var(--accent-hover)}.shape-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 10px 12px}.shape-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 2px 8px;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--radius);color:var(--text);font-size:11.5px}.shape-btn svg{color:var(--accent)}.shape-btn:hover{border-color:var(--accent)}.object-list-section{border-top:1px solid var(--line)}.object-list{list-style:none;margin:0;padding:0 6px 12px}.object-list li{display:flex;align-items:center;border-radius:3px}.object-list li:hover{background:var(--panel-2)}.object-list li.selected{background:#3a3222}.obj-name{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:none;border:0;padding:5px 6px;text-align:left}.obj-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.obj-name svg{color:var(--muted);flex:none}.swatch{width:10px;height:10px;border-radius:2px;flex:none}.icon-btn{background:none;border:0;color:var(--muted);padding:4px 6px;display:grid;place-items:center;border-radius:3px}.icon-btn:hover{color:var(--text)}.library .hint{padding:0 12px;margin:0}.viewport{position:relative;min-width:0;min-height:0;overflow:hidden;background:#24272d}.viewport-canvas{display:block;width:100%;height:100%;touch-action:none}.view-buttons{position:absolute;top:10px;right:10px;display:flex;background:#1b1d21d9;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.view-buttons button{background:none;border:0;padding:5px 10px;color:var(--muted);font-size:12px}.view-buttons button+button{border-left:1px solid var(--line)}.view-buttons button:hover{color:var(--text);background:var(--panel-2)}.viewport-error{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;padding:24px;max-width:480px;margin:auto}.empty-state{padding:0 12px;color:var(--muted)}.prop-section{padding:10px 12px 12px;border-top:1px solid var(--line-soft)}.prop-section:first-of-type{border-top:0;padding-top:2px}.prop-section h3{font-size:12px;font-weight:600;margin:0 0 8px;color:var(--text)}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.section-head h3{margin:0}.type-tag{margin:6px 0 0;font-size:12px;color:var(--muted)}.text-field{display:grid;gap:4px}.text-field>span{color:var(--muted);font-size:12px}.text-field input,.with-suffix{background:var(--field);border:1px solid var(--line);border-radius:4px;padding:5px 8px;width:100%}.with-suffix{display:flex;align-items:center;padding:0 8px 0 0}.with-suffix input{border:0;background:none;flex:1;padding:5px 8px;min-width:0}.with-suffix span{color:var(--muted)}.text-field input:focus,.with-suffix:focus-within{border-color:var(--accent);outline:none}.nf{display:grid;grid-template-columns:64px 1fr auto;align-items:center;background:var(--field);border:1px solid var(--line);border-radius:4px;margin-bottom:4px;position:relative}.nf:focus-within{border-color:var(--accent)}.nf-label{padding-left:9px;color:var(--muted);font-size:12px}.nf-x .nf-label,.nf-y .nf-label,.nf-z .nf-label{border-left:2px solid;padding-left:7px;line-height:1}.nf-x .nf-label{border-color:var(--x)}.nf-y .nf-label{border-color:var(--y)}.nf-z .nf-label{border-color:var(--z)}.nf input{background:none;border:0;padding:5px 4px;text-align:right;font-family:var(--num);font-size:12.5px;min-width:0;width:100%}.nf input:focus{outline:none}.nf input:disabled{color:var(--muted)}.nf-unit{padding:0 8px 0 4px;color:var(--muted);font-size:11.5px;min-width:28px}.scale-note{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--muted);font-family:var(--num);margin-top:6px}.link-btn{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:2px;font-family:var(--font)}.check{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.check input{accent-color:var(--accent);margin:0}.toggles{display:flex;gap:18px}.swatches{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.swatch-btn{width:22px;height:22px;border-radius:4px;border:1px solid rgb(255 255 255 / .12);padding:0}.swatch-btn.active{outline:2px solid var(--text);outline-offset:1px}.swatch-custom{width:22px;height:22px;border-radius:4px;border:1px dashed var(--muted);position:relative;overflow:hidden;background:conic-gradient(#e0524f,#d9a441,#5dbb63,#4f8fe6,#9b7bd4,#e0524f);cursor:pointer}.swatch-custom input{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;cursor:pointer}.range-field{display:grid;grid-template-columns:64px 1fr 40px;align-items:center;gap:6px}.range-field>span:first-child{color:var(--muted);font-size:12px}.range-field input{accent-color:var(--accent);min-width:0;width:100%}.range-val{font-family:var(--num);font-size:12px;text-align:right}.btn-row{display:flex;gap:6px;margin-bottom:6px}.btn-row button,.dialog-foot button:not(.primary-btn){flex:1;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px}.btn-row button:not(:disabled):hover,.dialog-foot button:not(.primary-btn):hover{border-color:var(--muted)}.btn-row .danger{color:var(--danger)}.multi-count{margin:0 0 10px}.statusbar{display:flex;align-items:center;gap:10px;padding:0 10px;border-top:1px solid var(--line);background:var(--chrome);font-size:12px;color:var(--muted);white-space:nowrap;overflow-x:auto}.statusbar select{background:var(--field);border:1px solid var(--line);border-radius:3px;padding:1px 4px;font-size:12px}.statusbar .inline{display:inline-flex;gap:6px;align-items:center}.statusbar .sep{width:1px;height:14px;background:var(--line)}.text-btn{background:none;border:0;padding:2px 4px;color:var(--muted);font-size:12px;text-decoration:underline dotted;text-underline-offset:3px}.text-btn:hover{color:var(--text)}.sel-info{font-family:var(--num);color:var(--text);white-space:pre}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:50;padding:16px}.dialog{width:min(460px,100%);max-height:90vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 60px #00000080}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.dialog-head h2{font-size:14px;margin:0}.dialog-body{padding:14px;overflow-y:auto;display:grid;gap:14px}.dialog-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 14px;border-top:1px solid var(--line)}.dialog-foot button{flex:none!important;padding:6px 14px!important}.radio-group{border:0;padding:0;margin:0;display:grid;gap:6px}.radio-group legend{color:var(--muted);font-size:12px;margin-bottom:6px;padding:0}.radio-group label{display:flex;gap:8px;align-items:center}.radio-group input{accent-color:var(--accent);margin:0}.export-summary p{margin:0;font-family:var(--num);font-size:12px}.checks{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:12.5px}.checks li{padding:7px 10px;border-radius:4px;border-left:3px solid;background:var(--field)}.checks .ok{border-color:var(--y)}.checks .warn{border-color:var(--accent)}.checks .info{border-color:var(--z);color:var(--muted)}.error{color:var(--danger);margin:0}.shortcut-table{border-collapse:collapse;width:100%}.shortcut-table td{padding:4px 6px;border-bottom:1px solid var(--line-soft)}.shortcut-table td:first-child{white-space:nowrap;width:1%}@media (max-width: 1000px){.workspace{grid-template-columns:172px 1fr 244px}.file-name{display:none}}@media (max-width: 760px){.app{grid-template-rows:auto 1fr auto}.menubar{flex-wrap:wrap;padding:4px 8px}.brand span{display:none}.workspace{grid-template-columns:1fr;grid-template-rows:55vh auto auto;overflow-y:auto}.viewport{grid-row:1}.library{grid-row:2;border:0;border-top:1px solid var(--line)}.props{grid-row:3;border:0;border-top:1px solid var(--line);overflow:visible}.panel{overflow:visible}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.tool-btn.wide{width:auto;gap:5px;padding:0 8px;display:inline-flex;align-items:center;font-size:12px}.tool-btn.wide span{line-height:1}.import-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:calc(100% - 20px);margin:0 10px 12px;padding:6px;background:none;border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);font-size:12px}.import-btn:hover{color:var(--text);border-color:var(--muted)}.object-tree,.object-tree ul{list-style:none;margin:0;padding:0}.object-tree{padding:0 6px 16px}.tree-empty{padding:0 12px;margin:0}.tree-row{display:flex;align-items:center;border-radius:3px;position:relative}.tree-row:hover{background:var(--panel-2)}.tree-row.selected{background:#3a3222}.tree-row.indent{padding-left:18px}.tree-row.drop{box-shadow:inset 0 2px 0 var(--accent)}.tree-row .obj-name{gap:7px}.tree-rename{flex:1;min-width:0;background:var(--field);border:1px solid var(--accent);border-radius:3px;padding:1px 4px;font:inherit}.type-badge{font-style:normal;font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 4px;line-height:14px}.row-actions{display:flex;flex:none}.row-actions .icon-btn{padding:4px}.row-actions .icon-btn.on{color:var(--accent)}.tree-row .hover-only{opacity:0}.tree-row:hover .hover-only,.tree-row .hover-only:focus-visible{opacity:1}.group-row .obj-name span{font-weight:600}.icon-btn.chevron{padding:4px 2px 4px 4px}.seg{display:flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:6px}.seg button{flex:1;background:var(--panel-2);border:0;padding:5px 4px;font-size:12px}.seg button+button{border-left:1px solid var(--line)}.seg button:not(:disabled):hover{background:#30353c}.seg button.active{background:var(--accent);color:var(--accent-ink);font-weight:600}.align-row{display:grid;grid-template-columns:18px 1fr;align-items:center;gap:6px}.axis-tag{font-size:11px;font-weight:700}.axis-x{color:var(--x)}.axis-y{color:var(--y)}.axis-z{color:var(--z)}.indent-block{padding:6px 0 0 22px}.field-caption{margin:0 0 6px}.context-menu{position:fixed;top:0;left:0;z-index:60;min-width:210px;max-height:calc(100vh - 12px);overflow-y:auto}.menu-pop button.danger:not(:disabled){color:var(--danger)}.menu-pop button.danger:not(:disabled):hover{background:var(--danger);color:#fff}.busy-overlay{position:absolute;left:50%;top:16px;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:8px 14px;box-shadow:0 8px 24px #0006}.spinner{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.notice-text{margin:0}.error-text{color:var(--text)}.cause-list{margin:4px 0 0;padding-left:18px;color:var(--muted)}.dialog-foot button:disabled{opacity:.4}.dialog-backdrop.docked{background:none;pointer-events:none;place-items:start end;padding:56px 290px 0 0}.dialog-backdrop.docked .dialog{pointer-events:auto;width:min(360px,100%);max-height:calc(100vh - 110px)}@media (max-width: 760px){.dialog-backdrop.docked{place-items:end center;padding:0 8px 8px}.dialog-backdrop.docked .dialog{max-height:55vh}}.library .panel-title+.shape-grid{padding-bottom:8px}.shape-btn{padding:8px 2px 6px;font-size:11px}.marquee{position:absolute;border:1px solid var(--accent);background:#d9a4411f;pointer-events:none;z-index:5}.param-block{margin-bottom:2px}.param-hint{margin:0 0 6px;font-size:11.5px}.convert-btn{margin-top:4px;font-size:12px}.info-list{margin:8px 0 0;display:grid;grid-template-columns:1fr auto;gap:3px 10px;font-size:12px}.info-list dt{color:var(--muted)}.info-list dd{margin:0;font-family:var(--num);text-align:right}.info-row{display:contents}.select{background:var(--field);border:1px solid var(--line);border-radius:4px;padding:5px 6px;width:100%}.measure-panel{position:absolute;left:12px;top:12px;width:280px;background:#202328f5;border:1px solid var(--line);border-radius:8px;padding:10px 12px;box-shadow:0 10px 28px #0006;z-index:6}.measure-head{display:grid;gap:8px;margin-bottom:8px}.measure-head .seg{margin:0}.measure-main{display:flex;justify-content:space-between;align-items:baseline;margin:4px 0 0}.measure-main span{color:var(--muted);font-size:12px}.measure-main strong{font-family:var(--num);font-size:18px;color:#ffd166}.measure-foot{display:flex;justify-content:space-between;margin-top:10px;font-size:12px}.measure-panel .hint{margin:4px 0 0}.verdict{margin:0;font-weight:600;font-size:14px;padding:8px 10px;border-radius:5px;background:var(--field)}.verdict.good{color:var(--y)}.verdict.meh{color:var(--accent)}.verdict.bad{color:var(--danger)}.checks .bad{border-color:var(--danger)}.issue-icon{display:inline-grid;place-items:center;width:16px;height:16px;font-size:11px;font-weight:700;margin-right:4px}.checks .bad .issue-icon{color:var(--danger)}.checks .warn .issue-icon{color:var(--accent)}.checks .info .issue-icon{color:var(--z);font-style:italic}.spinner.inline{display:inline-block;vertical-align:-2px;margin-right:6px}.sketching .menubar{background:#1d2127;border-bottom-color:#3b4452}.mode-pill{background:#4f8fe629;color:#9cc2f2;border:1px solid rgb(79 143 230 / .4);border-radius:999px;padding:2px 10px;font-size:12px;white-space:nowrap}.sketch-btn{color:var(--text)}.auto-toggle{font-size:12px;padding:0 6px;color:var(--muted)}.later-tools{position:relative;margin-left:6px}.later-tools summary{list-style:none;cursor:pointer;color:var(--muted);font-size:12px;padding:6px 8px;border-radius:var(--radius)}.later-tools summary::-webkit-details-marker{display:none}.later-tools summary:hover{background:var(--panel-2);color:var(--text)}.later-tools .menu-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:30;min-width:180px}.later-tools .menu-pop button{opacity:.55}.sketch-side .prop-section:first-child{padding-top:12px}.obj-name.static{cursor:default}.tree-row .edit-sketch{font-size:11px;color:var(--accent);padding:2px 6px}.sketch-row .obj-name svg{color:#7fa6cc}.warn-text{color:var(--accent)}.plane-list{display:grid;gap:8px}.plane-btn{display:flex;gap:12px;align-items:center;text-align:left;padding:10px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:6px}.plane-btn:hover,.plane-btn:focus-visible{border-color:var(--accent)}.plane-btn span{display:grid;gap:2px}.plane-btn small{color:var(--muted);font-size:12px}.sk-labels{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:4}.sk-label{position:absolute;left:0;top:0;font-size:11px;line-height:1;padding:2px 4px;border-radius:3px;white-space:nowrap;font-family:var(--num)}.sk-label.dim{background:#1b1d21e6;color:#ffd166;border:1px solid rgb(255 209 102 / .4)}.sk-label.glyph{color:#9cc2f2;font-weight:700;background:#1b1d21b3}.sk-readout{position:absolute;display:none;pointer-events:none;z-index:7;background:#1b1d21eb;border:1px solid var(--line);border-radius:4px;padding:3px 7px;font-family:var(--num);font-size:12px;white-space:nowrap}.sk-readout b{color:#5dbb63;margin-left:4px}.app{grid-template-columns:minmax(0,1fr)}.menubar{min-width:0}.menubar .menus,.menubar .tool-group,.menubar .primary-btn,.menubar .brand{flex:none}@media (max-width: 1560px){.menubar:not(.sketchbar) .tool-btn.wide:not(.sketch-btn) span{display:none}.menubar:not(.sketchbar) .tool-btn.wide:not(.sketch-btn){width:32px;padding:0;justify-content:center}}@media (max-width: 1200px){.sketchbar .auto-toggle,.file-name{display:none}}.info-list dt{min-width:0}.info-list dd{overflow-wrap:anywhere}.sketch-row .row-actions .edit-sketch{opacity:0}.sketch-row:hover .row-actions .edit-sketch,.sketch-row.selected .row-actions .edit-sketch,.sketch-row .edit-sketch:focus-visible{opacity:1}.tree-row .obj-name,.tree-row .obj-name span{min-width:0}.tree-heading{list-style:none;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:10px 6px 4px}.tree-spacer{width:20px;flex:none}.feature-row .obj-name svg{color:var(--accent)}.body-badge{color:#9cc2f2;border-color:#4f8fe666}.err-badge{font-style:normal;color:var(--danger);font-weight:700}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:12px}.chip:hover{border-color:var(--accent);color:var(--accent)}.tool-hint{color:var(--muted);font-size:12px;margin-right:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sk-editor{position:absolute;z-index:8;display:flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--accent);border-radius:5px;padding:4px 8px;box-shadow:0 8px 20px #0006;font-size:12px}.sk-editor input{width:80px;background:var(--field);border:1px solid var(--line);border-radius:3px;padding:3px 5px;font-family:var(--num);text-align:right}.sk-editor em{font-style:normal;color:var(--muted)}.btn-row .primary-btn{flex:1}.workspace{grid-template-columns:228px 1fr 272px}@media (max-width: 1000px){.workspace{grid-template-columns:180px 1fr 244px}}.tree-row .obj-name>span{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-row .type-badge,.tree-row .err-badge{flex:none}.sketch-row .row-actions .edit-sketch{display:none;opacity:1}.sketch-row:hover .row-actions .edit-sketch,.sketch-row.selected .row-actions .edit-sketch{display:grid}.sketch-row .row-actions .hover-only{display:none}.sketch-row:hover .row-actions .hover-only{display:grid;opacity:1}.feature-row .row-actions .hover-only{display:none}.feature-row:hover .row-actions .hover-only{display:grid;opacity:1}.op-cut{color:var(--danger);border-color:#e06a6666}.op-join{color:var(--y);border-color:#5dbb6366}.edge-row{display:grid;gap:4px;margin-bottom:8px}.edge-label{font-size:12px;color:var(--muted)}.plane-btn.offset{border-style:dashed}.btn-row .primary-btn{background:var(--accent);color:var(--accent-ink);border:0;font-weight:600}.btn-row .primary-btn:not(:disabled):hover{background:var(--accent-hover)}.btn-row .primary-btn:disabled{background:var(--panel-2);color:var(--muted);border:1px solid var(--line)}.edge-count{margin:0;font-size:13px}.edge-count strong{color:#ff9f1a}.op-fillet{color:#3ddc84;border-color:#3ddc8466}.op-chamfer{color:#5fb3ff;border-color:#5fb3ff66}.op-shell{color:#b08cff;border-color:#b08cff66}.dialog-backdrop.docked{padding-top:98px}.dialog-backdrop.docked .dialog{max-height:calc(100vh - 150px)}.op-pattern{color:#e8c86a;border-color:#e8c86a66}.app{grid-template-rows:40px 42px minmax(0,1fr) 30px}.menubar{height:40px}.tb-row{position:relative;display:flex;align-items:center;gap:8px;height:42px;padding:0 10px;background:#1f2227;border-bottom:1px solid var(--line);min-width:0;z-index:15}.tb-items{display:flex;align-items:center;gap:0;flex:1 1 auto;min-width:0}.tb-group{display:flex;align-items:center;gap:2px;flex:none}.tb-sep{width:1px;height:22px;background:var(--line);margin:0 6px;flex:none}.tb-slot{position:relative;flex:none}.tb-btn{height:32px;min-width:32px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:none;border:1px solid transparent;border-radius:var(--radius);color:var(--muted);font-size:12.5px;white-space:nowrap;flex:none}.tb-btn svg{width:18px;height:18px;flex:none}.tb-btn.labeled{padding:0 9px;color:var(--text)}.tb-btn:not(:disabled):hover{background:var(--panel-2);color:var(--text);border-color:var(--line)}.tb-btn.active{color:var(--accent);background:var(--panel-2);border-color:var(--line)}.tb-btn.tb-strong svg{color:var(--accent)}.tb-btn.tb-view{color:var(--muted);padding:0 8px}.tb-caret{font-size:10px;color:var(--muted);margin-left:-2px}.tb-more span:first-child{font-size:16px;line-height:1;font-weight:700}.tb-right{flex:none;display:flex;align-items:center;gap:8px}.tb-export{height:32px;display:inline-flex;align-items:center;gap:7px;padding:0 16px;font-size:13px}.tb-pop{position:absolute;top:calc(100% + 5px);left:0;min-width:230px;z-index:40;max-height:calc(100vh - 120px);overflow-y:auto}.tb-slot:last-child .tb-pop{left:auto;right:0}.tb-pop .tb-section{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 8px 3px}.tb-pop .tb-section:first-child{padding-top:4px}.tb-menu-label{display:inline-flex;align-items:center;gap:8px}.tb-menu-label svg{width:16px;height:16px;color:var(--muted)}.menu-pop button:not(:disabled):hover .tb-menu-label svg{color:var(--accent-ink)}.tb-measure{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none;display:flex;gap:2px;white-space:nowrap;height:0;overflow:hidden}.sketchbar .tool-hint{margin-left:12px}@media (max-width: 760px){.app{grid-template-rows:auto auto 1fr auto}.sketchbar .tool-hint{display:none}}.tb-items>.tb-slot:last-child{margin-left:6px}.tb-right{padding-left:4px}.dialog-backdrop.docked{padding-top:134px}.dialog-backdrop.docked .dialog{max-height:calc(100vh - 176px)}.hole-point{display:grid;grid-template-columns:18px 1fr 1fr 1fr 26px;gap:4px;align-items:center;margin-bottom:4px}.hole-point .nf{margin:0}.hole-point .nf-label{font-size:11px}.hole-point-n{font-size:11px;color:var(--muted);text-align:center}.hole-point .icon-btn{width:24px;height:24px}.gear-info{display:grid;grid-template-columns:1fr auto;gap:3px 10px;font-size:12.5px;padding:8px 10px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius)}.gear-info span{color:var(--muted)}.gear-info b{font-family:var(--mono, monospace);font-weight:600;text-align:right}.warn-note{color:#e8c86a}.dialog-body{overflow-y:auto;min-height:0;grid-auto-rows:max-content}.tree-heading-row{display:flex;align-items:center;justify-content:space-between}.tree-add{font-size:11px;padding:2px 6px;width:auto;height:auto;border:1px solid var(--line);border-radius:4px;color:var(--muted)}.tree-add:hover{color:var(--text);border-color:var(--accent)}.tree-actions{padding:0 12px}.body-group{border-left:2px solid transparent}.body-group.active-body{border-left-color:var(--accent)}.body-head{display:flex;align-items:center}.body-head>.icon-btn.chevron{flex:none}.body-row-wrap{list-style:none;margin:0;padding:0;flex:1;min-width:0}.body-items{list-style:none;margin:0;padding:0 0 0 14px}.body-empty-hint{margin:2px 0 6px 38px;font-size:11.5px}.active-dot{font-size:12px;color:var(--muted);width:22px}.active-dot.on{color:var(--accent)}.tool-badge{color:#e8c86a;border-color:#e8c86a66}.plane-chip{display:inline-block;width:12px;height:12px;border-radius:2px;opacity:.8;flex:none}.plane-chip.plane-XY{background:#4f9dde}.plane-chip.plane-XZ{background:#5dbb63}.plane-chip.plane-YZ{background:#e0524f}.origin-head .obj-name.static{padding-left:2px}.body-row-wrap .tree-row{padding-left:0}.body-row-wrap .obj-name{min-width:60px}.body-row-wrap .obj-name>span:not(.muted){font-weight:600}.body-group .row-actions .hover-only{display:none}.body-group .tree-row:hover .row-actions .hover-only{display:inline-flex}.section-panel{display:grid;gap:8px;width:260px}.section-head{display:flex;align-items:center;justify-content:space-between}.section-head .icon-btn{width:24px;height:24px}.section-slider{width:100%;accent-color:#e8864a}.vp-panels{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:10px;z-index:12;max-height:calc(100% - 24px);overflow-y:auto}.vp-panels .measure-panel{position:static}.support-panel{display:grid;gap:8px;width:260px}.support-verdict{margin:0;font-size:12.5px;padding:6px 8px;border-radius:var(--radius)}.support-verdict.ok{background:#5dbb6326;color:#7fd585}.support-verdict.warn{background:#e0524f26;color:#ff8a86}.support-table{display:grid;gap:2px;font-size:12px;max-height:140px;overflow-y:auto}.support-row{display:grid;grid-template-columns:1fr auto 40px;gap:8px}.support-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swatch{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px}.swatch-red{background:#e0524f}.swatch-dot{background:#ff3b30;border-radius:50%}.feature-row.suppressed .feature-name{text-decoration:line-through;opacity:.55}.feature-row.suppressed svg,.feature-row.inactive svg{opacity:.45}.feature-row.inactive .feature-name{opacity:.6;font-style:italic}.off-badge{color:var(--muted);border-color:var(--line)}.dep-badge{color:#e8c86a;border-color:#e8c86a59}.feature-menu-host{list-style:none}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.feature-menu{position:fixed;z-index:61;min-width:200px}.worker-status{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:12px;margin-right:12px}.manip-hud{position:absolute;z-index:30;pointer-events:none;background:#181a1eeb;border:1px solid var(--line);border-radius:var(--radius);padding:6px 9px;box-shadow:0 4px 14px #00000059;min-width:150px}.manip-hud.typing{border-color:var(--accent)}.manip-hud.error{border-color:#e0524f}.manip-row{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.manip-label{color:var(--muted);font-size:12px}.manip-value{font-family:var(--mono, monospace);font-size:15px;font-weight:600;color:var(--text)}.manip-unit{color:var(--muted);font-size:12px;font-weight:400}.manip-caret{display:inline-block;width:1px;height:14px;background:var(--accent);margin-left:1px;vertical-align:-2px;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.manip-hint{color:var(--muted);font-size:11px;margin-top:3px}.manip-hud.error .manip-hint{color:#ff8a86}.manip-note{color:var(--accent);font-size:12px;margin-top:3px}.manip-snap{color:#7fd585;font-size:12px;margin-top:3px}.statusbar{min-width:0}.statusbar .text-btn{min-width:0;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.statusbar .sel-info{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 1100px){.statusbar{gap:7px}.statusbar .text-btn{max-width:90px}}@media (max-width: 900px){.statusbar .sep{display:none}.statusbar .text-btn{max-width:70px}.statusbar .sel-info{max-width:120px}}.manip-hud.input-mode{pointer-events:auto}.manip-input{width:86px;background:var(--field);border:1px solid var(--accent);border-radius:3px;color:var(--text);font:inherit;font-family:var(--mono, monospace);padding:2px 5px;text-align:right}.manip-actions{display:flex;gap:6px;margin-top:6px}.manip-actions button{flex:1;padding:3px 0;font-size:12px}.menu-pop .menu-heading{padding:6px 12px 2px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.menu-pop .menu-check{display:inline-block;width:14px;margin-right:4px;color:var(--accent);text-align:center}.xray-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:8px;padding:4px 8px 4px 10px;background:#181a1eeb;border:1px solid #5fb3ff;border-radius:999px;box-shadow:0 0 0 3px #5fb3ff26;font-size:12px}.xray-badge strong{color:#8fcbff;letter-spacing:.04em}.xray-dot{width:8px;height:8px;border-radius:50%;background:#5fb3ff;box-shadow:0 0 6px #5fb3ff}.xray-badge input[type=range]{width:90px;accent-color:#5fb3ff}.xray-val{min-width:30px;color:var(--muted);font-family:var(--mono, monospace)}.viewport.xray-on{outline:2px solid rgb(95 179 255 / .55);outline-offset:-2px}.view-buttons .shader-select{display:inline-flex;align-items:center;gap:5px;padding:0 8px;border-right:1px solid var(--line);font-size:12px;color:var(--muted)}.view-buttons .shader-select select{background:var(--field);border:1px solid var(--line);border-radius:3px;color:var(--text);font-size:12px;padding:1px 4px}.xray-badge{top:auto;bottom:14px}.view-buttons{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 20px);row-gap:4px}@media (max-width: 1100px){.view-buttons .shader-select>span{display:none}.view-buttons .shader-select{border-right:none;padding:0 4px}}.menu-pop{max-height:calc(100vh - 120px);overflow-y:auto;overscroll-behavior:contain}.menu-pop.context-menu,.menu-pop.menu-sub{position:fixed}.menu-pop .menu-row{position:relative}.menu-pop button{justify-content:flex-start;gap:6px}.menu-pop button .menu-label{flex:1;text-align:left;white-space:nowrap}.menu-pop button kbd{margin-left:18px}.menu-pop button .menu-arrow{margin-left:12px;color:var(--muted);font-size:11px}.menu-pop button.sub-open{background:#ffffff0f}.menu-pop .menu-check{flex:0 0 14px}.menu-sub{z-index:60;min-width:200px}.sk-label.bad{color:#ff8a80;border:1px solid rgb(224 82 79 / .7);background:#3c1414d9}.sketch-side .tree-row .dim-input{width:64px;margin-left:auto;margin-right:4px;padding:1px 4px;font:11px var(--num);background:var(--field);color:var(--text);border:1px solid var(--line);border-radius:3px;text-align:right}.sketch-side .tree-row.flagged .obj-name{color:#ff8a80}.sketch-side .tree-row .flag-dot{color:#e0524f}.toast{position:absolute;left:50%;bottom:56px;transform:translate(-50%);z-index:25;display:flex;gap:10px;align-items:flex-start;max-width:min(560px,calc(100% - 32px));padding:8px 8px 8px 12px;background:#181a1ef2;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:6px;box-shadow:0 4px 16px #00000059;font-size:12px}.toast strong{display:block;margin-bottom:2px;color:var(--text)}.toast span{color:var(--muted)}.sketch-side .sk-show{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px;font-size:11px;color:var(--muted)}.sketch-side .param-row{display:flex;align-items:center;gap:4px}.sketch-side .param-row input{min-width:0;padding:1px 4px;font:11px var(--num);background:var(--field);color:var(--text);border:1px solid var(--line);border-radius:3px}.sketch-side .param-name{width:64px}.sketch-side .param-expr{flex:1}.sketch-side .param-val{min-width:54px;text-align:right;font:11px var(--num);color:var(--muted)}.sketch-side .param-row.flagged .param-val{color:#ff8a80}.sketch-side .dim-wrap{display:inline-flex;align-items:center;gap:3px;margin-left:auto}.sketch-side .dim-input.has-expr{width:84px;color:#8fcbff}.sketch-side .dim-eq,.sketch-side .dim-ref{font:11px var(--num);color:var(--muted)}.sketch-side .dim-ref{margin-left:auto;margin-right:4px}.sketch-side .ref-toggle{padding:0 4px;font-size:10px;border:1px solid var(--line);border-radius:3px;background:none;color:var(--muted);cursor:pointer}.sketch-side .ref-toggle.on{color:#d9a441;border-color:#d9a441}.ref-plane-icon{display:inline-flex;width:36px;justify-content:center;font-size:22px;color:#8fcbff}.xyz-row{display:grid;grid-template-columns:56px repeat(3,1fr);gap:4px;align-items:center}.xyz-label{font-size:11px;color:var(--muted)}
