OpenTerminal/public/styles/main.css

249 lines
4 KiB
CSS

:root {
--colour: #a6e3a1;
--bgcolour: #1e1e2e;
}
body {
margin: 0;
padding: 0;
color: var(--colour);
background-color: var(--bgcolour);
font-family: monospace;
font-size: 12px;
}
main {
margin: 0 1rem;
border: 1px solid var(--colour);
}
pre#content {
height: calc(100vh - 6rem);
margin: 0;
padding: 1rem;
overflow-x: hidden;
overflow-y: scroll;
white-space: break-spaces;
line-break: anywhere;
text-shadow: 0 0 2em;
}
div#caret {
width: .5em;
height: .9em;
display: inline-block;
background: var(--colour);
transform: translateY(1px);
animation: linear .5s infinite forwards caret-blink;
}
@keyframes caret-blink {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
footer,
header {
height: 18px;
padding: .5em 2em;
display: flex;
gap: 1em;
align-items: center;
justify-content: space-between;
}
footer ul,
header ul {
margin: 0;
padding: 0;
display: flex;
gap: 1em;
}
footer li,
header li {
list-style: none;
}
footer li a,
header li a,
footer li:not(:has(a)),
header li:not(:has(a)) {
opacity: .5;
}
footer a:hover,
header a:hover,
footer a.active,
header a.active {
text-shadow: 0 0 1em, 0 0 3em;
opacity: 1;
}
footer a,
header a {
color: var(--colour);
text-decoration: none;
cursor: pointer;
}
ul#colours-dropdown {
position: absolute;
top: 2.5em;
right: 1.3em;
padding: calc(1rem - .25em);
display: none;
flex-direction: column;
text-align: right;
gap: 0;
border: 1px solid var(--colour);
background: var(--bgcolour);
max-height: 18em;
overflow-y: scroll;
}
ul#colours-dropdown.active {
display: flex;
}
ul#colours-dropdown li {
padding: .25em .5em;
cursor: pointer;
}
ul#colours-dropdown li:hover,
ul#colours-dropdown li.active {
opacity: 1;
color: var(--bgcolour);
background: var(--colour);
}
div#overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-image: linear-gradient(180deg, rgba(0,0,0,0) 15%, rgb(0, 0, 0) 40%, rgb(0, 0, 0) 60%, rgba(0,0,0,0) 85%);
background-size: 100vw .2em;
background-repeat: repeat;
opacity: .5;
pointer-events: none;
animation: linear .05s infinite alternate overlay-flicker;
mix-blend-mode: overlay;
z-index: 100;
}
body.lcd div#overlay {
background-image:
linear-gradient(to right,
rgba(255,0,0,.5) 0%, rgba(255,0,0,.5) 33%,
rgba(0,255,0,.5) 34%, rgba(0,255,0,.5) 66%,
rgba(0,0,255,.5) 66%, rgba(0,0,255,.5) 100%),
linear-gradient(to top, rgba(255,255,255,255) 0%, rgba(255,255,255,0) 100%);
mix-blend-mode: multiply;
background-size: 3px 3px;
animation: none;
}
body.lcd pre#content {
text-shadow: -1px 0 rgba(255,0,0,.5), 1px 0 rgba(0,0,255,.5), 0 0 .5em, 0 0 3em;
}
@keyframes overlay-flicker {
from {
opacity: .5;
}
to {
opacity: .6;
}
}
#mobile-input {
position: absolute;
top: 1.2em;
left: 1.2em;
width: calc(100vw - 3em);
height: calc(100vh - 3.9em);
opacity: 0;
user-select: none;
pointer-events: none;
}
#dialog-backdrop {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
display: none;
background: black;
opacity: .25;
z-index: 99;
}
#connect-dialog {
position: fixed;
top: 50%;
left: 50%;
max-width: calc(100vw - 4rem);
width: 16rem;
margin: auto auto;
padding: 1rem;
display: none;
transform: translate(-50%, -50%);
border: 1px solid var(--colour);
color: var(--colour);
background: var(--bgcolour);
text-shadow: 0 0 2em;
z-index: 99;
}
#dialog-backdrop.show,
#connect-dialog.show {
display: block;
}
#connect-dialog p {
margin: 0 0 1em 0;
}
#connect-dialog input {
font-family: inherit;
color: var(--colour);
border: 1px solid var(--colour);
background: transparent;
}
#connect-dialog input::placeholder {
font-family: inherit;
color: var(--colour);
opacity: .25;
}
#connect-dialog button {
font-family: inherit;
border: 1px solid var(--colour);
color: var(--colour);
background: transparent;
cursor: pointer;
}
#connect-dialog #connect-close {
position: absolute;
top: -0.7em;
right: 1rem;
border: none;
background: var(--bgcolour);
}
*:focus {
outline: none;
box-shadow: 0 0 4px;
}