/* PrismJS 1.29.0 https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript */ :root { --color-fg-default: #ffffff; --color-bg-code-block: #060606; --color-bg-inline-code-block: rgb(110 118 129 / 40%); --color-gray: #8b949e; --color-red: #f97583; --color-green: #85e89d; --color-blue: #79b8ff; --color-indigo: #79b8ff; --color-purple: #b392f0; --color-brown: #ffab70; --nc-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --nc-font-mono: Consolas, monaco, 'Ubuntu Mono', 'Liberation Mono', 'Courier New', Courier, monospace; --nc-tx-1: #ffffff; --nc-tx-2: #eeeeee; --nc-bg-1: #000000; --nc-bg-2: #111111; --nc-bg-3: #222222; --nc-lk-1: #7622eb; --nc-lk-2: #5d00e0; --nc-lk-tx: #FFFFFF; --nc-ac-1: #7928CA; --nc-ac-tx: #FFFFFF; } @font-face { font-family: 'JetBrains Mono'; src:url(./JetBrainsMono-VariableFont_wght.ttf); font-style: normal; } *{ color: #e1e4e8; scroll-behavior: smooth; } li{ line-height: 5vh; } h1 { margin-bottom: 0px; } p { font-family: var(--nc-font-sans); } code[class*="language-"], pre[class*="language-"] { background-color: var(--color-bg-code-block); color: var(--color-fg-default); font-family: "JetBrains Mono"; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 2; hyphens: none; font-size: 2.2vh; hyphens: none; line-height: 1.6; color: #d6deeb; text-align: left; word-break: normal; word-wrap: normal; tab-size: 4; tab-size: 4; tab-size: 4; white-space: pre; word-spacing: normal; -webkit-font-smoothing: auto; } /* Code blocks */ pre[class*="language-"] { font-size: 0.875rem; font-family: "Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace; padding: 25px; margin-top: 3.2vmin; overflow: auto; border-radius: 8px; } /* Inline code */ :not(pre) > code[class*="language-"] { font-size: 1rem; background-color: var(--color-bg-inline-code-block); padding: 0.2em 0.3em; border-radius: 0.3em; white-space: normal; } @media (width <= 700px) { :not(pre) > code[class*="language-"] { font-size: 0.875rem; } } .token.comment, .token.prolog, .token.cdata { color: var(--color-gray); } .token.doctype, .token.punctuation, .token.entity { color: var(--color-fg-default); } .token.attr-name, .token.class-name, .token.boolean, .token.constant, .token.number, .token.atrule { color: var(--color-blue); } .token.keyword { color: var(--color-indigo); } .token.property, .token.tag, .token.symbol, .token.deleted, .token.important { color: var(--color-green); } .token.selector, .token.string, .token.char, .token.builtin, .token.inserted, .token.regex, .token.attr-value, .token.attr-value > .token.punctuation { color: var(--color-blue); } .token.variable, .token.operator, .token.function { color: var(--color-indigo); } .token.url { color: var(--color-green); } /* HTML overrides */ .token.attr-value > .token.punctuation.attr-equals, .token.special-attr > .token.attr-value > .token.value.css { color: var(--color-fg-default); } /* CSS overrides */ .language-css .token.selector { color: var(--color-green); } .language-css .token.property { color: var(--color-blue); } .language-css .token.important, .language-css .token.atrule .token.rule { color: var(--color-red); } /* JS overrides */ .language-js .token.keyword, .language-javascript .token.keyword { color: var(--color-red); } .language-js .token.operator, .language-js .token.constant, .language-js .token.boolean, .language-js .token.number, .language-js .token.atrule, .language-javascript .token.operator, .language-javascript .token.constant, .language-javascript .token.boolean, .language-javascript .token.number, .language-javascript .token.atrule { color: var(--color-blue); } .language-js .token.function, .language-javascript .token.function { color: var(--color-purple); } .language-js .token.attr-name, .language-js .token.class-name, .language-js .token.function-variable, .language-javascript .token.attr-name, .language-javascript .token.class-name, .language-javascript .token.function-variable { color: var(--color-brown); } /* JSX overrides */ .language-jsx .token.keyword { color: var(--color-red); } .language-jsx .token.function { color: var(--color-purple); } .language-jsx .token.function-variable { color: var(--color-brown); } .language-jsx .token.punctuation { color: var(--color-blue); } .language-jsx .token.attr-name, .language-jsx .token.class-name { color: var(--color-green); } .language-jsx .token.string { color: var(--color-indigo); } /* JSON overrides */ .language-json .token.operator { color: var(--color-fg-default); } .language-json .token.null.keyword { color: var(--color-blue); } /* Java overrides */ .language-java .token.keyword { color: var(--color-red); } .language-java .token.operator, .language-java .token.constant, .language-java .token.boolean, .language-java .token.number, .language-java .token.atrule { color: var(--color-blue); } .language-java .token.function { color: var(--color-purple); } .language-java .token.attr-name, .language-java .token.function-variable { color: var(--color-green); } /* Kotlin overrides */ .language-kotlin .token.keyword { color: var(--color-red); } .language-kotlin .token.operator, .language-kotlin .token.constant, .language-kotlin .token.boolean, .language-kotlin .token.number, .language-kotlin .token.atrule { color: var(--color-blue); } .language-kotlin .token.function { color: var(--color-purple); } .language-kotlin .token.attr-name, .language-kotlin .token.function-variable { color: var(--color-green); } /* Go overrides */ .language-go .token.keyword { color: var(--color-red); } .language-go .token.operator, .language-go .token.constant, .language-go .token.boolean, .language-go .token.number, .language-go .token.atrule { color: var(--color-blue); } .language-go .token.function { color: var(--color-purple); } .language-go .token.attr-name, .language-go .token.function-variable { color: var(--color-green); } /* YAML overrides */ .language-yml .token.atrule, .language-yaml .token.atrule { color: var(--color-green); } /* Dockerfile overrides */ .language-dockerfile .token.keyword { color: var(--color-red); } .language-dockerfile .token.function { color: var(--color-purple); } .language-dockerfile .token.punctuation { color: var(--color-blue); } .language-dockerfile .token.attr-name, .language-dockerfile .token.class-name { color: var(--color-green); } .language-dockerfile .token.string { color: var(--color-indigo); } /* HCL overrides */ .language-hcl .token.keyword { color: var(--color-red); } .language-hcl .token.keyword:not(:has(span)) { color: var(--color-purple); } .language-hcl .token.string { color: var(--color-indigo); } .language-hcl .token.property, .language-hcl .token.punctuation { color: var(--color-fg-default); } /* General */ .token.bold { font-weight: bold; } .token.comment, .token.italic { font-style: italic; } .token.entity { cursor: help; } .token.namespace { opacity: 0.8; } div.code-toolbar{ position:relative } div.code-toolbar>.toolbar{ position:absolute; z-index:10; top:.3em; right:.2em; transition:opacity .3s ease-in-out; opacity:0 } div.code-toolbar:hover>.toolbar{ opacity:1 } div.code-toolbar:focus-within>.toolbar{ opacity:1 } div.code-toolbar>.toolbar>.toolbar-item{ display:inline-block } div.code-toolbar>.toolbar>.toolbar-item>a{ cursor:pointer } div.code-toolbar>.toolbar>.toolbar-item>button{ background:0 0; border:0; color:inherit; font:inherit; line-height:normal; overflow:visible; padding:0; -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none } div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{ color:#2eff9e; font-size: .8em; padding:0 .5em; background:#f5f2f0; background:rgba(224,224,224,.2); box-shadow:0 2px 0 0 rgba(0,0,0,.2); border-radius:.5em; font-family: "JetBrains Mono"; } div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{ color:inherit; text-decoration:none } /* Custom styles for theme */ .code-wrapper { position: relative; overflow: hidden; border-radius: 8px; } .code-wrapper > pre[class*="language-"] { margin-top: 0; } .copy-button { position: absolute; top: 5px; right: 5px; display: flex; align-items: center; color: rgb(230 202 168); cursor: pointer; background: transparent; background-color: #011627; border: none; } .copy-button svg { width: 1em; margin-left: 0.25em; opacity: 0.5; transition: opacity 0.3s; } .copy-button:hover svg { opacity: 1; } .code-wrapper { position: relative; overflow: hidden; border-radius: 8px; } .code-wrapper > pre[class*="language-"] { margin-top: 0; } div.code-toolbar{ position:relative } div.code-toolbar>.toolbar{ position:absolute; z-index:10; top:.3em; right:.2em; transition:opacity .3s ease-in-out; opacity:1 } div.code-toolbar>.toolbar>.toolbar-item{ display:inline-block } div.code-toolbar>.toolbar>.toolbar-item>a{ cursor:pointer } /* feature styles for buttons */ /* icon copy */ div.code-toolbar>.toolbar>.toolbar-item>button > span { color: transparent; background-color:#8234ff; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'%3E%3C/path%3E%3Cpath d='M7 6V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-3v3c0 .552-.45 1-1.007 1H4.007A1.001 1.001 0 0 1 3 21l.003-14c0-.552.45-1 1.007-1H7zM5.003 8L5 20h10V8H5.003zM9 6h8v10h2V4H9v2z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E"); mask-repeat: no-repeat no-repeat; mask-position: center right; font-family: "JetBrains Mono"; } /* hide icon copy */ div.code-toolbar>.toolbar>.toolbar-item>button[data-copy-state=copy-success] > span , div.code-toolbar>.toolbar>.toolbar-item>button[data-copy-state=copy-success]:hover > span { mask-image: none; color: #8234ff; background-color: transparent; } /* color of "Copied!" */ .copy-to-clipboard-button[data-copy-state~=copy-success] span { color: #8234ff; } /* text copy is hidden */ .copy-to-clipboard-button[data-copy-state=copy] span { color: transparent; } /* default item color */ div.code-toolbar>.toolbar>.toolbar-item { color: #ad1fff; } /* remove toolbar items decoration*/ div.code-toolbar > .toolbar > .toolbar-item > a, div.code-toolbar > .toolbar > .toolbar-item > button, div.code-toolbar > .toolbar > .toolbar-item > span { background-color: transparent; border: 0; box-shadow: none; } html { scrollbar-face-color: #060606; scrollbar-base-color: #060606; scrollbar-3dlight-color: #060606; scrollbar-highlight-color: #060606; scrollbar-track-color: #040404; scrollbar-arrow-color: #040404; scrollbar-shadow-color: #060606; scrollbar-dark-shadow-color: #060606; } ::-webkit-scrollbar { width: 8px; height: 3px;} ::-webkit-scrollbar-track { background-color: #060606;} ::-webkit-scrollbar-track-piece { background-color: #040404;} ::-webkit-scrollbar-thumb { height: 50px; background-color: #060606; border-radius: 3px;} ::-webkit-scrollbar-corner { background-color: #060606;} ::-webkit-resizer { background-color: #060606;} * { /* Reset margins and padding */ margin: 0; padding: 0; } address, area, article, aside, audio, blockquote, datalist, details, dl, fieldset, figure, form, input, iframe, img, meter, nav, ol, optgroup, option, output, p, pre, progress, ruby, section, table, textarea, ul, video { /* Margins for most elements */ margin-bottom: 1rem; } html,input,select,button { /* Set body font family and some finicky elements */ font-family: var(--nc-font-sans); } body { /* Center body in page */ margin: 0 auto; max-width: 950px; padding: 2rem; border-radius: 6px; overflow-x: hidden; word-break: break-word; overflow-wrap: break-word; background: var(--nc-bg-1); /* Main body text */ color: var(--nc-tx-2); font-size: 1.03rem; line-height: 1.5; } ::selection { /* Set background color for selected text */ background: var(--nc-ac-1); color: var(--nc-ac-tx); } h1,h2,h3,h4,h5,h6 { line-height: 1; color: var(--nc-tx-1); padding-top: .875rem; } h1, h2, h3 { color: var(--nc-tx-1); padding-bottom: 2px; margin-bottom: 8px; border-bottom: 1px solid var(--nc-bg-2); } h4, h5, h6 { margin-bottom: .3rem; } h1 { font-size: 2.25rem; } h2 { font-size: 1.85rem; } h3 { font-size: 1.55rem; } h4 { font-size: 1.25rem; } h5 { font-size: 1rem; } h6 { font-size: .875rem; } a { color: var(--nc-lk-1); } a:hover { color: var(--nc-lk-2); } abbr:hover { /* Set the '?' cursor while hovering an abbreviation */ cursor: help; } blockquote { padding: 1.5rem; background: var(--nc-bg-2); border-left: 5px solid var(--nc-bg-3); border-radius: 10px ; } abbr { cursor: help; } blockquote *:last-child { padding-bottom: 0; margin-bottom: 0; } header { background: var(--nc-bg-2); border-bottom: 1px solid var(--nc-bg-3); padding: 2rem 1.5rem; /* This sets the right and left margins to cancel out the body's margins. It's width is still the same, but the background stretches across the page's width. */ margin: -2rem calc(0px - (50vw - 50%)) 2rem; /* Shorthand for: margin-top: -2rem; margin-bottom: 2rem; margin-left: calc(0px - (50vw - 50%)); margin-right: calc(0px - (50vw - 50%)); */ padding-left: calc(50vw - 50%); padding-right: calc(50vw - 50%); } header h1, header h2, header h3 { padding-bottom: 0; border-bottom: 0; } header > *:first-child { margin-top: 0; padding-top: 0; } header > *:last-child { margin-bottom: 0; } a button, button, input[type="submit"], input[type="reset"], input[type="button"] { font-size: 1rem; display: inline-block; padding: 6px 12px; text-align: center; text-decoration: none; white-space: nowrap; background: var(--nc-lk-1); color: var(--nc-lk-tx); border: 0; border-radius: 4px; box-sizing: border-box; cursor: pointer; color: var(--nc-lk-tx); } a button[disabled], button[disabled], input[type="submit"][disabled], input[type="reset"][disabled], input[type="button"][disabled] { cursor: default; opacity: .5; /* Set the [X] cursor while hovering a disabled link */ cursor: not-allowed; } .button:focus, .button:hover, button:focus, button:hover, input[type="submit"]:focus, input[type="submit"]:hover, input[type="reset"]:focus, input[type="reset"]:hover, input[type="button"]:focus, input[type="button"]:hover { background: var(--nc-lk-2); } code, pre, kbd, samp { /* Set the font family for monospaced elements */ font-family: "JetBrains Mono"; } code, samp, kbd, pre { /* The main preformatted style. This is changed slightly across different cases. */ background: var(--nc-bg-2); border: 1px solid var(--nc-bg-3); border-radius: 4px; padding: 3px 6px; font-size: 0.9rem; } kbd { /* Makes the kbd element look like a keyboard key */ border-bottom: 3px solid var(--nc-bg-3); } pre { padding: 1rem 1.4rem; max-width: 100%; overflow: auto; } pre code { /* When is in a
, reset it's formatting to blend in */
	background: inherit;
	font-size: inherit;
	color: inherit;
	border: 0;
	padding: 0;
	margin: 0;
}

