.giscus-frame{width:100%}figure[data-rehype-pretty-code-figure]{margin-block-start:var(--typeset-flow,1.4em)}pre[data-theme]{background-color:var(--code-surface)}pre[data-theme],pre[data-theme] span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);-webkit-text-decoration:var(--shiki-dark-text-decoration);-webkit-text-decoration:var(--shiki-dark-text-decoration);-webkit-text-decoration:var(--shiki-dark-text-decoration);text-decoration:var(--shiki-dark-text-decoration)}pre[data-theme] span{background-color:#0000}pre[data-theme] [data-line]{border-inline-start:2px solid #0000;padding-inline:1rem}pre[data-theme] [data-highlighted-line]{border-inline-start-color:var(--primary);background-color:#ffffff0f}pre[data-theme] [data-highlighted-chars]{border-radius:var(--radius-sm);background-color:#ffffff1a;padding:.1em .25em}code[data-line-numbers]{counter-reset:line}code[data-line-numbers]>[data-line]:before{color:#5c5c5c;content:counter(line);counter-increment:line;text-align:right;width:1rem;margin-inline-end:1.25rem;display:inline-block}code[data-line-numbers-max-digits="3"]>[data-line]:before{width:1.75rem}[data-rehype-pretty-code-title]{border:1px solid var(--code-border);background:var(--code-surface);color:#a39d93;font-family:var(--font-mono);border-block-end:0;border-start-start-radius:var(--radius-lg);border-start-end-radius:var(--radius-lg);padding:.6rem 1rem;font-size:.8125rem}[data-rehype-pretty-code-title]+pre{border-start-start-radius:0;border-start-end-radius:0;margin-block-start:0}[data-rehype-pretty-code-caption]{color:var(--muted-foreground);font-family:var(--font-mono);margin-block-start:.75em;font-size:.8125rem}:not(pre)>code[data-theme]{border-radius:var(--radius-sm);background:var(--muted);font-family:var(--font-mono);padding:.15em .35em;font-size:.875em}:not(pre)>code[data-theme],:not(pre)>code[data-theme] span{color:var(--shiki-light)}.dark :not(pre)>code[data-theme],.dark :not(pre)>code[data-theme] span{color:var(--shiki-dark)}.viz-figure{--viz-bg:#0e0e0e;--viz-surface:var(--code-surface);--viz-border:var(--code-border);--viz-text:#ede9e1;--viz-muted:#a39d93;--viz-accent:#2dd4bf;--viz-success:#3fb950;--viz-danger:#f87171;--viz-owner-0:#58a6ff;--viz-owner-1:#bc8cff;--viz-owner-2:#3fb950;--viz-owner-3:#e3b341;--viz-owner-4:#39c5cf;--viz-owner-5:#f778ba;--viz-font-mono:var(--font-mono);--viz-motion:.42s var(--ease-out-soft);z-index:1;border:1px solid var(--viz-border);background:var(--viz-surface);border-radius:10px;margin:2.5rem 0;padding:0;position:relative;overflow:hidden}.viz-stage{background:var(--viz-bg);width:100%;height:auto;font-family:var(--viz-font-mono);display:block}.viz-stage-frame{overscroll-behavior-inline:contain;background:var(--viz-bg);width:100%;overflow-x:auto}.viz-caption{border-top:1px solid var(--viz-border);color:var(--viz-muted);padding:.75rem 1rem;font-size:.875rem;line-height:1.5}.viz-caption strong{color:var(--viz-text)}.viz-stack{display:grid}.viz-stack>*{visibility:hidden;grid-area:1/1;margin:0}.viz-stack>[data-active]{visibility:visible}.viz-node{fill:var(--viz-surface);stroke:var(--viz-border);stroke-width:1px;transition:stroke var(--viz-motion), fill var(--viz-motion)}.viz-node-group{transition:transform var(--viz-motion), opacity var(--viz-motion)}.viz-node-title{fill:var(--viz-text);font-size:12px;font-weight:500}.viz-node-subtitle{fill:var(--viz-muted);font-size:10px}.viz-node-group[data-tone=accent] .viz-node{stroke:var(--viz-accent)}.viz-node-group[data-tone=success] .viz-node{stroke:var(--viz-success)}.viz-node-group[data-tone=danger] .viz-node{stroke:var(--viz-danger)}.viz-node-group[data-tone=muted] .viz-node{stroke:var(--viz-border)}.viz-node-group[data-ghost]{opacity:.35}.viz-node-group[data-ghost] .viz-node{stroke-dasharray:3 3}.viz-node-group[data-active] .viz-node{fill:var(--viz-accent)}@supports (color:color-mix(in lab, red, red)){.viz-node-group[data-active] .viz-node{fill:color-mix(in srgb, var(--viz-accent) 12%, var(--viz-surface))}}.viz-node-group[data-active] .viz-node{stroke-width:2px}.viz-node-group[data-tone=success][data-active] .viz-node{fill:var(--viz-success)}@supports (color:color-mix(in lab, red, red)){.viz-node-group[data-tone=success][data-active] .viz-node{fill:color-mix(in srgb, var(--viz-success) 14%, var(--viz-surface))}}.viz-node-group[data-tone=danger][data-active] .viz-node{fill:var(--viz-danger)}@supports (color:color-mix(in lab, red, red)){.viz-node-group[data-tone=danger][data-active] .viz-node{fill:color-mix(in srgb, var(--viz-danger) 16%, var(--viz-surface))}}.viz-edge{fill:none;stroke:var(--viz-border);stroke-width:1.5px;transition:stroke var(--viz-motion), stroke-width var(--viz-motion)}.viz-edge[data-variant=dashed]{stroke-dasharray:4 4}.viz-edge-arrow{fill:var(--viz-border);transition:fill var(--viz-motion)}.viz-edge-label{fill:var(--viz-muted);font-size:10px}.viz-edge-group[data-tone=accent] .viz-edge,.viz-edge-group[data-active] .viz-edge{stroke:var(--viz-accent);stroke-width:2px}.viz-edge-group[data-tone=accent] .viz-edge-arrow,.viz-edge-group[data-active] .viz-edge-arrow{fill:var(--viz-accent)}.viz-edge-group[data-tone=danger] .viz-edge{stroke:var(--viz-danger)}.viz-edge-group[data-tone=danger] .viz-edge-arrow,.viz-edge-group[data-tone=danger] .viz-edge-label{fill:var(--viz-danger)}.viz-edge-group[data-tone=muted] .viz-edge{stroke:var(--viz-border);opacity:.5}.viz-edge-group[data-tone=muted] .viz-edge-arrow{fill:var(--viz-border);opacity:.5}.viz-edge-group[data-active] .viz-edge-label{fill:var(--viz-text)}.viz-label{fill:var(--viz-muted);letter-spacing:.08em;font-size:10px}.viz-badge rect{fill:var(--viz-accent)}@supports (color:color-mix(in lab, red, red)){.viz-badge rect{fill:color-mix(in srgb, var(--viz-accent) 18%, transparent)}}.viz-badge rect{stroke:var(--viz-accent);stroke-width:1px}.viz-badge text{fill:var(--viz-text);font-size:10px}.viz-badge[data-tone=success] rect{fill:var(--viz-success)}@supports (color:color-mix(in lab, red, red)){.viz-badge[data-tone=success] rect{fill:color-mix(in srgb, var(--viz-success) 18%, transparent)}}.viz-badge[data-tone=success] rect{stroke:var(--viz-success)}.viz-badge[data-tone=danger] rect{fill:var(--viz-danger)}@supports (color:color-mix(in lab, red, red)){.viz-badge[data-tone=danger] rect{fill:color-mix(in srgb, var(--viz-danger) 20%, transparent)}}.viz-badge[data-tone=danger] rect{stroke:var(--viz-danger)}.viz-packet circle{fill:var(--viz-accent);transition:transform var(--viz-motion)}.viz-packet[data-tone=danger] circle{fill:var(--viz-danger)}.viz-packet{transition:transform var(--viz-motion)}.viz-packet-label{fill:var(--viz-text);font-size:10px}.viz-badge[data-ghost] rect{fill:none;stroke:var(--viz-border)}.viz-badge[data-ghost] text{fill:var(--viz-muted)}.viz-figure [data-owner="0"]{--owner:var(--viz-owner-0)}.viz-figure [data-owner="1"]{--owner:var(--viz-owner-1)}.viz-figure [data-owner="2"]{--owner:var(--viz-owner-2)}.viz-figure [data-owner="3"]{--owner:var(--viz-owner-3)}.viz-figure [data-owner="4"]{--owner:var(--viz-owner-4)}.viz-figure [data-owner="5"]{--owner:var(--viz-owner-5)}.viz-dot{transition:transform var(--viz-motion), opacity var(--viz-motion)}.viz-dot-core{fill:var(--owner,var(--viz-muted));stroke:var(--viz-bg);stroke-width:1px;transition:fill var(--viz-motion)}.viz-dot[data-tone=accent] .viz-dot-core{fill:var(--owner,var(--viz-accent))}.viz-dot[data-tone=success] .viz-dot-core{fill:var(--owner,var(--viz-success))}.viz-dot[data-tone=danger] .viz-dot-core{fill:var(--viz-danger)}.viz-dot[data-ghost]{opacity:.3}.viz-dot-halo{fill:none;stroke:var(--viz-accent);stroke-width:1.5px}.viz-dot-label{fill:var(--viz-muted);font-size:9px}.viz-bar-track{fill:var(--viz-text)}@supports (color:color-mix(in lab, red, red)){.viz-bar-track{fill:color-mix(in srgb, var(--viz-text) 5%, transparent)}}.viz-bar-fill{fill:var(--owner,var(--viz-muted));transition:width var(--viz-motion), fill var(--viz-motion)}.viz-bar[data-tone=accent] .viz-bar-fill{fill:var(--owner,var(--viz-accent))}.viz-bar[data-tone=success] .viz-bar-fill{fill:var(--owner,var(--viz-success))}.viz-bar[data-tone=danger] .viz-bar-fill{fill:var(--viz-danger)}.viz-bar[data-ghost] .viz-bar-fill{fill:var(--viz-border)}.viz-bar[data-ghost] .viz-bar-track{fill:none}.viz-bar-label,.viz-bar-value{font-size:10px}.viz-bar-label{fill:var(--viz-text)}.viz-bar-value{fill:var(--viz-muted)}.viz-tick{stroke:var(--owner,var(--viz-border));stroke-width:1.5px;transition:stroke var(--viz-motion)}.viz-tick[data-variant=dashed]{stroke-dasharray:3 3}.viz-tick[data-tone=muted]{stroke:var(--viz-border)}.viz-tick[data-tone=accent]{stroke:var(--viz-accent)}.viz-tick[data-tone=danger]{stroke:var(--viz-danger)}.viz-arc{fill:var(--owner,var(--viz-border))}@supports (color:color-mix(in lab, red, red)){.viz-arc{fill:color-mix(in srgb, var(--owner,var(--viz-border)) 26%, transparent)}}.viz-arc{stroke:var(--owner,var(--viz-border));stroke-width:1px;transition:fill var(--viz-motion), stroke var(--viz-motion), opacity var(--viz-motion)}.viz-arc[data-ghost]{fill:none;stroke:var(--viz-danger);stroke-width:1.5px;stroke-dasharray:4 3}.viz-ring-guide{fill:none;stroke:var(--viz-border);stroke-width:1px}.viz-panel-frame{fill:var(--viz-text)}@supports (color:color-mix(in lab, red, red)){.viz-panel-frame{fill:color-mix(in srgb, var(--viz-text) 4%, transparent)}}.viz-panel-frame{stroke:var(--viz-border);stroke-width:1px}.viz-panel-title{fill:var(--viz-muted);letter-spacing:.08em;font-size:10px}.viz-panel-rule{stroke:var(--viz-border);stroke-width:1px}.viz-panel-label{fill:var(--viz-muted);font-size:11px}.viz-panel-value{fill:var(--viz-text);font-size:11px}.viz-panel g[data-tone=success] .viz-panel-value{fill:var(--viz-success)}.viz-panel g[data-tone=danger] .viz-panel-value{fill:var(--viz-danger)}.viz-panel g[data-tone=accent] .viz-panel-value{fill:var(--viz-accent)}.viz-panel g[data-tone=muted] .viz-panel-value{fill:var(--viz-muted)}.viz-controls{border-top:1px solid var(--viz-border);background:var(--viz-surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.6rem .75rem;display:flex}.viz-controls-transport,.viz-controls-custom{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.viz-controls button{border:1px solid var(--viz-border);background:var(--viz-bg);min-width:30px;height:28px;color:var(--viz-text);font-family:var(--viz-font-mono);cursor:pointer;border-radius:5px;padding:0 .5rem;font-size:12px;transition:border-color .16s,background .16s}.viz-controls button:hover{border-color:var(--viz-accent)}.viz-controls button:focus-visible{outline:2px solid var(--viz-accent);outline-offset:2px}.viz-step-readout{color:var(--viz-muted);font-family:var(--viz-font-mono);align-items:baseline;gap:.3rem;margin-left:.35rem;font-size:11px;display:inline-flex}.viz-toggle{align-items:center;gap:.4rem;display:inline-flex}.viz-toggle-dot{border:1px solid var(--viz-muted);background:0 0;border-radius:50%;width:7px;height:7px;transition:background .16s,border-color .16s}.viz-toggle[data-checked]{border-color:var(--viz-accent)}.viz-toggle[data-checked] .viz-toggle-dot{background:var(--viz-accent);border-color:var(--viz-accent)}.viz-toggle[data-tone=danger][data-checked]{border-color:var(--viz-danger)}.viz-toggle[data-tone=danger][data-checked] .viz-toggle-dot{background:var(--viz-danger);border-color:var(--viz-danger)}.viz-slider{color:var(--viz-muted);font-family:var(--viz-font-mono);align-items:center;gap:.4rem;font-size:11px;display:inline-flex}.viz-slider input[type=range]{width:84px;accent-color:var(--viz-accent)}.viz-slider-value{min-width:2.4em;color:var(--viz-text)}.viz-slider[data-disabled]{opacity:.4}.viz-slider[data-disabled] input[type=range]{cursor:not-allowed}.viz-controls button:disabled{opacity:.4;cursor:not-allowed}.viz-controls button:disabled:hover{border-color:var(--viz-border)}@media (prefers-reduced-motion:reduce){.viz-node-group,.viz-node,.viz-edge,.viz-edge-arrow,.viz-packet,.viz-packet circle,.viz-dot,.viz-dot-core,.viz-bar-fill,.viz-tick,.viz-arc{transition:none!important}}@media (max-width:640px){.viz-controls{justify-content:flex-start;gap:.5rem .6rem;padding:.55rem .6rem}.viz-controls-custom{width:100%}.viz-slider input[type=range]{width:68px}.viz-slider-speed>span:first-child{display:none}}@media (pointer:coarse){.viz-controls{gap:.6rem .7rem}.viz-controls button{min-width:44px;height:40px}.viz-toggle{min-height:40px;padding:0 .6rem}.viz-slider input[type=range]{height:40px}}@media (max-width:39.999rem){.typeset .viz-figure{border-inline-width:0;border-radius:0;max-width:none;margin-inline:calc(50% - 50vw)}}@media (min-width:40rem){.typeset .viz-figure{width:min(62rem,100vw - 3rem);max-width:none;margin-left:50%;transform:translate(-50%)}}