th {
    background: thistle;
    font-family: sans-serif;
    height: 200px;
    min-width: 90px;
    /*
      min-width is large enough to stop
      the longest header text you will have from
      overlapping when the table is the smallest it will be
    */
    /* word-wrap: break-word; */
}

th span {
    display: block;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    transform: rotate(-90deg);
    font-weight: normal;
    /*text-transform: uppercase;*/
    max-width: 150px;
    color: #000000;
    /*
      max-width contains the span and
      must match the height of the th minus
      any padding you want
    */
}

.shorty {
    min-width: 70px;
}

/*
   You could give a class like this
   to your shorter headers if you wanted
   maybe apply it with javascript or
   if you use PHP / whatever you could
   apply it to strings of a certain size.
*/