:root{--bg: #eef0f3;--panel: #fff;--line: #dfe3e8;--text: #1f2933;--muted: #9aa5b1;--accent: #8a6100;--accent-bg: #fff3c4;--accent-line: #f0b400}*{box-sizing:border-box}html,body{height:100%;margin:0}body{display:flex;font:15px/1.4 system-ui,sans-serif;color:var(--text);background:var(--bg);overflow:hidden}#toolbar{width:44px;flex:none;display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0;background:#2b2d31;border-right:1px solid #1e1f22}#toolbar button{width:32px;height:32px;padding:6px;border:1px solid #4a4d55;border-radius:6px;background:none;color:#b5bac1;cursor:pointer}#toolbar button:hover{border-color:#8a8f98;color:#fff}#toolbar button[aria-pressed=true]{border-color:#ffd54a;color:#ffd54a}svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#sidebar{width:300px;flex:none;overflow-y:auto;padding:12px 8px;background:var(--panel);border-right:1px solid var(--line)}body.sidebar-hidden #sidebar{display:none}.group+.group{margin-top:16px}.group h3{margin:0 8px 4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:0;border-radius:6px;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.item:hover{background:var(--bg)}.item.tobe .label{color:#2f6bd8}.item.legacy .label{color:#b0412e}.item.selected{background:var(--accent-bg);color:var(--accent)}.item .label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item .icon{flex:none;width:16px;height:16px;color:var(--muted);opacity:.8}.item .icon svg{width:100%;height:100%}.service-row{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;padding-right:8px}.service-row .item .label{font-weight:600}.service-row.multi .item .label{font-weight:400}.service-row .item{flex:1 1 90px;min-width:0;width:auto}.chips{flex:none;display:flex;gap:4px;margin-left:auto;padding:2px 0}.chip{padding:1px 6px;border:1px solid #62676f;border-radius:4px;background:#62676f;font:inherit;font-size:12px;line-height:1.5;letter-spacing:.03em;color:#e6e8eb;cursor:pointer}.chip.selected{border-color:#ffd54a;color:#ffd54a}.chip.no-link{background:#e3e6ea;border-color:#e3e6ea;color:#8a929c}.chip.no-link.selected{border-color:#ffd54a;color:#8a6100}.chip.no-link:hover{background:#d3d7dd;border-color:#d3d7dd;color:#52606d}.chip:hover{background:#ffd54a;border-color:#ffd54a;color:#1f2933}.empty{margin:0 8px;color:var(--muted);font-size:13px}#scheme{flex:1;min-width:0;position:relative;overflow:hidden;cursor:grab}#scheme.dragging{cursor:grabbing}#scheme svg.canvas{width:100%;height:100%;display:block;stroke-width:1.5}.node rect,.node path{fill:var(--panel);stroke:#aab3c0;stroke-width:1.5}.node.external rect,.node.external path{fill:#dfe3e8;stroke:#c9cfd7}.node.external text{fill:#7b8794}.node.external .type{fill:#9aa5b1}.node.tobe rect,.node.tobe path{fill:#e8f0fd;stroke:#3b6fd4}.node.tobe text{fill:#1f4a9c}.node.legacy rect,.node.legacy path{fill:#f6e9e4;stroke:#a0523d}.node.legacy text{fill:#7a3b2a}.node.selected rect,.node.selected path{fill:#fffbe8;stroke:var(--accent-line);stroke-width:2}.node text{fill:var(--text);font-size:15px;stroke:none}.node text.name{font-size:15px}.node.detail text.name{font-size:13px}.node text.stack,.node text.desc{fill:#7b8794;font-size:12px}.node text.desc{font-size:7.5px}.node.tobe text.stack,.node.tobe text.desc{fill:#6b8fcf}.node.legacy text.stack,.node.legacy text.desc{fill:#b07a68}.node.external text.stack,.node.external text.desc{fill:#9aa5b1}.node .type{fill:var(--muted);font-size:12px}.edge,.edge-hit{fill:none}.edge{stroke:#7b8794;stroke-width:1.8}.edge.tobe{stroke:#3b6fd4}.edge.legacy{stroke:#a0523d}.edge.selected{stroke:var(--accent-line);stroke-width:2.5}.tag{fill:#52606d;font-size:11px;cursor:pointer;stroke:var(--bg);stroke-width:4px;paint-order:stroke;stroke-linejoin:round}.tag.tobe{fill:#1f4a9c}.tag.legacy{fill:#7a3b2a}.tag.selected{fill:var(--accent)}.edge-hit{stroke:transparent;stroke-width:14;cursor:pointer}.node{cursor:pointer}
