:root{--bg-app:#f8fafc;--bg-surface:#fff;--bg-surface-elevated:#fff;--bg-surface-subtle:#f8fafc;--bg-surface-hover:#f1f5f9;--bg-canvas:#fff;--canvas-grid:#f1f5f9;--border-subtle:#e2e8f0;--border-medium:#cbd5e1;--border-strong:#64748b;--border-focus:#0f172a;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--text-dim:#94a3b8;--text-inverse:#fff;--algo-knn:#0284c7;--algo-knn-bg:#f0f9ff;--algo-knn-border:#bae6fd;--algo-svm:#7c3aed;--algo-svm-bg:#f5f3ff;--algo-svm-border:#ddd6fe;--algo-dt:#ea580c;--algo-dt-bg:#fff7ed;--algo-dt-border:#ffedd5;--class-a:#2563eb;--class-a-bg:#eff6ff;--class-b:#ea580c;--class-b-bg:#fff7ed;--topbar-height:52px;--theory-height:120px;--theory-min-height:36px;--left-panel-width:280px;--right-panel-width:290px;--shadow-sm:0 1px 2px #0f172a0d;--shadow-md:0 4px 12px #0f172a14;--shadow-lg:0 12px 24px -4px #0f172a1f;--font-main:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", SFMono-Regular, Menlo, Monaco, Consolas, monospace;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-smooth:.24s cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;-webkit-font-smoothing:antialiased;margin:0;padding:0}html,body{background-color:var(--bg-app);width:100vw;height:100vh;color:var(--text-primary);font-family:var(--font-main);-webkit-user-select:none;user-select:none;margin:0;padding:0;font-size:13px;line-height:1.45;overflow:hidden}#root{flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.vlab-shell{background:var(--bg-app);flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.vlab-workspace{transition:all var(--transition-smooth);flex:1;display:flex;position:relative;overflow:hidden}.vlab-panel-left{width:var(--left-panel-width);min-width:var(--left-panel-width);background:var(--bg-surface);border-right:1px solid var(--border-subtle);height:100%;transition:width var(--transition-smooth), min-width var(--transition-smooth), transform var(--transition-smooth);z-index:10;flex-direction:column;display:flex;overflow:hidden}.vlab-panel-left.collapsed{border-right:none;overflow:hidden;width:0!important;min-width:0!important}.vlab-panel-right{width:var(--right-panel-width);min-width:var(--right-panel-width);background:var(--bg-surface);border-left:1px solid var(--border-subtle);height:100%;transition:width var(--transition-smooth), min-width var(--transition-smooth), transform var(--transition-smooth);z-index:10;flex-direction:column;display:flex;overflow:hidden}.vlab-panel-right.collapsed{border-left:none;overflow:hidden;width:0!important;min-width:0!important}.vlab-canvas-host{background-color:var(--bg-canvas);flex-direction:column;flex:1;height:100%;display:flex;position:relative;overflow:hidden}.panel-header{border-bottom:1px solid var(--border-subtle);background:#fff;justify-content:space-between;align-items:center;height:42px;min-height:42px;padding:0 14px;display:flex}.panel-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-primary);align-items:center;gap:8px;font-size:11.5px;font-weight:700;display:flex}.panel-content{flex-direction:column;flex:1;gap:14px;padding:12px 14px;display:flex;overflow:hidden auto}.panel-content::-webkit-scrollbar{width:4px}.panel-content::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}.btn{font-family:var(--font-main);cursor:pointer;transition:all var(--transition-fast);border:1px solid #0000;border-radius:6px;outline:none;justify-content:center;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary{color:#fff;box-shadow:var(--shadow-sm);background:#0f172a}.btn-primary:hover{background:#1e293b;box-shadow:0 2px 6px #0f172a26}.btn-primary:active{transform:translateY(1px)}.btn-outline{border-color:var(--border-subtle);color:var(--text-secondary);background:#fff}.btn-outline:hover{background:var(--bg-surface-hover);border-color:var(--border-medium);color:var(--text-primary)}.btn-icon-toggle{border:1px solid var(--border-subtle);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:#fff;border-radius:6px;justify-content:center;align-items:center;padding:0;display:flex}.btn-icon-toggle:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-medium)}.btn-icon-toggle.active{color:#fff;background:#0f172a;border-color:#0f172a}.info-btn{border:1px solid var(--border-subtle);width:18px;height:18px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:10px;display:inline-flex}.info-btn:hover{border-color:var(--text-primary);color:var(--text-primary);background:var(--bg-surface-hover)}.modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#0f172a59;justify-content:center;align-items:center;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal-card{border:1px solid var(--border-subtle);width:460px;max-width:90vw;box-shadow:var(--shadow-lg);background:#fff;border-radius:12px;flex-direction:column;animation:.18s cubic-bezier(.16,1,.3,1) scaleUp;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid var(--border-subtle);background:#f8fafc;justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-title{color:var(--text-primary);align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.modal-body{color:var(--text-secondary);flex-direction:column;gap:12px;padding:18px;font-size:13px;line-height:1.55;display:flex}.modal-close-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;display:flex}.modal-close-btn:hover{background:var(--border-subtle);color:var(--text-primary)}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%,-46%)}to{opacity:1;transform:translate(-50%,-50%)}}@keyframes scaleUp{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.vlab-topbar{height:var(--topbar-height);background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:50;justify-content:space-between;align-items:center;padding:0 14px;display:flex}.topbar-left{align-items:center;gap:12px;display:flex}.brand-lockup{font-family:var(--font-main);align-items:baseline;gap:6px;display:flex}.brand-title{letter-spacing:-.03em;color:var(--text-primary);font-size:15px;font-weight:800}.brand-dot{color:var(--border-medium);font-weight:300}.brand-sub{color:var(--text-muted);font-size:12px;font-weight:500}.topbar-center{align-items:center;gap:14px;display:flex}.algo-badge-pill{border:1px solid var(--border-subtle);color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff;border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.pill-dot{background-color:var(--pill-accent);border-radius:50%;width:7px;height:7px}.dataset-counter{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:6px;align-items:center;gap:8px;padding:3px 10px;font-size:11.5px;display:flex}.cnt-item{color:var(--text-secondary);align-items:center;gap:5px;display:flex}.cnt-dot{border-radius:50%;width:7px;height:7px}.a-dot{background-color:var(--class-a)}.b-dot{background-color:var(--class-b)}.cnt-divider{background-color:var(--border-medium);width:1px;height:12px}.cnt-total{font-family:var(--font-mono);color:var(--text-muted);font-size:11px}.cnt-total b{color:var(--text-primary)}.topbar-right{align-items:center;gap:10px;display:flex}.toggle-wrapper{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:flex}.toggle-wrapper input{display:none}.toggle-switch{background-color:var(--border-medium);width:28px;height:16px;transition:background-color var(--transition-fast);border-radius:20px;position:relative}.toggle-switch:before{content:"";width:12px;height:12px;transition:transform var(--transition-fast);background-color:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.toggle-wrapper input:checked+.toggle-switch{background-color:#0f172a}.toggle-wrapper input:checked+.toggle-switch:before{transform:translate(12px)}.toggle-text{color:var(--text-secondary);font-size:11.5px;font-weight:500}.active-toggle{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-strong)}.btn-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:11px;height:11px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.guide-modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#0f172a73;justify-content:center;align-items:center;padding:20px;animation:.18s ease-out fadeIn;display:flex;position:fixed;inset:0}.guide-modal-container{border:1px solid var(--border-medium);background:#fff;border-radius:12px;flex-direction:column;width:760px;max-width:95vw;max-height:88vh;animation:.2s cubic-bezier(.16,1,.3,1) modalScale;display:flex;overflow:hidden;box-shadow:0 20px 35px -5px #0f172a33,0 0 0 1px #0f172a0d}.guide-modal-header{border-bottom:1px solid var(--border-subtle);background:#fcfdfe;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.guide-header-left{align-items:center;gap:12px;display:flex}.guide-header-icon{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);width:36px;height:36px;color:var(--text-primary);border-radius:8px;justify-content:center;align-items:center;display:flex}.guide-header-title{color:var(--text-primary);font-size:15px;font-weight:700;line-height:1.2}.guide-header-desc{color:var(--text-muted);margin-top:2px;font-size:11.5px}.guide-close-btn{width:30px;height:30px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.guide-close-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.guide-tabs-bar{background:var(--bg-surface-subtle);border-bottom:1px solid var(--border-subtle);gap:6px;padding:0 16px;display:flex}.guide-tab-item{font-family:var(--font-main);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 14px;font-size:12px;font-weight:600}.guide-tab-item:hover{color:var(--text-primary)}.guide-tab-item.active{color:var(--text-primary);border-bottom-color:#0f172a}.guide-modal-body{flex-direction:column;flex:1;gap:16px;padding:18px 20px;display:flex;overflow-y:auto}.guide-modal-body::-webkit-scrollbar{width:5px}.guide-modal-body::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:4px}.guide-steps-list{flex-direction:column;gap:12px;display:flex}.step-card{border:1px solid var(--border-subtle);background:#fff;border-radius:8px;gap:14px;padding:12px 14px;display:flex;box-shadow:0 1px 2px #0f172a08}.step-badge{font-family:var(--font-mono);color:#0f172a;background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);white-space:nowrap;border-radius:6px;height:fit-content;padding:3px 8px;font-size:10.5px;font-weight:700}.step-content{flex-direction:column;flex:1;gap:6px;display:flex}.step-title{color:var(--text-primary);font-size:13px;font-weight:700}.step-text{color:var(--text-secondary);font-size:12px;line-height:1.45}.step-bullets{color:var(--text-secondary);flex-direction:column;gap:4px;margin-left:16px;font-size:12px;display:flex}.step-bullets b{color:var(--text-primary)}.step-subgrid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px;display:grid}.subgrid-card{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:6px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.card-mini-tag{text-transform:uppercase;border-radius:4px;width:fit-content;padding:1px 5px;font-size:9.5px;font-weight:700}.knn-tag{color:#0284c7;background:#e0f2fe}.svm-tag{color:#7c3aed;background:#f3e8ff}.dt-tag{color:#ea580c;background:#ffedd5}.subgrid-card p{color:var(--text-muted);font-size:11px;line-height:1.35}.guide-algo-details{flex-direction:column;gap:14px;display:flex}.algo-deep-dive{border:1px solid var(--border-subtle);background:#fff;border-radius:8px;flex-direction:column;gap:8px;padding:14px;display:flex}.dive-header{align-items:center;gap:10px;display:flex}.dive-pill{border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.knn-pill{color:#0369a1;background:#e0f2fe}.svm-pill{color:#6d28d9;background:#f3e8ff}.dt-pill{color:#c2410c;background:#ffedd5}.dive-type{color:var(--text-muted);font-size:11px}.dive-text{color:var(--text-secondary);font-size:12px;line-height:1.5}.dive-insight{background:var(--bg-surface-subtle);border-left:3px solid var(--text-primary);color:var(--text-primary);border-radius:0 4px 4px 0;padding:8px 10px;font-size:11.5px}.guide-shortcuts-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.shortcut-card{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:8px;flex-direction:column;gap:4px;padding:12px;display:flex}.shortcut-key{font-family:var(--font-mono);border:1px solid var(--border-medium);width:fit-content;color:var(--text-primary);background:#fff;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;box-shadow:0 1px 2px #0000000d}.shortcut-info{color:var(--text-secondary);font-size:11.5px;line-height:1.4}.shortcut-info b{color:var(--text-primary)}.guide-modal-footer{border-top:1px solid var(--border-subtle);background:#f8fafc;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.footer-tip{color:var(--text-secondary);max-width:500px;font-size:11.5px}.footer-tip b{color:var(--text-primary)}@keyframes modalScale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.panel-section{flex-direction:column;gap:8px;display:flex}.section-label-row{justify-content:space-between;align-items:center;display:flex}.section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:700}.panel-collapse-trigger{width:22px;height:22px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;display:flex}.panel-collapse-trigger:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.algo-segmented-control{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:8px;gap:2px;padding:3px;display:flex}.algo-tab-btn{color:var(--text-secondary);font-family:var(--font-main);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:6px 4px;font-size:11.5px;font-weight:600;display:flex}.algo-tab-btn:hover{color:var(--text-primary)}.algo-tab-btn.active{border-color:var(--border-subtle);color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff}.algo-tab-indicator{background-color:var(--tab-accent);border-radius:50%;width:6px;height:6px}.controls-stack{flex-direction:column;gap:10px;display:flex}.control-row-card{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:8px;flex-direction:column;gap:6px;padding:8px 10px;display:flex;position:relative}.control-header-line{justify-content:space-between;align-items:center;display:flex}.label-with-info{align-items:center;gap:6px;display:flex}.control-title{color:var(--text-secondary);font-size:11.5px;font-weight:600}.info-bubble-btn{border:1px solid var(--border-medium);width:15px;height:15px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:#fff;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:9.5px;font-weight:700;display:flex}.info-bubble-btn:hover{color:#fff;background:#0f172a;border-color:#0f172a}.control-value-chip{font-family:var(--font-mono);color:var(--text-primary);border:1px solid var(--border-subtle);background:#fff;border-radius:4px;padding:1px 6px;font-size:11.5px;font-weight:700}.control-floating-tooltip{z-index:30;color:#f8fafc;box-shadow:var(--shadow-md);pointer-events:none;background:#0f172a;border-radius:6px;margin-top:4px;padding:8px 10px;font-size:11px;line-height:1.4;animation:.15s ease-out fadeIn;position:absolute;top:100%;left:0;right:0}.slider-box{flex-direction:column;gap:3px;display:flex}.slider-bounds{font-family:var(--font-mono);color:var(--text-dim);justify-content:space-between;font-size:9.5px;display:flex}.clean-select{font-family:var(--font-main);border:1px solid var(--border-subtle);color:var(--text-primary);cursor:pointer;background:#fff;border-radius:6px;outline:none;padding:5px 8px;font-size:11.5px;font-weight:500}.formula-toggle-btn{border:1px dashed var(--border-subtle);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.formula-toggle-btn:hover{background:var(--bg-surface-subtle);color:var(--text-primary)}.formula-drawer{border:1px solid var(--border-subtle);text-align:center;font-family:var(--font-mono);color:var(--text-primary);background:#fff;border-radius:6px;padding:8px;font-size:11px}.panel-bottom-action{margin-top:auto;padding-top:6px}.btn-block{width:100%}.canvas-viewport{background-color:#fff;flex:1;width:100%;height:calc(100% - 42px);position:relative;overflow:hidden}.canvas-viewport canvas{width:100%;height:100%;display:block}.cursor-crosshair{cursor:crosshair}.cursor-eraser{cursor:cell}.canvas-empty-overlay{text-align:center;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px dashed var(--border-medium);max-width:320px;box-shadow:var(--shadow-sm);background:#ffffffe6;border-radius:12px;flex-direction:column;align-items:center;padding:24px;animation:.4s ease-out fadeIn;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-icon-card{background:var(--color-primary-subtle);width:48px;height:48px;color:var(--color-primary);border-radius:12px;justify-content:center;align-items:center;margin-bottom:12px;display:flex}.empty-title{color:var(--text-primary);margin-bottom:6px;font-size:14px;font-weight:600}.empty-subtitle{color:var(--text-secondary);font-size:12px;line-height:1.4}.empty-subtitle b{color:var(--text-primary)}.canvas-toolbar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:20;align-items:center;gap:10px;height:38px;padding:0 12px;display:flex}.tool-segment{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:6px;gap:2px;padding:2px;display:flex}.segment-btn{font-family:var(--font-main);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:5px;padding:3px 8px;font-size:11.5px;font-weight:500;display:inline-flex}.segment-btn:hover{color:var(--text-primary)}.segment-btn .dot{border-radius:50%;width:7px;height:7px}.segment-btn .a-dot{background-color:var(--class-a)}.segment-btn .b-dot{background-color:var(--class-b)}.segment-btn.active.class-a{border-color:var(--border-subtle);color:var(--class-a);box-shadow:var(--shadow-sm);background:#fff;font-weight:700}.segment-btn.active.class-b{border-color:var(--border-subtle);color:var(--class-b);box-shadow:var(--shadow-sm);background:#fff;font-weight:700}.segment-btn.active.eraser{color:#b91c1c;background:#fef2f2;border-color:#fecaca;font-weight:700}.toolbar-v-divider{background-color:var(--border-subtle);width:1px;height:18px}.preset-cluster{align-items:center;gap:4px;display:flex}.cluster-label{text-transform:uppercase;color:var(--text-dim);margin-right:2px;font-size:10.5px;font-weight:700}.chip-btn{font-family:var(--font-main);border:1px solid var(--border-subtle);background:var(--bg-surface-subtle);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-radius:4px;padding:3px 7px;font-size:11px;font-weight:500}.chip-btn:hover{color:var(--text-primary);border-color:var(--border-medium);background:#fff}.action-cluster{align-items:center;gap:4px;display:flex}.icon-action-btn{border:1px solid var(--border-subtle);width:26px;height:26px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:#fff;border-radius:4px;justify-content:center;align-items:center;display:flex}.icon-action-btn:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--text-primary)}.icon-action-btn:disabled{opacity:.3;cursor:not-allowed}.icon-action-btn.active-grid{color:#fff;background:#0f172a;border-color:#0f172a}.coord-monitor{font-family:var(--font-mono);color:var(--text-muted);margin-left:auto;font-size:10.5px}.coord-monitor b{color:var(--text-primary)}.coord-idle{font-family:var(--font-main);color:var(--text-dim);font-size:11px}.clean-metric-card{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;display:flex;position:relative}.card-top-row{justify-content:space-between;align-items:center;display:flex}.title-with-info{align-items:center;gap:6px;display:flex}.card-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:11px;font-weight:700}.card-badge{text-transform:uppercase;border:1px solid var(--border-subtle);color:var(--text-muted);background:#fff;border-radius:4px;padding:1px 5px;font-size:9.5px;font-weight:600}.accuracy-big-val{font-family:var(--font-mono);color:var(--text-primary);font-size:26px;font-weight:800;line-height:1}.mini-progress-track{background:var(--border-subtle);border-radius:3px;width:100%;height:5px;overflow:hidden}.mini-progress-fill{background:#0f172a;border-radius:3px;height:100%;transition:width .3s}.metrics-triad{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.triad-item{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);text-align:center;border-radius:6px;flex-direction:column;gap:2px;padding:8px 6px;display:flex}.triad-label{text-transform:uppercase;color:var(--text-muted);font-size:9.5px;font-weight:600}.triad-val{font-family:var(--font-mono);color:var(--text-primary);font-size:13px;font-weight:700}.compact-cm{grid-template-columns:44px 1fr 1fr;gap:4px;font-size:11px;display:grid}.cm-header-lbl,.cm-row-lbl{color:var(--text-dim);justify-content:center;align-items:center;font-size:9.5px;font-weight:600;display:flex}.cm-cell{font-family:var(--font-mono);text-align:center;border:1px solid var(--border-subtle);background:#fff;border-radius:4px;padding:7px 4px;font-weight:700}.cm-cell.hit{color:#15803d;background:#f0fdf4;border-color:#bbf7d0}.cm-cell.miss{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.cm-placeholder{text-align:center;color:var(--text-muted);border:1px dashed var(--border-subtle);background:#fff;border-radius:6px;padding:16px;font-size:11px}.bv-container{flex-direction:column;gap:6px;display:flex}.bv-line-labels{color:var(--text-muted);justify-content:space-between;font-size:9.5px;display:flex}.bv-track-bar{background:#e2e8f0;border-radius:3px;width:100%;height:6px;position:relative}.bv-pin{background:#0f172a;border:2px solid #fff;border-radius:50%;width:12px;height:12px;transition:left .25s;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 1px 3px #0000004d}.vlab-theory-strip{height:var(--theory-height);min-height:var(--theory-height);background:var(--bg-surface);border-top:1px solid var(--border-subtle);z-index:40;transition:all var(--transition-smooth);flex-direction:column;gap:8px;padding:8px 16px 10px;display:flex}.vlab-theory-strip.minimized{height:var(--theory-min-height);min-height:var(--theory-min-height);cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0 16px;display:flex}.minimized-strip-content{width:100%;color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:11.5px;display:flex}.minimized-title b{color:var(--text-primary)}.expand-hint{color:var(--text-muted);font-size:11px;font-weight:600}.theory-header-bar{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding-bottom:4px;display:flex}.theory-header-left{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);align-items:center;gap:6px;font-size:11px;font-weight:700;display:flex}.theory-minimize-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:10.5px;font-weight:600}.theory-minimize-btn:hover{color:var(--text-primary)}.theory-columns-grid{flex:1;grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.theory-col{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:6px;flex-direction:column;gap:4px;padding:6px 10px;display:flex;overflow:hidden}.theory-col.highlight{border-color:var(--border-medium);background:#fff}.col-tag{text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:700}.col-desc{color:var(--text-secondary);font-size:11.5px;line-height:1.35;overflow-y:auto}.col-desc::-webkit-scrollbar{width:3px}.col-desc::-webkit-scrollbar-thumb{background:var(--border-subtle)}
