/*!tailwindcss v4.3.3 | MIT License | https://tailwindcss.com*/@layer properties{@supports(((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:"Source Sans Pro", ui-sans-serif, system-ui, sans-serif;--font-mono:"Source Code Pro", Menlo, "DejaVu Sans Mono", "Lucida Console", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-surface:#202224;--color-ink:#fff;--color-heading:#eee;--color-code:#313335;--color-hairline:#444;--color-rule:#999;--color-link:#66d9ef;--color-nav:#007d9c;--color-logo:#f2deff;--color-accent:#f92672}}@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,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,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;-webkit-text-decoration: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:where(:not(iframe)){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}*{text-rendering:geometricprecision}html{font-family:var(--font-sans);font-size:14pt;line-height:1.5}body{background-color:var(--color-surface);color:var(--color-ink);overflow-y:scroll}h1,h2,h3,h4,h5,h6{color:var(--color-heading);margin-bottom:1rem;font-size:1rem;font-weight:700;line-height:1.25}h1{margin-top:1.25rem;font-size:1.5rem}h2{margin-top:1.25rem;font-size:1.1rem}p{margin-top:0;margin-bottom:1rem}ul{padding-left:1rem;list-style-position:inside}ol{margin-left:1rem}li>ul{padding-left:2rem}ul li{list-style-type:none}ul,ol{margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:inherit}ul li:before{content:"– ";margin-left:-1rem;position:absolute}ul.double-spaced li{margin-top:1rem}pre,code{font-family:var(--font-mono)}code{background-color:var(--color-code);border:1px dashed var(--color-hairline);border-radius:3px;padding:0 .2rem;font-size:12pt}pre{background-color:var(--color-code);color:var(--color-heading);border:1px dashed var(--color-hairline);margin:1rem;padding:.5rem .7rem;font-size:11pt;overflow-x:auto}pre code{color:inherit;background:0 0;border-width:0;padding:0;font-size:100%}pre{scrollbar-width:thin;scrollbar-color:#4a4e54 transparent}pre::-webkit-scrollbar{width:10px;height:10px}pre::-webkit-scrollbar-track{background:0 0}pre::-webkit-scrollbar-thumb{border:2px solid var(--color-code);background-color:#4a4e54;border-radius:9999px}pre::-webkit-scrollbar-thumb:hover{background-color:var(--color-link)}a{color:var(--color-link);text-decoration:none}a:hover{color:#000;background-color:var(--color-link);text-decoration:none}img,video{border-radius:5px;max-width:100%;max-height:80vh;margin-left:auto;margin-right:auto;display:block}video{margin-bottom:1rem}summary{-webkit-user-select:none;user-select:none;outline:none}hr{border:0;border-top:1px solid var(--color-heading);border-bottom:1px solid #fff;margin:1.5rem 0;position:relative}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}@media print{#nav-bg,#logo,#top-nav,h1.title~p.center.gap.accent,.youtube-wrapper{display:none}html{font-family:sans-serif;font-size:1em}body{background:0 0}#content{max-width:none}h1.title{text-align:center}h1,h2,h3,h4,h5,h6{break-after:avoid-page;page-break-after:avoid}#content hr:last-of-type{display:none}#content pre{break-inside:avoid-page;page-break-inside:avoid;white-space:pre-wrap}#content div.small:last-of-type{display:none}a[href^="https://"]:after,a[href^="http://"]:after{content:"(" attr(href)")";margin:0 .25em;font-family:monospace}}}@layer components{.title{font-size:2rem}.subtitle{margin-left:1rem;font-size:1.5rem}.small{font-size:.75rem}.small p{margin-bottom:0}.center{text-align:center}.right{text-align:right}.gap{margin-top:4rem;margin-bottom:4rem}.accent{color:var(--color-accent)}.demo{margin-top:2em;margin-bottom:2em}.caption{color:var(--color-heading);font-size:.85rem}.image-wrapper{margin:1rem 0}.youtube-wrapper{height:0;margin-bottom:1rem;position:relative}.youtube-wrapper iframe{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.highlight{display:flow-root;position:relative}.copy-code{font-family:var(--font-mono);color:var(--color-heading);background-color:var(--color-code);border:1px dashed var(--color-hairline);cursor:pointer;opacity:0;border-radius:3px;padding:.25rem .5rem;font-size:.7rem;line-height:1;transition:opacity .12s,color .12s,background-color .12s;position:absolute;top:1.25rem;right:1.25rem}.highlight:hover .copy-code,.copy-code:focus-visible{opacity:1}.copy-code:hover{color:var(--color-code);background-color:var(--color-link)}.copy-code[data-copied=true]{color:var(--color-code);opacity:1;background-color:#a6e22e}@media(hover:none){.copy-code{opacity:1}}.tag-filter{margin-bottom:1rem}.tag-chips{flex-wrap:wrap;gap:.35rem;display:flex}.tag-chip{font-family:var(--font-mono);color:var(--color-heading);background-color:var(--color-code);border:1px solid var(--color-hairline);cursor:pointer;border-radius:9999px;padding:.2rem .45rem;font-size:.65rem;line-height:1;text-decoration:none;display:inline-block}.tag-chip:hover,.tag-chip.is-active{color:#000;background-color:var(--color-link);border-color:var(--color-link)}.tag-chip:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.tag-clear{border-style:dashed}.page-tags{flex-wrap:wrap;gap:.4rem;margin-top:-.5rem;margin-bottom:1rem;display:flex}.page-tags .tag-chip{font-size:.62rem}.projects-table{border-spacing:4px;width:100%}.projects-table th,.projects-table td{text-align:left;vertical-align:top;padding:0 8px}.projects-table th{font-weight:700}.projects-table tr td{border-bottom:1px solid var(--color-rule)}#nav-bg{font-family:var(--font-mono);color:#fff;margin:0;padding:1rem}#nav-bg,a#logo,#top-nav a{background-color:var(--color-nav);color:#fff}#top-nav{text-align:center;max-width:40rem;margin:auto}#top-nav a{text-decoration:none}#top-nav a:hover{color:#000;background-color:#fff}a#logo{color:var(--color-logo)}a:hover#logo{color:#000}#menu-icon{display:none}.menu-label{font-family:var(--font-mono)}#menu-icon~.menu-label:after{content:"(+)"}#menu-icon:checked~.menu-label:after{content:"(-)"}.trigger{display:none}#menu-icon:checked~.trigger{margin:auto;display:block}.nav-link{display:block}.trigger-child{text-align:initial;display:inline-block}.nav-link:before{content:"- "}@media(min-width:40rem){.menu-label{display:none}.trigger{padding-top:inherit;display:inline}.trigger-child{text-align:initial;display:inline}#menu-icon:checked~.trigger{display:inline}.nav-link{display:initial}.nav-link:before{content:"| "}}a:hover>code{background-color:var(--color-link)}}@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.min-h-dvh{min-height:100dvh}.w-full{width:100%}.max-w-\[35rem\]{max-width:35rem}.flex-1{flex:1}.grow{flex-grow:1}.flex-col{flex-direction:column}.overflow-y-scroll{overflow-y:scroll}.bg-surface{background-color:var(--color-surface)}.px-4{padding-inline:calc(var(--spacing) * 4)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-ink{color:var(--color-ink)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\[\&\>p\]\:mb-0>p{margin-bottom:0}}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}