:root{--text:#475569;--text-h:#0f172a;--bg:#f1f5f9;--border:#e2e8f0;--card-bg:#fff;--accent:#2563eb;--accent-soft:#eff6ff;--negative:#b91c1c;--shadow:0 1px 2px #0f172a0a, 0 1px 8px #0f172a0a;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}#root{max-width:1240px;margin:0 auto;padding:32px 24px 48px}@media (width<=640px){#root{padding:16px 12px 32px}}h1,h2,h3{color:var(--text-h);letter-spacing:-.01em;font-weight:600}.app-header{margin-bottom:28px}.app-header h1{margin:0 0 12px;font-size:32px}.app-header p{color:var(--text);margin:0;font-size:15px;line-height:1.7}.step-nav{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;gap:4px;margin-bottom:28px;padding:10px 14px;display:flex}.step-indicator{color:var(--text);border-radius:6px;flex:1;justify-content:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.step-indicator.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.step-indicator.completed{color:var(--accent)}.step-indicator.clickable{cursor:pointer}.step-indicator.clickable:hover{background:var(--accent-soft)}.step-number{border:2px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:inline-flex}.step-indicator.active .step-number,.step-indicator.completed .step-number{border-color:var(--accent);background:var(--accent);color:#fff}.toolbar{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding:14px 18px;display:flex}.upload-button,.link-button{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);cursor:pointer;border-radius:6px;align-items:center;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:border-color .15s,color .15s;display:inline-flex}.upload-button:hover,.link-button:hover{border-color:var(--accent);color:var(--accent)}.link-button:disabled{opacity:.6;cursor:default}.upload-button:has(input:disabled){opacity:.6;cursor:default}.primary-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;align-items:center;padding:10px 20px;font-size:14px;font-weight:600;transition:opacity .15s;display:inline-flex}.primary-button:hover{opacity:.9}.primary-button:disabled{opacity:.5;cursor:default}.small-button{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);cursor:pointer;border-radius:4px;align-items:center;margin-right:4px;padding:4px 8px;font-size:12px;transition:border-color .15s;display:inline-flex}.small-button:hover{border-color:var(--accent);color:var(--accent)}.small-button:disabled{opacity:.5;cursor:default}.summary-cards{grid-template-columns:repeat(auto-fit,minmax(215px,1fr));align-items:stretch;gap:16px;margin-bottom:24px;display:grid}.summary-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-top:3px solid var(--accent);border-radius:10px;flex-direction:column;padding:16px 18px;display:flex}.summary-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text);white-space:nowrap;margin-bottom:10px;font-size:12px;font-weight:600}.summary-value{color:var(--text-h);font-size:26px;font-weight:700;line-height:1.2}.chart-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;margin-bottom:24px;padding:18px}.chart-card h3{margin:0 0 12px;font-size:15px;font-weight:600}.table-wrapper{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table th{text-align:left;white-space:nowrap;color:var(--text-h);border-bottom:1px solid var(--border);background:#f8fafc;padding:10px 14px;font-weight:600;position:sticky;top:0}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{color:var(--accent)}.data-table td{border-top:1px solid var(--border);white-space:nowrap;padding:8px 14px}.data-table tbody tr:nth-child(2n){background:#f8fafc}.data-table tbody tr:hover{background:var(--accent-soft)}.data-table.compact{font-size:13px}.data-table.compact th,.data-table.compact td{padding:6px 10px}.mono{font-family:var(--mono);font-size:13px}.status-message{text-align:center;color:var(--text);padding:40px 16px}.status-message.error{color:var(--negative)}.collapsible-section{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;margin-bottom:24px}.collapsible-section summary{cursor:pointer;color:var(--text-h);-webkit-user-select:none;user-select:none;padding:14px 18px;font-size:14px;font-weight:600}.collapsible-section summary:hover{color:var(--accent)}.collapsible-section[open] summary{border-bottom:1px solid var(--border)}.collapsible-section .table-wrapper{border:none;border-radius:0}.collapsible-section .chart-note{margin:0;padding:14px 18px}.upload-panel{flex-direction:column;gap:24px;display:flex}.upload-section h3{margin:0 0 8px;font-size:18px}.upload-section p{color:var(--text);margin:0 0 16px;font-size:14px}.upload-actions{align-items:center;gap:12px;display:flex}.file-name{color:var(--text);margin:8px 0 0;font-size:13px}.target-detected{align-items:center;gap:8px;display:flex}.target-name{font-family:var(--mono);color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:4px 10px;font-size:14px;font-weight:600}.target-none{color:var(--text);font-size:14px;font-style:italic}.target-picker{flex-wrap:wrap;gap:6px;display:flex}.target-option{border:1px solid var(--border);color:var(--text-h);cursor:pointer;border-radius:6px;align-items:center;gap:5px;padding:5px 10px;font-size:13px;transition:border-color .15s;display:inline-flex}.target-option:hover{border-color:var(--accent)}.target-option.selected{border-color:var(--accent);background:var(--accent-soft)}.target-option input[type=radio]{margin:0}.target-option-meta{color:var(--text);font-size:11px}.target-selector{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:12px;padding:14px 18px;display:flex}.target-selector label{color:var(--text-h);white-space:nowrap;font-size:14px;font-weight:600}.target-selector select{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:6px;flex:1;max-width:400px;padding:8px 10px;font-size:14px}.univariate-section{margin-bottom:24px}.threshold-toolbar{flex-wrap:nowrap;align-items:center;gap:12px}.threshold-fields{align-items:center;gap:20px;display:flex}.threshold-field{align-items:center;gap:4px;display:flex}.threshold-field label{color:var(--text);white-space:nowrap;font-size:12px;font-weight:600}.threshold-field input{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:5px;width:60px;padding:5px 8px;font-size:13px}.threshold-divider{background:var(--border);flex-shrink:0;width:1px;height:24px}.selection-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.selection-count{color:var(--text);white-space:nowrap;font-size:13px}.rejected-row{opacity:.45}.rejection-badge{width:20px;height:20px;color:var(--negative);cursor:default;background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.overridden-row{background:#fffbeb!important}.excluded-override-row{background:#fef2f2!important}.override-row td,.exclude-override-row td{border:none!important;padding:0!important}.override-input{background:#fffbeb;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.override-input.exclude{background:#fef2f2}.override-input label{white-space:nowrap;color:#b45309;font-weight:600}.override-input.exclude label{color:var(--negative)}.override-input select{color:var(--text-h);background:#fff;border:1px solid #fbbf24;border-radius:4px;padding:5px 10px;font-size:13px}.override-input.exclude select{border-color:#fca5a5}.override-input input{color:var(--text-h);background:#fff;border:1px solid #fbbf24;border-radius:4px;flex:1;padding:5px 10px;font-size:13px}.override-input.exclude input{border-color:#fca5a5}.excluded-override-row+.excluded-override-row{border-top:none}.description-input{width:100%;min-width:350px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:3px;padding:3px 6px;font-size:12px}.description-input:hover{border-color:var(--border)}.description-input:focus{border-color:var(--accent);background:var(--card-bg);color:var(--text-h);outline:none}.description-input::placeholder{color:#cbd5e1}.iv-inline{font-weight:600}.iv-inline.iv-unpredictive{color:#b91c1c}.iv-inline.iv-weak{color:#b45309}.iv-inline.iv-medium{color:#15803d}.iv-inline.iv-strong{color:#1d4ed8}.iv-inline.iv-very-strong{color:#4338ca}.expanded-row td{border:none!important;padding:0!important}.univariate-table-wrapper{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.sticky-col{background:inherit;z-index:1;position:sticky}.sticky-col-1{right:0}.sticky-col-2{right:44px}thead .sticky-col{z-index:2;background:#f8fafc}tbody tr:nth-child(2n) .sticky-col{background:#f8fafc}tbody tr:hover .sticky-col{background:var(--accent-soft)}.expanded-content{white-space:normal;width:0;min-width:100%;overflow:hidden}.expanded-reasons{background:#fef2f2;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 14px;display:flex}.expanded-reasons-label{letter-spacing:.03em;text-transform:uppercase;color:var(--negative);font-size:11px;font-weight:700}.rejection-tag{color:var(--negative);background:#fff;border:1px solid #fca5a5;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.expanded-chart{background:#fafbfc;padding:12px 14px 4px}.expanded-chart-header h4{color:var(--text-h);margin:0 0 4px;font-size:13px}.expanded-chart-header p{color:var(--text);white-space:normal;word-wrap:break-word;margin:0 0 8px;font-size:12px;line-height:1.5}.highlight-row{background:var(--accent-soft)!important}.heatmap-container{padding:18px}.heatmap-scroll{padding-bottom:8px;overflow-x:auto}.heatmap-svg{display:block}.heatmap-label{fill:var(--text-h);font-size:11px;font-family:var(--sans)}.heatmap-value{font-size:10px;font-family:var(--mono);pointer-events:none}.heatmap-tooltip{color:var(--text-h);background:var(--accent-soft);border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:13px}.heatmap-legend{color:var(--text);justify-content:center;align-items:center;gap:6px;margin-top:14px;font-size:11px;display:flex}.heatmap-legend-bar{background:linear-gradient(90deg,#dc2626,#f8fafc);border-radius:3px;width:60px;height:10px}.heatmap-legend-bar.positive{background:linear-gradient(90deg,#f8fafc,#2563eb)}.cluster-shortlist{margin-bottom:24px}.cluster-shortlist h3{margin:0 0 8px}.cluster-shortlist>p{color:var(--text);margin:0 0 16px;font-size:14px}.cluster-grid{flex-direction:column;gap:16px;display:flex}.cluster-card{overflow:hidden}.cluster-card h4{color:var(--text-h);margin:0 0 10px;font-size:14px}.cluster-card .cluster-description{text-overflow:ellipsis;max-width:250px;overflow:hidden}.cluster-description{color:var(--text);font-size:12px;white-space:normal!important}.cluster-override{border-color:#fbbf24}.top-factor-badge{color:#15803d;vertical-align:middle;background:#f0fdf4;border-radius:8px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-block}.cluster-override-row td{border:none!important;padding:0!important}.cluster-override-input{background:#fffbeb;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.cluster-override-input label{color:#b45309;white-space:nowrap;font-weight:600}.cluster-override-input select{color:var(--text-h);background:#fff;border:1px solid #fbbf24;border-radius:4px;padding:4px 8px;font-size:12px}.cluster-override-input input{color:var(--text-h);background:#fff;border:1px solid #fbbf24;border-radius:4px;flex:1;min-width:120px;padding:4px 8px;font-size:12px}.cluster-replacement-note{color:#1e6590;background:#f0f9ff;padding:4px 10px;font-size:11px}.bin-editor-section summary{padding:12px 18px}.bin-editor-summary{color:var(--text);align-items:center;gap:16px;font-size:13px;display:inline-flex}.bin-editor-summary-name{color:var(--text-h);min-width:180px;font-weight:600}.bin-editor-warning{border-color:#fbbf24}.bin-editor-warning summary{background:#fffbeb}.bin-warning-badge{color:var(--negative);background:#fef2f2;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.bin-editor-body{padding:18px}.bin-editor{flex-direction:column;gap:16px;display:flex}.bin-editor-header{display:none}.monotonic-yes{color:#15803d;font-weight:600}.monotonic-no{color:var(--negative);font-weight:600}.group-cell{text-align:center;color:var(--accent);font-weight:600}.bin-warning{color:#92400e;background:#fffbeb;border:1px solid #fbbf24;border-radius:6px;padding:10px 14px;font-size:13px;font-weight:500}.bin-edge-controls{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.bin-edge-controls input{border:1px solid var(--border);color:var(--text-h);border-radius:4px;width:120px;padding:5px 8px;font-size:13px}.bin-edge-count{color:var(--text);margin-left:auto;font-size:12px}.monotonicity-controls{color:var(--text);align-items:center;gap:10px;font-size:13px;display:flex}.split-row td{border:none!important;padding:0!important}.split-input{background:#fafbfc;align-items:center;gap:8px;padding:8px 14px;font-size:13px;display:flex}.split-input label{white-space:nowrap;color:var(--text)}.split-input input{border:1px solid var(--border);border-radius:4px;width:160px;padding:4px 8px;font-size:13px}.config-field{align-items:center;gap:8px;display:flex}.config-field label{color:var(--text-h);white-space:nowrap;font-size:14px;font-weight:600}.config-field select,.config-field input[type=text]{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:6px;padding:8px 10px;font-size:14px}.config-field select{max-width:300px}.sv-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sv-chip{background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:600;font-family:var(--mono);border-radius:4px;align-items:center;gap:4px;padding:4px 8px;display:inline-flex}.sv-chip-remove{width:16px;height:16px;color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1;display:inline-flex}.sv-chip-remove:hover{background:var(--accent);color:#fff}.sv-chip-input{border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:4px;width:100px;padding:4px 8px;font-size:13px}.sv-chip-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sv-chip-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.chart-note{color:var(--text);margin:-8px 0 12px;font-size:13px}.special-separator td{letter-spacing:.05em;text-transform:uppercase;color:var(--text);font-size:11px;font-weight:700;border-top:2px solid var(--border)!important;background:#f1f5f9!important;padding:8px 14px!important}.special-bin-row{font-style:italic;background:#f8fafc!important}.special-bin-row:hover{background:#f1f5f9!important}.proceed-blocker{color:var(--negative);background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:13px}.proceed-blocker strong{margin-bottom:6px;display:block}.proceed-blocker ul{margin:0;padding-left:18px}.proceed-blocker li{line-height:1.6}.scorecard-panel{flex-direction:column;gap:24px;display:flex}.scorecard-config-panel{flex-direction:column;gap:12px;display:flex}.scorecard-config-panel .toolbar{justify-content:flex-start;gap:12px}.method-toggle{border:1px solid var(--border);border-radius:6px;display:flex;overflow:hidden}.method-btn{border:none;border-right:1px solid var(--border);background:var(--card-bg);color:var(--text);cursor:pointer;padding:6px 12px;font-size:13px;font-weight:500;transition:background .15s,color .15s}.method-btn:last-child{border-right:none}.method-btn:hover{background:var(--accent-soft);color:var(--accent)}.method-btn.active{background:var(--accent);color:#fff}.config-row-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text);white-space:nowrap;min-width:90px;font-size:11px;font-weight:700}.significance{white-space:nowrap;font-size:12px;font-weight:600}.sig-high{color:#15803d}.sig-mid,.sig-low{color:#b45309}.sig-fail{color:var(--negative)}.sig-none{color:var(--text)}.points-positive{color:#15803d;font-weight:600}.points-negative{color:var(--negative);font-weight:600}.round-toggle{color:var(--text-h);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex}.round-toggle input{margin:0}.neg-coef-badge{color:var(--negative);vertical-align:middle;background:#fef2f2;border-radius:3px;margin-left:6px;padding:1px 5px;font-size:9px;font-weight:700;display:inline-block}.master-factor-cell{color:var(--text-h);vertical-align:top;border-right:2px solid var(--border);font-weight:600}.threshold-field input[type=range]{cursor:pointer;width:100px}.threshold-field input[type=month]{border:1px solid var(--border);color:var(--text-h);border-radius:5px;padding:4px 8px;font-size:13px}.forced-factors-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;display:grid}.forced-factor-option{color:var(--text-h);cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:4px 8px;font-size:13px;display:flex}.forced-factor-option:hover{background:var(--accent-soft)}.forced-factor-option input{margin:0}.export-panel{flex-direction:column;gap:24px;display:flex}.export-panel h3{margin:0 0 8px}.export-panel>p{color:var(--text);margin:0;font-size:14px}.audit-table-container{padding:18px}.audit-badge{white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.audit-badge.audit-shortlisted{color:#15803d;background:#f0fdf4}.audit-badge.audit-rejected{color:var(--negative);background:#fef2f2}.audit-badge.audit-override{color:#b45309;background:#fffbeb}tr.audit-shortlisted{background:#fafff7}tr.audit-override{background:#fffef5}.audit-description{min-width:350px;color:var(--text);font-size:12px;white-space:normal!important}.audit-reason{max-width:250px;color:var(--text);font-size:12px;white-space:normal!important}.export-actions{flex-wrap:wrap;gap:12px;display:flex}.psi-green{color:#15803d!important;background-color:#f0fdf4!important}.psi-amber{font-weight:600;color:#b45309!important;background-color:#fffbeb!important}.psi-red{font-weight:600;color:#b91c1c!important;background-color:#fef2f2!important}.iv-green{color:#15803d!important;background-color:#f0fdf4!important}.iv-amber{color:#b45309!important;background-color:#fffbeb!important}.iv-red{color:#b91c1c!important;background-color:#fef2f2!important}.config-summary-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;display:grid}.config-summary-section h4{color:var(--text-h);text-transform:uppercase;letter-spacing:.03em;margin:0 0 8px;font-size:13px;font-weight:700}.config-summary-section dl{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:13px;display:grid}.config-summary-section dt{color:var(--text)}.config-summary-section dd{color:var(--text-h);margin:0;font-weight:600}.next-steps-card{background:var(--accent-soft);border:1px solid var(--accent);border-radius:10px;padding:18px}.next-steps-card h3{color:var(--accent);margin:0 0 8px;font-size:15px}.next-steps-card p{color:var(--text-h);margin:0 0 8px;font-size:14px;line-height:1.6}.next-steps-card p:last-child{margin-bottom:0}.next-steps-card a{color:var(--accent);font-weight:600;text-decoration:none}.next-steps-card a:hover{text-decoration:underline}@media (width<=768px){.app-header h1{font-size:22px}.app-header p{font-size:13px}.step-nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:2px;padding:8px 10px;overflow-x:auto}.step-nav::-webkit-scrollbar{display:none}.step-indicator{white-space:nowrap;flex:none;padding:6px 8px;font-size:11px}.step-number{width:20px;height:20px;font-size:10px}.toolbar{flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px}.threshold-toolbar{flex-wrap:wrap}.threshold-fields{flex-wrap:wrap;gap:8px}.threshold-divider{display:none}.selection-actions{justify-content:space-between;width:100%;margin-left:0}.summary-cards{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.summary-card{padding:12px 14px}.summary-label{margin-bottom:6px;font-size:10px}.summary-value{font-size:20px}.primary-button{justify-content:center;width:100%;padding:10px 16px;font-size:13px}.upload-actions{flex-wrap:wrap}.config-field{flex-wrap:wrap;gap:4px}.config-field select,.config-field input[type=text]{width:100%;max-width:none}.scorecard-config-panel .toolbar{flex-direction:column;align-items:stretch}.config-row-label{margin-bottom:4px}.method-toggle{flex-wrap:wrap}.method-btn{text-align:center;flex:1;padding:6px 10px;font-size:12px}.forced-factors-grid{grid-template-columns:1fr}.data-table{font-size:12px}.data-table th,.data-table td{padding:6px 8px}.data-table.compact th,.data-table.compact td{padding:4px 6px}.bin-editor-summary{flex-wrap:wrap;gap:6px}.bin-editor-summary-name{width:100%;min-width:auto}.bin-edge-controls{flex-wrap:wrap}.bin-edge-count{width:100%;margin-left:0}.monotonicity-controls,.split-input{flex-wrap:wrap;gap:6px}.split-input input{width:100%}.override-input{flex-wrap:wrap;gap:6px}.override-input select,.override-input input{width:100%}.cluster-override-input{flex-direction:column;align-items:stretch;gap:6px}.cluster-override-input select,.cluster-override-input input{width:100%}.heatmap-container{padding:10px}.chart-card{padding:12px}.config-summary-grid{grid-template-columns:1fr;gap:14px}.export-actions{flex-direction:column}.export-actions .primary-button{width:100%}.collapsible-section summary{padding:12px 14px;font-size:13px}.audit-description{min-width:200px}.description-input{min-width:180px}.target-selector{flex-direction:column;align-items:stretch;gap:8px}.target-selector select{max-width:none}.next-steps-card{padding:14px}.next-steps-card p{font-size:13px}}@media (width<=480px){.step-indicator span:not(.step-number){display:none}.step-indicator{flex:none;padding:6px}.step-nav{justify-content:center}.summary-cards{grid-template-columns:1fr 1fr}.threshold-field{width:100%}.threshold-field input{flex:1}}
