:root {
--common-font: "Roboto", Helvetica, sans-serif;
--mono-font: "JetBrains Mono", monospace;
}
* {
border-color: inherit;
}
body {
font-family: var(--common-font);
max-width: var(--body-width);
margin: 0 auto;
min-height: 100vh;
display: flex;
flex-direction: column;
overflow-x: hidden;
}
header, footer {
padding: 0.2rem;
margin: 0.5rem;
border-width: 0.15rem;
border-style: solid;
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: space-between;
}
main {
margin: 0 1rem;
flex-grow: 1;
display: flex;
flex-direction: column;
align-items: flex-start;
}
p {
align-self: normal;
}
p, h1, h2, h3 {
margin: 0.5rem 0;
}
pre, code {
font-family: var(--mono-font);
font-size: 0.8rem;
}
main>pre {
margin: 0.5rem 0;
padding: 0 1rem;
font-size: 0.8rem;
}
pre>code {
font-size: inherit;
}
code {
font-size: 0.9rem;
white-space: pre;
}
a {
color: var(--link);
}
a:visited {
color: var(--link-fg-override, var(--visited));
}
span[title]:hover {
text-decoration: underline dotted;
}
hr {
margin-inline: 0;
align-self: stretch;
}
main img {
margin: 0.5rem auto;
display: block;
}
main img + em {
text-align: center;
display: block;
}
button {
box-sizing: initial;
font-family: var(--common-font);
font-size: 1em;
}
.theme-apply, .theme-apply.button {
color: var(--fg);
background: var(--bg);
border-color: var(--border);
}
/* TABLES */
.table-box {
overflow-x: auto;
align-self: center;
width: max-content;
max-width: 100vw;
}
table {
border-collapse: collapse;
border-color: var(--fg);
width: max-content;
margin: auto;
}
th {
font-weight: bold;
}
th:empty {
border: none;
}
th, td {
border-style: solid;
border-width: 1px;
padding: 0.3em;
text-align: center;
}
/* SCROLLBAR */
::-webkit-scrollbar {
width: 0.6rem;
height: 0.2rem;
}
::-webkit-scrollbar-thumb {
border-radius: 1rem;
background: var(--fg);
}
/* ADDITIONAL BLOCK PROPERTIES */
.stretched {
align-self: stretch;
}
.centered {
display: flex;
align-self: stretch;
flex-direction: column;
align-items: center;
}
.big-block {
width: 75%
}
.line-block {
display: flex;
align-items: center;
}
.centered-line-block {
align-self: stretch;
display: flex;
align-items: center;
justify-content: space-evenly;
flex-wrap: wrap;
}
.file-list {
align-self: center;
min-width: 25%;
}
.breadcrumbs {
flex-grow: 1;
overflow-x: auto;
white-space: nowrap;
padding: 0.1rem 0;
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
}
.theme-panel {
display: flex;
align-self: stretch;
justify-content: space-around;
}
#invert-theme-button::after {
font-family: 'Material Icons', var(--common-font);
}
label[for="body-width-range"] {
font-family: 'JetBrains Mono', monospace;
}
/* ARTICLE PREVIEW */
.preview-block {
display: flex;
align-self: stretch;
justify-content: space-around;
flex-wrap: wrap;
gap: 0.3rem;
}
.preview {
padding: 0.5rem;
border-radius: 0.5rem;
width: 100%;
}
.preview>* {
margin: 0;
}
/* ICON */
.icon {
display: inline-block;
}
.icon::after {
font-family: 'Material Icons';
user-select: none;
text-transform: none;
text-decoration: none;
line-height: 1;
white-space: nowrap;
direction: ltr;
font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}
.button>.icon:not(:empty), .button>.svg-icon {
margin-right: 0.25rem;
}
/* SVG ICONS */
.svg-icon {
height: 1.2rem;
width: 1.2rem;
background: currentColor;
mask-size: 100%;
-webkit-mask-size: 100%;
}
.license-icon {
mask-image: url(/static/media/license_icon.svg);
-webkit-mask-image: url(/static/media/license_icon.svg);
}
.github-icon {
mask-image: url(/static/media/github_icon.svg);
-webkit-mask-image: url(/static/media/github_icon.svg);
}
/* BUTTON */
.text-block, .button {
display: block;
margin: 0.2rem;
text-align: center;
text-decoration: none;
display: flex;
align-items: center;
}
.frame, .button {
border-style: solid;
border-width: 0.15rem;
border-radius: 0.5rem;
padding: 0.2rem;
margin: 0.2rem;
}
.preview, .button {
color: inherit;
background: inherit;
font-size: 1em;
cursor: pointer;
user-select: none;
text-decoration: none;
--link-fg-override: var(--fg);
}
.preview:hover, .button:hover {
background: var(--hover);
}
.preview:active, .button:active {
background: var(--active);
}
/* SWITCH */
.switch {
margin: 0.2rem;
border-radius: 0.3rem;
font-size: 1.25rem;
display: inline-block;
}
.switch input {
display: none;
}
.slider {
background: var(--inactive);
display: flex;
padding: 0;
width: 2em;
}
.slider::after {
content: "";
height: 1em;
width: 1em;
border-radius: 0.3rem;
background: var(--slider);
position: relative;
left: 0em;
}
input:checked+.slider {
background: var(--active);
}
input:checked+.slider::after {
left: 1em;
}
/* RANGE */
.range-block {
display: flex;
flex-direction: column;
align-self: stretch;
margin: 0.4rem;
}
.range {
font-size: 1.25rem;
flex-grow: 1;
padding: 0;
-webkit-appearance: none;
height: max-content;
border-radius: 0.5rem;
background: var(--inactive);
}
.range::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
height: 1em;
width: 1em;
border-radius: 0.3rem;
background: var(--slider);
cursor: pointer;
}
.range::-webkit-slider-thumb:hover {
background: var(--slider-hover);
}
.range::-moz-range-thumb {
-webkit-appearance: none;
appearance: none;
height: 1em;
width: 1em;
border-radius: 0.3rem;
background: var(--slider);
cursor: pointer;
}
.range::-moz-range-thumb:hover {
background: var(--slider-hover);
}
/* CODE HIGHLIGHT */
.highlight-block {
--hl-fg: #def;
--hl-fg-hover: #abc;
--text: #A9B7C6;
--frame: #777;
--string-start: #666;
--tooltip-bg: #444;
--tooltip-border: #888;
--button: #2b2b2b;
--button-hover: #444;
--button-active: #333;
border-radius: 0.4rem;
padding: 0.2rem;
margin: 0.5rem;
display: flex;
max-width: fit-content;
align-self: stretch;
position: relative;
color: var(--hl-fg);
background-color: var(--frame);
}
.highlight-block * {
color: inherit;
background-color: inherit;
}
.highlight-block pre {
margin: 0;
padding: 0.5rem 0.15rem 0.5rem 0;
}
.highlight-block>pre {
cursor: default;
user-select: none;
text-align: end;
}
.highlight {
border-radius: 0.2rem;
padding: 0 0.5rem;
overflow-x: auto;
}
.highlight pre {
border-left-width: 0.1rem;
border-left-style: solid;
padding: 0.5rem 0.3rem;
border-left-color: var(--string-start);
}
.highlight::-webkit-scrollbar {
height: 0.4rem;
}
.highlight::-webkit-scrollbar-track {
margin-inline: 0.4rem;
}
.highlight::-webkit-scrollbar-thumb {
border-radius: 1rem;
background: var(--hl-fg);
}
.highlight::-webkit-scrollbar-thumb:hover {
background: var(--hl-fg-hover);
}
.copy-button {
font-family: 'Material Icons', monospace;
font-size: 0.75rem;
user-select: none;
cursor: pointer;
position: absolute;
top: 0;
right: 0;
margin: 0.4rem;
padding: 0.1rem;
border-radius: 0.1rem;
box-shadow: 0 0 0 0;
background: var(--button);
color: var(--text);
opacity: 0;
}
.highlight-block:hover>.copy-button {
opacity: 0.5;
}
.highlight-block:hover>.copy-button:hover {
box-shadow: 0 0 0 0.1rem;
background: var(--button-hover);
border-color: var(--hl-fg);
opacity: 1;
}
.copy-button:active {
background: var(--button-active);
}
.copy-tooltip {
font-family: var(--common-font);
font-size: 0.8rem;
width: max-content;
position: absolute;
top: -1.85rem;
left: 50%;
transform: translateX(-50%);
padding: 0.2rem;
border: 0.1rem;
border-style: solid;
border-radius: 0.4rem;
cursor: default;
opacity: 0;
pointer-events: none;
background-color: var(--tooltip-bg);
color: var(--text);
border-color: var(--tooltip-border);
}
.copy-tooltip::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -0.3rem;
border-width: 0.3rem;
border-style: solid;
border-color: transparent;
border-top-color: var(--tooltip-bg);
}
.copy-tooltip>::after {
content: "Copy";
}
:hover>.copy-tooltip {
opacity: 1;
}
.copy-animation>.copy-tooltip>::after {
animation: copy-tooltip 1.5s;
}
.copy-animation {
animation: copy-button 1.5s;
}
.copy-animation::after {
animation: copy-button-icon 1.5s;
}
@keyframes copy-button {
from, to {
color: #88be05;
}
}
@keyframes copy-tooltip {
from, to {
content: "Copied";
}
}