ESPTerm web interface submodule, separated to make testing and development easier
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.
 
 
 
 
 
espterm-front-end/sass/pages/_term.scss

520 lines
7.4 KiB

body.term {
#content {
padding-left: 0;
padding-right: 0;
h1 {
font-size: fsize(5);
@include media($phone) {
font-size: fsize(3);
}
}
// longer duration to load everything in background nicely
transition: opacity 0.25s ease-in;
}
}
#screen {
white-space: nowrap;
background: #111213;
display: inline-block;
border: 2px solid #3983CD;
position: relative;
line-height: 0;
cursor: default;
canvas {
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
}
canvas.selectable {
cursor: text;
}
.screen-margin {
position: absolute;
// #111213 as rgb
background: rgba(17, 18, 19, 0.2);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
pointer-events: none;
&.top {
top: 0;
left: 0;
right: 0;
height: 6px;
}
&.left, &.right {
top: 6px;
left: 0;
bottom: 0;
width: 6px;
}
&.right {
left: auto;
right: 0;
}
&.bottom {
left: 6px;
right: 6px;
bottom: 0;
height: 6px;
}
}
@include noselect();
// Dummy input field used to open soft keyboard
#softkb-input {
position: absolute;
// compensate for padding
top: 6px;
left: 6px;
width: 1em;
height: 1em;
background: none;
border: none;
resize: none;
overflow: hidden;
opacity: 0;
outline: 0 none !important;
caret-color: transparent;
color: transparent;
@include click-through;
// iOS Safari still shows a caret regardless of the above, so set the font
// size as small as it can be (will show up as a blinking blue pixel)
font-size: 1px;
}
#touch-select-menu {
display: none;
position: absolute;
// compensate for padding
top: 6px;
left: 6px;
&.open {
display: block;
}
}
.debug-canvas {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
}
.debug-tooltip {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
background: #fff;
color: #000;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
border-radius: 6px;
padding: 6px 10px;
font-size: 12px;
line-height: 1;
table {
tr {
.label {
font-weight: bold;
text-align: right;
opacity: 0.5;
}
.value {
text-align: left;
.attributes {
&:empty::before {
content: 'None'
}
span:not(:last-of-type)::after {
content: ', '
}
}
}
}
}
}
.debug-toolbar {
line-height: 1.2;
text-align: left;
margin: 6px 12px 12px 12px;
padding: 6px;
background: #fff;
color: #000;
border-radius: 6px;
font-size: 12px;
white-space: normal;
.toolbar-group {
display: inline-block;
vertical-align: top;
margin: 0 1em;
tr {
.name {
font-weight: bold;
text-align: right;
opacity: 0.5;
&.title, &.has-button {
opacity: 1;
}
button {
background: none;
font: inherit;
text-shadow: none;
box-shadow: none;
color: #2ea1f9;
font-weight: bold;
text-align: right;
padding: 0;
margin: 0;
}
}
}
}
.heartbeat {
float: right;
font-family: $font-stack;
color: crimson;
font-size: 120%;
padding-right: 5px;
&.beat {
animation-name: heartbeat-beat;
animation-duration: 3s;
animation-fill-mode: forwards;
@keyframes heartbeat-beat {
0% {
transform: scale(1);
animation-timing-function: ease-out;
}
5% {
transform: scale(1.2);
animation-timing-function: linear;
}
100% {
transform: scale(0);
opacity: 0;
}
}
}
}
}
}
#action-buttons {
margin-top: 10px;
white-space: nowrap;
button {
margin: 0 3px;
padding: 8px 5px;
min-width: 62px;
cursor: pointer;
font-weight: bold;
&:focus {
outline: 0 none !important;
}
&.inactive {
opacity: 0.2;
}
}
}
#load-failed {
color: red;
font-size: 18px;
font-weight: bold;
margin: 20px 15px;
}
#screen.failed {
canvas, .screen-margin {
display: none;
}
}
#term-nav {
padding-top: 1.5em;
text-align: center;
a {
text-decoration: none;
padding: 5px 5px;
border-radius: 2px;
position: relative;
&, &:visited, &:link {
color: #336085;
}
&:hover {
color: #5abfff;
background: #1b273c;
}
&:active {
top: 1px;
}
i::before {
display: inline;
}
span {
margin-left: .2em;
}
@include media($phone) {
span {
display: none;
}
font-size: 130%;
padding: 6px;
}
}
.icn-keyboard {
text-decoration: none;
font-size: 130%; // make it bigger - icon is too small to be recognizable
vertical-align: middle;
}
}
#term-wrap {
text-align: center;
}
#fu_modal {
align-items: flex-start;
}
#fu_form {
padding: dist(0);
margin-top: 100px; // offset
z-index: 1000;
label {
width: 12em;
display: inline-block;
}
input[type="number"], select {
width: 10em;
}
textarea {
width: 100%;
min-height: 8em;
margin-top: dist(-1);
resize: vertical;
}
.fu-buttons {
text-align: center;
padding: dist(-2);
margin-top: dist(-2);
border-radius: 3px;
}
.fu-prog-box {
display: none;
}
&.busy {
background: rgba($c-modal-bg, .3);
border-left-color: rgba($c-form-highlight, .3);
border-right-color: rgba($c-form-highlight, .3);
.fu-content {
@include click-through;
opacity: .3;
}
.fu-buttons {
text-align: left;
background: $c-modal-bg;
border: 1px solid $c-form-highlight;
}
.fu-prog-box {
display: inline-block;
}
}
}
// shortcut bar on iOS
#keyboard-shortcut-bar {
border-radius: 4px;
width: calc(100vw - 20px);
background: #d1d5db;
padding: 5px 10px;
overflow-x: auto;
margin: 6px;
&:not(.open) {
display: none;
}
.shortcut-button {
background: #fff;
color: #000;
padding: 10px 20px;
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.3);
text-shadow: none;
border-radius: 4px;
margin: 0 10px 0 0;
font-family: -apple-system, sans-serif;
min-width: 2em;
&.modifier:not(.enabled) {
background: #9ea6b1;
color: #000;
}
}
}
body.pseudo-fullscreen {
#screen .screen-margin,
#keyboard-shortcut-bar {
display: none;
}
#outer {
position: static;
}
#screen {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
#screen canvas {
position: fixed;
top: 0;
left: 0;
z-index: 99;
}
#term-nav {
position: fixed;
width: 100%;
bottom: 0;
z-index: 98;
height: 24px;
padding: 0;
}
}
// Attributes
.bold {
font-weight: bold !important;
}
.faint span { // content of faint is wrapped in span
opacity: 0.6;
}
.italic {
font-style: italic;
}
.under {
text-decoration: underline;
}
.strike {
text-decoration: line-through;
}
.underline.strike {
text-decoration: underline line-through;
}
.blink-hide .blink {
color: transparent;
}
//
.color-example {
font-family: monospace;
font-size: 14pt;
padding: 4px 6px;
}
.preset {
cursor: pointer;
font-family: monospace;
font-size: 14pt;
}
.Row.color-preview {
label {
align-self: center;
}
@include media($phone) {
font-size: 12pt;
align-items: flex-start;
label {
align-self: flex-start;
}
}
.colorprev {
font-family: monospace;
font-size: 14pt;
display:block;
margin: 0;
cursor: pointer;
}
}
#color-example {
display: inline-block;
padding: 5px;
}
.theme-nav-btn {
width: 2em;
height: 2em;
display: flex;
align-items: center;
justify-content: space-around;
background: #4c4c4c;
color: #eaeaea;
margin: 5px;
border-radius: 5px;
@include noselect();
cursor: pointer;
position: relative;
&:active {
top: 1px;
}
}