html {
    color: var(--color-light-grey);
    background-color: var(--color-dark-grey);
    margin: 0;
    padding: 0;
    font-family: "Inter", "BIZ UDGothic", "Noto Sans JP", "Noto Sans TC", "Noto Sans SC", sans-serif;
    font-size: 12pt;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
}
body {
    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
header {
    background-color: var(--color-dark-grey);
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    padding: 24px;
    display: flex;
    align-items: center;
    gap: 16px;
    z-index: 10;
}
main {
    padding: 24px;
    padding-top: 76px;
    padding-bottom: 0px;
    flex: 1;
}
footer {
    padding: 24px;
    padding-top: 0px;
    display: flex;
    align-items: center;
    gap: 16px;
    z-index: 10;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--color-white);
}

/* Layout */
section {
    padding-top: 4px;
    padding-bottom: 4px;
}

.block {
    background-color: var(--color-dark-grey-alt);
    border-radius: 8px;
    padding: 16px 16px;
    margin-bottom: 16px;
}
.block > *:first-child {
    margin-top: 0;
}
.block > *:last-child {
    margin-bottom: 0;
}

.flex {
    display: flex;
    align-items: center;
    gap: 16px;
}
.flex > * {
    margin: 0;
}
.flex-1 {
    flex: 1;
}
.flex-vertical {
    flex-direction: column;
}

/* Code */
pre {
    background-color: #202020;
    border-radius: 4px;
    padding: 8px;
    overflow-x: auto;
    white-space: pre;
    line-height: 24px;
    font-size: small;
    font-family: "MesloLGS Nerd Font", "BIZ UDGothic", monospace;
    font-optical-sizing: auto;
    font-style: normal;
}
.block pre {
    margin-bottom: 20px;
}

code {
    padding: 4px;
    font-family: "MesloLGS Nerd Font", "BIZ UDGothic", monospace;
    font-optical-sizing: auto;
    font-style: normal;
}

/* Fonts */
a {
    text-decoration: underline;
    color: inherit;
}
b {
    font-weight: 600;
}
i {
    font-style: italic;
}
u {
    text-decoration: underline;
}
s {
    text-decoration: line-through;
}

.font-thin {
    font-weight: 100;
}
.font-extralight {
    font-weight: 200;
}
.font-light {
    font-weight: 300;
}
.font-regular {
    font-weight: 400;
}
.font-medium {
    font-weight: 500;
}
.font-bold {
    font-weight: 600;
}
.font-extrabold {
    font-weight: 700;
}
.font-black {
    font-weight: 800;
}

.font-weight-100 {
    font-weight: 100;
}
.font-weight-200 {
    font-weight: 200;
}
.font-weight-300 {
    font-weight: 300;
}
.font-weight-400 {
    font-weight: 400;
}
.font-weight-500 {
    font-weight: 500;
}
.font-weight-600 {
    font-weight: 600;
}
.font-weight-700 {
    font-weight: 700;
}
.font-weight-800 {
    font-weight: 800;
}
.font-weight-900 {
    font-weight: 900;
}
.font-weight-1000 {
    font-weight: 1000;
}

.text-no-decoration {
    text-decoration: none;
}
.text-italic {
    font-style: italic;
}
.text-underline {
    text-decoration: underline;
}
.text-overline {
    text-decoration: overline;
}
.text-line-through {
    text-decoration: line-through;
}

.font-xx-small {
    font-size: xx-small;
}
.font-x-small {
    font-size: x-small;
}
.font-small {
    font-size: small;
}
.font-medium {
    font-size: medium;
}
.font-large {
    font-size: large;
}
.font-x-large {
    font-size: x-large;
}
.font-xx-large {
    font-size: xx-large;
}
.font-xxx-large {
    font-size: xxx-large;
}
.font-smaller {
    font-size: smaller;
}
.font-larger {
    font-size: larger;
}

.font-inter {
    font-family: "Inter";
}
.font-bizud {
    font-family: "BIZ UDGothic";
}
.font-nsajp {
    font-family: "Noto Sans JP";
}
.font-nsatc {
    font-family: "Noto Sans TC";
}
.font-nsasc {
    font-family: "Noto Sans SC";
}
.font-nsakr {
    font-family: "Noto Sans KR";
}
.font-meslo {
    font-family: "MesloLGS Nerd Font";
}

