I have the following css code:
.steps .step:before {
  content: attr(data-number);
  /* IE8? */
  display: block;
  width: 60px;
  height: 60px;
  font-size: 36px;
  font-weight: 300;
  line-height: 60px;
  text-align: center;
  color: #18bfa3;
  border: 1px solid #18bfa3;
  border-radius: 55%;
  position: absolute;
  left: -70px;
}
which is then applied to a div:
<div class="steps">
 <div class="step animate" data-number="1">
  Some content
 </div>
 <div class="step animate" data-number="2">
  Some content
 </div>
</div>
Everything works fine in modern browsers, but in IE8 i get the :before elements with borders and everything, but no content (ie the number) and if I inspect the element, the css shows content: attr(data-number); FONT-WEIGHT: 300 all on the same line, as is the line-brake wasn't there or something. see attached screenshot.

Any idea why this is happening and how can I stop it?
EDIT:
This is the rendered layout. Notice the empty rectangles, that is where the numbers should be and the rectangle is in fact the rendered :before pseudo-element.
