
.checkbox-box-sizes() {
	top: 0;
	left: 0;
	width: 18px;
	height: 18px;
	border: 2px solid #999;

	transform: rotate(0deg);
}

.checkbox-mark-sizes() {
	top: -1px;
	left: 5px;
	width: 10px;
	height: 18px;
	border: 2px solid #0F9D58;
	border-width: 0 2px 2px 0;

	transform: rotate(45deg);
}

.checkbox-result-sizes() {
	top: 13px;
	left: 5px;
	width: 4px;
	height: 4px;

	transform: rotate(45deg);
}

.e-component {

	white-space: nowrap;

	* {
		display: inline-block;
	}

	select:focus {
		outline: 1px dotted;
	}

	&.e-checkbox {

		cursor: pointer;
		margin-bottom: 6px;
		margin-left: -2px;
		padding: 2px;

		&:focus {
			outline: 1px dotted;
		}

		&.disabled {
			cursor: not-allowed;
			opacity: 0.5;
		}
	}

	span {
		margin-left: 0.5em;
		white-space: normal;
	}

	select + span {
		line-height: 1.43em;
		padding: 4px 0;
	}
}

.e-checkbox.material-design {

	line-height: 20px;

	> div {
		position: relative;
		width: 18px;
		height: 18px;
		vertical-align: top;
	}

	> div > div {
		position: absolute;
		box-sizing: border-box;
		margin-top: 1px;

		animation: checkmark-to-box 200ms ease-out forwards;
	}

	div.checked {
		animation: box-to-checkmark 200ms ease-out forwards;
	}
}

@keyframes box-to-checkmark {
	0% { .checkbox-box-sizes(); }
	50% { .checkbox-result-sizes(); }
	100% { .checkbox-mark-sizes(); }
}

@keyframes checkmark-to-box {
	0% { .checkbox-mark-sizes(); }
	50% { .checkbox-result-sizes(); }
	100% { .checkbox-box-sizes(); }
}
