:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#eef1f5;--border:#d9dee6;--text:#0f172a;--muted:#5b6678;--accent:#0f766e;--accent-contrast:#fff;--focus:#2563eb;--viz-bg:#fff;--viz-grid:#e7ebf0;--viz-bar:#94a3b8;--viz-compare:#f59e0b;--viz-write:#e11d48;--viz-sorted:#14b8a6;--viz-wall:#1e293b;--viz-weight:#c7b8f5;--viz-frontier:#fde68a;--viz-visited:#bae6fd;--viz-current:#f59e0b;--viz-path:#0f766e;--viz-start:#16a34a;--viz-target:#e11d48;--radius:12px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0b0f16;--surface:#121822;--surface-2:#1a2230;--border:#273142;--text:#e6edf3;--muted:#93a0b4;--accent:#2dd4bf;--accent-contrast:#04211e;--focus:#60a5fa;--viz-bg:#0e141d;--viz-grid:#1a2230;--viz-bar:#475569;--viz-compare:#fbbf24;--viz-write:#fb7185;--viz-sorted:#2dd4bf;--viz-wall:#5b6b82;--viz-weight:#4c3d82;--viz-frontier:#6b5314;--viz-visited:#173d52;--viz-current:#fbbf24;--viz-path:#2dd4bf;--viz-start:#4ade80;--viz-target:#fb7185;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);font:15px/1.5 var(--font);flex-direction:column;margin:0;display:flex}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{background:var(--surface);border:1px solid var(--border);z-index:10;border-radius:8px;padding:6px 12px;position:absolute;top:-40px;left:16px}.skip:focus{top:12px}.top,main,.foot{width:min(1240px,100% - 32px);margin-inline:auto}.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-block:24px 16px;display:flex}h1{letter-spacing:-.01em;margin:0;font-size:1.35rem}.tagline{color:var(--muted);margin:2px 0 0;font-size:.9rem}main{flex-direction:column;flex:1;gap:12px;display:flex}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px 14px;font-weight:550}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.segmented.small button{padding:4px 10px;font-size:.875rem}.toolbar,.options{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:12px 20px;padding:12px 16px;display:flex}.options{padding-block:10px}.transport{gap:6px;display:flex}.transport button{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:10px;place-items:center;width:40px;height:40px;display:grid}.transport button:hover{border-color:var(--muted)}.transport svg{fill:currentColor;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}#reset svg{fill:none}.transport .primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.transport .primary .i-pause,.transport .primary[aria-pressed=true] .i-play{display:none}.transport .primary[aria-pressed=true] .i-pause{display:block}.field{color:var(--muted);flex-direction:column;gap:2px;font-size:.8rem;display:flex}.field output{color:var(--text);font-family:var(--mono);font-variant-numeric:tabular-nums}.field.scrub{flex:220px}.field.speed{flex:0 180px}.field.inline{flex-direction:row;align-items:center}input[type=range]{width:100%;accent-color:var(--accent)}select{border:1px solid var(--border);background:var(--surface-2);border-radius:8px;padding:5px 8px;font-size:.9rem}.toggle{cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:flex}.toggle input{width:18px;height:18px;accent-color:var(--accent)}.opt-group{flex-wrap:wrap;align-items:center;gap:10px 16px;display:flex}.opt-group[hidden],.legend[hidden]{display:none}.ghost{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px;font-size:.9rem}.ghost:hover{background:var(--surface-2)}.hint{color:var(--muted);margin:0;font-size:.85rem}.k-start{color:var(--viz-start)}.k-target{color:var(--viz-target)}.panels{grid-template-columns:1fr;gap:12px;display:grid}.panels.compare{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-width:0;display:flex;overflow:hidden}.panel-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:10px 14px;display:flex}.panel-head select{font-weight:600}.note{color:var(--muted);font-size:.85rem;font-family:var(--mono)}.stage{background:var(--viz-bg);height:clamp(260px,52vh,520px);position:relative}.stage canvas{touch-action:none;width:100%;height:100%;display:block}.stage.grid{height:auto;max-height:72vh}.stage.grid canvas{cursor:crosshair}.stats{border-top:1px solid var(--border);font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;margin:0;padding:8px 14px;font-size:.82rem}.stats b{color:var(--text);font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin:0;padding:0 4px;font-size:.85rem;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.sw{border:1px solid var(--border);border-radius:3px;width:12px;height:12px}.sw.compare{background:var(--viz-compare)}.sw.write{background:var(--viz-write)}.sw.sorted{background:var(--viz-sorted)}.sw.frontier{background:var(--viz-frontier)}.sw.visited{background:var(--viz-visited)}.sw.path{background:var(--viz-path)}.sw.weight{background:var(--viz-weight)}.sw.wall{background:var(--viz-wall)}.foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding-block:20px 28px;font-size:.85rem;display:flex}.foot a{color:var(--accent)}kbd{border:1px solid var(--border);font-family:var(--mono);background:var(--surface);border-bottom-width:2px;border-radius:4px;margin-inline:1px;padding:0 5px;font-size:.78rem}@media (max-width:640px){.top{padding-top:16px}.stage{height:clamp(220px,42vh,380px)}.field.speed,.field.scrub{flex:100%}}
