So I made a test page using your table and applied the CSS to it and I get the same results as you. I then went through commenting out sections of the CSS. It seems it is the white-space:nowrap; that is causing the issue. I would have thought the same as you, that the inline style would override this. Though I think this isn't happening as the nowrap is applied to the <table> and your inline CSS is applied to <TD>.
To clarify it works when I remove the white-space:nowrap; but doesn't if I leave it there.
You could try using pre-wrap instead of no-wrap which seems to work.
nowrap: Sequences of whitespace will collapse into a single whitespace. Text will never wrap to the next line. The text continues on the same line until a <br /> tag is encountered
pre-wrap: Whitespace is preserved by the browser. Text will wrap when necessary, and on line breaks
Alternatively you could apply an inline style to your table to override it which also works.
<table style="white-space: normal;">