:root {
	--shadow-offset: 8px;
	--blur-radius: 16px;
	--is-inset: inherit;
}

.neomorph {
	box-shadow: calc(-1 * var(--shadow-offset)) calc(-1 * var(--shadow-offset)) var(--blur-radius) var(--light-shadow), var(--shadow-offset) var(--shadow-offset) var(--blur-radius) var(--dark-shadow);
	background-color: var(--background);

	&Inset {
		box-shadow: inset var(--shadow-offset) var(--shadow-offset) var(--blur-radius) var(--dark-shadow), inset calc(-1 * var(--shadow-offset)) calc(-1 * var(--shadow-offset)) var(--blur-radius) var(--light-shadow);
		background-color: var(--background);

		&.is-nxxsmall {
			--shadow-offset: 2px;
			--blur-radius: 4px;

			&-sm {
				@include MediaQuery(sm) {
					--shadow-offset: 2px;
					--blur-radius: 4px;
				}
			}

			&-md {
				@include MediaQuery(md) {
					--shadow-offset: 2px;
					--blur-radius: 4px;
				}
			}

			&-lg {
				@include MediaQuery(lg) {
					--shadow-offset: 2px;
					--blur-radius: 4px;
				}
			}

			&-xl {
				@include MediaQuery(xl) {
					--shadow-offset: 2px;
					--blur-radius: 4px;
				}
			}

			&-2xl {
				@include MediaQuery(2xl) {
					--shadow-offset: 2px;
					--blur-radius: 4px;
				}
			}
		}

		&.is-nxsmall {
			--shadow-offset: 3px;
			--blur-radius: 6px;

			&-sm {
				@include MediaQuery(sm) {
					--shadow-offset: 3px;
					--blur-radius: 6px;
				}
			}

			&-md {
				@include MediaQuery(md) {
					--shadow-offset: 3px;
					--blur-radius: 6px;
				}
			}

			&-lg {
				@include MediaQuery(lg) {
					--shadow-offset: 3px;
					--blur-radius: 6px;
				}
			}

			&-xl {
				@include MediaQuery(xl) {
					--shadow-offset: 3px;
					--blur-radius: 6px;
				}
			}

			&-2xl {
				@include MediaQuery(2xl) {
					--shadow-offset: 3px;
					--blur-radius: 6px;
				}
			}
		}

		&.is-nsmall {
			--shadow-offset: 6px;
			--blur-radius: 12px;

			&-sm {
				@include MediaQuery(sm) {
					--shadow-offset: 6px;
					--blur-radius: 12px;
				}
			}

			&-md {
				@include MediaQuery(md) {
					--shadow-offset: 6px;
					--blur-radius: 12px;
				}
			}

			&-lg {
				@include MediaQuery(lg) {
					--shadow-offset: 6px;
					--blur-radius: 12px;
				}
			}

			&-xl {
				@include MediaQuery(xl) {
					--shadow-offset: 6px;
					--blur-radius: 12px;
				}
			}

			&-2xl {
				@include MediaQuery(2xl) {
					--shadow-offset: 6px;
					--blur-radius: 12px;
				}
			}
		}
	}

	&.is-nxxsmall {
		--shadow-offset: 2px;
		--blur-radius: 4px;

		&-sm {
			@include MediaQuery(sm) {
				--shadow-offset: 2px;
				--blur-radius: 4px;
			}
		}

		&-md {
			@include MediaQuery(md) {
				--shadow-offset: 2px;
				--blur-radius: 4px;
			}
		}

		&-lg {
			@include MediaQuery(lg) {
				--shadow-offset: 2px;
				--blur-radius: 4px;
			}
		}

		&-xl {
			@include MediaQuery(xl) {
				--shadow-offset: 2px;
				--blur-radius: 4px;
			}
		}

		&-2xl {
			@include MediaQuery(2xl) {
				--shadow-offset: 2px;
				--blur-radius: 4px;
			}
		}
	}

	&.is-nxsmall {
		--shadow-offset: 3px;
		--blur-radius: 6px;

		&-sm {
			@include MediaQuery(sm) {
				--shadow-offset: 3px;
				--blur-radius: 6px;
			}
		}

		&-md {
			@include MediaQuery(md) {
				--shadow-offset: 3px;
				--blur-radius: 6px;
			}
		}

		&-lg {
			@include MediaQuery(lg) {
				--shadow-offset: 3px;
				--blur-radius: 6px;
			}
		}

		&-xl {
			@include MediaQuery(xl) {
				--shadow-offset: 3px;
				--blur-radius: 6px;
			}
		}

		&-2xl {
			@include MediaQuery(2xl) {
				--shadow-offset: 3px;
				--blur-radius: 6px;
			}
		}
	}

	&.is-nsmall {
		--shadow-offset: 6px;
		--blur-radius: 12px;

		&-sm {
			@include MediaQuery(sm) {
				--shadow-offset: 6px;
				--blur-radius: 12px;
			}
		}

		&-md {
			@include MediaQuery(md) {
				--shadow-offset: 6px;
				--blur-radius: 12px;
			}
		}

		&-lg {
			@include MediaQuery(lg) {
				--shadow-offset: 6px;
				--blur-radius: 12px;
			}
		}

		&-xl {
			@include MediaQuery(xl) {
				--shadow-offset: 6px;
				--blur-radius: 12px;
			}
		}

		&-2xl {
			@include MediaQuery(2xl) {
				--shadow-offset: 6px;
				--blur-radius: 12px;
			}
		}
	}

	&.is-nnormal {
		--shadow-offset: 8px;
		--blur-radius: 16px;

		&-sm {
			@include MediaQuery(sm) {
				--shadow-offset: 8px;
				--blur-radius: 16px;
			}
		}

		&-md {
			@include MediaQuery(md) {
				--shadow-offset: 8px;
				--blur-radius: 16px;
			}
		}

		&-lg {
			@include MediaQuery(lg) {
				--shadow-offset: 8px;
				--blur-radius: 16px;
			}
		}

		&-xl {
			@include MediaQuery(xl) {
				--shadow-offset: 8px;
				--blur-radius: 16px;
			}
		}

		&-2xl {
			@include MediaQuery(2xl) {
				--shadow-offset: 8px;
				--blur-radius: 16px;
			}
		}
	}
}

