You have quite a lot here, so I simplified your code a bit to illustrate a few ideas that will help clarify the situation.
Consider the following:
<div id="calculator"> <div class="button">Basic</div> <div class="button"><span style="font-size: 30px;">Tall</span></div> <div class="button"> <img src="http://placehold.it/28x28"> </div> <div class="button"> <img src="http://placehold.it/28x28" style="vertical-align: bottom;"> </div> <div class="button" style="height: 28px; width: 28px;"> <img src="no-image.jpg"> </div> <div class="button" style="height: 28px; width: 28px;"> <img src="no-image.jpg" alt="alt"> </div> <div class="button"> <img src="no-image.jpg" alt="alt"> </div> </div>
and the following CSS (essentially your button style):
.button { border: 1px outset; background-color: #FACC43; color: darkgreen; display: inline-block; margin: 10px 0px; }
and update script: http://jsfiddle.net/audetwebdesign/j3SRn/

Going from left to right, I show 7 buttons on the built-in blocks.
Button 1, only text, the built-in unit is compressed to the place, quite simple.
Button 2, increase the font size, again, the box is compressed all the way, and note that at the bottom of the text there is a common base line with button 1.
Button 3, image 28x28, the bottom of the image is on the baseline, notice the gap under the image.
Button 4 is the same as 3, but use vertical-align: bottom , and the image is slightly lower at the bottom of the line row.
Button 5, in this case, the image file is missing, so a 28x28 square is drawn around a nonexistent image (dimensions 0x0 px) and is located in the middle of the line, so it protrudes upward.
Button 6, there is no image, but this time we have alt text wrapped in a 28x28 square, so the text falls on the base line and the boundary fields around it and projects down.
Button 7, no image with alt text, no window size, so the border is compressed to fit the text that falls on the baseline.
Hope this gives you a sense of how the built-in blocks behave, a fairly flexible element.