@-webkit-keyframes spin {
	from {
		-webkit-transform: translate(-50%, -50%) rotate(0deg);
		transform: translate(-50%, -50%) rotate(0deg);
	}
	to {
		-webkit-transform: translate(-50%, -50%) rotate(360deg);
		transform: translate(-50%, -50%) rotate(360deg);
	}
}

@keyframes spin {
	from {
		-webkit-transform: translate(-50%, -50%) rotate(0deg);
		transform: translate(-50%, -50%) rotate(0deg);
	}
	to {
		-webkit-transform: translate(-50%, -50%) rotate(360deg);
		transform: translate(-50%, -50%) rotate(360deg);
	}
}

button[data-state]{
	position: relative;
	overflow: hidden;
}

button[data-state]:before, button[data-state]:after {
	position: absolute;
	-webkit-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	-webkit-transition: all 0.125s ease-out;
	transition: all 0.125s ease-out;
	display: block;
	left: 50%;
}

button[data-state]:before {
	top: -1.5rem;
	content: "";
	width: 1.5rem;
	height: 1.5rem;
	border-radius: 100%;
	border: 3px solid rgba(255, 255, 255, 0.65);
	-webkit-transform-origin: center;
	transform-origin: center;
	border-top: 3px solid white;
	-webkit-animation: spin 0.75s ease-in-out infinite;
	animation: spin 0.75s ease-in-out infinite;
}

button[data-state] span {
	-webkit-transition: opacity 0.25s ease-out;
	transition: opacity 0.25s ease-out;
}
button[data-state]:not([data-state="inactive"]) {
	pointer-events: none;
}
button[data-state="sending"] {
	opacity: 0.75;
}
button[data-state="sending"]:before {
	top: 50%;
}
button[data-state="sending"] span {
	opacity: 0;
}