:root{font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.4;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;width:100%}.appLayout{display:grid;grid-template-columns:minmax(0,1fr) 410px;height:100vh;overflow:hidden;background:#030712;color:#e5e7eb}.scenePane{height:100vh;position:relative}.scenePane canvas{display:block}.leftTransformMenu{position:absolute;top:1rem;left:1rem;width:min(360px,calc(100% - 2rem));max-height:calc(100vh - 2rem);overflow:hidden;border:1px solid #1f2937;border-radius:.55rem;background:#0f172af2;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;pointer-events:auto}.leftTransformHeader{display:flex;align-items:center;justify-content:space-between;padding:.55rem .65rem;border-bottom:1px solid #1f2937}.leftTransformHeader h3{margin:0;font-size:.9rem}.leftTransformToggle{padding:.28rem .55rem;font-size:.78rem}.leftTransformBody{max-height:calc(100vh - 7.5rem);overflow-y:auto;overscroll-behavior:contain;padding:.65rem;display:grid;gap:.65rem}.sidebar{overflow-y:auto;overscroll-behavior:contain;border-left:1px solid #1f2937;background:#0f172a;padding:1rem}.sidebarHeader h1{margin:0;font-size:1.3rem}.sidebarHeader p{margin:.45rem 0 .8rem;color:#9ca3af;font-size:.92rem}.panelSection{margin-top:1rem;border:1px solid #1f2937;background:#111827;border-radius:.55rem}.panelSection h2{margin:0;padding:.7rem .8rem;border-bottom:1px solid #1f2937;font-size:.98rem}.panelBody{padding:.8rem}.jointRow{display:grid;gap:.4rem}.jointRow+.jointRow{margin-top:.8rem}.sweepCard{margin-top:.85rem;border:1px solid #334155;border-radius:.45rem;background:#0b1220;padding:.6rem}.sweepCard h4{margin:0 0 .6rem;font-size:.86rem;color:#cbd5e1}.batchCard{border:1px solid #334155;border-radius:.45rem;background:#0b1220;padding:.6rem}.batchCard h4{margin:0 0 .6rem;font-size:.86rem;color:#cbd5e1}.batchTextarea{min-height:70px;resize:vertical}.batchCompactGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.batchErrorText{color:#f87171}.sweepGrid{display:grid;gap:.4rem;margin-bottom:.65rem}.transformSection{display:grid;gap:.7rem;margin-top:.9rem}.transformCard{border:1px solid #334155;border-radius:.45rem;background:#0b1220;padding:.6rem}.transformCard h4{margin:0 0 .45rem;font-size:.84rem;color:#cbd5e1}.transformGroup{display:grid;gap:.35rem}.transformGroup+.transformGroup{margin-top:.45rem}.transformGroup span{font-size:.76rem;color:#94a3b8}.jointHeader{display:flex;justify-content:space-between;font-size:.88rem;color:#cbd5e1}.controlGrid{display:grid;gap:.45rem;margin-bottom:.75rem}.fieldLabel{font-size:.83rem;color:#cbd5e1}.numberInput{width:100%;box-sizing:border-box;border:1px solid #334155;background:#020617;color:#e2e8f0;border-radius:.35rem;padding:.35rem .45rem}.buttonRow{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.primaryButton,.secondaryButton,.dangerButton,.objectNameButton{border:1px solid #334155;border-radius:.38rem;background:#1e293b;color:#e2e8f0;padding:.4rem .6rem;cursor:pointer}.primaryButton{border-color:#2563eb;background:#1d4ed8}.dangerButton{border-color:#7f1d1d;background:#7f1d1d}.fileButton{display:inline-flex;align-items:center}.readoutGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem;margin-bottom:.75rem}.readoutCard{border:1px solid #334155;border-radius:.45rem;background:#0f172a;padding:.55rem}.readoutCard h4{margin:0;font-size:.75rem;color:#94a3b8}.readoutCard p{margin:.38rem 0 0;font-size:.92rem}.logTableWrap{max-height:250px;overflow:auto;border:1px solid #334155;border-radius:.45rem}.logTable{width:100%;border-collapse:collapse;font-size:.76rem}.logTable th,.logTable td{padding:.35rem;border-bottom:1px solid #1f2937;text-align:left}.emptyState{margin:0;color:#94a3b8;font-size:.85rem}.statusText{margin:0;color:#94a3b8;font-size:.82rem}.objectList{display:grid;gap:.75rem}.objectCard{border:1px solid #334155;border-radius:.45rem;padding:.6rem;background:#0b1220}.objectCardSelected{border-color:#38bdf8}.objectHeader{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.objectNameButton{background:transparent;border:none;padding:0;font-weight:600}.vectorGroup{margin-top:.55rem}.vectorGroup h5{margin:0 0 .35rem;font-size:.8rem;color:#cbd5e1}.tripleInputRow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.axisField{display:grid;gap:.3rem;font-size:.74rem;color:#cbd5e1}.evalPage{min-height:100vh;background:#030712;color:#e5e7eb;padding:1.5rem 2.5rem;max-width:1400px;margin:0 auto}.evalHeader{margin-bottom:1.5rem}.evalHeader h1{margin:.6rem 0 .25rem;font-size:1.5rem}.evalHeader p{margin:0;color:#94a3b8;font-size:.92rem}.evalSplitLayout{display:grid;grid-template-columns:minmax(320px,430px) minmax(0,1fr);gap:1rem;align-items:start}.evalControlsPane{display:grid;gap:1rem;position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow-y:auto;padding-right:.2rem}.evalControlsPane .evalIngestSection,.evalControlsPane .evalSection{margin-bottom:0}.evalResultsPane{min-width:0}.evalIngestSection{border:1px solid #1f2937;background:#0f172a;border-radius:.55rem;padding:1rem 1.2rem;margin-bottom:1.5rem}.evalIngestSection h3{margin:0 0 .65rem;font-size:1rem}.evalIngestRow{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.evalCalcRow{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap;margin-top:.75rem}.evalRangeField{min-width:260px}.evalHint{color:#64748b;font-size:.82rem}.evalHint code{color:#94a3b8;background:#1e293b;padding:.1rem .3rem;border-radius:3px;font-size:.78rem}.evalProcessing{color:#facc15;margin:.6rem 0 0;font-size:.88rem}.evalStatusList{margin-top:.75rem;display:grid;gap:.3rem;max-height:220px;overflow-y:auto}.evalStatusRow{display:flex;align-items:center;gap:.6rem;font-size:.82rem;padding:.3rem .5rem;border-radius:.3rem;background:#111827}.evalStatusBadge{font-weight:700;font-size:.7rem;padding:.12rem .4rem;border-radius:3px;min-width:52px;text-align:center}.evalStatus-ok .evalStatusBadge{background:#065f46;color:#6ee7b7}.evalStatus-skipped .evalStatusBadge{background:#78350f;color:#fde68a}.evalStatus-error .evalStatusBadge{background:#7f1d1d;color:#fca5a5}.evalStatusName{color:#cbd5e1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.evalStatusMsg{color:#64748b}.evalSection{border:1px solid #1f2937;background:#0f172a;border-radius:.55rem;padding:1rem 1.2rem;margin-bottom:1.5rem}.evalSection h3{margin:0 0 .75rem;font-size:1rem}.evalTransformGrid{display:grid;gap:.7rem;margin-top:.75rem}.evalSectionHeader{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.evalSectionHeader h3{margin:0}.evalTableWrap{overflow-x:auto;border:1px solid #334155;border-radius:.45rem}.evalTable{width:100%;border-collapse:collapse;font-size:.78rem}.evalTable th,.evalTable td{padding:.4rem .55rem;border-bottom:1px solid #1f2937;text-align:left;white-space:nowrap}.evalTable th{background:#111827;color:#94a3b8;font-weight:600;position:sticky;top:0}.evalFileCell{max-width:180px;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:#cbd5e1}.evalErrorCell{color:#f87171;max-width:200px;overflow:hidden;text-overflow:ellipsis}.evalPlotsGrid{display:grid;gap:1.5rem}.evalPlotCard{border:1px solid #334155;border-radius:.45rem;background:#111827;padding:1rem}.evalPlotCard h4{margin:0 0 .65rem;font-size:.92rem;color:#cbd5e1}.plotAxisControls{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}.plotAxisGrid{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:.45rem;flex:1}.sineFitSection h3{margin:0 0 .75rem;font-size:1rem}.sineFitSection h3 code{font-size:.82rem;color:#94a3b8;background:#1e293b;padding:.15rem .4rem;border-radius:3px}.sineFitCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem}.sineFitCard{border:1px solid #334155;border-radius:.45rem;background:#111827;padding:.7rem .85rem}.sineFitCard h5{margin:0 0 .45rem;font-size:.84rem;color:#cbd5e1}.sineFitGrid{display:grid;gap:.25rem;font-size:.8rem;font-family:monospace;color:#94a3b8}.sineFitError{color:#f87171;font-size:.8rem;margin:0}.scanPerPlotGrid{display:grid;gap:1rem}.scanPerPlotCard{border:1px solid #334155;border-radius:.45rem;background:#111827;padding:.85rem}.scanPerPlotHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;margin-bottom:.5rem}.scanPerPlotHeader h4{margin:0;font-size:.9rem;color:#cbd5e1;max-width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scanPerPlotStats{display:grid;gap:.2rem;font-size:.76rem;color:#94a3b8;text-align:right}@media(max-width:1200px){.appLayout{grid-template-columns:1fr;height:auto;min-height:100vh;overflow:visible}.sidebar{border-left:0;border-top:1px solid #1f2937}.evalPage{padding:1rem}.evalSplitLayout{grid-template-columns:1fr}.evalControlsPane{position:static;max-height:none;overflow:visible;padding-right:0}.plotAxisGrid{grid-template-columns:repeat(2,minmax(110px,1fr))}}
