.webgl-demo-stage{border:1px solid var(--line-strong);background:#000;border-radius:14px;height:min(70vh,680px);min-height:440px;overflow:hidden}.demo-views{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.demo-views button{border:1px solid var(--line);background:var(--card);min-height:44px;color:var(--muted);font:12px var(--font-code);cursor:pointer;border-radius:8px;padding:10px 16px}.demo-views button[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-wash)}.lab-writeup{border-top:1px solid var(--line);max-width:740px;margin:64px auto 72px;padding-top:28px}.lab-writeup-meta{color:var(--muted);font:11px var(--font-code);justify-content:space-between;gap:16px;margin-bottom:26px;display:flex}.lab-options{flex-wrap:wrap;gap:16px;margin:20px 0 30px;display:flex}.lab-options label{font:11px var(--font-code);color:var(--muted);gap:8px;display:grid}.lab-options select{color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:6px;min-height:40px;padding:6px 12px}.convolution-calculation{font:12px/1.8 var(--font-code);margin-top:20px}.convolution-calculation th,.convolution-calculation td{text-align:left;padding:8px 20px 8px 0}.convolution-spectrum{border-top:1px solid var(--line);margin-top:30px;padding-top:24px}.convolution-spectrum svg{width:100%;max-width:600px;margin-top:12px;display:block}.convolution-spectrum text{fill:var(--muted);font:11px var(--font-code)}.webgl-demo-stage>img,.webgl-demo-stage>iframe{object-fit:contain;border:0;width:100%;height:100%;display:block}.webgl-demo-stage[data-fit-content=true]{height:var(--demo-height,860px)}.webgl-demo-toolbar{flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:20px;font-size:13px;display:flex}.webgl-demo-toolbar button{border:1px solid var(--line-strong);min-height:44px;color:var(--ink);background:var(--card);cursor:pointer;border-radius:8px;padding:10px 20px}.webgl-demo-toolbar a{align-items:center;min-height:44px;display:inline-flex}html:not([data-enhanced]) .webgl-demo-toolbar button,html:not([data-enhanced]) .demo-views{display:none}.webgl-demo-requirement{color:var(--muted);margin-top:16px;font-size:12px}.demo-credit{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px 24px;margin:28px 0 60px;padding-top:24px;font-size:12px;display:flex}.demo-credit a{text-underline-offset:4px;text-decoration:underline}.webgl-demo-stage:fullscreen{border:0;border-radius:0;width:100vw;height:100vh}.webgl-demo-stage:fullscreen iframe{width:100%;height:100%}.lab-toggles{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lab-toggles button{border:1px solid var(--line);background:var(--card);min-height:40px;color:var(--muted);font:12px var(--font-code);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.lab-toggles button[aria-pressed=true]{color:var(--ink);border-color:var(--swatch,var(--line-strong))}.lab-swatch{background:var(--swatch);border-radius:50%;flex:none;width:10px;height:10px}.lab-transport{flex-wrap:wrap;align-items:center;gap:14px;margin:4px 0 24px;display:flex}.lab-transport button{border:1px solid var(--line-strong);background:var(--card);min-height:40px;color:var(--ink);font:12px var(--font-code);cursor:pointer;border-radius:8px;padding:8px 16px}.lab-scrub{min-width:160px;accent-color:var(--accent);flex:1}.lab-layout{grid-template-columns:minmax(0,1.1fr) minmax(220px,.8fr);align-items:start;gap:24px;display:grid}.lab-square-plot{aspect-ratio:1;border:1px solid var(--line-strong);background:var(--card);border-radius:10px;width:100%;display:block}.lab-square-plot.gd-draggable{touch-action:none;cursor:crosshair}.lab-stats{border-collapse:collapse;width:100%;font:11px var(--font-code)}.lab-stats th,.lab-stats td{text-align:left;border-bottom:1px solid var(--line);padding:7px 8px}.lab-stats caption{text-align:left;color:var(--muted);font:11px var(--font-code);caption-side:top;margin-bottom:8px}.lab-chart{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.lab-chart svg{width:100%;max-width:720px;margin-top:12px;display:block}.lab-chart text{fill:var(--muted);font:11px var(--font-code)}.gb-layout{grid-template-columns:minmax(0,1.4fr) minmax(200px,.7fr);align-items:start;gap:24px;display:grid}.gb-plot{aspect-ratio:16/9;border:1px solid var(--line-strong);background:var(--card);border-radius:10px;width:100%;display:block}.gb-plot text{fill:var(--muted);font:10px var(--font-code)}.gb-residuals{margin-top:22px}.gb-residuals svg{aspect-ratio:6;width:100%;max-width:720px;margin-top:10px;display:block}.gb-residuals text{fill:var(--muted);font:11px var(--font-code)}@media (max-width:760px){.lab-layout,.gb-layout,.tm-layout{grid-template-columns:1fr}}.tm-gate{margin:8px 0 24px}.tm-enable{border:1px solid var(--line-strong);min-height:44px;color:var(--ink);background:var(--card);cursor:pointer;font:12px var(--font-code);border-radius:8px;padding:10px 20px}.tm-enable:disabled{opacity:.6;cursor:default}.tm-layout{grid-template-columns:minmax(0,1fr) minmax(240px,.9fr);align-items:start;gap:24px;display:grid}.tm-video-wrap{position:relative}.tm-video{aspect-ratio:4/3;border:1px solid var(--line-strong);object-fit:cover;background:#000;border-radius:10px;width:100%;display:block;transform:scaleX(-1)}.tm-loading{color:var(--ink);background:color-mix(in srgb, var(--paper) 70%, transparent);font:12px var(--font-code);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.tm-classes{flex-direction:column;gap:14px;display:flex}.tm-class-card{border:1px solid var(--line);border-left:3px solid var(--swatch);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.tm-class-card input{color:var(--ink);background:var(--card);border:1px solid var(--line);font:12px var(--font-code);border-radius:6px;padding:6px 10px}.tm-capture{border:1px solid var(--line-strong);background:var(--card);min-height:44px;color:var(--ink);font:12px var(--font-code);cursor:pointer;border-radius:8px}.tm-capture[aria-pressed=true]{color:var(--paper);background:var(--swatch);border-color:var(--swatch)}.tm-capture:disabled{opacity:.5;cursor:default}.tm-confidence{background:var(--line);border-radius:4px;height:6px;overflow:hidden}.tm-confidence-fill{background:var(--swatch);height:100%}.tm-remove,.tm-add{border:1px solid var(--line);background:var(--card);min-height:40px;color:var(--muted);font:11px var(--font-code);cursor:pointer;border-radius:8px}
