ui/mainmenuhost.razor.scss
MainMenuHost {
width: 100%;
height: 100%;
font-family: Arial;
font-weight: bold;
color: white;
pointer-events: none;
&.hidden {
display: none;
}
.menu-screen {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
overflow: hidden;
background-color: rgb( 10, 12, 15 );
pointer-events: all;
}
.menu-background,
.menu-overlay {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.menu-background {
object-fit: cover;
}
.menu-overlay {
background-color: rgba( 10, 12, 15, 0.84 );
}
.menu-shell {
position: relative;
z-index: 1;
width: 780px;
max-height: 90%;
padding: 36px;
flex-direction: column;
align-items: center;
}
.menu-shell-chrome {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba( 14, 16, 19, 0.95 );
border: 1px solid rgba( 255, 255, 255, 0.16 );
box-shadow: 0px 18px 70px rgba( 0, 0, 0, 0.48 );
pointer-events: none;
}
.menu-brand {
position: relative;
width: 100%;
margin-bottom: 24px;
flex-direction: column;
align-items: center;
}
.session-notice {
width: 100%;
padding: 12px;
margin-bottom: 14px;
font-size: 14px;
font-weight: normal;
background-color: rgba( 255, 255, 255, 0.08 );
}
.menu-logo {
position: relative;
width: 360px;
height: 120px;
margin-bottom: 8px;
object-fit: contain;
flex-shrink: 0;
}
.menu-title {
position: relative;
font-size: 62px;
font-weight: 900;
letter-spacing: 3px;
}
.menu-subtitle {
position: relative;
margin-top: 3px;
font-size: 14px;
letter-spacing: 5px;
opacity: 0.42;
}
NavigationHost {
position: relative;
width: 100%;
flex-grow: 1;
}
.navigator-canvas {
width: 100%;
flex-grow: 1;
}
.menu-page {
width: 100%;
flex-direction: column;
align-items: center;
row-gap: 14px;
}
.button-title,
.button-description,
.page-heading,
.page-copy {
position: relative;
}
.home-page {
padding-top: 4px;
}
.page-heading {
width: 100%;
margin-top: 4px;
font-size: 31px;
letter-spacing: 3px;
text-align: center;
}
.page-copy {
width: 100%;
margin-bottom: 14px;
font-size: 14px;
font-weight: normal;
text-align: center;
opacity: 0.52;
}
.menu-button {
width: 500px;
min-height: 88px;
padding: 18px 24px;
flex-direction: column;
justify-content: center;
background-color: rgba( 255, 255, 255, 0.07 );
border: 1px solid rgba( 255, 255, 255, 0.18 );
color: white;
text-decoration: none;
pointer-events: all;
cursor: pointer;
transition: background-color 0.10s ease, transform 0.10s ease;
&:hover {
background-color: rgba( 255, 255, 255, 0.16 );
}
}
.menu-button.primary,
.matchmaking-button {
background-color: rgba( 70, 105, 155, 0.18 );
&:hover {
background-color: rgba( 70, 105, 155, 0.34 );
}
}
.button-title {
font-size: 25px;
}
.button-description {
margin-top: 5px;
font-size: 14px;
font-weight: normal;
opacity: 0.55;
}
.menu-back,
.menu-primary {
min-width: 160px;
min-height: 48px;
padding: 13px 20px;
align-items: center;
justify-content: center;
border: 1px solid rgba( 255, 255, 255, 0.18 );
background-color: rgba( 255, 255, 255, 0.06 );
color: white;
text-decoration: none;
cursor: pointer;
pointer-events: all;
font-size: 14px;
letter-spacing: 2px;
&:hover {
background-color: rgba( 255, 255, 255, 0.14 );
}
}
.menu-primary {
min-width: 260px;
background-color: rgba( 75, 130, 95, 0.22 );
&:hover {
background-color: rgba( 75, 130, 95, 0.36 );
}
}
.client-message {
font-size: 26px;
opacity: 0.72;
}
// =========================================================
// SANDBOX SETUP
// =========================================================
.sandbox-setup-page {
width: 100%;
}
.setup-grid {
width: 100%;
flex-direction: row;
gap: 16px;
align-items: stretch;
}
.setup-section {
flex-grow: 1;
padding: 18px;
flex-direction: column;
gap: 12px;
background-color: rgba( 255, 255, 255, 0.035 );
border: 1px solid rgba( 255, 255, 255, 0.10 );
}
.bot-match-setup {
width: 500px;
flex-grow: 0;
}
.setup-section-title {
margin-bottom: 4px;
font-size: 12px;
letter-spacing: 3px;
opacity: 0.55;
}
.setup-row {
width: 100%;
flex-direction: column;
gap: 6px;
}
.setup-label {
font-size: 11px;
letter-spacing: 2px;
opacity: 0.58;
}
.setup-selector {
width: 100%;
height: 45px;
flex-direction: row;
align-items: stretch;
border: 1px solid rgba( 255, 255, 255, 0.13 );
background-color: rgba( 0, 0, 0, 0.24 );
}
.selector-arrow {
width: 44px;
align-items: center;
justify-content: center;
font-size: 23px;
cursor: pointer;
pointer-events: all;
background-color: rgba( 255, 255, 255, 0.04 );
&:hover {
background-color: rgba( 255, 255, 255, 0.14 );
}
}
.selector-value {
flex-grow: 1;
padding: 0 8px;
align-items: center;
justify-content: center;
text-align: center;
font-size: 13px;
}
.setup-actions {
width: 100%;
margin-top: 10px;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
// =========================================================
// ONLINE
// =========================================================
.online-page {
width: 100%;
}
.online-status-label {
margin-top: 8px;
font-size: 16px;
letter-spacing: 4px;
opacity: 0.72;
text-align: center;
}
.online-status-label.found {
opacity: 1;
font-size: 20px;
}
.online-status-label.error {
color: rgb( 235, 115, 105 );
opacity: 1;
}
.online-spinner {
height: 42px;
align-items: center;
justify-content: center;
font-size: 32px;
letter-spacing: 10px;
opacity: 0.55;
}
.player-card-row {
width: 100%;
margin: 8px 0 10px 0;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 18px;
}
.player-card {
width: 270px;
min-height: 125px;
padding: 18px;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: rgba( 255, 255, 255, 0.045 );
border: 1px solid rgba( 255, 255, 255, 0.12 );
}
.player-card.ready {
background-color: rgba( 75, 130, 95, 0.10 );
border-color: rgba( 125, 205, 145, 0.24 );
}
.player-card.searching {
opacity: 0.55;
}
.opponent-card {
background-color: rgba( 140, 75, 75, 0.10 );
border-color: rgba( 220, 130, 120, 0.22 );
}
.player-card-label {
font-size: 10px;
letter-spacing: 3px;
opacity: 0.45;
}
.player-card-name {
max-width: 230px;
margin-top: 8px;
font-size: 22px;
text-align: center;
overflow: hidden;
}
.player-card-state {
margin-top: 9px;
font-size: 10px;
letter-spacing: 3px;
opacity: 0.50;
}
.versus {
width: 48px;
justify-content: center;
align-items: center;
font-size: 20px;
opacity: 0.35;
}
.match-starting {
min-width: 280px;
padding: 10px 18px;
justify-content: center;
align-items: center;
background-color: rgba( 0, 0, 0, 0.28 );
border: 1px solid rgba( 255, 255, 255, 0.12 );
font-size: 15px;
letter-spacing: 3px;
}
.error-copy {
color: rgb( 235, 165, 155 );
opacity: 0.82;
}
.player-card.practicing {
background-color: rgba( 85, 105, 165, 0.13 );
border-color: rgba( 125, 155, 225, 0.28 );
}
.lobby-cards {
margin-top: 15px;
}
.online-subheading {
margin-top: 4px;
margin-bottom: 8px;
font-size: 13px;
letter-spacing: 3px;
opacity: 0.55;
}
.lobby-weapon-panel {
width: 100%;
max-width: 570px;
margin-top: 8px;
padding: 16px;
flex-direction: column;
gap: 8px;
background-color: rgba( 255, 255, 255, 0.035 );
border: 1px solid rgba( 255, 255, 255, 0.10 );
}
.lobby-note {
margin-top: 4px;
font-size: 10px;
font-weight: normal;
opacity: 0.43;
text-align: center;
}
.lobby-actions {
width: 100%;
max-width: 650px;
margin-top: 14px;
flex-direction: row;
gap: 10px;
}
.lobby-actions .menu-primary {
flex-grow: 1;
min-width: 0;
}
.warmup-action {
background-color: rgba( 70, 100, 155, 0.17 );
&:hover {
background-color: rgba( 70, 100, 155, 0.31 );
}
}
.secondary-action {
background-color: rgba( 255, 255, 255, 0.055 );
}
.ready-action {
background-color: rgba( 70, 135, 90, 0.18 );
&:hover {
background-color: rgba( 70, 135, 90, 0.34 );
}
&.active {
background-color: rgba( 80, 165, 105, 0.32 );
border-color: rgba( 135, 230, 155, 0.38 );
}
}
.lobby-ready-summary {
margin-top: 11px;
padding: 8px 14px;
font-size: 10px;
letter-spacing: 2px;
opacity: 0.55;
}
// =========================================================
// SETTINGS
// =========================================================
.settings-page {
width: 100%;
}
.settings-list {
width: 100%;
flex-direction: column;
gap: 10px;
}
.setting-row {
width: 100%;
min-height: 78px;
padding: 14px 16px;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 18px;
background-color: rgba( 255, 255, 255, 0.035 );
border: 1px solid rgba( 255, 255, 255, 0.10 );
}
.setting-copy {
flex-grow: 1;
flex-direction: column;
gap: 4px;
}
.setting-name {
font-size: 13px;
letter-spacing: 2px;
}
.setting-description {
font-size: 12px;
font-weight: normal;
opacity: 0.48;
}
.setting-control {
width: 190px;
height: 42px;
flex-direction: row;
align-items: stretch;
background-color: rgba( 0, 0, 0, 0.24 );
border: 1px solid rgba( 255, 255, 255, 0.13 );
}
.setting-step {
width: 44px;
align-items: center;
justify-content: center;
font-size: 22px;
cursor: pointer;
pointer-events: all;
background-color: rgba( 255, 255, 255, 0.04 );
&:hover {
background-color: rgba( 255, 255, 255, 0.14 );
}
}
.setting-value {
flex-grow: 1;
align-items: center;
justify-content: center;
font-size: 14px;
}
.setting-cycle {
min-width: 150px;
height: 42px;
padding: 0 14px;
align-items: center;
justify-content: center;
cursor: pointer;
pointer-events: all;
background-color: rgba( 255, 255, 255, 0.06 );
border: 1px solid rgba( 255, 255, 255, 0.13 );
font-size: 12px;
letter-spacing: 2px;
&:hover {
background-color: rgba( 255, 255, 255, 0.14 );
}
}
.settings-actions {
width: 100%;
margin-top: 10px;
flex-direction: row;
justify-content: space-between;
}
.reset-settings {
min-width: 190px;
}
}
// =========================================================
// BOT 0.5 - SANDBOX HARNESS
// =========================================================
.bot-setup-section {
min-width: 250px;
}
.bot-toggle {
width: 100%;
min-height: 62px;
padding: 10px 12px;
flex-direction: column;
justify-content: center;
gap: 3px;
border: 1px solid rgba( 255, 255, 255, 0.13 );
background-color: rgba( 0, 0, 0, 0.24 );
cursor: pointer;
pointer-events: all;
&:hover {
background-color: rgba( 255, 255, 255, 0.08 );
}
&.enabled {
border-color: rgba( 95, 210, 130, 0.48 );
background-color: rgba( 45, 125, 70, 0.18 );
}
&.disabled {
border-color: rgba( 255, 255, 255, 0.10 );
}
}
.bot-toggle-state {
font-size: 14px;
letter-spacing: 2px;
font-weight: 700;
}
.bot-toggle.enabled .bot-toggle-state {
color: rgba( 135, 235, 160, 1 );
}
.bot-toggle-copy {
font-size: 10px;
letter-spacing: 1px;
opacity: 0.54;
}
.setup-row-muted {
opacity: 0.42;
}
.bot-foundation-note {
margin-top: 4px;
padding: 10px 12px;
flex-direction: column;
gap: 4px;
border-left: 2px solid rgba( 255, 205, 85, 0.55 );
background-color: rgba( 255, 205, 85, 0.045 );
}
.bot-foundation-title {
font-size: 10px;
letter-spacing: 2px;
color: rgba( 255, 218, 125, 0.92 );
}
.bot-foundation-copy {
font-size: 10px;
line-height: 15px;
opacity: 0.56;
}