My attempt, as posted in comments (http://jsfiddle.net/8Zm96/):
div{
width: 300px;
height: 280px;
background: #fff;
border: solid 1px red;
border-width: 0 1px 1px 1px;
border-radius: 4px;
margin-top: 40px;
position: relative;
}
div:before{
content: '';
position: absolute;
top: -20px;
right: -1px;
border: solid 1px red;
border-width: 1px 1px 0 0;
border-radius: 25px 4px 0 0;
height: 24px;
width: 250px;
background: #fff;
}
div:after{
content: '';
position: absolute;
top: -20px;
left: 2px;
border: solid 1px red;
border-width: 0 0 1px 0;
border-radius: 0 0 20px 0;
height: 20px;
width: 55px;
background: #fff;
}
Zoomed up close, the left corner doesn’t fit, and the two semi-curves actually curve past each other, but none of that is visible at normal zoom. This may be an issue for phones and high-res screens which may display the content zoomed in, or more accurately at the normal zoom.