:root{--g-data:#94600a;--g-sorting:#8b3d8f;--g-trees:#0b7285;--g-graphs:#a61e4d;--g-strategy:#b4531a}:root[data-theme=dark]{--g-data:#e3a94b;--g-sorting:#d391d6;--g-trees:#4fc3d3;--g-graphs:#f783ac;--g-strategy:#f4a36b}[data-group=data]{--accent:var(--g-data)}[data-group=sorting]{--accent:var(--g-sorting)}[data-group=trees]{--accent:var(--g-trees)}[data-group=graphs]{--accent:var(--g-graphs)}[data-group=strategy]{--accent:var(--g-strategy)}.grid-2.wide-left{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}.slider{flex-direction:column;gap:4px;display:flex}.slider .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;display:flex}.slider .label strong{font:600 13px var(--mono);color:var(--ink);letter-spacing:0}.btn-row{flex-wrap:wrap;gap:8px;display:flex}select{font:14px var(--sans);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:0;padding:7px 10px}.legend-inline{font:11px var(--mono);color:var(--ink-3);align-items:center;gap:6px;display:inline-flex}@media (width<=1100px){.grid-2.wide-left{grid-template-columns:minmax(0,1fr)}}.send-row{gap:8px;display:flex}.flow.four{grid-template-columns:repeat(4,minmax(0,1fr))}.diagram .label-line{stroke:var(--paper);stroke-width:2px}.diagram .ok-box{stroke:var(--ok);stroke-width:2px}.ok-note{border-left-color:var(--ok)}.nowrap{white-space:nowrap}.chip{font:13px var(--sans);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule);padding:5px 10px}.chip.sel{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}ul.legend-inline{flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;display:flex}ul.legend-inline li{align-items:center;gap:6px;display:inline-flex}pre.code{font:13px/1.55 var(--mono);color:var(--ink);background:var(--paper);border:1px dashed var(--rule);white-space:pre;margin:0;padding:12px 14px;overflow-x:auto}pre.code .struck{color:var(--bad);text-decoration:line-through}.describe{min-height:3em;font:400 18px/1.4 var(--serif);margin:0}.describe .ch-no{font-size:12px}.cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.playing-card{aspect-ratio:3/4;font:400 30px var(--serif);color:var(--on-accent);background:repeating-linear-gradient(45deg, var(--accent) 0 6px, color-mix(in srgb, var(--accent) 80%, var(--paper)) 6px 12px);border:1px solid var(--rule-strong);cursor:pointer;place-items:center;display:grid}.playing-card.up{color:var(--ink);background:var(--sheet);cursor:default}.playing-card.best{outline:3px solid var(--ok);outline-offset:-3px;color:var(--ok)}@media (prefers-reduced-motion:no-preference){.playing-card.up{animation:.25s ease-out flip}@keyframes flip{0%{transform:rotateY(90deg)}}}.series.g0,.swatch.g0{--c:var(--ok)}.series.g1,.swatch.g1{--c:var(--g-foundations)}.series.g2,.swatch.g2{--c:var(--g-trees)}.series.g3,.swatch.g3{--c:var(--g-sorting)}.series.g4,.swatch.g4{--c:var(--g-data)}.series.g5,.swatch.g5{--c:var(--bad)}.chart .series[class*=g]{fill:none;stroke:var(--c);stroke-width:2.5px}.swatch{background:var(--c,var(--ink));vertical-align:middle;flex:none;width:16px;height:4px;display:inline-block}.swatch.compare,.swatch.swap,.swatch.fixed{width:12px;height:12px}.swatch.compare{background:var(--g-foundations)}.swatch.swap{background:var(--bad)}.swatch.fixed{background:var(--ok)}.growth-table td:first-child{width:140px}.growth-table td{white-space:normal}.snippets{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.range-bar{background:var(--paper);border:1px solid var(--rule);height:14px;position:relative}.range-bar span{background:var(--accent);transition:all .3s;position:absolute;top:0;bottom:0}.guess-log{font:13px var(--mono);color:var(--ink-2);flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;display:flex}.guess-log strong{color:var(--ink)}.halving{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.halving li{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center;gap:10px;display:grid}.halving .bar{width:100%;margin:0}.halving small{font:11px var(--mono);color:var(--ink-3)}.cells{flex-wrap:wrap;gap:4px;display:flex}.cell{min-width:40px;height:40px;font:500 14px var(--mono);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);place-items:center;padding:0 4px;transition:background .15s,opacity .15s;display:grid;position:relative}.cell small{text-align:center;font:9px var(--mono);color:var(--ink-3);position:absolute;bottom:-15px;left:0;right:0}.cells.mem{gap:4px 2px;padding-bottom:16px}.cell.empty{border-style:dashed;border-color:var(--rule);color:var(--ink-3)}.cell.current{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.cell.found{background:var(--ok);color:var(--sheet);border-color:var(--ok)}.cell.out{opacity:.25}button.cell{cursor:pointer}.search-cells{gap:3px}.search-cells .cell{width:calc(6.25% - 2.8125px);min-width:0;height:40px;padding:0;font-size:11px}.memo .cell{min-width:44px;font-size:12px}.linked{flex-wrap:wrap;align-items:center;gap:6px 0;display:flex}.linked .head-ptr,.linked .null-ptr{font:11px var(--mono);color:var(--ink-3);margin-right:6px}.linked .node{font:500 14px var(--mono);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:18px;align-items:center;margin-right:6px;padding:8px 0 8px 10px;display:inline-flex}.linked .node i{color:var(--ink-3);border-left:1px dashed var(--rule);margin-left:8px;padding:0 8px;font-style:normal}.linked .node.current{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.linked .node.current i{color:var(--on-accent)}.linked .node.found{background:var(--ok);color:var(--sheet);border-color:var(--ok)}.linked .node.added{outline:3px solid var(--ok);outline-offset:1px}.stack-viz{border:2px solid var(--rule-strong);background:var(--paper);border-top:0;flex-direction:column-reverse;align-items:center;gap:4px;min-height:200px;padding:10px;display:flex}.stack-viz.small{min-height:140px}.queue-viz{border:2px solid var(--rule-strong);background:var(--paper);border-left:0;border-right:0;align-items:center;gap:4px;min-height:64px;padding:10px;display:flex;overflow-x:auto}.queue-viz small{font:10px var(--mono);color:var(--ink-3);text-transform:uppercase;flex:none}.queue-viz small:last-child{margin-left:auto}.slot{width:min(160px,100%);height:34px;font:500 15px var(--mono);background:var(--sheet);border:1px solid var(--rule-strong);place-items:center;display:grid;position:relative}.queue-viz .slot{flex:none;width:40px;height:40px}.slot.top{background:var(--accent-tint);border-color:var(--accent)}.slot small{font:9px var(--mono);color:var(--accent);text-transform:uppercase;position:absolute;right:8px}.empty-note{font:italic 14px var(--serif);color:var(--ink-3);margin:auto;list-style:none}.code-line{font:500 20px/1.4 var(--mono);flex-wrap:wrap;margin:0;display:flex}.code-line span{border-bottom:3px solid #0000;padding:0 2px}.code-line .past{color:var(--ink-3)}.code-line .cur{background:var(--accent-tint);border-bottom-color:var(--accent)}.code-line .bad{background:var(--bad-tint);border-bottom-color:var(--bad);color:var(--bad)}.hash-calc{background:var(--paper);border:1px dashed var(--rule);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.hash-calc .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.hash-calc ol,.hash-calc p{color:var(--ink-2);overflow-wrap:anywhere;margin:0;padding:0;font-size:12px;list-style:none}.hash-calc strong{color:var(--accent);font-size:15px}.buckets{border-top:1px solid var(--rule);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.buckets li{border-bottom:1px solid var(--rule);grid-template-columns:28px minmax(0,1fr);align-items:center;min-height:34px;padding:3px 0;display:grid}.buckets li.hit{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}.buckets .ch-no{padding-left:8px}.buckets .chain{flex-wrap:wrap;gap:4px;display:flex}.buckets .chain .chip{padding:2px 8px;font-size:13px}.buckets .chain .chip+.chip:before{content:"→ ";color:var(--ink-3)}.tree-scroll{overflow-x:auto}svg.tree{width:100%;height:auto;margin:0 auto;display:block}svg.tree line{stroke:var(--ink-3);stroke-width:1.5px}.tnode rect,.tnode circle{fill:var(--sheet);stroke:var(--ink);stroke-width:1.5px}.tnode text{fill:var(--ink);font:600 12px var(--mono);text-anchor:middle}.tnode text.sub{fill:var(--ink-3);font-size:10px;font-weight:500}.tnode.round{cursor:pointer}.tnode.active rect{fill:var(--accent);stroke:var(--accent)}.tnode.active text{fill:var(--on-accent)}.tnode.waiting rect{fill:var(--accent-tint);stroke:var(--accent)}.tnode.returned rect{stroke:var(--ok)}.tnode.returned text.sub{fill:var(--ok)}.tnode.path circle{fill:var(--accent-tint);stroke:var(--accent);stroke-width:2.5px}.tnode.found circle{fill:var(--ok);stroke:var(--ok)}.tnode.found text{fill:var(--sheet)}.tnode.swap circle{fill:var(--accent);stroke:var(--accent)}.tnode.swap text{fill:var(--on-accent)}.tnode.end circle{stroke-width:3.5px;stroke:var(--ok)}.tnode.root circle{fill:var(--rule)}.call-stack{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.call-stack li{background:var(--paper);border:1px solid var(--rule);justify-content:space-between;gap:10px;padding:7px 10px;display:flex}.call-stack li.top{background:var(--accent-tint);border-color:var(--accent)}.call-stack li.overflow{color:var(--bad);font:600 13px var(--mono);text-transform:uppercase;background:var(--bad-tint);border-color:var(--bad)}.call-stack small{font:11px var(--mono);color:var(--ink-3);text-align:right}.suggestions{border:1px solid var(--rule);flex-direction:column;min-height:40px;margin:0;padding:0;list-style:none;display:flex}.suggestions li{font:16px var(--sans);border-bottom:1px solid var(--rule);padding:6px 12px}.suggestions li:last-child{border-bottom:0}.suggestions strong{color:var(--accent)}.race-controls{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:end;gap:16px;display:grid}.race{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.lane{background:var(--paper);border:1px solid var(--rule);flex-direction:column;gap:6px;padding:10px;display:flex}.lane header{justify-content:space-between;gap:6px;font-size:13px;display:flex}.lane .place{font:600 11px var(--mono);color:var(--ok)}.lane.finished{border-color:var(--ok)}.lane .stat{font-size:11px}.bars{align-items:flex-end;gap:1px;height:120px;display:flex}.bars span{background:var(--ink-3);flex:1;min-width:0;position:relative}.bars span.compare{background:var(--g-foundations)}.bars span.swap,.bars span.write{background:var(--bad)}.bars span.fixed{background:var(--ok)}.bars.labelled{gap:6px;height:180px}.bars.labelled small{text-align:center;font:600 12px var(--mono);color:var(--ink);position:absolute;top:-18px;left:0;right:0}.bars.labelled{padding-top:20px}.board{background:var(--rule);border:1px solid var(--rule-strong);touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;gap:1px;padding:1px;display:grid}.sq{aspect-ratio:1;font:700 11px var(--mono);background:var(--sheet);place-items:center;display:grid}.sq.wall{background:var(--ink)}.sq.mud{background:color-mix(in srgb, #8a5a2b 45%, var(--sheet))}.sq.seen{background:color-mix(in srgb, var(--accent) 28%, var(--sheet))}.sq.mud.seen{background:color-mix(in srgb, var(--accent) 40%, #8a5a2b)}.sq.frontier{background:color-mix(in srgb, var(--accent) 65%, var(--sheet))}.sq.path{background:#f2b705}.sq.start{background:var(--ok);color:var(--sheet)}.sq.goal{background:var(--bad);color:var(--sheet)}.board-key .sq{border:1px solid var(--rule);width:12px;height:12px}.board:focus-visible .sq.cursor{outline:3px solid var(--accent);outline-offset:-3px}.small-table td,.small-table th{padding-top:6px;padding-bottom:6px}.bar.wide{width:100%;height:14px;margin:0;display:block}.items-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.items-row li{background:var(--paper);border:1px solid var(--rule);flex-direction:column;padding:10px 12px;display:flex}.items-row li.taken{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, var(--sheet))}.dp-table td.num,.dp-table th.num{text-align:center}.dp-table td{padding:8px 6px}.dp-table td.cur{background:var(--accent);color:var(--on-accent)}.dp-table td.src{background:var(--accent-tint);outline:2px dashed var(--accent);outline-offset:-2px}.dp-table td.blank{background:var(--paper)}.coins{flex-wrap:wrap;gap:4px;min-height:36px;display:flex}.coin{width:34px;height:34px;font:600 12px var(--mono);color:#5c4400;background:radial-gradient(circle at 35% 35%,#ffe28a,#d4a017);border:1px solid #a07a10;border-radius:50%;place-items:center;display:grid}.timeline{flex-direction:column;gap:4px;padding-bottom:24px;display:flex;position:relative}.tl-row{background:var(--paper);height:32px;position:relative}.meeting{white-space:nowrap;font:600 12px var(--mono);color:var(--ink-2);background:var(--sheet);border:1px dashed var(--ink-3);align-items:center;gap:6px;padding:0 6px;display:flex;position:absolute;top:2px;bottom:2px;overflow:hidden}.meeting small{color:var(--ink-3);font-weight:400}.meeting.chosen{color:var(--on-accent);background:var(--accent);border:1px solid var(--accent)}.meeting.chosen small{color:var(--on-accent)}.tl-axis{height:18px;position:absolute;bottom:0;left:0;right:0}.tl-axis span{font:10px var(--mono);color:var(--ink-3);position:absolute;transform:translate(-50%)}.tl-axis span:first-child{transform:none}.tl-axis span:last-child{transform:translate(-100%)}@media (width<=1100px){.race{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.race-controls{grid-template-columns:minmax(0,1fr)}}@media (width<=720px){.flow.four,.snippets{grid-template-columns:minmax(0,1fr)}.cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.playing-card{font-size:20px}.items-row{grid-template-columns:repeat(2,minmax(0,1fr))}.search-cells .cell{width:calc(12.5% - 2.625px);height:40px}.race{grid-template-columns:repeat(2,minmax(0,1fr))}.meeting small{display:none}.code-line{font-size:16px}.halving li{grid-template-columns:minmax(0,1fr);gap:2px}}.diagram .faint{stroke:var(--rule);fill:none}.cards{max-width:460px}.table-scroll{margin-top:24px}.card .table-scroll{margin-top:0}svg.tree line.pending{stroke:var(--rule);stroke-dasharray:3 3}.tnode.pending rect{fill:none;stroke:var(--rule);stroke-dasharray:3 3}.tnode.pending text{fill:var(--ink-3);opacity:.5}.call-stack li.empty-note{background:0 0;border:0}.dp-table th{white-space:nowrap}@media (width<=720px){.table-scroll>.table.compare{min-width:560px}}html{background:var(--paper)}
