.projection-lab{--lab-ink:var(--primary);--lab-muted:var(--text-muted);--lab-border:var(--border-medium);--lab-surface:color-mix(in srgb, var(--surface) 94%, var(--accent-light));--lab-user:#0fa76e;--lab-pca:#d65f2e;--lab-blue:#3b73d9;background:linear-gradient(180deg, color-mix(in srgb, var(--accent-light) 42%, transparent), transparent 360px), var(--bg);min-height:100vh;padding:28px 0 42px}[data-theme=dark] .projection-lab{--lab-surface:#151515;--lab-blue:#7da2ff}.projection-shell{width:min(1180px,94vw);margin:0 auto}.projection-header{grid-template-columns:minmax(260px,.9fr) minmax(320px,1.1fr);align-items:end;gap:28px;margin-bottom:18px;display:grid}.projection-kicker{color:var(--lab-blue);text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px;font-size:.78rem;font-weight:700}.projection-header h1{color:var(--lab-ink);letter-spacing:0;margin:0;font-size:clamp(2rem,3.25vw,3.35rem);line-height:1.02}.projection-nowrap{white-space:nowrap}.projection-header p:last-child{max-width:680px;color:var(--text);margin:0;font-size:clamp(.98rem,1.45vw,1.14rem)}.projection-toolbar,.projection-panel{border:1px solid var(--lab-border);background:var(--lab-surface);box-shadow:var(--shadow-sm);border-radius:8px}.projection-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:12px;display:flex}.projection-toolbar label{color:var(--lab-muted);align-items:center;gap:8px;margin-right:auto;font-size:.92rem;font-weight:600;display:flex}.projection-toolbar select,.projection-toolbar button{border:1px solid var(--lab-border);background:var(--surface);min-height:38px;color:var(--text);font:inherit;border-radius:8px}.projection-toolbar select{width:190px;padding:0 34px 0 12px}.projection-toolbar button{cursor:pointer;padding:0 14px;font-weight:700}.projection-toolbar button:hover,.projection-toolbar button:focus{border-color:var(--accent);color:var(--primary)}.projection-toolbar button[data-pca-view]{background:var(--primary);color:var(--bg);border-color:var(--primary)}.projection-workbench{grid-template-columns:minmax(360px,.92fr) minmax(420px,1.08fr);align-items:stretch;gap:12px;display:grid}.projection-panel{min-width:0;overflow:hidden}.projection-panel-head{border-bottom:1px solid var(--lab-border);justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:12px 14px;display:flex}.projection-panel h2{color:var(--lab-ink);margin:0;font-size:.95rem}.projection-panel-head span{color:var(--lab-muted);font-size:.88rem;font-weight:600}.projection-scene{cursor:grab;touch-action:none;height:clamp(360px,54vh,620px);min-height:360px}.projection-scene:active{cursor:grabbing}.projection-scene canvas,.projection-canvas{width:100%;height:100%;display:block}.projection-panel--plot{grid-template-rows:auto minmax(360px,1fr);display:grid}.projection-canvas{background:color-mix(in srgb, var(--surface) 88%, var(--accent-light));min-height:360px}.projection-lower{grid-template-columns:minmax(280px,1fr) minmax(300px,1fr) minmax(300px,1fr);gap:12px;margin-top:12px;display:grid}.projection-panel--sliders,.projection-panel--metrics,.projection-panel--note{padding:14px}.projection-panel--sliders h2,.projection-panel--metrics h2,.projection-panel--note h2{margin-bottom:12px}.projection-panel--sliders label{min-height:42px;color:var(--lab-muted);grid-template-columns:72px minmax(120px,1fr) 58px;align-items:center;gap:10px;font-size:.9rem;display:grid}.projection-panel--sliders output{color:var(--text);font-variant-numeric:tabular-nums;text-align:right}.projection-panel--sliders input[type=range]{width:100%;accent-color:var(--accent)}.projection-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.projection-metrics div{border:1px solid var(--lab-border);background:var(--surface);border-radius:8px;min-height:74px;padding:10px}.projection-metrics span{color:var(--lab-muted);font-size:.82rem;display:block}.projection-metrics strong{color:var(--lab-ink);font-variant-numeric:tabular-nums;margin-top:6px;font-size:clamp(1.35rem,2vw,1.8rem);line-height:1;display:block}.projection-panel--note p{color:var(--text);margin:0}.projection-panel--scene.is-loading .projection-scene:before{content:"Loading 3D view";height:100%;color:var(--lab-muted);place-items:center;display:grid}@media (width<=920px){.projection-header,.projection-workbench,.projection-lower{grid-template-columns:1fr}.projection-header{align-items:start}.projection-toolbar label{width:100%;margin-right:0}.projection-toolbar select{flex:1;width:auto}.projection-toolbar button{flex:132px}}@media (width<=560px){.projection-lab{padding-top:18px}.projection-shell{width:min(100% - 24px,1180px)}.projection-header{gap:14px}.projection-scene,.projection-canvas,.projection-panel--plot{min-height:320px}.projection-panel--sliders label{grid-template-columns:64px minmax(100px,1fr)}.projection-panel--sliders output{text-align:left;grid-column:2;margin-top:-8px}.projection-metrics{grid-template-columns:1fr}}
