::view-transition-new(root),::view-transition-old(root){animation-duration:.15s}::view-transition-group(root){background:var(--bg)}@font-face{font-family:Bitter;font-style:normal;font-weight:600 700;font-display:swap;src:url(/fonts/bitter-semibold-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bitter;font-style:normal;font-weight:600 700;font-display:swap;src:url(/fonts/bitter-semibold-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,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:Bitter;font-style:italic;font-weight:600;font-display:swap;src:url(/fonts/bitter-semibold-italic-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bitter;font-style:italic;font-weight:600;font-display:swap;src:url(/fonts/bitter-semibold-italic-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,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:IBM Plex Sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,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:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}*,: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.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:IBM Plex Mono,Menlo,Monaco,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color: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{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--graph-node:#999;--graph-node-current:#d97706;--graph-edge:hsla(0,0%,55%,.4);--graph-label:#555;--callout-note:#0e7490;--callout-tip:#0f766e;--callout-warning:#b45309;--callout-danger:#b91c1c;--callout-info:#2563eb;--callout-abstract:#6366f1;--callout-todo:#64748b;--callout-success:#15803d;--callout-question:#a16207;--callout-failure:#be123c;--callout-bug:#a21caf;--callout-example:#7c3aed;--callout-quote:#6b7280;--bg:#faf8f6;--bg-surface:#f5f3f0;--bg-secondary:#edeae4;--code-bg:#282828;--code-text:#e0ddd8;--text:#1a1a1a;--text-secondary:#666;--text-muted:#777;--border:rgba(0,0,0,.12);--border-heavy:rgba(0,0,0,.18);--border-faint:rgba(0,0,0,.06);--accent:#8a4d00;--accent-faint:rgba(168,93,0,.12);--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 12px rgba(0,0,0,.08);--shadow-lg:0 12px 32px rgba(0,0,0,.12);--link:#1d7080;--link-hover:#145a6a;--header-bg:hsla(30,29%,97%,.75);--sidebar-sticky-top:5rem}html[data-theme=dark]{color-scheme:dark;--graph-node:#888;--graph-node-current:#fbbf24;--graph-edge:hsla(0,0%,39%,.45);--graph-label:#bbb;--bg:#161412;--bg-surface:#242018;--bg-secondary:#2a2620;--code-bg:#1e1a16;--code-text:#d4d4d4;--text:#ece8e2;--text-secondary:#b0a898;--text-muted:#a8a090;--border:hsla(0,0%,100%,.1);--border-heavy:hsla(0,0%,100%,.18);--border-faint:hsla(0,0%,100%,.06);--accent:#daa34e;--accent-faint:rgba(218,163,78,.14);--shadow-sm:0 1px 2px rgba(0,0,0,.15);--shadow-md:0 4px 12px rgba(0,0,0,.25);--shadow-lg:0 12px 32px rgba(0,0,0,.4);--link:#94bdc4;--link-hover:#b8d8e0;--header-bg:rgba(22,20,18,.72);--sidebar-sticky-top:5rem;--callout-note:#22a8c9;--callout-tip:#2cb8a0;--callout-warning:#d4930d;--callout-danger:#e04040;--callout-info:#5b8def;--callout-abstract:#8b8df7;--callout-todo:#8a9bb0;--callout-success:#2eaa55;--callout-question:#c9850d;--callout-failure:#e04070;--callout-bug:#c84adb;--callout-example:#9b6ef7;--callout-quote:#8b92a0}html[data-theme=light]{color-scheme:light}*{scrollbar-width:thin;scrollbar-color:var(--text-muted) transparent}body,html{background:var(--bg)}body{min-height:100vh;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}body:before{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.07;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cfilter id='a'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='4' stitchTiles='stitch' type='fractalNoise'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px}html[data-theme=dark] body:before{opacity:.09;mix-blend-mode:soft-light}::-moz-selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}::selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}.prose{max-width:65ch;line-height:1.65;font-size:1.0625rem;color:var(--text);font-variant-numeric:oldstyle-nums;overflow-wrap:break-word;text-rendering:optimizeLegibility}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose>h1:first-child{display:none}.prose h1{margin-top:2.5rem;font-size:clamp(2rem,3.5vw,2.75rem);letter-spacing:-.02em;line-height:1.12}.prose h1,.prose h2{margin-bottom:.75rem;font-family:Bitter,Georgia,serif;font-weight:600;color:var(--text)}.prose h2{font-size:clamp(1.5rem,2.5vw,1.875rem);letter-spacing:-.015em;line-height:1.25;margin-top:3rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.prose h3{margin-bottom:.5rem;font-family:Bitter,Georgia,serif;font-weight:600;font-size:1.375rem;letter-spacing:-.01em;line-height:1.3;color:var(--text);margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--border-faint)}.prose h4{font-size:1rem;letter-spacing:-.005em}.prose h4,.prose h5{margin-bottom:.5rem;margin-top:1.5rem;font-weight:700;color:var(--text)}.prose h5{font-size:.92rem;letter-spacing:.05em}.prose h5,.prose h6{text-transform:uppercase}.prose h6{margin-bottom:.5rem;margin-top:1.5rem;font-size:.85rem;font-weight:600;letter-spacing:.06em;color:var(--text-secondary)}.prose p{margin:1.25em 0}.prose ol,.prose ul{margin:1.25rem 0}.prose blockquote,.prose figure,.prose pre,.prose table{margin-top:1.25rem;margin-bottom:1.25rem}.prose ol,.prose ul{padding-left:1.5rem}.prose ul{list-style-type:disc}.prose ol{list-style-type:decimal}.prose li{margin:.25rem 0}.prose a{color:var(--link);font-weight:500;text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;text-decoration-color:color-mix(in srgb,var(--link) 50%,transparent)}.prose a:hover{color:var(--link-hover);text-decoration-color:var(--link-hover);transition:color .15s ease,text-decoration-color .15s ease}.prose a:visited{color:color-mix(in srgb,var(--link) 60%,var(--text-secondary));text-decoration-color:color-mix(in srgb,var(--link) 30%,transparent)}.prose a[href^=http]:not([href*="127.0.0.1"]):not([href*=localhost]):after{content:" \2197";font-size:.7em;opacity:.5}.prose strong{font-weight:600;color:var(--text)}.prose code{font-family:IBM Plex Mono,Menlo,Monaco,monospace;font-size:.88em;padding:.1em .4em;background:color-mix(in srgb,var(--accent) 8%,var(--bg-secondary));color:var(--text);border:1px solid var(--border);border-radius:3px}.prose pre{overflow-x:auto;padding:1.25rem;font-size:.875rem;line-height:1.25rem;line-height:1.6;background:var(--code-bg);color:var(--code-text);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;-moz-tab-size:2;-o-tab-size:2;tab-size:2;font-feature-settings:"liga" 0;position:relative}html[data-theme=dark] .prose pre{background:hsla(0,0%,100%,.03);border-color:var(--border);border-left-color:var(--accent)}.prose pre code{background-color:transparent;padding:0;color:inherit;border:none}.prose pre[data-lang]:after{content:attr(data-lang);position:absolute;bottom:.5rem;right:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);opacity:.7;pointer-events:none}.prose blockquote{background:var(--bg-secondary);border-left:2px solid var(--border-heavy);border-radius:0 4px 4px 0;padding:1rem 1.25rem;font-style:italic;color:var(--text-secondary);font-size:1em;font-weight:400}.prose hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--border-heavy),transparent);margin:3rem auto;max-width:12rem}.prose table{width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.25rem}.prose .table-wrapper{display:block;overflow-x:auto}.prose thead{background:var(--bg-secondary)}.prose td,.prose th{padding:.5rem .75rem;text-align:left;border:1px solid var(--border)}.prose tbody tr:nth-child(2n){background:var(--bg-secondary)}.prose tbody tr:hover{background:color-mix(in srgb,var(--accent) 6%,var(--bg))}.prose canvas,.prose img,.prose svg,.prose video{height:auto;max-width:100%;border-radius:3px}.prose img{background:var(--bg-secondary);transition:opacity .3s ease}html[data-theme=dark] .prose img{border:1px solid var(--border);opacity:.92}[data-theme=dark] .prose img:hover{opacity:1}.prose figure{margin:1.5rem 0}.prose figcaption{font-size:.84rem;color:var(--text-muted);text-align:center;margin-top:.5rem}.prose mark{padding-left:.125rem;padding-right:.125rem;background:color-mix(in srgb,var(--accent) 22%,transparent);border-radius:1px}.prose kbd,.prose mark{color:var(--text)}.prose kbd{display:inline-block;padding:.15em .4em;font-family:IBM Plex Mono,monospace;font-size:.85em;font-weight:500;line-height:1;background:var(--bg-secondary);border:solid var(--border);border-width:1px 1px 2px;border-radius:3px;box-shadow:var(--shadow-sm)}.prose h1+ol,.prose h1+p,.prose h1+pre,.prose h1+ul,.prose h2+ol,.prose h2+p,.prose h2+pre,.prose h2+ul,.prose h3+ol,.prose h3+p,.prose h3+pre,.prose h3+ul{margin-top:.5rem}.prose h1,.prose h2,.prose h3,.prose h4{position:relative}.prose :is(h1,h2,h3,h4) .zola-anchor{position:absolute;left:-1.5em;color:var(--text-muted);opacity:0;transition:opacity .15s ease;text-decoration:none;font-weight:400}.prose :is(h1,h2,h3,h4):hover .zola-anchor{opacity:1}@media (max-width:640px){.prose :is(h1,h2,h3,h4) .zola-anchor{display:none}}.page-header-accent{border-left:3px solid var(--accent);padding-left:1rem}@media (max-width:640px){.prose{font-size:1rem;line-height:1.6}.prose h3{font-size:1.15rem}}.\!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:821px){.\!container{max-width:821px!important}.container{max-width:821px}}@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}}.site-header{background:var(--header-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transition:box-shadow .3s ease;box-shadow:0 1px 3px rgba(0,0,0,.04)}[data-theme=dark] .site-header{border-bottom-color:var(--border-faint)}.site-header .flex.items-center.gap-2{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}.divider{border-bottom:1px solid var(--border)}.divider-heavy{border-bottom:1px solid var(--border-heavy)}body.search-open{overflow:hidden}.search-overlay{position:fixed;inset:0;z-index:100;display:none;align-items:flex-start;justify-content:center;padding:4vh 1.25rem 0;background:transparent;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .2s ease,background .25s ease}@media (min-width:1024px){.search-overlay{padding:6vh 2rem 0}}.search-overlay.is-open{display:flex;background:rgba(0,0,0,.5);opacity:1;pointer-events:auto}.site-nav[hidden]{display:none}@media (max-width:820px){.js .site-nav{display:block;max-height:0;opacity:0;transform:translateY(-8px);overflow:hidden;transition:max-height .3s ease,opacity .25s ease,transform .25s ease;pointer-events:none}.js .site-nav.is-open{max-height:80vh;opacity:1;transform:translateY(0);pointer-events:auto}.site-nav.is-open{position:absolute;top:100%;right:0;left:0;background:var(--bg);border-bottom:1px solid var(--border);border-radius:0 0 6px 6px;box-shadow:0 12px 32px rgba(0,0,0,.15);z-index:30}html[data-theme=dark] .site-nav.is-open{box-shadow:0 12px 32px rgba(0,0,0,.4)}.site-nav-list{background:var(--bg);border:1px solid var(--border)}.nav-overlay{position:fixed;inset:0;z-index:29;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .25s ease}.nav-overlay.is-visible{opacity:1;pointer-events:auto}}@media (max-width:1279px){.layout-home .site-main aside[aria-label=Explorer],.layout-note .site-main aside[aria-label=Explorer],.layout-section .site-main aside[aria-label=Explorer]{border-top:1px solid var(--border);padding-top:1.5rem;margin-top:1rem}}.graph-empty-state{margin:0;padding:.75rem;font-size:.875rem;line-height:1.25rem;color:var(--text-muted)}.graph-node{fill:var(--graph-node);stroke:var(--bg);stroke-width:1.5;cursor:pointer;transition:fill .15s ease,filter .15s ease,opacity .2s ease}.graph-node:hover{fill:var(--accent);filter:drop-shadow(0 0 4px var(--accent))}.graph-node.current{fill:var(--graph-node-current)}.graph-node.current:hover{filter:drop-shadow(0 0 3px var(--graph-node-current))}.graph-node:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-offset-width:2px;ring-color:var(--accent)}.graph-label{fill:var(--text);font-size:.82rem;font-weight:600;font-family:inherit;pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.graph-label,.graph-link{transition:opacity .2s ease}.graph-link{stroke:var(--graph-edge);stroke-width:1.5}.graph-controls{position:absolute;bottom:8px;right:8px;display:flex;flex-direction:column;gap:2px;z-index:10}.graph-ctrl-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--text-muted);font-size:.85rem;line-height:1;cursor:pointer;transition:background .15s ease,color .15s ease}.graph-ctrl-btn:hover{background:var(--bg-surface);color:var(--text)}.popover-preview{pointer-events:none;position:absolute;z-index:60;width:min(22rem,calc(100vw - 1.2rem));padding:1rem;opacity:0;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:var(--bg);border:1px solid var(--border-heavy);box-shadow:0 4px 24px rgba(0,0,0,.12);border-radius:3px;transform:translateY(6px)}.popover-preview.is-visible{pointer-events:auto;opacity:1;transform:translateY(0)}.popover-preview:before{content:"";position:absolute;top:-6px;left:1.5rem;width:12px;height:12px;background:var(--bg);border-left:1px solid var(--border-heavy);border-top:1px solid var(--border-heavy);transform:rotate(45deg)}.popover-preview.reduced-motion{transition:none}.popover-title{margin-bottom:.375rem;font-weight:600;color:var(--text)}.popover-text,.popover-title{font-size:.875rem;line-height:1.25rem}.popover-text{margin:0;color:var(--text-secondary)}.callout{--callout-color:var(--callout-note);--callout-icon:"i";margin-bottom:1rem;border-left-width:2px;padding:1rem;border-color:var(--callout-color);background:color-mix(in srgb,var(--callout-color) 16%,var(--bg));border-radius:3px}.site-header .callout-title.items-center.gap-2,.site-header .flex.callout-title.gap-2,.site-header .flex.items-center.callout-title{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}.callout-title{margin-bottom:.5rem;display:flex;align-items:center;gap:.5rem;font-weight:600;color:var(--callout-color)}.site-header .flex.callout-title.gap-2:before{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}.callout-title:before{display:inline-flex;height:1rem;width:1rem;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;color:var(--callout-color);content:var(--callout-icon)}.callout-content>:last-child{margin-bottom:0}.site-header .flex.callout-toggle.gap-2,.site-header .flex.items-center.callout-toggle{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}.callout-toggle{display:inline-flex;width:100%;align-items:center;gap:.5rem;background-color:transparent;padding:0;text-align:left;border:0;color:inherit;cursor:pointer;font:inherit}.callout-toggle:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-offset-width:2px;ring-color:var(--accent)}.callout-toggle-icon{display:inline-block;font-family:IBM Plex Mono,Menlo,Monaco,monospace;color:var(--callout-color);transform:rotate(90deg);transition:transform .15s ease}.callout.is-collapsed .callout-toggle-icon{transform:rotate(0deg)}.callout-content{max-height:2000px;overflow:hidden;transition:max-height .3s ease,opacity .25s ease;opacity:1}.callout.is-collapsed .callout-content{max-height:0;opacity:0}.js .callout[data-foldable=closed]:not(.is-foldable) .callout-content{display:none}.js .callout[data-foldable=closed]:not(.is-foldable) .callout-title{margin-bottom:0}.callout-note{--callout-color:var(--callout-note);--callout-icon:"\270E"}.callout-info{--callout-color:var(--callout-info);--callout-icon:"\2139"}.callout-tip{--callout-color:var(--callout-tip);--callout-icon:"\2736"}.callout-success{--callout-color:var(--callout-success);--callout-icon:"\2714"}.callout-warning{--callout-color:var(--callout-warning);--callout-icon:"\26A0"}.callout-question{--callout-color:var(--callout-question);--callout-icon:"\003F"}.callout-danger{--callout-color:var(--callout-danger);--callout-icon:"\26D4"}.callout-failure{--callout-color:var(--callout-failure);--callout-icon:"\2715"}.callout-todo{--callout-color:var(--callout-todo);--callout-icon:"\2610"}.callout-bug{--callout-color:var(--callout-bug);--callout-icon:"\2042"}.callout-example{--callout-color:var(--callout-example);--callout-icon:"\2022"}.callout-abstract{--callout-color:var(--callout-abstract);--callout-icon:"\2261"}.callout-quote{--callout-color:var(--callout-quote);--callout-icon:"\201C"}.search-modal{width:calc(100vw - 2.5rem);max-width:min(1400px,calc(100vw - 2.5rem));max-height:82vh;margin:0 auto;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border-heavy);box-shadow:0 20px 60px rgba(0,0,0,.15);border-radius:3px;overflow:hidden;transform:translateY(-8px) scale(.97);transition:transform .3s cubic-bezier(.32,.72,0,1),opacity .2s ease;opacity:0}.search-overlay.is-open .search-modal{transform:translateY(0) scale(1);opacity:1}.search-modal-header{padding:0;border-bottom:1px solid var(--border)}.search-input-wrap{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem}.search-input-icon{width:16px;height:16px;flex-shrink:0;color:var(--text-muted)}.search-input{flex:1;border:none;outline:none;background:transparent;font-size:.95rem;font-family:inherit;color:var(--text)}.search-input::-moz-placeholder{color:var(--text-muted)}.search-input::placeholder{color:var(--text-muted)}.search-hint-key{font-size:.65rem;font-family:inherit;font-weight:600;padding:.15rem .4rem;color:var(--text-muted);border:1px solid var(--border);flex-shrink:0}.search-modal-body{display:flex;flex:1;min-height:0;overflow:hidden}.search-results-list{width:28%;min-width:200px;max-width:320px;overflow-y:auto;border-right:1px solid var(--border);flex-shrink:0}.search-result-item{display:flex;flex-direction:column;gap:.15rem;padding:.6rem 1rem;text-decoration:none;cursor:pointer;border-bottom:1px solid var(--border);transition:background .1s ease;color:var(--text)}.search-result-item.is-active,.search-result-item:hover{background:var(--accent-faint)}.search-result-item.is-active{border-left:2px solid var(--accent);padding-left:calc(1rem - 2px)}.search-result-title{font-size:.88rem;font-weight:600;color:var(--text)}.search-result-path{font-size:.75rem;color:var(--text-muted)}.search-no-results{padding:2rem 1rem;text-align:center;font-size:.88rem;color:var(--text-muted)}.search-modal-body.no-results{max-height:0;min-height:0;overflow:hidden;transition:max-height .2s ease}.search-preview{flex:1;overflow-y:auto;padding:1.5rem 2rem;min-width:0}.search-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;min-height:200px;color:var(--text-muted);font-size:.88rem}.search-preview-breadcrumb{font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem}.search-preview-title{font-family:Bitter,Georgia,serif;font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:.5rem;letter-spacing:-.01em}.search-preview-content{font-size:.92rem;line-height:1.78;color:var(--text);letter-spacing:.005em}.search-preview-content mark{background:color-mix(in srgb,var(--accent) 38%,transparent);color:var(--text);padding:.05em .15em;border-radius:1px}.search-preview-content p{margin:.75rem 0}.search-preview-content a{color:var(--link);font-weight:500;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 35%,transparent);text-underline-offset:.18em}.search-preview-content a:hover{color:var(--link-hover);text-decoration-color:var(--link-hover)}.search-preview-content strong{font-weight:600;color:var(--text)}.search-preview-content code{padding:.1rem .4rem;font-family:IBM Plex Mono,monospace;font-size:.87em;background:var(--bg-secondary);border:1px solid var(--border)}.search-preview-content ol,.search-preview-content ul{padding-left:1.5rem;margin:.5rem 0}.search-preview-content ul{list-style-type:disc}.search-preview-content ol{list-style-type:decimal}.search-preview-content li{margin:.25rem 0}@media (max-width:1024px){.search-modal{max-height:70vh}}@media (max-width:640px){.search-overlay{background:rgba(0,0,0,.7)}.search-modal{width:95vw;max-height:80vh}.search-results-list{width:100%;border-right:none}.search-preview{display:none}}[data-theme=dark] .search-modal{box-shadow:0 20px 80px rgba(0,0,0,.5)}.explorer-link{display:block;padding-top:.25rem;padding-bottom:.25rem;font-size:.84rem;color:var(--text-secondary);transition:background .15s ease,color .15s ease}.explorer-link:hover{color:var(--text);background:var(--accent-faint);border-radius:3px}.explorer-link.is-active{color:var(--accent);font-weight:500;border-left:2px solid var(--accent);padding-left:.5rem;background:var(--accent-faint)}.explorer-folder-link{display:block;padding-top:.25rem;padding-bottom:.25rem;font-size:.84rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;color:var(--text)}.explorer-folder-link:hover{color:var(--accent)}.explorer-folder details{overflow:hidden}.explorer-folder details>.explorer-folder-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease}.explorer-folder details[open]>.explorer-folder-content{grid-template-rows:1fr}.explorer-folder details>.explorer-folder-content>*{overflow:hidden}.sidebar-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted)}.sidebar-border-left,.sidebar-border-right{position:relative}@media (min-width:1024px){.sidebar-border-left:after,.sidebar-border-right:after{content:"";position:absolute;top:10%;height:80%;width:1px;pointer-events:none}.sidebar-border-right:after{right:calc(-1.25rem - .5px)}.sidebar-border-left:after,.sidebar-border-right:after{background:linear-gradient(to bottom,transparent 0,var(--border) 12%,var(--border) 88%,transparent 100%)}.sidebar-border-left:after{left:calc(-1.25rem - .5px)}}.toc-link{display:block;padding-top:.125rem;padding-bottom:.125rem;font-size:.84rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;color:var(--text-secondary)}.toc-link:hover{color:var(--text);background:var(--accent-faint)}.toc-link.is-active{color:var(--accent);font-weight:500;border-left:2px solid var(--accent);padding-left:.5rem}.backlink{display:block;padding-top:.25rem;padding-bottom:.25rem;font-size:.84rem;color:var(--text-secondary);transition:transform .15s ease,color .15s ease}.backlink:hover{color:var(--accent);background:var(--accent-faint);transform:translateX(3px)}.nav-link{color:var(--text-secondary);transition:color .15s ease;position:relative}.nav-link:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform .2s ease}.nav-link:hover{color:var(--text);background:var(--accent-faint)}.nav-link.is-active:after,.nav-link:hover:after{transform:scaleX(1)}.site-title{color:var(--text);transition:color .15s ease}.site-title:hover{color:var(--accent)}.search-kbd{font-size:.6rem;font-family:inherit;font-weight:500;padding:.1rem .35rem;margin-left:.35rem;color:var(--text-muted);border:1px solid var(--border);line-height:1}.site-footer{border-top:1px solid var(--border-heavy);padding-top:2rem;padding-bottom:2rem;font-size:.8rem}.footer-link{color:var(--text-secondary);transition:color .15s ease}.footer-link:hover{color:var(--accent)}.footer-back-to-top{color:var(--text-muted);transition:color .15s ease}.footer-back-to-top:hover{color:var(--accent)}.theme-icon-moon,.theme-icon-sun{transition:opacity .3s ease,transform .3s ease;position:absolute}html[data-theme=dark] .theme-icon-sun{opacity:0;transform:rotate(-90deg)}html[data-theme=dark] .theme-icon-moon{opacity:1;transform:rotate(0deg)}html:not([data-theme]) .theme-icon-moon,html[data-theme=light] .theme-icon-moon{opacity:0;transform:rotate(90deg)}html:not([data-theme]) .theme-icon-sun,html[data-theme=light] .theme-icon-sun{opacity:1;transform:rotate(0deg)}@media (max-width:640px){.site-main{padding-left:1rem;padding-right:1rem}.prose h1{font-size:1.6rem}.prose h2{font-size:1.3rem}.page-header-accent h1{font-size:clamp(1.5rem,5vw,2.1rem)}}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}.search-result-count{padding:.4rem 1rem;font-size:.75rem;font-weight:500;color:var(--text-muted);border-bottom:1px solid var(--border)}.search-clear-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--text-muted);font-size:1.1rem;cursor:pointer;flex-shrink:0;transition:color .15s ease;line-height:1;padding:0}.search-clear-btn:hover{color:var(--text)}@media (max-width:820px){.search-clear-btn{width:36px;height:36px;font-size:1.3rem}}@media (prefers-reduced-motion:reduce){.graph-label,.graph-link,.graph-node{transition:none!important}}.hover-accent{color:var(--text);transition:color .15s ease}.hover-accent:focus-visible,.hover-accent:hover{color:var(--accent)}.hover-accent-secondary{color:var(--text-secondary);transition:color .15s ease}.hover-accent-secondary:focus-visible,.hover-accent-secondary:hover{color:var(--accent)}.hover-accent-muted{color:var(--text-secondary);transition:color .15s ease}.hover-accent-muted:focus-visible,.hover-accent-muted:hover{color:var(--accent)}.nav-link.is-active{color:var(--accent)}@media (min-width:821px){.site-nav-list{background:transparent!important;border:none!important}}.tag-pill{color:var(--text-muted);border:1px solid var(--border);background:var(--bg-secondary);border-radius:3px;transition:color .15s ease,border-color .15s ease,box-shadow .15s ease}.tag-pill:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-faint)}.tag-pill:active{transform:scale(.97)}.stage-badge{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.15rem .6rem;font-size:.75rem;font-weight:500;border-radius:999px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary)}.stage-seedling{border-color:#86efac;color:#16a34a;background:rgba(22,163,74,.08)}.stage-budding{border-color:#93c5fd;color:#2563eb;background:rgba(37,99,235,.08)}.stage-evergreen{border-color:#a3e635;color:#65a30d;background:rgba(101,163,13,.08)}html[data-theme=dark] .stage-seedling{color:#86efac;background:rgba(134,239,172,.1)}html[data-theme=dark] .stage-budding{color:#93c5fd;background:rgba(147,197,253,.1)}html[data-theme=dark] .stage-evergreen{color:#a3e635;background:rgba(163,230,53,.1)}.site-footer,.site-header,body,html{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.theme-transitioning *{transition:background-color .3s ease,color .3s ease,border-color .3s ease!important}.graph-container,[data-graph-mode]{overflow:hidden}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--accent);z-index:50;pointer-events:none;opacity:0;transform:scaleX(.015);transform-origin:left;transition:transform .1s linear}.layout-note .reading-progress{opacity:1}@media (prefers-reduced-motion:reduce){.site-footer,.site-header,body,html{transition:none}.backlink:hover,.explorer-link:hover{transform:none!important}.backlink,.explorer-link{transition:color .15s ease!important}.reading-progress{transition:none}.search-modal,.search-overlay{transition:none!important}.search-result-item{animation:none!important}.back-to-top-fab,.callout-toggle-icon,.copy-code-btn,.explorer-folder-content,.popover-preview,.tag-pill,.theme-icon-moon,.theme-icon-sun{transition:none!important}}@media (max-width:820px){#explorer-drawer-toggle,#search-toggle,#theme-toggle,.nav-toggle{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.nav-link{min-height:44px;padding:.5rem .75rem}#search-toggle{border:1px solid var(--border);padding:.35rem .5rem}.backlink,.explorer-folder-link,.explorer-link,.toc-link{padding-top:.625rem;padding-bottom:.625rem;min-height:44px}}@media (max-width:1279px){aside[aria-label=Explorer]>div>nav{max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .25s ease}aside[aria-label=Explorer]>div>.sidebar-title{cursor:pointer;position:relative;padding-right:1.5rem}aside[aria-label=Explorer]>div>.sidebar-title:after{content:"+";position:absolute;right:0;font-size:1rem;line-height:1;color:var(--text-muted)}aside[aria-label=Explorer]>div.is-expanded>nav{max-height:80vh;opacity:1}aside[aria-label=Explorer]>div.is-expanded>.sidebar-title:after{content:"−"}}.keyboard-nav .search-result-item.is-active{outline:2px solid var(--accent);outline-offset:-2px}.copy-code-btn{position:absolute;top:.5rem;right:.5rem;padding:.25rem .5rem;font-size:.75rem;font-family:inherit;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);background:transparent;border:1px solid var(--border-faint);cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease,border-color .15s ease;z-index:2}.prose pre:hover .copy-code-btn{opacity:1}.prose pre:focus-within .copy-code-btn{opacity:1}.copy-code-btn:hover{color:var(--accent);border-color:var(--accent)}@media (hover:none){.copy-code-btn{opacity:.6}}.copy-code-btn.is-copied{color:var(--callout-success);border-color:var(--callout-success);animation:copyPulse .3s ease}@keyframes copyPulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.copy-md-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .45rem;font-size:.75rem;font-weight:500;color:var(--text-muted);border:1px solid var(--border);border-radius:3px;text-decoration:none;transition:color .15s ease,border-color .15s ease}.copy-md-btn:hover{color:var(--accent);border-color:var(--accent)}.copy-md-btn.is-copying{opacity:.6;pointer-events:none}.copy-md-btn.is-copied{color:var(--callout-success);border-color:var(--callout-success)}.graph-expand-btn{color:var(--text-muted);transition:color .15s ease;margin-bottom:.75rem;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center}.graph-expand-btn:hover{color:var(--accent)}.graph-expand-btn .graph-collapse-icon,.graph-expand-btn.is-expanded .graph-expand-icon{display:none}.graph-expand-btn.is-expanded .graph-collapse-icon{display:block}.graph-overlay{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s ease}.graph-overlay.is-active{opacity:1;pointer-events:auto}.graph-overlay-content{width:min(90vw,1100px);height:min(80vh,750px);background:var(--bg);border:1px solid var(--border-heavy);border-radius:6px;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.2);transform:scale(.95);transition:transform .2s ease,opacity .2s ease}.graph-overlay.is-active .graph-overlay-content{transform:scale(1)}.graph-overlay-content .graph-container{width:100%!important;height:100%!important}@media (prefers-reduced-motion:reduce){.graph-overlay{transition:none}}.back-to-top-fab{position:fixed;bottom:2rem;right:2rem;z-index:40;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--border);border-radius:50%;color:var(--text-muted);cursor:pointer;opacity:0;transform:translateY(12px);transition:opacity .25s ease,transform .25s ease,color .15s ease,background .15s ease,border-color .15s ease;pointer-events:none;box-shadow:0 2px 8px rgba(0,0,0,.08)}.back-to-top-fab.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}.back-to-top-fab:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-faint);transform:translateY(-2px) scale(1.05)}[data-theme=dark] .back-to-top-fab{box-shadow:0 2px 12px rgba(0,0,0,.3)}.site-header.is-scrolled{box-shadow:0 2px 16px rgba(0,0,0,.12)}[data-theme=dark] .site-header.is-scrolled{box-shadow:0 2px 16px rgba(0,0,0,.4)}.explorer-folder-toggle{transition:transform .2s ease}details[open] .explorer-folder-toggle{transform:rotate(90deg)}.transclusion{border-left:2px solid var(--accent);padding:1rem 1.25rem;margin:1.5rem 0;background:var(--accent-faint);border-radius:3px;position:relative}.transclusion a.transclusion-source{color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}.section-empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.section-empty-state .empty-icon{font-size:2rem;margin-bottom:.5rem;opacity:.5}.section-empty-state p{font-size:.88rem}.search-empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.search-empty-state .empty-icon{font-size:2rem;margin-bottom:.5rem;opacity:.5}.search-empty-state p{font-size:.88rem;margin:.25rem 0}:root{--hl-comment:#7a7a6e;--hl-keyword:#d4a05a;--hl-string:#7ec8a0;--hl-number:#d4976a;--hl-function:#6ab0c8;--hl-type:#c4a06a;--hl-operator:#b0a080;--hl-attribute:#c8bca0;--hl-tag:#d4a05a;--hl-builtin:#6ab0c8}html[data-theme=dark]{--hl-comment:#8a8a7a;--hl-keyword:#e0b06a;--hl-string:#90d8b0;--hl-number:#e0a878;--hl-function:#7ac0d8;--hl-type:#d4b07a;--hl-operator:#c0b090;--hl-attribute:#d8ccb0;--hl-tag:#e0b06a;--hl-builtin:#7ac0d8}.z-comment{color:var(--hl-comment);font-style:italic}.z-keyword{color:var(--hl-keyword);font-weight:500}.z-string{color:var(--hl-string)}.z-number{color:var(--hl-number)}.z-function{color:var(--hl-function);font-weight:500}.z-type{color:var(--hl-type)}.z-variable{color:var(--hl-attribute)}.z-operator{color:var(--hl-operator)}.z-punctuation{color:var(--hl-comment)}[data-theme=dark] body{background:radial-gradient(ellipse at 50% 0,#241f18 0,var(--bg) 60%)}[data-theme=dark] .prose pre{box-shadow:0 2px 8px rgba(0,0,0,.2)}[data-theme=dark] .site-footer{border-color:var(--border)}.backlinks-section{padding:0}.search-result-excerpt{font-size:.8rem;color:var(--text-muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:.25rem}.search-empty-heading{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.search-empty-hints{font-size:.8rem;color:var(--text-muted)}.search-empty-icon{width:36px;height:36px;color:var(--text-muted);opacity:.5;margin:0 auto .75rem}.search-loading{font-size:.84rem;color:var(--text-muted);padding:2rem;text-align:center}.search-result-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.back-to-top-fab:active,.copy-code-btn:active,.tag-pill:active{transition-duration:.1s}@media print{@page{margin:2cm}#search-toggle,#theme-toggle,.back-to-top-fab,.footer-back-to-top,.nav-toggle,.reading-progress,.search-overlay,.site-footer,.site-header,aside[aria-label="Page utilities"],aside[aria-label=Explorer],body:before{display:none!important}body{background:#fff!important;color:#000!important}.site-main{padding:0!important;margin:0!important}.prose,.site-main{max-width:100%!important}.prose{font-size:12pt}p{orphans:3;widows:3}.prose a{color:#000!important;text-decoration:underline}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em;color:#555}.prose pre{border:1px solid #ccc;background:#fff!important;color:#000!important}.callout,img,pre{-moz-column-break-inside:avoid;break-inside:avoid}.prose tbody tr:hover,.prose tbody tr:nth-child(2n){background:transparent!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0}.z-40{z-index:40}.z-\[60\]{z-index:60}.order-1{order:1}.order-2{order:2}.order-3{order:3}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-12{height:3rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-64{height:16rem}.h-72{height:18rem}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[65vh\]{height:65vh}.h-auto{height:auto}.min-h-\[360px\]{min-height:360px}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[min\(22rem\2c calc\(100vw-1\.2rem\)\)\]{width:min(22rem,calc(100vw - 1.2rem))}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-\[1400px\]{max-width:1400px}.max-w-\[65ch\]{max-width:65ch}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{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))}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.border{border-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-0{padding-left:0;padding-right:0}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-center{text-align:center}.font-mono{font-family:IBM Plex Mono,Menlo,Monaco,monospace}.font-sans{font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,sans-serif}.font-serif{font-family:Bitter,Georgia,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[0\.7em\]{font-size:.7em}.text-\[0\.84rem\]{font-size:.84rem}.text-\[0\.88em\]{font-size:.88em}.text-\[0\.88rem\]{font-size:.88rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.9rem\]{font-size:.9rem}.text-\[1\.4rem\]{font-size:1.4rem}.text-\[1\.8rem\]{font-size:1.8rem}.text-\[2\.1rem\]{font-size:2.1rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-tight{letter-spacing:-.025em}.underline{text-decoration-line:underline}.decoration-1{text-decoration-thickness:1px}.underline-offset-2{text-underline-offset:2px}.underline-offset-\[0\.18em\]{text-underline-offset:.18em}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:640px){.site-header .sm\:flex.items-center.gap-2{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}}@media (min-width:821px){.min-\[821px\]\:items-center{align-items:center}.site-header .min-\[821px\]\:items-center.flex.gap-2{border-left:1px solid var(--border);padding-left:.75rem;margin-left:.25rem}}.before\:mx-1\.5:before{content:var(--tw-content);margin-left:.375rem;margin-right:.375rem}.before\:content-\[\'\/\'\]:before{--tw-content:"/";content:var(--tw-content)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-50:focus{z-index:50}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:text-sm:focus{font-size:.875rem;line-height:1.25rem}.focus\:font-semibold:focus{font-weight:600}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width:640px){.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:flex-1{flex:1 1 0%}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}}@media (min-width:821px){.min-\[821px\]\:inline{display:inline}.min-\[821px\]\:inline-flex{display:inline-flex}.min-\[821px\]\:hidden{display:none}.min-\[821px\]\:flex-row{flex-direction:row}.min-\[821px\]\:items-center{align-items:center}.min-\[821px\]\:gap-1{gap:.25rem}.min-\[821px\]\:p-0{padding:0}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-16{top:4rem}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:max-h-\[calc\(100vh-5rem\)\]{max-height:calc(100vh - 5rem)}.lg\:w-48{width:12rem}.lg\:w-52{width:13rem}.lg\:shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}.lg\:gap-10{gap:2.5rem}.lg\:overflow-y-auto{overflow-y:auto}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-10{padding-top:2.5rem}}@media (min-width:1280px){.xl\:h-80{height:20rem}.xl\:w-64{width:16rem}.xl\:shrink-0{flex-shrink:0}.xl\:gap-12{gap:3rem}}.\[\&\.search-open\]\:overflow-hidden.search-open{overflow:hidden}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}[open]>.\[\[open\]\>\&\]\: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))}