Generally, just build the table how you want it in the text builder.
By default, when you insert a table into the text creator, it is given a border=1 inline parameter. switch to the "Source" tab to remove this attribute. Publish or debug, and view the barebones table in a modern browser with "inspect element" capabilities (I use Chrome mostly).
Clicking "Inspect element" will bring up the dev tools menu (at the bottom of the browser by default). From here, have a look at the path to the element you selected. (click the image below to enlarge)
Notice the td highlighted in the strip at the bottom; that corresponds to the highlighted row above it. Follow the tags backwards until you find the Control Id you've set for the ListSelect component. In my case, it's "BulletinList". The ListSelect components (and most other form components) are nested in a "wrapper" element called Spanwrapper_[ControlId], which we can generally ignore when dealing within the element's own context. So the element we want to start with in our CSS is the div with the id "BulletinList", which is found in the strip as "div#BulletinList.gaBulletinList" where the ".gaBulletinList" is the theme style applied to the form component (translates to the CSS class).
So to apply CSS styling to this element for every iteration in the array, we'll just lead it down the path like so:
.gaBulletinList > table > tbody > tr > td > table > tbody > tr:first-of-type > td:first-of-type {
color: #8f6764;
font-size: 16px;
font-weight: 500;
padding-left: 5px;
}
Where the chevron symbol is saying "find elements with this tag inside the tag just to the left of it". In the above example, "In elements with the class .gaBulletinList, find all table tags, then find all tbody tags inside those table tags, then find all tr tags inside the tbody tags inside the table tags, etc etc." You can see that the CSS "immediate children" pathing corresponds with the bottom path strip in the screenshot above.
The selectors like "first-of-type" and "nth-of-type" are used to target relative elements. In this case, we're targeting the first td in the first row (tr) of every item in the collection.
Another example:
.gaBulletinList > table > tbody > tr > td > table > tbody > tr:nth-of-type(2) > td:first-of-type {
color: #999999;
padding-left: 10px;
width: 25%;
}
Here we are targeting the first td of the second row (tr) in each item in the collection.
Note that this structure can (and most likely will) fundamentally change if you make any adjustments to the table to which the CSS is applied. We are unable to efficiently use CSS like we would in a standard webpage, because we're only able to directly apply a single class to an element as a theme style (although you can add additional classes with javascript as needed).
Here's some more reading on CSS and Workflow.
http://atmaworkflow.com/tag/css/
let me know if you need more specific examples or further description.
-andrew