webdsky
Version:
Emulation of the DSKY user interface of the Apollo Guidance Computer for the Web platform
408 lines (344 loc) • 5.96 kB
CSS
/* SPDX-License-Identifier: GPL-2.0-or-later */
/* SPDX-FileCopyrightText: Copyright 2020 Michael Karl Franzl <public.michael@franzl.name> */
:host {
width: 698px;
height: 792px;
display: block;
position: relative;
}
div.interface {
background-image: url('LM11-co46-dsky-bg.png');
background-repeat: no-repeat;
width: 100%;
height: 100%;
display: inline-block;
position: absolute;
z-index: 5;
}
div.overlay {
background-image: url('LM11-co46-dsky-overlay.png');
background-repeat: no-repeat;
width: 698px;
height: 792px;
display: inline-block;
position: absolute;
z-index: 10;
}
div.blur {
backdrop-filter: blur(1px);
z-index: 8;
}
div.digitContainer {
display: inline-block;
position: absolute;
width: 238px;
height: 396px;
top: 37px;
left: 400px;
}
div.digitRow {
display: inline-block;
position: absolute;
height: 58px;
}
div.digitRow.row1 {
top: 182px;
}
div.digitRow.row2 {
top: 254px;
}
div.digitRow.row3 {
top: 327px;
}
div.digitRow.row4 {
top: 110px;
left: 8px;
}
div.digitRow.row5 {
top: 110px;
right: 1px;
}
div.digitRow.row7 {
top: 15px;
right: 1px;
}
div.acty_bg {
position: absolute;
display: inline-block;
width: 86px;
height: 80px;
background-color: #86ce87;
left: 3px;
top: 5px;
box-shadow: 0px 0px 5px #86ce87;
}
div.prog_bg {
position: absolute;
display: inline-block;
width: 87px;
height: 25px;
background-color: #86ce87;
right: 1px;
top: 5px;
box-shadow: 0px 0px 5px #86ce87;
}
div.verb_bg {
position: absolute;
display: inline-block;
width: 86px;
height: 25px;
background-color: #86ce87;
left: 3px;
top: 99px;
box-shadow: 0px 0px 5px #86ce87;
}
div.noun_bg {
position: absolute;
display: inline-block;
width: 87px;
height: 25px;
background-color: #86ce87;
right: 1px;
top: 98px;
box-shadow: 0px 0px 5px #86ce87;
}
div.separator {
position: absolute;
display: inline-block;
height: 6px;
background-color: #86ce87;
left: 30px;
right: 12px;
box-shadow: 0px 0px 5px #86ce87;
border-radius: 1px;
}
dsky-display-sign {
margin-right: -20px;
}
div#lamps {
background-color: #cac4b4;
position: absolute;
display: inline-block;
left: 0px;
top: 0px;
width: 320px;
height: 460px;
}
div.lamp {
position: absolute;
z-index: 2;
width: 116px;
height: 50px;
opacity: 0;
background-color: white;
animation: fadeOut ease .2s;
}
div.lamp.on {
animation: fadeIn ease .001s;
opacity: 1;
}
@keyframes fadeIn {
from{ opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
div#lamp00 {
left: 65px;
top: 48px;
}
div#lamp01 {
background-color: #ffee8f;
left: 186px;
top: 48px;
}
div#lamp10 {
left: 65px;
top: 102px;
}
div#lamp11 {
background-color: #ffee8f;
left: 186px;
top: 102px;
}
div#lamp20 {
left: 65px;
top: 158px;
}
div#lamp21 {
background-color: #ffee8f;
left: 186px;
top: 158px;
}
div#lamp30 {
left: 65px;
top: 216px;
}
div#lamp31 {
background-color: #ffee8f;
left: 186px;
top: 216px;
}
div#lamp40 {
left: 65px;
top: 274px;
}
div#lamp41 {
background-color: #ffee8f;
left: 186px;
top: 274px;
}
div#lamp50 {
left: 65px;
top: 331px;
}
div#lamp51 {
background-color: #ffee8f;
left: 186px;
top: 331px;
}
div#lamp60 {
left: 65px;
top: 386px;
}
div#lamp61 {
background-color: #ffee8f;
left: 186px;
top: 386px;
}
div.key {
position: absolute;
display: inline-block;
width: 75px;
height: 75px;
background-image: url('LM11-co46-dsky-bg.png');
background-repeat: no-repeat;
z-index: 150;
}
div.key:hover {
cursor: pointer;
}
div.key:active,
div.key.pressed {
/* cheap button push animation */
border-left: 2px solid transparent;
border-top: 2px solid transparent;
opacity: 0.9;
filter: brightness(2.5);
}
div#key_0 {
background-position-x: -115px;
background-position-y: -682px;
left: 115px;
top: 682px;
}
div#key_1 {
background-position-x: -212px;
background-position-y: -682px;
left: 212px;
top: 682px;
}
div#key_2 {
background-position-x: -309px;
background-position-y: -683px;
left: 309px;
top: 683px;
}
div#key_3 {
background-position-x: -408px;
background-position-y: -683px;
left: 408px;
top: 683px;
}
div#key_k {
background-position-x: -506px;
background-position-y: -683px;
left: 506px;
top: 683px;
}
div#key_m {
background-position-x: -115px;
background-position-y: -587px;
left: 115px;
top: 587px;
}
div#key_4 {
background-position-x: -212px;
background-position-y: -587px;
left: 212px;
top: 587px;
}
div#key_5 {
background-position-x: -309px;
background-position-y: -587px;
left: 309px;
top: 587px;
}
div#key_6 {
background-position-x: -408px;
background-position-y: -587px;
left: 408px;
top: 587px;
}
div#key_o {
background-position-x: -506px;
background-position-y: -587px;
left: 506px;
top: 587px;
}
div#key_p {
background-position-x: -115px;
background-position-y: -494px;
left: 115px;
top: 494px;
}
div#key_7 {
background-position-x: -212px;
background-position-y: -494px;
left: 212px;
top: 494px;
}
div#key_8 {
background-position-x: -309px;
background-position-y: -494px;
left: 309px;
top: 494px;
}
div#key_9 {
background-position-x: -408px;
background-position-y: -494px;
left: 408px;
top: 494px;
}
div#key_c {
background-position-x: -506px;
background-position-y: -494px;
left: 506px;
top: 494px;
}
div#key_v {
background-position-x: -18px;
background-position-y: -540px;
left: 18px;
top: 540px;
}
div#key_n {
background-position-x: -18px;
background-position-y: -634px;
left: 18px;
top: 634px;
}
div#key_e {
background-position-x: -604px;
background-position-y: -540px;
left: 604px;
top: 540px;
}
div#key_r {
background-position-x: -604px;
background-position-y: -634px;
left: 604px;
top: 634px;
}