.elem {
	display: inline;
	position: relative;
	z-index: 2;
	text-decoration: none;
	box-sizing: border-box;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	-webkit-touch-callout: none;
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
	padding: 0px;
	white-space: nowrap;
	overflow: hidden;
	will-change: transition;
	-webkit-transition: color 3s ease;
	-moz-transition: color 3s ease;
	-ms-transition: color 3s ease;
	-o-transition: color 3s ease;
	transition: color 3s ease;
}

.elem:hover,
.elem:focus {
	outline: 0;
	color: color;
	will-change: transition;
	-webkit-transition:  color 1s ease; /* add delay if wanted */
	   -moz-transition:  color 1s ease; /* add delay if wanted */
	    -ms-transition:  color 1s ease; /* add delay if wanted */
	     -o-transition:  color 1s ease; /* add delay if wanted */
	        transition:  color 1s ease; /* add delay if wanted */
	cursor: pointer;
}

.elem:before {
	-webkit-transition:  all 1s linear; /* add delay if wanted */
	   -moz-transition:  all 1s linear; /* add delay if wanted */
	    -ms-transition:  all 1s linear; /* add delay if wanted */
	     -o-transition:  all 1s linear; /* add delay if wanted */
	        transition:  all 1s linear; /* add delay if wanted */
}

.elem:after {
	-webkit-transition:  all 1s linear; /* add delay if wanted */
	   -moz-transition:  all 1s linear; /* add delay if wanted */
	    -ms-transition:  all 1s linear; /* add delay if wanted */
	     -o-transition:  all 1s linear; /* add delay if wanted */
	        transition:  all 1s linear; /* add delay if wanted */
}

.elem:hover:after,
.elem:focus:after {
	outline: 0;
	background-color: #babbbb;
	-webkit-transition:  all 1s linear; /* add delay if wanted */
	   -moz-transition:  all 1s linear; /* add delay if wanted */
	    -ms-transition:  all 1s linear; /* add delay if wanted */
	     -o-transition:  all 1s linear; /* add delay if wanted */
	        transition:  all 1s linear; /* add delay if wanted */
}

.element:hover:before,
.element:focus:before {
	outline: 0;
	background-color: #babbbb;
	-webkit-transition:  all 1s linear; /* add delay if wanted */
	   -moz-transition:  all 1s linear; /* add delay if wanted */
	    -ms-transition:  all 1s linear; /* add delay if wanted */
	     -o-transition:  all 1s linear; /* add delay if wanted */
	        transition:  all 1s linear; /* add delay if wanted */
}