body {counter-reset: h2}
  h2 {counter-reset: h3}
  h3 {counter-reset: h4}
  h4 {counter-reset: h5}
  h5 {counter-reset: h6}

div#body-end {counter-reset:h2}

div#body-start ~ h2:before {counter-increment: h2;
    content: counter(h2) ". "}
div#body-start ~ h3:before {counter-increment: h3;
    content: counter(h2) "." counter(h3) ". "}
div#body-start ~ h4:before {counter-increment: h4;
    content: counter(h2) "." counter(h3) "." counter(h4) ". "}
div#body-start ~ h5:before {counter-increment: h5;
    content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "}
div#body-start ~ h6:before {counter-increment: h6;
    content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "}

div#body-end ~ h2:before {counter-increment: h2;
    content: "Appendix " counter(h2, upper-alpha) ". "}
div#body-end ~ h3:before {counter-increment: h3;
    content: counter(h2, upper-alpha) "." counter(h3) ". "}
div#body-end ~ h4:before {counter-increment: h4;
    content: counter(h2, upper-alpha) "." counter(h3) "." counter(h4) ". "}
div#body-end ~ h5:before {counter-increment: h5;
    content: counter(h2, upper-alpha) "." counter(h3) "." counter(h4) "." counter(h5) ". "}
div#body-end ~ h6:before {counter-increment: h6;
    content: counter(h2, upper-alpha) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "}

h2.nocount:before, h3.nocount:before, h4.nocount:before, h5.nocount:before, h6.nocount:before {
  content: ""; counter-increment: none } 
