Hola. Quería aclarar que la sintaxis correcta de para pseudo elementos es con :: por ejemplo p::first-letter {}, y la de pseudo clases sí es con : por ejemplo a:active {}. Actualmente los navegadores soportan las 2 formas para los pseudoelementos, pero no hay garantía que se mantenga en el futuro.