Asigne una identificación única a valores distintos dentro del grupo con dplyr

Problema: necesito hacer un campo de ID único para los datos que tienen dos niveles de agrupación. En el código de ejemplo aquí, esEmp yColor. La identificación debe estructurarse como:

Emp + número único de cadaColor + número secuencial para duplicadosColors.

Estos valores están separados por puntos.
Datos de ejemplo:

dat <- data.frame(Emp = c("A","A","A","B","B","C"), 
              Color = c("Red","Green","Green","Orange","Yellow","Brown"),
              stringsAsFactors = FALSE)

Se supone que la identificación debe aparecer así:

ID <- c("A.01.001", "A.02.001", "A.02.002", "B.01.001", "B.02.001", "C.01.001")

ID [1] "A.01.001" "A.02.001" "A.02.002" "B.01.001" "B.02.001" "C.01.001"

El sufijo de tres caracteres para la ID para registrar los duplicados se puede hacer como:

 group_by(dat, Emp, Color) %>%
         mutate(suffix = str_pad(row_number(), width=3, side="left", pad="0"))

Pero no puedo asignar números secuenciales a la aparición única deColor con cadaEmp grupo.

Prefiero una solución dplyr, pero cualquier método sería apreciado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta