:root{--bg: #f5f7fa;--panel: #ffffff;--border: #dde3ea;--text: #1f2933;--muted: #6b7a8a;--accent: #1f6fd1;--accent-soft: #e6f0fc;--sel: #f08c1a;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button{font:inherit}.app{display:grid;grid-template-rows:44px auto minmax(0,1fr) 28px;grid-template-columns:minmax(0,1fr);height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:16px;padding:0 12px;background:#243447;color:#fff}.brand{font-weight:700;letter-spacing:.5px;display:inline-flex;align-items:center;gap:8px}.fname{font-size:14px;opacity:.9}.dirty{color:#ffb44d;margin-left:6px;font-size:11px}.filemenu{margin-left:auto;display:flex;gap:4px}.filemenu button{background:transparent;color:#fff;border:1px solid transparent;border-radius:4px;padding:4px 10px;cursor:pointer;font-size:13px}.filemenu button:hover{border-color:#ffffff59}.toolbar{display:flex;align-items:center;gap:6px;padding:0 8px;background:var(--panel);border-bottom:1px solid var(--border);overflow-x:auto}.tb-group{display:flex;gap:2px;padding-right:6px;margin-right:2px;border-right:1px solid var(--border)}.tb-group:last-child{border-right:none}.tb-btn{width:32px;height:32px;display:grid;place-items:center;border:1px solid transparent;border-radius:5px;background:transparent;color:#33475b;cursor:pointer}.tb-btn:hover:not(:disabled){background:#eef2f6}.tb-btn.active{background:var(--accent-soft);border-color:#9cc3f0;color:var(--accent)}.tb-btn:disabled{color:#b9c3cd;cursor:default}.work{display:grid;grid-template-columns:var(--left-w, 290px) minmax(0,1fr) auto;min-height:0;min-width:0;position:relative}.center{display:flex;flex-direction:column;min-width:0;min-height:0}.center .canvas-wrap{flex:1}.canvas-wrap{position:relative;min-width:0;min-height:0}canvas.sketch{width:100%;height:100%;display:block;outline:none;touch-action:none}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);background:#fffc}.dim-input{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:4px;background:#fff;border:1.5px solid var(--accent);border-radius:4px;box-shadow:0 2px 8px #00000026;padding:1px 6px 1px 2px}.dim-input input{width:110px;padding:2px 4px;font-size:13px;text-align:center;border:none;outline:none;font-family:inherit}.dim-input .unit{font-size:11px;color:var(--muted)}.side{background:var(--panel);display:flex;flex-direction:column;min-height:0;font-size:13px;overflow:hidden}.side.right{border-left:1px solid var(--border)}.side.left{border-right:1px solid var(--border);overflow-y:auto}.side section{padding:10px 12px;border-bottom:1px solid var(--border)}.side section.grow{flex:1;overflow-y:auto;min-height:0}.side h3{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);display:flex;align-items:center;justify-content:space-between;gap:6px}.side h4{margin:10px 0 4px;font-size:12px;color:var(--muted);font-weight:600}.muted{color:var(--muted)}ul.plain{list-style:none;padding:0;margin:0}ul.plain li{padding:2px 0}ul.clist{list-style:none;padding:0;margin:0}ul.clist li{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px;cursor:pointer}ul.clist li:hover{background:#f1f4f8}ul.clist li.sel{background:#fff4e6}.cname{font-weight:500}.cval{color:var(--accent);font-variant-numeric:tabular-nums}.crefs{color:var(--muted);font-size:11px;margin-left:auto}.x{border:none;background:transparent;color:#9aa7b4;cursor:pointer;font-size:15px;line-height:1;padding:0 2px}.x:hover{color:#d93025}kbd{background:#eef2f6;border:1px solid var(--border);border-radius:3px;padding:0 4px;font-size:11px;color:var(--text)}.status{display:flex;align-items:center;gap:18px;padding:0 12px;font-size:12px;background:var(--panel);border-top:1px solid var(--border);color:var(--muted)}.status .ok{color:#1b7f3b;font-weight:600}.status .msg{color:#b35c00}.status .hint{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.status button.coords{border:none;background:transparent;color:inherit;font:inherit;cursor:pointer;padding:0;min-width:230px;text-align:left;font-variant-numeric:tabular-nums}.status button.coords:hover{color:var(--accent)}.status .core{margin-left:auto}.tb-btn{position:relative}.tb-btn .tip{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);background:#243447;color:#fff;font-size:12px;white-space:nowrap;padding:4px 8px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .12s .25s;z-index:20;display:flex;gap:6px;align-items:center}.tb-btn .tip kbd{background:#ffffff26;border-color:#ffffff40;color:#fff}.tb-btn:hover .tip,.tb-btn:focus-visible .tip{opacity:1}.tb-btn:disabled .tip{color:#c8d2dc}.toolbar{overflow:visible;position:relative;z-index:10}.bench{display:flex;gap:2px;margin-left:24px;background:#ffffff14;border-radius:6px;padding:3px}.bench button{background:transparent;border:none;color:#c9d4df;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:13px}.bench button.on{background:#fff;color:#243447;font-weight:600}.filemenu .sep{width:1px;background:#ffffff40;margin:4px 6px}.lang{display:flex;margin-left:4px;border:1px solid rgba(255,255,255,.3);border-radius:4px;overflow:hidden}.lang button{border:none!important;border-radius:0!important;padding:3px 8px!important;font-size:12px!important;opacity:.7}.lang button.on{background:#fff3;opacity:1;font-weight:600}.overlay.soon{background:#f5f7faf0;font-size:15px}.field{display:grid;grid-template-columns:96px 1fr auto;align-items:center;gap:6px;margin:4px 0}.field>span:first-child{color:var(--muted);font-size:12px}.field input,.field select,.vtable input{font:inherit;font-size:12.5px;padding:3px 6px;border:1px solid var(--border);border-radius:4px;min-width:0;background:#fff}.field input:focus,.vtable input:focus{outline:none;border-color:var(--accent)}.field .suffix{color:var(--muted);font-size:11px;min-width:18px}input.bad,tr.bad input{border-color:#d93025!important}.err{color:#d93025;font-weight:700;cursor:help}.btn{font:inherit;font-size:12.5px;padding:4px 12px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:4px;cursor:pointer;margin-top:6px}.btn:hover{filter:brightness(1.08)}.link-btn{border:none;background:transparent;color:var(--accent);cursor:pointer;font-size:12px;text-transform:none;letter-spacing:0;padding:0}.icon-btn{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:0;display:grid;place-items:center}.icon-btn:hover{color:var(--accent)}.icon-btn svg{width:16px;height:16px}.transform{border-top:1px dashed var(--border);margin-top:8px}.vtable{width:100%;border-collapse:collapse;font-size:12px}.vtable th{text-align:left;font-weight:500;color:var(--muted);padding:2px}.vtable td{padding:2px}.vtable td:first-child input{width:64px}.vtable td:nth-child(2) input{width:100%}.vtable .vval{color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;max-width:80px;overflow:hidden;text-overflow:ellipsis}.vtable tr.bad .vval{color:#d93025;cursor:help}.help-line{margin:6px 0 0;font-size:11px;color:var(--muted);line-height:1.4}.groups .gname{flex:1}.groups input{flex:1;font:inherit;padding:1px 4px}.side.right .constraints{flex:1 1 40%;overflow-y:auto}.side.right .history{flex:1 1 60%;display:flex;flex-direction:column;min-height:0}.history .code{flex:1;overflow-y:auto;background:#1f2933;color:#d6e2ee;border-radius:6px;padding:6px 8px;min-height:60px}.history .code pre{margin:0;font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-all}.history .code .undone pre{opacity:.35;text-decoration:line-through}.history .icon-btn{color:var(--muted)}dialog.cite{border:none;border-radius:10px;padding:20px 24px;max-width:640px;width:calc(100% - 32px);box-shadow:0 12px 40px #00000040;color:var(--text)}dialog.cite::backdrop{background:#141e2873}dialog.cite h2{margin:0 0 4px;font-size:18px}dialog.cite h4{display:flex;justify-content:space-between;align-items:center;margin:14px 0 6px;font-size:13px}.cite-full{background:#f5f7fa;padding:10px 12px;border-radius:6px;font-size:13px;line-height:1.5;margin:0;-webkit-user-select:all;user-select:all}.cite-bib{background:#1f2933;color:#d6e2ee;padding:10px 12px;border-radius:6px;font-size:12px;margin:0;overflow-x:auto;-webkit-user-select:all;user-select:all}dialog.cite .actions{display:flex;justify-content:flex-end;margin-top:14px}.side.left{display:flex;flex-direction:column}.tree{flex:0 0 auto;max-height:45%;overflow-y:auto}.tree ul{list-style:none;margin:0;padding:0}.tree ul ul{padding-left:14px}.tgroup{padding:3px 4px;color:var(--muted);font-weight:600;font-size:12.5px}.tnode{display:flex;align-items:center;gap:6px;padding:3px 6px;border-radius:4px;cursor:pointer;color:var(--text);font-weight:400}.tnode:hover{background:#f1f4f8}.tnode.on{background:var(--accent-soft);color:var(--accent)}.tnode .tname{flex:1}.tnode .x{opacity:0}.tnode:hover .x,.tnode .x:focus-visible{opacity:1}.tnode input{flex:1;font:inherit;padding:1px 4px;min-width:0}.ticon{width:16px;height:16px;display:inline-grid;place-items:center;opacity:.8}.ticon svg{width:15px;height:15px}.menu button .ticon,.menu button svg{width:15px;height:15px;vertical-align:-3px;margin-right:4px}.add-menu{position:relative}.add-menu .plus{font-size:18px;line-height:1;width:22px;height:22px;border-radius:4px}.add-menu .plus:hover{background:#eef2f6}.menu{position:absolute;right:0;top:26px;z-index:30;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #0000001f;padding:6px;width:220px;text-transform:none;letter-spacing:0;font-weight:400}.menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:5px 8px;border-radius:4px;cursor:pointer;font:inherit;font-size:13px;color:var(--text)}.menu button:hover{background:var(--accent-soft)}.menu-label{font-size:11px;color:var(--muted);padding:2px 8px;text-transform:uppercase;letter-spacing:.5px}.menu-note{font-size:11px;color:var(--muted);padding:2px 8px 4px;line-height:1.35}.menu hr{border:none;border-top:1px solid var(--border);margin:4px 0}.props{flex:1;display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--border)}.props-title{padding:10px 12px 0;margin:0!important}.props-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;min-height:0}.props-body .constraints{flex:1}.drawer{position:relative;display:flex;border-left:1px solid var(--border);background:var(--panel)}.drawer-tab{writing-mode:vertical-rl;border:none;background:#f5f7fa;color:var(--muted);cursor:pointer;padding:10px 4px;font:inherit;font-size:12px;display:flex;align-items:center;gap:8px;width:28px}.drawer-tab:hover{color:var(--accent);background:var(--accent-soft)}.drawer-body{width:var(--right-w, 300px);overflow-y:auto;position:relative}.drawer-strip{order:2;display:flex;flex-direction:column;border-left:1px solid var(--border);background:#f5f7fa}.drawer-strip .drawer-tab{border-bottom:1px solid var(--border)}:root[data-theme=dark] .drawer-strip{background:#141b23}.console{border-top:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column}.console header{display:flex;align-items:center;justify-content:space-between;padding:3px 10px}.console-toggle{border:none;background:transparent;font:inherit;font-size:12px;color:var(--muted);cursor:pointer;padding:2px 0;text-transform:uppercase;letter-spacing:.5px}.console-toggle:hover{color:var(--accent)}.console .code{flex:1;overflow-y:auto;background:#1f2933;color:#d6e2ee;padding:6px 10px;margin:0 8px 8px;border-radius:6px}.console .code pre{margin:0;font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.console .code .undone pre{opacity:.35;text-decoration:line-through}.tb-anchor{position:relative;display:inline-flex}.popover{position:absolute;top:calc(100% + 8px);left:0;z-index:40;width:280px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000026;padding:10px 12px 12px;font-size:13px}.popover h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.popover .transform{border:none;margin:0}.drawer-body .constraints{max-height:none}.detach{margin-top:8px;padding:8px;background:#fff8ec;border:1px solid #f3d9a8;border-radius:6px}.detach p{margin:0 0 4px;font-size:12px}.detach .btn{margin-top:4px}.tb-family{position:relative;display:inline-flex;align-items:center}.tb-caret{width:12px;height:32px;margin-left:-3px;border:none;background:transparent;color:#7b8b9b;cursor:pointer;border-radius:3px;display:grid;place-items:center;padding:0}.tb-caret:hover,.tb-caret.open{background:#eef2f6;color:var(--accent)}.tool-menu{left:0;right:auto;top:38px;width:240px}.tool-menu button{display:flex!important;align-items:center;gap:8px}.tool-menu button.on{background:var(--accent-soft);color:var(--accent)}.tool-menu .mi-icon{display:grid;place-items:center;width:20px}.tool-menu .mi-label{flex:1}.tool-menu kbd{font-size:10.5px}.toolbar{flex-wrap:wrap;row-gap:2px;padding-top:4px;padding-bottom:4px;min-height:44px}.topbar{min-width:0;overflow:visible;position:relative;z-index:40}.filemenu{flex-wrap:nowrap}.topbar{gap:12px}.topbar .fname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .filemenu{flex-shrink:0}.status{min-width:0;overflow:hidden}@media (max-width: 1100px){.work{grid-template-columns:240px minmax(0,1fr) auto}.filemenu button{padding:4px 7px}}.tree{flex:1 1 60%;max-height:none}.props{flex:0 1 40%}.tree .tnode{padding:2px 4px;gap:4px;font-size:12.5px}.tree .tnode.dim .tname{color:var(--muted)}.tree .twisty,.tree .twisty-space{width:14px;flex:0 0 14px;border:none;background:transparent;color:var(--muted);cursor:pointer;padding:0;font-size:10px}.tree .ticon.cons svg{opacity:.55}.tree .tadd{font-size:15px;width:18px;height:18px;border-radius:3px}.tree .tadd:hover{background:#eef2f6}.tree .crefs.bad{color:#d93025}.tree .icon-btn svg{width:14px;height:14px}.err-text{color:#d93025;font-size:12px}.btn.danger{background:#fff;color:#d93025;border-color:#e8b4b0}.btn.danger:hover{background:#fdecea;filter:none}.menu button:disabled{color:#b9c3cd;cursor:default;background:transparent}.tree .add-menu .menu{top:22px}.tree .tnode .x,.tree .tnode .tedit{opacity:0}.tree .tnode:hover .x,.tree .tnode:hover .tedit,.tree .tnode .x:focus-visible,.tree .tnode .tedit:focus-visible{opacity:1}.tree .tedit{font-size:12px;width:18px}.measures{background:#f7f4fb;border:1px solid #e3d8ef;border-radius:6px;padding:6px 10px;margin:2px 0 8px}.measures h4{margin:0 0 4px!important;color:#8e44ad!important}.measures dl{margin:0;display:grid;gap:1px}.measures dl>div{display:flex;justify-content:space-between;gap:8px;font-size:12.5px}.measures dt{color:var(--muted)}.measures dd{margin:0;font-variant-numeric:tabular-nums}.console .code .out pre.in{color:#9fb3c8}.console .code .out pre.res{color:#a6e3a1}.console .code .out pre.err{color:#ff8a80}.console .prompt{display:flex;gap:8px;align-items:flex-start;margin-top:4px;border-top:1px solid rgba(255,255,255,.08);padding-top:4px}.console .prompt>span{font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#7fb3ff;padding-top:1px}.console .prompt textarea{flex:1;resize:none;background:transparent;border:none;outline:none;color:#fff;font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;padding:0}.console .prompt textarea::placeholder{color:#66788a}.status .dof-open{font-weight:700;color:#b35c00;cursor:help}.fname-text{cursor:text;padding:2px 4px;border-radius:4px}.fname-text:hover{background:#ffffff1a}.fname-input{font:inherit;font-size:14px;padding:1px 6px;border-radius:4px;border:1px solid #7fb3ff;background:#1b2837;color:#fff;outline:none;width:220px}.console{position:relative}.console-resizer{position:absolute;top:-3px;left:0;right:0;height:7px;cursor:ns-resize;z-index:5}.console-resizer:hover,.console-resizer:active{background:linear-gradient(to bottom,transparent 2px,var(--accent) 2px,var(--accent) 4px,transparent 4px)}.console-actions{display:flex;gap:8px;align-items:center}.console.popped{height:100vh;border-top:none}body.popout{margin:0;background:var(--panel)}body.popout .popout-root{height:100vh;display:flex;flex-direction:column}.console .complete{list-style:none;margin:4px 0 0;padding:4px;background:#16202b;border:1px solid rgba(255,255,255,.12);border-radius:6px;max-height:160px;overflow-y:auto}.console .complete li{display:flex;gap:12px;padding:2px 8px;border-radius:4px;cursor:pointer;font:11.5px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#d6e2ee}.console .complete li span{color:#7f93a8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.console .complete li.on{background:#2b5d99}.console .complete li.on span{color:#cfe0f5}.check{display:flex;align-items:center;gap:6px;font-size:12.5px;margin:6px 0}.filemenu>button,.filemenu .export-menu>button{display:inline-flex;align-items:center;gap:6px}.filemenu svg{width:16px;height:16px}.export-menu>button{background:transparent;color:#fff;border:1px solid transparent;border-radius:4px;padding:4px 10px;cursor:pointer;font:inherit;font-size:13px}.export-menu>button:hover{border-color:#ffffff59}.export-menu{position:relative;display:inline-block}.export-menu .menu{right:0;left:auto;top:34px;width:280px}.export-menu .menu button{color:var(--text)}@media (max-width: 1250px){.filemenu>button span,.export-menu>button span{display:none}}:root[data-theme=dark]{--bg: #0f141a;--panel: #18202a;--border: #2a3542;--text: #dfe7ef;--muted: #8b9bab;--accent: #5aa2ff;--accent-soft: #1c3150;--sel: #f5a524;color-scheme:dark}:root[data-theme=dark] body{background:var(--bg)}:root[data-theme=dark] .topbar{background:#0c1117;border-bottom:1px solid var(--border)}:root[data-theme=dark] .toolbar,:root[data-theme=dark] .side,:root[data-theme=dark] .status,:root[data-theme=dark] .console,:root[data-theme=dark] .drawer{background:var(--panel);border-color:var(--border)}:root[data-theme=dark] .tb-btn{color:#c3cfdb}:root[data-theme=dark] .tb-btn:hover:not(:disabled),:root[data-theme=dark] .tb-caret:hover,:root[data-theme=dark] .tb-caret.open{background:#243040}:root[data-theme=dark] .tb-btn.active{background:var(--accent-soft);border-color:#2f5d94;color:var(--accent)}:root[data-theme=dark] .tb-btn:disabled{color:#4a5868}:root[data-theme=dark] .tb-btn .tip{background:#000}:root[data-theme=dark] ul.clist li:hover,:root[data-theme=dark] .tnode:hover{background:#212b37}:root[data-theme=dark] ul.clist li.sel{background:#3a2c14}:root[data-theme=dark] .tnode.on{background:var(--accent-soft);color:var(--accent)}:root[data-theme=dark] .field input,:root[data-theme=dark] .field select,:root[data-theme=dark] .vtable input,:root[data-theme=dark] .tnode input,:root[data-theme=dark] .groups input{background:#10161d;color:var(--text);border-color:var(--border)}:root[data-theme=dark] .menu,:root[data-theme=dark] .popover,:root[data-theme=dark] dialog.cite{background:#1d2631;border-color:var(--border);color:var(--text)}:root[data-theme=dark] .menu button{color:var(--text)}:root[data-theme=dark] .menu button:hover{background:var(--accent-soft)}:root[data-theme=dark] .export-menu .menu button{color:var(--text)}:root[data-theme=dark] .cite-full{background:#10161d}:root[data-theme=dark] .measures{background:#211a2a;border-color:#3d2d4d}:root[data-theme=dark] .measures h4{color:#c98ce8!important}:root[data-theme=dark] .detach{background:#2a2113;border-color:#5c4520}:root[data-theme=dark] .drawer-tab{background:#141b23;color:var(--muted)}:root[data-theme=dark] .drawer-tab:hover{background:var(--accent-soft);color:var(--accent)}:root[data-theme=dark] .dim-input{background:#10161d}:root[data-theme=dark] .dim-input input{background:transparent;color:var(--text)}:root[data-theme=dark] .overlay{background:#0f141ad9}:root[data-theme=dark] .overlay.soon{background:#141a21f0}:root[data-theme=dark] kbd{background:#243040;border-color:var(--border);color:var(--text)}:root[data-theme=dark] .btn.danger{background:transparent;border-color:#6b2d2a;color:#ff8a80}:root[data-theme=dark] .btn.danger:hover{background:#2d1614}:root[data-theme=dark] .status .msg{color:#f5a524}:root[data-theme=dark] .status .ok{color:#5fd38a}:root[data-theme=dark] .status .dof-open{color:#f5a524}:root[data-theme=dark] .x{color:#6b7b8c}:root[data-theme=dark] .tree .tadd:hover,:root[data-theme=dark] .add-menu .plus:hover{background:#243040}.theme-btn{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:4px;padding:3px 6px;cursor:pointer;display:grid;place-items:center;margin-left:4px}.theme-btn svg{width:16px;height:16px}.theme-btn:hover{background:#ffffff1a}.btn.secondary{background:transparent;color:var(--accent);margin-right:6px}.btn.secondary.on{background:var(--accent-soft)}.btn:disabled{opacity:.5;cursor:default}.offset-props{background:var(--accent-soft);border-radius:6px;padding:6px 10px;margin:2px 0 8px}.offset-props h4{margin:0 0 4px!important;color:var(--accent)!important}.status .legend{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.status .legend .sw{display:inline-block;width:14px;height:3px;border-radius:2px;margin-left:4px}.status .legend .sw.free{background:#1f6fd1}.status .legend .sw.def{background:#1b1f24}:root[data-theme=dark] .status .legend .sw.free{background:#5aa2ff}:root[data-theme=dark] .status .legend .sw.def{background:#e8eef5}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--border, #8888);background-image:repeating-linear-gradient(135deg,transparent 0 3px,#8886 3px 4px)}.tnote{padding:2px 8px 2px 28px;font-size:12px}.field input[type=color]{width:44px;height:22px;padding:0;border:none;background:none}.mat-picker{position:relative;margin-left:auto}.mat-chip{display:inline-flex;align-items:center;gap:5px;max-width:130px;padding:1px 6px;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:inherit;font:inherit;font-size:11px;cursor:pointer}.mat-chip span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-chip.none{color:#c0392b;border-style:dashed}.mat-chip:hover{border-color:var(--accent)}.mat-chip .caret{opacity:.6;font-size:9px}.mat-menu{right:0;left:auto;min-width:220px;max-height:360px;overflow-y:auto;z-index:30}.mat-menu button{display:flex;align-items:center;gap:6px;width:100%}.mat-menu button .crefs{margin-left:auto}.mat-menu button.on{background:var(--accent-soft)}.menu-sep{height:1px;background:var(--border);margin:4px 0}.field .mat-picker{margin-left:0}.bswatch{display:inline-block;width:12px;height:4px;border-radius:2px;vertical-align:middle}.b-dirichlet{background:#2ea043}.b-neumann{background:#2e8b57}.b-periodic{background:#8e44ad}.b-antiperiodic{background:#d4880f}.drawer-tabs{display:flex;gap:2px;padding:6px 8px 0;border-bottom:1px solid var(--border)}.drawer-tabs button{border:none;background:none;color:var(--muted);font:inherit;font-size:12px;padding:6px 8px;cursor:pointer;border-bottom:2px solid transparent}.drawer-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.lib-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.lib-list,.lib-list ul{list-style:none;margin:0;padding:0}.lib-list .menu-label{margin-top:8px}.lib-item{display:flex;align-items:center;gap:6px;width:100%;border:none;background:none;color:inherit;font:inherit;font-size:13px;padding:4px 6px;border-radius:4px;cursor:pointer;text-align:left}.lib-item:hover{background:var(--accent-soft)}.lib-item.on{background:var(--accent-soft);color:var(--accent)}.lib-item .crefs{margin-left:auto}.lib-editor{margin:4px 0 10px 18px;padding-left:8px;border-left:2px solid var(--accent-soft)}.help-line.strong{color:var(--accent)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:disabled{opacity:.6}.plot-ico{display:inline-block;width:13px;height:13px;border-radius:2px;vertical-align:middle}.plot-ico.map{background:linear-gradient(135deg,#30123b,#28bceb,#a4fc3c,#fb8022,#7a0403)}.plot-ico.map.h{background:linear-gradient(135deg,#30123b,#fb8022)}.plot-ico.map.a{background:linear-gradient(135deg,#28bceb,#7a0403)}.plot-ico.vec{width:auto;height:auto;font-size:13px;line-height:1}.chart{width:100%;height:auto;margin:6px 0;background:var(--panel);border:1px solid var(--border);border-radius:4px}.chart .axis{stroke:var(--muted);stroke-width:1}.chart .zero{stroke:var(--border);stroke-dasharray:3 3}.chart .curve{fill:none;stroke:#e8408a;stroke-width:1.6}.chart text{font-size:9px;fill:var(--muted)}.chart .unit{font-size:9px}.cval.strong{font-weight:600}.chart .pt{fill:#e8408a}.bh-table{width:100%;border-collapse:collapse;margin:4px 0;font-size:12px}.bh-table th{text-align:left;color:var(--muted);font-weight:500;padding:2px 4px}.bh-table td{padding:1px 2px}.bh-table input{width:100%;box-sizing:border-box}.canvas-tabs{display:flex;gap:2px;padding:4px 6px 0;background:var(--panel);border-bottom:1px solid var(--border);overflow-x:auto;flex:none}.ctab{display:flex;align-items:center;gap:6px;padding:5px 10px;font-size:12px;color:var(--muted);border:1px solid transparent;border-bottom:none;border-radius:6px 6px 0 0;cursor:pointer;white-space:nowrap}.ctab:hover{color:var(--text);background:var(--accent-soft)}.ctab.on{color:var(--accent);background:var(--bg, #fff);border-color:var(--border);margin-bottom:-1px}.ctab .x{font-size:14px;line-height:1}.plot-ico.tab{width:12px;height:9px;border:1.5px solid currentColor;border-top-width:3px;border-radius:2px}.plot-ico.iso{width:auto;height:auto;font-size:14px;line-height:1}.menu-note-inline{display:block;font-size:11px;color:var(--muted);margin-left:22px}.chart-pane{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg, #fff);display:flex;flex-direction:column;padding:10px 16px;overflow:auto;z-index:5}.chart-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:6px;font-size:13px}.chart-head .btn{margin-top:0}.chart-tools{display:flex;gap:12px;font-size:12px;color:var(--muted)}.chart-stat{font-size:12px;color:var(--muted)}.xychart{width:100%;max-width:1100px;height:auto;flex:1;min-height:0}.xychart .grid{stroke:var(--border);stroke-width:1}.xychart .frame{fill:none;stroke:var(--muted)}.xychart .curve{fill:none;stroke:#e8408a;stroke-width:2}.xychart .pt{fill:#e8408a;stroke:var(--bg, #fff);stroke-width:2;cursor:pointer}.xychart .pt:hover{r:7}.xychart text{font-size:12px;fill:var(--muted)}.xychart .axis-label{font-size:13px;fill:var(--text)}.modal-back{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:20}.modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;min-width:260px;box-shadow:0 10px 30px #0000004d}.modal h3{margin:0 0 8px;font-size:14px}.modal-actions{display:flex;justify-content:space-between;gap:8px;margin-top:8px}.tnode.drop{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft)}.tnode[draggable=true]{cursor:grab}.circ-table{width:100%;border-collapse:collapse;font-size:12px;margin:4px 0}.circ-table th{text-align:left;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border);padding:3px 4px;white-space:nowrap}.circ-table td{padding:3px 4px;border-bottom:1px solid var(--border);white-space:nowrap;font-variant-numeric:tabular-nums}.props .circ{overflow-x:auto}.circ.big .circ-table{font-size:14px;max-width:1100px}.circ.big .circ-table th,.circ.big .circ-table td{padding:6px 10px}.tree-title{display:flex;align-items:center;justify-content:space-between}.tree-title .icon-btn{width:22px;height:22px}.modal-back.fixed{position:fixed;z-index:100}.script-modal{width:min(900px,92vw);max-height:86vh;display:flex;flex-direction:column}.script-modal textarea{flex:1;min-height:320px;width:100%;box-sizing:border-box;font:12px ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px;resize:vertical;white-space:pre}.script-modal .modal-actions{align-items:center}.script-modal .modal-actions .btn{margin-left:6px}.canvas-fit{position:absolute;left:10px;top:10px;z-index:4;width:30px;height:30px;background:var(--panel);border:1px solid var(--border);border-radius:6px;box-shadow:0 2px 6px #0003}.table-pane{max-width:900px}.table-pane h3{margin:0 0 8px}.table-item{margin:10px 0 16px}.table-item h4{margin:0 0 4px;font-size:13px;color:var(--accent)}.circ-table.kv th{width:45%}.region-pick{border:1px solid var(--border);border-radius:4px;padding:4px 8px;margin:6px 0}.region-pick legend{font-size:11px;color:var(--muted)}.region-pick .field.check{margin:2px 0}.tab-toolbar{gap:10px}.tab-toolbar .sep{width:1px;height:20px;background:var(--border)}.time-slider{width:min(420px,40vw)}.time-label{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:180px}.tab-toolbar .btn{margin-top:0}.var-list summary{cursor:pointer;font-size:12px;color:var(--muted);margin:6px 0}.var-list code{font-size:11.5px}.tree-actions{display:inline-flex;align-items:center;gap:2px}.sch-host{padding:0}.sch-pane{display:grid;grid-template-columns:minmax(0,1fr) 300px;height:100%;min-height:0}.sch-canvas{width:100%;height:100%;background:var(--bg);touch-action:none;-webkit-user-select:none;user-select:none}.sch-dot{fill:var(--gridMajor, #c9d2dc);opacity:.6}.sch-part{color:var(--text);cursor:grab}.sch-part.on{color:var(--accent)}.sch-label{font-size:12px;fill:var(--muted);pointer-events:none}.sch-pin{fill:var(--panel);stroke:var(--accent);stroke-width:2;cursor:crosshair}.sch-pin:hover,.sch-pin.on{fill:var(--accent)}.sch-wire{fill:none;stroke:var(--text);stroke-width:2;cursor:pointer}.sch-wire.on{stroke:var(--accent);stroke-width:3}.sch-wire.pending{stroke:var(--accent);stroke-dasharray:5 4;pointer-events:none}.sch-side{border-left:1px solid var(--border);padding:10px 12px;overflow-y:auto;background:var(--panel)}.sch-signals .xychart{max-height:200px}.sch-side p,.sch-side .muted{font-size:12px;line-height:1.4}.gh-link{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--muted);text-decoration:none;margin-right:10px;white-space:nowrap}.gh-link:hover{color:var(--text)}.gh-link svg{width:16px;height:16px}.solve-progress{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;margin-right:10px;color:var(--accent);white-space:nowrap}.solve-progress .bar{width:120px;height:6px;background:var(--border);border-radius:3px;overflow:hidden;display:inline-block}.solve-progress .fill{display:block;height:100%;background:var(--accent);transition:width .15s}.solve-progress .fill.indet{width:40%;animation:indet 1s linear infinite}@keyframes indet{0%{transform:translate(-100%)}to{transform:translate(250%)}}.progress{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin:6px 0}.progress>div{height:100%;background:var(--accent);transition:width .15s}.left-tabs{display:flex;gap:2px;padding:6px 8px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.left-tabs button{display:inline-flex;align-items:center;gap:4px;border:1px solid transparent;border-bottom:none;background:none;color:var(--muted);font:inherit;font-size:12px;padding:5px 10px;border-radius:6px 6px 0 0;cursor:pointer}.left-tabs button svg{width:14px;height:14px}.left-tabs button.on{color:var(--accent);border-color:var(--border);background:var(--bg);margin-bottom:-1px}.sch-sidebar-wrap{overflow-y:auto;padding:8px 10px;flex:1;min-height:0}.sch-palette h3{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:8px 0 4px}.sch-comp{display:flex;align-items:center;gap:8px;width:100%;border:1px solid transparent;background:none;color:var(--text);font:inherit;font-size:13px;padding:4px 6px;border-radius:6px;cursor:pointer;text-align:left}.sch-comp:hover{background:var(--accent-soft);border-color:var(--border)}.sch-ico{width:44px;height:24px;flex:none}.sch-sidebar{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.sch-pane{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.sch-signals-bottom{border-top:1px solid var(--border);padding:6px 12px;background:var(--panel);font-size:12px}.sch-signals-charts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sch-signals-charts .xychart{max-height:190px}.tab-hint{font-size:12px}.sch-canvas{cursor:grab}.sch-canvas.wiring,.sch-canvas.wiring .sch-part{cursor:crosshair}.sch-wire-hit{fill:none;stroke:transparent;stroke-width:12;cursor:move}.sch-value{font-size:11px;fill:var(--muted);pointer-events:none;font-family:ui-monospace,monospace}.sch-live{font-size:11px;fill:var(--accent);pointer-events:none;font-variant-numeric:tabular-nums}.sch-comp.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.sch-mode{position:absolute;left:10px;top:10px;background:var(--accent);color:#fff;font-size:12px;padding:3px 8px;border-radius:4px}.sig-pick{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin-bottom:4px}.sig-opt{display:inline-flex;gap:4px;align-items:center;font-size:12px}.xychart.multi .cursor{stroke:var(--muted);stroke-dasharray:3 3}.sch-pane{position:relative}.lib-actions{display:flex;flex-wrap:wrap;gap:6px}.lib-actions .btn{display:inline-flex;align-items:center;gap:4px}.lib-actions svg{width:14px;height:14px}.out-row{display:flex;flex-direction:column;align-items:stretch;min-width:0}.out-row .field.check{margin:2px 0;min-width:0}.out-row .field.check span{white-space:normal;overflow-wrap:anywhere}.out-row>input{margin:0 0 4px 22px;width:calc(100% - 22px);min-width:0;box-sizing:border-box}.femm-modal{width:min(640px,94vw);max-height:86vh;display:flex;flex-direction:column}.femm-modal .hint{font-size:12px;color:var(--muted);margin:0 0 6px}.femm-filter{width:100%;box-sizing:border-box;margin-bottom:6px}.femm-list{overflow:auto;flex:1;min-height:120px;border:1px solid var(--border);border-radius:4px;padding:4px 8px}.femm-folder{margin-bottom:6px}.femm-row{display:flex;align-items:center;gap:6px;font-size:12.5px;padding:1px 0 1px 18px}.femm-row.folder{padding-left:0;margin-top:4px}.femm-row .crefs{margin-left:auto}.femm-row .crefs+.crefs{margin-left:8px}.core-ok{color:#3fb950;font-weight:600}.bc-group{border:1px solid var(--border);border-radius:4px;padding:2px 8px 4px;margin:6px 0}.bc-group legend{font-size:11px;color:var(--muted);padding:0 4px}.bc-param.off span,.bc-param.off input{opacity:.45}.bc-color{display:inline-flex;gap:6px;align-items:center}.x-space{visibility:hidden;pointer-events:none}.panel-resizer{position:absolute;top:0;bottom:0;width:7px;cursor:col-resize;z-index:30}.panel-resizer:hover,body.resizing .panel-resizer{background:var(--accent-soft)}.panel-resizer.left{left:calc(var(--left-w, 290px) - 4px)}.panel-resizer.right{left:-4px}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.about-panel{padding:10px 12px;font-size:13px}.about-panel h2{margin:0;font-size:16px}.drawer-tab.on{color:var(--accent);background:var(--accent-soft)}.mat-search{width:calc(100% - 12px);margin:4px 6px 6px;box-sizing:border-box}.mat-menu{max-height:60vh;overflow-y:auto}.fps-pick{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.time-charts{display:grid;gap:8px}.time-charts svg{max-width:720px}
