a{display:flex;text-align:center;align-items:center;gap:.5rem}a .icon{height:1rem;aspect-ratio:1/1}a .icon svg{fill:var(--special);stroke:var(--special)}/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities;*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}ul[role=list],ol[role=list]{list-style:none}html:focus-within{scroll-behavior:smooth}a:not([class]){text-decoration-skip-ink:auto}img,picture,svg,video,canvas{max-width:100%;height:auto;vertical-align:middle;font-style:italic;background-repeat:no-repeat;background-size:cover}input,button,textarea,select{border:unset;background:unset;padding:unset;font:inherit}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;transition:none}}body,html{height:100%;width:100vw;overflow-x:hidden;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;scroll-behavior:smooth}@media (prefers-reduced-motion){*{transition-duration:.01ms!important;animation-duration:.01ms!important}:root::view-transition-group(*),:root::view-transition-old(*),:root::view-transition-new(*){animation:none!important}}:root{--red: #F6598E;--orange: #F09262;--yellow: #EDE874;--lime: #C2E774;--green: #91E478;--aqua: #83EDCF;--skye: #86DCE9;--snow: #83C4E6;--blue: #7796DF;--purple: #8B79E8;--violet: #B37FED;--pink: #F186ED;--cherry: #CC6D91;--text: #CED1F0;--subtext1: #B6B8DE;--subtext0: #999AC7;--overlay2: #8787B2;--overlay1: #6D6D93;--overlay0: #545573;--surface2: #3C3D53;--surface1: #2A2C3B;--surface0: #1E1F2A;--base: #14161D;--mantle: #0E0F15;--crust: #090A0F}:root{--default-border: var(--surface1);--special: var(--skye)}@font-face{font-family:Space Mono;font-style:italic;font-weight:400;src:url(/assets/fonts/space-mono/space-mono-latin-400-italic.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-400-italic.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:italic;font-weight:400;src:url(/assets/fonts/space-mono/space-mono-latin-ext-400-italic.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-ext-400-italic.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:italic;font-weight:700;src:url(/assets/fonts/space-mono/space-mono-latin-700-italic.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-700-italic.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:italic;font-weight:700;src:url(/assets/fonts/space-mono/space-mono-latin-ext-700-italic.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-ext-700-italic.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;src:url(/assets/fonts/space-mono/space-mono-latin-400-normal.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-400-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;src:url(/assets/fonts/space-mono/space-mono-latin-ext-400-normal.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-ext-400-normal.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;src:url(/assets/fonts/space-mono/space-mono-latin-700-normal.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-700-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;src:url(/assets/fonts/space-mono/space-mono-latin-ext-700-normal.woff2) format("woff2"),url(/assets/fonts/space-mono/space-mono-latin-ext-700-normal.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--font-text: "Space Mono"}html,body{background-color:var(--crust);color:var(--text);font-family:var(--font-text),system-ui,sans-serif}pre,code{font-family:var(--font-code),ui-monospace,monospace}:root{--top-margin: 6rem;--df-header-size: 8rem;--header-size: calc(var(--top-margin) + var(--df-header-size));--footer-size: 6rem}body{container:body/inline-size;min-height:100vh;width:100vw}#root,#page{height:100%;width:100%}#page{display:grid;grid-template:"grid-header" var(--header-size) "grid-center" auto "grid-footer" var(--footer-size)/auto;gap:.32rem}@media not (min-width: 1200px){#root>#page{padding:0 4rem 0 0}}@media (max-width: 800px){#root>#page{padding:0 2rem;--top-margin: 0}}#root{container:root/inline-size;max-width:720px;margin:0 auto}#root .left{grid-area:grid-sidebar-left}#root #main{grid-area:grid-center}#root .right{grid-area:grid-sidebar-right}#root .page-header{grid-area:grid-header;margin:var(--top-margin) 0 0}#root .page-footer{grid-area:grid-footer;margin:0 0 1.8rem}#root>#page .sidebar{position:sticky;top:0;height:100vh;padding:var(--top-margin) 2rem 2rem;display:flex;gap:2rem}@media not (min-width: 1200px){#root>#page .sidebar.right{position:initial;height:auto;padding:0}}@media (max-width: 800px){#root>#page .sidebar.left{position:initial;height:auto;padding:2rem 0 0}}#main{container:page-content/inline-size}#main,.page-footer{min-width:100%;max-width:100%;margin-left:auto;margin-right:auto}#main>hr{display:none}@media not (min-width: 1200px){#main>hr{display:block}}.spacer{flex:auto}[onmobile]{display:none}@media (max-width: 800px){[onmobile]{display:initial}}[ontablet]{display:none}@media (min-width: 800px) and (max-width: 1200px){[ontablet]{display:initial}}a{color:var(--special);text-decoration:none}a:hover{color:var(--special);text-decoration:underline}.text p a:not([target=_blank]){--bg-opacity: 8%;background-color:color-mix(in hsl,var(--crust),var(--special) var(--bg-opacity));transition:var(--bg-opacity) .3s ease;line-height:1.4rem;padding:0 .1rem;border-radius:6px;text-decoration:none}.text p a:not([target=_blank]):hover{--bg-opacity: 12%;text-decoration:none}.text p a[target=_blank]{border-bottom:2px solid var(--overlay0);transition:border-color .3s ease}.text p a[target=_blank]:hover{border-color:var(--special);text-decoration:none}a.datalink{vertical-align:middle;margin-right:.6rem}a.datalink:hover{text-decoration:none}a.datalink:hover:after{padding-left:.4rem;color:var(--special)}a.datalink:after{content:"->";position:absolute;font-size:1.2rem;transition:padding-left .3s ease-out,color .3s ease-out;padding-left:.2rem;color:var(--overlay0)}:root{--text-margin: .8rem}.text{--h-margin-b: .8rem}.text p{line-height:1.6rem;overflow-wrap:anywhere;margin:var(--text-margin) 0}.text p.subtle{color:var(--subtext0)}.text p>code{background:var(--surface0);color:var(--subtext0);padding:.12rem .24rem}.text blockquote{margin:var(--text-margin) 0;padding-left:1rem;border-left:4px solid var(--overlay0);transition:border-color .2s}.text h1{margin:2.25rem 0 var(--h-margin-b);font-size:1.75rem}.text h2{margin:1.9rem 0 var(--h-margin-b);font-size:1.4rem}.text h3{margin:1.62rem 0 var(--h-margin-b);font-size:1.12rem}.text h4,.text h5,.text h6{margin:1.5rem 0 var(--h-margin-b);font-size:1rem}.text ul{list-style-type:"- "}.text ul li{padding-left:.5rem}p.subtitle{margin-top:0}.text :has(+p.subtitle){margin-bottom:0}.text pre:has(>code){--gutter-size: 2rem;margin:.5rem 0;padding:1rem var(--gutter-size);border:2px solid var(--border, var(--default-border));overflow:auto}.text pre:has(>code)[data-linenos]{padding:1rem 0}.text pre:has(>code) table td{padding:0}.text pre:has(>code) table td:nth-of-type(1){text-align:center;user-select:none;width:var(--gutter-size)}.text pre:has(>code) mark{display:block;background-color:#fefce8e6}.text pre:has(>code) table{width:100%;border-collapse:collapse}hr{background-color:var(--surface1);border:none;width:100%;height:1px;margin:2rem auto}