button.neo, .neo {
	&Btn {
		background-image: linear-gradient(145deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
		box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
		border: none;
		-webkit-backface-visibility: hidden;
		backface-visibility: hidden;

		&:focus {
			background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
			box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
			border: none;
		}

		&Small {
			background-image: linear-gradient(145deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
			box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
			border: none;

			&:focus {
				background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
				box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
				border: none;

				&:not(:active) {
					background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
					box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
				}

				& input[type=file] {
					background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
				}
			}

			@include MediaQuery(phone) {
				&-mobile {
					background-image: linear-gradient(145deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
					box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
					border: none;

					&:focus {
						background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
						box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
						border: none;

						&:not(:active) {
							background-image: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
							box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
						}
					}
				}
			}

			&Plain {
				background: var(--background);
				box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
				border: none;

				&:focus {
					box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
					border: none;
				}

				@include MediaQuery(phone) {
					&-mobile {
						box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
						border: none;

						&:focus {
							box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
							border: none;
						}
					}
				}
			}

			&InsetPlain {
				background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
				box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
				border: none;

				&:focus {
					background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
					box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
					border: none;
				}

				@include MediaQuery(phone) {
					&-mobile {
						background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
						box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
						border: none;

						&:focus {
							background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
							box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
							border: none;
						}
					}
				}
			}

			&XInsetPlain {
				background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
				box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
				border: none;

				&:focus {
					background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
					box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
					border: none;
				}

				@include MediaQuery(phone) {
					&-mobile {
						background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
						box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
						border: none;

						&:focus {
							background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
							box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
							border: none;
						}
					}
				}
			}
		}

		&InsetPlain {
			background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
			box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
			border: none;

			&:focus {
				background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
				box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
				border: none;

				&:not(:active) {
					background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
					box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
				}
			}

			@include MediaQuery(phone) {
				&-mobile {
					background-image: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
					box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
					border: none;

					&:focus {
						background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
						box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
						border: none;

						&:not(:active) {
							background-image: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
							box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
						}
					}
				}
			}
		}
	}

	&File {
		box-shadow: 0px 0px 0px var(--light-shadow), 0px 0px 0px var(--dark-shadow);
		transition: all .2s linear;
		-webkit-backface-visibility: hidden;
		backface-visibility: hidden;

		@include MediaQuery(phone) {
			box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
			background: var(--primary-color);
		}

		&:hover {
			box-shadow: -3px -3px 6px var(--light-shadow), 3px 3px 6px var(--dark-shadow);
		}

		&:focus-visible {
			background: linear-gradient(-45deg, var(--primary-gradiend-light), var(--primary-gradiend-dark));
			box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
			outline: none;
		}

		&.isSelected {
			background: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
			box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);

			&:focus-visible {
				background: linear-gradient(-45deg, var(--primary-gradiend-lighter), var(--primary-gradiend-darker));
				outline: none;
			}
		}

		&.is-active, &.active {
			box-shadow: inset 3px 3px 6px var(--dark-shadow), inset -3px -3px 6px var(--light-shadow);
			color: var(--black);
		}
	}

	&Input {
		box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
		background: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
		border: none;

		&:focus {
			background: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
			border: none;
		}
	}

	&Select {
		& > select {
			box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
			background: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
			border: none;

			&:focus {
				background: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter));
				border: none;
			}
		}
	}
}

