.markdown-body{max-width:var(--content-width);counter-reset:h2;min-width:0}.markdown-body .os-only{display:contents}:root[data-code-os=win] .markdown-body [data-os-only=mac],:root[data-code-os=win] .markdown-body [data-os-only=linux],:root[data-code-os=mac] .markdown-body [data-os-only=win],:root[data-code-os=mac] .markdown-body [data-os-only=linux],:root[data-code-os=linux] .markdown-body [data-os-only=win],:root[data-code-os=linux] .markdown-body [data-os-only=mac]{display:none}.markdown-body h2{font-size:var(--text-2xl);line-height:var(--leading-tight);margin-top:var(--space-7);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.markdown-body h3{font-size:var(--text-xl);line-height:var(--leading-tight);margin-top:var(--space-6);margin-bottom:var(--space-2)}.markdown-body [data-published-document] h2{counter-increment:h2;counter-reset:h3}.markdown-body [data-published-document] h3{counter-increment:h3}.markdown-body [data-published-document] h2:before{content:counter(h2) ". ";color:var(--color-text-muted);font-weight:600}.markdown-body [data-published-document] h3:before{content:counter(h2) "." counter(h3) " ";color:var(--color-text-muted);font-weight:600}.markdown-body h4{font-size:var(--text-lg);margin-top:var(--space-5);margin-bottom:var(--space-2)}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body table,.markdown-body pre,.markdown-body blockquote{margin-bottom:var(--space-4)}.markdown-body ul,.markdown-body ol{padding-left:var(--space-5)}.markdown-body li{margin-bottom:var(--space-1)}.markdown-body .svg-drawing-block{width:100%;margin:var(--space-5) 0}.markdown-body .svg-drawing-block svg{border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;height:auto;display:block;overflow:visible}.markdown-body .svg-drawing-block figcaption{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);text-align:center}.markdown-body blockquote{padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);color:#1c1917;background:#fbf9f5;border:1px solid #d8d4cc}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body .inline-memo{color:inherit;cursor:pointer;border-bottom:3px solid #fdda30;padding-bottom:2px}.markdown-body .inline-memo:after{clip-path:polygon(0 0,70% 0,100% 30%,100% 100%,0 100%);content:"";vertical-align:-.15em;background:linear-gradient(225deg,#0000 5px,#fffec9 0) 100% 0/100% 100% no-repeat;border:1px solid #cbc56a;width:1em;height:1em;margin:0 2px 0 4px;display:inline-block;box-shadow:0 1px 2px #0000002e}.markdown-body a[href],.published-inline-memo a[href]{color:#1670bd;border-bottom:2px solid #2785d8;text-decoration:none}.markdown-body a[href]:after,.published-inline-memo a[href]:after{content:"";vertical-align:-.13em;background:currentColor;width:1em;height:1em;margin-left:.22em;display:inline-block;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' d='M10.6 13.4a4 4 0 0 0 5.7 0l2.1-2.1a4 4 0 0 0-5.7-5.7l-1.2 1.2M13.4 10.6a4 4 0 0 0-5.7 0l-2.1 2.1a4 4 0 1 0 5.7 5.7l1.2-1.2'/%3E%3C/svg%3E") 50%/contain no-repeat}.markdown-body .inline-memo:has(>a[href]){border-bottom:3px solid #fdda30;padding-bottom:4px;padding-right:1.25em;position:relative}.markdown-body .inline-memo:has(>a[href])>a[href]{border-bottom:2px solid #2785d8;padding-bottom:2px;padding-right:1.25em;position:relative}.markdown-body .inline-memo:has(>a[href])>a[href]:after,.markdown-body .inline-memo:has(>a[href]):after{margin:0;position:absolute;bottom:.08em;right:.08em}.markdown-body .inline-memo:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.published-inline-memo{z-index:80;color:#292713;white-space:pre-wrap;overflow-wrap:anywhere;transform-origin:0 0;background:#fffec9;border:1px solid #d8d27c;border-radius:4px 4px 12px;width:min(320px,100vw - 24px);padding:14px;animation:.18s cubic-bezier(.2,.8,.2,1) published-inline-memo-open;position:fixed;box-shadow:0 16px 42px #3a360c3d}.published-inline-memo:after{clip-path:polygon(0 0,100% 100%,0 100%);content:"";background:#f3ef9b;border-bottom:1px solid #d8d27c;border-left:1px solid #d8d27c;width:24px;height:24px;position:absolute;top:-1px;right:-1px}.published-inline-memo-close{z-index:1;color:inherit;cursor:pointer;background:0 0;border:0;padding:0 5px;font-size:22px;line-height:1;position:absolute;top:5px;right:5px}.published-inline-memo-content{padding:13px 14px 2px 0}@keyframes published-inline-memo-open{0%{opacity:0;transform:scale(.25)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.published-inline-memo{animation:none}}.markdown-body :not(pre)>code{border-radius:var(--radius);background:var(--color-bg-code);font-family:var(--font-mono);padding:2px 5px;font-size:.9em}.markdown-body pre{padding:var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm)}.markdown-body pre.astro-code>code{white-space:pre-wrap;overflow-wrap:break-word;display:block}.markdown-body pre.astro-code:not(.has-line-numbers)>code{text-indent:-2.5em;padding-left:2.5em}.markdown-body pre.astro-code[data-language=markdown]>code,.markdown-body pre.astro-code[data-language=md]>code{text-indent:0;padding-left:0}.markdown-body table{border-collapse:collapse;width:100%;max-width:100%;font-size:var(--text-sm);display:block;overflow-x:auto}.markdown-body table[data-col-widths]{table-layout:fixed}.markdown-body th,.markdown-body td{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);text-align:left}.markdown-body th{background:var(--color-bg-subtle);white-space:nowrap;font-weight:600}.markdown-body th>p:last-of-type,.markdown-body th>ul:last-of-type,.markdown-body th>ol:last-of-type,.markdown-body th>blockquote:last-of-type,.markdown-body td>p:last-of-type,.markdown-body td>ul:last-of-type,.markdown-body td>ol:last-of-type,.markdown-body td>blockquote:last-of-type{margin-bottom:0}.markdown-body table.programming-paradigm-comparison{border-collapse:separate;border-spacing:var(--space-4) 0;margin-inline:calc(var(--space-4) * -1);font-size:var(--text-base);line-height:1.55}.markdown-body table.programming-paradigm-comparison th,.markdown-body table.programming-paradigm-comparison td{padding:var(--space-3) 0;border:0;border-bottom:1px solid var(--color-border);vertical-align:top;background:0 0}.markdown-body table.programming-paradigm-comparison th:first-child,.markdown-body table.programming-paradigm-comparison td:first-child{width:25%}.markdown-body table.programming-paradigm-comparison th:not(:first-child),.markdown-body table.programming-paradigm-comparison td:not(:first-child){width:37.5%}.markdown-body table.programming-paradigm-comparison tr:last-child td{border-bottom:0}.markdown-body table.programming-paradigm-comparison p{margin:0}.markdown-body img{border-radius:var(--radius-lg);border:1px solid var(--color-border);margin:var(--space-4) 0}.markdown-body .content-image{max-width:100%;margin-block:var(--space-4);display:block}.markdown-body .content-image.align-left{margin-right:auto}.markdown-body .content-image.align-center{margin-inline:auto}.markdown-body .content-image.align-right{margin-left:auto}.markdown-body .content-image img{width:100%;margin:0}.markdown-body .link-preview-card{width:100%;max-width:560px;margin:var(--space-4) auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-subtle);color:var(--color-text);grid-template-columns:minmax(0,1fr);text-decoration:none;display:grid;overflow:hidden}.markdown-body a.link-preview-card{border-bottom:1px solid var(--color-border);color:var(--color-text)}.markdown-body a.link-preview-card:after{display:none}.markdown-body .link-preview-card:hover{border-color:var(--color-accent);text-decoration:none}.markdown-body .link-preview-image{aspect-ratio:1.91;border:0;border-bottom:1px solid var(--color-border);object-fit:cover;border-radius:0;width:100%;margin:0;display:block}.markdown-body .link-preview-favicon{width:40px;height:40px;margin:0 var(--space-2) 0 0;object-fit:contain;background:50%/contain no-repeat;border:0;border-radius:8px;grid-row:1/span 3;align-self:center;display:block}.markdown-body .link-preview-body{gap:var(--space-1);min-width:0;padding:var(--space-3) var(--space-4);display:grid}.markdown-body .link-preview-body:has(.link-preview-favicon){grid-template-columns:auto minmax(0,1fr)}.markdown-body .link-preview-body:has(.link-preview-favicon)>:not(.link-preview-favicon){grid-column:2}.markdown-body .link-preview-site{color:var(--color-text-muted);font-size:var(--text-xs)}.markdown-body .link-preview-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.markdown-body .link-preview-description{color:var(--color-text-muted);font-size:var(--text-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.markdown-body td[data-border-edges=none],.markdown-body th[data-border-edges=none]{border-style:none!important}.markdown-body td[data-border-edges=top],.markdown-body th[data-border-edges=top]{border-width:1px 0 0!important}.markdown-body td[data-border-edges=bottom],.markdown-body th[data-border-edges=bottom]{border-width:0 0 1px!important}.markdown-body td[data-border-edges=left],.markdown-body th[data-border-edges=left]{border-width:0 0 0 1px!important}.markdown-body td[data-border-edges=right],.markdown-body th[data-border-edges=right]{border-width:0 1px 0 0!important}.markdown-body .diagram-figure{margin:var(--space-5) 0;border-radius:calc(var(--radius-lg) * 2);background:0 0;overflow:hidden}.markdown-body .diagram-figure img{border-radius:inherit;border:0;width:100%;min-width:0;margin:0;display:block}.markdown-body .diagram-accessible{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.markdown-body hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-6) 0}.markdown-body h2,.markdown-body h3,.markdown-body h4{scroll-margin-top:calc(var(--header-height) + var(--space-4))}.markdown-body .katex-display{padding:var(--space-2) 0}.markdown-body .katex{font-size:1.05em}.markdown-body .math-inline{vertical-align:middle;line-height:1.2;display:inline-block}.markdown-body p:has(.math-inline),.markdown-body li:has(.math-inline),.markdown-body td:has(.math-inline),.markdown-body th:has(.math-inline){line-height:1.9}.markdown-body .math-display{margin:var(--space-4) 0;overflow-x:auto}.markdown-body .math-display .katex-display{margin:0}.markdown-body .katex-error,.markdown-body .math-error{color:#dc2626;font-family:var(--font-mono)}.markdown-body .function-plot{margin:var(--space-5) 0}.markdown-body .function-plot-title{margin:0 0 var(--space-2);color:var(--color-text);font-size:var(--text-lg);font-weight:700;line-height:var(--leading-tight);text-align:center}.markdown-body .function-plot-stage{border:.5px solid var(--plot-control-edge);background:var(--plot-surface);touch-action:auto;border-radius:14px;position:relative;overflow:hidden;box-shadow:0 1px 3px #0000000f}.markdown-body .function-plot-stage.is-pannable{cursor:grab;touch-action:none}.markdown-body .function-plot-stage.is-pannable.is-panning{cursor:grabbing}.markdown-body .plot-svg{width:100%;height:auto;display:block}.markdown-body .plot-area{fill:#0000}.markdown-body .plot-grid-line{stroke:var(--plot-grid);stroke-width:1px}.markdown-body .plot-axis{stroke:var(--plot-axis);stroke-width:1.5px}.markdown-body .plot-tick{fill:var(--color-text-muted);font-size:12px;font-family:var(--font-sans)}.markdown-body .plot-tick-x{text-anchor:middle}.markdown-body .plot-tick-y{text-anchor:end}.markdown-body .plot-axis-title{fill:var(--color-text-muted);font-size:13px;font-family:var(--font-sans);text-anchor:middle}.markdown-body .plot-legend-box{fill:var(--plot-surface);stroke:var(--color-border);stroke-width:1px;opacity:.94}.markdown-body .plot-point,.markdown-body .plot-series{transform-box:fill-box;transform-origin:50%}.markdown-body .plot-labels{pointer-events:none;position:absolute;inset:0}.markdown-body .plot-label{z-index:1;white-space:nowrap;text-shadow:0 0 3px var(--plot-surface), 0 0 3px var(--plot-surface), 0 0 3px var(--plot-surface), 0 0 3px var(--plot-surface);font-size:.85rem;position:absolute;transform:translate(-50%,-50%)}.markdown-body .plot-label-point,.markdown-body .plot-label-annotation{border:.5px solid var(--plot-control-edge);background:color-mix(in srgb, var(--plot-surface) 96%, transparent);-webkit-backdrop-filter:saturate(180%)blur(14px);color:var(--color-text);text-shadow:none;border-radius:999px;padding:4px 9px;box-shadow:0 2px 10px #0000001f}.markdown-body .plot-label.is-left{transform:translateY(-50%)}.markdown-body .plot-tip{z-index:2;border:.5px solid var(--plot-control-edge);background:color-mix(in srgb, var(--plot-surface) 82%, transparent);-webkit-backdrop-filter:saturate(180%)blur(20px);color:var(--color-text);font-size:.78rem;font-family:var(--font-mono);white-space:nowrap;pointer-events:none;border-radius:10px;padding:5px 10px;position:absolute;box-shadow:0 4px 16px #00000024}.markdown-body .plot-tip[hidden]{display:none}.markdown-body .plot-tip-coord{color:var(--color-text-muted)}.markdown-body .plot-curve-hit,.markdown-body .plot-point-hit{cursor:pointer}.markdown-body .function-plot-controls{z-index:3;background:color-mix(in srgb, var(--plot-control-track) 88%, transparent);-webkit-backdrop-filter:saturate(180%)blur(12px);box-shadow:inset 0 0 0 .5px var(--plot-control-edge), 0 2px 8px #0000001a;opacity:.55;border-radius:999px;align-items:center;gap:2px;padding:2px;transition:opacity .2s cubic-bezier(.32,.72,0,1);display:flex;position:absolute;top:8px;right:8px}.markdown-body .function-plot:hover .function-plot-controls,.markdown-body .function-plot-controls:focus-within{opacity:1}@media (hover:none){.markdown-body .function-plot-controls{opacity:1}}.markdown-body .function-plot-icon{width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;padding:0;transition:background .22s cubic-bezier(.32,.72,0,1),color .22s cubic-bezier(.32,.72,0,1),transform .22s cubic-bezier(.32,.72,0,1);position:relative}.markdown-body .function-plot-icon:hover{color:var(--color-text);background:var(--plot-control-hover)}.markdown-body .function-plot-icon:active{transform:scale(.92)}.markdown-body .function-plot-icon:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.markdown-body .function-plot-icon.is-active{background:var(--plot-control-thumb);color:var(--color-accent);box-shadow:0 1px 3px #00000024,0 0 0 .5px #0000000a}.markdown-body .icon-pause:before,.markdown-body .icon-pause:after{content:"";background:currentColor;border-radius:1px;width:3px;height:12px;position:absolute;top:8px}.markdown-body .icon-pause:before{left:10px}.markdown-body .icon-pause:after{right:10px}.markdown-body .function-plot-play.is-paused .icon-pause:before{background:0 0;border-top:7px solid #0000;border-bottom:7px solid #0000;border-left:11px solid;border-radius:0;width:0;height:0;top:7px;left:11px}.markdown-body .function-plot-play.is-paused .icon-pause:after{display:none}.markdown-body .icon-restart:before,.markdown-body .icon-reset:before{content:"↻";font-size:20px;line-height:28px}.markdown-body .icon-restart:after{content:"";border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:7px solid;position:absolute;top:9px;left:12px}.markdown-body .icon-reset:before{content:"⌂";font-size:17px}.markdown-body .icon-move:before{content:"✥";font-size:17px;line-height:28px}.markdown-body .function-plot-switch{height:30px;color:var(--color-text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;align-items:center;padding:0 12px;transition:background .22s cubic-bezier(.32,.72,0,1),color .22s cubic-bezier(.32,.72,0,1),transform .22s cubic-bezier(.32,.72,0,1);display:inline-flex}.markdown-body .function-plot-switch input{opacity:0;pointer-events:none;position:absolute}.markdown-body .function-plot-switch>span{display:none}.markdown-body .function-plot-switch b{font-size:.78rem;font-weight:600}.markdown-body .function-plot-switch:active{transform:scale(.94)}.markdown-body .function-plot-switch:hover{background:var(--plot-control-hover)}.markdown-body .function-plot-switch:has(input:checked){background:var(--color-lime);color:var(--color-on-brand)}.markdown-body .function-plot-switch:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:1px}.markdown-body .function-plot.hide-annotations .plot-label,.markdown-body .function-plot.hide-annotations .plot-annotation-arrow,.markdown-body .function-plot.hide-annotations .plot-point-leader,.markdown-body .function-plot.hide-annotations .plot-legend{display:none}@media (width<=620px){.markdown-body .function-plot-controls{gap:0;top:6px;right:6px}.markdown-body .function-plot-icon{width:26px;height:26px}.markdown-body .function-plot-switch b{display:none}}@media (prefers-reduced-motion:reduce){.markdown-body .function-plot .plot-point,.markdown-body .function-plot .plot-connect,.markdown-body .function-plot .plot-label{opacity:1!important}}.markdown-body>:last-child{margin-bottom:0}.markdown-body .plot-point-leader{opacity:.75}
