ui/homepage.razor.scss
@import "theme";

.home-page
{
	font-family: $display-font;
	color: $text-default;
	position: relative;
	width: 100%;
	height: 100%;
}

.top-left
{
	position: absolute;
	top: $deadzone-y;
	left: $deadzone-x;
	flex-direction: row;
	align-items: center;

	&:intro { transform: translateY( -20px ); opacity: 0; }
	transition: all 0.4s ease-out;
}

.brand
{
	flex-direction: row;
	align-items: center;
	gap: 12px;
}

.brand-text
{
	font-family: $header-font;
	font-size: 14px;
	font-weight: 800;
	letter-spacing: 1px;
	color: rgba( $text-bright, 0.9 );
}

.hero
{
	position: absolute;
	top: 10%;
	left: 0;
	right: 0;
	flex-direction: column;
	align-items: center;

	&:intro { transform: scale( 1.4 ); opacity: 0; }
	transition: all 0.45s ease-out;
}

// Centered as a block, but the eyebrow hugs the logo's left edge.
.hero-inner
{
	flex-direction: column;
	align-items: flex-start;
}

.title
{
	flex-direction: row;
	align-items: center;
	gap: 18px;
}

.title
{
	font-family: $header-font;
	font-size: 90px;
	font-weight: 800;
	letter-spacing: -2px;
	color: $text-bright;
}

.title strong
{
	font-family: $header-font;
	font-size: 80px;
	font-weight: 800;
	letter-spacing: -2px;
	color: white;
	background-color: $accent-red;
	padding: 4px 26px 14px 26px;
	border-radius: 16px;
	transform: rotate( -2deg );
	box-shadow:
		0px 8px 0px rgba( 0, 0, 0, 0.22 ),
		0px 10px 20px rgba( 255, 77, 106, 0.4 );
}

.menu
{
	position: absolute;
	bottom: $deadzone-y;
	left: $deadzone-x;
	flex-direction: column;
	align-items: flex-start;
	gap: 14px;

	&:intro { transform: translateX( -40px ); opacity: 0; }
	transition: all 0.45s ease-out;
}

.menu-item
{
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	min-width: 220px;
	padding: 18px 26px;
	border-radius: 26px;
	background-color: $surface-deep;
	border: 1px solid rgba( 42, 31, 48, 0.08 );
	cursor: pointer;
	box-shadow:
		0px 5px 0px $shadow-chunky,
		0px 10px 20px $shadow-soft;
	transition: transform 0.12s ease-out, background-color 0.12s ease-out;

	&:hover { transform: translateX( 6px ); }
	&:active { transform: translateY( 2px ); }

	.menu-label
	{
		font-family: $header-font;
		font-size: 26px;
		font-weight: 800;
		letter-spacing: 1px;
		color: $text-default;
	}
}

.menu-item.primary
{
	background-color: $accent-red;
	border-color: rgba( 0, 0, 0, 0.18 );
	box-shadow:
		0px 6px 0px rgba( 0, 0, 0, 0.25 ),
		0px 4px 12px rgba( 255, 77, 106, 0.45 );

	padding: 18px 32px;

	.menu-label { color: white; font-size: 32px; }
}

.menu-item.primary:hover
{
	background-color: #ff6680;
}

// Menu items ignore the mouse by default (controller behaviour); mouse mode turns
// pointer events on, which is what gives us a cursor + hover + click.
.menu-item
{
	pointer-events: none;
}

.home-page.mouse .menu-item
{
	pointer-events: all;
}

// Mouse hover gets the same chunky highlight ring as keyboard selection.
.home-page.mouse .menu-item:hover
{
	border-color: $accent-red;
	box-shadow:
		0px 5px 0px $shadow-chunky,
		0px 0px 0px 3px rgba( 255, 77, 106, 0.6 ),
		0px 10px 20px $shadow-soft;

	sound-in: element_switch;
}

.home-page.mouse .menu-item.primary:hover
{
	border-color: white;
	box-shadow:
		0px 6px 0px rgba( 0, 0, 0, 0.25 ),
		0px 0px 0px 3px rgba( 255, 255, 255, 0.85 ),
		0px 12px 26px rgba( 255, 77, 106, 0.5 );
}

// Highlighted by keyboard / controller navigation.
.menu-item.selected
{
	transform: translateX( 12px );
	border-color: $accent-red;
	box-shadow:
		0px 5px 0px $shadow-chunky,
		0px 0px 0px 1px rgba( 255, 77, 106, 0.6 ),
		0px 10px 40px $shadow-soft;
}

.menu-item.primary.selected
{
	transform: translateX( 12px );
	border-color: white;
	box-shadow: 0px 6px 0px rgba( 0, 0, 0, 0.25 ), 0px 0px 0px 1px rgba( 255, 255, 255, 0.85 ), 0px 12px 26px rgba( 255, 77, 106, 0.5 );
}

// NavLink active state (PLAY while on /play, etc.)
.menu-item.active
{
	background-color: $text-default;
	.menu-label { color: white; }
}

.menu-key-glyph
{
	width: 30px;
	height: 30px;
}

.revision
{
	position: absolute;
	bottom: $deadzone-y;
	right: $deadzone-x;

	&:intro { transform: translateY( 30px ); opacity: 0; }
	transition: all 0.5s ease-out;
}

.footer
{
	position: absolute;
	bottom: 24px;
	left: 0;
	right: 0;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 26px;
}

.hint
{
	flex-direction: row;
	align-items: center;
	gap: 8px;
}

.hint-glyph
{
	width: 26px;
	height: 26px;
	margin-right: 2px;
}

.hint-label
{
	font-family: $display-font;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 2px;
	color: $text-bright;
}