.neoCheckbox {
	opacity: 0;
	width: 0;

	&:focus + label:before {
		background: linear-gradient(145deg, var(--primary-gradiend-darker), var(--primary-gradiend-lighter)) !important;
	}

	&Container {
		position: relative;
	}

	& + label {
		padding: .15rem .15rem .15rem 2rem;
		cursor: pointer;
		font-size: 1rem;
		line-height: 1.5;

		&:before {
			animation-name: none;
			width: 1.5rem;
			height: 1.5rem;
			border-radius: 100px;
			position: absolute;
			left: 0;
			top: 0rem;
			content: '';
			border: none;
			box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
			background: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light)) !important;
		}
	}

	&:checked.is-checked-bold + label {
		font-weight: bold
	}

	&:checked + label:after {
		display: inline-block;
		width: .375rem;
		height: .6rem;
		top: .35rem;
		left: .55rem;
		transform: translateY(0rem) rotate(45deg);
		border-width: .1rem;
		border-top-width: 0.1rem;
		border-left-width: 0.1rem;
		border-style: solid;
		border-top-style: solid;
		border-left-style: solid;
		border-color: var(--text-color);
		border-top: 0;
		border-left: 0;
		position: absolute;
		content: '';
	}
}

hr.neoSeparator {
	&Flat {
		height: 10px;
		border: none;
		border-radius: 20px;
		box-shadow: -2px -2px 4px var(--light-shadow), 2px 2px 4px var(--dark-shadow);
		background: var(--background);
	}

	&Pressed {
		height: 10px;
		border: none;
		border-radius: 20px;
		box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
		background: linear-gradient(145deg, var(--primary-gradiend-dark), var(--primary-gradiend-light));
	}
}

