Given your requirements, I'd suggest ASP or PHP for your game logic, a SQL database for your cards and so on, and DHTML/Ajax to breathe some life into the interface. This approach will be clean, stylish and responsive if implemented well. HTTP provides the reliable communication you need. Because card games are turn-based, the page-refresh paradigm can work very well even without DHTML, eg. MArcomage.
If you want 3D (cards), you could pull in WebGL to do that work for you.
Remember that if you want the game to be ostensibly secure from cheating, you need to implement the logic in backend, so don't use JS for your core game logic, only for the presentation. Clients cannot be trusted in regards to game state updates, only the server can. Clients should only send state delta's to the server, for it's intelligent approval and subsequent incorporation into the actual current game state.
The benefits of the ASP-or-PHP/HTML/CSS/JS approach over any compiled language, including something like Flash, is that the code-debug cycle is quicker -- "recompile" is a page refresh away.
On the other hand, if you're particularly familiar with doing all the necessaries in, say, Java, then by all means. But I guess if that were the case, you wouldn't be posting here ;)