.algorithm-workspace{--lab-bg:#071426;--lab-panel:#0d2138;--lab-text:#edf5ff;--lab-muted:#b1c5dc;--cyan:#37d6ff;--pink:#ff48bd;--lime:#b7ff53;background:var(--lab-bg);color:var(--lab-text);border:1px solid #284761;border-radius:1.2rem;margin:1.5rem 0 2.5rem;font-size:1rem;overflow:hidden;box-shadow:0 18px 60px #06132625}.algorithm-workspace *{box-sizing:border-box}.algorithm-workspace button,.algorithm-workspace select,.algorithm-workspace input[type=number]{font:inherit;color:var(--lab-text);background:#122c48;border:1px solid #42627f;border-radius:.5rem;min-height:44px;padding:.55rem .7rem}.algorithm-workspace button{cursor:pointer}.algorithm-workspace button:hover{border-color:var(--cyan);background:#1a3957}.algorithm-workspace button:disabled{opacity:.45;cursor:default}.algorithm-workspace :focus-visible{outline:3px solid var(--lime);outline-offset:3px}.algorithm-workspace label{color:var(--lab-muted);gap:.3rem;font-size:.875rem;display:grid}.lab-controls{border-bottom:1px solid #284761;flex-wrap:wrap;gap:1rem;padding:1rem 1.25rem;display:flex}.lab-controls label:first-child{flex:1;min-width:210px}.lab-grid{grid-template-columns:minmax(0,1fr) 330px;display:grid}.map-column{min-width:0;padding:1.25rem}.graph-heading{color:var(--lab-muted);justify-content:space-between;gap:1rem;font-size:.875rem;display:flex}.graph-stage{background:radial-gradient(#13385c55,#0000 70%);margin:.5rem 0}#graph{width:100%;height:auto;min-height:240px;display:block}.legend{color:var(--lab-muted);flex-wrap:wrap;gap:.6rem 1rem;font-size:.875rem;display:flex}.legend span{align-items:center;gap:.4rem;display:flex}.legend i{background:#63819f;border-radius:50%;width:10px;height:10px}.legend .waiting{background:var(--cyan)}.legend .visited{background:#9974ff}.legend #reverse-legend[hidden]{display:none}.legend .reverse{background:#ffbf53}#reverse-frontier span{color:#ffbf53;border-color:#ffbf53}.legend .current{background:var(--pink)}.legend .route{background:var(--lime)}.playback{flex-wrap:wrap;align-items:end;gap:.5rem;margin:1.3rem 0 .8rem;display:flex}#play{color:#071426;background:#b7ff53;border-color:#b7ff53;min-width:80px;font-weight:700}.scrubber{margin:1rem 0}.scrubber input{width:100%;accent-color:var(--cyan);min-height:24px}.step-explanation{border-left:3px solid var(--cyan);background:#0d2138;min-height:5.5rem;margin:1rem 0;padding:1rem;line-height:1.65}.metrics{color:var(--lab-muted);flex-wrap:wrap;gap:1rem;font-size:.875rem;display:flex}.metrics strong{color:var(--lab-text);margin-left:.3rem;font-size:1.2rem}.editor{border-top:1px solid #284761;margin-top:1.4rem;padding-top:1rem}.editor summary{cursor:pointer;color:var(--cyan)}.editor p{color:var(--lab-muted);font-size:.875rem;line-height:1.5}.edit-controls{flex-wrap:wrap;align-items:end;gap:.5rem;margin-top:.8rem;display:flex}.edit-controls input{width:90px}.inspection{background:var(--lab-panel);border-left:1px solid #284761;min-width:0;padding:1.25rem}.inspection h2{color:var(--lab-text);margin:1.2rem 0 .7rem;font-family:inherit;font-size:1rem}.panel-buttons{gap:.5rem;display:flex}.panel-buttons button[aria-pressed=true]{border-color:var(--cyan);color:var(--cyan)}.frontier{flex-wrap:wrap;gap:.4rem;min-height:44px;display:flex}.frontier span{border:1px solid var(--cyan);min-width:38px;color:var(--cyan);border-radius:.5rem;justify-content:center;align-items:center;padding:.45rem;display:inline-flex}.small{color:var(--lab-muted);font-size:.875rem;line-height:1.5}.table-scroll{overflow:auto}.inspection table{border-collapse:collapse;width:100%;font-size:.875rem}.inspection caption{text-align:left;color:var(--lab-muted);padding:.5rem 0}.inspection th,.inspection td{text-align:left;border-bottom:1px solid #284761;padding:.55rem .35rem}.inspection tr.active{background:#ff48bd22}.inspection a{color:var(--cyan);font-size:.875rem}#code{color:var(--lab-text);background:0 0;padding:0;font-size:.875rem;line-height:1.8;overflow:auto}#code span{white-space:pre;padding:0 .4rem;display:block}#code span.active{color:var(--lime);border-left:2px solid var(--lime);background:#b7ff5322}@media (width<=1000px){.lab-grid{grid-template-columns:1fr}.inspection{border-top:1px solid #284761;border-left:0}.inspection table{max-width:600px}#graph,.step-explanation{min-height:0}}@media (width<=480px){.lab-controls,.map-column,.inspection{padding:.85rem}.lab-controls{gap:.65rem}.lab-controls label{flex:1}.lab-controls select{width:100%}.legend{font-size:.8rem}.algorithm-workspace{border-radius:.7rem}}
