I'm trying to responsively position four div elements. My approach is to use the CSS float:left statement (jsFiddle code example).
CSS
.smart-box {
width: 28%;
min-width: 330px;
margin-right: 4%;
vertical-align: top;
float: left;
}
HTML
<div class="smart-box">
<h3>Category 1</h3>
<ul>
<li>...</li>
</ul>
</div>
<div class="smart-box">
<h3>Category 2</h3>
<ul>
<li>...</li>
</ul>
</div>
...
This is an example with desired behaviour of those boxes.

Problem
But when the window is (horizontally) too small, the boxes behave in an unwanted way (see screenshot).

What do I have to modify to either place #4 under #1 or in the order drafted below?
+-----+ +-----+
| 1 | | 3 |
+-----+ +-----+
+-----+ +-----+
| 2 | | 4 |
+-----+ +-----+