Rating Stars


How do you rate this product?

HTML
<div class="rating_wrap">
	<p>How do you rate this product?</p>
	<div class="rating || validate_radio">
		<input type="radio" id="star5" name="reviews[rate]" value="5">
		<label for="star5"></label>
		<input type="radio" id="star4" name="reviews[rate]" value="4">
		<label for="star4"></label>
		<input type="radio" id="star3" name="reviews[rate]" value="3">
		<label for="star3"></label>
		<input type="radio" id="star2" name="reviews[rate]" value="2">
		<label for="star2"></label>
		<input type="radio" id="star1" name="reviews[rate]" value="1">
		<label for="star1"></label>
		<div class="clearfix"></div>
	</div>
</div>
CSS
.rating{display:block;width:15rem;margin:0 auto}
.rating.validate_radio.validate_error input[type='radio'] + label::before{border:none!important;color:#e57373}
.rating.validate_radio.validate_error input[type='radio']:checked ~ label::before{color:#f1cd06}
.rating input[type='radio'] + label{float:right;position:relative;width:3rem;height:3rem;cursor:pointer;padding-left:0;display:inline-block;margin-right:0;margin-bottom:0;-webkit-border-radius:unset;-moz-border-radius:unset;border-radius:unset}
.rating input[type='radio'] + label:not(:first-of-type){padding-right:.2rem}
.rating input[type='radio'] + label::before{content:"\2605";font-size:2.7rem;color:#ccc;line-height:1;position:static;left:unset;top:unset;right:unset;width:2rem;height:2rem;border:none;background:transparent;-webkit-border-radius:unset;-moz-border-radius:unset;border-radius:unset;-webkit-transition:none;-o-transition:none;-moz-transition:none;transition:none}
.rating input[type='radio'] + label::after{display:none!important}
.rating input{display:none}
.rating input[type='radio']:checked ~ label::before,.rating:not(:checked) > label:hover::before,.rating:not(:checked) > label:hover ~ label::before{color:#f1cd06;background-color:transparent;border:none}
SCSS
/* Vars */
$validate:        #e57373;

.rating {
	display: block;
	width: 15rem;
	margin: 0 auto;
	
	&.validate_radio.validate_error {
		input[type='radio'] + label {
			&::before {
				border: none !important;
				color: $validate;
			}
		}
		
		input[type='radio']:checked ~ label::before {
			color: #f1cd06;
		}
	}
	
	input[type='radio'] + label {
		float: right;
		position: relative;
		width: 3rem;
		height: 3rem;
		cursor: pointer;
		padding-left: 0;
		display: inline-block;
		margin-right: 0;
		margin-bottom: 0;
		border-radius: unset;
		
		&:not(:first-of-type) {
			padding-right: .2rem;
		}
		
		&::before {
			content: "\2605";
			font-size: 2.7rem;
			color: #ccc;
			line-height: 1;
			position: static;
			left: unset;
			top: unset;
			right: unset;
			width: 2rem;
			height: 2rem;
			border: none;
			background: transparent;
			border-radius: unset;
			-webkit-transition: none;
			-o-transition: none;
			transition: none;
		}
		
		&::after {
			display: none !important;
		}
	}
	
	input {
		display: none;
	}
}

.rating input[type='radio']:checked ~ label::before,
.rating:not(:checked) > label:hover::before,
.rating:not(:checked) > label:hover ~ label::before {
	color: #f1cd06;
	background-color: transparent;
	border: none;
}