:root{--c-brand:#2563eb;--c-brand-dark:#1d4ed8;--c-text:#0f172a;--c-text-secondary:#475569;--c-text-muted:#64748b;--c-border:#e2e8f0;--c-surface:#f8fafc;--c-ok:#34a853;--c-warn:#fbbc04;--c-no:#ea4335;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", "Courier New", monospace}*{box-sizing:border-box}html,body{background:#fff;margin:0;padding:0}body{font-family:var(--font-body);color:var(--c-text);-webkit-text-size-adjust:100%;line-height:1.6}.lab{border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:1.25rem 1.1rem 1rem;overflow:hidden}.lab-head h1{letter-spacing:-.02em;margin:0 0 .4rem;font-size:1.35rem;line-height:1.2}.lab-head h1 em{color:var(--c-brand);font-style:italic}.lab-deck{color:var(--c-text-secondary);max-width:44rem;margin:0;font-size:.92rem}.lab-badges{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.5rem;margin:1.1rem 0 1.25rem;padding:0;list-style:none;display:grid}.badge{border:1px solid var(--c-border);border-radius:var(--radius-md);background:var(--c-surface);align-items:center;gap:.55rem;padding:.5rem .65rem;display:flex}.badge-dot{background:var(--c-text-muted);border-radius:50%;flex:none;width:9px;height:9px}.badge[data-verdict=yes] .badge-dot{background:var(--c-ok)}.badge[data-verdict=partial] .badge-dot{background:var(--c-warn)}.badge[data-verdict=no] .badge-dot{background:var(--c-no)}.badge-body{min-width:0;display:grid}.badge-body strong{font-family:var(--font-mono);color:var(--c-text-secondary);overflow-wrap:anywhere;font-size:.74rem;font-weight:400;line-height:1.4}.badge-state{font-size:.86rem;font-weight:700;line-height:1.35}.lab-tabs{border-bottom:1px solid var(--c-border);flex-wrap:wrap;gap:.35rem;display:flex}.lab-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;color:var(--c-text-muted);border-radius:var(--radius-sm) var(--radius-sm) 0 0;cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:0;margin-bottom:-1px;padding:.5rem .8rem;font-size:.88rem;font-weight:600}.lab-tab:hover{color:var(--c-text)}.lab-tab.is-on{color:var(--c-brand);border-color:var(--c-border);background:#fff}.lab-tab:focus-visible{outline:2px solid var(--c-brand);outline-offset:2px}.lab-panel{padding-top:1.1rem}.lab-panel h2{letter-spacing:-.01em;margin:0 0 .35rem;font-size:1.05rem}.lab-note{color:var(--c-text-secondary);max-width:46rem;margin:0 0 1rem;font-size:.9rem}code{font-family:var(--font-mono);background:var(--c-surface);border-radius:var(--radius-sm);padding:.08em .32em;font-size:.86em}.lab-controls{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.85rem;margin-bottom:1rem;display:grid}.lab-field{align-content:start;gap:.35rem;display:grid}.lab-field--wide{grid-column:1/-1}.lab-field--block{gap:.35rem;margin-bottom:.5rem;display:grid}.lab-label{letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-muted);font-size:.76rem;font-weight:700}.lab-label output{font-family:var(--font-mono);text-transform:none;letter-spacing:0;color:var(--c-text)}input[type=range]{width:100%;accent-color:var(--c-brand)}textarea{font-family:var(--font-mono);border:1px solid var(--c-border);border-radius:var(--radius-md);resize:vertical;width:100%;color:var(--c-text);padding:.6rem;font-size:.8rem;line-height:1.5}textarea:focus-visible,.sd-scroller:focus-visible{outline:2px solid var(--c-brand);outline-offset:2px}.lab-seg{flex-wrap:wrap;gap:.3rem;display:flex}.lab-seg-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-family:var(--font-mono);border:1px solid var(--c-border);border-radius:var(--radius-pill,9999px);color:var(--c-text-secondary);cursor:pointer;background:#fff;padding:.4rem .7rem;font-size:.78rem}.lab-seg-btn.is-on{background:var(--c-brand);border-color:var(--c-brand);color:#fff}.lab-seg-btn:focus-visible{outline:2px solid var(--c-brand);outline-offset:2px}.lab-stage{border:1px solid var(--c-border);border-radius:var(--radius-lg);background:var(--c-surface);padding:1.4rem 1rem;overflow:hidden}.lab-stage--split{grid-template-columns:1fr;gap:1.25rem;display:grid}@media (width>=640px){.lab-stage--split{grid-template-columns:220px 1fr;align-items:center}}.zoom-row{justify-content:center;align-items:center;gap:.6rem;display:flex}.zoom-card{text-align:center;width:92px;color:var(--c-text-secondary);border:1px solid var(--c-border);border-radius:var(--radius-md);background:#fff;flex:none;padding:1.1rem .5rem;font-size:.8rem;font-weight:600}.zoom-card--target{color:#fff;background:var(--c-brand);border-color:var(--c-brand-dark);transform-origin:50%}.lab-readout{text-align:center;font-family:var(--font-mono);color:var(--c-text-muted);margin:1rem 0 0;font-size:.78rem}.lab-actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin:.9rem 0 1rem;display:flex}.lab-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;border-radius:var(--radius-md);border:1px solid var(--c-border);color:var(--c-text);cursor:pointer;background:#fff;padding:.5rem 1.1rem;font-size:.88rem;font-weight:600}.lab-btn--primary{background:var(--c-brand);border-color:var(--c-brand);color:#fff}.lab-btn:focus-visible,.lab-copy:focus-visible,.lab-tab:focus-visible{outline:2px solid var(--c-brand);outline-offset:2px}.lab-hint{color:var(--c-text-muted);font-size:.82rem}.lab-code{border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden}.lab-code-head{background:var(--c-surface);letter-spacing:.05em;text-transform:uppercase;color:var(--c-text-muted);justify-content:space-between;align-items:center;padding:.45rem .75rem;font-size:.76rem;font-weight:700;display:flex}.lab-copy{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--c-border);border-radius:var(--radius-sm);color:var(--c-text-secondary);cursor:pointer;background:#fff;padding:.2rem .6rem;font-size:.74rem;font-weight:700}.lab-code pre{font-family:var(--font-mono);white-space:pre;color:var(--c-text);margin:0;padding:.8rem .75rem;font-size:.78rem;line-height:1.6;overflow-x:auto}.ease-plot-wrap{gap:.4rem;display:grid}#ease-plot{width:100%;height:auto;display:block}.ease-path{fill:none;stroke:var(--c-brand);stroke-width:2.5px;stroke-linecap:round}.ease-path--ghost{stroke:var(--c-text-muted);stroke-width:1.5px;stroke-dasharray:4 4}#ease-grid line{stroke:var(--c-border);stroke-width:1px}.lab-caption{color:var(--c-text-muted);margin:0;font-size:.74rem}.ease-runners{gap:.7rem;display:grid}.ease-track{border-radius:var(--radius-pill,9999px);border:1px solid var(--c-border);background:#fff;height:34px;position:relative}.ease-ball{background:var(--c-brand);border-radius:50%;width:24px;height:24px;margin-top:-12px;position:absolute;top:50%;left:4px}.ease-ball--ghost{background:var(--c-text-muted)}.sd-scroller{border:1px solid var(--c-border);border-radius:var(--radius-lg);background:var(--c-surface);scroll-behavior:auto;height:260px;padding:0 .9rem;overflow-y:auto}.sd-lead{color:var(--c-text-muted);text-align:center;margin:0;padding:8.5rem 0;font-size:.8rem}.sd-card{border:1px solid var(--c-border);border-radius:var(--radius-md);background:#fff;gap:.2rem;margin:.7rem 0;padding:.9rem 1rem;display:grid}.sd-card strong{font-size:.9rem}.sd-card span{color:var(--c-text-secondary);font-size:.82rem}@supports (animation-timeline:view()){.sd-reveal{animation:linear both sd-fade-up view();animation-range:entry 0% entry var(--sd-range,60%)}@keyframes sd-fade-up{0%{opacity:0;transform:translateY(var(--sd-travel,24px))}to{opacity:1;transform:none}}}.lab-rm{border-left:3px solid var(--c-warn);background:var(--c-surface);color:var(--c-text-secondary);margin:1.25rem 0 0;padding:.7rem .85rem;font-size:.85rem}.lab-error{min-height:1.2em;color:var(--c-no);margin:0 0 .6rem;font-size:.82rem}.lab-foot{border-top:1px solid var(--c-border);color:var(--c-text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:1.4rem;padding-top:.8rem;font-size:.78rem;display:flex}.lab-foot a{color:var(--c-brand);font-weight:600}@media (prefers-reduced-motion:reduce){.sd-reveal{opacity:1!important;animation:none!important;transform:none!important}.ease-ball,.zoom-card--target{transition:none!important}}
