Cat-Printer/www/main.css
2022-04-06 18:13:19 +08:00

298 lines
6.7 KiB
CSS

:root {
--font-size: 1.2em;
--span: 8px;
--span-half: calc(var(--span) / 2);
--span-double: calc(var(--span) * 2);
--border: 1px;
--border-double: calc(var(--border) * 2);
--paper-width: 384px;
--anim-time: 0.5s;
--fore-color: #111;
--back-color: #eee;
--canvas-back: #fff;
--curve: cubic-bezier(.08,.82,.17,1);
--panel-height: 20em;
--target-color: rgba(0, 255, 0, 0.2);
--notice-color: rgba(0, 0, 255, 0.2);
--notice-warning: rgba(255, 128, 0, 0.2);
--notice-error: rgba(255, 0, 0, 0.2);
}
body.no-animation *,
body.no-animation *::before,
body.no-animation *::after {
transition-duration: 0ms !important;
transition: none;
animation-timing-function: steps(1);
animation-duration: 0ms !important;
}
body {
border: none;
background-color: var(--back-color);
color: var(--fore-color);
font-size: var(--font-size);
font-family: 'Noto Sans', 'Segoe UI', sans-serif;
overflow: auto;
margin: 1em 0;
}
h1 {
font-size: 1.5em;
font-weight: normal;
margin: var(--span-half) 0;
}
a:link, a:visited {
color: #33f;
}
a:hover, a:active {
color: #22f;
}
a {
transition: all var(--anim-time) ease-out;
}
.center {
text-align: center;
}
button, input, select, textarea {
font: inherit;
color: var(--fore-color);
}
button, input[type="number"], input[type="text"], select {
margin: var(--span-half) var(--span);
border: var(--border) solid var(--fore-color);
padding: var(--span-half) var(--span);
background-color: transparent;
transition: all var(--anim-time) var(--curve);
cursor: pointer;
min-width: 6em;
display: inline-block;
}
input[type="number"], input[type="text"] {
width: 6em;
cursor: text;
}
button:hover {
margin: 0;
padding: var(--span) calc(var(--span-double));
min-width: calc(6em + var(--span-double));
}
button:active {
box-shadow: 0 0 var(--span) inset var(--fore-color);
}
#notice {
min-height: var(--font-size);
background-color: var(--notice-color);
/* border: var(--border) solid var(--fore-color); */
}
#notice.warning, #button-exit {
background-color: var(--notice-warning);
}
#notice.error {
background-color: var(--notice-error);
}
.noscript {
background-color: var(--notice-error);
}
main, header, footer {
max-width: 45em;
margin: 1em auto;
display: flex;
flex-direction: row;
/* flex-wrap: wrap; */
}
main>.left {
flex-grow: 1;
/* position: sticky; */
/* top: 0; */
height: 100%;
overflow: auto;
margin: var(--span);
min-width: 12em;
}
main>.right {
flex-grow: 0;
margin: 0 auto;
height: 100%;
overflow: auto;
text-align: center;
min-width: calc(var(--paper-width) + var(--border-double) + var(--span-double));
}
canvas#preview, canvas#control-canvas, #control-document {
border: var(--border) solid var(--fore-color);
background-color: var(--canvas-back);
width: var(--paper-width);
display: inline-block;
}
#control-document {
font: initial;
font-size: 16px;
font-family: 'Unifont';
text-align: initial;
color: #000;
}
#control-document.normal-font {
font-family: inherit;
font-size: inherit;
}
canvas#preview {
z-index: 0;
}
canvas#control-canvas,
#control-document {
position: absolute;
opacity: 0;
transition: opacity var(--anim-time) var(--curve);
z-index: 1;
}
canvas#control-canvas:hover,
#control-document:hover {
opacity: 1;
}
canvas#control-canvas.disabled,
#control-document.disabled {
display: none;
}
p {
margin: var(--span) 0;
}
.panel {
border: var(--border) solid currentColor;
height: calc(var(--font-size) + 8px);
overflow: hidden;
/* scrollbar-width: thin; */
transition: height var(--anim-time) var(--curve);
padding: 0 var(--span);
margin: var(--span) 0;
}
.panel::before {
float: left;
}
.panel:not(.sub)::before { content: '📌'; }
.panel.sub::before { content: '📎'; }
.panel.sub {
border-width: var(--border) 0 0 0;
}
.panel.expanded {
height: var(--panel-height);
animation: delay-scrollable var(--anim-time) steps(1) 0s 1 forwards;
/* overflow-y: scroll; */
}
.panel.sub.expanded {
height: calc(var(--panel-height) / 2);
}
.panel>:nth-child(1),
.panel>:nth-child(1):link,
.panel>:nth-child(1):visited {
display: block;
margin: var(--span-half);
text-decoration: none;
text-align: center;
color: var(--fore-color);
}
.panel>:nth-child(1)::before {
content: '>>';
display: inline-block;
position: relative;
opacity: 0;
width: 0;
overflow: visible;
right: 2.5em;
transition: all var(--anim-time) var(--curve);
}
.panel>:nth-child(1):hover::before,
.panel>:nth-child(1):active::before {
opacity: 1;
right: 1.5em;
}
input[type="range"] {
width: 10em;
vertical-align: middle;
content: attr(value);
}
@keyframes hint {
0% { box-shadow: 0 0 var(--span-) inset transparent; }
50% { box-shadow: 0 0 var(--span) inset var(--fore-color); }
100% { box-shadow: 0 0 var(--span) inset transparent; }
}
.hint {
animation: hint 3s ease-out 0.1s infinite;
}
#hidden, .hidden { display: none; }
#error-record {
font-family: 'DejaVu Sans Mono', 'Consolas', monospace;
width: 100%;
font-size: 1rem;
overflow: auto;
white-space: pre;
height: calc(var(--panel-height) - var(--border-double) * 4);
}
.table-wrap {
overflow-x: auto;
width: 100%;
}
table#jslicense-labels1 {
min-width: 40em;
}
table#jslicense-labels1 td {
padding: var(--span-half) var(--span);
}
*:target {
background-color: var(--target-color);
}
dl {
margin: var(--span) 0;
display: block;
}
hr {
border: none;
border-top: var(--border) solid var(--fore-color);
}
@keyframes delay-scrollable {
from { overflow: hidden; }
to { overflow: auto; }
}
@media (max-width: 800px) {
:root {
--panel-height: 16em;
/* --font-size: 1em; */
}
main {
flex-direction: column;
}
main>.left {
/* height: 16em; */
overflow: auto;
width: calc(100% - var(--span-double) - var(--border-double));
}
main>.right {
min-width: unset;
}
}
@media (max-width: 384px) {
canvas#preview, canvas#control-canvas, #control-document {
width: calc(100% - var(--border-double));
}
}
@media (prefers-color-scheme: dark) {
:root {
--fore-color: #eee;
--back-color: #333;
/* --canvas-back: #666; */
}
a:link, a:visited {
color: #66f;
}
a:hover, a:active {
color: #77f;
}
canvas#preview, canvas#control-canvas, #control-document {
filter: brightness(0.5);
}
}
@font-face {
font-family: 'Unifont';
src: local('Unifont') url('unifont.ttf') url('unifont.otf');
}