.port,.section-port{touch-action:none}
#canvas{overflow:clip}
.node .port{width:14px;height:14px;margin-left:-7px;cursor:crosshair}
.node .port.top{top:-7px}.node .port.bottom{bottom:-7px}
.node .port{width:calc(12px / var(--canvas-zoom,1));height:calc(12px / var(--canvas-zoom,1));margin-left:calc(-6px / var(--canvas-zoom,1))}
.node .port.top{top:calc(-6px / var(--canvas-zoom,1))}.node .port.bottom{bottom:calc(-6px / var(--canvas-zoom,1))}
.section-port{position:absolute;left:50%;width:15px;height:15px;transform:translateX(-50%);border:1px solid var(--tone-7);border-radius:4px;background:var(--paper);pointer-events:auto;cursor:crosshair;z-index:4}
.section-port.top{top:-8px}.section-port.bottom{bottom:-8px}
.section-port{width:calc(13px / var(--canvas-zoom,1));height:calc(13px / var(--canvas-zoom,1))}.section-port.top{top:calc(-6.5px / var(--canvas-zoom,1))}.section-port.bottom{bottom:calc(-6.5px / var(--canvas-zoom,1))}
.section-port:after{content:'+';display:block;font:12px/12px var(--mono);color:var(--tone-7)}
.network-group.folded:before,.network-group.folded:after{display:none}
.network-group.expanded{z-index:auto}
.section-port:hover,.port:hover,.cable-target{outline:2px solid var(--ink);outline-offset:4px}
.section-port:focus-visible,.port:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.is-connecting{cursor:crosshair}.is-connecting .port,.is-connecting .section-port{opacity:1}
#cable-preview{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:12;pointer-events:none;color:var(--ink)}
#cable-preview path{fill:none;stroke:currentColor;stroke-width:2;stroke-dasharray:7 4}#cable-preview circle{fill:var(--paper);stroke:currentColor;stroke-width:2}
.section-library-connect{margin:0 14px 12px;font-size:10px;justify-content:center}.section-library-connect .icon{width:14px;height:14px}.section-connect-action{margin-bottom:16px}
#section-router-name[hidden]{display:none}
.ip-hint-box{border:1px solid var(--line);border-radius:8px;background:var(--tone-1);padding:11px 12px;margin:-3px 0 16px;font-size:11px}
.ip-hint-box>strong{font-size:11px;font-weight:600}.ip-hint-box>p{font-size:10px;line-height:1.7;color:var(--tone-7);margin:6px 0 10px;overflow-wrap:anywhere}.ip-hint-box .btn{font-size:10px;min-height:30px;padding:7px 9px;max-width:100%;white-space:normal;text-align:left;margin-bottom:6px}.ip-hint-box>small{display:block;font-size:9px;line-height:1.7;color:var(--tone-7);margin-top:3px}.ip-hint-box .text-link{margin-top:10px;font-size:10px}.ip-hint-empty{font-size:10px!important}
