I changed a few things around and looks like it works for variable height now, although you have to specify a max height.
.slide {
clear: both;
width: 100%;
max-height: 0px;
overflow: hidden;
text-align: center;
transition: max-height .4s ease;
}
.fake-checkbox:checked+.slide {
max-height: 500px;
}