*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:#0f172a;overscroll-behavior:none;background:#f8fafc;font-family:IBM Plex Sans,Segoe UI,sans-serif}.app-shell{background:var(--app-bg);width:100%;height:100%;color:var(--ui-fg);flex-direction:column;transition:background-color .2s,color .2s;display:flex;overflow:hidden}.app-shell.theme-light{--ui-fg:#0f172a;--ui-border:#0f172a33;--control-bg:#ffffffdb;--status-bg:#ffffffe0;--focus:#0ea5e9;--log-info:#64748b;--log-warning:#a16207;--log-error:#b91c1c;--log-success:#15803d;--diff-add-bg:#16a34a29;--diff-remove-bg:#dc26261f}.app-shell.theme-dark{--ui-fg:#f8fafc;--ui-border:#f8fafc57;--control-bg:#0f172a6b;--status-bg:#0f172a80;--focus:#67e8f9;--log-info:#94a3b8;--log-warning:#facc15;--log-error:#fca5a5;--log-success:#86efac;--diff-add-bg:#22c55e38;--diff-remove-bg:#f8717133}.top-bar{border-bottom:1px solid var(--ui-border);background:var(--app-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;white-space:nowrap;align-items:center;gap:10px;height:44px;min-height:44px;padding:0 12px;display:flex;overflow:auto hidden}.menu-field{color:var(--ui-fg);letter-spacing:.01em;align-items:center;gap:6px;font-size:12px;display:inline-flex}.menu-select{border:1px solid var(--ui-border);background:var(--control-bg);min-width:128px;height:28px;color:var(--ui-fg);border-radius:6px;padding:0 8px;font-size:12px}.menu-input{border:1px solid var(--ui-border);background:var(--control-bg);width:78px;height:28px;color:var(--ui-fg);border-radius:6px;padding:0 8px;font-size:12px}.menu-select:focus-visible,.menu-input:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.scale-preview{border:1px solid var(--ui-border);background:var(--control-bg);border-radius:6px;flex:none;width:176px;height:26px;overflow:hidden}.scale-preview-canvas{width:100%;height:100%;position:relative}.app-main{flex:1;min-height:0;position:relative;overflow:hidden}.vis-root{background:var(--app-bg);width:100%;min-width:0;height:100%;min-height:0;position:relative}.panel-group{width:100%;min-width:0;height:100%;min-height:0;overflow:hidden}.panel-shell{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.panel-resize-handle{background:color-mix(in srgb, var(--app-bg) 78%, var(--ui-border));touch-action:none;flex:none;position:relative}.panel-resize-handle:after{content:"";background:var(--ui-border);opacity:.72;border-radius:999px;position:absolute}.panel-resize-handle-vertical{cursor:col-resize;width:8px}.panel-resize-handle-vertical:after{width:2px;top:14px;bottom:14px;left:50%;transform:translate(-50%)}.panel-resize-handle-horizontal{cursor:row-resize;height:8px}.panel-resize-handle-horizontal:after{height:2px;top:50%;left:14px;right:14px;transform:translateY(-50%)}.panel-resize-handle:hover,.panel-resize-handle:active,.panel-resize-handle[data-resize-handle-state=drag]{background:color-mix(in srgb, var(--app-bg) 70%, var(--focus))}.vis-pane{background:var(--app-bg);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.vis-pane-main{padding:0;overflow:hidden}.vis-pane-heatmap,.vis-pane-status,.vis-pane-hover{padding:10px;overflow:hidden}.vis-canvas{position:absolute;inset:0}.vis-status{border:1px solid var(--ui-border);background:var(--status-bg);min-width:0;min-height:0;color:var(--ui-fg);pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:3px;flex-direction:column;flex:1;padding:6px 10px;font-size:12px;display:flex;position:relative;overflow:hidden}.vis-hover-panel{border:1px solid var(--ui-border);background:var(--status-bg);min-width:0;min-height:0;color:var(--ui-fg);overscroll-behavior:contain;pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:4px;flex:1;padding:8px 10px;position:relative;overflow:hidden auto}.vis-hover-panel-light{box-shadow:0 4px 18px #0f172a14}.vis-hover-panel-dark{box-shadow:0 4px 20px #02061759}.vis-hover-title{letter-spacing:.01em;font-size:12px;font-weight:600}.vis-hover-empty{opacity:.82;margin-top:6px;font-size:11px}.vis-hover-meta{opacity:.86;margin-top:4px;font-size:11px}.vis-hover-block{margin-top:8px}.vis-hover-label{opacity:.72;letter-spacing:.01em;font-size:11px}.vis-hover-text{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;margin-top:2px;font-size:14px;line-height:1.35}.vis-hover-meta-list{gap:4px;margin-top:4px;display:grid}.vis-hover-meta-row{grid-template-columns:minmax(90px,140px) 1fr;align-items:start;gap:8px;display:grid}.vis-hover-meta-key{opacity:.75;overflow-wrap:anywhere;font-size:11px}.vis-hover-meta-value{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-size:11px;line-height:1.32}.ablation-panel{border:1px solid var(--ui-border);background:var(--status-bg);min-width:0;min-height:0;color:var(--ui-fg);pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:4px;flex-direction:column;flex:1;padding:8px 10px;display:flex;position:relative;overflow:hidden}.ablation-panel-header{justify-content:space-between;align-items:center;gap:6px;display:flex}.ablation-panel-header-actions{gap:6px;display:flex}.ablation-panel-title-wrap{align-items:center;gap:6px;min-width:0;display:inline-flex}.ablation-panel-title{letter-spacing:.01em;font-size:12px;font-weight:600}.ablation-panel-help{display:inline-flex;position:relative}.ablation-panel-help-button{border:1px solid var(--ui-border);background:var(--control-bg);width:18px;height:18px;color:var(--ui-fg);cursor:help;border-radius:999px;padding:0;font-size:11px;line-height:1}.ablation-panel-help-tooltip{z-index:20;border:1px solid var(--ui-border);background:var(--status-bg);opacity:0;pointer-events:none;border-radius:3px;width:min(420px,72vw);padding:8px;font-size:10px;line-height:1.4;transition:opacity .12s,transform .12s;position:absolute;top:calc(100% + 6px);left:0;transform:translateY(-2px);box-shadow:0 8px 24px #0f172a24}.ablation-panel-help:hover .ablation-panel-help-tooltip,.ablation-panel-help:focus-within .ablation-panel-help-tooltip{opacity:1;pointer-events:auto;transform:translateY(0)}.ablation-panel-help-title{margin-bottom:2px;font-size:11px;font-weight:600}.ablation-panel-help-subtitle{opacity:.9;margin-top:4px;font-size:10px;font-weight:600}.ablation-panel-help-code{margin:3px 0;font-family:IBM Plex Mono,SFMono-Regular,Menlo,monospace}.ablation-panel-button{border:1px solid var(--ui-border);background:var(--control-bg);height:22px;color:var(--ui-fg);cursor:pointer;border-radius:3px;padding:0 8px;font-size:10px}.ablation-panel-button:disabled{opacity:.62;cursor:not-allowed}.ablation-panel-controls{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.ablation-panel-controls-tight{gap:4px}.ablation-panel-field{align-items:center;gap:4px;font-size:10px;display:inline-flex}.ablation-panel-field-wide{flex:150px;min-width:150px}.ablation-panel-select{border:1px solid var(--ui-border);background:var(--control-bg);height:22px;color:var(--ui-fg);border-radius:3px;padding:0 6px;font-size:10px}.ablation-panel-input{border:1px solid var(--ui-border);background:var(--control-bg);height:22px;color:var(--ui-fg);border-radius:3px;min-width:66px;padding:0 6px;font-size:10px}.ablation-panel-check{align-items:center;gap:4px;font-size:10px;display:inline-flex}.ablation-panel-accordion{border:1px solid var(--ui-border);background:color-mix(in srgb, var(--control-bg) 88%, transparent);border-radius:3px;margin-top:4px;overflow:hidden}.ablation-panel-accordion-trigger{width:100%;height:24px;color:var(--ui-fg);cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:8px;padding:0 8px;display:flex}.ablation-panel-accordion-trigger:hover{background:color-mix(in srgb, var(--control-bg) 80%, transparent)}.ablation-panel-accordion-title{letter-spacing:.01em;font-size:10px;font-weight:600}.ablation-panel-accordion-icon{opacity:.76;font-size:10px}.ablation-panel-accordion-content{border-top:1px solid var(--ui-border);padding:6px}.ablation-panel-accordion-content .ablation-panel-controls{margin-top:0}.ablation-panel-selection{flex-direction:column;gap:4px;display:flex}.ablation-panel-selection-top{flex-wrap:wrap;gap:8px;display:flex}.ablation-panel-selection-list{flex-direction:column;gap:4px;max-height:96px;padding-right:2px;display:flex;overflow:hidden auto}.ablation-panel-selection-row{grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:6px;display:grid}.ablation-panel-selection-id{opacity:.88;font-family:IBM Plex Mono,SFMono-Regular,Menlo,monospace;font-size:10px}.ablation-panel-selection-meta{opacity:.72;min-width:32px;font-size:10px}.ablation-panel-selection-empty{opacity:.66;font-size:10px}.ablation-panel-range{flex-direction:column;gap:2px;margin-top:4px;display:flex}.ablation-panel-range-header{opacity:.84;grid-template-columns:1fr auto;font-size:10px;display:grid}.ablation-panel-double-slider{height:18px;position:relative}.ablation-panel-double-slider-track,.ablation-panel-double-slider-fill{border-radius:999px;height:4px;position:absolute;top:50%;transform:translateY(-50%)}.ablation-panel-double-slider-track{background:color-mix(in srgb, var(--app-bg) 65%, var(--ui-border));left:0;right:0}.ablation-panel-double-slider-fill{background:var(--focus)}.ablation-panel-double-slider-input{appearance:none;pointer-events:none;background:0 0;width:100%;height:18px;margin:0;position:absolute;inset:0}.ablation-panel-double-slider-input-lower{z-index:2}.ablation-panel-double-slider-input-upper{z-index:3}.ablation-panel-double-slider-input::-webkit-slider-runnable-track{background:0 0;height:4px}.ablation-panel-double-slider-input::-moz-range-track{background:0 0;border:0;height:4px}.ablation-panel-double-slider-input::-webkit-slider-thumb{appearance:none;pointer-events:auto;border:1px solid color-mix(in srgb, var(--focus) 65%, black);background:var(--focus);cursor:pointer;border-radius:999px;width:12px;height:12px;margin-top:-4px}.ablation-panel-double-slider-input::-moz-range-thumb{pointer-events:auto;border:1px solid color-mix(in srgb, var(--focus) 65%, black);background:var(--focus);cursor:pointer;border-radius:999px;width:12px;height:12px}.ablation-panel-legend{margin-top:4px}.ablation-panel-legend-compact{margin-top:2px}.ablation-panel-legend-bar{border:1px solid var(--ui-border);border-radius:999px;height:6px}.ablation-panel-legend-labels{opacity:.76;justify-content:space-between;margin-top:2px;font-size:10px;display:flex}.ablation-panel-status{opacity:.86;margin-top:2px;font-size:10px}.ablation-panel-canvas{border:1px solid var(--ui-border);background:var(--control-bg);border-radius:3px;flex:1;min-height:0;margin-top:4px;position:relative;overflow:hidden}.vis-lasso-overlay{z-index:13;cursor:crosshair;position:absolute;inset:0}.vis-lasso-svg{width:100%;height:100%}.vis-lasso-line{fill:none;stroke:#0ea5e9f2;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.vis-lasso-fill{fill:#0ea5e924;stroke:none}.vis-controls{z-index:15;pointer-events:auto;gap:8px;display:flex;position:absolute;top:12px;left:12px}.vis-control-button{border:1px solid var(--ui-border);background:var(--control-bg);height:28px;color:var(--ui-fg);cursor:pointer;border-radius:3px;padding:0 10px;font-size:12px}.vis-control-button:disabled{opacity:.62;cursor:not-allowed}.point-edit-popover{z-index:20;border:1px solid var(--ui-border);background:var(--status-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:330px;max-height:min(70vh,640px);color:var(--ui-fg);border-radius:4px;padding:10px;position:absolute;overflow:hidden auto;box-shadow:0 6px 22px #0206172e}.point-edit-title{letter-spacing:.01em;font-size:12px;font-weight:600}.point-edit-drag-handle{cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:3px;justify-content:space-between;align-items:center;gap:8px;margin:-2px -2px 0;padding:2px;display:flex}.point-edit-drag-handle:hover{background:color-mix(in srgb, var(--control-bg) 84%, transparent)}.point-edit-drag-label{opacity:.68;letter-spacing:.02em;text-transform:uppercase;font-size:10px}.point-edit-textarea{resize:vertical;border:1px solid var(--ui-border);background:var(--control-bg);width:100%;min-height:74px;max-height:130px;color:var(--ui-fg);border-radius:3px;margin-top:8px;padding:8px;font-size:12px;line-height:1.4}.point-edit-textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.point-diff{border:1px solid var(--ui-border);background:var(--control-bg);border-radius:3px;max-height:108px;margin-top:8px;padding:8px;overflow:hidden auto}.point-diff-list{flex-direction:column;gap:0;display:flex}.point-diff-separator{border-top:1px solid var(--ui-border);opacity:.72;margin:8px 2px 2px}.point-diff-title{opacity:.78;letter-spacing:.01em;margin-bottom:4px;font-size:11px}.point-diff-content{overflow-wrap:anywhere;word-break:break-word;font-size:11px;line-height:1.38}.point-diff-token-equal{opacity:.92}.point-diff-token-add{color:var(--log-success);background:var(--diff-add-bg);border-radius:3px;padding:0 2px}.point-diff-token-remove{color:var(--log-error);background:var(--diff-remove-bg);border-radius:3px;padding:0 2px;text-decoration:line-through}.point-edit-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.point-edit-button{border:1px solid var(--ui-border);background:var(--control-bg);height:28px;color:var(--ui-fg);cursor:pointer;border-radius:6px;padding:0 10px;font-size:12px}.point-edit-button:disabled{opacity:.62;cursor:progress}.point-edit-button-secondary{opacity:.84}.point-edit-button-wide{flex:1 0 100%}.point-edit-button-danger{color:#fca5a5;border-color:#ef444473}.point-edit-error{color:#f87171;margin-top:6px;font-size:11px;line-height:1.3}.vis-status-subtitle{opacity:.85;margin-top:3px;font-size:11px}.vis-status-log{overscroll-behavior:contain;pointer-events:auto;flex-direction:column;flex:1;gap:3px;min-height:0;margin-top:6px;padding-right:2px;display:flex;overflow:hidden auto}.vis-status-log-line{border-left:2px solid #0000;border-radius:3px;align-items:flex-start;gap:6px;padding-left:6px;font-size:11px;line-height:1.25;display:flex}.vis-status-log-line-info{color:var(--log-info);border-left-color:var(--log-info)}.vis-status-log-line-warning{color:var(--log-warning);border-left-color:var(--log-warning)}.vis-status-log-line-error{color:var(--log-error);border-left-color:var(--log-error)}.vis-status-log-line-success{color:var(--log-success);border-left-color:var(--log-success)}.vis-status-log-phase{text-transform:uppercase;letter-spacing:.03em;opacity:.86;min-width:48px}.vis-status-log-message{opacity:.95;overflow-wrap:anywhere;word-break:break-word}@media (width<=760px){.top-bar{gap:6px;padding:0 8px;overflow-x:auto}.menu-select{min-width:112px}}
