.prose{max-width:80ch;color:var(--foreground)}.prose a{color:hsl(var(--primary));font-weight:500;text-decoration:underline}.prose strong{color:var(--foreground);font-weight:600}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--foreground);margin-top:2em;margin-bottom:1em;font-weight:700;line-height:1.3}.prose h1{margin-top:0;font-size:2.25em}.prose h2{font-size:1.5em}.prose h3{font-size:1.25em}.prose p,.prose ul,.prose ol{margin-top:1.25em;margin-bottom:1.25em}.prose ul{padding-left:1.5em;list-style-type:disc}.prose ol{padding-left:1.5em;list-style-type:decimal}.prose li{margin-bottom:.5em}.prose li>ul,.prose li>ol{margin-top:.5em;margin-bottom:.5em}.prose img{border-radius:.5rem;margin-top:2em;margin-bottom:2em}.prose .mermaid-frame{scrollbar-width:thin;scrollbar-color:hsl(var(--muted-foreground) / .3) transparent;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;border-radius:.5rem;justify-content:safe center;width:100%;min-width:0;max-width:100%;margin-block:2em;display:flex;position:relative;overflow:auto hidden}.prose .mermaid-frame>svg[id^=mermaid-]{flex:none;height:auto;display:block}.mermaid-frame svg[id^=mermaid-]{font-family:ui-sans-serif,system-ui,sans-serif}.mermaid-frame svg[id^=mermaid-] foreignObject p,.mermaid-frame svg[id^=mermaid-] foreignObject div{background-color:#0000!important;margin:0!important}.mermaid-frame svg[id^=mermaid-] .cluster rect{fill:hsl(var(--muted) / .4)!important;stroke:hsl(var(--border))!important;stroke-width:1px!important}.mermaid-frame svg[id^=mermaid-] .cluster text,.mermaid-frame svg[id^=mermaid-] .cluster span,.mermaid-frame svg[id^=mermaid-] .cluster-label text,.mermaid-frame svg[id^=mermaid-] .cluster-label span,.mermaid-frame svg[id^=mermaid-] .cluster-label span p{fill:hsl(var(--foreground))!important;color:hsl(var(--foreground))!important;background-color:#0000!important}.dark .mermaid-frame svg[id^=mermaid-] .messageText,.dark .mermaid-frame svg[id^=mermaid-] .messageText>tspan,.dark .mermaid-frame svg[id^=mermaid-] .labelText,.dark .mermaid-frame svg[id^=mermaid-] .labelText>tspan,.dark .mermaid-frame svg[id^=mermaid-] .loopText,.dark .mermaid-frame svg[id^=mermaid-] .loopText>tspan,.dark .mermaid-frame svg[id^=mermaid-] .sectionTitle,.dark .mermaid-frame svg[id^=mermaid-] .sectionTitle>tspan{fill:hsl(var(--foreground))!important;color:hsl(var(--foreground))!important}.dark .mermaid-frame svg[id^=mermaid-] rect.actor,.dark .mermaid-frame svg[id^=mermaid-] rect.actor.outer-path,.dark .mermaid-frame svg[id^=mermaid-] .labelBox{fill:hsl(var(--muted))!important;stroke:hsl(var(--muted-foreground) / .6)!important}.dark .mermaid-frame svg[id^=mermaid-] text.actor,.dark .mermaid-frame svg[id^=mermaid-] text.actor>tspan,.dark .mermaid-frame svg[id^=mermaid-] text.actor-box,.dark .mermaid-frame svg[id^=mermaid-] text.actor-box>tspan{fill:hsl(var(--foreground))!important}.dark .mermaid-frame svg[id^=mermaid-] .actor-line{stroke:hsl(var(--muted-foreground) / .6)!important}.dark .mermaid-frame svg[id^=mermaid-] .messageLine0,.dark .mermaid-frame svg[id^=mermaid-] .messageLine1{stroke:hsl(var(--muted-foreground))!important;fill:none!important}.dark .mermaid-frame svg[id^=mermaid-] [id$=-arrowhead] path,.dark .mermaid-frame svg[id^=mermaid-] [id$=-crosshead] path,.dark .mermaid-frame svg[id^=mermaid-] .marker,.dark .mermaid-frame svg[id^=mermaid-] .marker.cross,.dark .mermaid-frame svg[id^=mermaid-] [id$=-sequencenumber]{stroke:hsl(var(--muted-foreground))!important;fill:hsl(var(--muted-foreground))!important}.dark .mermaid-frame svg[id^=mermaid-] g.node>rect,.dark .mermaid-frame svg[id^=mermaid-] g.node>polygon,.dark .mermaid-frame svg[id^=mermaid-] g.node>circle,.dark .mermaid-frame svg[id^=mermaid-] g.node>path,.dark .mermaid-frame svg[id^=mermaid-] g.node g.basic.label-container>path,.dark .mermaid-frame svg[id^=mermaid-] g.node g.basic.label-container>rect,.dark .mermaid-frame svg[id^=mermaid-] g.node g.outer-path>path,.dark .mermaid-frame svg[id^=mermaid-] g.node rect.basic.label-container{fill:hsl(var(--muted))!important;stroke:hsl(var(--muted-foreground) / .6)!important}.dark .mermaid-frame svg[id^=mermaid-] .nodeLabel,.dark .mermaid-frame svg[id^=mermaid-] .nodeLabel>p,.dark .mermaid-frame svg[id^=mermaid-] foreignObject .nodeLabel,.dark .mermaid-frame svg[id^=mermaid-] foreignObject p,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel>p,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel>tspan,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel foreignObject,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel foreignObject p{color:hsl(var(--foreground))!important;fill:hsl(var(--foreground))!important}.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel rect,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel .label-container,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel .labelBkg,.dark .mermaid-frame svg[id^=mermaid-] .edgeLabel span.edgeLabel{fill:hsl(var(--background))!important;background-color:hsl(var(--background))!important}.dark .mermaid-frame svg[id^=mermaid-] .flowchart-link,.dark .mermaid-frame svg[id^=mermaid-] path.flowchart-link{stroke:hsl(var(--muted-foreground))!important;fill:none!important}.dark .mermaid-frame svg[id^=mermaid-] [id$=-pointEnd] path,.dark .mermaid-frame svg[id^=mermaid-] [id$=-pointStart] path,.dark .mermaid-frame svg[id^=mermaid-] [id$=-circleEnd] circle,.dark .mermaid-frame svg[id^=mermaid-] [id$=-circleStart] circle{stroke:hsl(var(--muted-foreground))!important;fill:hsl(var(--muted-foreground))!important}.dark .mermaid-frame svg[id^=mermaid-] path.transition,.dark .mermaid-frame svg[id^=mermaid-] g.edgePaths path.transition{stroke:hsl(var(--muted-foreground))!important;fill:none!important}.mermaid-frame svg[id^=mermaid-] path.transition,.mermaid-frame svg[id^=mermaid-] g.edgePaths path.transition{stroke:hsl(var(--muted-foreground))!important;stroke-width:1.5px!important;fill:none!important}.mermaid-frame svg[id^=mermaid-] g.note,.mermaid-frame svg[id^=mermaid-] rect.note,.mermaid-frame svg[id^=mermaid-] line.note-line{fill:hsl(var(--accent))!important;stroke:hsl(var(--muted-foreground) / .6)!important}.mermaid-frame svg[id^=mermaid-] text.noteText,.mermaid-frame svg[id^=mermaid-] text.noteText>tspan,.mermaid-frame svg[id^=mermaid-] .noteText foreignObject p{fill:hsl(var(--accent-foreground))!important;color:hsl(var(--accent-foreground))!important}.mermaid-frame svg[id^=mermaid-] rect.activation0,.mermaid-frame svg[id^=mermaid-] rect.activation1,.mermaid-frame svg[id^=mermaid-] rect.activation2{fill:hsl(var(--primary) / .5)!important;stroke:hsl(var(--primary))!important}.mermaid-frame svg[id^=mermaid-] g.node>rect,.mermaid-frame svg[id^=mermaid-] g.node>polygon,.mermaid-frame svg[id^=mermaid-] g.node>circle,.mermaid-frame svg[id^=mermaid-] g.node>path,.mermaid-frame svg[id^=mermaid-] g.node g.basic.label-container>path,.mermaid-frame svg[id^=mermaid-] g.node g.basic.label-container>rect,.mermaid-frame svg[id^=mermaid-] g.node g.outer-path>path,.mermaid-frame svg[id^=mermaid-] g.node rect.basic.label-container{fill:hsl(var(--card))!important;stroke:hsl(var(--muted-foreground) / .4)!important;stroke-width:1.25px!important}.mermaid-frame svg[id^=mermaid-] .nodeLabel,.mermaid-frame svg[id^=mermaid-] .nodeLabel>p,.mermaid-frame svg[id^=mermaid-] foreignObject .nodeLabel,.mermaid-frame svg[id^=mermaid-] foreignObject p,.mermaid-frame svg[id^=mermaid-] text.nodeLabel,.mermaid-frame svg[id^=mermaid-] text.nodeLabel>tspan{color:hsl(var(--foreground))!important;fill:hsl(var(--foreground))!important}.mermaid-frame svg[id^=mermaid-] .flowchart-link,.mermaid-frame svg[id^=mermaid-] path.flowchart-link{stroke:hsl(var(--muted-foreground))!important;stroke-width:1.5px!important;fill:none!important}.mermaid-frame svg[id^=mermaid-] [id$=-pointEnd] path,.mermaid-frame svg[id^=mermaid-] [id$=-pointStart] path,.mermaid-frame svg[id^=mermaid-] [id$=-circleEnd] circle,.mermaid-frame svg[id^=mermaid-] [id$=-circleStart] circle{stroke:hsl(var(--muted-foreground))!important;fill:hsl(var(--muted-foreground))!important}.mermaid-frame svg[id^=mermaid-] .edgeLabel,.mermaid-frame svg[id^=mermaid-] .edgeLabel>p,.mermaid-frame svg[id^=mermaid-] .edgeLabel foreignObject,.mermaid-frame svg[id^=mermaid-] .edgeLabel foreignObject p{color:hsl(var(--foreground))!important;fill:hsl(var(--foreground))!important}.mermaid-frame svg[id^=mermaid-] .edgeLabel rect,.mermaid-frame svg[id^=mermaid-] .edgeLabel .label-container,.mermaid-frame svg[id^=mermaid-] .edgeLabel .labelBkg,.mermaid-frame svg[id^=mermaid-] .edgeLabel span.edgeLabel{fill:hsl(var(--background))!important;background-color:hsl(var(--background))!important}.mermaid-frame svg[id^=mermaid-] rect.actor,.mermaid-frame svg[id^=mermaid-] rect.actor.outer-path,.mermaid-frame svg[id^=mermaid-] .labelBox{fill:hsl(var(--card))!important;stroke:hsl(var(--border))!important}.mermaid-frame svg[id^=mermaid-] .actor-line{stroke:hsl(var(--muted-foreground) / .5)!important}.mermaid-frame svg[id^=mermaid-] .messageLine0,.mermaid-frame svg[id^=mermaid-] .messageLine1{stroke:hsl(var(--muted-foreground))!important;fill:none!important}.mermaid-frame svg[id^=mermaid-] [id$=-arrowhead] path,.mermaid-frame svg[id^=mermaid-] [id$=-crosshead] path,.mermaid-frame svg[id^=mermaid-] .marker,.mermaid-frame svg[id^=mermaid-] .marker.cross{stroke:hsl(var(--muted-foreground))!important;fill:hsl(var(--muted-foreground))!important}.mermaid-frame svg[id^=mermaid-] text.actor,.mermaid-frame svg[id^=mermaid-] text.actor>tspan,.mermaid-frame svg[id^=mermaid-] text.actor-box,.mermaid-frame svg[id^=mermaid-] text.actor-box>tspan,.mermaid-frame svg[id^=mermaid-] .messageText,.mermaid-frame svg[id^=mermaid-] .messageText>tspan,.mermaid-frame svg[id^=mermaid-] .labelText,.mermaid-frame svg[id^=mermaid-] .labelText>tspan,.mermaid-frame svg[id^=mermaid-] .loopText,.mermaid-frame svg[id^=mermaid-] .loopText>tspan{fill:hsl(var(--foreground))!important}.prose .mermaid-frame:after{content:"";background:linear-gradient(to right, transparent, hsl(var(--background)));pointer-events:none;flex:0 0 2rem;align-self:stretch;margin-left:-2rem;position:sticky;right:0}.prose code{color:hsl(var(--primary));background-color:hsl(var(--muted));border-radius:.25em;padding:.2em .4em;font-size:.875em}.prose pre{background-color:hsl(var(--muted));border-radius:.5rem;padding:1em;overflow-x:auto}.prose pre code{color:inherit;background-color:#0000;padding:0}.prose blockquote{border-left:4px solid hsl(var(--border));padding-left:1em;font-style:italic}.dark .prose{color:hsl(var(--foreground))}.dark .prose a{color:hsl(var(--primary))}.dark .prose strong{color:hsl(var(--foreground))}.dark .prose code{color:hsl(var(--primary));background-color:hsl(var(--muted))}.dark .prose pre{background-color:hsl(var(--muted))}.prose .mermaid-wrapper{border:1px solid hsl(var(--border));background:hsl(var(--card) / .4);border-radius:.5rem;margin-block:2em;transition:box-shadow .2s,border-color .2s;position:relative;overflow:hidden}.prose .mermaid-wrapper:hover,.prose .mermaid-wrapper:focus-within{border-color:hsl(var(--border));box-shadow:0 8px 32px -16px hsl(var(--foreground) / .25)}.prose .mermaid-wrapper>.mermaid-frame{border:none;border-radius:0;margin-block:0}.prose .mermaid-frame{cursor:zoom-in}.prose .mermaid-wrapper__toolbar{border-bottom:1px solid hsl(var(--border));background:hsl(var(--muted) / .4);justify-content:flex-end;align-items:center;gap:.5rem;padding:.4rem .5rem;display:flex}.prose .mermaid-frame__expand{color:hsl(var(--muted-foreground));cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.4rem;align-items:center;gap:.4rem;padding:.35rem .65rem;font-size:.75rem;font-weight:500;line-height:1;transition:background .15s,color .15s,border-color .15s,transform .15s;display:inline-flex}.prose .mermaid-frame__expand:hover,.prose .mermaid-frame__expand:focus-visible{background:hsl(var(--accent));color:hsl(var(--accent-foreground));border-color:hsl(var(--border));outline:none}.prose .mermaid-frame__expand:active{transform:translateY(1px)}html.mermaid-modal-open,html.mermaid-modal-open body{overflow:hidden}.mermaid-modal{z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mermaid-modal[hidden]{display:none!important}.mermaid-modal__backdrop{background:hsl(var(--background) / .85);-webkit-backdrop-filter:blur(8px);cursor:zoom-out;position:absolute;inset:0}.mermaid-modal__panel{background:hsl(var(--card));border:1px solid hsl(var(--border));width:min(96vw,1400px);height:min(92vh,900px);box-shadow:0 24px 64px -16px hsl(var(--foreground) / .4);border-radius:.75rem;flex-direction:column;display:flex;position:relative;overflow:hidden}.mermaid-modal__toolbar{border-bottom:1px solid hsl(var(--border));background:hsl(var(--card));flex-shrink:0;align-items:center;gap:.4rem;padding:.6rem .75rem;display:flex}.mermaid-modal__btn{width:2rem;height:2rem;color:hsl(var(--foreground));cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.4rem;justify-content:center;align-items:center;transition:background .12s,border-color .12s;display:inline-flex}.mermaid-modal__btn:hover{background:hsl(var(--muted));border-color:hsl(var(--border))}.mermaid-modal__btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.mermaid-modal__sep{flex:1}.mermaid-modal__stage{background:linear-gradient(0deg, hsl(var(--muted) / .4), hsl(var(--muted) / .4));background-image:linear-gradient(hsl(var(--border) / .4) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--border) / .4) 1px, transparent 1px);cursor:grab;background-size:24px 24px;flex:auto;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.mermaid-modal__stage:active{cursor:grabbing}.mermaid-modal__svg{transform-origin:0 0;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.mermaid-modal__svg svg{width:100%;max-width:none;height:100%;max-height:none}.mermaid-modal__hint{background:hsl(var(--card) / .9);border:1px solid hsl(var(--border));color:hsl(var(--muted-foreground));pointer-events:none;white-space:nowrap;-webkit-backdrop-filter:blur(4px);border-radius:999px;padding:.35rem .7rem;font-size:.7rem;position:absolute;bottom:.75rem;left:50%;transform:translate(-50%)}@media (width<=640px){.mermaid-modal__hint{padding:.25rem .5rem;font-size:.65rem}.mermaid-modal__panel{border-radius:.5rem}}@media (prefers-reduced-motion:reduce){.prose .mermaid-frame,.prose .mermaid-frame__expand,.mermaid-modal__btn{transition:none}}
