This is a really common issue. You've already done a great job in figuring out the most important part... this is really TWO things that you're trying to do.
1) You're trying to center the box for the list
2) You're trying to left align the text in the list
And two you've already taken care of. Anytime you want to justify text (which is an inline-level element) inside a block-level element, just use text-align: xxxxxx; and you can push it around however you want. This is a fairly robust operation and typically works just like you think it will.
One is definitely the tricky part. (Centering in general can be a pain) Here we are trying to center the box which bounds the list. Since the list is a block-level element we can't use the text-align property to center it. We have to set the left and right margins equal to each other. If you have specific requirements you can define
Code:
margin-left: 4em;
margin-right: 4em;
The key part is that they need to be equal. That's how you achieve centering.
However, in most cases you don't want to lock yourself down, so 90+% of the time you'll see...
Code:
margin-left: auto;
margin-right: auto;
That lets the browser determine how much space it has to work with, but keeps the margins equal so they stay nicely centered.
In practice, there are sometimes other things going on which can throw a monkey wrench into the works, especially if your page (XHTML) or your stylesheets (CSS) don't validate properly. See if that works, and if not check on the validation of your pages at W3C. Or I have them in my
list of web resources.