:root{--bg: #f7f7f4;--fg: #1c1c1c;--muted: #6b6b6b;--accent: #b5532b;--code-bg: #ececea;--line: #d5d5d0;--line-strong: #b8b8b2;--selection: #b5532b22;--font: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace;--measure: 80ch;--sidebar: 17rem;--toc: 15rem;--gutter: 2rem;--ch: .6em;--ease-out: cubic-bezier(.2, 0, 0, 1)}@media(prefers-color-scheme:dark){:root{--bg: #121212;--fg: #d6d6d2;--muted: #8a8a84;--accent: #e07a4f;--code-bg: #1d1d1d;--line: #2b2b2b;--line-strong: #3d3d3d;--selection: #e07a4f22}}:root[data-theme=light]{--bg: #f7f7f4;--fg: #1c1c1c;--muted: #6b6b6b;--accent: #b5532b;--code-bg: #ececea;--line: #d5d5d0;--line-strong: #b8b8b2;--selection: #b5532b22}:root[data-theme=dark]{--bg: #121212;--fg: #d6d6d2;--muted: #8a8a84;--accent: #e07a4f;--code-bg: #1d1d1d;--line: #2b2b2b;--line-strong: #3d3d3d;--selection: #e07a4f22}*{box-sizing:border-box}html{font-family:var(--font);font-size:15px;line-height:1.6;background:var(--bg);color:var(--fg);-webkit-text-size-adjust:100%;scrollbar-color:var(--line-strong) transparent;interpolate-size:allow-keywords}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}html,body,.topbar,.banner-strip,.nav-drawer,footer,pre,:not(pre)>code,.note,.transcript,.prose th,.prose td,.theme-toggle{transition:background-color .2s ease,border-color .2s ease,color .2s ease}}body{margin:0;min-height:100vh;display:flex;flex-direction:column}::selection{background:var(--selection)}.topbar,.banner-strip,.nav-drawer,.shell,.home,footer{width:100%;min-width:0}a{color:var(--accent);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:.25em;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);transition:color .18s var(--ease-out),text-decoration-color .18s var(--ease-out),background-color .18s var(--ease-out),border-color .18s var(--ease-out)}a:hover{text-decoration-style:solid;text-decoration-color:var(--accent)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1.5rem;padding:.75rem var(--gutter);background:var(--bg);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:.5em;font-weight:700;color:var(--fg);text-decoration:none;letter-spacing:.02em}.brand:hover{text-decoration:none;color:var(--accent)}.logo{display:inline-flex;color:var(--accent)}.brand:hover .logo{color:var(--accent)}.topbar nav{display:flex;gap:1.25rem;margin-left:auto;font-size:.9em}.topbar nav a{color:var(--muted);text-decoration:none}.topbar nav a:before{content:"[";color:var(--line-strong)}.topbar nav a:after{content:"]";color:var(--line-strong)}.topbar nav a:hover,.topbar nav a[aria-current=page]{color:var(--accent)}.theme-toggle{font:inherit;font-size:.9em;color:var(--muted);background:none;border:1px solid var(--line);border-radius:2px;padding:0 .5em;cursor:pointer}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.banner-strip{display:flex;flex-wrap:wrap;gap:.25rem .75rem;align-items:baseline;padding:.4rem var(--gutter);background:var(--code-bg);border-bottom:1px solid var(--line);color:var(--muted);font-size:.85em}.banner-strip .mark{color:var(--accent);font-weight:700;white-space:nowrap}.banner-strip .mark:before{content:"! "}.shell{flex:1 0 auto;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr) var(--toc);gap:var(--gutter);padding:0 var(--gutter);align-items:start}.shell.no-toc{grid-template-columns:var(--sidebar) minmax(0,1fr)}.sidebar,.toc{position:sticky;top:3.5rem;max-height:calc(100vh - 4rem);overflow-y:auto;padding:1.75rem 0;font-size:.9em}.sidebar{border-right:1px solid var(--line);padding-right:1rem}.sidebar h2,.toc h2{margin:0 0 .5rem;font-size:1em;font-weight:400;color:var(--muted);white-space:nowrap;overflow:hidden}.sidebar h2{color:var(--muted);font-size:.82em;font-weight:700;text-transform:uppercase;letter-spacing:.14em;margin-bottom:.75rem}.sidebar h2:before,.toc h2:before{content:"── ";color:var(--line-strong)}.sidebar h2:after,.toc h2:after{content:" ────────────────────────────────────────";color:var(--line-strong)}.sidebar section+section{margin-top:1.75rem}.sidebar ul,.toc ul{list-style:none;margin:0;padding:0}.sidebar li a,.toc li a{display:block;padding:.15rem 0;color:var(--fg);text-decoration:none}.sidebar li a:before{content:"▸ ";display:inline-block;white-space:pre;color:var(--accent);opacity:0;transform:translate(-3px);transition:opacity .18s var(--ease-out),transform .18s var(--ease-out)}.sidebar li a:hover,.sidebar li a[aria-current=page]{color:var(--accent)}.sidebar li a:hover:before,.sidebar li a[aria-current=page]:before{opacity:1;transform:none}.toc li a{color:var(--muted);padding-left:0}.toc li a:hover{color:var(--accent)}.toc li.depth-3 a{padding-left:1.2em}main{min-width:0;padding:1.75rem 0 4rem}.prose{max-width:var(--measure)}.page-head{margin-bottom:2rem}.page-head .crumb{color:var(--muted);font-size:.9em}.page-head .crumb a{color:var(--muted)}.page-head h1{margin:.35rem 0 .5rem;font-size:1.6em;line-height:1.3}.page-head p{margin:0;color:var(--muted)}h1,h2,h3,h4{font-weight:700;line-height:1.3;scroll-margin-top:4rem}.prose h2{margin:2.5rem 0 .75rem;font-size:1.2em}.prose h3{margin:2rem 0 .5rem;font-size:1.02em}.prose h2:before,.prose h3:before{color:var(--accent);font-weight:400}.prose h2:before{content:"## "}.prose h3:before{content:"### "}.prose p,.prose li{margin:.75rem 0}.prose ul,.prose ol{padding-left:1.4em}.prose ul{list-style:none;padding-left:1.2em}.prose ul>li:before{content:"· ";color:var(--accent);margin-left:-1.2em;display:inline-block;width:1.2em}.prose blockquote{margin:1.25rem 0;padding:.1rem 0 .1rem 1rem;border-left:2px solid var(--accent);color:var(--muted)}.prose hr{border:0;border-top:1px dashed var(--line-strong);margin:2.5rem 0}.heading-anchor{color:var(--line-strong);text-decoration:none;opacity:0;margin-left:.5ch;transition:opacity .18s var(--ease-out),color .18s var(--ease-out)}.heading-anchor:after{content:"#"}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}code{font-family:var(--font);font-size:.92em}:not(pre)>code{background:var(--code-bg);border:1px solid var(--line);border-radius:2px;padding:.05em .35em;white-space:nowrap}pre{margin:1.25rem 0;padding:.9rem 1rem;background:var(--code-bg)!important;border:1px solid var(--line);border-radius:2px;overflow-x:auto;font-size:.92em;line-height:1.55}pre code{background:none;border:0;padding:0;white-space:pre}.astro-code,.astro-code span{color:var(--shiki-light)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)}.snippet{margin:1.25rem 0}.snippet>.label{display:flex;gap:.5ch;align-items:baseline;color:var(--muted);font-size:.85em;border:1px solid var(--line);border-bottom:0;border-radius:2px 2px 0 0;padding:.15rem .6rem;background:var(--code-bg)}.snippet>.label:before{content:"┌─";color:var(--line-strong)}.snippet pre{margin:0;border-radius:0 0 2px 2px}.prose table{width:100%;margin:1.5rem 0;border-collapse:collapse;font-size:.92em;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);padding:.4rem .6rem;text-align:left;vertical-align:top}.prose th{background:var(--code-bg);font-weight:700}.prose td code{white-space:nowrap}.note{margin:1.5rem 0;padding:.75rem 1rem;border:1px solid var(--line-strong);border-left:2px solid var(--accent);border-radius:2px;background:var(--code-bg);font-size:.95em}.note>:first-child{margin-top:0}.note>:last-child{margin-bottom:0}.note .note-label{color:var(--accent);font-weight:700}.note .note-label:before{content:"! "}.home{max-width:76ch;margin:0 auto;padding:3rem var(--gutter) 5rem}.hero{display:flex;align-items:center;flex-wrap:wrap;gap:1.75rem;margin:0 0 2rem}.banner{color:var(--accent);font-size:.8em;line-height:1.15;margin:0;padding:0;background:none!important;border:0;overflow-x:auto;white-space:pre}.tagline{font-size:1.05em;margin:0 0 2rem}.tagline .muted{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22ch),1fr));gap:1rem;margin:2rem 0}.card{display:block;border:1px solid var(--line);border-radius:2px;padding:.9rem 1rem;text-decoration:none;color:var(--fg);transition:border-color .2s var(--ease-out),background-color .2s var(--ease-out),transform .2s var(--ease-out)}.card:hover{border-color:var(--accent);background:var(--code-bg);text-decoration:none;transform:translateY(-1px)}.card strong{color:var(--accent)}.card strong:before{content:"▸ "}.card p{margin:.35rem 0 0;color:var(--muted);font-size:.9em}@media(prefers-reduced-motion:reduce){.card:hover{transform:none}.sidebar li a:before,.nav-drawer>summary:before,.nav-drawer::details-content{transition:none}.sidebar li a:before{transform:none}}footer{flex-shrink:0;border-top:1px solid var(--line);padding:1rem var(--gutter);color:var(--muted);font-size:.85em;display:flex;gap:1.5rem;flex-wrap:wrap}.nav-drawer{display:none}@media(max-width:1180px){.shell{grid-template-columns:var(--sidebar) minmax(0,1fr)}.toc{display:none}}@media(max-width:860px){:root{--gutter: 1.25rem}.shell{grid-template-columns:minmax(0,1fr)}.topbar{gap:.75rem}.topbar nav a[data-kind=section]{display:none}:not(pre)>code{white-space:normal;overflow-wrap:anywhere}.sidebar{display:none}.nav-drawer{display:block;border-bottom:1px solid var(--line);padding:.5rem var(--gutter)}.nav-drawer>summary{cursor:pointer;color:var(--muted);font-size:.9em;list-style:none}.nav-drawer>summary::-webkit-details-marker{display:none}.nav-drawer>summary:before{content:"▸";display:inline-block;margin-right:.6ch;color:var(--accent);transition:transform .2s var(--ease-out)}.nav-drawer[open]>summary:before{transform:rotate(90deg)}@supports selector(details::details-content){.nav-drawer::details-content{block-size:0;overflow:clip;opacity:0;transition:block-size .26s var(--ease-out),opacity .2s var(--ease-out),content-visibility .26s allow-discrete;transition-behavior:allow-discrete}.nav-drawer[open]::details-content{block-size:auto;opacity:1}}.nav-drawer .sidebar{display:block;position:static;max-height:none;border-right:0;padding:.5rem 0 1rem}}@view-transition{navigation:auto}::view-transition{pointer-events:none}:root{--vt-ease: var(--ease-out, cubic-bezier(.2, 0, 0, 1));--vt-slide: 24px;--vt-chrome-slide: 12px}.topbar{view-transition-name:topbar}.banner-strip{view-transition-name:banner}footer{view-transition-name:footer}.shell>.sidebar{view-transition-name:sidebar}.toc{view-transition-name:toc}.nav-drawer{view-transition-name:nav-drawer}:root[data-vt-banner=exit] .banner-strip,:root[data-vt-drawer=exit] .nav-drawer,:root[data-vt-sidebar=exit] .shell>.sidebar,:root[data-vt-toc=exit] .toc,:root[data-vt-footer=exit] footer{view-transition-name:none}@media(prefers-reduced-motion:no-preference){::view-transition-old(root){animation:vt-out .16s ease both}::view-transition-new(root){animation:vt-in .24s var(--vt-ease) both}::view-transition-group(topbar),::view-transition-group(banner),::view-transition-group(footer),::view-transition-group(sidebar){animation-duration:.24s;animation-timing-function:var(--vt-ease)}:root[data-vt-direction=forward]::view-transition-old(root){animation:vt-exit-left .22s var(--vt-ease) both}:root[data-vt-direction=forward]::view-transition-new(root){animation:vt-enter-right .22s var(--vt-ease) both}:root[data-vt-direction=back]::view-transition-old(root){animation:vt-exit-right .22s var(--vt-ease) both}:root[data-vt-direction=back]::view-transition-new(root){animation:vt-enter-left .22s var(--vt-ease) both}:root[data-vt-direction=down]::view-transition-old(root){animation:vt-exit-up .22s var(--vt-ease) both}:root[data-vt-direction=down]::view-transition-new(root){animation:vt-enter-down .22s var(--vt-ease) both}:root[data-vt-direction=up]::view-transition-old(root){animation:vt-exit-down .22s var(--vt-ease) both}:root[data-vt-direction=up]::view-transition-new(root){animation:vt-enter-up .22s var(--vt-ease) both}::view-transition-group(topbar),::view-transition-group(banner),::view-transition-group(nav-drawer),::view-transition-group(sidebar),::view-transition-group(toc),::view-transition-group(footer){z-index:2}:root[data-vt-banner=enter]::view-transition-group(banner),:root[data-vt-drawer=enter]::view-transition-group(nav-drawer),:root[data-vt-sidebar=enter]::view-transition-group(sidebar),:root[data-vt-toc=enter]::view-transition-group(toc),:root[data-vt-footer=enter]::view-transition-group(footer){animation:none}:root[data-vt-banner=enter]::view-transition-old(banner),:root[data-vt-drawer=enter]::view-transition-old(nav-drawer),:root[data-vt-sidebar=enter]::view-transition-old(sidebar),:root[data-vt-toc=enter]::view-transition-old(toc),:root[data-vt-footer=enter]::view-transition-old(footer){animation:none;opacity:0}:root[data-vt-banner=enter]::view-transition-new(banner),:root[data-vt-drawer=enter]::view-transition-new(nav-drawer){animation:vt-chrome-in-top .26s var(--vt-ease) both}:root[data-vt-footer=enter]::view-transition-new(footer){animation:vt-chrome-in-bottom .26s var(--vt-ease) both}:root[data-vt-sidebar=enter]::view-transition-new(sidebar){animation:vt-chrome-in-left .26s var(--vt-ease) both}:root[data-vt-toc=enter]::view-transition-new(toc){animation:vt-chrome-in-right .26s var(--vt-ease) both}:root[data-vt-banner=exit]::view-transition-old(banner),:root[data-vt-drawer=exit]::view-transition-old(nav-drawer){animation:vt-chrome-out-top .22s var(--vt-ease) both}:root[data-vt-footer=exit]::view-transition-old(footer){animation:vt-chrome-out-bottom .22s var(--vt-ease) both}:root[data-vt-sidebar=exit]::view-transition-old(sidebar){animation:vt-chrome-out-left .22s var(--vt-ease) both}:root[data-vt-toc=exit]::view-transition-old(toc){animation:vt-chrome-out-right .22s var(--vt-ease) both}}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(6px)}}@keyframes vt-enter-right{0%{opacity:0;transform:translate(var(--vt-slide))}}@keyframes vt-exit-left{to{opacity:0;transform:translate(calc(-1 * var(--vt-slide)))}}@keyframes vt-enter-left{0%{opacity:0;transform:translate(calc(-1 * var(--vt-slide)))}}@keyframes vt-exit-right{to{opacity:0;transform:translate(var(--vt-slide))}}@keyframes vt-enter-down{0%{opacity:0;transform:translateY(var(--vt-slide))}}@keyframes vt-exit-up{to{opacity:0;transform:translateY(calc(-1 * var(--vt-slide)))}}@keyframes vt-enter-up{0%{opacity:0;transform:translateY(calc(-1 * var(--vt-slide)))}}@keyframes vt-exit-down{to{opacity:0;transform:translateY(var(--vt-slide))}}@keyframes vt-chrome-in-top{0%{opacity:0;transform:translateY(calc(-1 * var(--vt-chrome-slide)))}}@keyframes vt-chrome-in-bottom{0%{opacity:0;transform:translateY(var(--vt-chrome-slide))}}@keyframes vt-chrome-in-left{0%{opacity:0;transform:translate(calc(-1 * var(--vt-chrome-slide)))}}@keyframes vt-chrome-in-right{0%{opacity:0;transform:translate(var(--vt-chrome-slide))}}@keyframes vt-chrome-out-top{to{opacity:0;transform:translateY(calc(-1 * var(--vt-chrome-slide)))}}@keyframes vt-chrome-out-bottom{to{opacity:0;transform:translateY(var(--vt-chrome-slide))}}@keyframes vt-chrome-out-left{to{opacity:0;transform:translate(calc(-1 * var(--vt-chrome-slide)))}}@keyframes vt-chrome-out-right{to{opacity:0;transform:translate(var(--vt-chrome-slide))}}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
