.algo-viz{display:block;width:100%;max-width:640px;border:2px solid var(--accent);margin:25px auto;padding:0;position:relative}.algo-viz__caption{background:var(--accent);color:var(--background);font-weight:600;padding:6px 12px;font-size:.9em;margin:0;border-radius:0}.algo-viz__description{padding:8px 12px 0;margin:0;font-size:.85em;color:color-mix(in srgb,var(--foreground) 70%,transparent)}.algo-viz__stage{padding:16px;display:flex;justify-content:center}.algo-viz__stage svg{max-width:100%;height:auto;display:block;margin:0 auto}.algo-viz__stage:not(.is-animating) *{animation:none!important}.algo-viz__stage.is-paused *{animation-play-state:paused!important}.algo-viz__progress{height:3px;background:color-mix(in srgb,var(--accent) 20%,transparent);overflow:hidden;display:none}.algo-viz[data-state=playing] .algo-viz__progress,.algo-viz[data-state=paused] .algo-viz__progress,.algo-viz[data-state=done] .algo-viz__progress{display:block}.algo-viz__progress-bar{height:100%;width:0%;background:var(--accent)}.algo-viz[data-state=playing] .algo-viz__progress-bar,.algo-viz[data-state=paused] .algo-viz__progress-bar{animation:algo-viz-progress var(--duration) linear forwards}.algo-viz[data-state=paused] .algo-viz__progress-bar{animation-play-state:paused}.algo-viz[data-state=done] .algo-viz__progress-bar{width:100%}@keyframes algo-viz-progress{0%{width:0%}to{width:100%}}.algo-viz__controls{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid color-mix(in srgb,var(--accent) 40%,transparent);flex-wrap:wrap}.algo-viz__btn{font-family:inherit;font-size:.8em;font-weight:600;color:var(--accent);background:transparent;border:2px solid var(--accent);padding:4px 14px;cursor:pointer;transition:background .15s linear}.algo-viz__btn:hover{background:color-mix(in srgb,var(--accent) 15%,transparent)}.algo-viz__btn:focus-visible{outline:1px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){.algo-viz__stage *{animation-duration:.01ms!important;animation-delay:0ms!important}}.ag-bound[data-astro-cid-kk7qarsf]{fill:color-mix(in srgb,var(--foreground) 4%,transparent);stroke:color-mix(in srgb,var(--foreground) 15%,transparent);stroke-width:1;stroke-dasharray:4 3}.ms-svg{font-family:Fira Code,monospace;width:100%;max-width:640px}.ms-cell{fill:color-mix(in srgb,var(--foreground) 10%,transparent);stroke:color-mix(in srgb,var(--foreground) 30%,transparent);stroke-width:1.5}.ms-cell--active{fill:color-mix(in srgb,var(--accent) 20%,transparent);stroke:var(--accent);stroke-width:2}.ms-text{fill:var(--foreground);font-size:14px;font-family:Fira Code,monospace}.ms-label{fill:color-mix(in srgb,var(--foreground) 60%,transparent);font-size:11px;font-family:Fira Code,monospace;text-transform:uppercase;letter-spacing:.05em}.ms-line{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3;opacity:.6}.ms-pointer{fill:var(--accent);opacity:0}.ms-annotation{fill:color-mix(in srgb,var(--foreground) 70%,transparent);font-size:12px;font-family:Fira Code,monospace;opacity:0}.ms-level--0{opacity:1}.ms-connectors--0{opacity:0;animation:ms-fadeIn 1s 1s both}.ms-level--1{opacity:0;animation:ms-fadeInDown 1s 1.6s both}.ms-connectors--1{opacity:0;animation:ms-fadeIn 1s 2.6s both}.ms-level--2{opacity:0;animation:ms-fadeInDown 1s 3.2s both}.ms-connectors--2{opacity:0;animation:ms-fadeIn 1s 4.2s both}.ms-level--1 .ms-cell--active{animation:ms-deactivate .4s 3.2s both}.ms-level--2 .ms-cell--active{animation:ms-deactivate .4s 4.8s both}.ms-level--3{opacity:0;animation:ms-fadeInDown 1s 4.8s both}.ms-s2-ptr-left{animation:ms-show .8s .4s both,ms-hide .4s 5.2s both}.ms-s2-ptr-right{animation:ms-show .8s .4s both,ms-hide .4s 6.8s both}.ms-s2-result-0{opacity:0;animation:ms-fadeIn .8s 1.2s both}.ms-s2-result-1{opacity:0;animation:ms-fadeIn .8s 2.8s both}.ms-s2-result-2{opacity:0;animation:ms-fadeIn .8s 4.4s both}.ms-s2-result-3{opacity:0;animation:ms-fadeIn .8s 6s both}.ms-s2-right-0{animation:ms-fadeOut .6s 1.6s both}.ms-s2-left-0{animation:ms-fadeOut .6s 3.2s both}.ms-s2-left-1{animation:ms-fadeOut .6s 4.8s both}.ms-s2-right-1{animation:ms-fadeOut .6s 6.4s both}.ms-s2-ann-0{animation:ms-showHide 1.6s .8s both}.ms-s2-ann-1{animation:ms-showHide 1.6s 2.4s both}.ms-s2-ann-2{animation:ms-showHide 1.6s 4s both}.ms-s2-ann-3{animation:ms-showHide 1.6s 5.6s both}.ms-s3-result-0{opacity:0;animation:ms-fadeIn .7s .8s both}.ms-s3-result-1{opacity:0;animation:ms-fadeIn .7s 1.8s both}.ms-s3-result-2{opacity:0;animation:ms-fadeIn .7s 2.8s both}.ms-s3-result-3{opacity:0;animation:ms-fadeIn .7s 3.8s both}.ms-s3-result-4{opacity:0;animation:ms-fadeIn .7s 4.8s both}.ms-s3-result-5{opacity:0;animation:ms-fadeIn .7s 5.8s both}.ms-s3-result-6{opacity:0;animation:ms-fadeIn .7s 6.8s both}.ms-s3-result-7{opacity:0;animation:ms-fadeIn .7s 7.8s both}.ms-s3-left-0{animation:ms-fadeOut .6s 1.2s both}.ms-s3-left-1{animation:ms-fadeOut .6s 2.2s both}.ms-s3-left-2{animation:ms-fadeOut .6s 5.2s both}.ms-s3-left-3{animation:ms-fadeOut .6s 7.2s both}.ms-s3-right-0{animation:ms-fadeOut .6s 3.2s both}.ms-s3-right-1{animation:ms-fadeOut .6s 4.2s both}.ms-s3-right-2{animation:ms-fadeOut .6s 6.2s both}.ms-s3-right-3{animation:ms-fadeOut .6s 8.2s both}.ms-s3-ann-0{animation:ms-showHide 1s .8s both}.ms-s3-ann-1{animation:ms-showHide 1s 1.8s both}.ms-s3-ann-2{animation:ms-showHide 1s 2.8s both}.ms-s3-ann-3{animation:ms-showHide 1s 3.8s both}.ms-s3-ann-4{animation:ms-showHide 1s 4.8s both}.ms-s3-ann-5{animation:ms-showHide 1s 5.8s both}.ms-s3-ann-6{animation:ms-showHide 1s 6.8s both}.ms-s3-ann-7{animation:ms-showHide 1s 7.8s both}.ms-s4-divide.ms-level--0{opacity:1}.ms-s4-divide.ms-connectors--0{opacity:0;animation:ms-fadeIn .6s .6s both}.ms-s4-divide.ms-level--1{opacity:0;animation:ms-fadeInDown .6s 1s both}.ms-s4-divide.ms-connectors--1{opacity:0;animation:ms-fadeIn .6s 1.6s both}.ms-s4-divide.ms-level--2{opacity:0;animation:ms-fadeInDown .6s 2s both}.ms-s4-conquer{opacity:0;animation:ms-fadeIn .8s 3s both}.ms-s4-conquer--late{animation:ms-fadeIn .8s 5s both}.ms-s4-conquer--final{animation:ms-fadeIn .8s 7s both}.ms-s4-divide.ms-level--1 .ms-cell--active{animation:ms-deactivate .4s 2s both}.ms-s4-divide.ms-level--2 .ms-cell--active{animation:ms-deactivate .4s 3s both}.ms-s4-merge-2 .ms-cell--active{animation:ms-deactivate .4s 5s both}.ms-s4-merge-1 .ms-cell--active{animation:ms-deactivate .4s 7s both}@keyframes ms-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes ms-fadeInDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes ms-fadeOut{0%{opacity:1}to{opacity:.2}}@keyframes ms-show{0%{opacity:0}to{opacity:.8}}@keyframes ms-hide{0%{opacity:.8}to{opacity:0}}@keyframes ms-deactivate{0%{fill:color-mix(in srgb,var(--accent) 20%,transparent);stroke:var(--accent);stroke-width:2}to{fill:color-mix(in srgb,var(--foreground) 10%,transparent);stroke:color-mix(in srgb,var(--foreground) 30%,transparent);stroke-width:1.5}}@keyframes ms-showHide{0%{opacity:0}20%{opacity:1}80%{opacity:1}to{opacity:0}}
