Changing cursor to pointer on span within label
<p>I'm using pure CSS styling for radio buttons on a website (used from <a href="http://code.stephenmorley.org/html-and-css/styling-checkboxes-and-radio-buttons/" rel="noreferrer">here</a>) but am struggling to change the cursor to a pointer on the whole of the label and span within the labrl (which is what styles the appearance of the radio button itself).</p>

<p><strong>Markup</strong></p>

<pre><code>&lt;div class="demonstration pureCSS"&gt;
  &lt;div&gt;
    &lt;input id="checkboxPureCSS1" type="checkbox" name="checkboxPureCSS" value="1" checked="checked"&gt;&lt;label for="checkboxPureCSS1"&gt;&lt;span&gt;&lt;/span&gt;Option 1&lt;/label&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;input id="checkboxPureCSS2" type="checkbox" name="checkboxPureCSS" value="2"&gt;&lt;label for="checkboxPureCSS2"&gt;&lt;span&gt;&lt;/span&gt;Option 2&lt;/label&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;input id="checkboxPureCSS3" type="checkbox" name="checkboxPureCSS" value="3"&gt;&lt;label for="checkboxPureCSS3"&gt;&lt;span&gt;&lt;/span&gt;Option 3&lt;/label&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;br /&gt;

&lt;div class="demonstration pureCSS"&gt;
  &lt;div&gt;
    &lt;input id="radioPureCSS1" type="radio" name="radioPureCSS" value="1" checked="checked"&gt;&lt;label for="radioPureCSS1"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Option 1&lt;/label&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;input id="radioPureCSS2" type="radio" name="radioPureCSS" value="2"&gt;&lt;label for="radioPureCSS2"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Option 2&lt;/label&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;input id="radioPureCSS3" type="radio" name="radioPureCSS" value="3"&gt;&lt;label for="radioPureCSS3"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;Option 3&lt;/label&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code></pre>

<p><strong>CSS</strong></p>

<pre><code>.pureCSS input[type=checkbox]:not(old),
.pureCSS input[type=radio   ]:not(old){
  width     : 2em;
  margin    : 0;
  padding   : 0;
  font-size : 1em;
  opacity   : 0;
}

.pureCSS input[type=checkbox]:not(old) + label,
.pureCSS input[type=radio   ]:not(old) + label{
  display      : inline-block;
  margin-left  : -2em;
  line-height  : 1.5em;
  cursor: pointer;
}

.pureCSS input[type=checkbox]:not(old) + label &gt; span,
.pureCSS input[type=radio   ]:not(old) + label &gt; span{
  display          : inline-block;
  width            : 0.875em;
  height           : 0.875em;
  margin           : 0.25em 0.5em 0.25em 0.25em;
  border           : 0.0625em solid rgb(192,192,192);
  border-radius    : 0.25em;
  background       : rgb(224,224,224);
  background-image :    -moz-linear-gradient(rgb(240,240,240),rgb(224,224,224));
  background-image :     -ms-linear-gradient(rgb(240,240,240),rgb(224,224,224));
  background-image :      -o-linear-gradient(rgb(240,240,240),rgb(224,224,224));
  background-image : -webkit-linear-gradient(rgb(240,240,240),rgb(224,224,224));
  background-image :         linear-gradient(rgb(240,240,240),rgb(224,224,224));
  vertical-align   : bottom;
}

.pureCSS input[type=checkbox]:not(old):checked + label &gt; span,
.pureCSS input[type=radio   ]:not(old):checked + label &gt; span{
  background-image :    -moz-linear-gradient(rgb(224,224,224),rgb(240,240,240));
  background-image :     -ms-linear-gradient(rgb(224,224,224),rgb(240,240,240));
  background-image :      -o-linear-gradient(rgb(224,224,224),rgb(240,240,240));
  background-image : -webkit-linear-gradient(rgb(224,224,224),rgb(240,240,240));
  background-image :         linear-gradient(rgb(224,224,224),rgb(240,240,240));
}

.pureCSS input[type=checkbox]:not(old):checked + label &gt; span:before{
  content     : '✓';
  display     : block;
  width       : 1em;
  color       : rgb(153,204,102);
  font-size   : 0.875em;
  line-height : 1em;
  text-align  : center;
  text-shadow : 0 0 0.0714em rgb(115,153,77);
  font-weight : bold;
}

.pureCSS input[type=radio]:not(old):checked +  label &gt; span &gt; span{
  display          : block;
  width            : 0.5em;
  height           : 0.5em;
  margin           : 0.125em;
  border           : 0.0625em solid rgb(115,153,77);
  border-radius    : 0.125em;
  background       : rgb(153,204,102);
  background-image :    -moz-linear-gradient(rgb(179,217,140),rgb(153,204,102));
  background-image :     -ms-linear-gradient(rgb(179,217,140),rgb(153,204,102));
  background-image :      -o-linear-gradient(rgb(179,217,140),rgb(153,204,102));
  background-image : -webkit-linear-gradient(rgb(179,217,140),rgb(153,204,102));
  background-image :         linear-gradient(rgb(179,217,140),rgb(153,204,102));
}
</code></pre>

<p>I have replicated the scenario as a <a href="https://jsfiddle.net/zigojacko/csrr3axq/1/" rel="noreferrer">jsfiddle</a> and set the cursor to pointer on the labels but when you hover over the radio buttons, the cursor returns to it's default state.</p>

<p>Is it possible to change the cursor to a pointer on radio button hover? I have tried setting a <code>cursor: pointer</code> on the <code>span:hover</code> but this did not seem to have any effect.</p>