:root{--font-display:"IBM Plex Sans", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace;--brand-teal:#0d9488;--brand-teal-d:#0f766e;--brand-teal-l:#2dd4bf;--brand-green:#10b981;--brand-amber:#d97706;--paper:#f7faf9;--paper-2:#edf5f2;--background:#f7faf9;--foreground:#0f172a;--card:#fff;--muted:#f5f7fa;--muted-foreground:#64748b;--border:#e2e8f0;--danger:#e11d48;--shadow:0 18px 45px -32px #0f172a73;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--background:#0b1626;--foreground:#eef4fb;--card:#0f1d30;--muted:#13233a;--muted-foreground:#8ba0bb;--border:#1d2c44;--paper:#0b1626;--paper-2:#0f1d30;--brand-teal:#2dd4bf;--brand-teal-d:#14b8a6;--brand-teal-l:#5eead4;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--font-sans);background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{background-image:linear-gradient(color-mix(in oklab, var(--foreground) 3.5%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklab, var(--foreground) 3.5%, transparent) 1px, transparent 1px);background-size:52px 52px,52px 52px;max-width:100%;min-height:100vh;overflow-x:hidden}.spectrum-strip{background:linear-gradient(90deg, var(--brand-teal-d), var(--brand-teal), var(--brand-teal-l));height:6px}.topbar{z-index:10;height:62px;padding:0 max(16px, env(safe-area-inset-left)) 0 16px;border-bottom:1px solid color-mix(in oklab, var(--border) 86%, transparent);background:color-mix(in oklab, var(--card) 82%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);align-items:center;gap:12px;display:flex;position:sticky;top:0}.brand-mark{width:38px;height:38px;box-shadow:0 10px 22px -15px var(--brand-teal);border-radius:8px;overflow:hidden}.brand-mark svg{width:100%;height:100%;display:block}.brand-copy{align-items:baseline;gap:6px;min-width:0;display:flex}.brand-copy strong{font-family:var(--font-display);letter-spacing:0;color:var(--brand-teal-d);font-size:18px}.brand-copy span{border:1px solid color-mix(in oklab, var(--brand-teal) 30%, var(--border));color:var(--brand-teal-d);background:color-mix(in oklab, var(--brand-teal) 9%, transparent);border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700}.topbar-status{align-items:center;gap:8px;margin-left:auto;display:flex}.main-layout{grid-template-columns:230px minmax(0,1fr);min-width:0;min-height:calc(100vh - 68px);display:grid}.rail{border-right:1px solid var(--border);background:color-mix(in oklab, var(--card) 54%, transparent);flex-direction:column;gap:6px;padding:14px;display:flex}.rail-item{height:42px;color:var(--foreground);text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:0 11px;display:flex}.rail-item.active{border-color:color-mix(in oklab, var(--brand-teal) 34%, var(--border));background:var(--card);box-shadow:var(--shadow)}.workspace{min-width:0;max-width:100%;padding:16px}.screen-grid,.connection-page{grid-template-columns:minmax(270px,360px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.projects-page,.scan-page,.capture-workbench{grid-template-columns:minmax(270px,330px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.project-column,.project-main,.scan-control-column,.scan-results-column,.control-column,.capture-stack{gap:12px;min-width:0;display:grid}.connection-page{grid-template-columns:minmax(290px,440px) minmax(0,1fr)}.project-main,.scan-results-column{align-content:start}.analysis-grid{grid-template-columns:minmax(0,1fr) minmax(260px,.8fr);align-items:stretch;gap:12px;display:grid}.panel{border:1px solid var(--border);background:color-mix(in oklab, var(--card) 92%, transparent);min-width:0;box-shadow:var(--shadow);border-radius:8px;padding:14px}.panel.wide{grid-column:span 1}.capture-screen .panel.wide,.quality-screen .panel.wide,.predict-screen .panel.wide,.library-screen .panel.wide{min-height:360px}.panel-header{color:var(--brand-teal-d);align-items:center;gap:8px;margin-bottom:14px;display:flex}.panel-header h2{letter-spacing:0;margin:0;font-size:15px;line-height:1.2}.transport-grid,.device-option-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.transport-button,.device-option{border:1px solid var(--border);background:var(--muted);min-height:84px;color:var(--foreground);border-radius:8px;place-items:center;gap:6px;display:grid}.device-option{text-align:left;align-content:start;justify-items:start;min-height:144px;padding:12px}.transport-button span,.device-option strong{font-size:12px;font-weight:700}.device-option span{color:var(--muted-foreground);font-size:12px;line-height:1.35}.device-option small{border:1px solid var(--border);color:var(--muted-foreground);border-radius:999px;align-self:end;padding:2px 7px;font-size:11px;font-weight:800}.transport-button.active,.device-option.active{border-color:var(--brand-teal);background:color-mix(in oklab, var(--brand-teal) 12%, var(--card));color:var(--brand-teal-d)}.device-option:disabled{color:var(--muted-foreground)}.context-stack{gap:8px;display:grid}.select-action{grid-template-columns:minmax(0,1fr) 38px;align-items:end;gap:8px;display:grid}.select-action .field{margin-top:0}.context-add{width:38px;height:40px;color:var(--brand-teal-d)}.button-row,.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;display:flex}.primary-button,.ghost-button,.file-button{border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 13px;font-weight:700;display:inline-flex}.primary-button{border:1px solid var(--brand-teal);background:var(--brand-teal);color:#fff}.ghost-button,.file-button{border:1px solid var(--border);background:var(--card);color:var(--foreground)}.ghost-button.full,.primary-button.full,.file-button{width:100%;margin-top:8px}.file-button input{display:none}.scan-button{width:100%;margin-top:12px}.icon-button{border:1px solid var(--border);background:var(--card);width:34px;height:34px;color:var(--muted-foreground);border-radius:8px;place-items:center;display:grid}.field{gap:6px;min-width:0;margin-top:10px;display:grid}.field span,.switch-line span{color:var(--muted-foreground);font-size:12px;font-weight:700}.field input,.field select,.field textarea{border:1px solid var(--border);width:100%;min-height:40px;color:var(--foreground);background:var(--card);border-radius:8px;padding:0 10px}.field textarea{resize:vertical;min-height:74px;padding:9px 10px}.switch-line{align-items:center;gap:9px;margin-top:12px;display:flex}.switch-line input{width:18px;height:18px;accent-color:var(--brand-teal)}.metadata-grid{gap:2px;display:grid}.compat-note{border:1px solid color-mix(in oklab, var(--brand-amber) 38%, var(--border));color:var(--brand-amber);background:color-mix(in oklab, var(--brand-amber) 7%, var(--card));border-radius:8px;align-items:flex-start;gap:8px;margin-top:12px;padding:10px 12px;display:flex}.compat-note span{font-size:12px;font-weight:700;line-height:1.45}.status-pill,.mini-stat,.quality-badge{border:1px solid var(--border);background:var(--card);border-radius:999px;align-items:center;gap:5px;height:28px;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.status-pill.connected,.quality-badge.pass{color:var(--brand-teal-d);border-color:color-mix(in oklab, var(--brand-teal) 40%, var(--border))}.status-pill.busy,.status-pill.connecting,.quality-badge.warn{color:var(--brand-amber);border-color:color-mix(in oklab, var(--brand-amber) 40%, var(--border))}.status-pill.error,.quality-badge.fail{color:var(--danger);border-color:color-mix(in oklab, var(--danger) 38%, var(--border))}.error-banner{border:1px solid color-mix(in oklab, var(--danger) 40%, var(--border));color:var(--danger);background:color-mix(in oklab, var(--danger) 8%, var(--card));border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}.runtime-stack{gap:8px;display:grid}.runtime-stack div{border-bottom:1px solid var(--border);grid-template-columns:minmax(95px,.9fr) minmax(0,1.1fr);align-items:center;gap:10px;min-width:0;padding:8px 0;display:grid}.runtime-stack strong{overflow-wrap:anywhere;min-width:0;font-size:13px}.runtime-stack span{color:var(--muted-foreground);text-align:right;overflow-wrap:anywhere;font-size:12px}.status-grid{gap:10px;margin:0;display:grid}.status-grid div{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding-bottom:8px;display:flex}.status-grid dt{color:var(--muted-foreground);font-size:12px;font-weight:700}.status-grid dd{text-align:right;margin:0;font-weight:700}.progress-block{margin-top:12px}.progress-label{color:var(--muted-foreground);justify-content:space-between;font-size:12px;font-weight:700;display:flex}.progress-track{background:var(--muted);border-radius:999px;height:8px;margin-top:6px;overflow:hidden}.progress-track div{border-radius:inherit;background:linear-gradient(90deg, var(--brand-teal), var(--brand-teal-l));height:100%}.spectrum-view{gap:10px;min-height:300px;display:grid}.spectrum-view.interactive{cursor:zoom-in}.spectrum-view.interactive:focus-visible{outline:2px solid var(--brand-teal);outline-offset:3px;border-radius:8px}.spectrum-view svg{border:1px solid var(--border);background:linear-gradient(color-mix(in oklab, var(--brand-teal) 10%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklab, var(--brand-teal) 10%, transparent) 1px, transparent 1px), var(--card);background-size:42px 42px;border-radius:8px;width:100%;min-height:260px}.spectrum-view polyline{fill:none;stroke:var(--brand-teal);stroke-width:1.8px;vector-effect:non-scaling-stroke}.spectrum-view .quantile-overlay polygon{vector-effect:non-scaling-stroke}.spectrum-view .quantile-overlay polyline{stroke-width:1.1px;stroke-dasharray:3 3;opacity:.9}.spectrum-view .quantile-overlay.project polygon{fill:#2563eb33;fill:lab(44.7906% 21.0478 -75.5989/.2);stroke:#2563eb59;stroke:lab(44.7906% 21.0478 -75.5989/.35)}.spectrum-view .quantile-overlay.project polyline{stroke:#2563eb}.spectrum-view .quantile-overlay.session polygon{fill:#d977063d;fill:lab(60.4928% 34.8862 66.4687/.24);stroke:#d977065c;stroke:lab(60.4928% 34.8862 66.4687/.36)}.spectrum-view .quantile-overlay.session polyline{stroke:#d97706}.spectrum-meta{color:var(--muted-foreground);flex-wrap:wrap;gap:8px;font-size:12px;font-weight:700;display:flex}.spectrum-meta span{border:1px solid var(--border);background:var(--card);border-radius:999px;padding:4px 8px}.quality-view{grid-template-columns:140px 1fr;align-items:start;gap:14px;display:grid}.quality-view.compact{grid-template-columns:110px 1fr}.quality-view.compact .quality-score{min-height:110px}.quality-view.compact .quality-score strong{font-size:34px}.quality-score{border:1px solid var(--border);background:var(--muted);border-radius:8px;place-items:center;min-height:140px;display:grid}.quality-score strong{font-size:42px;line-height:1}.quality-score span{text-transform:uppercase;font-size:12px;font-weight:900}.quality-score.pass{color:var(--brand-teal-d)}.quality-score.warn{color:var(--brand-amber)}.quality-score.fail{color:var(--danger)}.metric-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.metric{border:1px solid var(--border);background:var(--card);border-radius:8px;gap:5px;padding:12px;display:grid}.metric.pass{border-color:color-mix(in oklab, var(--brand-teal) 25%, var(--border))}.metric.fail{border-color:color-mix(in oklab, var(--danger) 30%, var(--border))}.metric span{color:var(--muted-foreground);font-size:12px;font-weight:700}.metric strong{font-size:20px}.metric small{color:var(--muted-foreground)}.list{gap:8px;margin-top:12px;display:grid}.list.compact{max-height:260px;overflow:auto}.list-item,.capture-row{border:1px solid var(--border);background:var(--card);border-radius:8px}.list-item{width:100%;color:var(--foreground);text-align:left;gap:3px;padding:10px;display:grid}.list-item span,.capture-row span{color:var(--muted-foreground);font-size:12px}.list-item.active,.capture-row.active{border-color:var(--brand-teal)}.capture-row{grid-template-columns:1fr 42px;align-items:center;padding:4px;display:grid}.capture-row>button:first-child{min-width:0;color:var(--foreground);text-align:left;background:0 0;border:0;gap:3px;padding:8px;display:grid}.slot-grid{grid-template-columns:repeat(auto-fit,minmax(74px,1fr));gap:8px;margin-top:12px;display:grid}.slot-grid button{border:1px solid var(--border);background:var(--card);min-height:42px;color:var(--foreground);border-radius:8px;font-weight:800}.prediction-result{border:1px solid color-mix(in oklab, var(--brand-teal) 35%, var(--border));background:color-mix(in oklab, var(--brand-teal) 8%, var(--card));border-radius:8px;gap:2px;padding:8px 12px;display:grid}.prediction-result span{color:var(--muted-foreground);font-size:12px}.prediction-result strong{color:var(--brand-teal-d);font-size:24px}.prediction-stack{gap:10px;display:grid}.pipeline-context{border:1px solid var(--border);background:var(--card);border-radius:8px;gap:4px;padding:10px 12px;display:grid}.pipeline-context.ready{border-color:color-mix(in oklab, var(--brand-teal) 34%, var(--border))}.pipeline-context.definition{border-color:color-mix(in oklab, var(--brand-amber) 38%, var(--border))}.pipeline-context span,.pipeline-context small{color:var(--muted-foreground);font-size:12px}.dataset-quality,.batch-overview{gap:12px;display:grid}.segmented-control{border:1px solid var(--border);background:var(--muted);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;display:grid}.segmented-control button{min-height:36px;color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:6px;font-weight:800}.segmented-control button.active{border-color:color-mix(in oklab, var(--brand-teal) 34%, var(--border));background:var(--card);color:var(--brand-teal-d)}.batch-summary-strip,.spectrum-stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.spectrum-stats.compact .metric-card strong{font-size:20px}.batch-capture-table{gap:6px;display:grid}.batch-row{border:1px solid var(--border);background:var(--card);min-height:42px;color:var(--foreground);text-align:left;border-radius:8px;grid-template-columns:minmax(0,1.2fr) minmax(74px,.5fr) minmax(94px,.6fr) 24px;align-items:center;gap:8px;padding:0 10px;display:grid}.batch-row.active{border-color:var(--brand-teal)}.batch-row span{color:var(--muted-foreground);font-size:12px;font-weight:700}.batch-row svg{color:var(--muted-foreground)}.dataset-metrics{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.metric-card{border:1px solid var(--border);background:var(--card);border-radius:8px;gap:4px;padding:12px;display:grid}.metric-card span,.metric-card small{color:var(--muted-foreground);font-size:12px;font-weight:700}.metric-card strong{color:var(--brand-teal-d);font-size:26px;line-height:1}.dataset-detail-row{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;display:grid}.dataset-detail-row div{border:1px solid var(--border);background:color-mix(in oklab, var(--muted) 65%, var(--card));border-radius:8px;gap:4px;padding:10px 12px;display:grid}.dataset-detail-row span{color:var(--muted-foreground);font-size:12px;line-height:1.4}.flag-list{flex-wrap:wrap;gap:8px;display:flex}.flag-list span{border:1px solid var(--border);color:var(--muted-foreground);background:var(--card);border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.modal-backdrop{z-index:30;background:#0f172a70;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.spectrum-dialog{border:1px solid var(--border);background:var(--card);border-radius:8px;width:min(1180px,100%);max-height:min(880px,100vh - 32px);padding:14px;overflow:auto;box-shadow:0 28px 60px -24px #0f172a8c}.dialog-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.dialog-header div{gap:2px;display:grid}.dialog-header span{color:var(--muted-foreground);font-size:12px;font-weight:700}.dialog-grid{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);align-items:start;gap:12px;display:grid}.dialog-main,.dialog-side{gap:12px;min-width:0;display:grid}.detail-meta{border:1px solid var(--border);background:color-mix(in oklab, var(--muted) 62%, var(--card));border-radius:8px;padding:12px}.empty-state{border:1px dashed color-mix(in oklab, var(--border) 75%, var(--muted-foreground));min-height:160px;color:var(--muted-foreground);background:color-mix(in oklab, var(--muted) 60%, transparent);text-align:center;border-radius:8px;place-items:center;padding:18px;display:grid}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (min-width:1040px){.connect-screen,.quality-screen,.predict-screen,.library-screen,.connection-page{grid-template-columns:360px minmax(0,1fr)}.capture-screen{grid-template-columns:340px minmax(0,1fr) 280px}.projects-page,.scan-page{grid-template-columns:340px minmax(0,1fr)}}@media (max-width:820px){.main-layout{padding-bottom:72px;display:block}.rail{z-index:12;height:68px;padding:8px max(10px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));border-top:1px solid var(--border);background:color-mix(in oklab, var(--card) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-right:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;display:grid;position:fixed;bottom:0;left:0;right:0}.rail-item{place-items:center;gap:2px;width:100%;min-width:0;height:52px;padding:0;font-size:10px;display:grid;overflow:hidden}.rail-item svg{width:17px;height:17px}.rail-item span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.workspace{padding:12px}.screen-grid,.connection-page,.projects-page,.scan-page,.capture-workbench,.analysis-grid{grid-template-columns:1fr}.topbar-status .mini-stat,.brand-copy span{display:none}.transport-grid,.device-option-grid,.quality-view,.quality-view.compact,.dialog-grid{grid-template-columns:1fr}.batch-row{grid-template-columns:minmax(0,1fr) 70px 24px}.batch-row span:nth-of-type(2){display:none}.compact-toolbar .ghost-button{flex:145px}}@media (max-width:620px){.select-action{grid-template-columns:minmax(0,1fr)}.context-add{width:100%}.topbar-status{display:none}.segmented-control{grid-template-columns:1fr}.modal-backdrop{padding:8px}}
