This is a fun one. Sometimes it can helpful to look at the simplest approach, which in this case might be to use SVG. ;-)
That said, assuming you must do this in CSS and have a reasonable progressive enhancement strategy (i.e. what are you starting with that people will see when their user agent doesn't support all the effects you add), it seem to me that the simplest approach would be to use two boxes: one main box and one rotated to create the diamond shape at the bottom.
We start with the main box that will contain the text. We set the background color, border, a gradient effect. A hard box shadow adds the extra "fabric" around the dashed border. The border width is unset on the right side, the gradient is adjusted to be the right size and placement. We also rotate the whole thing.
div {
position: absolute;
top: 46px; /* height minus box-shadow */
left: 0;
width: 200px;
height: 50px;
background: steelblue;
background-image: linear-gradient(to left, steelblue, rgba(255,255,255,0.5), steelblue);
background-size: 20px 100%;
background-repeat: no-repeat;
background-position: 125px;
transform: rotate(-90deg);
border: 1px dashed black;
border-width: 1px 0 1px 1px;
box-shadow: 0 0 0 4px steelblue;
}
Next, we add a pseudo-element for the diamond shape. To do it perfectly, you'd need a height for the first box that matches the hypotenuse of the isosceles right triangles that you'd get if you split this second box from corner to corner, so that the corners of both boxes align perfectly. I just eyeballed it:
div:before {
position: absolute;
top: 8px;
left: -21px;
display: block;
content: ' ';
width: 33px;
height: 33px;
background: steelblue;
transform: rotate(45deg);
border: 1px dashed black;
box-shadow: 0 0 0 4px steelblue;
border-width: 0 0 1px 1px;
}
Just a box, same treatments as the first (though no gradient and we unset different borders, plus rotated only 45 degrees). We're absolutely positioning this.
And finally, we add some text. By default this would display under the pseudo element, but absolutely positioning solves this.
p {
position: absolute;
color: rgba(255,255,255,0.9);
font: 1.5em Pacifico;
line-height: 0.3em;
}
So, it's not perfect, but
here's a working example.
Please note that I did not use any vendor prefixes, so viewers might need to adjust for specific browsers. And, it won't work everywhere, so perhaps SVG is still an option for you.