@layer lab-base{@media (prefers-reduced-motion:reduce){.cell,.chip-q{transition:none!important}}.gridbox{width:100%;padding:2px;overflow-x:auto}.grid-maze{gap:4px;width:max-content;margin:0 auto;display:grid}.cell{border:1px solid var(--line-strong);width:34px;height:34px;font-family:var(--mono);color:var(--muted);background:#fff;border-radius:8px;justify-content:center;align-items:center;font-size:12px;font-weight:600;transition:background .18s,border-color .18s,color .18s,transform .18s;display:flex}.cell.wall{background:#1f1f1f;border-color:#1f1f1f}.cell.start{background:var(--good);color:#fff;border-color:#15a05f}.cell.goal{background:var(--bad);color:#fff;border-color:#d83a4c}.cell.visited{background:var(--accent-soft);border-color:var(--accent-pale);color:var(--accent-deep)}.cell.frontier{border-color:var(--warn);color:#8a5a00;background:#fff2c4}.cell.current{background:var(--accent);border-color:var(--accent-press);color:#fff;box-shadow:0 0 0 3px var(--accent-pale);transform:scale(1.08)}.cell.path{background:var(--accent-2);border-color:var(--accent-press);color:#fff}.cell.start.path,.cell.goal.path{box-shadow:0 0 0 3px var(--accent-pale)}.cell .layer{font-size:9px;position:absolute}.cell{position:relative}.lane{flex-wrap:wrap;align-items:center;gap:8px;min-height:52px;display:flex}.lane .cap{font-family:var(--display);color:var(--accent-deep);min-width:58px;font-size:12px;font-weight:600}.chip-q{font-family:var(--mono);border:1px solid var(--line-strong);color:var(--ink-soft);background:#fff;border-radius:10px;padding:7px 11px;font-size:12px;font-weight:600;transition:all .16s}.chip-q.hot{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep);box-shadow:0 0 0 3px var(--accent-pale);transform:translateY(-2px)}.chip-q.empty{color:var(--muted);box-shadow:none;border-style:dashed;font-style:italic}.lane .arrow{color:var(--muted);font-size:16px;font-weight:600}.boardbox{width:100%;overflow-x:auto}.qboard{border:3px solid var(--accent-press);border-radius:12px;gap:0;width:max-content;margin:0 auto;display:grid;overflow:hidden}.sq{justify-content:center;align-items:center;width:40px;height:40px;font-size:22px;transition:background .16s;display:flex;position:relative}.sq.dark{background:#efe4fb}.sq.light{background:#fff}.sq.try{box-shadow:inset 0 0 0 3px var(--warn);background:#fff2c4}.sq.bad{background:var(--bad-soft);box-shadow:inset 0 0 0 3px var(--bad)}.sq.attacked{background:var(--bad-soft)}.sq .q{filter:drop-shadow(0 1px #0000002e)}.sq.placed .q{color:var(--accent-press)}.bars{gap:10px;margin:10px 0;display:grid}.bar-row{grid-template-columns:130px 1fr auto;align-items:center;gap:10px;font-size:12.5px;display:grid}.bar-row .name{font-family:var(--mono);color:var(--ink-soft);font-weight:600}.bar-track{background:var(--accent-soft);border:1px solid var(--accent-pale);border-radius:8px;height:22px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:6px 0 0 6px;height:100%;transition:width .4s}.bar-fill.brute{background:var(--bad)}.bar-fill.perm{background:var(--warn)}.bar-fill.bt{background:var(--good)}.bar-row .num{font-family:var(--mono);color:var(--accent-deep);text-align:right;min-width:78px;font-weight:600}.vega-legend .swatch.visited{background:var(--accent-soft);border-color:var(--accent-pale)}.vega-legend .swatch.frontier{border-color:var(--warn);background:#fff2c4}.vega-legend .swatch.current{background:var(--accent);border-color:var(--accent-press)}.vega-legend .swatch.path{background:var(--accent-2);border-color:var(--accent-press)}.vega-legend .swatch.start{background:var(--good);border-color:#15a05f}.vega-legend .swatch.goal{background:var(--bad);border-color:#d83a4c}.vega-legend .swatch.wall{background:#1f1f1f;border-color:#1f1f1f}.twin{grid-template-columns:1fr 1fr;gap:14px;display:grid}.twin .pane{border:1px solid var(--line-strong);background:#fff;border-radius:14px;padding:12px}.twin .pane h4{font-size:12.5px;font-family:var(--mono);color:var(--accent-deep);margin:0 0 8px}@media (width<=680px){.twin{grid-template-columns:1fr}}}@layer lab{.partial{font-family:var(--mono);flex-wrap:wrap;gap:6px;margin:6px 0 2px;font-size:12px;display:flex}.partial .slot{border:1px solid var(--line-strong);color:var(--muted);background:#fff;border-radius:9px;padding:5px 9px}.partial .slot.set{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep);font-weight:600}}