/* Colors */
:root {
    --color-black: #000000;
    --color-white: #FFFFFF;

    --color-dark-grey: #1A1A1A;
    --color-dark-grey-alt: #272727;
    --color-light-grey: #E0E0E0;
    --color-light-grey-alt: #939393;

    --color-red: #A03333;
    --color-yellow: #CCA000;
    --color-green: #00A050;
    --color-teal: #00A0A0;
    --color-blue: #0080C0;
    --color-orange: #C86000;
    --color-brown: #A07033;
    --color-purple: #7844A0;
    --color-magenta: #A043A0;
    --color-indigo: #334DA0;

    --color-bright-red: #C84040;
    --color-bright-yellow: #FFC800;
    --color-bright-green: #00C878;
    --color-bright-teal: #00C8C8;
    --color-bright-blue: #00C0FF;
    --color-bright-orange: #FA7800;
    --color-bright-brown: #C88C40;
    --color-bright-purple: #C84040;
    --color-bright-magenta: #C854C8;
    --color-bright-indigo: #4060C8;
}

/* Text Colors */
.text-black          { color: var(--color-black); }
.text-white          { color: var(--color-white); }

.text-dark-grey      { color: var(--color-dark-grey); }
.text-dark-grey-alt  { color: var(--color-dark-grey-alt); }
.text-light-grey     { color: var(--color-light-grey); }
.text-light-grey-alt { color: var(--color-light-grey-alt); }

.text-red            { color: var(--color-red); }
.text-yellow         { color: var(--color-yellow); }
.text-green          { color: var(--color-green); }
.text-teal           { color: var(--color-teal); }
.text-blue           { color: var(--color-blue); }
.text-orange         { color: var(--color-orange); }
.text-brown          { color: var(--color-brown); }
.text-purple         { color: var(--color-purple); }
.text-magenta        { color: var(--color-magenta); }
.text-indigo         { color: var(--color-indigo); }

.text-bright-red     { color: var(--color-bright-red); }
.text-bright-yellow  { color: var(--color-bright-yellow); }
.text-bright-green   { color: var(--color-bright-green); }
.text-bright-teal    { color: var(--color-bright-teal); }
.text-bright-blue    { color: var(--color-bright-blue); }
.text-bright-orange  { color: var(--color-bright-orange); }
.text-bright-brown   { color: var(--color-bright-brown); }
.text-bright-purple  { color: var(--color-bright-purple); }
.text-bright-magenta { color: var(--color-bright-magenta); }
.text-bright-indigo  { color: var(--color-bright-indigo); }
 
/* Background Colors */
.bg-black          { background-color: var(--color-black); }
.bg-white          { background-color: var(--color-white); }

.bg-dark-grey      { background-color: var(--color-dark-grey); }
.bg-dark-grey-alt  { background-color: var(--color-dark-grey-alt); }
.bg-light-grey     { background-color: var(--color-light-grey); }
.bg-light-grey-alt { background-color: var(--color-light-grey-alt); }

.bg-red            { background-color: var(--color-red); }
.bg-yellow         { background-color: var(--color-yellow); }
.bg-green          { background-color: var(--color-green); }
.bg-teal           { background-color: var(--color-teal); }
.bg-blue           { background-color: var(--color-blue); }
.bg-orange         { background-color: var(--color-orange); }
.bg-brown          { background-color: var(--color-brown); }
.bg-purple         { background-color: var(--color-purple); }
.bg-magenta        { background-color: var(--color-magenta); }
.bg-indigo         { background-color: var(--color-indigo); }

.bg-bright-red     { background-color: var(--color-bright-red); }
.bg-bright-yellow  { background-color: var(--color-bright-yellow); }
.bg-bright-green   { background-color: var(--color-bright-green); }
.bg-bright-teal    { background-color: var(--color-bright-teal); }
.bg-bright-blue    { background-color: var(--color-bright-blue); }
.bg-bright-orange  { background-color: var(--color-bright-orange); }
.bg-bright-brown   { background-color: var(--color-bright-brown); }
.bg-bright-purple  { background-color: var(--color-bright-purple); }
.bg-bright-magenta { background-color: var(--color-bright-magenta); }
.bg-bright-indigo  { background-color: var(--color-bright-indigo); }

/* Responsive Design */
.hide {
    display: none;
}
@media (max-width: 740px) {
    .bold-on-small {
        font-weight: 600;
    }
    .hide.show-on-small {
        display: block;
    }
}
@media (min-width: 740px) and (max-width: 1080px) {
    .hide.show-on-medium {
        display: block;
    }
}
@media (min-width: 1080px) {
    .hide.show-on-large {
        display: block;
    }
}

/* Miscellaneous */
.unselectable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.banner {
    height: 50px;
    width: auto;
    border-radius: 6px;
}
.small-icon {
    width: 12pt;
    height: 12pt;
    display: block;
}
