I think I get CSS specificity, but this particular case is throwing me:
li:first-child {color:  blue}                /* 3 */
div li {color:  red}                         /* 5 [R2] */
div.widget  ul#todo {color:  cyan}           /* 1 [R3] */
div > ul#todo .important {color:  green}     /* 1 */
ul li.postponed {color:  inherit}            /* 2 */
li + li + li {color:  magenta}               /* 4 */
<div  class="widget">
    <ul id="todo">
       <li>Buy  Bread</li>
       <li>Learn  Guitar </li>
       <li  class="important">Pay  Bills</li>
       <li  class="postponed">Wash  Car</li>
   </ul>
</div>
I wrote the specificity of the selectors at the side. 
I though the colors of the list (per line) should be 
     cyan 
     cyan 
     green 
     cyan 
 
but it comes out as 
     blue 
     red 
     green 
cyan 
I don't understand how R2, with the smaller specificity, can override R3, with the bigger! Could someone explain it, please?