Let me help you to understand the problem and then solve it.
The width of the "contain" class is set to 40%. If the elements can't 'fit' within this then the elements 'flow' to the next line. This is why you see the elements flow to the next line(See below)
NOTE: I have added:
background-color:orange;
height: 200px;
to the "contain" class for better visibility.
To make my point clear, if you were to increase the width of the "contain" class then paragraph tag could fit in the same line. See the below fiddle where the width is set to 400px;
Now, the next thing is that the paragraph tag is a block-level element. By default, it has its own styling( usually provided by the browsers). You will need to overwrite this in this fashion:
* {
margin: 0;
}
This would remove the default margins applied to the page by the browsers. You can see its effect here:
Alternately, you could apply this margin to the p.sign_up class as well in this manner:
p.sign_up {
float: right;
margin:0;
}
See this: http://jsfiddle.net/8xtGr/
Hope this solves your problem.