You don’t need the class on the table cells to define the color - you can define it using CSS values that work out the cell positions to apply what color to.
The fewer places you rely on classes for styling the easier it is to change things just by amending the CSS.
When you have a web site with hundreds or thousands of pages and you can completely redo the site appearance by changing one CSS file instead of having to change every individual page you will recognise the benefit.
There is nothing wrong with the way you have assigned classes and rules.
felgall is saying that it is more efficient to avoid repeating properties unnecessarily.
Remember my example about coding all of the cells the same and writing another rule to change the padding-bottom of the cells in the last row? You can also change the color of the text in the last row in that same exception rule.
I don’t know how to save a revision but try this: (let me know if you can see the change that I made)
It’s not cool to use the same classname for different elements unless the same styles are being applied to different elements. It would be better to use a different classname for the spans or none at all… just target the <span> tags if you can.
Need to address all table cells. However, that was a mistake because I forgot that there are nested tables. That space at the bottom is padding from the outer table.
There is no useful reason to use an outer table. A div would probably suffice for an outer container, if needed.