:root {
	--red: hsl(0, 100%, 80%);
	--yellow: hsl(62, 100%, 80%);
	--green: hsl(122, 100%, 80%);
	--blue: hsl(179, 100%, 80%);
	--purple: hsl(238, 100%, 80%);
	--pink: hsl(302, 100%, 80%);
	
	--fontPoppins: 'Poppins', sans-serif;
}

[type=submit], [type=reset], button, html [type=button] {
	-webkit-appearance: button;
	text-transform: none;
}

body {
	background: hsl(0, 2%, 92%);
	background: hsl(209, 42%, 75%);
	background: hsl(228, 47%, 53%);
	padding: 0;
	margin: 0;
}

.glowButtonWrapper {
	position: relative;
	margin: 1.25em auto;
	padding: 0;
	display: table;
	transition: all 150ms linear;
}

.glowButtonWrapper:hover {
	transform: scale(1.15);
}

.glowButtonWrapper:active {
	transform: scale(0.95);
}

.glowButtonWrapper .glowButton {
	--angle: 0deg;
	--buttonBorder: 4px;
	--buttonBorderRadius: 2.25em;
	--buttonBorderRadiusBefore: 3em;
	
	position: relative;
	display: flex;
	padding: 0.875em 2.1em;
	gap: 0.875em;
	font-size: 1em;
	align-items: center;
	border-radius: var(--buttonBorderRadius);
	font-weight: 160;
	border: 0;
	/* overflow: hidden; */
	transition: background 3ms linear;
	
	color: hsl(0, 0%, 98%);
	font-family: sans-serif;
	
	background: hsla(0, 3%, 42%, 0);
	
	/* border: 2px solid transparent; */
	box-shadow: 0 0 3px hsl(0 0% 0% / 20%), 
		0 1px 6px hsl(0 0% 0% / 15%), 
		0 4px 8px hsl(0 0% 0% / 13%);
	z-index: 1;
}

.glowButtonWrapper:hover .glowButton {
	transition: background 3ms linear;
	
	background: conic-gradient(
		in hsl longer hue from var(--angle), 
		hsl(0, 100%, 80%) 0 0
	) border-box;
	background-repeat: no-repeat;
	background-size: 100% 100%;
	
	box-shadow: 
		0 0 3px hsl(0 35% 80% / 65%), 
		0 1px 6px hsl(60 15% 80% / 50%), 
		0 4px 8px hsl(120 48% 80% / 30%), 
		0 5px 11px hsl(5 20% 80% / 20%);
	
	mix-blend-mode: color-dodge;
	
	animation: angle 2s linear infinite;
}

@property --angle {
	syntax: '<angle>'; 
	initial-value: 0deg;
	inherits: false
}

/* target only Firefox */
@-moz-document url-prefix() {
	.glowButtonWrapper .glowButton {
		transition: all 250ms linear;
		background: transparent;
	}
	
    .glowButtonWrapper:hover .glowButton {
		--angleFX: 0deg;
		/* transition: background 3ms linear; */
		transition: background 3ms linear;
		background:
		conic-gradient(
			from var(--angleFX) at 50% 50%,
			var(--red),
			var(--yellow),
			var(--green),
			var(--blue),
			var(--purple),
			var(--pink),
			var(--red)
		) border-box;
		
		animation: angleFX 2s linear infinite;
    }
}

.glowButtonWrapper .glowButton:before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	/*
	width: calc(100% - 7.5px);
	height: calc(100% - 7.5px);
	*/
	width: 100%;
	height: 100%;
	transform: translate(-50%, -50%);
	margin: 0 auto;
	padding: 0;
	
	background: hsl(233 12% 13% / 1) padding-box;
	background:
	linear-gradient(
		to bottom,
		hsl(228 5% 20% / 1),
		hsl(228 4% 25% / 1)
	) padding-box;
	border: 1px solid hsl(210 14% 9% / 60%);
	
	border-radius: var(--buttonBorderRadiusBefore);
	z-index: -1;
}

.glowButtonWrapper:hover .glowButton:before {
	width: calc(100% - 7.2px);
	height: calc(100% - 7.2px);
	
	box-shadow: 0 1px 0px hsl(0 0% 45% / 100%) inset,
		0 0 2px hsl(0 0% 75% / 30%);
		
	background: hsl(0 0% 25% / 90%) padding-box;
	background:
	linear-gradient(
		to bottom,
		hsl(228 5% 20% / 88%),
		hsl(228 4% 25% / 92%)
	) padding-box;
}

@keyframes angle { to { --angle: 1turn; } }

@keyframes angleFX {
	00.00% { --angleFX: 0deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	04.16% { --angleFX: 15deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	08.32% { --angleFX: 30deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	12.48% { --angleFX: 45deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	16.64% { --angleFX: 60deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	20.80% { --angleFX: 75deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	24.96% { --angleFX: 90deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	29.12% { --angleFX: 105deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	33.28% { --angleFX: 120deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	37.44% { --angleFX: 135deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	41.60% { --angleFX: 150deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	45.76% { --angleFX: 165deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	49.92% { --angleFX: 180deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	54.08% { --angleFX: 195deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	58.24% { --angleFX: 210deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	62.40% { --angleFX: 225deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	66.56% { --angleFX: 240deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	70.72% { --angleFX: 255deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	74.88% { --angleFX: 270deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	79.04% { --angleFX: 285deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	83.20% { --angleFX: 300deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	87.36% { --angleFX: 315deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	91.52% { --angleFX: 330deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	95.68% { --angleFX: 345deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
	100.0% { --angleFX: 360deg; background: conic-gradient( from var(--angleFX) at 50% 50%, var(--red), var(--yellow), var(--green), var(--blue), var(--purple), var(--pink), var(--red) ); }
}