input.neoRange[type=range] {
	height: 30px;
	-webkit-appearance: none;
	width: 100%;
	background: transparent;

	&:focus {
		outline: none;
	}

	&::-webkit-slider-runnable-track {
		width: 100%;
		height: 20px;
		cursor: pointer;
		animate: 0.2s;
		border-radius: 20px;
		box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
		background: linear-gradient(90deg, hsl(0, 90%, 80%), hsl(10, 90%, 80%), hsl(20, 90%, 80%), hsl(30, 90%, 80%), hsl(40, 90%, 80%), hsl(50, 90%, 80%), hsl(60, 90%, 80%), hsl(70, 90%, 80%), hsl(80, 90%, 80%), hsl(90, 90%, 80%), hsl(100, 90%, 80%), hsl(110, 90%, 80%), hsl(120, 90%, 80%), hsl(130, 90%, 80%), hsl(140, 90%, 80%), hsl(150, 90%, 80%), hsl(160, 90%, 80%), hsl(170, 90%, 80%), hsl(180, 90%, 80%), hsl(190, 90%, 80%), hsl(200, 90%, 80%), hsl(210, 90%, 80%), hsl(220, 90%, 80%), hsl(230, 90%, 80%), hsl(240, 90%, 80%), hsl(250, 90%, 80%), hsl(260, 90%, 80%), hsl(270, 90%, 80%), hsl(280, 90%, 80%), hsl(290, 90%, 80%), hsl(300, 90%, 80%), hsl(310, 90%, 80%), hsl(320, 90%, 80%), hsl(330, 90%, 80%), hsl(340, 90%, 80%), hsl(350, 90%, 80%), hsl(359, 90%, 80%)) !important;
	}

	&::-webkit-slider-thumb {
		border: none;
		height: 26px;
		width: 26px;
		border-radius: 20px;
		box-shadow: 2px 2px 4px var(--dark-shadow), -2px -2px 4px var(--light-shadow);
		background: linear-gradient(145deg, var(--primary-gradiend-light), var(--primary-gradiend-dark)) !important;
		cursor: pointer;
		-webkit-appearance: none;
		margin-top: -3px;
	}

	&:focus::-webkit-slider-runnable-track {
		background: linear-gradient(90deg, hsl(0, 90%, 80%), hsl(10, 90%, 80%), hsl(20, 90%, 80%), hsl(30, 90%, 80%), hsl(40, 90%, 80%), hsl(50, 90%, 80%), hsl(60, 90%, 80%), hsl(70, 90%, 80%), hsl(80, 90%, 80%), hsl(90, 90%, 80%), hsl(100, 90%, 80%), hsl(110, 90%, 80%), hsl(120, 90%, 80%), hsl(130, 90%, 80%), hsl(140, 90%, 80%), hsl(150, 90%, 80%), hsl(160, 90%, 80%), hsl(170, 90%, 80%), hsl(180, 90%, 80%), hsl(190, 90%, 80%), hsl(200, 90%, 80%), hsl(210, 90%, 80%), hsl(220, 90%, 80%), hsl(230, 90%, 80%), hsl(240, 90%, 80%), hsl(250, 90%, 80%), hsl(260, 90%, 80%), hsl(270, 90%, 80%), hsl(280, 90%, 80%), hsl(290, 90%, 80%), hsl(300, 90%, 80%), hsl(310, 90%, 80%), hsl(320, 90%, 80%), hsl(330, 90%, 80%), hsl(340, 90%, 80%), hsl(350, 90%, 80%), hsl(359, 90%, 80%)) !important;
	}

	&::-moz-range-track {
		width: 100%;
		height: 20px;
		cursor: pointer;
		border-radius: 20px;
		box-shadow: inset 2px 2px 4px var(--dark-shadow), inset -2px -2px 4px var(--light-shadow);
		background: linear-gradient(90deg, hsl(0, 90%, 80%), hsl(10, 90%, 80%), hsl(20, 90%, 80%), hsl(30, 90%, 80%), hsl(40, 90%, 80%), hsl(50, 90%, 80%), hsl(60, 90%, 80%), hsl(70, 90%, 80%), hsl(80, 90%, 80%), hsl(90, 90%, 80%), hsl(100, 90%, 80%), hsl(110, 90%, 80%), hsl(120, 90%, 80%), hsl(130, 90%, 80%), hsl(140, 90%, 80%), hsl(150, 90%, 80%), hsl(160, 90%, 80%), hsl(170, 90%, 80%), hsl(180, 90%, 80%), hsl(190, 90%, 80%), hsl(200, 90%, 80%), hsl(210, 90%, 80%), hsl(220, 90%, 80%), hsl(230, 90%, 80%), hsl(240, 90%, 80%), hsl(250, 90%, 80%), hsl(260, 90%, 80%), hsl(270, 90%, 80%), hsl(280, 90%, 80%), hsl(290, 90%, 80%), hsl(300, 90%, 80%), hsl(310, 90%, 80%), hsl(320, 90%, 80%), hsl(330, 90%, 80%), hsl(340, 90%, 80%), hsl(350, 90%, 80%), hsl(359, 90%, 80%)) !important;
		border: none;
	}

	&::-moz-range-thumb {
		border: none;
		height: 26px;
		width: 26px;
		border-radius: 20px;
		box-shadow: 2px 2px 4px var(--dark-shadow), -2px -2px 4px var(--light-shadow);
		background: linear-gradient(145deg, var(--primary-gradiend-light), var(--primary-gradiend-dark)) !important;
		cursor: pointer;
	}
}
