0.7.2 - rowspan bbox shrink fix
Patch release fixing a layout regression visible in v0.7.1.
_fan_source_inputs_upward (Stage 6.2) lifts source-input chains above the trunk to fill empty top space, but the bbox bottom shrink (Stage 6.13) couldn't then trim the box: its row-mate predicate counted any Y-overlapping section as a mate, which made the bug self-protecting. An LR/RL section that declares grid_row_span > 1 but whose content fits in one row had its pre-shrink bbox extend into the claimed-but-unfilled lower rows, Y-overlap a row-r+1 neighbour, and the neighbour then pinned the bottom -- blocking the very shrink that would remove the overlap.
Most visible on the nf-core/differentialabundance metro map, where section 1 (data_prep, rowspan=2) ended mid-air between row 0 and row 1.
The row-mate predicate now splits by direction: TB sections keep the Y-overlap check (section placement grows TB bbox_h by section_y_gap so fold-style TB sections visually span into their row-r+1 target); LR/RL sections match on the starting grid row only, with the other section's rowspan respected. The grid-row reservation from rowspan>1 is preserved -- auto-placed sections in the same column still skip the claimed rows; only bbox sizing is corrected.
Three of 54 gallery fixtures change visually (pure bbox shrinks, no station/edge movement):
differentialabundance: data_prep bbox_h 508.8 -> 392.0differentialabundance_default: data_prep bbox_h 508.8 -> 392.0genomeassembly_staggered: scaffolding bbox_h 196.3 -> 188.2
Other 51 fixtures are byte-identical.
Full Changelog: 0.7.1...0.7.2