I had it close to working, but the very first module (Chat, in the example above) would appear at the bottom of every single tab.
Most likely you added an extra character somewhere or deleted a character somewhere in your code. Omitting one quotation mark where it needs to go - can alone - throw off all the tabs.
Other common mistakes will be not using a different report number for each and every tab, not adding current to the first tab in each navigation section, making sure each first tab does NOT have display:none; in the content section, and making sure the other tabs DO have display:none; in each content section.
CSS
If your tabs are in immediate view every time someone goes to your home page... I'd put the styling at the top of the HPM you're using (for loading order). If you're using multiple tabs in multiple HPMs, they load in order so you'd put the style at the top of the first HPM (only) to catch all the subsequent HPMs.
(If you insist on leaving the style inside the HPM which is lazy and not ideal anyway.)
You can also pick and choose which captions you want to hide... so in the following example I'm calling out my 30 series (which for me is my_news, hot_news, news_articles) and a shorthand for all the top performers tabs:
.report31 caption, .report32 caption, .report33 caption, #home #top_performers caption {display:none; }
Obviously I removed this part of the CSS so the other captions I want to show are actually showing:
.reports-content .report caption {display:none; }