gamepad-viewer/css/gamepad.css
2025-03-26 18:27:05 +01:00

313 lines
5.5 KiB
CSS

* {
box-sizing: border-box;
}
body {
background: transparent;
font-family: sans-serif;
height: 100vh;
margin: 0;
overflow: hidden;
}
#unsupported {
display: none;
text-align: center;
width: 100vw;
margin: 60px 0;
}
body.unsupported #unsupported {
display: block;
}
body.unsupported #instructions,
body.unsupported #placeholder,
body.unsupported #gamepad {
display: none;
}
#instructions {
position: fixed;
top: 0;
left: 0;
height: auto;
line-height: 2em;
text-align: center;
width: 100vw;
}
@keyframes press-button {
0% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
7% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
10% {
fill: #00e530;
filter: drop-shadow(0 0 5px rgb(0 229 48 / 0.4));
}
17% {
fill: #00e530;
filter: drop-shadow(0 0 5px rgb(0 229 48 / 0.4));
}
20% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
27% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
30% {
fill: #00e530;
filter: drop-shadow(0 0 5px rgb(0 229 48 / 0.4));
}
37% {
fill: #00e530;
filter: drop-shadow(0 0 5px rgb(0 229 48 / 0.4));
}
40% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
100% {
fill: #898989;
filter: drop-shadow(0 0 0 rgb(0 229 48 / 0.4));
}
}
#placeholder {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#placeholder svg {
max-width: 600px;
width: 90%;
}
#placeholder #a-button path {
animation: press-button 5s linear infinite;
}
#placeholder #placeholder-instructions {
margin-top: -40px;
}
#gamepad {
width: 100vw;
height: 100vh;
}
#gamepad .controller {
background-position: center;
background-repeat: no-repeat;
background-size: contain;
left: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}
#overlay {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: auto;
padding: 8px 0;
display: flex;
justify-content: center;
align-self: center;
}
#overlay>span {
padding: 0 8px;
}
#overlay select {
padding: 4px 0;
border-radius: 4px;
background: whitesmoke;
border: none;
max-width: 200px;
}
.popout {
background: rgba(0, 0, 0, 0.5);
display: none;
height: 100vh;
left: 0;
position: fixed;
top: 0;
width: 100vw;
}
.popout.active {
display: block;
}
.popout .content {
background: whitesmoke;
border: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-sizing: border-box;
color: black;
font-size: 0.9em;
left: 50%;
max-height: 90vh;
max-width: 90vw;
min-width: 600px;
overflow-y: auto;
padding: 20px;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}
.popout .close {
background: none;
border: none;
color: black;
cursor: pointer;
font-size: 1.5em;
position: absolute;
right: 20px;
top: 20px;
}
.popout h2 {
margin-bottom: 1.5em;
margin-top: 0;
}
.popout h3 {
margin-top: 1.5em;
}
.popout p:last-child {
margin-bottom: 0;
}
.popout table {
border-collapse: collapse;
border-spacing: 0;
max-width: 100%;
width: 100%;
}
.popout th {
text-align: left;
}
.popout th,
.popout td {
border-top: 1px solid #ddd;
line-height: 1.42857143;
padding: 8px;
vertical-align: top;
}
.popout table>thead>tr>th {
border-bottom: 2px solid #ddd;
border-top: 0;
vertical-align: bottom;
}
kbd {
-moz-border-radius: 0.3em;
-moz-user-select: none;
-webkit-border-radius: 0.3em;
-webkit-user-select: none;
border-radius: 0.3em;
border: none;
cursor: default;
display: inline-block;
display: inline;
font: normal 1em monospace;
margin: 0 0.2em;
min-width: 1em;
padding: 0.2em 0.6em;
text-align: center;
text-decoration: none;
font-weight: bold;
font-size: 13px;
user-select: none;
}
kbd[title],
.key[title] {
cursor: help;
}
kbd {
-moz-box-shadow: inset 0 0 1px rgb(150, 150, 150),
inset 0 -0.05em 0.4em rgb(80, 80, 80), 0 0.1em 0 rgb(30, 30, 30),
0 0.1em 0.1em rgba(0, 0, 0, 0.3);
-webkit-box-shadow: inset 0 0 1px rgb(150, 150, 150),
inset 0 -0.05em 0.4em rgb(80, 80, 80), 0 0.1em 0 rgb(30, 30, 30),
0 0.1em 0.1em rgba(0, 0, 0, 0.3);
background: -moz-linear-gradient(top, rgb(60, 60, 60), rgb(80, 80, 80));
background: -webkit-gradient(linear,
left top,
left bottom,
from(rgb(60, 60, 60)),
to(rgb(80, 80, 80)));
background: rgb(80, 80, 80);
box-shadow: inset 0 0 1px rgb(150, 150, 150),
inset 0 -0.05em 0.4em rgb(80, 80, 80), 0 0.1em 0 rgb(30, 30, 30),
0 0.1em 0.1em rgba(0, 0, 0, 0.3);
color: rgb(250, 250, 250);
text-shadow: -1px -1px 0 rgb(70, 70, 70);
}
.fadeIn {
animation: fadeIn 300ms;
opacity: 1;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.fadeOut {
animation: fadeOut 1s;
opacity: 0;
}
@keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}