.lab{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-lg);border-radius:18px;font-size:.95rem;overflow:clip}.lab-head{border-bottom:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap;align-items:end;gap:12px 18px;padding:16px 18px;display:flex}.lab-title{align-self:center;margin:0 auto 0 0;font-size:1.1rem}.lab-title small{font:500 .8rem/1.3 var(--sans);color:var(--muted);letter-spacing:0;margin-top:2px;display:block}.lab-inputs{flex-wrap:wrap;align-items:end;gap:10px;display:flex}.lab-inputs .field{min-width:120px}.lab-inputs .grow{flex:240px}.lab-error{background:var(--bad-soft);color:var(--bad);border-bottom:1px solid var(--line);margin:0;padding:8px 18px;font-size:.9rem}.lab-error:empty{display:none}.lab-main{grid-template-columns:minmax(0,1fr) 330px;min-height:320px;display:grid}.lab-stage{flex-direction:column;justify-content:center;gap:10px;min-width:0;padding:16px;display:flex;position:relative}.lab-side{border-left:1px solid var(--line);background:var(--surface);flex-direction:column;min-width:0;display:flex}.lab-panel{border-bottom:1px solid var(--line);padding:12px 16px}.lab-panel:last-child{border-bottom:0}.lab-panel :is(h3,h4){font:650 .74rem/1.2 var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px}@media (width<=900px){.lab-main{grid-template-columns:minmax(0,1fr)}.lab-side{border-left:0;border-top:1px solid var(--line)}}.pseudo{counter-reset:line;font:.8rem/1.55 var(--mono);max-height:260px;margin:0;padding:0;list-style:none;overflow-y:auto}.pseudo li{counter-increment:line;white-space:pre-wrap;color:var(--ink-2);border-radius:6px;margin:0;padding:1px 8px 1px 2.6em;position:relative}.pseudo li:before{content:counter(line);text-align:right;width:1.6em;color:var(--muted);opacity:.7;position:absolute;left:.5em}.pseudo li[aria-current=step]{background:var(--accent);color:var(--accent-ink)}.pseudo li[aria-current=step]:before{color:var(--accent-ink);opacity:.85}.lab-note{border-top:1px solid var(--line);background:var(--accent-soft);min-height:3.5em;color:var(--ink);margin:0;padding:13px 18px;font-size:.98rem;line-height:1.5}.lab-note:before{content:"Step " attr(data-step);background:var(--surface);color:var(--accent);font:700 .76rem/1.6 var(--mono);vertical-align:1px;border-radius:999px;margin-right:8px;padding:1px 8px;display:inline-block}.lab-note:not([data-step]):before{content:none}.lab-controls{border-top:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:10px 16px;padding:12px 16px;display:flex}.lab-buttons{border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;display:inline-flex}.lab-buttons button{width:42px;height:40px;color:var(--ink);cursor:pointer;transition:background-color .15s var(--ease);background:0 0;border:0;place-items:center;display:inline-grid;position:relative}.lab-buttons button+button{border-left:1px solid var(--line)}.lab-buttons button:first-child{border-radius:11px 0 0 11px}.lab-buttons button:last-child{border-radius:0 11px 11px 0}.lab-buttons button:hover:not([disabled]){background:var(--surface-2)}.lab-buttons button:focus-visible{outline-offset:-3px;z-index:1}.lab-buttons button[disabled]{color:color-mix(in srgb, var(--ink) 30%, transparent);cursor:default}.lab-buttons button[data-act=play]{background:var(--accent);width:54px;color:var(--accent-ink)}.lab-buttons button[data-act=play]:hover:not([disabled]){background:var(--accent-hover)}.lab-buttons .icon-pause{display:none}.lab[data-playing] .lab-buttons .icon-pause{display:block}.lab[data-playing] .lab-buttons .icon-play{display:none}[data-tip]:after{content:attr(data-tip);background:var(--ink);color:var(--bg);font:600 .74rem/1.3 var(--sans);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s var(--ease), transform .15s var(--ease);z-index:5;border-radius:6px;padding:4px 8px;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px)}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transform:translate(-50%)}.lab-scrub{flex:200px;align-items:center;gap:10px;min-width:160px;display:flex}.lab-scrub output{font:600 .8rem var(--mono);color:var(--muted);white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;min-width:8ch}.lab-speed{color:var(--muted);align-items:center;gap:6px;font-size:.82rem;display:flex}.lab-speed select{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:8px;padding:.32em .45em;font-size:.86rem}@media (width<=640px){.lab-head{padding:14px}.lab-controls{padding:10px 12px}.lab-buttons button{width:40px}}.stats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;display:grid}.stat{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.stat b{font:650 1.15rem/1.2 var(--mono);color:var(--ink);font-variant-numeric:tabular-nums;display:block}.stat span{color:var(--muted);font-size:.78rem;line-height:1.3;display:block}.vars{font:.82rem var(--mono);flex-wrap:wrap;gap:6px;display:flex}.vars span{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 8px}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.legend li{align-items:center;gap:6px;margin:0;display:inline-flex}.legend i{border-radius:3px;width:12px;height:12px;display:inline-block}.bars{align-items:flex-end;gap:3px;height:260px;padding:0 2px;display:flex}.bar{background:var(--v-idle);border-radius:4px 4px 0 0;flex:1 1 0;min-width:0;transition:height .18s,background-color .15s;position:relative}.bar span{font:600 .68rem var(--mono);color:var(--ink-2);padding-bottom:2px;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.bars.dense .bar span{display:none}.bar[data-role=compare]{background:var(--v-compare)}.bar[data-role=swap]{background:var(--v-swap)}.bar[data-role=write]{background:var(--v-write)}.bar[data-role=pivot]{background:var(--v-pivot)}.bar[data-role=key],.bar[data-role=min]{background:var(--v-key)}.bar[data-sorted]:not([data-role]){background:var(--v-done)}.bar[data-hole]{outline:2px dashed var(--v-line);outline-offset:-2px;background:0 0;height:30%!important}.bar[data-hole] span{display:none}.bar[data-out]{opacity:.35}.index-row{font:.62rem var(--mono);color:var(--muted);gap:3px;padding:0 2px;display:flex}.index-row span{text-align:center;flex:1 1 0;min-width:0;overflow:hidden}.aux-row{align-items:center;gap:3px;padding:0 2px;display:flex}.aux-row .aux-label{color:var(--muted);white-space:nowrap;margin-right:6px;font-size:.72rem}.aux-cells{flex:1;gap:3px;display:flex}.aux-cells span{text-align:center;min-width:0;font:600 .7rem/1.9 var(--mono);background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);border-radius:4px;flex:1 1 0;overflow:hidden}.aux-cells span:empty{opacity:.35}.held{font:600 .85rem var(--mono);color:var(--v-key);min-height:1.4em}@media (prefers-reduced-motion:reduce){.bar{transition:none}}.cells{flex-wrap:wrap;justify-content:center;gap:6px;padding-top:34px;display:flex}.cell{text-align:center;width:52px;position:relative}.cell .box{border:2px solid var(--line-strong);background:var(--surface);height:48px;font:650 1rem var(--mono);border-radius:10px;place-items:center;transition:background-color .15s,opacity .2s,border-color .15s;display:grid}.cell .idx{font:.68rem var(--mono);color:var(--muted);margin-top:3px;display:block}.cell[data-out] .box{opacity:.28;background:var(--v-muted)}.cell[data-mid] .box{border-color:var(--v-compare);background:color-mix(in srgb, var(--v-compare) 22%, var(--surface))}.cell[data-found] .box{border-color:var(--v-done);background:color-mix(in srgb, var(--v-done) 25%, var(--surface))}.cell .ptr{font:700 .66rem var(--mono);white-space:nowrap;gap:2px;display:flex;position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%)}.cell .ptr b{color:var(--accent-ink);border-radius:5px;padding:1px 5px}.ptr .lo{background:var(--accent)}.ptr .hi{background:var(--v-pivot)}.ptr .mid{background:var(--v-compare);color:#1a1a1a!important}@media (width<=520px){.cell{width:40px}.cell .box{height:40px;font-size:.85rem}}.svg-stage{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.svg-stage text{font-family:var(--sans);fill:var(--ink)}.g-edge{stroke:var(--v-line);stroke-width:2.2px;fill:none}.g-edge[data-tree]{stroke:var(--v-done);stroke-width:4px}.g-edge[data-active=tree],.g-edge[data-active=relax]{stroke:var(--v-compare);stroke-width:4.5px}.g-edge[data-active=skip]{stroke:var(--v-swap);stroke-dasharray:6 5;stroke-width:3px}.g-edge[data-active=look]{stroke:var(--v-compare);stroke-width:3.5px}.g-weight{font:650 12px var(--mono)}.g-weight-bg{fill:var(--surface);stroke:var(--line)}.g-node circle{fill:var(--surface);stroke:var(--v-line);stroke-width:2.5px;transition:fill .15s}.g-node text{font:700 15px var(--sans);text-anchor:middle;dominant-baseline:central;pointer-events:none}.g-node[data-state=discovered] circle{fill:color-mix(in srgb, var(--v-compare) 35%, var(--surface));stroke:var(--v-compare)}.g-node[data-state=settled] circle{fill:color-mix(in srgb, var(--v-done) 35%, var(--surface));stroke:var(--v-done)}.g-node[data-current] circle{fill:var(--v-key);stroke:var(--v-key)}.g-node[data-current] text{fill:#fff}.g-node[data-selected] circle{stroke:var(--v-pivot);stroke-width:4px}.g-node[data-start] circle{stroke-width:4.5px}.g-node .g-dist{font:700 11px var(--mono);fill:var(--muted)}.g-node{cursor:grab}.g-node:focus{outline:none}.g-node:focus-visible circle{stroke:var(--accent);stroke-width:4px}.frontier{min-height:30px;font:600 .84rem var(--mono);flex-wrap:wrap;align-items:center;gap:4px;display:flex}.frontier span{background:color-mix(in srgb, var(--v-compare) 25%, var(--surface));border:1px solid var(--v-compare);border-radius:7px;padding:3px 9px}.frontier em{color:var(--muted);font-style:normal;font-weight:400;font-family:var(--sans);font-size:.85rem}.dist-table{font:.8rem var(--mono)}.dist-table td,.dist-table th{padding:3px 6px}.t-edge{stroke:var(--v-line);stroke-width:1.6px}.t-node rect{fill:var(--surface);stroke:var(--v-line);stroke-width:1.6px;rx:8}.t-node text{font:600 11.5px var(--mono);text-anchor:middle;dominant-baseline:central}.t-node .t-ret{fill:var(--good);font-size:10.5px}.t-node[data-status=active] rect{fill:var(--v-key);stroke:var(--v-key)}.t-node[data-status=active] text{fill:#fff}.t-node[data-status=waiting] rect{fill:color-mix(in srgb, var(--v-compare) 26%, var(--surface));stroke:var(--v-compare)}.t-node[data-status=done] rect{fill:color-mix(in srgb, var(--v-done) 18%, var(--surface));stroke:var(--v-done)}.t-node[data-status=cached] rect{fill:color-mix(in srgb, var(--v-write) 18%, var(--surface));stroke:var(--v-write);stroke-dasharray:4 3}.t-node[data-future]{opacity:0}.stack{flex-direction:column-reverse;gap:4px;min-height:40px;display:flex}.stack div{border:1px solid var(--line-strong);background:var(--surface-2);font:600 .8rem var(--mono);border-radius:8px;justify-content:space-between;gap:8px;padding:5px 10px;display:flex}.stack div:last-child{border-color:var(--v-key);background:color-mix(in srgb, var(--v-key) 16%, var(--surface))}.stack-empty{color:var(--muted);font-size:.85rem}.plot-axis{stroke:var(--line-strong);stroke-width:1px}.plot-grid{stroke:var(--line);stroke-width:1px}.plot-label{font:11px var(--sans);fill:var(--muted)!important}.plot-curve{fill:none;stroke-width:2.6px;stroke-linejoin:round;stroke-linecap:round}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.seg{border:1px solid var(--line-strong);background:var(--surface);border-radius:10px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;padding:.42em .8em;font-size:.86rem;font-weight:560}.seg button+button{border-left:1px solid var(--line)}.seg button:is([aria-pressed=true],[aria-selected=true]){background:var(--accent);color:var(--accent-ink)}.result-pill{letter-spacing:.04em;border-radius:999px;padding:3px 12px;font-size:.85rem;font-weight:700;display:inline-flex}.result-pill.accept{background:var(--good-soft);color:var(--good)}.result-pill.reject{background:var(--bad-soft);color:var(--bad)}.widget{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-lg);border-radius:18px;padding:20px;font-size:.95rem}.widget>h3:first-child{margin-top:0;font-size:1.1rem}.widget-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;display:grid}@media (width<=760px){.widget-grid{grid-template-columns:minmax(0,1fr)}}.out-box{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.big-number{font:700 1.5rem/1.3 var(--mono);word-break:break-all;color:var(--ink)}.copy-row{align-items:flex-start;gap:8px;display:flex}.copy-row pre{flex:1;max-height:220px;margin:0}
