From the title, one would assume that this might be a broad question, but it's actually based on 3 specific problems that I'm having in an attempt to replicate the upward-flowing, staggered format of a typical SMS conversation.

How can the common text message format be replicated purely with CSS?
Consider the following code:
<div id="messages" class="bordered shadowed">
<div class="message from">Hey</div>
<div class="message to">Sup</div>
<div class="message from">How are ya?</div>
</div>
1. I can stagger the messages (.to anchored at the right and .from anchored at the left) by applying float:left/right but this leads to a problem:
The second time a .to is appended to #messages, unless it is a long message, it will be placed right beside the previous one, not below, because that's how float works.
2. Well, I tried to remedy this by placing each .message into a .messageWrapper and applying width:100% to the wrapper, but this leads to another problem:
.messages (which have float:left/right) don't fill the .messageWrapper, properly, and from there it gets a bit confusing.
3. Finally, I'm at a loss for how I might apply a solution to those problems in a way that will also let me anchor the elements to the bottom of the container as they should be, so that they flow upward.
Example:
I have a rather nice looking example, meaning there's a bulky bit of css, so I've minified to go on one line, avoiding a big code block here. If you'd like to view / edit it, simply click "edit the above snippet" and hit tidy.
div,input{box-sizing:border-box}:focus{outline-color:transparent;outline-style:none}::selection{background:#00a9ff}body{padding:0;margin:0;background-color:#0090d8}.float{float:left}.bordered{border-style:solid;border-width:1px}.shadowed{box-shadow:rgba(0,0,0,.1) 0 0 30px -10px inset,rgba(0,0,0,.5) 0 0 8px -5px inset}#messenger{width:50vw;height:100vh;background-color:#dbdbdb;font-family:Arial;border-width:0 10px;border-color:#26c8ff;margin-left:50px;box-shadow:rgba(38,200,255,.8) 0 0 300px -50px,rgba(38,200,255,.8) 0 0 10px -2px}#messages{color:#dbdbdb;width:100%;height:50%;background-color:#fff;padding:10px}#guesses{width:100%;height:40px}.guess{color:#efefef;font-size:24px;width:33.3333333%;height:100%;box-shadow:rgba(255,255,255,.2) 0 0 50px 10px inset;text-align:center;padding-top:5px;transition:box-shadow .3s,color .2s}.guess:hover{box-shadow:rgba(255,255,255,1) 0 0 120px -20px inset;color:#fff;cursor:pointer}#input{width:80%;height:30px;text-align:center;cursor:pointer;font-size:17px}#send{border-color:#212121;color:#fff;width:20%;background-color:#3f3f3f;height:30px;text-align:center;padding-top:5px;font-size:17px;box-shadow:rgba(255,255,255,.2) 0 0 50px 10px inset;transition:box-shadow .3s,color .2s}#send:hover{box-shadow:rgba(0,0,0,.3) 0 0 20px 0 inset;color:#fff;cursor:pointer}.message{padding:5px 10px;border-radius:100px;margin-top:50px;color:#fff}.to{float:right;background-color:#26c8ff;border-color:#00a2d8}.from{float:left;background-color:#0090d8;border-color:#005f8e}
<div id="messenger" class="bordered">
<div id="messages" class="bordered shadowed">
<div class="message from bordered">Hey</div>
<div class="message to bordered">Sup</div>
<div class="message from bordered">How are ya?</div>
</div>
<input type="text" id="input" class="float" placeholder="Message"></input>
<div id="send" class="bordered float">Send</div>
<div id="guesses">
<div class="guess bordered float" id="guess-1">A</div>
<div class="guess bordered float" id="guess-2">No</div>
<div class="guess bordered float" id="guess-3">Bet</div>
</div>
</div>
LIVE DEMO: http://jsfiddle.net/fr6ur53s/
clear:both;to both the.toand.fromcss classes and replace themargin-topon.messagecss class withmargin-bottom: 4px;or similar, to give some margin between consecutivetoorfrommessages