soundboardpanel.razor.scss
@import "/UI/Styles/_Theme.scss";
@import "/UI/Styles/_Fonts.scss";
@import "/UI/Components/Tile/Tile.scss";
@import "/UI/Components/Segmented/Segmented.scss";
@import "/UI/Components/Button/Button.scss";
@import "/UI/Components/Chip/Chip.scss";
SoundBoardPanel
{
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	pointer-events: all;
	overflow: hidden;

	.sb
	{
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		flex-direction: column;
		background-color: $bg-0;
		overflow: hidden;
	}

	.sb-shell
	{
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		flex-direction: column;
		flex-grow: 1;
		min-height: 0;
		padding: 20px 24px 18px;
		overflow: hidden;
	}

	.sb-topbar
	{
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 16px;
		height: 64px;
		min-height: 64px;
		max-height: 64px;
		margin-bottom: 14px;
		padding-bottom: 14px;
		border-bottom: 1px solid $line;
		flex-shrink: 0;
		flex-wrap: nowrap;
		overflow: hidden;
	}

	.sb-brand-block
	{
		display: flex;
		align-items: center;
		gap: 12px;
		min-width: 0;
		flex-grow: 1;
	}

	.sb-status-led
	{
		width: 10px;
		height: 10px;
		border-radius: 50%;
		background-color: $bg-2;
		border: 1px solid $line;
		flex-shrink: 0;

		&.is-live
		{
			background-color: $success;
			border-color: $success-line;
		}
	}

	.sb-brand-copy
	{
		display: flex;
		flex-direction: column;
		gap: 2px;
		min-width: 0;
	}

	.sb-eyebrow
	{
		font-size: $fs-1;
		font-weight: 700;
		letter-spacing: $ls-xwide;
		color: $text-faint;
		font-family: $font-mono;
	}

	.sb-title
	{
		font-size: $fs-5;
		font-weight: 800;
		color: $text;
		font-family: $font-primary;
		white-space: nowrap;
		overflow: hidden;
	}

	.sb-voice-chip
	{
		display: flex;
		flex-direction: column;
		justify-content: center;
		gap: 6px;
		width: 128px;
		height: 52px;
		min-width: 128px;
		max-width: 128px;
		padding: 8px 12px;
		border-radius: 4px;
		background-color: $bg-2;
		border: 1px solid $line-strong;
		flex-shrink: 0;
		overflow: hidden;
	}

	.sb-voice-chip-head
	{
		display: flex;
		align-items: baseline;
		justify-content: space-between;
		gap: 8px;
	}

	.sb-voice-chip-label
	{
		font-size: $fs-1;
		font-weight: 700;
		letter-spacing: $ls-wide;
		color: $text-faint;
		font-family: $font-mono;
	}

	.sb-voice-chip-value
	{
		font-size: $fs-4;
		font-weight: 800;
		line-height: 1;
		color: $accent;
		font-family: $font-mono;
	}

	.sb-voice-meter-stack
	{
		width: 100%;
		height: 18px;
		min-height: 18px;
		max-height: 18px;
		flex-direction: column;
		justify-content: flex-end;
		gap: 2px;
		overflow: hidden;
	}

	.sb-voice-meter-tier
	{
		width: 100%;
		height: 3px;
		min-height: 3px;
		max-height: 3px;
		border-radius: 999px;
		background-color: $bg-inset;
		overflow: hidden;
	}

	.sb-voice-meter-fill
	{
		height: 100%;
		border-radius: 999px;
		transition: width 0.16s ease;

		&.is-chaos
		{
			filter: brightness(1.2);
		}
	}

	.sb-tabs
	{
		margin-bottom: 14px;
		flex-shrink: 0;
		flex-wrap: wrap;
	}

	.sb-board
	{
		flex-grow: 1;
		flex-shrink: 1;
		min-height: 0;
		margin-bottom: 14px;
		border: 1px solid $line;
		background-color: $bg-1;
		flex-direction: column;
		overflow: hidden;
	}

	.sb-board-scroll
	{
		flex-grow: 1;
		flex-shrink: 1;
		min-height: 0;
		width: 100%;
		overflow-y: scroll;
		overflow-x: hidden;
		pointer-events: all;
	}

	.tile-grid
	{
		flex-direction: row;
		flex-wrap: wrap;
		gap: 12px;
		padding: 8px;
		pointer-events: all;

		.tile
		{
			pointer-events: all;
			flex-shrink: 0;
		}
	}

	.sb-pad-grid
	{
		padding: 4px;
	}

	.tile
	{
		width: 112px;
	}

	.tile-swatch
	{
		height: 64px;
	}

	.sb-controls
	{
		display: flex;
		align-items: center;
		gap: 12px;
		flex-shrink: 0;
	}

	.sb-now-playing
	{
		flex-grow: 1;
		display: flex;
		align-items: center;
		gap: 10px;
		min-width: 0;
		padding: 10px 14px;
		background-color: $bg-2;
		border: 1px solid $line;
	}

	.sb-now-playing-dot
	{
		width: 8px;
		height: 8px;
		border-radius: 50%;
		background-color: $line-strong;
		flex-shrink: 0;

		&.is-live
		{
			background-color: $accent;
		}
	}

	.sb-now-playing-text
	{
		font-size: $fs-2;
		font-weight: 600;
		color: $text-dim;
		font-family: $font-mono;
		white-space: nowrap;
		overflow: hidden;
	}

	.sb-kill-btn
	{
		min-width: 148px;
		flex-shrink: 0;
	}

	&.is-wide
	{
		.tile
		{
			width: 120px;
		}
	}

	&.is-medium
	{
		.sb-shell
		{
			padding: 18px 20px 16px;
		}

		.sb-title
		{
			font-size: $fs-4;
		}

		.tile
		{
			width: 104px;
		}
	}

	&.is-compact
	{
		.sb-shell
		{
			padding: 14px 14px 12px;
		}

		.sb-voice-chip
		{
			width: 116px;
			min-width: 116px;
			max-width: 116px;
		}

		.tile
		{
			width: 96px;
		}

		.tile-swatch
		{
			height: 56px;
		}
	}

	&.is-tight
	{
		.sb-shell
		{
			padding: 12px 10px 10px;
		}

		.sb-topbar
		{
			height: 58px;
			min-height: 58px;
			max-height: 58px;
		}

		.sb-voice-chip
		{
			width: 108px;
			min-width: 108px;
			max-width: 108px;
			height: 48px;
			min-height: 48px;
			max-height: 48px;
		}

		.sb-voice-chip-value
		{
			font-size: $fs-3;
		}

		.sb-title
		{
			font-size: $fs-3;
		}

		.sb-tabs
		{
			flex-wrap: wrap;
		}

		.tile
		{
			width: 88px;
		}

		.tile-swatch
		{
			height: 50px;
		}

		.sb-controls
		{
			flex-wrap: wrap;
		}

		.sb-now-playing
		{
			width: 100%;
			order: 3;
		}

		.sb-kill-btn
		{
			width: 100%;
			order: 2;
		}
	}

	&.has-voices
	{
		.sb-topbar
		{
			border-bottom-color: $accent-line;
		}
	}
}