on a block element, width:auto IS 100% with padding included. in order for it to “shrinkwrap” you need to use float, position:absolute OR display:inline ( or inline-block).
Then I would lean towards display:inline-block; since you are setting a height on it.
As dresden_phoenix mentioned, it is a shrinkwrapping element that will expand to the width of it’s content. It is also capable of taking dimensions like a block level element.
Note that inline-table won’t work for IE7 and under though so inline-block may have been a better choice as there is a hack to make it work in IE7 and under also - if you are interested