Until Google figures a way to have Gmail read your brain waves, it cannot reliably tell if you've read the message. Some mail clients mark a message as "read" only after it has been displayed a certain number of seconds, which might be closer to what you want. But that's not available in Gmail.
That's not to say that there aren't workarounds.
You could enable the Message Sneak Peek lab feature: Click the gear icon -> Settings -> Labs, scroll down to Message Sneak Peek, and click Enable. Go back to your inbox and right-click on any message. The message will be displayed in a popup window, without being marked as read.
Another thing I find myself doing, is mark a message unread after I've opened it, by clicking More -> Mark as unread (or press Shift+U if you have keyboard shortcuts enabled).
Also, starring messages is perhaps the most obvious way of keeping track of important emails that I need to deal with later. I use this in combination with the Multiple inboxes lab feature, so that a section of my inbox view is reserved for starred messages. When I've dealt with the message, I unstar it, and it is archived.
You are trying to turnoff one of the strengths of Gmail. A message can have multiple labels. When Gmail puts the work and contatct1 labels it is doing that because the contactx label is a sub-label of the work label.
Multiple labels make it easier to find messages/conversations because you can use the presence or absence of labels to filter the results of the search. The message is still only in one place it just has multiple labels. Each message has zero or more labels. Inbox is a label, archiving just removes the inbox label.
Best Answer
Use tables and supported CSS properties and media queries.