.ffz-balloon {
	max-width: 90vw;
	min-width: 16rem;
	z-index: 2000;

	& > &__tail {
		height: 16px;
		width: 16px;

		& .ffz-balloon-symbol {
			height: 8px;
			transform: rotate(45deg) translate(-50%,-50%);
			transform-origin: 0 0;
			width: 8px;
		}
	}

	&--overlay-border {
		border: 2px solid var(--color-border-balloon-overlay);
	}

	&--left {
		margin-right: 8px;
		right: 100%;

		& > .ffz-balloon__tail {
			left: 100%;
			margin-left: -1px;

			& .ffz-balloon__tail-symbol {
				right: 8px;
			}
		}
	}

	&--right {
		left: 100%;
		margin-left: 8px;

		& > .ffz-balloon__tail {
			margin-right: -1px;
			right: 100%;

			& .ffz-balloon__tail-symbol {
				right: -8px;
			}
		}
	}

	&--left, &--right {
		top: 0;

		& > .ffz-balloon__tail {
			top: 8px;

			& .ffz-balloon__tail-symbol {
				top: 50%;
			}
		}

		&.ffz-balloon--center {
			top: 50%;
			transform: translateY(-50%);

			& > .ffz-balloon__tail {
				margin-top: -5.33333px;
				top: 50%;
			}
		}
	}

	&--up {
		bottom: 100%;
		left: 0;
		margin-bottom: 8px;
		top: auto;

		& > .ffz-balloon__tail {
			margin-top: -1px;
			top: 100%;

			& .ffz-balloon__tail-symbol {
				bottom: 8px;
				top: auto;
			}
		}
	}

	&--down, &--up {
		& > .ffz-balloon__tail .ffz-balloon__tail-symbol {
			left: 50%;
		}

		&.ffz-balloon--left {
			left: 0;
			right: auto;

			& > .ffz-balloon__tail {
				left: 0;
			}
		}

		&.ffz-balloon--center {
			left: 50%;
			transform: translateX(-50%);

			& > .ffz-balloon__tail {
				left: 50%;
				margin-left: -8px;
			}
		}

		&.ffz-balloon--right {
			left: auto;
			right: 0;

			& > .ffz-balloon__tail {
				left: 100%;
				margin-left: -16px;
				top: 100%;
			}
		}
	}

	&--down {
		left: 0;
		margin-top: 8px;
		top: 100%;

		& > .ffz-balloon__tail {
			bottom: 100%;
			margin-bottom: -1px;

			& .ffz-balloon__tail-symbol {
				bottom: -8px;
				top: auto;
			}
		}

		&.ffz-balloon--right {
			top: 100%;

			& > .ffz-balloon__tail {
				left: 100%;
				margin-left: -16px;
				top: auto;
			}
		}
	}

	&--xs {
		min-width: 10rem;
		width: 10rem;
	}

	&--auto {
		min-width: 0;
		white-space: nowrap;
	}

	&--sm { width: 20rem }
	&--md { width: 30rem }
	&--lg { width: 40rem }
	&--xl { width: 50rem }
}

.ffz-attached {
	position: absolute;
	z-index: var(--z-index-balloon);

	&--up { margin-bottom: 0 }
	&--down { margin-top: 0 }
	&--left { margin-right: 0 }
	&--right { margin-left: 0 }

	/*&--up.tw-attached--right {
		inset: auto 0px 100% auto;
	}*/

	&--right { right: 0 }
	&--left { left: 0 }
	&--up { bottom: 100% }
	&--down { top: 100% }
}