Every card is a fixed nodeWidth, but autoNodeHeight measures each card's content and
sizes its height to fit. Cards with more text grow taller instead of clipping; short cards stay compact (down to
minHeight). Edges, badges, and collapse/expand all track the measured heights.