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