@v |-^[block-gap-top]-(.block)-^block-...-^[block-gap-bottom]-| !require;
.block { &[bottom] + ^block == &:next[top]; }; // should be ^^block to point to proper parent
::this[top] + ^[block-gap-top] == .block:first[top] !require;
.block:last[bottom] + ^[block-gap-bottom] == ::this[bottom] !require;