code pre {
	/* When 
 is in a , reset it's formatting to blend in */
	display: inline;
	background: inherit;
	font-size: inherit;
	color: inherit;
	border: 0;
	padding: 0;
	margin: 0;
}

details {
	/* Make the 
look more "clickable" */ padding: .6rem 1rem; background: var(--nc-bg-2); border: 1px solid var(--nc-bg-3); border-radius: 4px; } summary { /* Makes the look more like a "clickable" link with the pointer cursor */ cursor: pointer; font-weight: bold; } details[open] { /* Adjust the
padding while open */ padding-bottom: .75rem; } details[open] summary { /* Adjust the
padding while open */ margin-bottom: 6px; } details[open]>*:last-child { /* Resets the bottom margin of the last element in the
while
is opened. This prevents double margins/paddings. */ margin-bottom: 0; } dt { font-weight: bold; } dd::before { /* Add an arrow to data table definitions */ content: '→ '; } hr { /* Reset the border of the
separator, then set a better line */ border: 0; border-bottom: 1px solid var(--nc-bg-3); margin: 1rem auto; } fieldset { margin-top: 1rem; padding: 2rem; border: 1px solid var(--nc-bg-3); border-radius: 4px; } legend { padding: auto .5rem; } table { /* border-collapse sets the table's elements to share borders, rather than floating as separate "boxes". */ border-collapse: collapse; width: 100% } td, th { border: 1px solid var(--nc-bg-3); text-align: left; padding: .5rem; } th { background: var(--nc-bg-2); } tr:nth-child(even) { /* Set every other cell slightly darker. Improves readability. */ background: var(--nc-bg-2); } table caption { font-weight: bold; margin-bottom: .5rem; } textarea { /* Don't let the