@layer lab-base{:root{--ref:#748ffc;--ref-soft:#edf2ff}.vega-codepanel pre.vega-code{padding:12px 16px;line-height:1.7}vega-select-ease{display:block}.curve{background:var(--panel);border-radius:12px;width:100%;height:auto;display:block}.curve .axis{stroke:var(--line-strong);stroke-width:1.5px}.curve .grid{stroke:var(--line);stroke-width:1px}.curve .diag{stroke:var(--accent-line);stroke-width:1.5px;stroke-dasharray:4 4}.curve .plot{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.curve .plot.ref{stroke:var(--ref);stroke-width:2.5px}.curve .head{fill:var(--accent);stroke:#fff;stroke-width:2px}.curve .axlabel{fill:var(--muted);font:600 11px var(--mono)}.track{background:var(--accent-soft);border:2px dashed var(--accent-pale);border-radius:12px;height:46px;margin:10px 16px;position:relative}.track.ref{background:var(--ref-soft);border-color:#c7d3ff}.track .ball{background:var(--accent);will-change:transform;color:#fff;width:30px;height:30px;font:600 11px var(--display);border-radius:50%;justify-content:center;align-items:center;margin-top:-15px;display:flex;position:absolute;top:50%;left:0}.track.ref .ball{background:var(--ref)}.track .tag-end{font:600 10px var(--mono);color:var(--accent-deep);opacity:.6;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.lanes{gap:7px;margin:10px 16px;display:grid}.lane{background:var(--panel);border:1px solid var(--line);border-radius:8px;height:30px;position:relative}.lane .seg{background:var(--accent-pale);border:1px solid var(--accent);border-radius:6px;position:absolute;top:3px;bottom:3px}.lane .seg .lbl{font:600 10px var(--mono);color:var(--accent-deep);white-space:nowrap;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.playhead{background:var(--bad);z-index:3;width:2px;position:absolute;top:0;bottom:0}.dots{flex-wrap:wrap;gap:8px;padding:8px 0;display:flex}.dots .d{background:var(--accent);will-change:transform, opacity;border-radius:7px;width:26px;height:26px}.grad{border:1px solid var(--line-strong);border-radius:10px;height:38px;margin:6px 0;position:relative}.grad .gmark{background:var(--ink);pointer-events:none;border-radius:3px;width:3px;position:absolute;top:-4px;bottom:-4px;transform:translate(-50%);box-shadow:0 0 0 2px #fff}.gradrow{grid-template-columns:84px 1fr;align-items:center;gap:10px;margin:8px 16px;display:grid}.gradrow .vega-lab{font:600 11px var(--mono);color:var(--muted)}.transport{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:8px 18px;margin:12px 0;padding:0 16px;font-size:12px;display:flex}.transport .stat b{color:var(--accent);font-size:15px;font-weight:600}.transport .stat.ref b{color:var(--ref)}.dragbox{background:var(--accent);color:#fff;width:86px;height:86px;font:600 12px var(--display);box-shadow:var(--shadow-lift);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:16px;justify-content:center;align-items:center;display:flex}.dragbox:active{cursor:grabbing}.scroller{border:1px solid var(--line-strong);background:var(--panel);border-radius:12px;height:230px;margin:10px 16px;overflow-y:auto}.scroller .tall{height:900px;padding:14px;position:relative}.flipgrid{flex-wrap:wrap;gap:10px;padding:14px 16px;display:flex}.flipgrid .tile{background:var(--accent-2);will-change:transform;border-radius:12px;width:64px;height:64px}.wheel-wrap{width:264px;height:264px;margin:8px auto 4px;position:relative}.wheel{will-change:transform;width:100%;height:100%;display:block}.wheel .sec{stroke:var(--panel);stroke-width:2px;transition:filter .2s}.wheel .sec.win{filter:brightness(1.12)saturate(1.2)}.wheel .slabel{fill:#fff;font:600 13px var(--display)}.wheel-wrap .hub{background:var(--panel);border:3px solid var(--accent);width:56px;height:56px;box-shadow:var(--shadow-lift);font:600 17px var(--display);color:var(--accent-deep);border-radius:50%;justify-content:center;align-items:center;margin:-28px 0 0 -28px;display:flex;position:absolute;top:50%;left:50%}.wheel-wrap .pointer{z-index:3;border-left:13px solid #0000;border-right:13px solid #0000;border-top:24px solid var(--bad);filter:drop-shadow(0 2px 1px #00000040);width:0;height:0;position:absolute;top:-4px;left:50%;transform:translate(-50%)}.phasebar{flex-wrap:wrap;gap:8px;padding:4px 16px 0;display:flex}.phasebar .p{background:var(--accent-soft);color:var(--muted);border:1px solid var(--accent-pale);font:600 11px var(--mono);border-radius:999px;padding:4px 12px}.phasebar .p.on{background:var(--accent);color:#fff;border-color:var(--accent-press)}.phasebar .p.done-on{background:var(--good);color:#fff;border-color:var(--good)}.vprof{background:var(--panel);border-radius:12px;width:100%;height:auto;display:block}.vprof .plot{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.vprof .axis{stroke:var(--line-strong);stroke-width:1.5px}.vprof .hand{stroke:var(--ref);stroke-width:2px;stroke-dasharray:4 4}.vprof .axlabel{fill:var(--muted);font:600 10px var(--mono)}.svgstage{background:var(--accent-soft);border:2px dashed var(--accent-pale);border-radius:12px;margin:10px 16px;padding:8px}.svgstage svg{width:100%;height:auto;display:block}.svgstage .draw{fill:none;stroke:var(--accent);stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}.svgstage .draw.ring{stroke:var(--accent-2)}.svgstage .draw.sig{stroke:var(--accent-press)}.svgstage .road{fill:none;stroke:var(--accent-pale);stroke-width:9px;stroke-linecap:round}.svgstage .mover polygon{fill:var(--accent)}.svgstage .mover circle{fill:#fff}.track .tgt{pointer-events:none;font:600 15px var(--display);color:var(--accent-press);position:absolute;top:-15px;transform:translate(-50%)}.trace{background:var(--panel);border-radius:12px;width:100%;height:auto;display:block}.trace .tpos{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.trace .tvel{fill:none;stroke:var(--ref);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;opacity:.9}.trace .mk{stroke:var(--bad);stroke-width:1.5px;stroke-dasharray:3 3}.cam-scene{border:1px solid var(--line-strong);background:var(--panel);border-radius:14px;margin:10px 16px;overflow:hidden}.cam-scene svg{aspect-ratio:3/2;width:100%;height:auto;display:block}.cam-scene .world{fill:var(--accent-soft)}.cam-scene .sh{stroke:var(--panel);stroke-width:3px}.cam-scene .sh.a{fill:#fa5252}.cam-scene .sh.b{fill:#4dabf7}.cam-scene .sh.c{fill:#51cf66}.cam-scene .shlbl{fill:#fff;font:600 30px var(--display);text-anchor:middle}.pbar{background:var(--accent-soft);border:1px solid var(--accent-pale);border-radius:999px;height:18px;position:relative;overflow:hidden}.pbar .fill{border-radius:inherit;background:var(--accent);will-change:width;width:0;position:absolute;top:0;bottom:0;left:0}.prow{grid-template-columns:76px 1fr 50px;align-items:center;gap:12px;margin:14px 16px;display:grid}.prow .plabel{font:600 11px var(--mono);color:var(--muted)}.prow .pval{font:600 13px var(--mono);color:var(--accent);text-align:right}.prow.ref .pval{color:var(--ref)}.prow.ref .pbar{background:var(--ref-soft);border-color:#c7d3ff}.prow.ref .fill{background:var(--ref)}.pbar .seg{border-radius:inherit;background:var(--accent);will-change:left;width:32%;position:absolute;top:0;bottom:0;left:0}.pbar.stripe{background-image:repeating-linear-gradient(45deg, var(--accent) 0 14px, var(--accent-2) 14px 28px);will-change:background-position;background-size:39.6px 100%}.pbar .cap{background:var(--bad);pointer-events:none;border-radius:2px;width:2px;position:absolute;top:-4px;bottom:-4px;transform:translate(-50%)}.pbar .cap:after{content:attr(data-cap);font:600 9px var(--mono);color:var(--bad);white-space:nowrap;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.segs{gap:6px;margin:16px 16px 8px;display:flex}.segs .seg{background:var(--accent-pale);border-radius:999px;flex:1;height:6px;position:relative;overflow:hidden}.segs .seg .fill{background:var(--accent);width:0;position:absolute;top:0;bottom:0;left:0}.story{text-align:center;font:600 22px var(--display);color:var(--accent-deep);padding:18px 0 6px}.rings{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:32px;padding:6px 0;display:flex}.ring{flex-direction:column;align-items:center;gap:9px;display:flex}.ring .rlabel{font:600 11px var(--mono);color:var(--muted)}.ring-conic{will-change:background;will-change:background, transform;border-radius:50%;justify-content:center;align-items:center;width:116px;height:116px;display:flex;position:relative}.ring-conic .rnum{background:var(--panel);width:80px;height:80px;font:600 18px var(--mono);color:var(--accent);border-radius:50%;justify-content:center;align-items:center;display:flex}.ring-svg{will-change:transform;width:116px;height:116px}.ring-svg .rtrack{fill:none;stroke:var(--accent-soft);stroke-width:12px}.ring-svg .rarc{fill:none;stroke:var(--accent);stroke-width:12px;stroke-linecap:round;transform-origin:60px 60px;transform:rotate(-90deg)}.ring-svg .rnum{fill:var(--accent);font:600 18px var(--mono);text-anchor:middle}.bignum{text-align:center;font:600 46px var(--mono);color:var(--accent);letter-spacing:1px;padding:4px 0 8px}.odo{justify-content:center;gap:4px;padding:4px 0 12px;display:flex}.odo-col{background:var(--ink);border-radius:9px;width:40px;height:52px;overflow:hidden;box-shadow:inset 0 7px 9px -8px #000000a6,inset 0 -7px 9px -8px #000000a6}.odo-strip{will-change:transform;flex-direction:column;display:flex}.odo-strip span{width:40px;height:52px;font:600 34px var(--mono);color:#fff;justify-content:center;align-items:center;display:flex}}
