Centering in CSS is not easy. But each time I must vertically center, I must search the web to convince myself that I have no choice other than using a hack. So I found it comforting to see this admission, coming from the W3C itself:
At this time (2014), a good way to center blocks vertically without using absolute positioning (which may cause overlapping text) is still under discussion.