If you think about it, sup not stressed. but span is still there. Since sup is inside the span , you see an underscore that looks like sup underscore.
Consider this demo: http://jsfiddle.net/mrchief/DTpEa/24/
You will see that id1 css takes precedence, but you still see the underscore that matters span .
To solve this problem, use sup outside the span :
<span class='c1'>Home</span><sup id='id1'>[2]</sup>
source share