Como inverter a ordem dos elementos filhos aninhados

Suponha que eu tenha o seguinte código HTML

HTML

<div class="a">
  <div class="b">
   <div class="c"></div>
  </div>
</div>

CSS

.a, .b, .c {
  width: 100px;
  height: 100px;
  position: relative;
}

.a {
  background: red;
   z-index: 999;
}

.b {
  background: green;
   margin: 40px;
   z-index: 500;
}

.c {
  background: gray;
  margin: 40px;
  z-index: 100;
}

Agora, eu quero que seja exatamente o oposto, ou seja, vermelho no topo de tudo. Eu tentei usar o z-index com a posição definida comorelative&nbsp;mas não funciona. Aqui está ojsfiddle&nbsp;demonstração