You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

298 lines
4.4 KiB

@import url("https://fonts.googleapis.com/css2?family=Audiowide&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Audiowide", serif;
line-height: 1;
}
html,
body {
width: 100%;
height: 100%;
}
body {
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
background-color: hsl(0, 0%, 5%);
color: hsl(0, 0%, 95%);
user-select: none;
}
.canvasWrapper {
max-width: 95%;
max-height: 95%;
aspect-ratio: 16 / 9;
border: 2px solid hsl(0, 0%, 10%);
background-color: black;
position: relative;
display: flex;
background-image: url(assets/stars.png);
background-position: center center;
background-size: 50vmin;
}
canvas {
width: 100%;
height: 100%;
}
#score {
position: absolute;
top: 0;
right: 0;
color: white;
padding: 1.5vmin;
font-size: 3vmin;
line-height: 1;
}
#splash,
#gameOver,
#paused {
position: fixed;
width: 100%;
height: 100%;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background-image: url(assets/stars.png);
background-position: center center;
background-size: 50vmin;
z-index: 1;
transition: opacity 0.5s;
}
#splash.hidden,
#gameOver.hidden,
#paused.hidden {
opacity: 0;
pointer-events: none;
}
.innerWrapper {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 3vmin;
}
#splash h1,
#gameOver h2,
#paused h2 {
font-size: 10vmin;
}
#paused h2 {
animation: twinkle 2s linear infinite;
}
@keyframes twinkle {
from {
opacity: 1;
}
45% {
opacity: 0.3333;
}
90% {
opacity: 1;
}
to {
opacity: 1;
}
}
#gameOver h3 {
font-size: 3vmin;
}
#paused p {
font-size: 3vmin;
}
button {
padding: 1.5vmin;
background-color: transparent;
color: inherit;
font-size: 1.5vmin;
outline: 0;
border: 2px solid hsl(0, 0%, 25%);
cursor: pointer;
position: relative;
margin-top: 1em;
}
button span {
opacity: 0.5;
transition: opacity 0.5s;
text-transform: uppercase;
}
button .line {
position: absolute;
background-color: white;
transition: transform 1s;
}
button .top,
button .bottom {
width: calc(100% + 4px);
height: 2px;
transform: scaleX(0);
}
button .left,
button .right {
width: 2px;
height: calc(100% + 4px);
transform: scaleY(0);
}
button .top {
top: -2px;
left: -2px;
transform-origin: left;
}
button .bottom {
bottom: -2px;
right: -2px;
transform-origin: right;
}
button .left {
left: -2px;
bottom: -2px;
transform-origin: bottom;
}
button .right {
right: -2px;
top: -2px;
transform-origin: top;
}
button:is(:hover, :focus, :active) .top,
button:is(:hover, :focus, :active) .bottom {
transform: scaleX(1);
}
button:is(:hover, :focus, :active) .left,
button:is(:hover, :focus, :active) .right {
transform: scaleY(1);
}
button:is(:hover, :focus, :active) span {
opacity: 1;
}
button:is(:hover, :focus, :active) span,
button:is(:hover, :focus, :active) .line {
transition-delay: 0.25s;
}
.controls {
margin-top: 5vmin;
border: 1px solid hsl(0, 0%, 50%);
background-color: hsl(0, 0%, 7.5%);
padding: 2vmin 4vmin 3vmin;
}
.controls h3 {
margin-bottom: 3vmin;
text-align: center;
font-size: 3vmin;
}
dl {
display: grid;
grid-template-columns: 1fr auto;
font-size: 2vmin;
gap: 3vmin 1.5vmin;
}
dt,
dd {
display: flex;
align-items: center;
gap: 1.5vmin;
}
dt {
justify-content: flex-start;
}
dd {
justify-content: center;
}
.wasd {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 0.5vmin;
grid-template-areas:
". w ."
"a s d";
}
.wasd kbd:nth-child(1) {
grid-area: w;
}
.wasd kbd:nth-child(2) {
grid-area: a;
}
.wasd kbd:nth-child(3) {
grid-area: s;
}
.wasd kbd:nth-child(4) {
grid-area: d;
}
kbd {
display: inline-block;
vertical-align: middle;
white-space: nowrap;
line-height: 1;
padding: 0.2em 0.4em;
font-size: 0.9em;
color: hsl(0, 0%, 20%);
background-color: hsl(0, 0%, 90%);
border: 1px solid hsl(0, 0%, 80%);
border-radius: 0.25em;
box-shadow: 0 0.05em 0 hsla(0, 0%, 0%, 20%),
0 0.1em 0 hsla(0, 0%, 100%, 50%) inset;
}
#splash footer {
position: absolute;
bottom: 0;
left: 0;
right: 0;
text-align: center;
padding: 2vmin;
color: hsl(0, 0%, 60%);
}
a {
color: inherit;
outline: 0;
transition: color 0.5s;
}
a:hover,
a:active,
a:focus {
color: hsl(0, 0%, 100%);
}