.jet-button {
	&__container {
		display: flex;
		flex-flow: row nowrap;
		justify-content: center;
	}

	&__instance {
		position: relative;
		overflow: hidden;
		max-width: 100%;
		box-sizing: border-box;
		cursor: pointer;
		transform: translateZ(0);
		transition: all .3s cubic-bezier(.5,.12,.46,.88);
	}

	&__plane {
		display: block;
		width: 100%;
		height: 100%;
		top: 0;
		left: 0;
		position: absolute;

		&-normal {
			z-index: 1;
		}

		&-hover {
			z-index: 3;
		}
	}

	&__state {
		display: flex;
		flex-direction: row;
		justify-content: center;
		align-items: center;
		box-sizing: border-box;

		&-normal {
			position: relative;
			width: 100%;
			height: 100%;
			z-index: 2;
		}

		&-hover {
			position: absolute;
			width: 100%;
			height: 100%;
			top: 0;
			left: 0;
			z-index: 4;
		}
	}

	&__icon {
		display: flex;
		justify-content: center;
		align-items: center;
	}

	&__label {

	}
}

.jet-button__instance {
	&.jet-button__instance--icon-left {
		.jet-button__state {
			flex-direction: row;

			.jet-button__icon {
				order: getValueByDirection( 1, 2 );
			}

			.jet-button__label {
				order: getValueByDirection( 2, 1 );
			}
		}
	}

	&.jet-button__instance--icon-top {
		.jet-button__state {
			flex-direction: column;

			.jet-button__icon {
				order: 1;
			}

			.jet-button__label {
				order: 2;
			}
		}
	}

	&.jet-button__instance--icon-right {
		.jet-button__state {
			flex-direction: row;

			.jet-button__icon {
				order: getValueByDirection( 2, 1 );
			}

			.jet-button__label {
				order: getValueByDirection( 1, 2 );
			}
		}
	}

	&.jet-button__instance--icon-bottom {
		.jet-button__state {
			flex-direction: column;

			.jet-button__icon {
				order: 2;
			}

			.jet-button__label {
				order: 1;
			}
		}
	}
}

.jet-button__instance {
	&.hover-effect-0 {
		.jet-button__plane-normal {
			opacity: 1;
		}

		.jet-button__plane-hover {
			opacity: 0;
		}

		.jet-button__state-normal {
			opacity: 1;

		}

		.jet-button__state-hover {
			opacity: 0;
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
			}

			.jet-button__plane-hover {
				opacity: 1;
			}

			.jet-button__state-normal {
				opacity: 0;
			}

			.jet-button__state-hover {
				opacity: 1;
			}
		}
	}

	&.hover-effect-1 {
		.jet-button__plane-normal {
			opacity: 1;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 0;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			.jet-button__icon {
				opacity: 1;
				transition: all .3s cubic-bezier(.5,.12,.46,.88);
			}

			.jet-button__label {
				opacity: 1;
				transition: all .3s cubic-bezier(.5,.12,.46,.88);
			}
		}

		.jet-button__state-hover {
			.jet-button__icon {
				opacity: 0;
				transition: all .3s cubic-bezier(.5,.12,.46,.88);
			}

			.jet-button__label {
				opacity: 0;
				transition: all .3s cubic-bezier(.5,.12,.46,.88);
			}
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
			}

			.jet-button__plane-hover {
				opacity: 1;
			}

			.jet-button__state-normal {
				.jet-button__icon {
					opacity: 0;
				}

				.jet-button__label {
					opacity: 0;
				}
			}

			.jet-button__state-hover {
				.jet-button__icon {
					opacity: 1;
				}

				.jet-button__label {
					opacity: 1;
				}
			}
		}
	}

	&.hover-effect-2 {
		.jet-button__plane-normal {
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			transform: translateY(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			transform: translateY(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				transition-delay: .1s;
				transform: translateY(-100%);
			}

			.jet-button__plane-hover {
				transform: translateY(0%);
				transition-delay: .1s;
			}

			.jet-button__state-normal {
				transform: translateY(-100%);
			}

			.jet-button__state-hover {
				transition-delay: .15s;
				transform: translateY(0%);

			}
		}
	}

	&.hover-effect-3 {
		.jet-button__plane-normal {
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			transform: translateY(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			transform: translateY(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				transition-delay: .1s;
				transform: translateY(100%);
			}

			.jet-button__plane-hover {
				transform: translateY(0%);
				transition-delay: .1s;
			}

			.jet-button__state-normal {
				transform: translateY(100%);
			}

			.jet-button__state-hover {
				transition-delay: .15s;
				transform: translateY(0%);

			}
		}
	}

	&.hover-effect-4 {
		.jet-button__plane-normal {
			transform: translateX(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			transform: translateX(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			transform: translateX(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			transform: translateX(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				transform: translateX(100%);
				transition-delay: .1s;
			}

			.jet-button__plane-hover {
				transform: translateX(0);
			}

			.jet-button__state-normal {
				transform: translateX(100%);
			}

			.jet-button__state-hover {
				transform: translateX(0);
				transition-delay: .1s;
			}
		}
	}

	&.hover-effect-5 {
		.jet-button__plane-normal {
			transform: translateX(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			transform: translateX(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			transform: translateX(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			transform: translateX(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				transform: translateX(-100%);
				transition-delay: .1s;
			}

			.jet-button__plane-hover {
				transform: translateX(0);
			}

			.jet-button__state-normal {
				transform: translateX(-100%);
			}

			.jet-button__state-hover {
				transform: translateX(0);
				transition-delay: .1s;
			}
		}
	}

	&.hover-effect-6 {
		.jet-button__plane-normal {
			opacity: 1;
			transform: scale(1);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 0;
			transform: scale(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: scale(1);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform: scale(0);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
				transform: scale(1.5);
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: scale(1);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: scale(1.5);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: scale(1);
			}
		}
	}

	&.hover-effect-7 {
		.jet-button__plane-normal {
			opacity: 1;
			transform: scale(1);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 0;
			transform: scale(1.5);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: scale(1);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform: scale(1.5);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
				transform: scale(0);
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: scale(1);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: scale(0);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: scale(1);
			}
		}
	}

	&.hover-effect-8 {
		.jet-button__plane-normal {
			opacity: 1;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 1;
			transform-origin: 0 100%;
			transform: rotateZ(-90deg) scaleX(2);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform-origin: 0 100%;
			transform: rotateZ(-90deg) translateY(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: rotateZ(0deg);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: translateY(100%);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: rotateZ(0) translateY(0);
				transition-delay: .1s;
			}
		}
	}

	&.hover-effect-9 {
		.jet-button__plane-normal {
			opacity: 1;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 1;
			transform-origin: 100% 0;
			transform: rotateZ(-90deg) translateY(100%) scaleX(2);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform-origin: 100% 0;
			transform: rotateZ(-90deg) translateY(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: rotateZ(0deg);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: translateY(-100%);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: rotateZ(0) translateY(0);
				transition-delay: .1s;
			}
		}
	}

	&.hover-effect-10 {
		.jet-button__plane-normal {
			opacity: 1;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 1;
			transform: translateX(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform: translateX(-100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 0;
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: translateX(0);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: translateY(100%);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: translateX(0);
				transition-delay: .1s;
			}
		}
	}

	&.hover-effect-11 {
		.jet-button__plane-normal {
			opacity: 1;
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__plane-hover {
			opacity: 1;
			transform: translateX(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-normal {
			opacity: 1;
			transform: translateY(0%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		.jet-button__state-hover {
			opacity: 0;
			transform: translateX(100%);
			transition: all .3s cubic-bezier(.5,.12,.46,.88);
		}

		&:hover {
			.jet-button__plane-normal {
				opacity: 1;
			}

			.jet-button__plane-hover {
				opacity: 1;
				transform: translateX(0);
			}

			.jet-button__state-normal {
				opacity: 0;
				transform: translateY(100%);
			}

			.jet-button__state-hover {
				opacity: 1;
				transform: translateX(0);
				transition-delay: .1s;
			}
		}
	}
}
