pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#1b1921}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#e38a64}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#8c64e3}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#e36464}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#6482e3}.hljs-built_in,.hljs-symbol{color:#e3d464}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#9be364}.hljs-subst{color:#c9d1d9}.hljs-section{color:#64e3bd;font-weight:700}.hljs-bullet{color:#e3d464}.hljs-emphasis{color:#1b1921;font-style:italic}.hljs-strong{color:#6a6774;font-weight:700}.hljs-addition{background-color:#9be36420;color:#9be364}.hljs-deletion{background-color:#e3646420;color:#e36464}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: } /*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:JetBrains Mono,Consolas,Monaco,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}@font-face{font-display:swap;font-family:Header;font-style:normal;font-weight:400;src:url(res/fonts/header.woff2) format("woff2")}@font-face{font-display:swap;font-family:Para;font-style:normal;font-weight:400;src:url(res/fonts/para.woff2) format("woff2")}@font-face{font-display:swap;font-family:Strong;font-style:normal;font-weight:400;src:url(res/fonts/strong.woff2) format("woff2")}:root{scrollbar-width:thin;--text:#1b1921;--less:#6a6774;--soft:#eee;--background:#fff;--prime:#e4e065;--second:#648ab5}html{font-size:100%}body{background-color:var(--background);color:var(--text);contain:content;font-family:Para,system-ui,sans-serif;font-size:1.25rem;height:100dvh;overflow:hidden}h1,h2,h3,h4,h5{font-family:Header,Georgia,serif;font-weight:700}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--soft);border-radius:1px}::-moz-selection{background:var(--prime);color:var(--second)}::selection{background:var(--prime);color:var(--second)}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}#app{overflow:hidden;width:100%}#app,#sidebar{contain:layout style;display:flex;height:100dvh}#sidebar{flex-direction:column;flex-shrink:0;overflow-y:auto;transition:transform .24s ease;width:15rem;will-change:transform;z-index:40}@media (max-width:767px){#sidebar{background-color:var(--background);border-right:1px dashed var(--soft);left:0;position:fixed;top:0;transform:translateX(-100%)}body.sidebar-open #sidebar{transform:translateX(0)}body.sidebar-open #sidebar-backdrop{display:block}}#mobile-bar{align-items:center;background-color:var(--background);display:none;gap:.75rem;padding:.75rem 1rem;position:sticky;top:0;z-index:40}@media (max-width:767px){#mobile-bar{display:flex}}#hamburger{background:none;border:none;color:var(--text);cursor:pointer;line-height:0;padding:.25rem;transition:color .12s;will-change:color}#hamburger:hover{color:var(--less)}#content-area{contain:layout style;flex:1;height:100dvh;min-width:0;overflow-y:auto;scroll-behavior:smooth;scrollbar-width:none}#content-area::-webkit-scrollbar{display:none}#content-inner{margin:0 auto;max-width:48rem;padding:3rem 1.5rem 60vh;width:100%}@media (min-width:1024px){#content-inner{padding-inline:2.5rem}}#overview-panel{color:var(--text);contain:layout style;display:none;flex-shrink:0;height:100dvh;overflow-y:auto;padding:3rem 1rem;position:sticky;scrollbar-width:none;top:0;width:15rem}#hd{color:var(--second);font-weight:700;letter-spacing:.08em;margin-bottom:.5rem;text-transform:uppercase}#overview-panel hr{border:none;border-top:1px dashed var(--soft)}#overview-panel::-webkit-scrollbar{display:none}@media (min-width:1280px){#overview-panel{display:block}}#sidebar h3{color:var(--second);font-size:2.25rem;font-weight:700;letter-spacing:.1em;margin-bottom:.5rem;padding:0 1rem;text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;user-select:none}.project-item{align-items:center;color:var(--text);contain:layout style;cursor:pointer;display:flex;font-size:1.25rem;letter-spacing:.01em;padding:.375rem 1rem;transition:all .12s}.project-item:hover{color:var(--less);margin-left:.2rem}.project-item.active{color:var(--text);margin-inline:.2rem}.folder-header{align-items:center;color:var(--text);cursor:pointer;display:flex;font-size:.875rem;letter-spacing:.01em;padding:.375rem 1rem;transition:all .12s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.folder-header:hover{color:var(--less)}.folder-children{border-left:1px solid var(--soft);color:var(--text);margin-left:1.25rem;margin-block:.125rem .375rem;padding-left:.75rem}.folder-children .project-item{font-size:.875rem;padding:.25rem}.folder-children .project-item.active{margin-inline:0;padding-inline:.25rem}.project-item.active span:before{background-image:url(res/pointer.svg);background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;height:12px;margin-right:8px;width:17px}.toc-item{color:var(--text);cursor:pointer;display:block;font-size:1.12rem;letter-spacing:.02em;overflow:hidden;padding-block:.25rem;text-overflow:ellipsis;transition:all .12s;white-space:nowrap}.toc-item:hover{color:var(--less);margin-inline-start:-.2rem}#overview-metrics span{color:var(--text);font-size:1.12rem}.prose-custom{width:100%}.prose-custom h1{border-bottom:1px dashed var(--soft);color:var(--text-200);font-size:clamp(2.369rem,4vw,3.21rem);letter-spacing:-.02em;line-height:1.1;margin-bottom:1.5rem;padding-bottom:1rem}.prose-custom .collapsible-header,.prose-custom h2{align-items:center;color:var(--text-200);cursor:pointer;display:flex;font-size:clamp(1.75rem,3vw,2.47rem);gap:.625rem;letter-spacing:-.01em;margin-bottom:1rem;margin-top:2.5rem;transition:color .12s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.prose-custom .collapsible-header:hover,.prose-custom h2:hover{color:var(--less)}.prose-custom .collapsible-header svg,.prose-custom h2 svg{color:var(--less);flex-shrink:0;height:1rem;transition:transform .2s ease;width:1rem}.prose-custom .collapsible-header.collapsed svg{transform:rotate(-90deg)}.prose-custom h3{color:var(--text);font-size:clamp(1.5rem,2.5vw,1.75rem);letter-spacing:-.01em;margin-bottom:.75rem;margin-top:2rem;text-transform:uppercase}.prose-custom h4{font-size:1.25rem;letter-spacing:.1em;margin-top:1.5rem}.prose-custom h4,.prose-custom h5{color:var(--text);margin-bottom:.5rem;text-transform:uppercase}.prose-custom h5{font-size:1.125rem;margin-top:1.25rem}.prose-custom h6{color:var(--text);font-size:1rem;letter-spacing:.05em;margin-bottom:.375rem;margin-top:1rem;text-transform:uppercase}.prose-custom h1+*,.prose-custom h2+*,.prose-custom h3+*,.prose-custom h4+*,.prose-custom h5+*,.prose-custom h6+*{margin-top:0}.prose-custom p{color:var(--text);line-height:1.4;margin-bottom:1rem}.prose-custom strong{color:var(--text);font-weight:700}.prose-custom em{font-style:italic}.prose-custom .collapsible-content{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows .26s ease,opacity .26s ease}.prose-custom .collapsible-content-inner{min-height:0;overflow:hidden}.prose-custom .collapsible-content.hidden-section{grid-template-rows:0fr;opacity:0;pointer-events:none}.prose-custom .gh-alert{border-left:2px solid;border-radius:0 .25rem .25rem 0;font-size:.875rem;line-height:1.6;margin-block:1.5rem;padding:.875rem 1rem}.prose-custom .gh-alert-title{font-size:.75rem;font-weight:700;letter-spacing:.08em;margin-bottom:.375rem;text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;user-select:none}.prose-custom .gh-alert-content p{color:var(--text);font-size:.875rem;margin:0}.prose-custom .gh-alert-important{border-color:#8c64e3}.prose-custom .gh-alert-important .gh-alert-title{color:#8c64e3}.prose-custom .gh-alert-warning{border-color:#e3d464}.prose-custom .gh-alert-warning .gh-alert-title{color:#e3d464}.prose-custom .gh-alert-note{border-color:#6482e3}.prose-custom .gh-alert-note .gh-alert-title{color:#6482e3}.prose-custom .gh-alert-tip{border-color:#9be364}.prose-custom .gh-alert-tip .gh-alert-title{color:#9be364}.prose-custom .gh-alert-caution{border-color:#e36464}.prose-custom .gh-alert-caution .gh-alert-title{color:#e36464}.prose-custom .standard-blockquote{border-left:2px solid var(--second);color:var(--text);font-size:1rem;margin-block:1.5rem;padding:.125rem 0 .125rem 1rem}.prose-custom .table-alignment-container{contain:layout;margin-block:2rem;overflow-x:auto;width:100%}.prose-custom .table-alignment-container table{border-collapse:collapse;color:var(--text);font-size:.875rem;width:100%}.prose-custom .table-alignment-container th{border-bottom:1px solid var(--soft);color:var(--text);font-weight:700;letter-spacing:.02em;padding:.625rem .75rem;text-align:left}.prose-custom .table-alignment-container td{border-bottom:2px solid var(--soft);line-height:1.6;padding:.75rem}.prose-custom .table-alignment-container tr:last-child td{border-bottom:0}.prose-custom .table-alignment-container tr{transition:background .1s}.prose-custom ol,.prose-custom ul{margin-bottom:1.25rem;padding-left:1.25rem}.prose-custom lij{font-size:1rem;line-height:1.7;margin-bottom:.375rem}.prose-custom ul li::marker{color:var(--less)}.prose-custom li input[type=checkbox][disabled]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23648AB5' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain;border:none;display:inline-block;height:1rem;margin-right:.375rem;margin-top:-2px;vertical-align:middle;width:1rem}.prose-custom li input[type=checkbox][disabled]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='%23648AB5' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' viewBox='0 0 24 24'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}.prose-custom li:has(input[type=checkbox]){list-style-type:none;padding-left:0}.prose-custom code{border:1px solid var(--soft);border-radius:.15rem;color:var(--text);font-family:Strong,monospace!important;font-size:1.05rem;letter-spacing:-.03rem;margin-inline:.125rem;padding:.125rem .375rem}.prose-custom pre,.prose-custom pre[class*=language-]{border:1px solid var(--soft)!important;border-radius:.375rem!important;contain:layout style;margin-block:1.25rem!important;overflow-x:auto!important;padding:1rem!important}.prose-custom pre code,.prose-custom pre code[class*=language-]{background:transparent!important;border:none!important;font-family:Strong,monospace!important;line-height:1.2!important;margin:0!important;padding:0!important}.prose-custom a{border-bottom:1px dotted var(--second);color:var(--second)!important;font-weight:700;padding-bottom:1px;text-decoration:none;transition:color .12s,border-color .12s}.prose-custom a:hover{font-weight:400}.prose-custom img{aspect-ratio:auto;border:1px solid var(--soft);border-radius:.25rem;height:auto;margin-block:1.5rem;max-width:100%}.prose-custom hr{border:none;border-top:1px solid var(--soft);margin-block:2rem}#anon-message-form{font-size:1rem}#anon-message-form textarea{border:1px solid var(--soft);border-radius:.25rem;color:var(--text);font-family:inherit;min-height:4rem;padding:.625rem;resize:vertical;transition:border-color .12s;width:100%}#anon-message-form textarea:focus{border-color:#648ab510;outline:none}#anon-message-form textarea::-moz-placeholder{color:var(--less)}#anon-message-form textarea::placeholder{color:var(--less)}@supports (field-sizing:content){#anon-message-form textarea{field-sizing:content;max-height:8lh;min-height:1lh;resize:none}}#anon-label{display:block;text-transform:uppercase}#anon-label,#anon-submit-btn{color:var(--text);font-weight:700}#anon-submit-btn{background:#648ab510;border:none;border-radius:.25rem;cursor:pointer;letter-spacing:.04em;padding:.625rem 1rem;transition:opacity .12s;width:100%}#anon-submit-btn:hover{opacity:.88}#anon-submit-btn:disabled{cursor:not-allowed;opacity:.5}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-bottom:2.5rem;margin-top:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mr-2{margin-right:.5rem}.block{display:block}.flex{display:flex}.table{display:table}.hidden{display:none}.h-3{height:.75rem}.w-3{width:.75rem}.max-w-xl{max-width:36rem}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-20{padding-bottom:5rem;padding-top:5rem}.pl-2{padding-left:.5rem}.text-center{text-align:center}.text-sm,.text-xs{font-size:.75rem}.text-xs{line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}