.tm-button {
	transition: all .25s cubic-bezier(.645, .045, .355, 1), color 0s linear;
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	line-height: 1.3;
	white-space: nowrap;
	cursor: pointer;
	border-width: 0;
	border-style: solid;
	border-radius: 5px;
	max-width: 100%;

	&.tm-button-full-wide {
		width: 100% !important;
	}

	.button-content-wrapper {
		display: flex;
		align-items: center;
	}

	.button-text {
		@extend %NormalTransition;
	}

	.button-icon {
		flex-shrink: 0;
		position: relative;
		font-size: 16px;
		line-height: 1;

		i {
			background: inherit;
		}
	}

	&.icon-left {
		.button-icon {
			margin-right: 14px;
		}
	}

	&.icon-right {
		.button-icon {
			margin-left: 14px;
		}
	}

	.button-badge {
		position: absolute;
		top: -15px;
		right: -15px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-height: 31px;
		min-width: 31px;
		padding: 4px;
		border-radius: 50%;
		font-size: 12px;
		font-weight: 700;
		letter-spacing: 0;
		background: #dc3131;
		color: #fff;
	}

	&.style-flat,
	&.style-border,
	&.style-thick-border {
		padding: 0 36px;
		min-height: 48px;
		border-radius: 26px;

		&.tm-button-lg {
			padding: 0 42px;
			min-height: 52px;
		}

		&.tm-button-sm {
			padding: 0 28px;
			min-height: 44px;
		}

		&.tm-button-xs {
			padding: 0 20px;
			min-height: 40px;
			font-size: 14px;
		}
	}

	&.style-flat {
		color: #fff;

		&:hover {
			color: #fff;
		}
	}

	&.style-border {
		border-width: 1px;
		background-color: transparent;

		&:hover {
			color: #fff;
		}
	}

	&.style-thick-border {
		border-width: 2px;
		background-color: transparent;

		&:hover {
			color: #fff;
		}
	}

	&.style-text {
		padding: 5px 0;
	}

	&.style-bottom-line,
	&.style-left-line {
		.button-icon {
			font-size: 11px;
		}

		&.tm-button-lg {
			font-size: 1.1em;
		}

		&.tm-button-sm {
			font-size: .9em;
		}

		&.tm-button-xs {
			font-size: .8em;
		}
	}

	&.style-bottom-line {
		.button-content-wrapper {
			position: relative;
			padding: 5px 0;

			&:before,
			&:after {
				content: '';
				position: absolute;
				left: 0;
				height: 1px;
				background: #ddd;
				transform-origin: right;
				transform: scaleX(1) translateZ(0);
				transition: transform .6s cubic-bezier(.165, .84, .44, 1) .3s, -webkit-transform .6s cubic-bezier(.165, .84, .44, 1) .3s;
				bottom: 0;
				width: 100%;
			}

			&:after {
				transform-origin: left;
				transform: scaleX(0) translateZ(0);
				transition: transform .6s cubic-bezier(.165, .84, .44, 1);
			}
		}
	}

	&.style-left-line {
		.button-content-wrapper {
			position: relative;
			padding: 0 0 0 62px;

			&:before,
			&:after {
				content: '';
				position: absolute;
				bottom: 0;
				left: 0;
				height: 1px;
				background: #ddd;
				transform-origin: right;
				transform: scaleX(1) translateZ(0);
				transition: transform .6s cubic-bezier(.165, .84, .44, 1) .3s, -webkit-transform .6s cubic-bezier(.165, .84, .44, 1) .3s;
				width: 50px;
				top: 50%;
				margin-top: -1px;
			}

			&:after {
				transform-origin: left;
				transform: scaleX(0) translateZ(0);
				transition: transform .6s cubic-bezier(.165, .84, .44, 1);
			}
		}
	}

	// Animate.

	&.style-flat,
	&.style-border,
	&.style-thick-border {
		position: relative;
		// Badge cropped with overflow hidden.
		//overflow: hidden;
		transform: perspective(1px) translateZ(0);

		&:before,
		&:after {
			@extend %NormalTransition;
			content: "";
			position: absolute;
			z-index: -1;
			top: 0;
			left: 0;
			right: 0;
			bottom: 0;
			border-radius: inherit;
		}

		&:after {
			opacity: 0;
		}
	}

	&.style-border {
		&:before,
		&:after {
			top: -1px;
			left: -1px;
			right: -1px;
			bottom: -1px;
		}
	}

	&.style-thick-border {
		&:before,
		&:after {
			top: -2px;
			left: -2px;
			right: -2px;
			bottom: -2px;
		}
	}
}

/**
 * Animate for style bottom line.
 */
.medizin-box:hover div.tm-button.style-bottom-line .button-content-wrapper:before,
a.tm-button.style-bottom-line:hover .button-content-wrapper:before {
	transform: scaleX(0) translateZ(0);
	transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.medizin-box:hover div.tm-button.style-bottom-line .button-content-wrapper:after,
a.tm-button.style-bottom-line:hover .button-content-wrapper:after {
	transform: scaleX(1) translateZ(0);
	transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) 0.3s, -webkit-transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) 0.3s;
}

/**
 * Animate for style left line.
 */
.medizin-box:hover div.tm-button.style-left-line .button-content-wrapper:before,
a.tm-button.style-left-line:hover .button-content-wrapper:before {
	transform: scaleX(0) translateZ(0);
	transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.medizin-box:hover div.tm-button.style-left-line .button-content-wrapper:after,
a.tm-button.style-left-line:hover .button-content-wrapper:after {
	transform: scaleX(1) translateZ(0);
	transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) 0.3s, -webkit-transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1) 0.3s;
}

/**
 * Animate for style flat, border, thick border.
 */
.medizin-box:hover div.tm-button.style-flat,
.medizin-box:hover div.tm-button.style-border,
.medizin-box:hover div.tm-button.style-thick-border,
a.tm-button.style-flat:hover,
a.tm-button.style-border:hover,
a.tm-button.style-thick-border:hover {
	&:before {
		opacity: 0;
	}

	&:after {
		opacity: 1;
	}
}
