Hi Dave, I think this is simply because the browser (I viewed this with Chrome for instance) cannot fit the table into a smaller area, hence it is “spilling over”.
Word like “calligraphy” for instance can’t be broken across multiple lines and it exists in every column. Even if there is a clever CSS trick to limit the width to no more than 500 pixels (for instance) then that is going to impact severely on readability here. So what we would have to do is workaround this in some other fashion.
One way would be to serve the calendar using a full-width theme template, if that is supported by your theme (or if not then perhaps you could create this).
Another would be to replace this with something rather like the mini-calendar produced by our calendar widget, which is designed to fit into smaller spaces by omitting information contained in the full size calendar: you could also customize the existing calendar to approximate this.
Some great resources I would advise reading up on before taking this further include: