se non andassi a capo nel codice (parlo proprio del markup dei div) funzionerebbe

i browser moderni considerano nodi di testo (vuoti, ma pur sempre nodi) spazi e rimandi a capo nel codice
il che vuol dire che il firstChild c'e', ma non e' un elemento, quindi cercare di settarne lo stile genera un errore

risolvi valutando il nodeType del nodo in questione, se e' 1 hai a che fare con un elemento, altrimenti devi considerare il nextSibling finche' non diventa 1

var first = getFirstChild(document.getElementById( "primo"));

dove getFirstChild e' qualcosa del genere
codice:
function getFirstChild(el){
  while(el && el.nodeType!=1){
    el=el.nextSibling;
  }
  return el;
}
ciao