I don't think it makes sense to pretend you're using CSS; you're not. CSS selectors are much, much more complex that what you describe, and even if you could use a real CSS parser/matcher you'd probably run into a lot of open questions and contradictions trying to apply real CSS to your non-HTML data.
So what you want is a small subset of CSS-like functionality, i.e. only direct selectors. For that, your nested map structure is OK, though as Pesto and jjnguy said it would be better to go for more type safety.
The remaining question, which only you can answer is: does it really make sense to represent the styling information in a pseudo-CSS syntax that you'll have to write your own parser for? Who will write the styling information? Are they familiar with CSS? If yes, won't they be irritated at not being able to use more complex selectors? If no, why go through all the effort to make it look like CSS? Why not use something simpler like a properties file, or if you want more structure, something with existing parsers, like XML or JSON?