166 lines
2.7 KiB
SCSS
166 lines
2.7 KiB
SCSS
// file: Web/game-snake-poc/frontend/sass/_app.scss
|
|
// version: 4
|
|
|
|
$app-header-height: 72px;
|
|
$app-footer-height: 42px;
|
|
|
|
html,
|
|
body {
|
|
width: 100%;
|
|
min-width: 320px;
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
overflow: hidden;
|
|
background: $gray-100;
|
|
overscroll-behavior: none;
|
|
}
|
|
|
|
.min-w-0 {
|
|
min-width: 0;
|
|
}
|
|
|
|
.app-header {
|
|
position: fixed;
|
|
inset: 0 0 auto;
|
|
height: $app-header-height;
|
|
z-index: 1020;
|
|
border-bottom: 2px solid rgba($primary, 0.3);
|
|
}
|
|
|
|
.app-footer {
|
|
position: fixed;
|
|
inset: auto 0 0;
|
|
height: $app-footer-height;
|
|
z-index: 1020;
|
|
border-top: 2px solid rgba($primary, 0.3);
|
|
}
|
|
|
|
.app-main {
|
|
position: relative;
|
|
width: 100%;
|
|
height: calc(100vh - $app-header-height - $app-footer-height);
|
|
margin-top: $app-header-height;
|
|
margin-bottom: $app-footer-height;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.app-main > .row {
|
|
flex-wrap: nowrap;
|
|
min-width: 0;
|
|
}
|
|
|
|
.app-scrollable {
|
|
height: 100%;
|
|
max-height: 100%;
|
|
}
|
|
|
|
.app-content {
|
|
min-width: 0;
|
|
height: 100%;
|
|
max-height: 100%;
|
|
}
|
|
|
|
.app-logo {
|
|
width: 42px;
|
|
height: 42px;
|
|
font-size: 1.75rem;
|
|
}
|
|
|
|
.app-shell-card {
|
|
width: 100%;
|
|
max-width: 1180px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.game-stage {
|
|
width: 100%;
|
|
max-width: 520px;
|
|
margin-inline: auto;
|
|
aspect-ratio: 3 / 5;
|
|
overflow: hidden;
|
|
background: $black;
|
|
border: 1px solid rgba($primary, 0.35);
|
|
}
|
|
|
|
#game {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
touch-action: none;
|
|
outline: none;
|
|
}
|
|
|
|
#game:focus-visible {
|
|
box-shadow: inset 0 0 0 3px rgba($primary, 0.85);
|
|
}
|
|
|
|
.app-controls-card {
|
|
min-width: 0;
|
|
}
|
|
|
|
.runtime-details dd {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.direction-pad {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(64px, 88px));
|
|
grid-template-rows: repeat(2, minmax(56px, 72px));
|
|
gap: 0.5rem;
|
|
justify-content: center;
|
|
user-select: none;
|
|
}
|
|
|
|
.direction-pad .btn {
|
|
touch-action: manipulation;
|
|
font-size: 1.25rem;
|
|
}
|
|
|
|
.direction-up {
|
|
grid-column: 2;
|
|
grid-row: 1;
|
|
}
|
|
|
|
.direction-left {
|
|
grid-column: 1;
|
|
grid-row: 2;
|
|
}
|
|
|
|
.direction-down {
|
|
grid-column: 2;
|
|
grid-row: 2;
|
|
}
|
|
|
|
.direction-right {
|
|
grid-column: 3;
|
|
grid-row: 2;
|
|
}
|
|
|
|
@media (max-width: 575.98px) {
|
|
$mobile-header-height: 64px;
|
|
|
|
.app-header {
|
|
height: $mobile-header-height;
|
|
}
|
|
|
|
.app-main {
|
|
height: calc(100vh - $mobile-header-height - $app-footer-height);
|
|
margin-top: $mobile-header-height;
|
|
}
|
|
|
|
.app-logo {
|
|
width: 34px;
|
|
height: 34px;
|
|
font-size: 1.4rem;
|
|
}
|
|
|
|
.direction-pad {
|
|
width: 100%;
|
|
grid-template-columns: repeat(3, minmax(72px, 1fr));
|
|
}
|
|
}
|