Code:
figure {
page-break-after:always;
text-align: center;
}
means that the content of the <figure> block is centered, not that the block itself is centered in the outer container. For that you need to either:
(a) put the the <figure> inside another container, say a <div>, that is width:100% and text-align:center; or
(b) give side margins to the <figure> such that it appears centered, like margin:0 auto, or margin:0 17.5% (for figure.tall)