The social icons are neat, but using filter would be shorter than manually setting normal and hover styles, at the cost of having inconsistent gray colors:
.icon:not(:hover) {
filter: grayscale(1);
}