What about using `display: none` instead of `visibility: hidden;`? The first one won't create a gap in place of the hidden element.