svg:active{cursor:grabbing}.chain-nodes g:hover rect:first-of-type{stroke:var(--color-accent)}.edge{fill:none;stroke:var(--color-neutral-700);stroke-width:1.5px}.edge.main{stroke:var(--color-neutral-400);stroke-width:2px}.edge.fork,.edge.merge{stroke:var(--color-neutral-600)}.edge.branch-merge{stroke:var(--color-neutral-500)}.edge.branch{stroke:var(--color-neutral-700)}.node{cursor:pointer}.node rect{stroke:var(--color-bg);stroke-width:1.5px;transition:transform 80ms ease,fill .2s ease,stroke .2s ease}.node text{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:9px;fill:var(--color-bg);text-anchor:middle;pointer-events:none;font-weight:600}.node.main rect{stroke:var(--color-neutral-100);stroke-width:2px}.node.main text{font-size:10px}.node:hover rect{stroke:var(--color-accent);stroke-width:2.5px}.node.selected rect{stroke:var(--color-accent)!important;stroke-width:3px}.branch-label{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;fill:var(--color-neutral-600);text-anchor:middle;pointer-events:none}#graph.has-progress g.node:not(.done) rect{fill:var(--color-neutral-900);stroke:var(--color-neutral-800)}#graph.has-progress g.node:not(.done) text{fill:var(--color-neutral-700)}#graph.has-progress g.node:not(.done):hover rect,#graph.has-progress g.node:not(.done).selected rect{fill:var(--color-neutral-800);stroke:var(--color-accent)}g.node.done rect{stroke:var(--color-accent-400)!important;stroke-width:2.5px}g.node.main.done rect{stroke-width:3px}g.node.started:not(.done) rect{stroke:var(--color-accent-2-400)!important;stroke-width:2px;stroke-dasharray:2.5 2}
