:root{--bg: #ffffff;--panel: #f7f7f9;--line: #dcdee5;--text: #1f2128;--muted: #6b6f80;--accent: #b7782f;--err: #d92d33;--warn: #b7791f;--field: #ffffff;--hover: #eceef3;--selected: #f6e8d6;font-family:Inter,system-ui,sans-serif;font-size:13px;color:var(--text)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg)}body{display:flex;flex-direction:column;height:100vh;overflow:hidden}#toolbar{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{color:var(--accent);font-size:16px;margin-right:8px}button,select,input[type=text],input[type=number]{font:inherit;background:var(--field);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:4px 8px}button{cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}.sep{width:1px;height:20px;background:var(--line);margin:0 4px}.grow{flex:1}label{color:var(--muted);display:inline-flex;align-items:center;gap:4px}main{flex:1;display:grid;grid-template-columns:240px 1fr 300px;min-height:0}aside{background:var(--panel);overflow:auto;padding:8px;border-right:1px solid var(--line)}#params-panel{border-right:none;border-left:1px solid var(--line)}aside h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:6px 0 8px}#center{position:relative;min-width:0;min-height:0}#viewport,#drawing{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}#viewport[hidden],#drawing[hidden]{display:none}#drawing{background:#fff}.drawing-svg{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none;touch-action:none}.dim-edit{position:absolute;transform:translate(-50%,-50%);width:80px;z-index:5}.tabs{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.tabs .tab{border:none;border-radius:0;padding:4px 12px}.tabs .tab+.tab{border-left:1px solid var(--line)}.tabs .tab.active{background:var(--accent);color:#fff}#viewport canvas{display:block}.tree-node{padding:3px 4px;border-radius:4px;cursor:pointer;display:flex;gap:6px;align-items:center;white-space:nowrap}.tree-node:hover{background:var(--hover)}.tree-node.selected{background:var(--selected);color:var(--accent)}.tree-node.has-error{color:var(--err)}.tree-node .type{color:var(--muted);font-size:11px}.tree-node .lock{font-size:11px}.tree-children{margin-left:14px;border-left:1px dashed var(--line);padding-left:4px}.param{display:grid;grid-template-columns:90px 1fr;gap:6px;align-items:center;margin-bottom:6px}.param label{color:var(--text)}.param input,.param select{width:100%}.param .computed{color:var(--muted);font-size:11px;grid-column:2;margin-top:-4px}.param .list{display:flex;flex-wrap:wrap;gap:4px}.param .list input{width:64px}.param-actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.part-row{display:flex;justify-content:space-between;padding:2px 4px;border-radius:3px;cursor:pointer}.part-row:hover,.part-row.selected{background:var(--hover)}.part-row .dims{color:var(--muted)}footer{background:var(--panel);border-top:1px solid var(--line);max-height:160px;display:flex;flex-direction:column}#issues{overflow:auto;padding:4px 10px;flex:1}.issue{padding:2px 0;cursor:pointer}.issue.error{color:var(--err)}.issue.warning{color:var(--warn)}.issue code{background:var(--hover);padding:0 4px;border-radius:3px;margin-right:6px;font-size:11px}#status{display:flex;justify-content:space-between;padding:4px 10px;color:var(--muted);border-top:1px solid var(--line);font-size:12px}.empty{color:var(--muted);font-style:italic;padding:6px}.live input{accent-color:var(--accent)}#modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;display:flex;align-items:center;justify-content:center;z-index:50}#modal[hidden]{display:none}.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px;min-width:300px;max-width:min(640px,92vw);display:flex;flex-direction:column;gap:10px}.modal-box h3{margin:0 0 4px;font-size:14px}.modal-field{display:grid;gap:4px;color:var(--muted)}.modal-box textarea{font:12px ui-monospace,monospace;background:var(--field);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:6px;width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}button.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.dims-actions{display:flex;gap:6px;margin-bottom:6px}.dims-actions button{padding:2px 8px;font-size:12px}.dim-row{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center;padding:2px 4px;border-radius:3px;cursor:pointer}.dim-row:hover{background:var(--hover)}.dim-row.selected{background:var(--selected)}.dim-row.off .dim-name,.dim-row.off .dim-value{color:var(--muted);text-decoration:line-through}.dim-row .dim-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dim-row .dim-value{color:var(--muted);font-variant-numeric:tabular-nums}.dim-row input{margin:0;accent-color:var(--accent)}.dim-row.measure{grid-template-columns:auto 1fr auto auto}.dim-row.measure .dim-name{color:#0b7a43}.dim-del{padding:0 6px;line-height:16px;font-size:13px;color:var(--muted)}.dim-del:hover{color:var(--err);border-color:var(--err)}.part-head{display:flex;justify-content:space-between;gap:8px;padding:4px 0 8px}.part-head .dims,.part-row .mat{color:var(--muted);font-size:11px}.part-row .mat{margin-left:6px}.part-sep{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;border-top:1px solid var(--line);padding-top:8px;margin:4px 0 8px}.swatch{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid var(--line);margin-right:6px;vertical-align:-1px}.tools{position:absolute;left:10px;top:10px;z-index:4;display:flex;flex-direction:column;gap:4px;padding:6px;background:#fffffff0;border:1px solid var(--line);border-radius:8px;box-shadow:0 2px 8px #00000014}.tools button{width:34px;height:34px;padding:0;display:grid;place-items:center;border-color:transparent;background:transparent}.tools button:hover{background:var(--hover);border-color:var(--line)}.tools button.active{background:var(--selected);border-color:var(--accent);color:var(--accent)}.tools button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.tools button.txt{font-size:11px;font-weight:600}.tools .tsep{height:1px;background:var(--line);margin:2px 4px}#btn-measure.active{background:var(--selected);border-color:var(--accent);color:var(--accent)}.ctx-menu{position:fixed;z-index:60;min-width:220px;max-width:320px;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 24px #00000029}.ctx-title{padding:6px 10px 4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctx-item{display:flex;justify-content:space-between;gap:16px;width:100%;text-align:left;border:1px solid transparent;background:transparent;padding:6px 10px;border-radius:5px}.ctx-item:hover:not(:disabled),.ctx-item:focus-visible{background:var(--hover);border-color:transparent;outline:none}.ctx-item small{color:var(--muted)}.ctx-item.danger{color:var(--err)}.ctx-sep{height:1px;background:var(--line);margin:4px 6px}.issue.fix button{margin-left:8px;padding:1px 8px;font-size:12px}
