ui/signalsoverlay.razor.scss
@import "/UI/Theme.scss";

SignalsOverlay
{
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	pointer-events: none;
	font-family: $body-font;
	font-size: 14px;
	font-weight: 600;
	color: $menu-color;
	z-index: 100;

	.connector
	{
		position: absolute;
		left: 0;
		top: 0;
		right: 0;
		bottom: 0;
		z-index: 0;

		.dot
		{
			position: absolute;
			width: 5px;
			height: 5px;
			margin-left: -2.5px;
			margin-top: -2.5px;
			border-radius: 50%;
			background-color: rgba( $menu-accent, 0.82 );
			box-shadow: 0 0 0 1px rgba( 6, 16, 24, 0.75 ), 0 0 6px rgba( $menu-accent, 0.2 );
			animation: connector-flow 4s ease-in-out infinite;
		}
	}

	.world-entry
	{
		position: absolute;
		width: 0;
		height: 0;
		overflow: visible;
		z-index: 1;

		.card-anchor
		{
			position: absolute;
			width: 0;
			height: 0;
			overflow: visible;
		}

		.card-stack
		{
			position: absolute;
			width: 340px;
			left: -170px;
			bottom: 14px;
			flex-direction: column;
			align-items: flex-start;
			gap: 8px;

			.heading
			{
				align-items: center;
				gap: 7px;
				padding: 6px 10px;
				font-family: $subtitle-font;
				background-color: rgba( 6, 16, 24, 0.82 );
				backdrop-filter: blur( 8px );
				border: 1px solid rgba( white, 0.06 );
				border-radius: 8px;
				box-shadow: 0 4px 12px rgba( black, 0.25 );
				z-index: 2;

				i
				{
					color: $menu-accent;
					font-family: "Material Icons";
					font-size: 18px;
					font-style: normal;
 				}

				.title
					{
					font-size: 14px;
					font-weight: 650;
					color: $menu-text-strong;
					white-space: nowrap;
				}
			}

			.card
			{
				width: 100%;
				padding: 10px 12px;
				border: 1px solid rgba( white, 0.06 );
				border-radius: 8px;
				background-color: rgba( 9, 21, 31, 0.88 );
				backdrop-filter: blur( 8px );
				box-shadow: 0 8px 24px rgba( black, 0.5 );
				flex-direction: column;
				gap: 5px;
			}

			.description
			{
				font-size: 11px;
				font-weight: 450;
				color: $menu-text;
				white-space: normal;
			}

			.option-list
			{
				flex-direction: column;
				gap: 4px;

				.option
				{
					min-height: 42px;
					flex-shrink: 0;
					padding: 5px 9px;
					border: 1px solid transparent;
					border-radius: 4px;
					background-color: #53698111;
					color: #D1D7E3AA;
					opacity: 1;
					align-items: center;
					transition: color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, box-shadow 0.1s ease, transform 0.1s ease;

					> i
					{
						color: $menu-accent;
						width: 28px;
						font-family: "Material Icons";
						font-size: 19px;
						font-style: normal;
						text-align: center;
					}

					.option-labels
					{
						flex-grow: 1;
						flex-direction: column;
						padding-left: 7px;

						.option-title
						{
							font-size: 14px;
							font-weight: 650;
							color: inherit;
							white-space: nowrap;
							text-overflow: ellipsis;
							overflow: hidden;
						}

						.option-description
						{
							margin-top: 2px;
						}

					}

					&.active
					{
						color: $menu-text-strong;
						background-color: rgba( $menu-accent, 0.2 );
						border-color: rgba( $menu-accent, 0.5 );
						box-shadow: 0 0 10px rgba( $menu-accent, 0.16 );
						transform: translateY( -1px );
					}
				}
			}

		}

		&.card-below .card-stack
		{
			top: 14px;
			bottom: auto;
		}

		&.card-shift-right .card-stack
		{
			left: -20px;
		}

		&.card-shift-left .card-stack
		{
			left: -320px;
		}
	}
}

@keyframes connector-flow
{
	0%, 14%, 100%
	{
		background-color: rgba( $menu-accent, 0.82 );
		box-shadow: 0 0 0 1px rgba( 6, 16, 24, 0.75 ), 0 0 6px rgba( $menu-accent, 0.2 );
		transform: scale( 1 );
	}

	6%
	{
		background-color: rgba( white, 0.96 );
		box-shadow: 0 0 0 1px rgba( 6, 16, 24, 0.6 ), 0 0 8px rgba( $menu-accent, 0.32 );
		transform: scale( 1.16 );
	}
}