@font-face{font-display:swap;font-family:atkinson hyperlegible;font-style:normal;font-weight:400;src:url(/fonts/atkinson-hyperlegible-v11-latin-regular.woff2)format("woff2")}@font-face{font-display:swap;font-family:atkinson hyperlegible;font-style:italic;font-weight:400;src:url(/fonts/atkinson-hyperlegible-v11-latin-italic.woff2)format("woff2")}@font-face{font-display:swap;font-family:atkinson hyperlegible;font-style:normal;font-weight:700;src:url(/fonts/atkinson-hyperlegible-v11-latin-700.woff2)format("woff2")}@font-face{font-display:swap;font-family:atkinson hyperlegible;font-style:italic;font-weight:700;src:url(/fonts/atkinson-hyperlegible-v11-latin-700italic.woff2)format("woff2")}@font-face{font-display:swap;font-family:fira code;font-style:normal;font-weight:300;src:url(/fonts/fira-code-v22-latin-300.woff2)format("woff2")}@font-face{font-display:swap;font-family:fira code;font-style:normal;font-weight:400;src:url(/fonts/fira-code-v22-latin-regular.woff2)format("woff2")}@font-face{font-display:swap;font-family:fira code;font-style:normal;font-weight:500;src:url(/fonts/fira-code-v22-latin-500.woff2)format("woff2")}@font-face{font-display:swap;font-family:fira code;font-style:normal;font-weight:600;src:url(/fonts/fira-code-v22-latin-600.woff2)format("woff2")}@font-face{font-display:swap;font-family:fira code;font-style:normal;font-weight:700;src:url(/fonts/fira-code-v22-latin-700.woff2)format("woff2")}:root{--primary-hue:204;--primary-saturation:57%;--primary-lightness:40%;--h3-font-weight:400;--h4-font-weight:400;--tw-text-opacity:1}.home-page{font-family:fira code,monospace}.search-input{background-color:#f3f4f6}.underline{text-decoration:underline!important}.read-more-link{color:hsl( var(--primary-hue) var(--primary-saturation) calc(calc(var(--primary-lightness)/50) * 45)/var(--tw-text-opacity) )}.content :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:var(--h3-font-weight);margin-top:2em;margin-bottom:.5em;font-size:1.5rem}.content :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:var(--h4-font-weight);font-size:1.35rem}.content :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.75}.content :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3rem;margin-bottom:3rem;border:1px solid hsl(var(--primary-hue) var(--primary-saturation) 90%)}.content :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3rem;margin-bottom:3rem;border:1px solid hsl(var(--primary-hue) var(--primary-saturation) 90%)}.font-atkinson{font-family:atkinson hyperlegible,sans-serif}.content{font-family:atkinson hyperlegible,sans-serif;font-size:19px;.hextra-badge * { font-size: 0.75rem; font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } code { font-family: "Fira Code", monospace; font-size: 16px; font-weight: normal; line-height: 1.5; } .hextra-code-block { .filename { font-size: 14px; background-color: hsl( var(--primary-hue) var(--primary-saturation) calc( var(--primary-lightness) + calc(calc(100% - var(--primary-lightness)) / 50) * 27 ) / 0.1 ); --tw-text-opacity: 1; color: rgb(229 231 235 / var(--tw-text-opacity)); } } code:not(.hextra-code-block code) { font-size: 15px; } video { margin-top: 3rem; margin-bottom: 3rem; }}.hx-text-4xl{font-size:2rem}#backToTop{font-size:1rem;font-weight:400}.content{.hextra-code-block { * { font-weight: normal !important; } .bg { color: #e6edf3; background-color: #0d1117; } .chroma { color: #e6edf3; background-color: #0d1117; border-color: hsl( var(--primary-hue) var(--primary-saturation) calc( var(--primary-lightness) + calc(calc(100% - var(--primary-lightness)) / 50) * 27 ) / 0.1 ); border-width: 1px; } .chroma .x { } .chroma .err { color: #f85149; } .chroma .cl { } .chroma .lnlinks { outline: none; text-decoration: none; color: inherit; } .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } .chroma .hl { background-color: #252532; } .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: #737679; } .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: #6e7681; } .chroma .line { display: flex; } .chroma .k { color: #ff7b72; } .chroma .kc { color: #79c0ff; } .chroma .kd { color: #ff7b72; } .chroma .kn { color: #ff7b72; } .chroma .kp { color: #79c0ff; } .chroma .kr { color: #ff7b72; } .chroma .kt { color: #ff7b72; } .chroma .n { } .chroma .na { } .chroma .nb { } .chroma .bp { } .chroma .nc { color: #f0883e; font-weight: bold; } .chroma .no { color: #79c0ff; font-weight: bold; } .chroma .nd { color: #d2a8ff; font-weight: bold; } .chroma .ni { color: #ffa657; } .chroma .ne { color: #f0883e; font-weight: bold; } .chroma .nf { color: #d2a8ff; font-weight: bold; } .chroma .fm { } .chroma .nl { color: #79c0ff; font-weight: bold; } .chroma .nn { color: #ff7b72; } .chroma .nx { } .chroma .py { color: #79c0ff; } .chroma .nt { color: #7ee787; } .chroma .nv { color: #79c0ff; } .chroma .vc { } .chroma .vg { } .chroma .vi { } .chroma .vm { } .chroma .l { color: #a5d6ff; } .chroma .ld { color: #79c0ff; } .chroma .s { color: #a5d6ff; } .chroma .sa { color: #79c0ff; } .chroma .sb { color: #a5d6ff; } .chroma .sc { color: #a5d6ff; } .chroma .dl { color: #79c0ff; } .chroma .sd { color: #a5d6ff; } .chroma .s2 { color: #a5d6ff; } .chroma .se { color: #79c0ff; } .chroma .sh { color: #79c0ff; } .chroma .si { color: #a5d6ff; } .chroma .sx { color: #a5d6ff; } .chroma .sr { color: #79c0ff; } .chroma .s1 { color: #a5d6ff; } .chroma .ss { color: #a5d6ff; } .chroma .m { color: #a5d6ff; } .chroma .mb { color: #a5d6ff; } .chroma .mf { color: #a5d6ff; } .chroma .mh { color: #a5d6ff; } .chroma .mi { color: #a5d6ff; } .chroma .il { color: #a5d6ff; } .chroma .mo { color: #a5d6ff; } .chroma .o { color: #ff7b72; font-weight: bold; } .chroma .ow { color: #ff7b72; font-weight: bold; } .chroma .p { } .chroma .c { color: #8b949e; font-style: italic; } .chroma .ch { color: #8b949e; font-style: italic; } .chroma .cm { color: #8b949e; font-style: italic; } .chroma .c1 { color: #8b949e; font-style: italic; } .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic; } .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic; } .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic; } .chroma .g { } .chroma .gd { color: #ffa198; background-color: #490202; } .chroma .ge { font-style: italic; } .chroma .gr { color: #ffa198; } .chroma .gh { color: #79c0ff; font-weight: bold; } .chroma .gi { color: #56d364; background-color: #0f5323; } .chroma .go { color: #8b949e; } .chroma .gp { color: #8b949e; } .chroma .gs { font-weight: bold; } .chroma .gu { color: #79c0ff; } .chroma .gt { color: #ff7b72; } .chroma .gl { text-decoration: underline; } .chroma .w { color: #6e7681; } }}.hx-text-4xl{font-size:2rem}.hx-max-w-4xl{max-width:56rem}.hx-mr-4{margin-right:1rem}.hx-mr-8{margin-right:2rem}.content{.hextra-code-copy-btn.active\:hx-opacity-50:active { opacity: 0.5; } .hextra-code-copy-btn { background-color: rgba(31, 41, 55, 0.1); border: 1px solid rgba(255, 255, 255, 0.1); color: #d1d5db; } .hextra-code-copy-btn:hover { color: #e5e7eb; }}