@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap");
:root {
--rosewater: hsl(10, 56%, 91%);
--flamingo: hsl(0, 59%, 88%);
--pink: hsl(316, 72%, 86%);
--mauve: hsl(267, 84%, 81%);
--red: hsl(343, 81%, 75%);
--maroon: hsl(350, 65%, 78%);
--peach: hsl(23, 92%, 76%);
--yellow: hsl(41, 86%, 83%);
--green: hsl(115, 54%, 76%);
--teal: hsl(170, 57%, 73%);
--sky: hsl(189, 71%, 73%);
--sapphire: hsl(199, 76%, 69%);
--blue: hsl(217, 92%, 76%);
--lavender: hsl(232, 97%, 85%);
--text: hsl(226, 64%, 88%);
--subtext1: hsl(227, 35%, 80%);
--subtext0: hsl(228, 24%, 72%);
--overlay2: hsl(228, 17%, 64%);
--overlay1: hsl(230, 13%, 56%);
--overlay0: hsl(231, 11%, 47%);
--surface2: hsl(233, 12%, 39%);
--surface1: hsl(234, 13%, 31%);
--surface0: hsl(237, 16%, 23%);
--base: hsl(240, 21%, 15%);
--mantle: hsl(240, 21%, 12%);
--crust: hsl(240, 23%, 9%);
--theme-color: var(--mauve);
}
* {
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-text-size-adjust: none;
-webkit-touch-callout: none;
box-sizing: border-box;
}
body:not(.ready) {
overflow: hidden;
}
body:not(.ready) .app-nav,
body:not(.ready) > nav,
body:not(.ready) [data-cloak] {
display: none;
}
div#app {
font-size: 30px;
font-weight: lighter;
margin: 40vh auto;
text-align: center;
}
div#app:empty:before {
content: "Loading...";
}
.emoji {
height: 1.2rem;
vertical-align: middle;
}
.progress {
background-color: var(--theme-color);
height: 2px;
left: 0;
position: fixed;
right: 0;
top: 0;
transition:
width 0.2s,
opacity 0.4s;
width: 0;
z-index: 5;
}
input[type="search"] {
background: var(--mantle);
border-color: var(--mantle);
color: var(--subtext2);
}
.search {
border-bottom: 1px solid var(--crust);
}
.search .search-keyword,
.search a:hover {
color: var(--theme-color);
}
.search .search-keyword {
color: var(--theme-color);
font-style: normal;
font-weight: 700;
}
.search .results-panel {
color: rgb(192, 192, 192);
}
.search .matching-post {
border-bottom: 1px solid var(--surface0) !important;
}
body,
html {
height: 100%;
}
body {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
color: var(--subtext1);
font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco,
Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 16px;
letter-spacing: 0;
margin: 0;
overflow-x: hidden;
z-index: 10;
}
img {
max-width: 100%;
}
a[disabled] {
cursor: not-allowed;
opacity: 0.6;
}
kbd {
border: 1px solid var(--mantle);
border-radius: 3px;
display: inline-block;
font-size: 12px !important;
line-height: 12px;
margin-bottom: 3px;
padding: 3px 5px;
vertical-align: middle;
}
.task-list-item {
list-style-type: none;
}
li input[type="checkbox"] {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
.app-nav {
margin: 25px 60px 0 0;
position: absolute;
right: 0;
text-align: right;
z-index: 2;
}
.app-nav.no-badge {
margin-right: 25px;
}
.app-nav p {
margin: 0;
}
.app-nav > a {
margin: 0 1rem;
padding: 5px 0;
}
.app-nav li,
.app-nav ul {
display: inline-block;
list-style: none;
margin: 0;
}
.app-nav a {
color: inherit;
font-size: 16px;
text-decoration: none;
transition: color 0.3s;
}
.app-nav a.active,
.app-nav a:hover {
color: var(--theme-color);
}
.app-nav a.active {
border-bottom: 2px solid var(--theme-color);
color: var(--theme-color);
}
.app-nav li {
display: inline-block;
margin: 0 1rem;
padding: 5px 0;
position: relative;
}
.app-nav li ul {
background-color: var(--text);
border: 1px solid var(--subtext0);
border-bottom-color: var(--subtext0);
border-radius: 4px;
box-sizing: border-box;
display: none;
max-height: calc(100vh - 61px);
overflow-y: auto;
padding: 10px 0;
position: absolute;
right: -15px;
text-align: left;
top: 100%;
white-space: nowrap;
}
.app-nav li ul li {
display: block;
font-size: 14px;
line-height: 1rem;
margin: 0;
margin: 8px 14px;
white-space: nowrap;
}
.app-nav li ul a {
display: block;
font-size: inherit;
margin: 0;
padding: 0;
}
.app-nav li ul a.active {
border-bottom: 0;
}
.app-nav li:hover ul {
display: block;
}
.github-corner {
border-bottom: 0;
position: fixed;
right: 0;
text-decoration: none;
top: 0;
z-index: 1;
}
.github-corner:hover .octo-arm {
animation: a 0.56s ease-in-out;
}
.github-corner svg {
color: var(--mantle);
fill: var(--theme-color);
height: 80px;
width: 80px;
}
main {
display: block;
position: relative;
width: 100vw;
height: 100%;
z-index: 0;
}
main.hidden {
display: none;
}
.anchor {
display: inline-block;
text-decoration: none;
transition: all 0.3s;
}
.anchor span {
color: var(--theme-color);
}
.anchor:hover {
text-decoration: underline;
}
.sidebar {
border-right: 1px solid var(--surface1);
overflow-y: auto;
padding: 40px 0 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
transition: transform 0.25s ease-out;
width: 300px;
z-index: 3;
}
.sidebar > h1 {
margin: 0 auto 1rem;
font-size: 1.5rem;
font-weight: 300;
text-align: center;
}
.sidebar > h1 a {
color: inherit;
text-decoration: none;
font-weight: 600;
color: var(--theme-color);
}
.sidebar > h1 .app-nav {
display: block;
position: static;
}
.sidebar .sidebar-nav {
line-height: 2em;
padding-bottom: 40px;
}
.sidebar li.collapse .app-sub-sidebar {
display: none;
}
.sidebar ul {
margin: 0 0 0 15px;
padding: 0;
}
.sidebar li > p {
font-weight: 700;
margin: 0;
color: var(--theme-color);
}
.sidebar ul,
.sidebar ul li {
list-style: none;
}
.sidebar ul li a {
border-bottom: none;
display: block;
}
.sidebar ul li ul {
padding-left: 20px;
}
.sidebar::-webkit-scrollbar {
width: 4px;
}
.sidebar::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 4px;
}
.sidebar:hover::-webkit-scrollbar-thumb {
background: var(--subtext1);
}
.sidebar:hover::-webkit-scrollbar-track {
background: var(--subtext1);
}
.sidebar-toggle {
background-color: transparent;
background-color: var(--base);
border: 0;
outline: none;
padding: 10px;
position: absolute;
bottom: 0;
left: 0;
text-align: center;
transition: opacity 0.3s;
width: 284px;
z-index: 4;
}
.sidebar-toggle .sidebar-toggle-button:hover {
opacity: 0.4;
}
.sidebar-toggle span {
background-color: var(--theme-color);
display: block;
margin-bottom: 4px;
width: 16px;
height: 2px;
}
body.sticky .sidebar,
body.sticky .sidebar-toggle {
position: fixed;
}
.content {
padding-top: 60px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 300px;
transition: left 0.25s ease;
}
.markdown-section {
margin: 0 auto;
max-width: 800px;
padding: 30px 15px 40px;
position: relative;
}
.markdown-section > * {
box-sizing: border-box;
font-size: inherit;
}
.markdown-section > :first-child {
margin-top: 0 !important;
}
.markdown-section hr {
border: none;
border-bottom: 1px solid var(--subtext1);
margin: 2em 0;
}
.markdown-section iframe {
border: 1px solid var(--subtext1);
}
.markdown-section table {
border-collapse: collapse;
border-spacing: 0;
display: block;
margin-bottom: 1rem;
overflow: auto;
width: 100%;
}
.markdown-section th {
font-weight: 700;
}
.markdown-section td,
.markdown-section th {
border: 1px solid var(--subtext2);
padding: 6px 13px;
}
.markdown-section tr {
border-top: 1px solid var(--subtext1);
}
.markdown-section p.tip,
.markdown-section tr:nth-child(2n) {
background-color: var(--mantle);
}
.markdown-section p.tip {
border-bottom-right-radius: 2px;
border-left: 4px solid var(--theme-color);
border-top-right-radius: 2px;
margin: 2em 0;
padding: 12px 24px 12px 30px;
position: relative;
}
.markdown-section p.tip:before {
background-color: var(--theme-color);
border-radius: 100%;
color: var(--text);
content: "!";
font-family:
Dosis,
Source Sans Pro,
Helvetica Neue,
Arial,
sans-serif;
font-size: 14px;
font-weight: 700;
left: -12px;
line-height: 20px;
position: absolute;
height: 20px;
width: 20px;
text-align: center;
top: 14px;
}
.markdown-section p.tip code {
background-color: var(--mantle);
}
.markdown-section p.tip em {
color: var(--subtext2);
}
.markdown-section p.warn {
background: var(--base);
border-radius: 2px;
padding: 1rem;
}
body.close .sidebar {
transform: translateX(-300px);
}
body.close .sidebar-toggle {
width: auto;
}
body.close .content {
left: 0;
}
@media print {
.app-nav,
.github-corner,
.sidebar,
.sidebar-toggle {
display: none;
}
}
@media screen and (max-width: 768px) {
.github-corner,
.sidebar,
.sidebar-toggle {
position: fixed;
}
.app-nav {
margin-top: 16px;
}
.app-nav li ul {
top: 30px;
}
main {
height: auto;
overflow-x: hidden;
}
.sidebar {
left: -300px;
transition: transform 0.25s ease-out;
}
.content {
left: 0;
max-width: 100vw;
position: static;
padding-top: 20px;
transition: transform 0.25s ease;
}
.app-nav,
.github-corner {
transition: transform 0.25s ease-out;
}
.sidebar-toggle {
background-color: transparent;
width: auto;
padding: 30px 30px 10px 10px;
}
body.close .sidebar {
transform: translateX(300px);
}
body.close .sidebar-toggle {
background-color: var(--surface2);
transition: background-color 1s;
width: 284px;
padding: 10px;
}
body.close .content {
transform: translateX(300px);
}
body.close .app-nav,
body.close .github-corner {
display: none;
}
.github-corner:hover .octo-arm {
animation: none;
}
.github-corner .octo-arm {
animation: a 0.56s ease-in-out;
}
}
@keyframes a {
0%,
to {
transform: rotate(0);
}
20%,
60% {
transform: rotate(-25deg);
}
40%,
80% {
transform: rotate(10deg);
}
}
section.cover {
-ms-flex-align: center;
align-items: center;
background-position: 50%;
background-repeat: no-repeat;
background-size: cover;
height: 100vh;
display: none;
background: var(--mauve);
z-index: 0;
}
section.cover.show {
display: -ms-flexbox;
display: flex;
}
section.cover.has-mask .mask {
background-color: var(--text);
opacity: 0.8;
position: absolute;
top: 0;
height: 100%;
width: 100%;
}
section.cover .cover-main {
-ms-flex: 1;
flex: 1;
margin: -20px 16px 0;
text-align: center;
z-index: 10;
}
section.cover a {
color: inherit;
}
section.cover a,
section.cover a:hover {
text-decoration: none;
}
section.cover p {
line-height: 1.5rem;
margin: 1em 0;
}
section.cover h1 {
color: inherit;
font-size: 2.5rem;
font-weight: 300;
margin: 0.625rem 0 2.5rem;
position: relative;
text-align: center;
}
section.cover h1 a {
display: block;
}
section.cover h1 small {
bottom: -0.4375rem;
font-size: 1rem;
position: absolute;
}
section.cover blockquote {
font-size: 1.5rem;
text-align: center;
}
section.cover ul {
line-height: 1.8;
list-style-type: none;
margin: 1em auto;
max-width: 500px;
padding: 0;
}
section.cover .cover-main > p:last-child a {
border: 1px solid var(--theme-color);
border-radius: 2rem;
box-sizing: border-box;
color: var(--theme-color);
display: inline-block;
font-size: 1.05rem;
letter-spacing: 0.1rem;
margin: 0.5rem 1rem;
padding: 0.75em 2rem;
text-decoration: none;
transition: all 0.15s ease;
}
section.cover .cover-main > p:last-child a:last-child {
background-color: var(--theme-color, #b695f3);
color: var(--subtext1);
}
section.cover .cover-main > p:last-child a:last-child:hover {
color: inherit;
opacity: 0.8;
color: var(--subtext1);
}
section.cover .cover-main > p:last-child a:hover {
color: inherit;
}
section.cover blockquote > p > a {
border-bottom: 2px solid var(--theme-color);
transition: color 0.3s;
}
section.cover blockquote > p > a:hover {
color: var(--theme-color);
}
.sidebar,
body {
background-color: var(--base);
}
.sidebar {
color: var(--surface2);
}
.sidebar li {
margin: 6px 0;
}
.sidebar ul li a {
color: var(--text);
font-size: 14px;
font-weight: 600;
overflow: hidden;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.sidebar ul li a:hover {
text-decoration: underline;
}
.sidebar ul li ul {
padding: 0;
}
.sidebar ul li.active > a {
border-right: 2px solid;
color: var(--theme-color);
font-size: 16px;
font-weight: 600;
}
.app-sub-sidebar li:before {
content: "-";
padding-right: 4px;
float: left;
}
.markdown-section h1,
.markdown-section h2,
.markdown-section h3,
.markdown-section h4,
.markdown-section strong {
color: var(--text);
font-weight: 600;
}
.markdown-section a {
color: var(--theme-color);
font-weight: 600;
}
.markdown-section h1 {
font-size: 2rem;
margin: 0 0 1rem;
}
.markdown-section h2 {
font-size: 1.75rem;
margin: 45px 0 0.8rem;
}
.markdown-section h3 {
font-size: 1.5rem;
margin: 40px 0 0.6rem;
}
.markdown-section h4 {
font-size: 1.25rem;
}
.markdown-section h5 {
font-size: 1rem;
}
.markdown-section h6 {
color: var(--subtext0);
font-size: 1rem;
}
.markdown-section figure,
.markdown-section p {
margin: 1.2em 0;
}
.markdown-section ol,
.markdown-section p,
.markdown-section ul {
line-height: 1.6rem;
word-spacing: 0.05rem;
}
.markdown-section ol,
.markdown-section ul {
padding-left: 1.5rem;
}
.markdown-section blockquote {
border-left: 4px solid var(--theme-color);
color: var(--subtext1);
margin: 2em 0;
padding-left: 20px;
}
.markdown-section blockquote p {
font-weight: 600;
margin-left: 0;
}
.markdown-section iframe {
margin: 1em 0;
}
.markdown-section em {
color: var(--subtext2);
}
.markdown-section code {
border-radius: 2px;
color: var(--text);
white-space: pre-wrap;
}
.markdown-section code,
.markdown-section pre {
background-color: var(--mantle);
font-family:
"JetBrains Mono",
Roboto Mono,
Monaco,
courier,
monospace;
}
.markdown-section pre {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
line-height: 1.5rem;
margin: 1.2em 0;
overflow: auto;
padding: 0 1.4rem;
position: relative;
word-wrap: normal;
}
.markdown-section pre > code {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
background-color: var(--mantle);
border-radius: 2px;
color: var(--subtext1);
display: block;
font-family:
"JetBrains Mono",
Roboto Mono,
Monaco,
courier,
monospace;
font-size: 0.9rem;
line-height: inherit;
margin: 0 2px;
max-width: inherit;
overflow: inherit;
padding: 2.2em 5px;
white-space: inherit;
}
.markdown-section code:after,
.markdown-section code:before {
letter-spacing: 0.05rem;
}
code .token {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
min-height: 1.5rem;
}
pre:after {
color: var(--subtext1);
content: attr(data-lang);
font-size: 0.6rem;
font-weight: 600;
height: 15px;
line-height: 15px;
padding: 5px 10px 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
code[class*="language-"],
pre[class*="language-"] {
color: var(--text);
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: var(--mantle);
}
.token.keyword {
color: var(--mauve);
}
.token.builtin {
color: var(--red);
}
.token.class-name {
color: var(--yellow);
}
.token.function {
color: var(--blue);
}
.token.boolean,
.token.number {
color: var(--peach);
}
.token.string,
.token.char {
color: var(--green);
}
.token.symbol {
color: var(--yellow);
}
.token.regex {
color: var(--pink);
}
.token.url {
color: var(--green);
}
.token.operator {
color: var(--sky);
}
.token.variable {
color: var(--text);
}
.token.constant {
color: var(--peach);
}
.token.property {
color: var(--blue);
}
.token.punctuation {
color: var(--overlay2);
}
.token.important {
color: var(--mauve);
}
.token.comment {
color: var(--overlay2);
}
.token.tag {
color: var(--blue);
}
.token.attr-name {
color: var(--yellow);
}
.token.attr-value {
color: var(--green);
}
.token.namespace {
color: var(--yellow);
}
.token.prolog,
.token.doctype {
color: var(--mauve);
}
.token.cdata {
color: var(--teal);
}
.token.entity {
color: var(--red);
}
.token.atrule {
color: var(--mauve);
}
.token.selector {
color: var(--blue);
}
.token.deleted {
color: var(--red);
}
.token.inserted {
color: var(--green);
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}