:root {
  --font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --ui-text-scale: 1;
  --ui-control-height: 36px;
  --ui-field-pad-y: 0.56rem;
  --ui-field-pad-x: 0.64rem;
  --ui-button-pad-y: 0.56rem;
  --ui-button-pad-x: 0.72rem;
  --ui-chip-font-size: 0.82rem;
  --ui-label-font-size: 0.86rem;
  --ui-status-font-size: 0.84rem;
  --ui-workspace-tab-font-size: 0.8rem;
  --ui-workspace-tab-pad-y: 0.34rem;
  --ui-workspace-tab-pad-x: 0.7rem;
  --ui-widget-context-title-size: 0.72rem;
  --ui-widget-context-item-font-size: 0.82rem;
  --ui-widget-context-item-pad-y: 0.34rem;
  --ui-widget-context-item-pad-x: 0.46rem;
  --ui-metric-pad-y: 0.58rem;
  --ui-metric-pad-x: 0.62rem;
  --ui-metric-gap: 0.12rem;
  --ui-metric-label-size: 0.79rem;
  --ui-metric-value-size: 1.08rem;
  --ui-grid-gap: 0.7rem;
  --ui-panel-padding: 0.75rem;
  --ui-panel-row-gap: 0.65rem;
  --ui-dockview-pad: 0.45rem;
  --ui-dockview-tab-font-size: 15px;
  --ui-dockview-tab-height: 46px;
  --ui-table-font-size: 0.92rem;
  --ui-table-cell-pad-y: 0.28rem;
  --ui-table-cell-pad-x: 0.32rem;
  --ui-code-pad-y: 0.5rem;
  --ui-code-pad-x: 0.55rem;
  --ui-code-font-size: 0.82rem;
  --ui-strategy-panel-button-font-size: 0.82rem;
  --ui-strategy-panel-button-pad-y: 0.28rem;
  --ui-strategy-panel-button-pad-x: 0.62rem;
  --ui-strategy-action-min-height: 2rem;
  --ui-strategy-chip-font-size: 0.8rem;
  --ui-strategy-chip-pad-y: 0.24rem;
  --ui-strategy-chip-pad-x: 0.5rem;
  --ui-strategy-summary-card-pad-y: 0.5rem;
  --ui-strategy-summary-card-pad-x: 0.58rem;
  --ui-strategy-summary-label-size: 0.74rem;
  --ui-strategy-summary-value-size: 1.18rem;
  --ui-strategy-summary-meta-size: 0.78rem;
  --ui-strategy-section-padding: 0.7rem;
  --ui-strategy-section-gap: 0.58rem;
  --ui-strategy-detail-gap: 0.7rem;
  --ui-strategy-card-padding: 0.68rem;
  --ui-strategy-form-label-size: 0.82rem;
  --ui-strategy-quick-settings-pad: 0.55rem;
  --ui-strategy-setting-label-size: 0.78rem;
  --ui-strategy-row-btn-min-height: 1.68rem;
  --ui-strategy-row-btn-font-size: 0.78rem;
  --ui-strategy-row-btn-pad-y: 0.18rem;
  --ui-strategy-row-btn-pad-x: 0.38rem;
  --ui-strategy-state-badge-font-size: 0.78rem;
  --ui-strategy-state-badge-pad-y: 0.2rem;
  --ui-strategy-state-badge-pad-x: 0.48rem;
  --ui-window-fit-factor: 1;

  --bg: #07090f;
  --bg-gradient: linear-gradient(180deg, #070b12 0%, #05070f 100%);
  --text: #eef1fa;
  --text-primary: var(--text);
  --muted: #a6adc4;
  --text-muted: var(--muted);
  --eyebrow-color: #9cb6ff;
  --meta-color: #c2ccff;
  --panel-bg: rgba(13, 18, 30, 0.78);
  --panel-border: rgba(144, 169, 226, 0.25);
  --panel-shadow: rgba(5, 7, 15, 0.4);
  --input-bg: rgba(15, 22, 36, 0.9);
  --input-border: rgba(142, 167, 224, 0.25);
  --input-text: var(--text);
  --border: var(--panel-border);
  --bg-overlay: color-mix(in oklab, var(--panel-bg) 92%, var(--bg) 8%);
  --hover-bg: color-mix(in oklab, var(--accent) 10%, transparent);
  --active-bg: color-mix(in oklab, var(--accent) 18%, transparent);
  --code-bg: color-mix(in oklab, var(--bg) 72%, black 28%);
  --fg: var(--text);
  --accent: #7bc4ff;
  --accent-2: #8cffc5;
  --danger: #ff6b88;
  --ok: #8cffc5;
  --warn: #ffd84d;
  --success: #8cffc5;
  --warning: #ffd84d;
  --accent-positive: var(--success);
  --accent-negative: var(--danger);
  --tab-bg: rgba(255, 255, 255, 0.06);
  --tab-text: color-mix(in oklab, var(--text) 76%, var(--muted) 24%);
  --tab-active-bg: color-mix(in oklab, var(--accent) 78%, var(--accent-2) 22%);
  --tab-active-text: #05070f;
  --secondary-border: color-mix(in oklab, var(--panel-border) 80%, var(--text) 20%);
  --secondary-bg: transparent;
  --secondary-text: var(--text);
  --ghost-border: var(--input-border);
  --ghost-text: var(--text);
  --table-cell-color: var(--text);
  --table-head: var(--muted);
  --table-sticky-head-bg: color-mix(in oklab, var(--bg) 84%, black 16%);
  --chart-card-bg: color-mix(in oklab, var(--panel-bg) 92%, var(--bg) 8%);
  --chart-card-border: var(--panel-border);
  --chart-title: var(--muted);
  --fmp-method-full-ew: #4f8ef7;
  --fmp-method-full-zw: #f76f6f;
  --fmp-method-q10: #3ecf8e;
  --fmp-method-q20: #a855f7;
  --fmp-method-q33: #f5a623;
  --fmp-method-q10-zw: #22d3ee;
  --fmp-method-top-12: #fbbf24;
  --fmp-method-top-24: #fb923c;
  --fmp-method-top-50: #f97316;
  --fmp-method-default: #fbbf24;
  --fmp-factor-1: #7eb8f7;
  --fmp-factor-2: #f7c77e;
  --fmp-factor-3: #7ef7c0;
  --fmp-factor-4: #f77eb8;
  --fmp-factor-5: #c07ef7;
  --fmp-factor-6: #f7f07e;
  --fmp-factor-7: #7ec8f7;
  --fmp-factor-8: #f79e7e;
  --fmp-chart-axis: #c4cff6;
  --fmp-chart-grid: #1b1f2d;
  --fmp-chart-muted: #aab6d8;
  --fmp-chart-tooltip-bg: #1b1f2d;
  --fmp-chart-tooltip-border: #2a2f42;
  --fmp-chart-tooltip-text: #e4e6f0;
  --fmp-chart-legend: #e8ecf8;
  --fmp-chart-pnl: #4f8ef7;
  --fmp-chart-icir: #f7c77e;
  --fmp-chart-dd: #f76f6f;
  --fmp-chart-empty: #c4cff6;
  --fmp-chart-line-width: 1.5;
  --fmp-chart-active-line-width: 2.5;
  --fmp-chart-dd-line-width: 1.2;
  --fmp-chart-dd-active-line-width: 2;
  --fmp-chart-helper-line-width: 1.1;
  --fmp-chart-helper-active-line-width: 1.8;
  --fmp-chart-dim-opacity: 0.72;
  --fmp-chart-helper-opacity: 0.78;
  --fmp-chart-helper-dim-opacity: 0.45;
  --sig-chart-axis: var(--muted);
  --sig-chart-grid: var(--border);
  --sig-chart-bar: #d9a441;
  --sig-chart-bar-active: var(--accent);
  --sig-chart-pie-1: #d9a441;
  --sig-chart-pie-2: #38bdf8;
  --sig-chart-pie-3: var(--success);
  --sig-chart-pie-4: #f97316;
  --sig-chart-pie-5: #a78bfa;
  --sig-chart-pie-6: var(--danger);
  --sig-chart-pie-7: var(--accent);
  --sig-chart-pie-8: #facc15;
}

body[data-density='compact'] {
  --ui-control-height: 32px;
  --ui-field-pad-y: 0.4rem;
  --ui-field-pad-x: 0.52rem;
  --ui-button-pad-y: 0.4rem;
  --ui-button-pad-x: 0.6rem;
  --ui-chip-font-size: 0.78rem;
  --ui-label-font-size: 0.82rem;
  --ui-status-font-size: 0.8rem;
  --ui-workspace-tab-font-size: 0.76rem;
  --ui-workspace-tab-pad-y: 0.28rem;
  --ui-workspace-tab-pad-x: 0.58rem;
  --ui-widget-context-title-size: 0.7rem;
  --ui-widget-context-item-font-size: 0.78rem;
  --ui-widget-context-item-pad-y: 0.28rem;
  --ui-widget-context-item-pad-x: 0.4rem;
  --ui-metric-pad-y: 0.46rem;
  --ui-metric-pad-x: 0.5rem;
  --ui-metric-gap: 0.08rem;
  --ui-metric-label-size: 0.74rem;
  --ui-metric-value-size: 0.98rem;
  --ui-grid-gap: 0.5rem;
  --ui-panel-padding: 0.56rem;
  --ui-panel-row-gap: 0.48rem;
  --ui-dockview-pad: 0.28rem;
  --ui-dockview-tab-font-size: 13px;
  --ui-dockview-tab-height: 38px;
  --ui-table-font-size: 0.82rem;
  --ui-table-cell-pad-y: 0.2rem;
  --ui-table-cell-pad-x: 0.24rem;
  --ui-code-pad-y: 0.4rem;
  --ui-code-pad-x: 0.46rem;
  --ui-code-font-size: 0.78rem;
  --ui-strategy-panel-button-font-size: 0.78rem;
  --ui-strategy-panel-button-pad-y: 0.2rem;
  --ui-strategy-panel-button-pad-x: 0.5rem;
  --ui-strategy-action-min-height: 1.6rem;
  --ui-strategy-chip-font-size: 0.76rem;
  --ui-strategy-chip-pad-y: 0.18rem;
  --ui-strategy-chip-pad-x: 0.42rem;
  --ui-strategy-summary-card-pad-y: 0.42rem;
  --ui-strategy-summary-card-pad-x: 0.48rem;
  --ui-strategy-summary-label-size: 0.7rem;
  --ui-strategy-summary-value-size: 1.06rem;
  --ui-strategy-summary-meta-size: 0.74rem;
  --ui-strategy-section-padding: 0.58rem;
  --ui-strategy-section-gap: 0.46rem;
  --ui-strategy-detail-gap: 0.56rem;
  --ui-strategy-card-padding: 0.56rem;
  --ui-strategy-form-label-size: 0.78rem;
  --ui-strategy-quick-settings-pad: 0.44rem;
  --ui-strategy-setting-label-size: 0.74rem;
  --ui-strategy-row-btn-min-height: 1.45rem;
  --ui-strategy-row-btn-font-size: 0.72rem;
  --ui-strategy-row-btn-pad-y: 0.12rem;
  --ui-strategy-row-btn-pad-x: 0.28rem;
  --ui-strategy-state-badge-font-size: 0.72rem;
  --ui-strategy-state-badge-pad-y: 0.14rem;
  --ui-strategy-state-badge-pad-x: 0.34rem;
}

body[data-density='roomy'] {
  --ui-control-height: 40px;
  --ui-field-pad-y: 0.66rem;
  --ui-field-pad-x: 0.74rem;
  --ui-button-pad-y: 0.66rem;
  --ui-button-pad-x: 0.82rem;
  --ui-chip-font-size: 0.86rem;
  --ui-label-font-size: 0.9rem;
  --ui-status-font-size: 0.88rem;
  --ui-workspace-tab-font-size: 0.84rem;
  --ui-workspace-tab-pad-y: 0.4rem;
  --ui-workspace-tab-pad-x: 0.78rem;
  --ui-widget-context-title-size: 0.74rem;
  --ui-widget-context-item-font-size: 0.86rem;
  --ui-widget-context-item-pad-y: 0.4rem;
  --ui-widget-context-item-pad-x: 0.52rem;
  --ui-metric-pad-y: 0.66rem;
  --ui-metric-pad-x: 0.72rem;
  --ui-metric-gap: 0.16rem;
  --ui-metric-label-size: 0.82rem;
  --ui-metric-value-size: 1.16rem;
  --ui-grid-gap: 0.86rem;
  --ui-panel-padding: 0.92rem;
  --ui-panel-row-gap: 0.8rem;
  --ui-dockview-pad: 0.58rem;
  --ui-dockview-tab-font-size: 16px;
  --ui-dockview-tab-height: 50px;
  --ui-table-font-size: 1rem;
  --ui-table-cell-pad-y: 0.34rem;
  --ui-table-cell-pad-x: 0.38rem;
  --ui-code-pad-y: 0.6rem;
  --ui-code-pad-x: 0.66rem;
  --ui-code-font-size: 0.86rem;
  --ui-strategy-panel-button-font-size: 0.86rem;
  --ui-strategy-panel-button-pad-y: 0.34rem;
  --ui-strategy-panel-button-pad-x: 0.72rem;
  --ui-strategy-action-min-height: 2.2rem;
  --ui-strategy-chip-font-size: 0.84rem;
  --ui-strategy-chip-pad-y: 0.28rem;
  --ui-strategy-chip-pad-x: 0.56rem;
  --ui-strategy-summary-card-pad-y: 0.58rem;
  --ui-strategy-summary-card-pad-x: 0.68rem;
  --ui-strategy-summary-label-size: 0.78rem;
  --ui-strategy-summary-value-size: 1.26rem;
  --ui-strategy-summary-meta-size: 0.82rem;
  --ui-strategy-section-padding: 0.82rem;
  --ui-strategy-section-gap: 0.68rem;
  --ui-strategy-detail-gap: 0.82rem;
  --ui-strategy-card-padding: 0.8rem;
  --ui-strategy-form-label-size: 0.86rem;
  --ui-strategy-quick-settings-pad: 0.66rem;
  --ui-strategy-setting-label-size: 0.82rem;
  --ui-strategy-row-btn-min-height: 1.88rem;
  --ui-strategy-row-btn-font-size: 0.82rem;
  --ui-strategy-row-btn-pad-y: 0.24rem;
  --ui-strategy-row-btn-pad-x: 0.46rem;
  --ui-strategy-state-badge-font-size: 0.84rem;
  --ui-strategy-state-badge-pad-y: 0.24rem;
  --ui-strategy-state-badge-pad-x: 0.58rem;
}

body[data-text-size='comfortable'] {
  --ui-text-scale: 1.08;
}

body[data-text-size='large'] {
  --ui-text-scale: 1.16;
}

body[data-theme='light'] {
  --bg: #f5f6f8;
  --bg-gradient: linear-gradient(180deg, #f5f6f8 0%, #dcdfe4 80%);
  --text: #0b1321;
  --text-primary: var(--text);
  --muted: #4b5563;
  --text-muted: var(--muted);
  --eyebrow-color: #5166d6;
  --meta-color: #4c5a7a;
  --panel-bg: #ffffff;
  --panel-border: rgba(15, 23, 42, 0.12);
  --panel-shadow: rgba(15, 23, 42, 0.15);
  --input-bg: rgba(15, 23, 42, 0.04);
  --input-border: rgba(15, 23, 42, 0.18);
  --input-text: #0f172a;
  --border: rgba(15, 23, 42, 0.14);
  --bg-overlay: #ffffff;
  --hover-bg: rgba(32, 94, 168, 0.09);
  --active-bg: rgba(32, 94, 168, 0.16);
  --code-bg: #f8fafc;
  --fg: #0b1321;
  --accent: #205ea8;
  --accent-2: #5b3f9f;
  --danger: #b42318;
  --ok: #007a45;
  --warn: #754600;
  --success: #007a45;
  --warning: #754600;
  --accent-positive: var(--success);
  --accent-negative: var(--danger);
  --tab-bg: rgba(15, 23, 42, 0.08);
  --tab-text: #1f2937;
  --tab-active-bg: #111827;
  --tab-active-text: #f8fafc;
  --secondary-border: rgba(15, 23, 42, 0.22);
  --secondary-bg: rgba(255, 255, 255, 0.72);
  --secondary-text: #1f2937;
  --ghost-border: rgba(15, 23, 42, 0.24);
  --ghost-text: #111827;
  --table-cell-color: #1a1a1a;
  --table-head: #111827;
  --table-sticky-head-bg: #f8fafc;
  --chart-card-bg: rgba(255, 255, 255, 0.92);
  --chart-card-border: rgba(15, 23, 42, 0.1);
  --chart-title: #475569;
  --fmp-method-full-ew: #174f9b;
  --fmp-method-full-zw: #b42318;
  --fmp-method-q10: #007a45;
  --fmp-method-q20: #5f2ca5;
  --fmp-method-q33: #754600;
  --fmp-method-q10-zw: #005f6b;
  --fmp-method-top-12: #8a4b00;
  --fmp-method-top-24: #974100;
  --fmp-method-top-50: #a03800;
  --fmp-method-default: #754600;
  --fmp-factor-1: #174f9b;
  --fmp-factor-2: #754600;
  --fmp-factor-3: #007a45;
  --fmp-factor-4: #b42318;
  --fmp-factor-5: #5f2ca5;
  --fmp-factor-6: #005f6b;
  --fmp-factor-7: #974100;
  --fmp-factor-8: #374151;
  --fmp-chart-axis: #4b5563;
  --fmp-chart-grid: #cbd5e1;
  --fmp-chart-muted: #4b5563;
  --fmp-chart-tooltip-bg: #ffffff;
  --fmp-chart-tooltip-border: #94a3b8;
  --fmp-chart-tooltip-text: #111827;
  --fmp-chart-legend: #111827;
  --fmp-chart-pnl: #174f9b;
  --fmp-chart-icir: #754600;
  --fmp-chart-dd: #b42318;
  --fmp-chart-empty: #4b5563;
  --fmp-chart-line-width: 2.1;
  --fmp-chart-active-line-width: 2.8;
  --fmp-chart-dd-line-width: 1.8;
  --fmp-chart-dd-active-line-width: 2.4;
  --fmp-chart-helper-line-width: 1.7;
  --fmp-chart-helper-active-line-width: 2;
  --fmp-chart-dim-opacity: 1;
  --fmp-chart-helper-opacity: 0.95;
  --fmp-chart-helper-dim-opacity: 0.9;
  --sig-chart-axis: #334155;
  --sig-chart-grid: rgba(51, 65, 85, 0.22);
  --sig-chart-bar: #9a5a00;
  --sig-chart-bar-active: #174f9b;
  --sig-chart-pie-1: #9a5a00;
  --sig-chart-pie-2: #174f9b;
  --sig-chart-pie-3: #007a45;
  --sig-chart-pie-4: #974100;
  --sig-chart-pie-5: #5f2ca5;
  --sig-chart-pie-6: #b42318;
  --sig-chart-pie-7: #005f6b;
  --sig-chart-pie-8: #374151;
}

body[data-theme='paper'] {
  --bg: #efe4cf;
  --bg-gradient: linear-gradient(180deg, #f7efe0 0%, #e8dbc2 100%);
  --text: #2f2418;
  --text-primary: var(--text);
  --muted: #6b5d4c;
  --text-muted: var(--muted);
  --eyebrow-color: #7b5c2f;
  --meta-color: #6b5d4c;
  --panel-bg: rgba(249, 243, 228, 0.94);
  --panel-border: rgba(110, 90, 61, 0.22);
  --panel-shadow: rgba(96, 72, 34, 0.16);
  --input-bg: rgba(252, 248, 238, 0.98);
  --input-border: rgba(109, 90, 60, 0.24);
  --input-text: var(--text);
  --border: rgba(110, 90, 61, 0.22);
  --bg-overlay: #fbf5e8;
  --hover-bg: rgba(109, 79, 47, 0.1);
  --active-bg: rgba(109, 79, 47, 0.17);
  --code-bg: #f7efe0;
  --fg: #2f2418;
  --accent: #6d4f2f;
  --accent-2: #b98c56;
  --danger: #9c3f34;
  --ok: #496342;
  --warn: #9a7a2f;
  --success: #496342;
  --warning: #8a5a00;
  --accent-positive: var(--success);
  --accent-negative: var(--danger);
  --tab-bg: rgba(110, 90, 61, 0.1);
  --tab-text: #4c3820;
  --tab-active-bg: #6d4f2f;
  --tab-active-text: #fbf5e8;
  --secondary-border: rgba(110, 90, 61, 0.24);
  --secondary-bg: rgba(252, 248, 238, 0.76);
  --secondary-text: #3b2d1e;
  --ghost-border: rgba(110, 90, 61, 0.28);
  --ghost-text: #2f2418;
  --table-cell-color: #332514;
  --table-head: #43311a;
  --table-sticky-head-bg: #efe2c6;
  --chart-card-bg: rgba(249, 243, 228, 0.92);
  --chart-card-border: rgba(110, 90, 61, 0.16);
  --chart-title: #6b5d4c;
  --fmp-method-full-ew: #285f8f;
  --fmp-method-full-zw: #9c3f34;
  --fmp-method-q10: #496342;
  --fmp-method-q20: #6a4c93;
  --fmp-method-q33: #8a5a00;
  --fmp-method-q10-zw: #267b7a;
  --fmp-method-top-12: #9a6a1f;
  --fmp-method-top-24: #9c5a2f;
  --fmp-method-top-50: #9e4a20;
  --fmp-method-default: #8a5a00;
  --fmp-factor-1: #285f8f;
  --fmp-factor-2: #8a5a00;
  --fmp-factor-3: #496342;
  --fmp-factor-4: #9c3f34;
  --fmp-factor-5: #6a4c93;
  --fmp-factor-6: #267b7a;
  --fmp-factor-7: #9c5a2f;
  --fmp-factor-8: #6b5d4c;
  --fmp-chart-axis: #6b5d4c;
  --fmp-chart-grid: #d0c1aa;
  --fmp-chart-muted: #6b5d4c;
  --fmp-chart-tooltip-bg: #fbf5e8;
  --fmp-chart-tooltip-border: #b8a27f;
  --fmp-chart-tooltip-text: #2f2418;
  --fmp-chart-legend: #2f2418;
  --fmp-chart-pnl: #285f8f;
  --fmp-chart-icir: #8a5a00;
  --fmp-chart-dd: #9c3f34;
  --fmp-chart-empty: #6b5d4c;
  --fmp-chart-line-width: 2.1;
  --fmp-chart-active-line-width: 2.8;
  --fmp-chart-dd-line-width: 1.8;
  --fmp-chart-dd-active-line-width: 2.4;
  --fmp-chart-helper-line-width: 1.7;
  --fmp-chart-helper-active-line-width: 2;
  --fmp-chart-dim-opacity: 1;
  --fmp-chart-helper-opacity: 0.95;
  --fmp-chart-helper-dim-opacity: 0.9;
  --sig-chart-axis: #4f3b24;
  --sig-chart-grid: rgba(96, 72, 34, 0.24);
  --sig-chart-bar: #8a5a00;
  --sig-chart-bar-active: #285f8f;
  --sig-chart-pie-1: #8a5a00;
  --sig-chart-pie-2: #285f8f;
  --sig-chart-pie-3: #496342;
  --sig-chart-pie-4: #9c5a2f;
  --sig-chart-pie-5: #6a4c93;
  --sig-chart-pie-6: #9c3f34;
  --sig-chart-pie-7: #267b7a;
  --sig-chart-pie-8: #6b5d4c;
}

body[data-theme='midnight'] {
  --bg: #040916;
  --bg-gradient: linear-gradient(180deg, #040916 0%, #07101f 55%, #03060f 100%);
  --text: #fff6ae;
  --text-primary: var(--text);
  --muted: #dccd86;
  --text-muted: var(--muted);
  --eyebrow-color: #fff08a;
  --meta-color: #f4e8a8;
  --panel-bg: rgba(9, 17, 31, 0.92);
  --panel-border: rgba(113, 156, 255, 0.14);
  --panel-shadow: rgba(2, 7, 18, 0.45);
  --input-bg: rgba(255, 255, 255, 0.045);
  --input-border: rgba(255, 255, 255, 0.09);
  --input-text: #fff6ae;
  --border: rgba(113, 156, 255, 0.14);
  --bg-overlay: rgba(8, 14, 28, 0.96);
  --hover-bg: rgba(120, 184, 255, 0.1);
  --active-bg: rgba(120, 184, 255, 0.18);
  --code-bg: rgba(6, 12, 24, 0.82);
  --fg: #fff6ae;
  --accent: #78b8ff;
  --accent-2: #4d78d6;
  --danger: #ff9d9d;
  --ok: #8cffc5;
  --warn: #fff08a;
  --success: #8cffc5;
  --warning: #fff08a;
  --accent-positive: var(--success);
  --accent-negative: var(--danger);
  --tab-bg: rgba(255, 255, 255, 0.05);
  --tab-text: #f2e38f;
  --tab-active-bg: linear-gradient(120deg, #4d78d6, #78b8ff);
  --tab-active-text: #04101d;
  --secondary-border: rgba(140, 176, 255, 0.24);
  --secondary-bg: rgba(255, 255, 255, 0.03);
  --secondary-text: #f8efb6;
  --ghost-border: rgba(140, 176, 255, 0.14);
  --ghost-text: #fff1aa;
  --table-cell-color: #fff6ae;
  --table-head: #f0e091;
  --chart-card-bg: rgba(7, 13, 24, 0.84);
  --chart-card-border: rgba(113, 156, 255, 0.14);
  --chart-title: #fff08a;
  --fmp-method-full-ew: #78b8ff;
  --fmp-method-full-zw: #ff9d9d;
  --fmp-method-q10: #8cffc5;
  --fmp-method-q20: #b99cff;
  --fmp-method-q33: #fff08a;
  --fmp-method-q10-zw: #6ee7ff;
  --fmp-method-top-12: #ffd76a;
  --fmp-method-top-24: #ffbf6b;
  --fmp-method-top-50: #ff9f6b;
  --fmp-method-default: #fff08a;
  --fmp-factor-1: #78b8ff;
  --fmp-factor-2: #fff08a;
  --fmp-factor-3: #8cffc5;
  --fmp-factor-4: #ff9d9d;
  --fmp-factor-5: #b99cff;
  --fmp-factor-6: #6ee7ff;
  --fmp-factor-7: #ffbf6b;
  --fmp-factor-8: #dccd86;
  --fmp-chart-axis: #dccd86;
  --fmp-chart-grid: rgba(113, 156, 255, 0.18);
  --fmp-chart-muted: #d4ddfb;
  --fmp-chart-tooltip-bg: rgba(8, 14, 28, 0.96);
  --fmp-chart-tooltip-border: rgba(113, 156, 255, 0.28);
  --fmp-chart-tooltip-text: #fff6ae;
  --fmp-chart-legend: #fff3b2;
  --fmp-chart-pnl: #78b8ff;
  --fmp-chart-icir: #fff08a;
  --fmp-chart-dd: #ff9d9d;
  --fmp-chart-empty: #dccd86;
}

body[data-theme='terminal'] {
  --bg: #041108;
  --text: #b9ffd0;
  --muted: #6fbc82;
  --panel-bg: rgba(6, 20, 10, 0.9);
  --panel-border: rgba(106, 255, 158, 0.22);
  --input-bg: rgba(3, 14, 7, 0.96);
  --input-border: rgba(94, 241, 144, 0.28);
  --accent: #5dff9e;
  --accent-2: #c6ff69;
  --danger: #ff6f7d;
  --ok: #7cffb3;
  --warn: #d8ff66;
  --fmp-chart-axis: #dcffe9;
  --fmp-chart-muted: #b9ffd0;
  --fmp-chart-empty: #dcffe9;
}

body[data-theme='slate'] {
  --bg: #0b111b;
  --text: #e7edf8;
  --muted: #9ba8bc;
  --panel-bg: rgba(17, 25, 39, 0.82);
  --panel-border: rgba(126, 152, 194, 0.24);
  --input-bg: rgba(15, 24, 38, 0.94);
  --input-border: rgba(122, 148, 192, 0.26);
  --accent: #7eb4ff;
  --accent-2: #74e5d4;
  --danger: #ff7b94;
  --ok: #83e1c6;
  --warn: #ffd97a;
}

body[data-theme='neon'] {
  --bg: #0b0614;
  --text: #f4ecff;
  --muted: #b6a8d2;
  --panel-bg: rgba(18, 10, 33, 0.86);
  --panel-border: rgba(150, 104, 255, 0.26);
  --input-bg: rgba(17, 10, 30, 0.95);
  --input-border: rgba(119, 221, 255, 0.24);
  --accent: #4fd8ff;
  --accent-2: #ff4fa3;
  --danger: #ff6c8c;
  --ok: #5dffb8;
  --warn: #ffe66a;
}

body[data-theme='contrast'] {
  --bg: #050505;
  --text: #ffe89a;
  --muted: #c8a640;
  --panel-bg: rgba(10, 10, 10, 0.94);
  --panel-border: rgba(255, 190, 32, 0.48);
  --input-bg: rgba(0, 0, 0, 0.98);
  --input-border: rgba(255, 186, 20, 0.6);
  --accent: #ffb400;
  --accent-2: #ffd85a;
  --danger: #ff4d4d;
  --ok: #9dff67;
  --warn: #ffe36f;
  --fmp-chart-axis: #fff1b6;
  --fmp-chart-muted: #ffe89a;
  --fmp-chart-empty: #fff1b6;
}

body[data-theme='contrast'].motion-off {
  --bg: #000000;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

html {
  font-size: 18px;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-sans);
  background: var(--bg-gradient, var(--bg));
  color: var(--text-primary, var(--text));
  font-size: 1rem;
  line-height: 1.4;
  min-height: 100vh;
  transition: background 0.3s ease, color 0.3s ease;
  -webkit-user-select: none;
  user-select: none;
}

input,
textarea,
select,
option,
pre,
code,
kbd,
samp,
.json-code,
.json-viewer,
.monaco-editor,
[contenteditable='true'],
[data-allow-select='true'] {
  -webkit-user-select: text;
  user-select: text;
}

#backdrop {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: 0;
  pointer-events: none;
}

.app-shell {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  height: 100vh;
  padding: 0.55rem;
  display: flex;
  flex-direction: column;
}

.view {
  width: 100%;
  min-height: 0;
}

.dashboard-view {
  flex: 1 1 auto;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  row-gap: 0.32rem;
  align-content: start;
  min-height: 0;
  height: 100%;
  min-width: 0;
  overflow: hidden;
  padding-bottom: 1.65rem;
  position: relative;
}

.dashboard-fit-stage {
  display: contents;
}

body.layout-mode-desktop[data-window-fit='balanced'] .topbar,
body.layout-mode-desktop[data-window-fit='aggressive'] .topbar {
  flex-direction: column !important;
  align-items: stretch !important;
}

body.layout-mode-desktop[data-window-fit='balanced'] .topbar > :first-child,
body.layout-mode-desktop[data-window-fit='balanced'] .topbar > .topbar-actions,
body.layout-mode-desktop[data-window-fit='balanced'] .workspace-tabs,
body.layout-mode-desktop[data-window-fit='aggressive'] .topbar > :first-child,
body.layout-mode-desktop[data-window-fit='aggressive'] .topbar > .topbar-actions,
body.layout-mode-desktop[data-window-fit='aggressive'] .workspace-tabs {
  width: 100% !important;
  flex-basis: 100% !important;
}

body.layout-mode-desktop[data-window-fit='balanced'] .topbar > :first-child,
body.layout-mode-desktop[data-window-fit='aggressive'] .topbar > :first-child {
  flex: 1 1 auto !important;
}

body.layout-mode-desktop[data-window-fit='balanced'] .topbar > .topbar-actions,
body.layout-mode-desktop[data-window-fit='aggressive'] .topbar > .topbar-actions {
  flex: 1 1 auto !important;
  justify-content: flex-start !important;
}

body.layout-mode-desktop[data-window-fit='balanced'] .metrics-grid,
body.layout-mode-desktop[data-window-fit='aggressive'] .metrics-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

body[data-window-fit='balanced'],
body[data-window-fit='aggressive'] {
  --ui-control-height: calc(36px * var(--ui-window-fit-factor));
  --ui-field-pad-y: calc(0.56rem * var(--ui-window-fit-factor));
  --ui-field-pad-x: calc(0.64rem * var(--ui-window-fit-factor));
  --ui-button-pad-y: calc(0.56rem * var(--ui-window-fit-factor));
  --ui-button-pad-x: calc(0.72rem * var(--ui-window-fit-factor));
  --ui-chip-font-size: calc(0.82rem * var(--ui-window-fit-factor));
  --ui-label-font-size: calc(0.86rem * var(--ui-window-fit-factor));
  --ui-status-font-size: calc(0.84rem * var(--ui-window-fit-factor));
  --ui-workspace-tab-font-size: calc(0.8rem * var(--ui-window-fit-factor));
  --ui-workspace-tab-pad-y: calc(0.34rem * var(--ui-window-fit-factor));
  --ui-workspace-tab-pad-x: calc(0.7rem * var(--ui-window-fit-factor));
  --ui-metric-pad-y: calc(0.58rem * var(--ui-window-fit-factor));
  --ui-metric-pad-x: calc(0.62rem * var(--ui-window-fit-factor));
  --ui-metric-gap: calc(0.12rem * var(--ui-window-fit-factor));
  --ui-metric-label-size: calc(0.79rem * var(--ui-window-fit-factor));
  --ui-metric-value-size: calc(1.08rem * var(--ui-window-fit-factor));
  --ui-grid-gap: calc(0.7rem * var(--ui-window-fit-factor));
  --ui-panel-padding: calc(0.75rem * var(--ui-window-fit-factor));
  --ui-panel-row-gap: calc(0.65rem * var(--ui-window-fit-factor));
  --ui-dockview-pad: calc(0.45rem * var(--ui-window-fit-factor));
  --ui-dockview-tab-font-size: calc(15px * var(--ui-window-fit-factor));
  --ui-dockview-tab-height: calc(46px * var(--ui-window-fit-factor));
  --ui-table-font-size: calc(0.92rem * var(--ui-window-fit-factor));
  --ui-table-cell-pad-y: calc(0.28rem * var(--ui-window-fit-factor));
  --ui-table-cell-pad-x: calc(0.32rem * var(--ui-window-fit-factor));
  --ui-code-pad-y: calc(0.5rem * var(--ui-window-fit-factor));
  --ui-code-pad-x: calc(0.55rem * var(--ui-window-fit-factor));
  --ui-code-font-size: calc(0.82rem * var(--ui-window-fit-factor));
}

body[data-window-fit='balanced'] .topbar,
body[data-window-fit='aggressive'] .topbar {
  gap: calc(0.3rem * var(--ui-window-fit-factor)) calc(0.7rem * var(--ui-window-fit-factor));
  margin-bottom: 0;
  align-items: center;
}

body[data-window-fit='balanced'] .topbar > :first-child,
body[data-window-fit='balanced'] .topbar > .topbar-actions,
body[data-window-fit='balanced'] .workspace-tabs,
body[data-window-fit='aggressive'] .topbar > :first-child,
body[data-window-fit='aggressive'] .topbar > .topbar-actions,
body[data-window-fit='aggressive'] .workspace-tabs {
  width: 100%;
  flex-basis: 100%;
}

body[data-window-fit='balanced'] .workspace-bar,
body[data-window-fit='aggressive'] .workspace-bar {
  gap: calc(0.45rem * var(--ui-window-fit-factor));
  margin-bottom: 0;
}

body[data-window-fit='balanced'] .topbar-actions,
body[data-window-fit='aggressive'] .topbar-actions {
  gap: calc(0.35rem * var(--ui-window-fit-factor));
  row-gap: calc(0.35rem * var(--ui-window-fit-factor));
  justify-content: flex-start;
}

body[data-window-fit='balanced'] .topbar-actions input,
body[data-window-fit='balanced'] .topbar-actions select,
body[data-window-fit='aggressive'] .topbar-actions input,
body[data-window-fit='aggressive'] .topbar-actions select {
  min-width: calc(110px * var(--ui-window-fit-factor));
}

body[data-window-fit='balanced'] .stream-scope-input,
body[data-window-fit='aggressive'] .stream-scope-input {
  min-width: min(100%, calc(170px * var(--ui-window-fit-factor))) !important;
}

body[data-window-fit='balanced'] .layout-name-stack,
body[data-window-fit='aggressive'] .layout-name-stack {
  min-width: min(calc(210px * var(--ui-window-fit-factor)), 100%);
  height: var(--ui-control-height);
}

body[data-window-fit='balanced'] .layout-name-stack > input,
body[data-window-fit='aggressive'] .layout-name-stack > input {
  height: var(--ui-control-height);
}

body[data-window-fit='balanced'] .icon-btn,
body[data-window-fit='aggressive'] .icon-btn {
  min-width: var(--ui-control-height);
  width: var(--ui-control-height);
}

body[data-window-fit='balanced'] .icon-btn svg,
body[data-window-fit='aggressive'] .icon-btn svg {
  width: calc(15px * var(--ui-window-fit-factor));
  height: calc(15px * var(--ui-window-fit-factor));
}

body[data-window-fit='balanced'] .icon-btn-gear svg,
body[data-window-fit='aggressive'] .icon-btn-gear svg {
  width: calc(19px * var(--ui-window-fit-factor));
  height: calc(19px * var(--ui-window-fit-factor));
}

body[data-window-fit='balanced'] .panel-controls button,
body[data-window-fit='aggressive'] .panel-controls button {
  min-height: calc(1.85rem * var(--ui-window-fit-factor));
  padding: calc(0.24rem * var(--ui-window-fit-factor)) calc(0.52rem * var(--ui-window-fit-factor));
  font-size: calc(0.7rem * var(--ui-window-fit-factor));
}

body[data-window-fit='balanced'] .panel-close-btn,
body[data-window-fit='aggressive'] .panel-close-btn {
  width: calc(1.3rem * var(--ui-window-fit-factor));
  height: calc(1.3rem * var(--ui-window-fit-factor));
  min-width: calc(1.3rem * var(--ui-window-fit-factor));
  min-height: calc(1.3rem * var(--ui-window-fit-factor));
  font-size: calc(0.82rem * var(--ui-window-fit-factor));
}

.hidden {
  display: none !important;
}

.login-view {
  display: grid;
  place-items: center;
  min-height: calc(100vh - 2.5rem);
}

.panel {
  position: relative;
  background: var(--panel-bg);
  border: 1px solid var(--panel-border);
  border-radius: 8px;
  backdrop-filter: blur(8px);
  box-shadow: 0 18px 38px var(--panel-shadow, rgba(0, 0, 0, 0.25));
  --panel-top-accent: color-mix(in oklab, var(--accent) 50%, var(--panel-border) 50%);
}

.panel::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  border-radius: 8px 8px 0 0;
  background: var(--panel-top-accent);
  opacity: 0.85;
  pointer-events: none;
}

.login-card {
  width: min(440px, 100%);
  padding: 1.25rem;
}

h1,
h2,
h3 {
  margin: 0 0 0.5rem;
  font-weight: 600;
}

.eyebrow {
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 0.45rem;
}

.subtitle {
  margin: 0 0 1rem;
  color: var(--muted);
}

.stack {
  display: grid;
  gap: 0.85rem;
}

.stack.compact {
  gap: 0.6rem;
}

label {
  display: grid;
  gap: 0.35rem;
  font-size: calc(var(--ui-label-font-size) * var(--ui-text-scale));
  color: var(--muted);
}

input,
select,
button {
  font: inherit;
}

input,
select {
  border: 1px solid var(--input-border);
  background: var(--input-bg);
  color: var(--input-text, var(--text));
  border-radius: 8px;
  padding: var(--ui-field-pad-y) var(--ui-field-pad-x);
}

select option {
  background: var(--bg-overlay, var(--panel-bg));
  color: var(--input-text, var(--text));
}

body[data-theme='light'] select option,
body[data-theme='paper'] select option {
  background: var(--panel-bg);
  color: var(--input-text, var(--text));
}

input:focus,
select:focus,
button:focus {
  outline: 2px solid color-mix(in oklab, var(--accent) 65%, transparent);
  outline-offset: 1px;
}

button {
  border-radius: 8px;
  border: 1px solid transparent;
  cursor: pointer;
  padding: var(--ui-button-pad-y) var(--ui-button-pad-x);
}

button.primary {
  background: linear-gradient(135deg, var(--accent), color-mix(in oklab, var(--accent) 65%, var(--accent-2) 35%));
  color: #08101f;
  font-weight: 600;
}

button.danger {
  background: linear-gradient(135deg, color-mix(in oklab, var(--danger) 84%, #240000 16%), var(--danger));
  color: #fff;
  border-color: color-mix(in oklab, var(--danger) 76%, var(--input-border) 24%);
  font-weight: 600;
}

body[data-theme='contrast'] button.primary {
  color: #121212;
}

body[data-theme='light'] button.primary {
  background: linear-gradient(135deg, #2a2a2a, #575757);
  color: #f4f4f4;
}

body[data-theme='paper'] button.primary {
  background: linear-gradient(135deg, #6d4f2f, #b98c56);
  color: #f9f0df;
}

body[data-theme='terminal'] button.primary {
  background: linear-gradient(135deg, #5dff9e, #c6ff69);
  color: #041108;
}

body[data-theme='neon'] button.primary {
  background: linear-gradient(135deg, #4fd8ff, #ff4fa3);
  color: #14081f;
}

button.ghost {
  background: var(--secondary-bg, transparent);
  border-color: var(--ghost-border, var(--input-border));
  color: var(--ghost-text, var(--text));
}

button:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

:where(table) {
  color: var(--table-cell-color, var(--text));
  border-color: var(--panel-border);
}

:where(th) {
  color: var(--table-head, var(--muted));
  font-weight: 700;
}

:where(td) {
  color: var(--table-cell-color, var(--text));
}

.toggle-row,
.topbar-actions {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
}

.topbar-actions {
  position: relative;
  width: 100%;
  align-content: flex-start;
  overflow: visible;
}

.topbar > .topbar-actions {
  align-items: center;
  justify-content: flex-end;
}

.topbar > .topbar-actions > :is(select, input, button, .layout-name-stack) {
  align-self: center;
  min-width: 0;
  max-width: 100%;
}

.topbar-actions > * {
  flex: 0 0 auto;
  min-width: 0;
  max-width: 100%;
}

.chip {
  border: 1px solid var(--input-border);
  background: color-mix(in oklab, var(--panel-bg) 70%, transparent);
  color: var(--text);
  font-size: calc(var(--ui-chip-font-size) * var(--ui-text-scale));
}

.topbar-actions input,
.topbar-actions select {
  min-width: 118px;
  max-width: 100%;
}

.stream-scope-input {
  min-width: 220px !important;
}

.prefs-panel {
  position: absolute;
  right: 0;
  top: 2.8rem;
  z-index: 10;
  border: 1px solid var(--input-border);
  border-radius: 10px;
  background: var(--panel-bg);
  padding: 0.45rem 0.55rem;
  display: grid;
  gap: 0.35rem;
  min-width: 190px;
  max-width: min(340px, calc(100vw - 24px));
}

.prefs-panel label {
  font-size: calc(0.78rem * var(--ui-text-scale));
  margin: 0;
}

.prefs-panel .prefs-check {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}

.prefs-panel .prefs-check input[type='checkbox'] {
  width: auto;
}

.prefs-panel .prefs-field {
  display: grid;
  gap: 0.3rem;
}

.prefs-panel input,
.prefs-panel select,
.prefs-panel button {
  width: 100%;
}

.prefs-panel .stream-scope-input {
  min-width: 0 !important;
}

.prefs-default-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}

.prefs-default-btn svg {
  width: 0.82rem;
  height: 0.82rem;
  flex: 0 0 auto;
}

.prefs-status {
  min-height: 0.82rem;
  color: var(--muted);
  font-size: calc(0.64rem * var(--ui-text-scale));
  line-height: 1;
}

.prefs-status[data-tone='ok'] {
  color: var(--ok);
}

.prefs-status[data-tone='warn'] {
  color: var(--warn);
}

.topbar-actions select,
.topbar-actions input,
.topbar-actions button,
.toggle-row select,
.toggle-row button {
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  min-height: var(--ui-control-height);
  padding-top: 0;
  padding-bottom: 0;
}

.icon-btn {
  min-width: calc(var(--ui-control-height) * var(--ui-text-scale));
  width: calc(var(--ui-control-height) * var(--ui-text-scale));
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  font-size: 0;
}

.icon-btn svg {
  width: calc(15px * var(--ui-text-scale));
  height: calc(15px * var(--ui-text-scale));
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.icon-btn-gear svg {
  width: calc(19px * var(--ui-text-scale));
  height: calc(19px * var(--ui-text-scale));
}

.error {
  color: var(--danger);
  min-height: 1.2rem;
  margin: 0;
}

.status-note {
  margin: 0;
  color: var(--muted);
  font-size: calc(var(--ui-status-font-size) * var(--ui-text-scale));
}

.fmp-stage-log-panel {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--border, #2c3348);
  background: color-mix(in srgb, var(--panel, #111827) 86%, #000 14%);
  border-radius: 8px;
}

.fmp-stage-log-head,
.fmp-stage-log-row {
  display: grid;
  grid-template-columns: 86px 68px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
}

.fmp-stage-log-head {
  grid-template-columns: minmax(0, 1fr) auto;
  color: var(--text, #e5e7eb);
  font-size: 0.82rem;
}

.fmp-stage-log-row {
  padding: 7px 0;
  border-top: 1px solid color-mix(in srgb, var(--border, #2c3348) 70%, transparent);
  font-size: 0.76rem;
}

.fmp-stage-log-time,
.fmp-stage-log-level {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.fmp-stage-log-success .fmp-stage-log-level { color: var(--success, #22c55e); }
.fmp-stage-log-error .fmp-stage-log-level { color: var(--danger, #f76f6f); }
.fmp-stage-log-warn .fmp-stage-log-level { color: var(--warning, #f59e0b); }

.fmp-stage-log-body {
  min-width: 0;
  color: var(--text, #e5e7eb);
}

.fmp-stage-log-body pre {
  margin: 6px 0 0;
  max-height: 220px;
  overflow: auto;
  white-space: pre-wrap;
  color: var(--muted);
  font-size: 0.72rem;
}

.topbar {
  display: grid;
  grid-row: 1;
  grid-template-columns: minmax(190px, auto) minmax(0, 1fr);
  align-items: center;
  column-gap: 0.7rem;
  row-gap: 0.3rem;
  margin-bottom: 0;
}

.topbar > :first-child {
  display: flex;
  align-items: baseline;
  gap: 0.55rem;
  width: 100%;
  min-width: 0;
}

.topbar > .topbar-actions {
  width: 100%;
  min-width: 0;
}

.workspace-bar {
  grid-row: 2;
  display: flex;
  align-items: flex-end;
  gap: 0.45rem;
  flex-wrap: nowrap;
  margin-bottom: 0;
  min-width: 0;
}

.workspace-tabs {
  display: flex;
  align-items: flex-end;
  gap: 0.2rem;
  flex-wrap: nowrap;
  border-bottom: 1px solid var(--panel-border);
  padding-right: 0.25rem;
  min-width: 0;
  flex: 1 1 auto;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}

.workspace-actions {
  display: inline-flex;
  align-items: flex-end;
  gap: 0.35rem;
  flex: 0 0 auto;
  margin-left: auto;
}

.workspace-tab {
  border: 1px solid transparent;
  border-bottom: none;
  background: color-mix(in oklab, var(--panel-bg) 92%, black 8%);
  color: var(--muted);
  border-radius: 9px 9px 0 0;
  padding: var(--ui-workspace-tab-pad-y) var(--ui-workspace-tab-pad-x);
  font-size: calc(var(--ui-workspace-tab-font-size) * var(--ui-text-scale));
  line-height: 1.15;
  margin-bottom: -1px;
}

.workspace-tab.active {
  border-color: var(--input-border);
  color: var(--text);
  background: var(--panel-bg);
}

.workspace-tab:hover:not(.active) {
  color: var(--text);
  border-color: color-mix(in oklab, var(--panel-border) 75%, transparent);
}

body[data-viewport-width-bucket='tight'] .topbar > :first-child,
body[data-viewport-width-bucket='tight'] .topbar > .topbar-actions,
body[data-viewport-width-bucket='narrow'] .topbar > :first-child,
body[data-viewport-width-bucket='narrow'] .topbar > .topbar-actions,
body[data-viewport-width-bucket='narrow'] .workspace-bar {
  width: 100%;
  flex-basis: 100%;
}

body[data-viewport-width-bucket='tight'] .topbar,
body[data-viewport-width-bucket='narrow'] .topbar {
  grid-template-columns: minmax(0, 1fr);
  align-items: flex-start;
}

body[data-viewport-width-bucket='tight'] .topbar > .topbar-actions,
body[data-viewport-width-bucket='narrow'] .topbar > .topbar-actions {
  justify-content: flex-start;
  overflow-x: visible;
  overflow-y: visible;
  padding-bottom: 0.12rem;
}

body[data-viewport-width-bucket='tight'] .topbar-actions,
body[data-viewport-width-bucket='narrow'] .topbar-actions {
  row-gap: 0.35rem;
}

body[data-viewport-width-bucket='tight'] .topbar-actions input,
body[data-viewport-width-bucket='tight'] .topbar-actions select,
body[data-viewport-width-bucket='tight'] .layout-name-stack,
body[data-viewport-width-bucket='narrow'] .topbar-actions input,
body[data-viewport-width-bucket='narrow'] .topbar-actions select,
body[data-viewport-width-bucket='narrow'] .layout-name-stack {
  min-width: 0;
  max-width: 100%;
}

body[data-viewport-width-bucket='tight'] .layout-name-stack,
body[data-viewport-width-bucket='narrow'] .layout-name-stack {
  width: min(320px, 100%);
}

.widget-context-menu {
  position: fixed;
  z-index: 90;
  min-width: 220px;
  max-width: min(360px, calc(100vw - 24px));
  border: 1px solid var(--input-border);
  border-radius: 10px;
  background: color-mix(in oklab, var(--panel-bg) 92%, black 8%);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.35);
  padding: 0.45rem;
  display: grid;
  gap: 0.25rem;
}

.tools-panel-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  min-width: 0;
  width: 100%;
  overflow: auto;
  padding: 0.2rem;
  padding-right: 0.32rem;
  display: grid;
  align-content: start;
  gap: 0.3rem;
}

.widget-context-section {
  display: grid;
  gap: 0.2rem;
  padding: 0.2rem 0;
}

.widget-context-section + .widget-context-section {
  border-top: 1px solid var(--panel-border);
}

.widget-context-title {
  display: flex;
  align-items: center;
  gap: 0.36rem;
  font-size: calc(var(--ui-widget-context-title-size) * var(--ui-text-scale));
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  padding: 0 0.3rem;
}

.widget-context-section[data-widget-tone='trading'],
.widget-context-item[data-widget-tone='trading'] {
  --widget-context-tone: #ffb020;
  --widget-context-action-color: #ffd17a;
  --widget-context-hover-bg: rgba(255, 176, 32, 0.13);
  --widget-context-hover-border: rgba(255, 176, 32, 0.7);
  --widget-context-icon-bg: rgba(255, 176, 32, 0.11);
  --widget-context-icon-border: rgba(255, 176, 32, 0.52);
  --widget-context-featured-bg: rgba(255, 176, 32, 0.16);
  --widget-context-title-glow: rgba(255, 176, 32, 0.34);
}
.widget-context-section[data-widget-tone='market'],
.widget-context-item[data-widget-tone='market'] {
  --widget-context-tone: #42d9f5;
  --widget-context-action-color: #8bedff;
  --widget-context-hover-bg: rgba(66, 217, 245, 0.13);
  --widget-context-hover-border: rgba(66, 217, 245, 0.7);
  --widget-context-icon-bg: rgba(66, 217, 245, 0.11);
  --widget-context-icon-border: rgba(66, 217, 245, 0.52);
  --widget-context-featured-bg: rgba(66, 217, 245, 0.16);
  --widget-context-title-glow: rgba(66, 217, 245, 0.34);
}
.widget-context-section[data-widget-tone='plots'],
.widget-context-item[data-widget-tone='plots'] {
  --widget-context-tone: #b990ff;
  --widget-context-action-color: #d3bcff;
  --widget-context-hover-bg: rgba(185, 144, 255, 0.13);
  --widget-context-hover-border: rgba(185, 144, 255, 0.7);
  --widget-context-icon-bg: rgba(185, 144, 255, 0.11);
  --widget-context-icon-border: rgba(185, 144, 255, 0.52);
  --widget-context-featured-bg: rgba(185, 144, 255, 0.16);
  --widget-context-title-glow: rgba(185, 144, 255, 0.34);
}
.widget-context-section[data-widget-tone='development'],
.widget-context-item[data-widget-tone='development'] {
  --widget-context-tone: #7db7ff;
  --widget-context-action-color: #b4d6ff;
  --widget-context-hover-bg: rgba(125, 183, 255, 0.13);
  --widget-context-hover-border: rgba(125, 183, 255, 0.7);
  --widget-context-icon-bg: rgba(125, 183, 255, 0.11);
  --widget-context-icon-border: rgba(125, 183, 255, 0.52);
  --widget-context-featured-bg: rgba(125, 183, 255, 0.16);
  --widget-context-title-glow: rgba(125, 183, 255, 0.34);
}
.widget-context-section[data-widget-tone='research'],
.widget-context-item[data-widget-tone='research'] {
  --widget-context-tone: #7ee787;
  --widget-context-action-color: #adf3b4;
  --widget-context-hover-bg: rgba(126, 231, 135, 0.13);
  --widget-context-hover-border: rgba(126, 231, 135, 0.7);
  --widget-context-icon-bg: rgba(126, 231, 135, 0.11);
  --widget-context-icon-border: rgba(126, 231, 135, 0.52);
  --widget-context-featured-bg: rgba(126, 231, 135, 0.16);
  --widget-context-title-glow: rgba(126, 231, 135, 0.34);
}
.widget-context-section[data-widget-tone='general'],
.widget-context-item[data-widget-tone='general'] {
  --widget-context-tone: var(--accent);
  --widget-context-action-color: var(--accent);
  --widget-context-hover-bg: rgba(255, 211, 77, 0.13);
  --widget-context-hover-border: rgba(255, 211, 77, 0.7);
  --widget-context-icon-bg: rgba(255, 211, 77, 0.11);
  --widget-context-icon-border: rgba(255, 211, 77, 0.52);
  --widget-context-featured-bg: rgba(255, 211, 77, 0.16);
  --widget-context-title-glow: rgba(255, 211, 77, 0.34);
}

.widget-context-title-mark {
  width: 0.46rem;
  height: 0.46rem;
  border-radius: 999px;
  background: var(--widget-context-tone, var(--accent));
  box-shadow: 0 0 8px var(--widget-context-title-glow, rgba(255, 211, 77, 0.3));
}

.widget-context-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.34rem;
}

.widget-context-item {
  display: grid;
  position: relative;
  grid-template-columns: 0.75rem 1.42rem minmax(0, 1fr);
  align-items: center;
  gap: 0.42rem;
  width: 100%;
  text-align: left;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text);
  padding: var(--ui-widget-context-item-pad-y) var(--ui-widget-context-item-pad-x);
  font-size: calc(var(--ui-widget-context-item-font-size) * var(--ui-text-scale));
}

.widget-context-item:hover {
  border-color: var(--widget-context-hover-border, var(--input-border));
  background: var(--widget-context-hover-bg, transparent);
}

.widget-context-item[data-widget-featured='true'] {
  border-color: var(--widget-context-icon-border, var(--input-border));
  background: var(--widget-context-featured-bg, transparent);
  padding-left: calc(var(--ui-widget-context-item-pad-x) + 0.18rem);
}

.widget-context-item[data-widget-featured='true']::before {
  content: '';
  position: absolute;
  left: 0.24rem;
  top: 0.34rem;
  bottom: 0.34rem;
  width: 2px;
  border-radius: 999px;
  background: var(--widget-context-tone, var(--accent));
}

.widget-context-action {
  color: var(--widget-context-action-color, var(--widget-context-tone, var(--accent)));
  font-family: var(--font-mono);
  font-size: 0.72em;
  font-weight: 900;
  text-align: center;
}

.widget-context-icon {
  display: grid;
  place-items: center;
  width: 1.34rem;
  height: 1.34rem;
  border: 1px solid var(--widget-context-icon-border, var(--panel-border));
  border-radius: 6px;
  background: var(--widget-context-icon-bg, rgba(255, 255, 255, 0.04));
  color: var(--widget-context-tone, var(--accent));
}

.widget-context-item[data-widget-featured='true'] .widget-context-icon {
  border-color: var(--widget-context-tone, var(--accent));
  background: var(--widget-context-tone, var(--accent));
  color: #06120a;
}

.widget-context-icon svg {
  width: 0.96rem;
  height: 0.96rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.widget-context-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.widget-context-item-secondary {
  width: auto;
  min-width: 2rem;
  justify-self: end;
  text-align: center;
  padding-inline: 0.56rem;
}

.widget-context-item:disabled {
  opacity: 0.45;
}

.group-shell-placeholder {
  min-height: 100%;
  display: grid;
  align-content: start;
  gap: 0.75rem;
  padding: 0.95rem;
  border: 1px dashed color-mix(in oklab, var(--accent) 36%, var(--panel-border) 64%);
  border-radius: 14px;
  background: color-mix(in oklab, var(--input-bg) 78%, transparent);
}

.group-shell-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 0.24rem 0.6rem;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--accent) 36%, transparent);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
}

.group-shell-placeholder > p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--text);
}

.group-shell-toolbar {
  display: grid;
  gap: 0.7rem;
  align-items: end;
}

.group-shell-field {
  display: grid;
  gap: 0.28rem;
}

.group-shell-field > span {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.group-shell-field > input {
  min-width: 0;
}

.group-shell-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

.group-shell-actions > .ghost {
  min-height: calc(var(--control-height) * 0.94);
  font-size: 0.84rem;
}

.group-shell-list {
  margin: 0;
  padding-left: 1rem;
  display: grid;
  gap: 0.38rem;
  color: var(--muted);
  font-size: 0.82rem;
}

.plot-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
  gap: 0.75rem;
  padding: 0.65rem 0.75rem;
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 12px;
  background: color-mix(in oklab, var(--panel-bg) 92%, transparent);
}

.plot-toolbar-main {
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  overflow: visible;
  gap: 0.6rem;
  align-items: center;
}

.plot-toolbar-main label {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  min-width: max-content;
  white-space: nowrap;
}

.plot-toolbar-main label > span {
  font-size: calc(var(--ui-label-font-size) * var(--ui-text-scale));
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.plot-toolbar-main input,
.plot-toolbar-main select {
  min-width: 0;
  min-height: 2.2rem;
  font-size: calc(0.9rem * var(--ui-text-scale));
}

.plot-toolbar-main [data-plot-symbol] {
  width: 6.5rem;
}

.plot-toolbar-main [data-plot-feed],
.plot-toolbar-main [data-plot-bar-minutes],
.plot-toolbar-main [data-plot-lookback],
.plot-toolbar-main [data-plot-window] {
  width: 5.5rem;
}

.plot-toolbar-main [data-plot-signal-overlay] {
  width: 9rem;
}

.plot-toolbar-main [data-plot-lower-series] {
  width: 6rem;
}

.plot-live-toggle {
  padding-inline: 0.2rem;
}

.plot-live-toggle input[type='checkbox'] {
  width: 1.05rem;
  height: 1.05rem;
  min-height: 1.05rem;
}

.plot-toolbar-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.45rem;
}

.plot-toolbar-actions > button {
  min-height: 2.2rem;
  font-size: calc(0.86rem * var(--ui-text-scale));
}

.plot-status {
  margin: 0.15rem 0 0;
  font-size: calc(0.88rem * var(--ui-text-scale));
  line-height: 1.35;
}

article.panel[data-panel-id='plot'] {
  display: flex;
  flex-direction: column;
}

.plot-chart-shell {
  flex: 1 1 auto;
  min-height: 420px;
  width: 100%;
  min-width: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border) 86%, transparent);
  border-radius: 12px;
  background: color-mix(in oklab, var(--input-bg) 88%, transparent);
  overflow: hidden;
}

.plot-chart {
  width: 100%;
  height: 100%;
  min-height: 420px;
}

.group-color-menu {
  position: fixed;
  z-index: 90;
  display: grid;
  gap: 0.2rem;
  min-width: 124px;
  padding: 0.4rem;
  border-radius: 10px;
  border: 1px solid var(--input-border);
  background: color-mix(in oklab, var(--panel-bg) 92%, black 8%);
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.35);
}

.group-color-option {
  width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 0.38rem;
  justify-content: flex-start;
  font-size: 0.72rem;
  padding: 0.22rem 0.32rem;
}

.group-color-option.active {
  border-color: color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
}

.group-assign-modal {
  position: fixed;
  inset: 0;
  z-index: 95;
  background: color-mix(in oklab, var(--bg) 45%, transparent);
  display: grid;
  place-items: center;
  padding: 1rem;
}

.group-assign-card {
  width: min(420px, calc(100vw - 1.25rem));
  border: 1px solid var(--panel-border);
  border-radius: 12px;
  background: var(--panel-bg);
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.38);
  padding: 0.7rem;
  display: grid;
  gap: 0.58rem;
}

.group-assign-card h3 {
  margin: 0;
}

.group-assign-colors {
  display: flex;
  flex-wrap: wrap;
  gap: 0.34rem;
}

.group-assign-color-btn {
  padding: 0.34rem 0.48rem;
  border-radius: 999px;
  font-size: 0.74rem;
  display: inline-flex;
  align-items: center;
  gap: 0.36rem;
  border: 1px solid var(--input-border);
  background: color-mix(in oklab, var(--panel-bg) 86%, black 14%);
  color: var(--text);
}

.group-assign-color-btn.active {
  border-color: color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
  background: color-mix(in oklab, var(--accent) 12%, var(--panel-bg) 88%);
}

.group-assign-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.4rem;
}

.confirm-modal {
  position: fixed;
  inset: 0;
  z-index: 96;
  background: color-mix(in oklab, var(--bg) 45%, transparent);
  display: grid;
  place-items: center;
  padding: 1rem;
}

.confirm-card {
  width: min(420px, calc(100vw - 1.25rem));
  border: 1px solid var(--panel-border);
  border-radius: 12px;
  background: var(--panel-bg);
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.38);
  padding: 0.72rem;
  display: grid;
  gap: 0.62rem;
}

.confirm-card h3 {
  margin: 0;
}

.confirm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.4rem;
}

.fmp-coverage-choice-card {
  width: min(620px, calc(100vw - 1.25rem));
}

.fmp-coverage-choice-message {
  margin: 0;
  color: var(--text);
}

.fmp-coverage-choice-overlap {
  border: 1px solid color-mix(in oklab, var(--accent) 46%, var(--panel-border) 54%);
  border-radius: 6px;
  padding: 0.42rem 0.5rem;
  color: var(--accent);
  background: color-mix(in oklab, var(--accent) 9%, var(--panel-bg) 91%);
  font-family: var(--mono);
  font-size: 0.78rem;
}

.fmp-coverage-choice-gaps {
  margin: 0;
  padding-left: 1rem;
  display: grid;
  gap: 0.25rem;
  max-height: 9rem;
  overflow: auto;
  color: var(--muted);
  font-family: var(--mono);
  font-size: 0.72rem;
}

.fmp-coverage-choice-actions {
  flex-wrap: wrap;
}

.group-color-swatch {
  width: 0.72rem;
  height: 0.72rem;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--input-border) 70%, transparent);
  background: var(--swatch);
}

.group-color-swatch.auto {
  background:
    linear-gradient(45deg, transparent 42%, currentColor 42%, currentColor 58%, transparent 58%),
    linear-gradient(-45deg, transparent 42%, currentColor 42%, currentColor 58%, transparent 58%);
}

.metrics-grid {
  position: fixed;
  left: 0.55rem;
  right: 0.55rem;
  bottom: 0.3rem;
  z-index: 75;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.28rem;
  min-height: 1.24rem;
  padding: 0.12rem 0.32rem;
  border: 1px solid color-mix(in oklab, var(--panel-border) 82%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
  backdrop-filter: blur(8px);
  box-shadow: 0 -6px 22px rgba(0, 0, 0, 0.16);
  pointer-events: none;
}

.metric {
  min-height: 1rem;
  height: 1rem;
  padding: 0.04rem 0.28rem;
  display: flex;
  align-items: center;
  gap: 0.22rem;
  overflow: hidden;
  pointer-events: auto;
}

.metrics-grid .panel {
  border-radius: 999px;
  backdrop-filter: blur(4px);
  box-shadow: none;
  background: color-mix(in oklab, var(--panel-bg) 70%, transparent);
  border-color: color-mix(in oklab, var(--panel-border) 72%, transparent);
}

.metrics-grid .panel::before {
  display: none;
}

.metric-label {
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  width: 0.86rem;
  height: 0.86rem;
  color: var(--muted);
  font-size: 0;
  letter-spacing: 0;
  text-transform: none;
}

.metric-label::before {
  content: attr(data-icon);
  font-family: var(--font-mono);
  font-size: calc(0.52rem * var(--ui-text-scale));
  font-weight: 700;
  line-height: 1;
}

.metric-value {
  font-family: var(--font-mono);
  font-size: calc(0.62rem * var(--ui-text-scale));
  line-height: 1;
}

.metric > .metric-value:last-child {
  margin-left: auto;
}

.metric-caption {
  font-family: var(--font-mono);
  font-size: calc(0.56rem * var(--ui-text-scale));
  line-height: 1;
}

.stream-status-head {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.2rem;
  min-width: 0;
}

.stream-diagnostics {
  display: none;
}

.metric-stream .metric-value,
.metric-kill .metric-value {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 999px;
  background: currentColor;
  color: currentColor;
  flex: 0 0 auto;
  font-size: 0;
  box-shadow: 0 0 0 1px color-mix(in oklab, currentColor 35%, transparent);
}

.metric-kill .metric-value:last-child {
  margin-left: 0;
}

.metric-quotes .metric-label,
.metric-signals .metric-label {
  color: var(--accent);
}

.stream-diagnostic-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.18rem;
  font-size: calc(0.65rem * var(--ui-text-scale));
  line-height: 1;
}

.stream-diagnostic-name {
  color: var(--muted);
  font-family: var(--font-mono);
  letter-spacing: 0.03em;
  min-width: 0;
}

.stream-diagnostic-value {
  font-family: var(--font-mono);
  text-align: right;
  white-space: nowrap;
  flex-shrink: 0;
}

.content-grid {
  grid-row: 3;
  display: grid;
  gap: var(--ui-grid-gap);
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: start;
  min-height: 0;
  min-width: 0;
  width: 100%;
}

.dockview-layout-root {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 620px;
  min-width: 0;
  border-radius: 18px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 82%, transparent);
  background:
    linear-gradient(
      180deg,
      color-mix(in oklab, var(--panel-bg) 86%, transparent) 0%,
      color-mix(in oklab, var(--input-bg) 92%, transparent) 100%
    );
  box-shadow: 0 24px 52px rgba(0, 0, 0, 0.18);
  overflow: hidden;
  display: flex;
  flex: 1 1 auto;
}

.dockview-layout-staging {
  display: none !important;
}

.dockview-panel-host {
  display: flex;
  height: 100%;
  min-height: 0;
  min-width: 0;
  width: 100%;
  overflow: hidden;
}

.dockview-missing-panel {
  padding: 0.85rem;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.78rem;
}

.edgex-dockview-root {
  height: 100%;
  padding: var(--ui-dockview-pad);
  flex: 1 1 auto;
  min-height: 0;
}

.dockview-theme-edgex {
  --dv-tabs-and-actions-container-font-size: calc(var(--ui-dockview-tab-font-size) * var(--ui-text-scale));
  --dv-tabs-and-actions-container-height: var(--ui-dockview-tab-height);
  --dv-tab-font-size: calc(var(--ui-dockview-tab-font-size) * var(--ui-text-scale));
  --dv-tab-font-family: var(--font-sans);
  --dv-background-color: color-mix(in oklab, var(--input-bg) 92%, transparent);
  --dv-group-view-background-color: color-mix(in oklab, var(--panel-bg) 98%, transparent);
  --dv-tabs-and-actions-container-background-color: color-mix(in oklab, var(--panel-bg) 94%, var(--input-bg) 6%);
  --dv-activegroup-visiblepanel-tab-background-color: color-mix(in oklab, var(--input-bg) 96%, white 4%);
  --dv-activegroup-hiddenpanel-tab-background-color: color-mix(in oklab, var(--panel-bg) 90%, var(--input-bg) 10%);
  --dv-inactivegroup-visiblepanel-tab-background-color: color-mix(in oklab, var(--panel-bg) 94%, transparent);
  --dv-inactivegroup-hiddenpanel-tab-background-color: color-mix(in oklab, var(--panel-bg) 84%, transparent);
  --dv-activegroup-visiblepanel-tab-color: var(--text);
  --dv-activegroup-hiddenpanel-tab-color: color-mix(in oklab, var(--text) 68%, var(--muted) 32%);
  --dv-inactivegroup-visiblepanel-tab-color: color-mix(in oklab, var(--text) 86%, var(--muted) 14%);
  --dv-inactivegroup-hiddenpanel-tab-color: var(--muted);
  --dv-tab-divider-color: color-mix(in oklab, var(--panel-border) 62%, transparent);
  --dv-separator-border: color-mix(in oklab, var(--panel-border) 72%, transparent);
  --dv-sash-color: color-mix(in oklab, var(--panel-border) 46%, transparent);
  --dv-active-sash-color: color-mix(in oklab, var(--accent) 48%, transparent);
  --dv-drag-over-background-color: color-mix(in oklab, var(--accent) 16%, transparent);
  --dv-drag-over-border-color: color-mix(in oklab, var(--accent) 56%, transparent);
  --dv-tabs-container-scrollbar-color: color-mix(in oklab, var(--accent) 32%, transparent);
  --dv-icon-hover-background-color: color-mix(in oklab, var(--accent) 12%, transparent);
  --dv-floating-box-shadow: 0 18px 38px var(--panel-shadow, rgba(0, 0, 0, 0.22));
  --dv-border-radius: 8px;
  --edgex-dockview-frame-border: color-mix(in oklab, var(--panel-border) 84%, var(--text) 16%);
  --edgex-dockview-frame-border-strong: color-mix(in oklab, var(--accent) 34%, var(--panel-border) 66%);
  --edgex-dockview-header-surface: color-mix(in oklab, var(--panel-bg) 82%, var(--input-bg) 18%);
  --edgex-dockview-body-surface: color-mix(in oklab, var(--input-bg) 74%, var(--panel-bg) 26%);
  --edgex-dockview-frame-shadow: 0 8px 18px rgba(0, 0, 0, 0.12);
}

.dockview-theme-edgex .dv-groupview,
.dockview-theme-edgex .dv-floating-group {
  border-radius: 8px;
  contain: layout paint;
  overflow: hidden;
}

.dockview-theme-edgex .dv-groupview {
  border: 1px solid var(--edgex-dockview-frame-border);
  background:
    linear-gradient(
      180deg,
      color-mix(in oklab, var(--edgex-dockview-header-surface) 92%, transparent) 0,
      color-mix(in oklab, var(--edgex-dockview-body-surface) 96%, transparent) 100%
    );
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--panel-bg) 18%, transparent),
    var(--edgex-dockview-frame-shadow);
}

.dockview-theme-edgex .dv-groupview.dv-active-group {
  border-color: var(--edgex-dockview-frame-border-strong);
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--accent) 16%, transparent),
    0 10px 24px rgba(0, 0, 0, 0.16);
}

.dockview-theme-edgex .dv-groupview.dv-inactive-group {
  border-color: color-mix(in oklab, var(--edgex-dockview-frame-border) 88%, transparent);
}

.dockview-theme-edgex .dv-tab {
  font-weight: 700;
  letter-spacing: 0.01em;
}

.dockview-theme-edgex .dv-groupview > .dv-tabs-and-actions-container {
  background:
    linear-gradient(
      180deg,
      color-mix(in oklab, var(--edgex-dockview-header-surface) 100%, transparent) 0,
      color-mix(in oklab, var(--panel-bg) 88%, var(--input-bg) 12%) 100%
    );
  border-bottom: 1px solid color-mix(in oklab, var(--edgex-dockview-frame-border) 88%, transparent);
  box-shadow: inset 0 -1px 0 color-mix(in oklab, var(--panel-bg) 12%, transparent);
}

.dockview-theme-edgex .dv-groupview > .dv-content-container {
  background: var(--edgex-dockview-body-surface);
  box-shadow: inset 0 1px 0 color-mix(in oklab, var(--panel-bg) 16%, transparent);
}

.dockview-theme-edgex .dv-groupview > .dv-content-container > * {
  background: transparent;
}

.dockview-theme-edgex .dv-pane-container .dv-pane .dv-pane-body {
  background: transparent;
}

.dockview-theme-edgex .dv-groupview.dv-active-group > .dv-tabs-and-actions-container {
  border-bottom-color: color-mix(in oklab, var(--accent) 30%, var(--edgex-dockview-frame-border) 70%);
}

.dockview-theme-edgex .dv-groupview .dv-tabs-and-actions-container .dv-tab.dv-active-tab {
  box-shadow:
    inset 0 -2px 0 color-mix(in oklab, var(--accent) 62%, transparent),
    inset 0 0 0 1px color-mix(in oklab, var(--panel-border) 30%, transparent);
}

.dockview-theme-edgex .dv-groupview .dv-tabs-and-actions-container .dv-tab.dv-inactive-tab {
  opacity: 0.88;
}

.dockview-theme-edgex .dv-tabs-and-actions-container .dv-right-actions-container {
  align-items: center;
  gap: 0.22rem;
  margin-left: auto;
  padding-right: 0.32rem;
}

.dockview-theme-edgex .dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash {
  width: 8px;
  margin-left: -2px;
  border-radius: 999px;
}

.dockview-theme-edgex .dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash {
  height: 8px;
  margin-top: -2px;
  border-radius: 999px;
}

.dockview-theme-edgex .dv-split-view-container > .dv-sash-container > .dv-sash:not(.disabled) {
  background-color: color-mix(in oklab, var(--panel-border) 72%, transparent);
}

.dockview-theme-edgex .dv-split-view-container > .dv-sash-container > .dv-sash:not(.disabled):hover,
.dockview-theme-edgex .dv-split-view-container > .dv-sash-container > .dv-sash:not(.disabled):active {
  background-color: color-mix(in oklab, var(--accent) 52%, transparent);
}

body.layout-interacting .dockview-layout-root,
body.layout-interacting .dockview-theme-edgex .dv-groupview,
body.layout-interacting .dockview-theme-edgex .dv-floating-group {
  box-shadow: none !important;
}

body.layout-interacting .dockview-theme-edgex .dv-groupview,
body.layout-interacting .dockview-theme-edgex .dv-groupview > .dv-tabs-and-actions-container {
  background: var(--edgex-dockview-body-surface);
}

body.layout-interacting .dockview-theme-edgex .dv-groupview > .dv-tabs-and-actions-container,
body.layout-interacting .dockview-theme-edgex .dv-groupview > .dv-content-container,
body.layout-interacting .dockview-theme-edgex .dv-groupview .dv-tabs-and-actions-container .dv-tab.dv-active-tab {
  box-shadow: none;
}

.dockview-group-actions {
  display: inline-flex;
  align-items: center;
  gap: 0.22rem;
}

.dockview-group-action {
  width: calc(var(--ui-dockview-tab-height) - 10px);
  min-width: calc(var(--ui-dockview-tab-height) - 10px);
  height: calc(var(--ui-dockview-tab-height) - 10px);
  padding: 0;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.dockview-group-action:hover:not(:disabled) {
  background: var(--dv-icon-hover-background-color);
}

.dockview-group-action:disabled {
  opacity: 0.38;
  cursor: default;
}

.dockview-group-action svg {
  width: 15px;
  height: 15px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.content-grid > .panel {
  padding: var(--ui-panel-padding);
  min-height: 180px;
  grid-column: span var(--panel-span-lg, 4);
  align-self: start;
}

.workspace-hidden {
  display: none !important;
}

.panel.wide {
  grid-column: span var(--panel-span-lg, 12);
}

.panel-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--ui-panel-row-gap);
  flex-wrap: wrap;
}

.panel-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  column-gap: 0.5rem;
  row-gap: 0.45rem;
}

.panel-header > .panel-close-btn {
  grid-column: 1;
  align-self: start;
  margin-right: 0;
  margin-top: 0.04rem;
}

.panel-header > h3,
.panel-header > .panel-title-stack {
  grid-column: 2;
  min-width: 0;
}

.panel-header > .topbar-actions,
.panel-header > .panel-controls {
  grid-column: 3;
}

.panel-row > .topbar-actions {
  margin-left: auto;
  align-items: center;
  justify-content: flex-end;
  max-width: 100%;
  gap: 0.45rem;
}

#serverTitle {
  margin: 0;
  line-height: 1.1;
  font-size: calc(1.05rem * var(--ui-text-scale));
  white-space: nowrap;
}

.topbar .panel-row {
  align-items: baseline;
  gap: 0.42rem;
  margin: 0;
  min-width: 0;
}

.topbar .panel-row > .chip {
  align-self: center;
  line-height: 1;
  font-size: calc(0.66rem * var(--ui-text-scale));
  padding: 0.12rem 0.28rem;
}

.topbar .eyebrow {
  margin: 0;
  font-size: calc(0.58rem * var(--ui-text-scale));
  line-height: 1;
  white-space: nowrap;
}

.panel-title-row {
  justify-content: flex-start;
  align-items: center;
  gap: 0.35rem;
}

.panel-title-row > h3,
.panel-title-row > .panel-title-stack > h3 {
  margin: 0;
}

.panel-title-stack {
  display: grid;
  gap: 0.18rem;
  min-width: 0;
}

.panel-meta {
  font-size: 0.72rem;
}

.panel-controls {
  display: flex;
  justify-content: flex-start;
  gap: 0.3rem;
  margin: 0;
  margin-left: auto;
  flex-wrap: wrap;
}

.topbar-actions > .panel-controls {
  margin-left: 0.25rem;
}

.layout-name-stack {
  position: relative;
  display: flex;
  align-items: center;
  width: min(240px, 100%);
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  min-height: var(--ui-control-height);
  min-width: min(180px, 100%);
  max-width: 100%;
  flex: 0 1 240px;
}

.layout-name-stack > input {
  width: 100%;
  height: 100%;
}

.layout-save-status {
  position: absolute;
  top: calc(100% + 2px);
  left: 2px;
  right: 2px;
  min-height: 0.82rem;
  overflow: hidden;
  font-size: calc(0.64rem * var(--ui-text-scale));
  line-height: 1;
  color: var(--muted);
  opacity: 0.88;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.layout-save-status.saved {
  color: var(--ok);
}

#saveLayoutBtn.flash-saved {
  border-color: color-mix(in oklab, var(--ok) 72%, var(--input-border) 28%);
  color: var(--ok);
}

.panel-controls button {
  min-height: 1.85rem;
  padding: 0.24rem 0.52rem;
  font-size: 0.7rem;
  border-radius: 6px;
  line-height: 1.1;
}

.panel-close-btn {
  position: static;
  width: 1.3rem;
  height: 1.3rem;
  min-width: 1.3rem;
  min-height: 1.3rem;
  padding: 0;
  border-radius: 6px;
  line-height: 1;
  font-size: 0.82rem;
  display: none;
  align-items: center;
  justify-content: center;
  align-self: center;
  margin-right: 0.18rem;
  border-color: color-mix(in oklab, var(--danger) 72%, var(--input-border) 28%);
  color: #fff;
  background: color-mix(in oklab, var(--danger) 84%, black 16%);
}

.panel-row > .panel-close-btn,
.panel-title-row > .panel-close-btn,
.panel-header > .panel-close-btn {
  align-self: center;
  margin-top: 0;
}

body.layout-unlocked .panel-close-btn {
  display: inline-flex;
}

.panel-close-btn:hover {
  background: color-mix(in oklab, var(--danger) 92%, black 8%);
}

body.panel-focus-dragging .content-grid > .panel {
  opacity: 0.88;
  filter: none;
}

body.panel-focus-dragging .content-grid > .panel.panel-focus-active {
  opacity: 1;
  filter: none;
  z-index: 46;
}

body.layout-interacting .content-grid > .panel {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: 0 8px 18px color-mix(in oklab, black 18%, transparent);
  transition: none !important;
}

body.layout-interacting .content-grid > .panel.panel-grouped,
body.layout-interacting .content-grid > .panel.panel-foreground {
  box-shadow: 0 8px 18px color-mix(in oklab, black 18%, transparent);
}

body.layout-resize-masking .content-grid > .panel.panel-resizing > :not(.panel-row):not(.panel-header):not(.panel-title-row):not(.panel-resize-handle),
body.layout-resize-masking.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] > :not(.panel-row):not(.panel-header):not(.panel-title-row) {
  content-visibility: hidden;
  contain: layout paint style;
  opacity: 0;
  pointer-events: none;
}

body.layout-resize-masking .content-grid > .panel.panel-resizing::after,
body.layout-resize-masking.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true']::after {
  content: 'Resizing...';
  position: absolute;
  inset: 42px 0 0;
  z-index: 38;
  display: grid;
  place-items: center;
  border-top: 1px solid color-mix(in oklab, var(--accent) 32%, transparent);
  background:
    repeating-linear-gradient(
      135deg,
      color-mix(in oklab, var(--panel-bg) 86%, black 14%) 0 12px,
      color-mix(in oklab, var(--input-bg) 82%, black 18%) 12px 24px
    );
  color: color-mix(in oklab, var(--text) 72%, var(--muted) 28%);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0;
  pointer-events: none;
}

.panel-resizing {
  z-index: 30;
}

.panel-ghost {
  opacity: 0.55;
  border-style: dashed;
}

.panel-size-btn {
  opacity: 0.72;
}

.panel-resize-handle {
  position: absolute;
  right: 0.3rem;
  bottom: 0.28rem;
  width: 1.12rem;
  height: 1.12rem;
  padding: 0;
  border: 1px solid var(--input-border);
  border-radius: 3px;
  background: color-mix(in oklab, var(--panel-bg) 84%, transparent);
  opacity: 0;
  pointer-events: none;
  z-index: 40;
  cursor: nwse-resize;
}

.panel-resize-handle::before {
  content: '';
  position: absolute;
  right: 2px;
  bottom: 2px;
  width: 9px;
  height: 9px;
  background:
    linear-gradient(135deg, transparent 0 38%, var(--muted) 39% 44%, transparent 45% 58%, var(--muted) 59% 64%, transparent 65% 100%);
}

body.layout-mode-desktop.layout-unlocked .panel-resize-handle,
body.layout-mode-desktop.drag-modifier .panel-resize-handle {
  opacity: 0.72;
  pointer-events: auto;
}

body.layout-locked .panel-resize-handle {
  display: none;
}

body.layout-locked .panel-size-btn {
  opacity: 0.25;
  pointer-events: none;
}

body.drag-modifier .panel-size-btn,
body.layout-unlocked .panel-size-btn {
  cursor: all-scroll;
}

body.drag-modifier .content-grid > .panel,
body.layout-unlocked .content-grid > .panel {
  cursor: grab;
}

body.drag-modifier .content-grid > .panel:active,
body.layout-unlocked .content-grid > .panel:active {
  cursor: grabbing;
}

.panel-dup-btn {
  opacity: 0.72;
}

body.layout-locked .panel-dup-btn {
  opacity: 0.25;
  pointer-events: none;
}

body.layout-locked .panel-close-btn {
  display: none;
}

body.layout-engine-dockview-active .panel-size-btn,
body.layout-engine-dockview-active .panel-resize-handle {
  display: none !important;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] .panel-controls,
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] .panel-close-btn,
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] .panel-resize-handle {
  display: none !important;
}

.layout-lock-btn {
  min-width: 36px;
  width: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.layout-lock-btn.is-locked {
  border-color: color-mix(in oklab, var(--danger) 70%, var(--input-border) 30%);
  color: var(--danger);
}

.layout-lock-btn.is-unlocked {
  border-color: color-mix(in oklab, var(--ok) 70%, var(--input-border) 30%);
  color: var(--ok);
}

.panel-lock-btn,
.panel-group-btn {
  opacity: 0.84;
}

.panel-priority-locked {
  border-color: color-mix(in oklab, var(--accent) 55%, var(--panel-border) 45%);
}

.panel-priority-locked .panel-lock-btn {
  border-color: color-mix(in oklab, var(--accent) 78%, var(--input-border) 22%);
  color: var(--accent);
}

.panel-grouped {
  --panel-top-accent: var(--group-accent, var(--accent));
  background:
    linear-gradient(
      180deg,
      color-mix(in oklab, var(--group-accent, var(--accent)) 12%, transparent) 0%,
      transparent 44%
    ),
    var(--panel-bg);
  border-color: color-mix(in oklab, var(--group-accent, var(--panel-border)) 64%, var(--panel-border) 36%);
  box-shadow:
    inset 0 3px 0 color-mix(in oklab, var(--group-accent, var(--panel-border)) 72%, transparent),
    0 20px 40px rgba(0, 0, 0, 0.25);
}

.panel-grouped .panel-group-btn {
  border-color: color-mix(in oklab, var(--group-accent, var(--input-border)) 80%, var(--input-border) 20%);
  color: var(--group-accent, var(--text));
}

.panel-foreground {
  --panel-top-accent: color-mix(in oklab, var(--accent) 82%, white 18%);
  border-color: color-mix(in oklab, var(--accent) 65%, var(--panel-border) 35%);
  box-shadow:
    0 0 0 1px color-mix(in oklab, var(--accent) 46%, transparent),
    0 22px 48px rgba(0, 0, 0, 0.32);
  z-index: 34;
}

.panel-foreground.panel-grouped {
  --panel-top-accent: color-mix(in oklab, var(--group-accent, var(--accent)) 85%, white 15%);
}

.content-grid > .panel:hover {
  border-color: color-mix(in oklab, var(--panel-top-accent) 55%, var(--panel-border) 45%);
}

.json-block {
  margin: 0.5rem 0 0;
  padding: var(--ui-code-pad-y) var(--ui-code-pad-x);
  border-radius: 10px;
  background: color-mix(in oklab, var(--input-bg) 88%, black 12%);
  border: 1px solid var(--input-border);
  color: color-mix(in oklab, var(--text) 92%, var(--accent) 8%);
  font-family: var(--font-mono);
  font-size: calc(var(--ui-code-font-size) * var(--ui-text-scale));
  overflow: auto;
  max-height: 360px;
}

body[data-theme='contrast'] .json-block {
  background: #060606;
  color: #ffd36b;
}

.account-table-wrap {
  margin-top: 0.5rem;
  border: 1px solid var(--input-border);
  border-radius: 10px;
  background: var(--input-bg);
}

.account-table {
  margin-top: 0;
}

.account-table td:nth-child(1) {
  width: 40%;
}

.account-table td code {
  white-space: nowrap;
}

.account-table td:nth-child(2) code {
  white-space: pre-wrap;
  word-break: break-word;
}

.event-log {
  max-height: 260px;
  min-height: 0;
}

.bindings-editor {
  width: 100%;
  min-height: 210px;
  border: 1px solid var(--input-border);
  border-radius: 10px;
  padding: var(--ui-code-pad-y) var(--ui-code-pad-x);
  background: var(--input-bg);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: calc(var(--ui-code-font-size) * var(--ui-text-scale));
  resize: vertical;
  margin-top: 0.5rem;
}

.script-toolbar {
  display: grid;
  grid-template-columns: repeat(6, minmax(120px, 1fr));
  gap: 0.45rem;
  margin-bottom: 0.55rem;
}

.script-tabs {
  display: flex;
  gap: 0.2rem;
  border-bottom: 1px solid var(--panel-border);
  margin-bottom: 0.35rem;
}

.script-tab-btn {
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 10px 10px 0 0;
  background: color-mix(in oklab, var(--panel-bg) 92%, black 8%);
  color: var(--muted);
  padding: 0.42rem 0.72rem;
  font-size: 0.8rem;
}

.script-tab-btn.active {
  color: var(--text);
  border-color: var(--input-border);
  background: var(--panel-bg);
}

.script-tab-pane {
  display: none !important;
}

.script-tab-pane.active {
  display: grid !important;
  gap: 0.5rem;
}

.script-helper-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto minmax(160px, 200px) minmax(220px, 1fr) auto;
  gap: 0.45rem;
  align-items: end;
}

.script-helper-row > button {
  width: 100%;
}

.script-toggle-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  border: 1px solid var(--input-border);
  border-radius: 10px;
  padding: 0.48rem 0.62rem;
  background: var(--input-bg);
  color: var(--text);
  min-height: 36px;
}

.script-toggle-inline input {
  margin: 0;
}

.script-docs-link {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}

.script-workbench {
  display: grid;
  grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
  gap: 0.5rem;
  margin-bottom: 0.55rem;
  align-items: stretch;
  min-height: 0;
}

.script-browser {
  display: grid;
  gap: 0.4rem;
  min-height: 0;
}

.script-browser-label {
  font-size: 0.8rem;
  color: var(--muted);
}

.script-editor-pane {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 0.5rem;
  min-width: 0;
  min-height: 0;
}

.script-tree {
  border: 1px solid var(--input-border);
  border-radius: 10px;
  background: var(--input-bg);
  min-height: 260px;
  max-height: none;
  height: 100%;
  overflow: auto;
  font-family: var(--font-mono);
  font-size: 0.76rem;
  padding: 0.35rem;
}

.script-tree-item {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: 1px solid transparent;
  color: var(--text);
  padding: 0.2rem 0.3rem;
  border-radius: 6px;
}

.script-tree-item:hover {
  border-color: var(--input-border);
}

.script-tree-item.active {
  border-color: color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}

.strategy-table-wrap {
  overflow: auto;
  min-height: 0;
}

.strategy-table-empty {
  padding: 0.9rem 0;
}

.strategy-list-table {
  width: 100%;
  table-layout: auto;
  margin-top: 0;
}

.strategy-list-table th,
.strategy-list-table td {
  vertical-align: middle;
  white-space: nowrap;
}

.strategy-cell-primary {
  font-weight: 600;
}

.strategy-cell-secondary {
  margin-top: 0.15rem;
  color: var(--muted);
  font-size: 0.78rem;
}

.strategy-list-row {
  cursor: pointer;
}

.strategy-list-row.is-selected {
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}

.strategy-list-actions {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  white-space: nowrap;
}

.strategy-list-table .metric-col {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.strategy-list-table .metric-col.metric-col-center {
  text-align: center;
}

.strategy-row-btn {
  min-width: 3.6rem;
  min-height: var(--ui-strategy-row-btn-min-height);
  padding: var(--ui-strategy-row-btn-pad-y) var(--ui-strategy-row-btn-pad-x);
  font-size: calc(var(--ui-strategy-row-btn-font-size) * var(--ui-text-scale));
}

.strategy-state-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 5.5rem;
  padding: var(--ui-strategy-state-badge-pad-y) var(--ui-strategy-state-badge-pad-x);
  border-radius: 999px;
  border: 1px solid var(--input-border);
  font-size: calc(var(--ui-strategy-state-badge-font-size) * var(--ui-text-scale));
  font-weight: 600;
  letter-spacing: 0.04em;
}

.strategy-state-badge.is-ok {
  color: var(--ok);
  border-color: color-mix(in oklab, var(--ok) 52%, var(--input-border) 48%);
  background: color-mix(in oklab, var(--ok) 12%, transparent);
}

.strategy-state-badge.is-warn {
  color: var(--warn);
  border-color: color-mix(in oklab, var(--warn) 56%, var(--input-border) 44%);
  background: color-mix(in oklab, var(--warn) 12%, transparent);
}

.strategy-state-badge.is-idle {
  color: var(--muted);
}

.script-editor {
  width: 100%;
  height: 100%;
  min-height: 240px;
  border: 1px solid var(--input-border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--input-bg);
}

article.panel[data-panel-id='script-editor'] {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  min-height: 420px;
  overflow: hidden;
}

article.panel[data-panel-id='strategy-control'] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  min-height: 620px;
  overflow: auto;
}

.panel-frame-body {
  min-height: 0;
  overflow: hidden;
}

.panel-frame-footer {
  margin-top: 0.5rem;
  padding-top: 0.42rem;
  border-top: 1px solid color-mix(in oklab, var(--panel-border) 78%, transparent);
}

.panel-footer-status {
  margin: 0;
  min-height: 1rem;
}

.strategy-shell {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 0.58rem;
  min-height: 0;
  height: auto;
}

.strategy-panel-actions {
  align-items: center;
  gap: 0.42rem;
}

.strategy-panel-actions > .chip,
.strategy-panel-actions > button {
  min-height: var(--ui-strategy-action-min-height);
}

.strategy-panel-actions > button {
  padding: var(--ui-strategy-panel-button-pad-y) var(--ui-strategy-panel-button-pad-x);
  font-size: calc(var(--ui-strategy-panel-button-font-size) * var(--ui-text-scale));
}

.strategy-panel-actions > .chip {
  display: inline-flex;
  align-items: center;
  padding: var(--ui-strategy-chip-pad-y) var(--ui-strategy-chip-pad-x);
  font-size: calc(var(--ui-strategy-chip-font-size) * var(--ui-text-scale));
  line-height: 1;
}

.strategy-panel-note {
  margin: 0;
}

.strategy-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.45rem;
}

.strategy-summary-card,
.strategy-card,
.strategy-registry,
.strategy-detail {
  border: 1px solid var(--input-border);
  border-radius: 12px;
  background: color-mix(in oklab, var(--panel-bg) 78%, var(--input-bg) 22%);
}

.strategy-summary-card {
  padding: var(--ui-strategy-summary-card-pad-y) var(--ui-strategy-summary-card-pad-x);
  display: grid;
  gap: 0.08rem;
}

.strategy-summary-label {
  font-size: calc(var(--ui-strategy-summary-label-size) * var(--ui-text-scale));
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.strategy-summary-value {
  font-size: calc(var(--ui-strategy-summary-value-size) * var(--ui-text-scale));
  font-weight: 700;
}

.strategy-summary-meta {
  color: var(--muted);
  font-size: calc(var(--ui-strategy-summary-meta-size) * var(--ui-text-scale));
}

.strategy-main {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  gap: 0.7rem;
  min-height: 0;
  overflow: hidden;
}

.strategy-registry,
.strategy-detail {
  min-height: 0;
  overflow: hidden;
}

.strategy-registry {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  padding: var(--ui-strategy-section-padding);
  gap: var(--ui-strategy-section-gap);
}

.strategy-section-head,
.strategy-detail-head,
.strategy-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
}

.strategy-section-head h4,
.strategy-detail-head h4,
.strategy-card-head h5 {
  margin: 0;
}

.strategy-registry-toolbar,
.strategy-form-grid {
  display: grid;
  gap: var(--ui-strategy-section-gap);
}

.strategy-registry-toolbar {
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
}

.strategy-registry-toolbar label,
.strategy-form-grid label {
  display: grid;
  gap: 0.2rem;
  font-size: calc(var(--ui-strategy-form-label-size) * var(--ui-text-scale));
  color: var(--muted);
}

.strategy-registry-table {
  min-height: 0;
  overflow: hidden;
}

.strategy-detail {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  padding: var(--ui-strategy-section-padding);
  gap: var(--ui-strategy-detail-gap);
}

.strategy-detail-grid {
  display: grid;
  grid-template-columns: minmax(320px, 0.95fr) minmax(0, 1.35fr);
  grid-template-areas:
    "identity config"
    "runtime config"
    "log config";
  gap: var(--ui-strategy-detail-gap);
  min-height: 0;
  overflow: visible;
  padding-right: 0.15rem;
}

.strategy-card {
  padding: var(--ui-strategy-card-padding);
  min-height: 0;
  overflow: hidden;
}

.strategy-identity-card { grid-area: identity; }
.strategy-runtime-card { grid-area: runtime; }
.strategy-config-card { grid-area: config; }
.strategy-log-card { grid-area: log; }

.strategy-form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.strategy-config-card textarea,
.strategy-card .json-block {
  margin-top: 0.45rem;
}

article.panel[data-panel-id='strategy-control'] .panel-row {
  align-items: center;
}

article.panel[data-panel-id='strategy-control'] .panel-row > h3,
article.panel[data-panel-id='strategy-control'] .panel-row > .panel-title-stack > h3 {
  line-height: 1.05;
}

article.panel[data-panel-id='strategy-control'] .panel-row > .topbar-actions {
  flex-wrap: wrap;
  justify-content: flex-start;
  min-width: 0;
}

.strategy-section-head,
.strategy-detail-head,
.strategy-card-head,
.strategy-summary-grid,
.strategy-main,
.strategy-registry,
.strategy-detail,
.strategy-detail-grid,
.strategy-card,
.strategy-quick-settings,
.strategy-quick-settings-grid,
.strategy-form-grid,
.strategy-registry-toolbar {
  min-width: 0;
}

.strategy-detail-head > .topbar-actions,
.strategy-card-head > .topbar-actions {
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
}

.strategy-runtime-card .json-block,
.strategy-log-card .json-block {
  min-height: 120px;
  max-height: 280px;
}

.strategy-config-card textarea {
  min-height: 180px;
  height: 280px;
}

.strategy-quick-settings {
  margin-top: 0.15rem;
  margin-bottom: 0.58rem;
  padding: var(--ui-strategy-quick-settings-pad);
  border: 1px solid var(--input-border);
  border-radius: 10px;
  background: color-mix(in oklab, var(--input-bg) 80%, transparent);
}

.strategy-subsection {
  margin-top: 0.62rem;
  padding-top: 0.62rem;
  border-top: 1px solid color-mix(in oklab, var(--input-border) 55%, transparent);
}

.strategy-quick-settings-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.32rem;
  margin-top: 0.45rem;
  max-height: 260px;
  overflow: auto;
  padding-right: 0.15rem;
}

.strategy-setting-row {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(150px, 0.85fr);
  align-items: center;
  gap: 0.52rem;
  padding: 0.28rem 0.12rem;
  border-bottom: 1px solid color-mix(in oklab, var(--input-border) 55%, transparent);
}

.strategy-setting-row:last-child {
  border-bottom: 0;
}

.strategy-setting-label {
  font-family: var(--font-mono);
  font-size: calc(var(--ui-strategy-setting-label-size) * var(--ui-text-scale));
  color: var(--text);
  overflow-wrap: anywhere;
  line-height: 1.2;
}

.strategy-setting-value {
  min-width: 0;
}

.strategy-setting-value > input:not([type='checkbox']) {
  width: 100%;
}

.strategy-setting-boolean {
  display: inline-flex;
  justify-content: flex-start;
}

.strategy-setting-value input[type='checkbox'] {
  width: 1rem;
  height: 1rem;
}

article.panel[data-panel-id='script-editor'] .script-tab-pane.active[data-script-tab-pane='editor'] {
  grid-template-rows: auto minmax(0, 1fr) auto;
  min-height: 0;
}

article.panel[data-panel-id='script-editor'] .script-workbench {
  min-height: 0;
}

article.panel[data-panel-id='strategy-control'] .script-workbench,
article.panel[data-panel-id='strategy-control'] .script-editor-pane,
article.panel[data-panel-id='strategy-control'] .script-browser {
  min-height: 0;
}

article.panel[data-panel-id='strategy-control'] #strategyRuntimeSummary,
article.panel[data-panel-id='strategy-control'] #strategyLog {
  max-height: none;
  min-height: 0;
}

article.panel[data-panel-id='strategy-control'] .panel-frame-body {
  overflow: auto;
}

article.panel[data-panel-id='script-editor'] .script-editor-pane,
article.panel[data-panel-id='script-editor'] .script-browser {
  min-height: 0;
}

article.panel[data-panel-id='script-editor'] .script-tab-pane {
  min-height: 0;
  overflow: hidden;
}

.event-log-toolbar {
  display: grid;
  grid-template-columns: auto auto minmax(16rem, 1fr) auto;
  align-items: center;
  gap: 0.4rem;
  min-width: 0;
}

.event-log-toolbar input {
  min-width: 0;
  width: 100%;
}

.event-log-toolbar input,
.event-log-toolbar button {
  min-height: 2.15rem;
}

.event-log-toolbar button {
  min-width: 4.8rem;
}

.event-log-toolbar + .event-log,
#eventLog {
  margin-top: 0.45rem;
}

@media (max-width: 900px) {
  .event-log-toolbar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 1320px) {
  .strategy-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .strategy-detail-grid {
    grid-template-columns: 1fr;
    grid-template-areas:
      "identity"
      "runtime"
      "config"
      "log";
  }
}

@media (max-width: 820px) {
  html {
    font-size: 20px;
  }

  .panel-header {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .panel-header > .topbar-actions,
  .panel-header > .panel-controls {
    grid-column: 1 / -1;
    margin-left: 0;
  }

  article.panel[data-panel-id='strategy-control'] .panel-row,
  .strategy-section-head,
  .strategy-detail-head,
  .strategy-card-head {
    flex-direction: column;
    align-items: stretch;
  }

  .strategy-registry-toolbar,
  .strategy-form-grid,
  .strategy-summary-grid,
  .strategy-quick-settings-grid {
    grid-template-columns: 1fr;
  }

  .strategy-setting-row {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
}

textarea.script-editor {
  padding: 0.6rem;
  font-family: var(--font-mono);
  font-size: 0.8rem;
  color: var(--text);
  resize: vertical;
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 0.45rem;
  font-size: calc(var(--ui-table-font-size) * var(--ui-text-scale));
}

.table-scroll {
  overflow: auto;
  max-height: none;
  min-height: 0;
}

.table-scroll-short {
  max-height: none;
}

.table-scroll,
.fmp-jobs-table-scroll,
.json-block,
.script-tree,
.script-editor,
textarea.bindings-editor {
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--accent) 65%, var(--input-border) 35%) color-mix(in oklab, var(--bg) 72%, black 28%);
}

.table-scroll::-webkit-scrollbar,
.fmp-jobs-table-scroll::-webkit-scrollbar,
.json-block::-webkit-scrollbar,
.script-tree::-webkit-scrollbar,
.script-editor::-webkit-scrollbar,
textarea.bindings-editor::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

.table-scroll::-webkit-scrollbar-track,
.fmp-jobs-table-scroll::-webkit-scrollbar-track,
.json-block::-webkit-scrollbar-track,
.script-tree::-webkit-scrollbar-track,
.script-editor::-webkit-scrollbar-track,
textarea.bindings-editor::-webkit-scrollbar-track {
  background: color-mix(in oklab, var(--bg) 80%, black 20%);
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.table-scroll::-webkit-scrollbar-thumb,
.fmp-jobs-table-scroll::-webkit-scrollbar-thumb,
.json-block::-webkit-scrollbar-thumb,
.script-tree::-webkit-scrollbar-thumb,
.script-editor::-webkit-scrollbar-thumb,
textarea.bindings-editor::-webkit-scrollbar-thumb {
  background: color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
  border-radius: 8px;
  border: 1px solid color-mix(in oklab, var(--bg) 60%, black 40%);
}

.data-table th,
.data-table td {
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  padding: var(--ui-table-cell-pad-y) var(--ui-table-cell-pad-x);
  text-align: left;
  vertical-align: top;
}

.data-table th {
  color: var(--muted);
  font-weight: 500;
}

.data-table th.sortable {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}

.data-table th.sortable::after {
  content: '  \2195';
  opacity: 0.5;
  font-size: 0.72rem;
}

.data-table th.sortable.active::after {
  opacity: 1;
}

.data-table th.sortable.sort-asc::after {
  content: '  \2191';
  opacity: 1;
}

.data-table th.sortable.sort-desc::after {
  content: '  \2193';
  opacity: 1;
}

.data-table tbody tr[data-row-nav="true"] {
  outline: none;
}

.data-table tbody tr[data-row-nav="true"]:focus-visible td,
.data-table tbody tr.table-row-keyboard-focus td {
  background: color-mix(in oklab, var(--accent) 12%, var(--panel-bg) 88%);
  box-shadow:
    inset 0 1px 0 color-mix(in oklab, var(--accent) 62%, transparent),
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 62%, transparent);
}

.data-table tbody tr[data-row-nav="true"]:focus-visible td:first-child,
.data-table tbody tr.table-row-keyboard-focus td:first-child {
  box-shadow:
    inset 3px 0 0 var(--accent),
    inset 0 1px 0 color-mix(in oklab, var(--accent) 62%, transparent),
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 62%, transparent);
}

.watch-feed-cell {
  width: 4.4rem;
}

.watch-symbol-cell {
  width: 10.5rem;
  min-width: 0;
}

.watch-action-cell {
  width: 2.1rem;
  text-align: center !important;
}

.quote-watch-feed,
.quote-watch-symbol {
  width: 100%;
  min-width: 0;
  height: 1.45rem;
  padding: 0 0.12rem;
  font: inherit;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  outline: none;
}

.quote-watch-feed {
  appearance: none;
  -webkit-appearance: none;
  background-image: none;
  cursor: pointer;
}

.quote-watch-feed:focus,
.quote-watch-symbol:focus {
  outline: none;
  background: color-mix(in oklab, var(--accent) 7%, transparent);
  border-bottom: 1px solid color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
}

.quote-watch-symbol::placeholder {
  color: var(--muted);
  opacity: 0.9;
}

.quotes-table {
  table-layout: fixed;
  min-width: 96rem;
  width: 100%;
}

.quotes-table th,
.quotes-table td {
  white-space: nowrap;
}

.quotes-col-feed {
  width: 4.4rem;
}

.quotes-col-symbol {
  width: 10.5rem;
}

.quotes-col-action {
  width: 2.1rem;
  text-align: center !important;
}

.quotes-col-num {
  width: 6.3rem;
  text-align: right !important;
}

.quotes-col-change {
  width: 5.2rem;
  text-align: right !important;
}

.quotes-col-ts {
  width: 8.6rem;
  text-align: right !important;
}

.quotes-col-lt {
  width: 3.6rem;
  text-align: right !important;
}

.watch-quote-cell {
  font-variant-numeric: tabular-nums lining-nums;
}

.watch-quote-num {
  text-align: right !important;
}

.data-table tbody tr.quote-watch-row-selected {
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}

.data-table tbody tr[data-watch-row-id]:hover {
  background: color-mix(in oklab, var(--accent) 8%, transparent);
}

.quote-cell-wrap {
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.2rem;
}

.quote-delta {
  width: 0.9rem;
  text-align: center;
  opacity: 0.85;
}

.quote-delta.up {
  color: var(--ok);
}

.quote-delta.down {
  color: var(--danger);
}

.quote-delta.flat {
  color: var(--muted);
}

.quote-num {
  display: inline-block;
  min-width: 6ch;
  text-align: right;
}

.quote-change-cell {
  color: var(--text);
}

.quote-change-num {
  min-width: 4.8ch;
}

.quote-watch-remove-btn {
  width: 1.35rem;
  height: 1.35rem;
  padding: 0;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--danger) 62%, var(--input-border) 38%);
  color: var(--danger);
  background: transparent;
  line-height: 1;
  font-size: 0.92rem;
}

.quote-watch-remove-btn:hover {
  background: color-mix(in oklab, var(--danger) 16%, transparent);
}

.quote-watch-row-state {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  font-size: 0.9rem;
  border-radius: 999px;
  border: 1px solid var(--input-border);
}

.quote-watch-row-state.ok {
  color: var(--ok);
  border-color: color-mix(in oklab, var(--ok) 68%, var(--input-border) 32%);
}

.quote-watch-row-state.missing {
  color: var(--warn);
  border-color: color-mix(in oklab, var(--warn) 68%, var(--input-border) 32%);
}

.watch-quote-cell[data-watch-col='ts'],
.watch-quote-cell[data-watch-col='lt'] {
  text-align: right !important;
}

.orders-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin-top: 0.55rem;
}

.orders-toolbar > * {
  min-width: 0;
}

.orders-query-input {
  flex: 1 1 220px;
  height: 36px;
  line-height: 1.15;
  padding-top: 0;
  padding-bottom: 0;
}

.orders-account-filter,
.orders-portfolio-filter,
.orders-status-filter,
.orders-side-filter {
  flex: 1 1 130px;
  height: 36px;
}

.orders-account-filter {
  flex-basis: 170px;
}

.orders-portfolio-filter {
  flex-basis: 180px;
}

.orders-cancel-filtered-btn {
  flex: 0 0 auto;
  min-width: 118px;
  height: 36px;
  white-space: nowrap;
}

.orders-clear-filters-btn {
  flex: 0 0 36px;
  width: 36px;
  white-space: nowrap;
  padding: 0;
  font-size: 0.88rem;
}

article.panel[data-panel-id='orders'] .panel-title-stack {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  flex-wrap: wrap;
}

article.panel[data-panel-id='orders'] .panel-meta {
  white-space: nowrap;
  line-height: 1.1;
}

.order-mode-tabs {
  display: flex;
  gap: 0.4rem;
}

.order-mode-btn.active {
  border-color: color-mix(in oklab, var(--accent) 82%, var(--input-border) 18%);
  color: var(--accent);
}

.order-manual-fields,
.order-book-fields {
  display: grid;
  gap: 0.55rem;
}

.order-compact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}

.order-book-quote {
  border: 1px solid var(--input-border);
  border-radius: 10px;
  padding: 0.5rem 0.6rem;
  font-family: var(--font-mono);
  font-size: 0.78rem;
}

.order-book-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
}

.order-entry-status:empty {
  display: none;
}

#refreshAccountBtn,
#refreshOrdersBtn,
#refreshUiStateBtn,
#refreshUiBindingsBtn,
#refreshScriptsBtn {
  display: none !important;
}

.panel-group-drag-hidden {
  display: none !important;
}

.panel-collapsed {
  min-height: auto !important;
  height: auto !important;
  padding-bottom: 0.45rem;
}

.panel-collapsed > *:not(.panel-row):not(.panel-title-row):not(.panel-controls) {
  display: none !important;
}

body.ui-bold {
  font-weight: 600;
}

body.ui-bold .data-table th,
body.ui-bold .data-table td,
body.ui-bold input,
body.ui-bold select,
body.ui-bold button,
body.ui-bold label,
body.ui-bold .status-note,
body.ui-bold .metric-value,
body.ui-bold .metric-label {
  font-weight: 600;
}

body.ui-mono,
body.ui-mono input,
body.ui-mono select,
body.ui-mono button,
body.ui-mono label,
body.ui-mono .data-table,
body.ui-mono .status-note,
body.ui-mono .metric-value,
body.ui-mono .metric-label {
  font-family: var(--font-mono);
}

.tag-ok {
  color: var(--ok);
}

.tag-warn {
  color: var(--warn);
}

.tag-bad {
  color: var(--danger);
}

@media (max-width: 1180px) {
  .topbar {
    grid-template-columns: minmax(0, 1fr);
    align-items: flex-start;
  }

  .topbar > :first-child,
  .topbar > .topbar-actions,
  .workspace-bar {
    width: 100%;
    flex-basis: 100%;
  }

  .topbar > .topbar-actions {
    justify-content: flex-start;
  }

  .topbar-actions {
    row-gap: 0.35rem;
  }

  .topbar-actions input,
  .topbar-actions select,
  .layout-name-stack {
    min-width: 0;
    max-width: 100%;
  }

  .layout-name-stack {
    width: min(320px, 100%);
  }

  .metrics-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .content-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }

  .content-grid > .panel {
    grid-column: span var(--panel-span-md, 3);
  }

  .script-toolbar {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .script-helper-row {
    grid-template-columns: 1fr 1fr;
  }

  .script-workbench {
    grid-template-columns: 1fr;
  }

  .event-log-toolbar input {
    min-width: 160px;
  }

  .orders-toolbar {
    grid-template-columns: 1fr 1fr;
  }

  .order-compact-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1500px) {
  .topbar {
    grid-template-columns: minmax(0, 1fr);
  }

  .topbar > :first-child,
  .topbar > .topbar-actions,
  .workspace-bar {
    width: 100%;
    flex-basis: 100%;
  }

  .topbar > .topbar-actions {
    justify-content: flex-start;
  }
}

@media (max-width: 820px) {
  .app-shell {
    padding: 0.45rem;
  }

  .topbar {
    gap: 0.65rem;
  }

  .workspace-bar {
    flex-wrap: wrap;
  }

  .workspace-tabs {
    flex: 1 1 100%;
  }

  .workspace-actions {
    margin-left: 0;
  }

  .metrics-grid {
    grid-template-columns: 1fr;
  }

  .content-grid {
    grid-template-columns: 1fr;
  }

  .content-grid > .panel {
    grid-column: 1 / -1 !important;
  }

  .script-toolbar {
    grid-template-columns: 1fr;
  }

  .script-helper-row {
    grid-template-columns: 1fr;
  }

  .orders-toolbar {
    grid-template-columns: 1fr;
  }

  .topbar-actions input {
    width: 100%;
  }
}

body.layout-mode-desktop .content-grid {
  display: block;
  position: relative;
  min-height: 560px;
}

body.layout-engine-dockview-active .content-grid {
  width: 100%;
  height: 100%;
  min-height: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
}

.panel-align-guides {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 70;
}

.panel-align-guide {
  position: absolute;
  background: color-mix(in oklab, var(--accent) 78%, white 22%);
  opacity: 0.85;
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 32%, transparent);
}

.panel-align-guide-x {
  top: 0;
  bottom: 0;
  width: 1px;
  transform: translateX(-0.5px);
}

.panel-align-guide-y {
  left: 0;
  right: 0;
  height: 1px;
  transform: translateY(-0.5px);
}

body.layout-mode-desktop .content-grid > .panel {
  -webkit-user-select: none;
  user-select: none;
}

body.layout-engine-dockview-active .content-grid > .panel {
  display: none !important;
}

body.layout-engine-dockview-active .content-grid > .dockview-layout-root:not(.hidden) {
  display: flex !important;
}

body.layout-engine-dockview-active .dockview-layout-root {
  height: 100%;
  min-height: 0;
  min-width: 0;
}

body.layout-engine-dockview-active .dockview-layout-root .dv-dockview,
body.layout-engine-dockview-active .dockview-layout-root .dv-root-wrapper,
body.layout-engine-dockview-active .dockview-layout-root .dv-grid-view,
body.layout-engine-dockview-active .dockview-layout-root .dv-branch-node {
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
}

body .content-grid > .panel,
body .content-grid > .panel * {
  -webkit-user-select: none;
  user-select: none;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'],
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] * {
  -webkit-user-select: auto;
  user-select: auto;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] :is(input, textarea, [contenteditable='true'], .monaco-editor, .monaco-editor *) {
  -webkit-user-select: text;
  user-select: text;
}

body .content-grid > .panel :is(input, textarea, [contenteditable='true'], .monaco-editor, .monaco-editor *) {
  -webkit-user-select: text;
  user-select: text;
}

body .content-grid > .panel .event-log,
body .content-grid > .panel .event-log * {
  -webkit-user-select: text;
  user-select: text;
}

body .content-grid > .panel[data-widget-type='strategy-control'] .json-block,
body .content-grid > .panel[data-widget-type='strategy-control'] .json-block *,
body .content-grid > .panel[data-widget-type='strategy-control'] .strategy-table-wrap,
body .content-grid > .panel[data-widget-type='strategy-control'] .strategy-table-wrap * {
  -webkit-user-select: text;
  user-select: text;
}

body.layout-mode-desktop .content-grid > .panel {
  position: absolute;
  grid-column: auto !important;
  margin: 0;
  contain: layout paint;
  overflow: hidden;
}

body.layout-mode-desktop.layout-interacting .content-grid > .panel.panel-focus-active,
body.layout-mode-desktop.layout-interacting .content-grid > .panel.panel-resizing {
  will-change: left, top, width, height;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  flex: 1 1 auto;
  position: relative !important;
  left: auto !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  margin: 0;
  padding: 0.8rem;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  overflow: hidden;
  will-change: auto;
  max-width: 100%;
}

body.layout-engine-dockview-active .dv-groupview > .dv-content-container {
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  min-width: 0;
  min-height: 0;
}

body.layout-engine-dockview-active .dv-groupview > .dv-content-container > * {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
}

body.layout-engine-dockview-active .dockview-panel-host > * {
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true']::before {
  display: none;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] > .panel-header,
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] > .panel-title-row,
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] > h3:first-child {
  display: none !important;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] > * {
  min-width: 0;
  max-width: 100%;
}

body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] .table-scroll,
body.layout-engine-dockview-active article.panel[data-panel-dockview-mounted='true'] .table-scroll-short {
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
  max-height: none;
  min-height: 0;
}

body.layout-engine-dockview-active article.panel[data-panel-id='order-entry'][data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
}

body.layout-engine-dockview-active article.panel[data-panel-id='order-entry'][data-panel-dockview-mounted='true'] .order-entry-form,
body.layout-engine-dockview-active article.panel[data-panel-id='order-entry'][data-panel-dockview-mounted='true'] .order-manual-fields,
body.layout-engine-dockview-active article.panel[data-panel-id='order-entry'][data-panel-dockview-mounted='true'] .order-book-fields {
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
  min-height: 0;
  align-content: start;
}

body.layout-engine-dockview-active article.panel[data-panel-id='orders'][data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
}

body.layout-engine-dockview-active article.panel[data-panel-id='quotes'][data-panel-dockview-mounted='true'],
body.layout-engine-dockview-active article.panel[data-panel-id='plot'][data-panel-dockview-mounted='true'],
body.layout-engine-dockview-active article.panel[data-panel-id='signals'][data-panel-dockview-mounted='true'],
body.layout-engine-dockview-active article.panel[data-panel-id='relative-value'][data-panel-dockview-mounted='true'],
body.layout-engine-dockview-active article.panel[data-panel-id='account'][data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
}

body.layout-engine-dockview-active article.panel[data-panel-id='quotes'][data-panel-dockview-mounted='true'] .table-scroll,
body.layout-engine-dockview-active article.panel[data-panel-id='plot'][data-panel-dockview-mounted='true'] .plot-chart-shell,
body.layout-engine-dockview-active article.panel[data-panel-id='signals'][data-panel-dockview-mounted='true'] .table-scroll,
body.layout-engine-dockview-active article.panel[data-panel-id='relative-value'][data-panel-dockview-mounted='true'] .table-scroll,
body.layout-engine-dockview-active article.panel[data-panel-id='account'][data-panel-dockview-mounted='true'] .table-scroll,
body.layout-engine-dockview-active article.panel[data-panel-id='account'][data-panel-dockview-mounted='true'] .account-table-wrap {
  align-self: stretch;
  justify-self: stretch;
}

body.layout-engine-dockview-active article.panel[data-widget-type='plot'][data-panel-dockview-mounted='true'] .plot-chart-shell,
body.layout-engine-dockview-active article.panel[data-widget-type='plot'][data-panel-dockview-mounted='true'] .plot-chart {
  min-height: 0;
  height: 100%;
}

body.layout-engine-dockview-active article.panel[data-widget-type='plot'][data-panel-dockview-mounted='true'] .plot-toolbar {
  display: grid !important;
  flex: 0 0 auto;
  align-self: stretch;
}

body.layout-engine-dockview-active article.panel[data-widget-type='plot'][data-panel-dockview-mounted='true'] .plot-status {
  flex: 0 0 auto;
}

body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-summary-grid {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-detail-grid {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "identity"
    "runtime"
    "config"
    "log";
  overflow: auto;
  padding-right: 0;
}

body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-config-card textarea,
body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-card .json-block,
body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-table-wrap,
body.layout-engine-dockview-active article.panel[data-widget-type='strategy-control'][data-panel-dockview-mounted='true'] .strategy-quick-settings-grid {
  max-width: 100%;
}

body.layout-engine-dockview-active article.panel[data-widget-type='event-stream'][data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
}

body.layout-engine-dockview-active article.panel[data-widget-type='event-stream'][data-panel-dockview-mounted='true'] .event-log {
  flex: 1 1 auto;
  height: 100%;
  max-height: none;
  min-height: 0;
}

body.layout-mode-desktop .table-scroll,
body.layout-mode-desktop .table-scroll-short {
  height: auto;
  max-height: none;
  min-height: 0;
}

body.layout-mode-desktop article.panel[data-panel-id='orders'] {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
}

body.layout-mode-desktop article.panel[data-panel-id='orders'] .table-scroll,
body.layout-mode-desktop article.panel[data-panel-id='orders'] .table-scroll-short {
  height: 100%;
}

body.layout-mode-desktop article.panel[data-panel-id='quotes'],
body.layout-mode-desktop article.panel[data-panel-id='signals'],
body.layout-mode-desktop article.panel[data-panel-id='relative-value'],
body.layout-mode-desktop article.panel[data-panel-id='account'] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

body.layout-mode-desktop article.panel[data-panel-id='quotes'] .table-scroll,
body.layout-mode-desktop article.panel[data-panel-id='signals'] .table-scroll,
body.layout-mode-desktop article.panel[data-panel-id='relative-value'] .table-scroll,
body.layout-mode-desktop article.panel[data-panel-id='account'] .table-scroll {
  height: 100%;
}

body.layout-mode-desktop article.panel[data-widget-type='event-stream'] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

body.layout-mode-desktop article.panel[data-widget-type='event-stream'] .event-log {
  height: 100%;
  max-height: none;
  min-height: 0;
}

body.layout-mode-desktop.layout-unlocked .content-grid > .panel,
body.layout-mode-desktop.drag-modifier .content-grid > .panel {
  cursor: grab;
}

body.layout-mode-desktop.layout-unlocked .content-grid > .panel:active,
body.layout-mode-desktop.drag-modifier .content-grid > .panel:active {
  cursor: grabbing;
}

body.panel-focus-dragging,
body.panel-focus-dragging * {
  -webkit-user-select: none !important;
  user-select: none !important;
}

body[data-theme='contrast'] .bindings-editor,
body[data-theme='contrast'] .script-editor,
body[data-theme='contrast'] .script-tree,
body[data-theme='contrast'] textarea.script-editor {
  background: #060606;
  color: #ffd36b;
}

body.layout-mode-tablet .content-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

body.layout-mode-tablet .content-grid > .panel {
  grid-column: span var(--panel-span-md, 3);
}

body.layout-mode-mobile .content-grid {
  grid-template-columns: 1fr;
}

body.layout-mode-mobile .content-grid > .panel {
  grid-column: 1 / -1 !important;
}

.phone-monitor-view {
  display: none;
}

body[data-ui-device-class='phone'] .dashboard-view {
  grid-template-rows: auto minmax(0, 1fr) !important;
  overflow: auto;
  padding: 0.48rem max(0.7rem, env(safe-area-inset-right, 0px)) calc(0.9rem + env(safe-area-inset-bottom, 0px)) max(0.7rem, env(safe-area-inset-left, 0px));
}

body[data-ui-device-class='phone'] #backdrop {
  display: none;
}

body[data-ui-device-class='phone'] .topbar {
  align-items: center;
  gap: 0.6rem;
  padding-bottom: 0.15rem;
}

body[data-ui-device-class='phone'] .topbar > div:first-child {
  min-width: 0;
}

body[data-ui-device-class='phone'] .topbar > div:first-child .panel-row {
  gap: 0.35rem;
}

body[data-ui-device-class='phone'] .topbar > div:first-child .chip {
  display: none;
}

body[data-ui-device-class='phone'] .topbar h2 {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 1.02rem;
}

body[data-ui-device-class='phone'] .topbar-actions {
  flex: 0 0 auto;
  gap: 0;
}

body[data-ui-device-class='phone'] .topbar-actions > :not(#logoutBtn) {
  display: none !important;
}

body[data-ui-device-class='phone'] #logoutBtn {
  min-height: 2rem;
  padding: 0.36rem 0.62rem;
}

body[data-ui-device-class='phone'] .workspace-bar,
body[data-ui-device-class='phone'] .metrics-grid,
body[data-ui-device-class='phone'] .content-grid {
  display: none !important;
}

body[data-ui-device-class='phone'] .phone-monitor-view {
  grid-row: 2;
  display: block;
  min-height: 0;
  overflow: visible;
  padding: 0.1rem 0 0.9rem;
}

.phone-monitor-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.7rem;
}

.phone-monitor-kicker {
  color: var(--muted);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0;
}

.phone-monitor-head h2 {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.15;
}

.phone-monitor-meta {
  margin-top: 0.12rem;
  max-width: 18rem;
  overflow: hidden;
  color: var(--muted);
  font-size: 0.72rem;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.phone-refresh-btn {
  width: 2.25rem;
  min-width: 2.25rem;
  height: 2.25rem;
}

.phone-refresh-btn svg {
  width: 1.1rem;
  height: 1.1rem;
}

.phone-status-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem;
  margin-bottom: 0.8rem;
}

.phone-status-tile,
.phone-list-row {
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 90%, var(--bg) 10%);
}

.phone-status-tile {
  min-height: 3.8rem;
  padding: 0.56rem 0.62rem;
  display: grid;
  gap: 0.12rem;
  align-content: center;
}

.phone-status-tile-wide {
  grid-column: 1 / -1;
}

.phone-status-tile span,
.phone-section-head span,
.phone-list-row span,
.phone-empty {
  color: var(--muted);
  font-size: 0.72rem;
}

.phone-status-tile strong {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 0.96rem;
  line-height: 1.1;
}

.phone-section {
  margin-top: 0.85rem;
}

.phone-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.7rem;
  margin-bottom: 0.42rem;
}

.phone-section-head h3 {
  margin: 0;
  font-size: 0.92rem;
}

.phone-list {
  display: grid;
  gap: 0.44rem;
}

.phone-list-row {
  min-height: 3.35rem;
  padding: 0.56rem 0.62rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, auto);
  gap: 0.6rem;
  align-items: center;
}

.phone-list-row > div {
  min-width: 0;
  display: grid;
  gap: 0.1rem;
}

.phone-list-row > div:last-child {
  text-align: right;
}

.phone-list-row strong {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 0.86rem;
  line-height: 1.15;
}

.phone-alert-row.warn {
  border-color: color-mix(in oklab, var(--warning) 55%, var(--panel-border) 45%);
}

.phone-alert-row.bad {
  border-color: color-mix(in oklab, var(--danger) 55%, var(--panel-border) 45%);
}

.phone-empty {
  padding: 0.65rem 0.2rem;
}

/* ── Bottom status chin ------------------------------------------------------
   Keep live system state out of the dashboard grid even when layout CSS moves.
   The DOM remains near the header for stable JS bindings, but the visual surface
   is fixed to the viewport bottom and represented by compact icon chips.
*/
.dashboard-view {
  grid-template-rows: auto auto minmax(0, 1fr) !important;
  padding-bottom: calc(1.75rem + env(safe-area-inset-bottom, 0px));
}

.dashboard-view > .workspace-bar {
  grid-row: 2 !important;
}

.dashboard-view > .content-grid {
  grid-row: 3 !important;
}

.dashboard-view > .metrics-grid,
.status-chin {
  position: fixed !important;
  left: max(0.55rem, env(safe-area-inset-left, 0px));
  right: max(0.55rem, env(safe-area-inset-right, 0px));
  bottom: max(0.3rem, env(safe-area-inset-bottom, 0px));
  z-index: 75;
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 0.28rem;
  width: auto;
  max-width: min(980px, calc(100vw - 1.1rem));
  min-height: 1.24rem;
  margin: 0 auto;
  padding: 0.12rem 0.32rem;
  border: 1px solid color-mix(in oklab, var(--panel-border) 82%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
  backdrop-filter: blur(8px);
  box-shadow: 0 -6px 22px rgba(0, 0, 0, 0.16);
  pointer-events: none;
}

.status-chin .metric {
  min-height: 1rem;
  height: 1rem;
  padding: 0.04rem 0.28rem;
  display: inline-flex;
  align-items: center;
  gap: 0.22rem;
  overflow: hidden;
  pointer-events: auto;
}

.status-chin .panel {
  border-radius: 999px;
  backdrop-filter: blur(4px);
  box-shadow: none;
  background: color-mix(in oklab, var(--panel-bg) 70%, transparent);
  border-color: color-mix(in oklab, var(--panel-border) 72%, transparent);
}

.status-chin .panel::before {
  display: none;
}

.status-chin .metric-label {
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  width: 0.86rem;
  height: 0.86rem;
  color: var(--muted);
  font-size: 0;
  letter-spacing: 0;
  text-transform: none;
}

.status-chin .metric-label::before {
  content: attr(data-icon);
  font-family: var(--font-mono);
  font-size: calc(0.52rem * var(--ui-text-scale));
  font-weight: 700;
  line-height: 1;
}

.status-chin .metric-value {
  font-family: var(--font-mono);
  font-size: calc(0.62rem * var(--ui-text-scale));
  line-height: 1;
}

.status-chin .metric-caption {
  font-family: var(--font-mono);
  font-size: calc(0.56rem * var(--ui-text-scale));
  line-height: 1;
}

.status-chin .stream-diagnostics {
  display: none !important;
}

.status-chin .metric-stream .metric-value,
.status-chin .metric-kill .metric-value {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 999px;
  background: currentColor;
  color: currentColor;
  flex: 0 0 auto;
  font-size: 0;
  box-shadow: 0 0 0 1px color-mix(in oklab, currentColor 35%, transparent);
}

/* ── FMP Research panels ────────────────────────────────────────────────────── */

/* Shared form primitives (used in both Signal Lab and Strategy Studio) */
.fmp-lbl {
  font-size: calc(var(--ui-label-font-size) * var(--ui-text-scale));
  color: var(--muted);
  white-space: nowrap;
  user-select: none;
  font-weight: 500;
}

.fmp-input {
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  padding: 0 var(--ui-field-pad-x);
  border: 1px solid var(--input-border);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--text);
  font-size: calc(var(--ui-label-font-size) * var(--ui-text-scale));
  font-family: var(--font-sans);
  min-width: 0;
}
.fmp-input:focus { outline: none; border-color: var(--accent); }
.fmp-input-date { width: 120px; }

/* Method chips — styled toggle labels */
.fmp-method-chip {
  display: inline-flex;
  align-items: center;
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  padding: 0 10px;
  border-radius: 10px;
  border: 1px solid var(--input-border);
  background: transparent;
  font-size: calc(var(--ui-chip-font-size) * var(--ui-text-scale));
  cursor: pointer;
  user-select: none;
  margin-right: 4px;
  margin-bottom: 2px;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
  white-space: nowrap;
}
.fmp-method-chip:hover { border-color: var(--accent); }
.fmp-method-chip:has(:checked),
.fmp-method-chip.fmp-method-active {
  background: color-mix(in oklab, var(--accent, #7bc4ff) 15%, transparent);
  border-color: var(--accent, #4f8ef7);
  color: var(--accent, #7bc4ff);
}
.fmp-method-chip input[type="checkbox"] { display: none; }

.fmp-lab-body { display: flex; flex-direction: column; flex: 1; overflow: hidden; padding: 0; }
.fmp-lab-controls { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 6px 10px 4px; border-bottom: 1px solid var(--border, #2a2f42); flex-shrink: 0; }
.fmp-liq-label { display: flex; align-items: center; gap: 4px; font-size: calc(var(--ui-chip-font-size) * var(--ui-text-scale)); color: var(--muted, #a6adc4); cursor: pointer; white-space: nowrap; }
.fmp-liq-label input[type=checkbox] { cursor: pointer; }
.fmp-method-row { display: flex; flex-wrap: wrap; padding: 4px 10px 2px; border-bottom: 1px solid var(--border, #2a2f42); flex-shrink: 0; }
.fmp-experiment-lab {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 5px 10px 6px;
  border-bottom: 1px solid var(--border, #2a2f42);
  background: color-mix(in oklab, var(--panel-bg) 84%, transparent);
}
.fmp-experiment-head {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  min-height: 24px;
}
.fmp-experiment-tune {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  min-height: 24px;
}
.fmp-experiment-title {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--text);
  font-weight: 700;
}
.fmp-experiment-caption {
  color: var(--muted);
  font-size: 0.72rem;
  white-space: nowrap;
}
.fmp-experiment-mode {
  width: 104px;
  height: 28px;
  font-size: 0.76rem;
}
.fmp-experiment-num {
  width: 58px;
  height: 28px;
  font-size: 0.76rem;
}
.fmp-exp-inline {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--muted);
  font-size: 0.72rem;
  white-space: nowrap;
}
.fmp-exp-advanced {
  margin-left: auto;
}
.fmp-exp-advanced:disabled {
  opacity: 0.42;
  cursor: not-allowed;
}
.fmp-experiment-summary {
  display: flex;
  align-items: stretch;
  flex-direction: column;
  gap: 4px;
  min-height: 24px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}
.fmp-experiment-empty {
  color: var(--muted);
  font-size: 0.74rem;
}
.fmp-workflow-strip {
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 22px;
  overflow-x: auto;
  scrollbar-width: thin;
  white-space: nowrap;
  color: var(--muted);
  font-size: 0.68rem;
}
.fmp-workflow-strip span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 1px 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--input-bg) 72%, transparent);
}
.fmp-workflow-strip b {
  display: inline-grid;
  place-items: center;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  color: var(--panel-bg);
  background: var(--accent, #4f8ef7);
  font-size: 0.58rem;
  line-height: 1;
}
.fmp-exp-card {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  padding: 2px 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--input-bg) 82%, transparent);
  font-size: 0.7rem;
}
.fmp-exp-card-row {
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 24px;
  overflow-x: auto;
  scrollbar-width: thin;
  white-space: nowrap;
}
.fmp-exp-backend {
  border-color: color-mix(in oklab, var(--accent-2, #c97cf5) 48%, var(--panel-border) 52%);
}
.fmp-exp-card span {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}
.fmp-exp-card b {
  font-family: var(--font-mono, monospace);
  font-size: 0.78rem;
}
.fmp-exp-weights {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.fmp-exp-weight {
  display: inline-flex;
  align-items: center;
  padding: 2px 5px;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--warning, #ffd84d) 42%, var(--panel-border) 58%);
  color: var(--warning, #ffd84d);
  background: color-mix(in oklab, var(--warning, #ffd84d) 10%, transparent);
  font-family: var(--font-mono, monospace);
  font-size: 0.68rem;
}
.fmp-exp-editor-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 4px 6px;
  min-width: 0;
}
.fmp-exp-weight-editor {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 54px 42px;
  align-items: center;
  gap: 5px;
  min-width: 0;
  padding: 2px 5px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 68%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--input-bg) 76%, transparent);
  font-size: 0.68rem;
}
.fmp-exp-weight-editor span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}
.fmp-exp-weight-editor b {
  font-family: var(--font-mono, monospace);
  color: var(--warning, #ffd84d);
  text-align: right;
}
.fmp-exp-weight-input {
  width: 54px;
  height: 24px;
  font-size: 0.72rem;
  padding: 1px 4px;
}
.fmp-lab-split { display: flex; flex: 1; overflow: hidden; min-height: 0; }
.fmp-sweep-table-wrap { width: 430px; flex-shrink: 0; overflow-y: auto; overflow-x: auto; min-width: 300px; }
.fmp-sweep-table-wrap .data-table { width: auto; min-width: 100%; }
.fmp-sweep-table-wrap .table-scroll { height: 100%; }
.fmp-library-cell {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--font-mono, monospace);
  color: var(--text);
}
.fmp-visible-cell { width: 22px; min-width: 22px; text-align: center; padding-left: 4px !important; padding-right: 4px !important; }
.fmp-visible-check { width: 13px; height: 13px; margin: 0; cursor: pointer; accent-color: var(--accent, #4f8ef7); vertical-align: middle; }
.fmp-row-hidden td { opacity: 0.38; }
.fmp-row-hidden .fmp-visible-cell { opacity: 1; }
.fmp-trade-cell { width: 44px; min-width: 44px; text-align: center; padding-left: 3px !important; padding-right: 3px !important; }
.fmp-trade-btn { padding: 1px 7px !important; font-size: 0.72rem !important; line-height: 1.4 !important; }
.fmp-trade-btn:disabled { opacity: 0.38; cursor: not-allowed; }
.fmp-row-action-cell { width: 26px; min-width: 26px; padding: 0 2px !important; text-align: center; }
.fmp-row-port-btn { padding: 1px 5px !important; font-size: 0.78em !important; opacity: 0.55; }
.fmp-row-port-btn:hover { opacity: 1; }
.fmp-split-handle {
  width: 5px;
  flex-shrink: 0;
  background: var(--border, #2a2f42);
  cursor: col-resize;
  transition: background 0.15s;
}
.fmp-split-handle:hover, .fmp-split-handle.dragging { background: var(--accent, #4f8ef7); }
.fmp-chart-wrap { flex: 1; display: flex; flex-direction: column; overflow: hidden; padding: 6px 8px; }
.fmp-stats-bar { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; padding: 4px 2px 6px; flex-shrink: 0; }
.fmp-stat { display: flex; flex-direction: column; gap: 1px; }
.fmp-stat-lbl { font-size: 0.6rem; text-transform: uppercase; letter-spacing: .1em; opacity: .5; }
.fmp-stat-val { font-family: var(--font-mono, monospace); font-size: 0.875rem; font-weight: 500; }
.fmp-stat-name { font-size: 0.75rem !important; }
.fmp-axis-guide {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: 0.68rem;
  white-space: nowrap;
}
.fmp-axis-guide span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.fmp-axis-swatch {
  display: inline-block;
  width: 16px;
  height: 0;
  border-top: 2px solid currentColor;
}
.fmp-axis-pnl { color: var(--accent, #4f8ef7); }
.fmp-axis-icir { color: var(--warning, #ffd84d); border-top-style: dashed; }
.fmp-axis-dd { color: var(--danger, #f76f6f); border-top-style: dotted; }
.fmp-chart-el { flex: 1; min-height: 0; width: 100%; }

article.panel[data-panel-id='fmp-portfolio'],
article.panel[data-panel-id='fmp-lab'],
article.panel[data-panel-id='fmp-studio'],
article.panel[data-panel-id='fmp-monitor'],
article.panel[data-panel-id='fmp-jobs'],
article.panel[data-panel-id='strategy-designer'] {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.fmp-portfolio-body { display: flex; flex: 1; overflow: hidden; min-height: 0; }
.fmp-portfolio-alloc { width: 270px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; min-width: 220px; }
.fmp-portfolio-alloc .table-scroll { flex: 1; overflow-y: auto; overflow-x: auto; min-height: 0; padding: 0 10px 8px; }
.fmp-portfolio-trades { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; padding: 6px 10px; min-height: 0; gap: 2px; }
.fmp-portfolio-trade-scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  overflow-x: auto;
  min-height: 220px;
  resize: vertical;
}
.fmp-portfolio-trade-scroll .data-table { width: auto; min-width: 100%; }
.fmp-portfolio-body.fmp-sidebar-collapsed .fmp-portfolio-alloc,
.fmp-portfolio-body.fmp-sidebar-collapsed .fmp-split-handle {
  display: none;
}
.fmp-section-head { font-size: 0.7rem; text-transform: uppercase; letter-spacing: .08em; opacity: .5; margin-bottom: 4px; font-weight: 600; padding: 0 10px; }

.fmp-stage-side {
  display: grid;
  gap: 6px;
  padding: 0 10px 8px;
  border-bottom: 1px solid var(--border, #2a2f42);
}

.fmp-stage-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
}

.fmp-stage-stat {
  min-width: 0;
  padding: 5px 7px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 70%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
}

.fmp-stage-stat span {
  display: block;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.fmp-stage-stat b {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.78rem;
}

.fmp-live-rollup {
  flex: 0 0 auto;
  min-height: 178px;
  max-height: 330px;
  display: grid;
  grid-template-rows: auto auto auto;
  gap: 6px;
  overflow: auto;
  resize: vertical;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 92%, transparent);
}

.fmp-live-rollup-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 8px 0;
}

.fmp-live-rollup-head .fmp-section-head {
  padding: 0;
  margin: 0 0 2px;
}

.fmp-live-rollup-actions {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}

#fmpLiveAccount {
  width: 180px;
  max-width: 26vw;
  height: 26px;
  font-size: 0.68rem;
}

#fmpLiveRefreshBtn {
  height: 26px;
  padding: 2px 8px;
}

.fmp-live-rollup-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
  gap: 5px;
  padding: 0 8px 8px;
  min-width: 0;
}

.fmp-working-position-flatten-moc {
  border-color: color-mix(in oklab, var(--danger) 58%, var(--ghost-border, var(--input-border)) 42%) !important;
  color: var(--danger) !important;
}

.fmp-live-card {
  min-width: 0;
  padding: 5px 7px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 70%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
}

.fmp-live-card span,
.fmp-live-card small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: 0.57rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.fmp-live-card b {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.74rem;
}

.fmp-live-card.pos b,
.fmp-stage-baskets-table .pos,
.fmp-working-orders-table .pos {
  color: var(--success, #3ecf8e);
}

.fmp-live-card.neg b,
.fmp-stage-baskets-table .neg,
.fmp-working-orders-table .neg {
  color: var(--danger, #f76f6f);
}

.fmp-icir-monitor {
  flex: 0 0 auto;
  min-height: 82px;
  max-height: 112px;
  display: grid;
  grid-template-rows: auto auto;
  gap: 5px;
  overflow: hidden;
  border-top: 1px solid color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  background: transparent;
}

.fmp-icir-monitor-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 8px 0;
}

.fmp-icir-monitor-head .fmp-section-head {
  padding: 0;
  margin: 0 0 2px;
}

.fmp-icir-monitor-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
  gap: 5px;
  padding: 0 8px 8px;
  min-width: 0;
  min-height: 48px;
}

.fmp-portfolio-queue {
  flex: 0 0 clamp(320px, 36vh, 440px);
  min-height: 310px;
  max-height: 70vh;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: auto;
  resize: vertical;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 92%, transparent);
}

.fmp-portfolio-queue-head {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 6px 10px;
  padding: 7px 8px 4px;
}

.fmp-portfolio-queue-head .fmp-section-head {
  padding: 0;
  margin: 0 0 2px;
}

.fmp-portfolio-tabs {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  order: -1;
  width: 100%;
  flex-shrink: 0;
}

.fmp-portfolio-tab {
  --tab-color: var(--accent, #4f8ef7);
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  min-width: 138px;
  height: 34px;
  padding: 0 12px;
  border: 1px solid color-mix(in oklab, var(--tab-color) 86%, var(--border, #2a2f42));
  border-radius: 6px;
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--tab-color) 36%, var(--panel-bg) 64%), color-mix(in oklab, var(--tab-color) 18%, var(--panel-bg) 82%));
  color: color-mix(in oklab, var(--tab-color) 24%, var(--text, #e2e8f0) 76%);
  font: 900 0.76rem var(--font-mono);
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
  opacity: 0.78;
}

.fmp-portfolio-tab.staged {
  --tab-color: var(--warning, #f5b301);
}

.fmp-portfolio-tab.working {
  --tab-color: var(--success, #3ecf8e);
}

.fmp-portfolio-tab b {
  min-width: 26px;
  padding: 2px 7px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--tab-color) 34%, var(--bg, #050505) 66%);
  color: var(--text, #e2e8f0);
  text-align: center;
  border: 1px solid color-mix(in oklab, var(--tab-color) 74%, transparent);
}

.fmp-portfolio-tab.active {
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--tab-color) 62%, var(--panel-bg) 38%), color-mix(in oklab, var(--tab-color) 30%, var(--panel-bg) 70%));
  box-shadow: inset 0 -3px 0 var(--tab-color), 0 0 0 1px color-mix(in oklab, var(--tab-color) 30%, transparent);
  color: var(--text, #e2e8f0);
  opacity: 1;
}

.fmp-portfolio-tab-panel {
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  display: flex;
}

.fmp-portfolio-tab-panel[hidden] {
  display: none !important;
}

.fmp-portfolio-queue .fmp-stage-baskets-scroll,
.fmp-portfolio-queue .fmp-working-baskets-scroll {
  flex: 1;
  min-height: 0 !important;
  padding: 0 8px 8px !important;
  border-bottom: 0;
}

.fmp-stage-baskets-table {
  min-width: 1960px;
  font-size: 0.68rem;
}

.fmp-stage-baskets-table th,
.fmp-stage-baskets-table td {
  white-space: nowrap;
}

.fmp-working-orders-table {
  min-width: 1120px;
  font-size: 0.68rem;
}

.fmp-working-orders-table th,
.fmp-working-orders-table td {
  white-space: nowrap;
}

.fmp-working-breakout-tabs {
  display: flex;
  gap: 4px;
  align-items: center;
  margin: 0 0 6px;
}

.fmp-working-breakout-tab {
  min-height: 26px;
  padding: 3px 9px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 80%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
  color: var(--muted);
}

.fmp-working-breakout-tab.active {
  color: var(--text);
  border-color: color-mix(in oklab, var(--accent, #4f8ef7) 55%, var(--border, #2a2f42) 45%);
  background: color-mix(in oklab, var(--accent, #4f8ef7) 14%, var(--panel-bg) 86%);
}

.fmp-working-breakout-tab b {
  margin-left: 4px;
  font-family: var(--font-mono);
  font-size: 0.66rem;
}

.fmp-stage-breakout-tabs {
  margin-bottom: 8px;
}

.fmp-stage-breakout-tab:disabled {
  cursor: default;
  opacity: 0.5;
}

.fmp-working-positions-table {
  min-width: 920px;
}

.fmp-stage-baskets-table tbody tr {
  cursor: pointer;
}

.fmp-stage-baskets-table td:last-child {
  display: flex;
  gap: 4px;
  align-items: center;
}

.fmp-portfolio-name-cell {
  max-width: 520px;
  min-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.fmp-stage-gross-input {
  width: 86px;
  height: 22px;
  padding: 1px 5px;
  border: 1px solid color-mix(in oklab, var(--accent, #4f8ef7) 55%, var(--border, #2a2f42));
  border-radius: 4px;
  background: color-mix(in oklab, var(--input-bg, #0f141e) 88%, transparent);
  color: var(--text, #e2e8f0);
  font: 700 0.68rem var(--font-mono);
  text-align: right;
}

.fmp-stage-gross-input:focus {
  outline: none;
  border-color: var(--accent, #4f8ef7);
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent, #4f8ef7) 22%, transparent);
}

.fmp-stage-row-active td,
.fmp-working-row-active td {
  background: color-mix(in oklab, var(--accent, #4f8ef7) 18%, transparent);
  color: var(--text);
}

.fmp-stage-row-pending td {
  color: var(--warning, #ffd84d);
}

.fmp-stage-row-error td {
  color: var(--danger, #f76f6f);
}

.fmp-stage-empty-row td {
  color: var(--muted);
  cursor: default;
}

.orders-empty-row td {
  padding: 18px 12px;
  color: var(--muted);
  text-align: center;
}

.orders-empty-row button {
  margin-left: 10px;
  padding: 2px 8px;
}

.orders-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}

.orders-row-actions button {
  min-height: 24px;
  padding: 2px 7px;
  white-space: nowrap;
}

.fmp-port-config.fmp-port-legacy-config {
  margin: 0 10px 8px;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 80%, transparent);
  border-radius: 6px;
  overflow: hidden;
}

.fmp-port-legacy-config summary {
  cursor: pointer;
  padding: 5px 8px;
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  background: color-mix(in oklab, var(--panel-bg) 90%, var(--bg) 10%);
}

.fmp-port-config.fmp-port-legacy-config[open] {
  padding-bottom: 7px;
}

.fmp-exec-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(0, 0, 0, 0.42);
}

.fmp-exec-modal.hidden {
  display: none !important;
}

.fmp-exec-card {
  width: min(720px, 96vw);
  border: 1px solid var(--panel-border, #2a2f42);
  border-radius: 8px;
  background: var(--panel-bg, #121722);
  box-shadow: 0 18px 54px rgba(0, 0, 0, 0.38);
  padding: 12px;
}

.fmp-exec-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.fmp-exec-modal-head h4 {
  margin: 0 0 3px;
  font-size: 0.86rem;
}

.fmp-exec-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.fmp-exec-grid label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.64rem;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.fmp-exec-modal-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
}

.fmp-exec-confirm-armed {
  border-color: var(--warning, #f5a623) !important;
  background: color-mix(in oklab, var(--warning, #f5a623) 25%, var(--panel-bg) 75%) !important;
}

/* ── Config sidebar ─────────────────────────────────────────── */
.fmp-port-config {
  flex-shrink: 0;
  padding: 8px 10px 6px;
  border-bottom: 1px solid var(--border, #2a2f42);
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.fmp-port-config-row {
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 24px;
}
.fmp-port-config-lbl {
  font-size: 0.68rem;
  color: var(--muted, #a6adc4);
  text-transform: uppercase;
  letter-spacing: .05em;
  font-weight: 600;
  width: 52px;
  flex-shrink: 0;
}
.fmp-port-config-val { flex: 1; min-width: 0; }
.fmp-port-config-date { flex: 1; min-width: 0; }
.fmp-port-today-label {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 0.72rem;
  color: var(--muted, #a6adc4);
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 0;
}
.fmp-port-config-actions { gap: 6px; }
.fmp-port-avail-chip { font-size: 0.68rem; }
/* ── Action bar ─────────────────────────────────────────────── */
.fmp-port-action-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; flex-shrink: 0; }
.fmp-inline-label { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); font-size: 0.72rem; }
.fmp-inline-label .fmp-input { min-width: 96px; }
.fmp-port-action-sep { width: 1px; height: 16px; background: var(--border, #2a2f42); flex-shrink: 0; }
.fmp-port-status-inline { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.72rem; }
.fmp-port-avail-panel {
  flex-shrink: 0;
  margin: 0 0 6px;
  padding: 6px 8px;
  border: 1px solid var(--border, #2a2f42);
  border-radius: 6px;
  background: color-mix(in srgb, var(--panel-bg, #121722) 92%, var(--text, #fff) 8%);
}
.fmp-date-legend { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-bottom: 6px; font-size: 0.68rem; color: var(--muted); }
.fmp-date-key { width: 9px; height: 9px; border-radius: 2px; display: inline-block; border: 1px solid transparent; }
.fmp-date-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); gap: 4px; }
.fmp-date-cell {
  height: 24px;
  padding: 0 6px;
  border-radius: 4px;
  border: 1px solid var(--border, #2a2f42);
  background: transparent;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: clip;
}
.fmp-date-cell.active { outline: 2px solid var(--accent, #4f8ef7); outline-offset: 1px; }
.fmp-date-cell.portfolio, .fmp-date-key.portfolio { background: rgba(62,207,142,.22); border-color: rgba(62,207,142,.7); color: var(--success, #3ecf8e); }
.fmp-date-cell.usable, .fmp-date-key.usable { background: rgba(230,176,70,.22); border-color: rgba(230,176,70,.75); color: #e6b046; }
.fmp-date-cell.feature, .fmp-date-key.feature { background: rgba(80,160,255,.17); border-color: rgba(80,160,255,.55); color: #5aadff; }
.fmp-date-cell.returns, .fmp-date-key.returns { background: rgba(176,128,255,.17); border-color: rgba(176,128,255,.55); color: #b080ff; }
.fmp-date-cell.missing, .fmp-date-key.missing { background: rgba(150,150,150,.1); border-color: rgba(150,150,150,.28); color: var(--muted); }
.fmp-port-run-detail {
  flex-shrink: 0;
  margin: 0 0 4px;
  padding: 5px 7px;
  border-left: 3px solid var(--border, #2a2f42);
  color: var(--muted);
  font-size: 0.72rem;
  line-height: 1.25;
}
.fmp-port-run-detail.warn { border-color: #e6b046; color: #8a6821; }
.fmp-port-run-detail.error { border-color: var(--danger, #f76f6f); color: var(--danger, #f76f6f); }
.fmp-port-run-detail.ok { border-color: var(--success, #3ecf8e); color: var(--muted); }
.fmp-port-scale-wrap { display: flex; align-items: center; gap: 4px; }
.fmp-port-scale-input {
  width: 64px;
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  padding: 0 6px;
  border: 1px solid var(--input-border); border-radius: 6px;
  background: var(--input-bg); color: var(--text);
  font-size: calc(var(--ui-label-font-size) * var(--ui-text-scale));
  font-family: var(--font-sans);
}
.fmp-port-scale-wrap.is-disabled {
  opacity: 0.58;
}
.fmp-port-status-row { font-size: 0.72rem; color: var(--muted); margin-bottom: 4px; flex-shrink: 0; }
.fmp-port-order-status { display: inline-block; font-size: 0.68rem; padding: 1px 5px; border-radius: 3px; }
.fmp-port-order-ok   { background: rgba(62,207,142,.15); color: #3ecf8e; }
.fmp-port-order-err  { background: rgba(247,111,111,.15); color: #f76f6f; }
.fmp-port-order-wait { background: rgba(80,160,255,.15); color: #5aadff; }
.fmp-working-orders-tools {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(150px, 190px) minmax(110px, 150px) auto;
  gap: 6px;
  align-items: center;
  margin-bottom: 5px;
}
.fmp-port-delta-pos { color: var(--success, #3ecf8e); }
.fmp-port-delta-neg { color: var(--danger, #f76f6f); }

body[data-theme='light'] .fmp-date-cell.portfolio,
body[data-theme='light'] .fmp-date-key.portfolio {
  background: rgba(0, 122, 69, 0.14);
  border-color: rgba(0, 122, 69, 0.55);
  color: var(--success);
}

body[data-theme='light'] .fmp-date-cell.usable,
body[data-theme='light'] .fmp-date-key.usable {
  background: rgba(138, 90, 0, 0.14);
  border-color: rgba(138, 90, 0, 0.5);
  color: var(--warning);
}

body[data-theme='light'] .fmp-date-cell.feature,
body[data-theme='light'] .fmp-date-key.feature {
  background: rgba(32, 94, 168, 0.12);
  border-color: rgba(32, 94, 168, 0.45);
  color: #205ea8;
}

body[data-theme='light'] .fmp-date-cell.returns,
body[data-theme='light'] .fmp-date-key.returns {
  background: rgba(91, 63, 159, 0.12);
  border-color: rgba(91, 63, 159, 0.45);
  color: #5b3f9f;
}

body[data-theme='light'] .fmp-port-order-ok {
  background: rgba(0, 122, 69, 0.12);
  color: var(--success);
}

body[data-theme='light'] .fmp-port-order-wait {
  background: rgba(32, 94, 168, 0.12);
  color: #205ea8;
}

body[data-theme='light'] .fmp-port-delta-pos,
body[data-theme='light'] .tag-ok,
body[data-theme='light'] .sig-status-ok {
  color: var(--success) !important;
}

body[data-theme='light'] .tag-warn,
body[data-theme='light'] .sig-status-warn,
body[data-theme='light'] .fmp-model-badge {
  color: var(--warning) !important;
}

/* ── FMP Jobs panel ─────────────────────────────────────────────────────── */

:root {
  --strategy-studio-control-column: minmax(430px, 520px);
  --edgex-side-rail-width: 32px;
}

article.panel[data-panel-id='fmp-jobs'] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 0;
  overflow: hidden;
}

.edgex-side-collapse-btn {
  align-self: flex-end;
  width: 30px;
  min-width: 30px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 72%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 80%, var(--bg) 20%);
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.edgex-side-collapse-btn:hover,
.edgex-side-collapse-btn:focus-visible {
  outline: none;
  border-color: color-mix(in oklab, var(--accent, #6395ff) 78%, var(--panel-border, var(--border)) 22%);
  color: var(--accent, #6395ff);
  background: color-mix(in oklab, var(--accent, #6395ff) 10%, var(--panel-bg) 90%);
}

.edgex-side-rail {
  display: none;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--accent, #6395ff) 20%, transparent), transparent 32%, transparent 68%, color-mix(in oklab, var(--accent, #6395ff) 20%, transparent)),
    color-mix(in oklab, var(--panel-bg) 90%, var(--bg) 10%);
  color: var(--muted);
  cursor: pointer;
}

.edgex-side-rail:hover,
.edgex-side-rail:focus-visible {
  outline: 1px solid color-mix(in oklab, var(--accent, #6395ff) 74%, transparent);
  color: var(--accent, #6395ff);
}

.edgex-side-rail span {
  display: block;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  white-space: nowrap;
  font-family: var(--font-mono, monospace);
  font-size: .58rem;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-jobs-body.is-left-side-collapsed,
.sig-studio-body.is-left-side-collapsed,
.istr-body.is-left-side-collapsed {
  grid-template-columns: var(--edgex-side-rail-width) minmax(0, 1fr);
}

.fmp-jobs-body.is-left-side-collapsed .fmp-jobs-form,
.sig-studio-body.is-left-side-collapsed .sig-studio-form,
.istr-body.is-left-side-collapsed .istr-form {
  gap: 0;
  overflow: hidden;
  padding: 0;
}

[data-side-collapse-root].is-left-side-collapsed [data-side-collapse-panel] > :not(.edgex-side-rail) {
  display: none !important;
}

[data-side-collapse-root].is-left-side-collapsed [data-side-collapse-panel] > .edgex-side-rail {
  display: flex;
}

.fmp-jobs-body {
  display: grid;
  grid-template-columns: var(--strategy-studio-control-column) minmax(0, 1fr);
  grid-template-rows: minmax(500px, 0.72fr) minmax(460px, 1fr);
  gap: 10px;
  height: 100%;
  min-height: 0;
  padding: 10px;
  overflow: hidden;
}

.fmp-jobs-form {
  grid-column: 1;
  grid-row: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
  overflow-y: auto;
  padding: 10px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 76%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 94%, transparent);
}

.fmp-jobs-mode-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.fmp-jobs-mode-tab-group {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--ui-control-height);
  gap: 4px;
  min-width: 0;
}

.fmp-jobs-mode-tab {
  height: var(--ui-control-height);
  min-height: var(--ui-control-height);
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
  text-transform: uppercase;
  cursor: pointer;
}

.fmp-jobs-mode-tab.is-active {
  border-color: color-mix(in oklab, var(--accent) 75%, var(--panel-border) 25%);
  background: color-mix(in oklab, var(--accent) 18%, var(--panel-bg) 82%);
  color: var(--accent);
}

.fmp-jobs-mode-new {
  width: var(--ui-control-height);
  height: var(--ui-control-height);
  min-height: var(--ui-control-height);
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.82rem;
  font-weight: 900;
  cursor: pointer;
}

.fmp-jobs-mode-new:hover {
  border-color: color-mix(in oklab, var(--accent) 72%, var(--panel-border) 28%);
  background: color-mix(in oklab, var(--accent) 14%, var(--panel-bg) 86%);
}

.fmp-jobs-form[data-fmp-jobs-mode='strategy'] .fmp-jobs-sweep-head,
.fmp-jobs-form[data-fmp-jobs-mode='strategy'] .fmp-jobs-sweep-cols {
  display: none;
}

.fmp-jobs-form[data-fmp-jobs-mode='strategy'] .fmp-jobs-sweep-row {
  grid-template-columns: minmax(88px, 1fr) minmax(0, 1fr);
}

.fmp-jobs-form[data-fmp-jobs-mode='strategy'] .fmp-jobs-sweep-row > input:nth-of-type(n+2),
.fmp-jobs-form[data-fmp-jobs-mode='strategy'] .fmp-jobs-sweep-active input[type="checkbox"] {
  display: none;
}

.fmp-jobs-form-row {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 6px;
  min-height: 0;
}

.fmp-jobs-form-row .fmp-lbl {
  margin-top: 4px;
  font-size: 0.7rem;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
}

.fmp-jobs-form-row .fmp-input,
.fmp-jobs-form-row button {
  width: 100% !important;
}

.fmp-jobs-form-row .fmp-method-chip {
  width: fit-content;
}

.fmp-jobs-section {
  display: grid;
  gap: 6px;
  padding: 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 76%, transparent);
}

.fmp-jobs-section:first-of-type {
  padding-top: 6px;
  border-top: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
}

.fmp-jobs-section-title {
  display: flex;
  min-width: 0;
  color: color-mix(in oklab, var(--accent) 64%, var(--muted) 36%);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}

.fmp-jobs-section-toggle {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  width: 100%;
  min-height: 24px;
  padding: 2px 4px 2px 2px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  letter-spacing: inherit;
  line-height: 1;
  text-align: left;
  text-transform: inherit;
}

.fmp-jobs-section-toggle:hover {
  background: color-mix(in oklab, var(--accent) 10%, transparent);
}

.fmp-jobs-section-icon {
  display: inline-grid;
  place-items: center;
  min-width: 28px;
  height: 20px;
  padding: 0 5px;
  border: 1px solid color-mix(in oklab, var(--accent) 45%, var(--panel-border) 55%);
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent) 12%, transparent);
  color: var(--accent);
  font-size: 0.58rem;
  font-weight: 900;
}

.fmp-jobs-section-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-section-marker {
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 50%;
  color: var(--muted);
  font-size: 0.72rem;
  line-height: 1;
}

.fmp-jobs-section-collapsed {
  gap: 0;
}

.fmp-jobs-section-collapsed > :not(.fmp-jobs-section-title) {
  display: none !important;
}

.fmp-jobs-date-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}

.fmp-jobs-date-row-auto {
  grid-template-columns: minmax(78px, .75fr) minmax(102px, 1fr) repeat(2, minmax(0, 1.25fr));
}

.fmp-jobs-date-row label {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.fmp-jobs-date-row .fmp-jobs-auto-asof-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  align-content: center;
  gap: 4px;
  min-height: var(--ui-control-height);
  padding: 0 5px;
  border: 1px solid var(--ghost-border, var(--input-border));
  border-radius: 8px;
  background: var(--secondary-bg, transparent);
  color: var(--ghost-text, var(--text));
  font-size: 0.58rem;
  font-weight: 700;
  line-height: .95;
  text-align: center;
}

.fmp-jobs-auto-asof-toggle span {
  white-space: nowrap;
}

.fmp-jobs-auto-asof-toggle input[type="checkbox"] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 18px;
  height: 18px;
  min-width: 18px;
  min-height: 18px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 72%, var(--panel-border) 28%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-jobs-auto-asof-toggle input[type="checkbox"]::before {
  content: "";
  width: 10px;
  height: 10px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-auto-asof-toggle input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-auto-asof-toggle input[type="checkbox"]:checked::before {
  transform: scale(1);
}

.fmp-jobs-auto-update-meta {
  flex-basis: 100%;
  color: var(--muted);
  font-size: 0.48rem;
  font-weight: 750;
  line-height: 1;
  text-transform: uppercase;
  text-align: center;
}

.fmp-jobs-auto-update-meta.ok {
  color: var(--success);
}

.fmp-jobs-auto-update-meta.warn {
  color: var(--warning);
}

.fmp-jobs-auto-update-meta.error {
  color: var(--danger);
}

.fmp-jobs-action-row {
  display: grid;
  grid-template-columns: minmax(118px, 0.86fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 6px;
  align-items: center;
}

.fmp-jobs-factor-bar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 6px;
  align-items: center;
}

.fmp-jobs-factor-bar button {
  width: auto !important;
  white-space: nowrap;
}

.fmp-jobs-factor-note,
.fmp-jobs-method-note {
  margin: 0;
  min-width: 0;
  color: var(--muted);
  font-size: 0.61rem;
  line-height: 1.25;
}

.fmp-jobs-factor-note {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: right;
}

.fmp-jobs-factor-head,
.fmp-jobs-factor-row {
  display: grid;
  grid-template-columns: 34px minmax(150px, 1fr) minmax(78px, 0.55fr) 64px 30px;
  gap: 5px;
  align-items: center;
}

.fmp-jobs-factor-head {
  padding: 0 1px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 800;
  text-transform: uppercase;
}

.fmp-jobs-factor-rows {
  display: grid;
  gap: 5px;
  min-height: 0;
  border-radius: 6px;
  outline: 1px solid transparent;
  outline-offset: 3px;
  transition: outline-color .12s ease, background .12s ease;
}

.fmp-jobs-factor-rows:empty {
  min-height: 58px;
  place-items: center;
  border: 1px dashed color-mix(in oklab, var(--border) 78%, transparent);
  background: color-mix(in oklab, var(--panel) 84%, transparent);
}

.fmp-jobs-factor-rows:empty::before {
  content: "Drop Signal Studio factors here";
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-jobs-factor-rows.is-factor-drop-target {
  outline-color: color-mix(in oklab, var(--accent) 76%, transparent);
  background: color-mix(in oklab, var(--accent) 10%, transparent);
}

.fmp-jobs-section.is-factor-drop-target {
  outline: 1px solid color-mix(in oklab, var(--accent) 58%, transparent);
  outline-offset: 2px;
}

.fmp-jobs-factor-row.is-factor-drop-added {
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--success, #4ade80) 78%, transparent), 0 0 14px color-mix(in oklab, var(--success, #4ade80) 22%, transparent);
}

.fmp-jobs-factor-row .fmp-input {
  width: 100% !important;
  min-width: 0;
  font-size: 0.7rem;
}

.fmp-jobs-factor-cell {
  position: relative;
  min-width: 0;
}

.fmp-jobs-native-factor-select {
  position: absolute !important;
  inset: auto auto 0 0;
  width: 1px !important;
  height: 1px !important;
  min-width: 1px !important;
  min-height: 1px !important;
  padding: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.fmp-jobs-factor-trigger {
  --picker-color: var(--accent);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 5px;
  width: 100%;
  min-width: 0;
  height: var(--ui-control-height);
  min-height: var(--ui-control-height);
  padding: 0 7px 0 9px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 62%, var(--input-border) 38%);
  border-left: 3px solid var(--picker-color);
  border-radius: 6px;
  background: linear-gradient(90deg, color-mix(in oklab, var(--picker-color) 14%, transparent), color-mix(in oklab, var(--input-bg) 92%, transparent));
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 800;
  line-height: 1.05;
  text-align: left;
  cursor: pointer;
}

.fmp-jobs-factor-trigger:hover,
.fmp-jobs-factor-trigger:focus-visible,
.fmp-jobs-factor-trigger.is-open {
  border-color: var(--picker-color);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--picker-color) 36%, transparent), 0 0 14px color-mix(in oklab, var(--picker-color) 18%, transparent);
  outline: none;
}

.fmp-jobs-factor-trigger-code,
.fmp-jobs-factor-trigger-meta {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-factor-trigger-code {
  color: color-mix(in oklab, var(--text) 82%, var(--picker-color) 18%);
}

.fmp-jobs-factor-trigger-meta {
  max-width: 44px;
  padding: 2px 4px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 46%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--picker-color) 14%, transparent);
  color: var(--picker-color);
  font-size: 0.55rem;
  text-align: center;
  text-transform: uppercase;
}

.fmp-jobs-factor-row [data-fmp-jobs-factor-weight] {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.fmp-jobs-factor-row [data-fmp-jobs-factor-remove] {
  width: 28px !important;
  min-width: 28px;
  padding-inline: 0 !important;
}

.fmp-jobs-factor-row input[type="checkbox"],
.istr-factor-row input[type="checkbox"] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 18px;
  height: 18px;
  min-width: 18px;
  min-height: 18px;
  margin: 0 auto;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-jobs-factor-row input[type="checkbox"]::before,
.istr-factor-row input[type="checkbox"]::before {
  content: "";
  width: 10px;
  height: 10px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-factor-row input[type="checkbox"]:checked,
.istr-factor-row input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-factor-row input[type="checkbox"]:checked::before,
.istr-factor-row input[type="checkbox"]:checked::before {
  transform: scale(1);
}

.fmp-factor-picker-menu {
  position: fixed;
  z-index: 20000;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 0;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--accent) 50%, var(--panel-border) 50%);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 94%, var(--bg) 6%);
  box-shadow: 0 18px 44px color-mix(in oklab, var(--panel-shadow, #000) 72%, black 28%);
  color: var(--text);
  font-family: var(--font-mono);
}

.fmp-factor-picker-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto 28px;
  gap: 7px;
  padding: 8px;
  border-bottom: 1px solid var(--panel-border);
  background: color-mix(in oklab, var(--bg) 58%, transparent);
}

.fmp-factor-picker-search {
  width: 100%;
  min-width: 0;
  height: 30px;
  padding: 0 9px;
  border: 1px solid var(--input-border);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--input-text);
  font: 800 0.72rem/1 var(--font-mono);
}

.fmp-factor-picker-search:focus {
  border-color: var(--accent);
  outline: none;
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 34%, transparent);
}

.fmp-factor-picker-back,
.fmp-factor-picker-close {
  appearance: none;
  display: grid;
  place-items: center;
  height: 30px;
  padding: 0;
  border: 1px solid var(--input-border);
  border-radius: 6px;
  background: var(--secondary-bg, transparent);
  color: var(--text);
  font: 900 0.72rem/1 var(--font-mono);
  cursor: pointer;
}

.fmp-factor-picker-back {
  min-width: 42px;
  padding: 0 8px;
  color: var(--accent);
  border-color: color-mix(in oklab, var(--accent) 52%, var(--input-border) 48%);
}

.fmp-factor-picker-close {
  width: 28px;
}

.fmp-factor-picker-back:hover,
.fmp-factor-picker-back:focus-visible {
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 14%, transparent);
  outline: none;
}

.fmp-factor-picker-close:hover,
.fmp-factor-picker-close:focus-visible {
  border-color: var(--danger);
  color: var(--danger);
  outline: none;
}

.fmp-factor-picker-back[hidden],
.fmp-factor-picker-section[hidden],
.fmp-factor-picker-option[hidden],
.fmp-factor-picker-empty[hidden] {
  display: none !important;
}

.fmp-factor-picker-sections {
  display: grid;
  gap: 8px;
  min-height: 0;
  padding: 8px;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-color: var(--accent) transparent;
}

.fmp-factor-picker-section {
  --picker-color: var(--accent);
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--picker-color) 46%, var(--panel-border) 54%);
  border-radius: 7px;
  background: color-mix(in oklab, var(--picker-color) 8%, var(--panel-bg) 92%);
}

.fmp-factor-picker-menu.is-focused .fmp-factor-picker-section {
  border-color: color-mix(in oklab, var(--picker-color) 66%, var(--panel-border) 34%);
}

.fmp-factor-picker-section-head {
  appearance: none;
  display: grid;
  grid-template-columns: 14px minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
  width: 100%;
  padding: 6px 9px;
  border: 0;
  border-bottom: 1px solid color-mix(in oklab, var(--picker-color) 34%, var(--panel-border) 66%);
  background: linear-gradient(90deg, color-mix(in oklab, var(--picker-color) 13%, transparent), transparent);
  color: var(--picker-color);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  letter-spacing: 0;
  text-align: left;
  text-transform: uppercase;
  cursor: pointer;
}

.fmp-factor-picker-section-head:hover,
.fmp-factor-picker-section-head:focus-visible {
  background: color-mix(in oklab, var(--picker-color) 15%, transparent);
  outline: none;
}

.fmp-factor-picker-caret {
  display: inline-grid;
  place-items: center;
  width: 14px;
  height: 14px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 42%, transparent);
  border-radius: 3px;
  color: var(--picker-color);
  font-size: 0.58rem;
  line-height: 1;
  transition: transform 0.1s ease;
}

.fmp-factor-picker-section.is-expanded .fmp-factor-picker-caret {
  transform: rotate(90deg);
}

.fmp-factor-picker-section-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-factor-picker-section-head b {
  min-width: 24px;
  padding: 1px 6px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 40%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--picker-color) 14%, transparent);
  color: var(--picker-color);
  text-align: center;
}

.fmp-factor-picker-grid {
  display: none;
  grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
  gap: 6px;
  padding: 8px;
}

.fmp-factor-picker-section.is-expanded .fmp-factor-picker-grid {
  display: grid;
}

.fmp-factor-picker-menu.is-focused .fmp-factor-picker-grid {
  grid-template-columns: repeat(auto-fill, minmax(178px, 1fr));
  gap: 8px;
  padding: 10px;
}

.fmp-factor-picker-option {
  display: grid;
  align-content: center;
  gap: 3px;
  min-width: 0;
  min-height: 68px;
  padding: 8px 9px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 34%, var(--panel-border) 66%);
  border-radius: 6px;
  background: linear-gradient(180deg, color-mix(in oklab, var(--picker-color) 11%, var(--input-bg) 89%), color-mix(in oklab, var(--bg) 18%, transparent));
  color: var(--text);
  font-family: var(--font-mono);
  text-align: center;
  cursor: pointer;
}

.fmp-factor-picker-menu.is-focused .fmp-factor-picker-option {
  min-height: 86px;
  padding: 10px;
}

.fmp-factor-picker-option:hover,
.fmp-factor-picker-option:focus-visible {
  border-color: var(--picker-color);
  background: color-mix(in oklab, var(--picker-color) 18%, var(--input-bg) 82%);
  outline: none;
}

.fmp-factor-picker-option.is-selected {
  border-color: var(--picker-color);
  background: color-mix(in oklab, var(--picker-color) 28%, var(--input-bg) 72%);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--picker-color) 34%, transparent);
}

.fmp-factor-picker-code-row,
.fmp-factor-picker-code,
.fmp-factor-picker-meta,
.fmp-factor-picker-inputs {
  min-width: 0;
  overflow: hidden;
}

.fmp-factor-picker-code-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}

.fmp-factor-picker-code {
  color: color-mix(in oklab, var(--text) 84%, var(--picker-color) 16%);
  font-size: 0.68rem;
  font-weight: 900;
  line-height: 1.16;
  min-width: 0;
  overflow-wrap: anywhere;
  text-overflow: clip;
  white-space: normal;
}

.fmp-factor-picker-badge {
  flex: 0 0 auto;
  max-width: 48px;
  padding: 1px 4px;
  border: 1px solid color-mix(in oklab, var(--picker-color) 52%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--picker-color) 16%, transparent);
  color: var(--picker-color);
  font-size: 0.48rem;
  font-weight: 900;
  line-height: 1.2;
  text-transform: uppercase;
}

.fmp-factor-picker-meta {
  color: var(--picker-color);
  display: -webkit-box;
  font-size: 0.56rem;
  font-weight: 800;
  line-height: 1.15;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.fmp-factor-picker-inputs {
  color: color-mix(in oklab, var(--text) 70%, var(--picker-color) 30%);
  display: -webkit-box;
  font-size: 0.5rem;
  font-weight: 700;
  line-height: 1.15;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.fmp-factor-picker-empty {
  margin: 0;
  padding: 10px;
  color: var(--muted);
  font-size: 0.68rem;
}

.fmp-jobs-persist-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  min-height: var(--ui-control-height);
  margin: 0;
  padding: 0 9px;
  border: 1px solid var(--ghost-border, var(--input-border));
  border-radius: 8px;
  background: var(--secondary-bg, transparent);
  color: var(--ghost-text, var(--text));
  font-size: calc(var(--ui-chip-font-size) * var(--ui-text-scale));
  font-weight: 700;
  line-height: 1;
}

.fmp-jobs-persist-toggle input[type="checkbox"] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 20px;
  height: 20px;
  min-width: 20px;
  min-height: 20px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-jobs-persist-toggle input[type="checkbox"]::before {
  content: "";
  width: 11px;
  height: 11px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-persist-toggle input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-persist-toggle input[type="checkbox"]:checked::before {
  transform: scale(1);
}

.fmp-jobs-method-grid {
  min-width: 0;
}

.fmp-jobs-method-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-family: var(--font-mono);
  font-size: 0.66rem;
}

.fmp-jobs-method-table td {
  padding: 2px 3px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.fmp-jobs-method-table label {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: max-content;
  white-space: nowrap;
  color: var(--text);
  line-height: 1.15;
}

.fmp-jobs-method-table input[type="checkbox"] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 15px;
  height: 15px;
  min-width: 15px;
  min-height: 15px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-jobs-method-table input[type="checkbox"]::before {
  content: "";
  width: 8px;
  height: 8px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-method-table input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-method-table input[type="checkbox"]:checked::before {
  transform: scale(1);
}

.fmp-jobs-sweep-panel {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-top: 0;
}

.fmp-jobs-sweep-section {
  gap: 5px;
}

.fmp-jobs-sweep-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 92px;
  align-items: center;
  gap: 6px;
  font-size: 0.7rem;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--muted);
}

.fmp-jobs-allocator-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 6px;
  align-items: end;
}

.fmp-jobs-optimizer-row {
  grid-template-columns: minmax(0, 1fr) minmax(52px, 64px);
}

.fmp-jobs-rebalance-policy-row {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.fmp-jobs-allocator-row label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-jobs-allocator-row label.fmp-jobs-inline-check {
  display: inline-flex;
  align-items: center;
  align-self: end;
  min-height: 30px;
  gap: 6px;
  color: var(--text);
}

.fmp-jobs-allocator-row label.fmp-jobs-checkline {
  display: inline-flex;
  align-items: center;
  align-self: end;
  min-height: 28px;
  gap: 5px;
  color: var(--text);
}

.fmp-jobs-allocator-row .fmp-input {
  width: 100% !important;
  min-width: 0;
}

.fmp-jobs-sweep-cols {
  display: grid;
  grid-template-columns: minmax(88px, 1fr) repeat(4, minmax(58px, 0.86fr));
  gap: 6px;
  align-items: center;
  padding: 0 1px;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-jobs-sweep-row {
  display: grid;
  grid-template-columns: minmax(88px, 1fr) repeat(4, minmax(58px, 0.86fr));
  gap: 6px;
  align-items: center;
}

.fmp-jobs-sweep-row .fmp-input {
  width: 100% !important;
  min-width: 0;
  padding-inline: 6px;
  font-size: 0.72rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.fmp-jobs-sweep-active,
.fmp-jobs-bool-row label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--text);
}

.fmp-jobs-sweep-active input[type="checkbox"],
.fmp-jobs-bool-row input[type="checkbox"],
.fmp-jobs-inline-check input[type="checkbox"],
.sig-inline-check input[type="checkbox"],
.istr-mode-grid input[type="checkbox"] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 16px;
  height: 16px;
  min-width: 16px;
  min-height: 16px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-jobs-sweep-active input[type="checkbox"]::before,
.fmp-jobs-bool-row input[type="checkbox"]::before,
.fmp-jobs-inline-check input[type="checkbox"]::before,
.sig-inline-check input[type="checkbox"]::before,
.istr-mode-grid input[type="checkbox"]::before {
  content: "";
  width: 9px;
  height: 9px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-sweep-active input[type="checkbox"]:checked,
.fmp-jobs-bool-row input[type="checkbox"]:checked,
.fmp-jobs-inline-check input[type="checkbox"]:checked,
.sig-inline-check input[type="checkbox"]:checked,
.istr-mode-grid input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-sweep-active input[type="checkbox"]:checked::before,
.fmp-jobs-bool-row input[type="checkbox"]:checked::before,
.fmp-jobs-inline-check input[type="checkbox"]:checked::before,
.sig-inline-check input[type="checkbox"]:checked::before,
.istr-mode-grid input[type="checkbox"]:checked::before {
  transform: scale(1);
}

.fmp-jobs-sweep-active input[type="checkbox"]:disabled,
.fmp-jobs-bool-row input[type="checkbox"]:disabled,
.fmp-jobs-inline-check input[type="checkbox"]:disabled,
.sig-inline-check input[type="checkbox"]:disabled,
.istr-mode-grid input[type="checkbox"]:disabled {
  opacity: .4;
  cursor: not-allowed;
}

.fmp-jobs-bool-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 6px;
  align-items: center;
}

.fmp-jobs-sweep-preview {
  font-size: 0.68rem;
  color: var(--muted);
  line-height: 1.35;
}

.fmp-jobs-setup-section {
  gap: 6px;
}

.fmp-jobs-setup-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 6px;
  align-items: end;
}

.fmp-jobs-setup-grid label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-jobs-setup-grid .fmp-input {
  width: 100% !important;
  min-width: 0;
}

.fmp-jobs-setup-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}

.fmp-jobs-selected-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 5px;
}

.fmp-jobs-selected-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 3px;
  min-width: 0;
}

.fmp-jobs-library-note {
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 700;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-setup-actions .fmp-btn-sm {
  width: 100% !important;
  height: var(--ui-control-height);
  min-height: var(--ui-control-height);
}

.fmp-jobs-selected-actions .fmp-btn-sm {
  width: 100% !important;
  height: var(--ui-control-height);
  min-height: var(--ui-control-height);
  justify-content: center;
}

.fmp-jobs-selected-head .fmp-jobs-library-note {
  width: 100%;
  text-align: left;
}

.fmp-jobs-action-load {
  border-color: color-mix(in oklab, var(--accent) 62%, var(--panel-border) 38%) !important;
  background: color-mix(in oklab, var(--accent) 9%, var(--panel-bg) 91%) !important;
  color: color-mix(in oklab, var(--accent) 90%, var(--text) 10%) !important;
}

.fmp-jobs-action-run {
  border-color: color-mix(in oklab, var(--success, #24ae6c) 68%, var(--panel-border) 32%) !important;
  background: color-mix(in oklab, var(--success, #24ae6c) 13%, var(--panel-bg) 87%) !important;
  color: color-mix(in oklab, var(--success, #24ae6c) 86%, var(--text) 14%) !important;
}

.fmp-jobs-action-refresh {
  border-color: color-mix(in oklab, var(--warning) 70%, var(--panel-border) 30%) !important;
  background: color-mix(in oklab, var(--warning) 15%, var(--panel-bg) 85%) !important;
  color: color-mix(in oklab, var(--warning) 86%, var(--text) 14%) !important;
}

.fmp-jobs-action-sweep {
  border-color: color-mix(in oklab, var(--warning) 68%, var(--panel-border) 32%) !important;
  background: color-mix(in oklab, var(--warning) 13%, var(--panel-bg) 87%) !important;
  color: color-mix(in oklab, var(--warning) 88%, var(--text) 12%) !important;
}

.fmp-jobs-action-save {
  border-color: color-mix(in oklab, #73a8ff 66%, var(--panel-border) 34%) !important;
  background: color-mix(in oklab, #73a8ff 12%, var(--panel-bg) 88%) !important;
  color: color-mix(in oklab, #73a8ff 84%, var(--text) 16%) !important;
}

.fmp-jobs-json-section {
  min-height: 0;
}

.fmp-jobs-json-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px;
  align-items: center;
}

.fmp-jobs-json {
  width: 100%;
  height: 240px;
  min-height: 190px;
  resize: vertical;
  border: 1px solid var(--input-border);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  line-height: 1.35;
  padding: 8px;
  white-space: pre;
  overflow: auto;
}

.fmp-jobs-table-wrap {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  min-height: 0;
  max-height: none;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 92%, transparent);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.fmp-jobs-pane {
  min-height: 0;
}

.fmp-jobs-pane-head {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 30px;
  padding: 3px 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
}

.fmp-jobs-pane-toggle {
  flex: 1 1 auto;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  min-height: 24px;
  color: color-mix(in oklab, var(--accent) 72%, var(--muted) 28%);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  letter-spacing: 0;
}

.fmp-jobs-pane-meta {
  justify-self: end;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: none;
}

.fmp-jobs-pane-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.fmp-jobs-pane-actions .fmp-btn-sm {
  height: 24px;
  padding: 1px 8px;
  font-size: 0.62rem;
}

.fmp-jobs-action-btn {
  border-radius: 5px;
  font-weight: 800;
  letter-spacing: 0;
  white-space: nowrap;
}

.fmp-jobs-action-resume {
  border-color: color-mix(in oklab, var(--ok) 70%, var(--input-border) 30%) !important;
  color: var(--ok) !important;
  background: color-mix(in oklab, var(--ok) 10%, transparent) !important;
}

.fmp-jobs-action-danger {
  border-color: color-mix(in oklab, var(--danger) 72%, var(--input-border) 28%) !important;
  color: var(--danger) !important;
  background: color-mix(in oklab, var(--danger) 10%, transparent) !important;
}

.fmp-jobs-action-warn {
  border-color: color-mix(in oklab, var(--warn) 72%, var(--input-border) 28%) !important;
  color: var(--warn) !important;
  background: color-mix(in oklab, var(--warn) 9%, transparent) !important;
}

.fmp-jobs-action-muted {
  border-color: color-mix(in oklab, var(--muted) 52%, var(--input-border) 48%) !important;
  color: color-mix(in oklab, var(--text) 78%, var(--muted) 22%) !important;
}

.fmp-jobs-action-btn:disabled {
  color: var(--muted) !important;
  border-color: color-mix(in oklab, var(--input-border) 72%, transparent) !important;
  background: transparent !important;
}

.fmp-jobs-chart-toggle {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex: 0 0 auto;
  min-height: 24px;
  padding: 2px 7px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 76%, transparent);
  border-radius: 999px;
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-bg) 78%, transparent);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 800;
  cursor: pointer;
}

.fmp-jobs-chart-toggle input {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 14px;
  height: 14px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}

.fmp-jobs-chart-toggle input::before {
  content: "";
  width: 7px;
  height: 7px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-jobs-chart-toggle input:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-jobs-chart-toggle input:checked::before {
  transform: scale(1);
}

.fmp-jobs-chart-toggle:has(input:checked) {
  color: var(--accent);
  border-color: color-mix(in oklab, var(--accent) 62%, var(--panel-border) 38%);
  background: color-mix(in oklab, var(--accent) 13%, transparent);
}

.fmp-jobs-plot-tabs {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex: 0 0 auto;
  padding: 2px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--panel-bg) 78%, transparent);
}

.fmp-jobs-plot-tab {
  min-height: 22px;
  padding: 2px 10px;
  border: 1px solid transparent;
  border-radius: 999px;
  color: var(--muted);
  background: transparent;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.fmp-jobs-plot-tab:hover {
  color: var(--accent);
  border-color: color-mix(in oklab, var(--accent) 42%, transparent);
}

.fmp-jobs-plot-tab.is-active {
  color: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
  border-color: color-mix(in oklab, var(--accent) 68%, var(--panel-border) 32%);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}

.fmp-jobs-chart-window {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex: 0 0 auto;
  padding: 2px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--panel-bg) 78%, transparent);
}

.fmp-jobs-chart-window-btn {
  min-width: 34px;
  min-height: 22px;
  padding: 2px 7px;
  border: 1px solid transparent;
  border-radius: 999px;
  color: var(--muted);
  background: transparent;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.fmp-jobs-chart-window-btn:hover {
  color: var(--accent);
  border-color: color-mix(in oklab, var(--accent) 42%, transparent);
}

.fmp-jobs-chart-window-btn.is-active {
  color: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
  border-color: color-mix(in oklab, var(--accent) 68%, var(--panel-border) 32%);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}

.fmp-jobs-chart-select {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.61rem;
  font-weight: 850;
  text-transform: uppercase;
}

.fmp-jobs-chart-select .fmp-input {
  width: auto;
  min-width: 128px;
  min-height: 25px;
  padding: 2px 7px;
  font-size: 0.64rem;
}

.fmp-jobs-chart-select[hidden],
.fmp-jobs-chart-toggle[hidden],
.fmp-jobs-chart-window[hidden],
.fmp-jobs-log-control[hidden] {
  display: none !important;
}

.fmp-jobs-pane-content {
  min-height: 0;
  overflow: hidden;
}

.fmp-jobs-pane-collapsed {
  min-height: 34px !important;
}

.fmp-jobs-pane-collapsed .fmp-jobs-pane-content {
  display: none !important;
}

.fmp-jobs-results-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.fmp-jobs-selected-summary {
  --fmp-jobs-summary-height: 168px;
  display: block;
  flex: 0 0 var(--fmp-jobs-summary-height);
  height: var(--fmp-jobs-summary-height);
  min-height: var(--fmp-jobs-summary-height);
  max-height: var(--fmp-jobs-summary-height);
  padding: 7px 9px 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 86%, transparent);
  overflow: hidden;
}

.fmp-jobs-selected-summary-empty {
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: 700;
}

.fmp-jobs-summary-board-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 5px;
}

.fmp-jobs-summary-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-size: 0.8rem;
  font-weight: 850;
}

.fmp-jobs-summary-id {
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
  min-width: 0;
  user-select: text;
}

.fmp-jobs-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
  align-items: start;
}

.fmp-jobs-summary-context {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 4px;
  margin-bottom: 6px;
}

.fmp-jobs-summary-section,
.fmp-jobs-summary-band {
  min-width: 0;
}

.fmp-jobs-summary-section-title {
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 900;
  letter-spacing: 0;
  margin: 0 0 3px;
  text-transform: uppercase;
}

.fmp-jobs-summary-rows {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid color-mix(in oklab, var(--panel-border) 58%, transparent);
  border-radius: 5px;
  overflow: hidden;
  background: color-mix(in oklab, var(--panel-bg) 80%, transparent);
}

.fmp-jobs-summary-row {
  display: grid;
  grid-template-columns: minmax(48px, 0.52fr) minmax(46px, 0.48fr);
  align-items: stretch;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 42%, transparent);
  min-height: 18px;
}

.fmp-jobs-summary-row:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.fmp-jobs-summary-row span {
  color: var(--accent-muted, var(--muted));
  background: color-mix(in oklab, var(--panel-border) 16%, transparent);
  font-weight: 850;
  padding: 2px 4px;
  text-transform: uppercase;
  font-size: 0.52rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-summary-row b {
  min-width: 0;
  padding: 2px 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  text-align: right;
}

.fmp-jobs-summary-context .fmp-jobs-summary-row {
  grid-template-columns: minmax(54px, 0.46fr) minmax(62px, 0.54fr);
}

.fmp-jobs-summary-row.pos b { color: var(--success); }
.fmp-jobs-summary-row.neg b { color: var(--danger); }
.fmp-jobs-summary-row.warn b { color: var(--warning); }

.fmp-jobs-summary-band {
  margin-top: 4px;
}

.fmp-jobs-summary-band-rows {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 4px;
}

.fmp-jobs-summary-band-rows .fmp-jobs-summary-row {
  border: 1px solid color-mix(in oklab, var(--panel-border) 48%, transparent);
  border-radius: 5px;
  overflow: hidden;
  background: color-mix(in oklab, var(--panel-bg) 80%, transparent);
}

.fmp-jobs-daily-table-wrap {
  max-height: 190px;
  overflow: auto;
  scrollbar-gutter: stable both-edges;
  scrollbar-color: color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%) color-mix(in oklab, var(--panel-bg) 88%, transparent);
  border: 1px solid color-mix(in oklab, var(--panel-border) 58%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 82%, transparent);
}

.fmp-jobs-daily-table-wrap::-webkit-scrollbar {
  width: 11px;
  height: 11px;
}

.fmp-jobs-daily-table-wrap::-webkit-scrollbar-track {
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}

.fmp-jobs-daily-table-wrap::-webkit-scrollbar-thumb {
  border: 2px solid color-mix(in oklab, var(--panel-bg) 88%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
}

.fmp-jobs-daily-panel {
  display: flex;
  flex: 0 0 clamp(250px, 28vh, 430px);
  flex-direction: column;
  height: clamp(250px, 28vh, 430px);
  min-height: 250px;
  max-height: clamp(250px, 28vh, 430px);
  padding: 7px 9px 8px;
  border-top: 1px solid color-mix(in oklab, var(--panel-border) 64%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  overflow: hidden;
}

.fmp-jobs-daily-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 5px;
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.59rem;
  font-weight: 900;
  text-transform: uppercase;
}

.fmp-jobs-daily-panel-head b {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 850;
  text-align: right;
}

.fmp-jobs-daily-panel .fmp-jobs-daily-table-wrap {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  max-height: none;
  overflow-y: scroll;
}

.fmp-jobs-daily-empty {
  min-height: 54px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 750;
  text-align: center;
}

.fmp-jobs-daily-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.66rem;
  line-height: 1.2;
}

.fmp-jobs-daily-table th,
.fmp-jobs-daily-table td {
  padding: 3px 6px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 36%, transparent);
  white-space: nowrap;
  text-align: right;
}

.fmp-jobs-daily-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  color: var(--accent);
  background: color-mix(in oklab, var(--panel-bg) 92%, var(--panel-border) 8%);
  font-size: 0.58rem;
  font-weight: 900;
  text-transform: uppercase;
}

.fmp-jobs-daily-table th:first-child,
.fmp-jobs-daily-table td:first-child {
  text-align: left;
}

.fmp-jobs-daily-table td {
  color: var(--text);
}

.fmp-jobs-daily-table td.pos {
  color: var(--success);
}

.fmp-jobs-daily-table td.neg {
  color: var(--danger);
}

.fmp-jobs-table-scroll {
  flex: 1;
  min-width: 0;
  min-height: clamp(240px, 24vh, 430px);
  max-width: 100%;
  overflow-x: auto;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

.fmp-jobs-table {
  width: max-content;
  min-width: max(100%, 1560px);
  font-size: 0.75rem;
  border-collapse: separate;
  border-spacing: 0;
}
.fmp-jobs-table th {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--table-sticky-head-bg, var(--bg));
  background-color: var(--table-sticky-head-bg, var(--bg));
  background-clip: padding-box;
  box-shadow:
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 42%, var(--panel-border) 58%),
    0 1px 0 color-mix(in oklab, var(--bg) 75%, transparent);
  font-size: 0.68rem;
  color: color-mix(in oklab, var(--table-head, var(--muted)) 88%, var(--text) 12%);
  opacity: 1;
  text-transform: uppercase;
  user-select: none;
}
.fmp-jobs-table th[data-sort] { cursor: pointer; }
.fmp-jobs-table th.fmp-jobs-sort-asc::after { content: ' ↑'; color: var(--accent); }
.fmp-jobs-table th.fmp-jobs-sort-desc::after { content: ' ↓'; color: var(--accent); }
.fmp-jobs-table th,
.fmp-jobs-table td {
  white-space: nowrap;
}
.fmp-jobs-placeholder-row td {
  height: 23px;
  color: var(--muted);
  opacity: .62;
  font-family: var(--font-mono);
}
.fmp-jobs-plot-head label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  cursor: pointer;
}

.fmp-jobs-result-row { cursor: pointer; }
.fmp-jobs-num {
  font-family: var(--font-mono);
  text-align: right;
}
.fmp-jobs-num.fmp-metric-good {
  color: var(--success);
  background: color-mix(in oklab, var(--success) 11%, transparent);
}
.fmp-jobs-num.fmp-metric-bad {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 11%, transparent);
}
.fmp-jobs-num.fmp-metric-risk-low {
  color: var(--accent);
  background: color-mix(in oklab, var(--accent) 10%, transparent);
}
.fmp-jobs-num.fmp-metric-risk-mid {
  color: color-mix(in oklab, var(--warning) 74%, var(--text) 26%);
  background: color-mix(in oklab, var(--warning) 8%, transparent);
}
.fmp-jobs-num.fmp-metric-risk-high {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 13%, transparent);
}
.fmp-jobs-num.fmp-metric-sharpe {
  font-weight: 900;
  box-shadow: inset 2px 0 0 color-mix(in oklab, var(--success) 72%, var(--accent) 28%);
}
.fmp-jobs-num.fmp-metric-score-top {
  color: #58a6ff;
  background: color-mix(in oklab, #58a6ff 20%, transparent);
  font-weight: 950;
  box-shadow: inset 2px 0 0 #58a6ff;
}
.fmp-jobs-num.fmp-metric-score-good {
  color: color-mix(in oklab, #58a6ff 70%, var(--success) 30%);
  background: color-mix(in oklab, #58a6ff 12%, transparent);
  font-weight: 900;
}
.fmp-jobs-num.fmp-metric-score-mid {
  color: color-mix(in oklab, var(--warning) 82%, var(--text) 18%);
  background: color-mix(in oklab, var(--warning) 11%, transparent);
  font-weight: 850;
}
.fmp-jobs-num.fmp-metric-score-bad {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 14%, transparent);
  font-weight: 900;
}
.fmp-jobs-num.fmp-metric-score-excluded,
.fmp-jobs-num.fmp-metric-score-empty {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-border) 12%, transparent);
  font-weight: 800;
}
.fmp-jobs-asof-cell {
  color: var(--text);
  font-family: var(--font-mono);
  font-weight: 800;
}
.fmp-jobs-series-cell {
  color: var(--text);
  font-family: var(--font-mono);
  font-weight: 850;
}
.fmp-jobs-series-cell.is-current {
  color: var(--success);
  background: color-mix(in oklab, var(--success) 8%, transparent);
}
.fmp-jobs-series-cell.is-stale {
  color: var(--warning);
  background: color-mix(in oklab, var(--warning) 9%, transparent);
}
.fmp-jobs-series-cell.is-short {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 12%, transparent);
}
.fmp-jobs-asof-cell.is-current {
  color: var(--success);
  background: color-mix(in oklab, var(--success) 8%, transparent);
}
.fmp-jobs-asof-cell.is-stale {
  color: var(--warning);
  background: color-mix(in oklab, var(--warning) 9%, transparent);
}
.fmp-jobs-table th[data-sort="score"] {
  color: #58a6ff;
  background: color-mix(in oklab, #58a6ff 14%, var(--table-sticky-head-bg, var(--bg)) 86%);
  background-color: color-mix(in oklab, #58a6ff 14%, var(--table-sticky-head-bg, var(--bg)) 86%);
  opacity: 1;
  font-weight: 950;
  box-shadow: inset 0 -2px 0 color-mix(in oklab, #58a6ff 80%, transparent);
}
.fmp-jobs-table th[data-sort="sharpe"] {
  color: color-mix(in oklab, var(--success) 84%, var(--text) 16%);
  background: color-mix(in oklab, var(--success) 12%, var(--table-sticky-head-bg, var(--bg)) 88%);
  background-color: color-mix(in oklab, var(--success) 12%, var(--table-sticky-head-bg, var(--bg)) 88%);
  opacity: 1;
  font-weight: 900;
  box-shadow: inset 0 -2px 0 color-mix(in oklab, var(--success) 70%, transparent);
}
.fmp-jobs-table th[data-sort="symbol_optimizer"] {
  color: color-mix(in oklab, var(--warning) 82%, var(--text) 18%);
  background: color-mix(in oklab, var(--warning) 9%, var(--table-sticky-head-bg, var(--bg)) 91%);
  background-color: color-mix(in oklab, var(--warning) 9%, var(--table-sticky-head-bg, var(--bg)) 91%);
  opacity: 1;
  font-weight: 900;
}
.fmp-jobs-opt-cell {
  font-family: var(--font-mono);
  color: var(--muted);
}
.fmp-jobs-opt-continuous {
  color: color-mix(in oklab, var(--text) 72%, var(--muted) 28%);
  background: color-mix(in oklab, var(--panel-border) 8%, transparent);
  font-weight: 800;
}
.fmp-jobs-opt-ew {
  color: color-mix(in oklab, var(--text) 82%, var(--muted) 18%);
  background: color-mix(in oklab, var(--panel-border) 10%, transparent);
  font-weight: 900;
}
.fmp-jobs-opt-rule {
  color: color-mix(in oklab, var(--accent) 72%, var(--text) 28%);
  background: color-mix(in oklab, var(--accent) 6%, transparent);
  font-weight: 850;
}
.fmp-jobs-opt-qubo {
  color: color-mix(in oklab, var(--warning) 88%, var(--text) 12%);
  background: color-mix(in oklab, var(--warning) 10%, transparent);
  font-weight: 900;
}
.fmp-jobs-opt-hrp {
  color: color-mix(in oklab, var(--accent) 84%, var(--text) 16%);
  background: color-mix(in oklab, var(--accent) 8%, transparent);
  font-weight: 800;
}
.fmp-jobs-opt-markowitz {
  color: color-mix(in oklab, var(--success) 76%, var(--text) 24%);
  background: color-mix(in oklab, var(--success) 7%, transparent);
  font-weight: 800;
}
.fmp-jobs-table th[data-sort="ann_volatility"],
.fmp-jobs-table th[data-sort="var_95"],
.fmp-jobs-table th[data-sort="max_drawdown"],
.fmp-jobs-table th[data-sort="ddays"],
.fmp-jobs-table th[data-sort="beta"] {
  color: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
  background: color-mix(in oklab, var(--accent) 8%, var(--table-sticky-head-bg, var(--bg)) 92%);
  background-color: color-mix(in oklab, var(--accent) 8%, var(--table-sticky-head-bg, var(--bg)) 92%);
  opacity: 1;
}
.fmp-jobs-row-active td {
  background: color-mix(in oklab, var(--accent) 18%, var(--panel-bg) 82%) !important;
  box-shadow:
    inset 0 1px 0 color-mix(in oklab, var(--accent) 78%, transparent),
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 78%, transparent);
}
.fmp-jobs-row-active td:first-child {
  box-shadow:
    inset 4px 0 0 var(--accent),
    inset 0 1px 0 color-mix(in oklab, var(--accent) 78%, transparent),
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 78%, transparent);
}
.fmp-jobs-row-active .fmp-jobs-id-cell,
.fmp-jobs-row-active .fmp-jobs-ran-cell {
  color: color-mix(in oklab, var(--accent) 86%, var(--text) 14%);
}
.fmp-jobs-plot-cell {
  text-align: center;
  width: 42px;
}
.fmp-jobs-plot-cell input[type="checkbox"],
.fmp-jobs-plot-toggle {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 18px;
  height: 18px;
  min-width: 18px;
  min-height: 18px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 72%, var(--panel-border) 28%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}
.fmp-jobs-plot-cell input[type="checkbox"]::before,
.fmp-jobs-plot-toggle::before {
  content: "";
  width: 10px;
  height: 10px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}
.fmp-jobs-plot-cell input[type="checkbox"]:checked,
.fmp-jobs-plot-toggle:checked {
  background: var(--accent);
  border-color: var(--accent);
}
.fmp-jobs-plot-cell input[type="checkbox"]:checked::before,
.fmp-jobs-plot-toggle:checked::before {
  transform: scale(1);
}
.fmp-jobs-plot-toggle:indeterminate {
  background: color-mix(in oklab, var(--accent) 55%, var(--panel-bg) 45%);
  border-color: var(--accent);
}
.fmp-jobs-plot-toggle:indeterminate::before {
  width: 10px;
  height: 2px;
  clip-path: none;
  transform: scale(1);
  background: var(--bg);
}
.fmp-jobs-plot-cell input[type="checkbox"]:disabled,
.fmp-jobs-plot-toggle:disabled {
  opacity: .35;
  cursor: not-allowed;
}
.fmp-jobs-id-cell {
  font-family: var(--font-mono);
  font-size: 0.69rem;
  color: var(--accent);
  user-select: text;
  white-space: nowrap;
}

.fmp-jobs-id-cell .fmp-jobs-copy-chip {
  max-width: 160px;
}

.fmp-jobs-strategy-id-cell .fmp-jobs-copy-chip,
.fmp-jobs-run-id-cell .fmp-jobs-copy-chip {
  max-width: 150px;
}

.fmp-jobs-id-cell .fmp-jobs-copy-chip + .fmp-jobs-copy-chip {
  margin-left: 5px;
}

.fmp-jobs-copy-chip {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  max-width: 100%;
  padding: 0 3px;
  border: 1px solid transparent;
  border-radius: 3px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 800;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}

.fmp-jobs-copy-chip:hover,
.fmp-jobs-copy-chip:focus-visible {
  border-color: color-mix(in oklab, var(--accent) 58%, transparent);
  background: color-mix(in oklab, var(--accent) 12%, transparent);
  outline: none;
}

.fmp-jobs-copy-chip:disabled {
  opacity: 1;
}

.fmp-jobs-copy-chip-muted {
  color: color-mix(in oklab, var(--muted) 72%, var(--accent) 28%);
  font-size: 0.62rem;
}

.fmp-jobs-copy-chip-strategy {
  color: color-mix(in oklab, var(--accent) 88%, var(--text) 12%);
}

.fmp-jobs-copy-chip-run {
  border-color: color-mix(in oklab, var(--success, #00c878) 42%, transparent);
  background: color-mix(in oklab, var(--success, #00c878) 13%, transparent);
  color: color-mix(in oklab, var(--success, #00c878) 86%, var(--text) 14%);
}

.fmp-jobs-copy-chip-local {
  border-color: color-mix(in oklab, var(--warning, #d08000) 55%, transparent);
  background: color-mix(in oklab, var(--warning, #d08000) 14%, transparent);
  color: color-mix(in oklab, var(--warning, #d08000) 88%, var(--text) 12%);
  cursor: help;
}

.fmp-jobs-ran-cell {
  font-family: var(--font-mono);
  color: color-mix(in oklab, var(--text) 82%, var(--muted) 18%);
}

.fmp-jobs-actions { display: flex; gap: 4px; align-items: center; }

.fmp-job-badge {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.fmp-job-badge-queued   { background: rgba(185,150,255,.16); color: #b996ff; }
.fmp-job-badge-pending  { background: rgba(255,200,60,.15); color: #ffc83c; }
.fmp-job-badge-running  { background: rgba(80,160,255,.18); color: #5aadff; }
.fmp-job-badge-paused   { background: rgba(255,176,32,.18); color: #ffb020; }
.fmp-job-badge-done     { background: rgba(62,207,142,.15); color: #3ecf8e; }
.fmp-job-badge-failed   { background: rgba(247,111,111,.15); color: #f76f6f; }
.fmp-job-badge-cancelled { background: rgba(160,160,160,.15); color: #999; }

@keyframes fmpJobSweep {
  0%   { transform: translateX(-150%); }
  100% { transform: translateX(400%); }
}
.fmp-job-status-cell { display: flex; flex-direction: column; gap: 3px; }
.fmp-job-status-line {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.fmp-job-error-chip {
  display: inline-block;
  max-width: 82px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 1px 4px;
  border: 1px solid rgba(247,111,111,.45);
  border-radius: 4px;
  color: #f76f6f;
  background: rgba(247,111,111,.08);
  font-size: 0.58rem;
  font-weight: 700;
  line-height: 1;
  text-transform: uppercase;
}
.fmp-job-active-note {
  font-size: 0.62rem;
  color: var(--accent);
  text-transform: uppercase;
  font-weight: 800;
}
.fmp-job-progress {
  position: relative;
  height: 6px;
  border: 1px solid rgba(255, 214, 10, .72);
  border-radius: 999px;
  overflow: hidden;
  background: rgba(42, 31, 2, .82);
  width: min(190px, 100%);
  box-shadow: 0 0 0 1px rgba(255, 214, 10, .08), inset 0 0 8px rgba(255, 214, 10, .12);
}
.fmp-job-progress::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 244, 138, .48), transparent);
  animation: sig-progress-sweep 1.35s linear infinite;
}
.fmp-job-progress-fill {
  position: absolute;
  z-index: 1;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, #f59e0b, #ffd60a 72%, #fff59d);
  box-shadow: 0 0 12px rgba(255, 214, 10, .72);
  transition: width .35s ease;
}
.fmp-job-progress-fill-queued {
  opacity: 0;
}
.fmp-job-progress-label {
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #ffd60a;
  font-family: var(--font-mono, monospace);
  font-size: .6rem;
  font-weight: 850;
  text-shadow: 0 0 8px rgba(255, 214, 10, .34);
}
body[data-theme='light'] .fmp-job-progress,
body[data-theme='paper'] .fmp-job-progress {
  border-color: rgba(37, 99, 235, .64);
  background: rgba(37, 99, 235, .08);
  box-shadow: inset 0 0 8px rgba(37, 99, 235, .08);
}
body[data-theme='light'] .fmp-job-progress::after,
body[data-theme='paper'] .fmp-job-progress::after {
  background: linear-gradient(90deg, transparent, rgba(96, 165, 250, .36), transparent);
}
body[data-theme='light'] .fmp-job-progress-fill,
body[data-theme='paper'] .fmp-job-progress-fill {
  background: linear-gradient(90deg, #1d4ed8, #2563eb 72%, #93c5fd);
  box-shadow: 0 0 9px rgba(37, 99, 235, .42);
}
body[data-theme='light'] .fmp-job-progress-label,
body[data-theme='paper'] .fmp-job-progress-label {
  color: #1d4ed8;
  text-shadow: none;
}
.fmp-job-model-badge {
  display: inline-block; padding: 1px 5px; border-radius: 3px;
  font-size: 0.6rem; font-weight: 600; letter-spacing: .03em;
  background: rgba(160,120,255,.18); color: #b090ff; margin-right: 5px;
  vertical-align: middle;
}

.fmp-btn { border: 1px solid var(--input-border); background: transparent; color: var(--text); border-radius: 6px; cursor: pointer; }
.fmp-btn:hover { border-color: var(--accent); color: var(--accent); }
.fmp-btn-warn   { border-color: var(--warn, #c07000) !important; color: var(--warn, #d08000) !important; }
.fmp-btn-danger { border-color: var(--danger, #cc2222) !important; color: var(--danger, #cc2222) !important; }
.fmp-btn-sm {
  height: calc(var(--ui-control-height) * var(--ui-text-scale));
  padding: 0 10px !important;
  font-size: calc(var(--ui-chip-font-size) * var(--ui-text-scale)) !important;
  line-height: 1;
}

/* Chart mode toggle */
.fmp-chart-mode-group { display: flex; gap: 5px; align-items: center; }
.fmp-mode-active { background: color-mix(in oklab, var(--accent) 15%, transparent) !important; border-color: var(--accent) !important; color: var(--accent) !important; }

/* FMP Studio panel */
article.panel[data-panel-id='fmp-studio'] {
  grid-column: 1 / -1;
  min-height: min(1120px, calc(100vh - 170px));
  --panel-span-md: 6;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  overflow: hidden;
}

.dockview-panel-host > article.panel[data-panel-id='fmp-studio'] {
  min-height: 0;
}

.fmp-studio-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.fmp-studio-shell {
  display: grid;
  grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
  gap: 10px;
  min-height: 0;
  flex: 1;
  padding: 10px;
  overflow: hidden;
}

.fmp-studio-sidebar,
.fmp-studio-run-panel,
.fmp-studio-detail-panel {
  border: 1px solid color-mix(in oklab, var(--panel-border) 78%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 94%, transparent);
}

.fmp-studio-sidebar {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  padding: 10px;
  gap: 8px;
}

.fmp-studio-mode-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  flex-shrink: 0;
}

.fmp-studio-tab {
  border: 1px solid var(--panel-border);
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  color: var(--text);
  border-radius: 6px;
  padding: 7px 8px;
  font-weight: 700;
  cursor: pointer;
}

.fmp-studio-tab-active {
  background: color-mix(in oklab, var(--accent) 16%, var(--panel-bg) 84%);
  border-color: var(--accent);
  color: var(--accent);
}

.fmp-studio-form-pane,
.fmp-studio-json-pane {
  min-height: 0;
  overflow-y: auto;
  padding-right: 2px;
}

.fmp-studio-form-pane label,
.fmp-studio-json-pane label {
  display: flex;
  flex-direction: column;
  gap: 3px;
  margin-bottom: 7px;
  font-size: 0.74rem;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0;
}

.fmp-studio-form-pane .fmp-input,
.fmp-studio-json-pane .fmp-input {
  width: 100%;
  min-width: 0;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
}

.fmp-studio-field-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.fmp-studio-check {
  flex-direction: row !important;
  align-items: center;
  gap: 6px !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
}

.fmp-studio-section-head,
.fmp-studio-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 0.73rem;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0;
}

.fmp-studio-candidates {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin: 7px 0 10px;
}

.fmp-studio-candidate-head {
  display: grid;
  grid-template-columns: 32px minmax(0, 1.45fr) minmax(68px, 0.85fr) minmax(68px, 0.8fr) 46px 52px minmax(118px, 1fr) 22px;
  gap: 4px;
  align-items: center;
  margin-top: 7px;
  padding: 0 6px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.fmp-studio-candidate {
  display: grid;
  grid-template-columns: 32px minmax(0, 1.45fr) minmax(68px, 0.85fr) minmax(68px, 0.8fr) 46px 52px minmax(118px, 1fr) 22px;
  gap: 4px;
  align-items: center;
  padding: 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}

.fmp-studio-candidate-disabled {
  opacity: 0.52;
}

.fmp-studio-candidate input,
.fmp-studio-candidate select {
  min-width: 0;
}

.fmp-studio-candidate .fmp-studio-use {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.fmp-studio-candidate [data-fmp-studio-enabled] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 16px;
  height: 16px;
  min-width: 16px;
  min-height: 16px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 70%, var(--panel-border) 30%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
  cursor: pointer;
}

.fmp-studio-candidate [data-fmp-studio-enabled]::before {
  content: "";
  width: 9px;
  height: 9px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.fmp-studio-candidate [data-fmp-studio-enabled]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.fmp-studio-candidate [data-fmp-studio-enabled]:checked::before {
  transform: scale(1);
}

.fmp-studio-candidate .fmp-studio-liq {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--muted);
}

.fmp-studio-context {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 4px 6px;
  border: 1px solid color-mix(in oklab, var(--accent) 42%, var(--panel-border) 58%);
  border-radius: 6px;
  color: var(--accent);
  background: color-mix(in oklab, var(--accent) 10%, transparent);
  font-family: var(--font-mono);
  font-size: 0.66rem;
}

.fmp-studio-remove {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1px solid color-mix(in oklab, var(--danger) 55%, var(--panel-border) 45%);
  color: var(--danger);
  background: transparent;
  cursor: pointer;
  line-height: 1;
}

.fmp-studio-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  padding-top: 2px;
}

.fmp-studio-json-meta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px;
  align-items: end;
  margin-bottom: 6px;
}

.fmp-studio-json {
  width: 100%;
  min-height: 520px;
  resize: vertical;
  font-family: var(--mono-font, 'IBM Plex Mono', monospace);
  font-size: 0.76rem;
  line-height: 1.42;
  color: var(--text);
  background: color-mix(in oklab, var(--panel-bg) 88%, black 12%);
  border: 1px solid var(--panel-border);
  border-radius: 6px;
  padding: 8px;
}

.fmp-studio-status {
  flex-shrink: 0;
  min-height: 1.2em;
}

.fmp-studio-main {
  display: grid;
  grid-template-rows: minmax(160px, 0.28fr) minmax(0, 1fr);
  gap: 10px;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.fmp-studio-run-panel,
.fmp-studio-detail-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  padding: 8px;
}

.fmp-studio-run-table {
  flex: 1;
  min-height: 0;
  margin-top: 7px;
}

.fmp-studio-run-table table {
  min-width: 1260px;
}

.fmp-studio-run-table tr.fmp-studio-selected-row {
  background: color-mix(in oklab, var(--accent) 12%, transparent);
}

.fmp-studio-run-table td,
.fmp-studio-run-table th {
  white-space: nowrap;
}

.fmp-studio-summary-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  min-height: 32px;
  margin-bottom: 8px;
}

.fmp-studio-card {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  min-width: 82px;
  padding: 6px 8px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 68%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}

.fmp-studio-card span {
  font-size: 0.64rem;
  text-transform: uppercase;
  letter-spacing: 0;
  color: var(--muted);
  font-weight: 800;
}

.fmp-studio-card b {
  font-family: var(--mono-font, 'IBM Plex Mono', monospace);
  font-size: 0.93rem;
  color: var(--text);
}

.fmp-studio-chart-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 0.32fr);
  gap: 8px;
  flex: 0 0 270px;
  min-height: 220px;
}

.fmp-studio-perf-chart,
.fmp-studio-dist-chart {
  min-height: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border) 60%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}

.fmp-studio-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  min-height: 0;
  flex: 1;
  margin-top: 8px;
}

.fmp-studio-detail-grid > div {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.fmp-studio-detail-table {
  flex: 1;
  min-height: 0;
  margin-top: 6px;
}

.fmp-studio-request-view {
  flex: 1;
  min-height: 0;
  overflow: auto;
  margin: 6px 0 0;
  font-size: 0.74rem;
}

.fmp-studio-status-pill {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 0.7rem;
  font-weight: 800;
  border: 1px solid var(--panel-border);
  background: color-mix(in oklab, var(--panel-bg) 80%, transparent);
}

.fmp-studio-status-pill.running { color: var(--warning); border-color: var(--warning); }
.fmp-studio-status-pill.done { color: var(--success); border-color: var(--success); }
.fmp-studio-status-pill.error { color: var(--danger); border-color: var(--danger); }

@media (max-width: 1100px) {
  .fmp-studio-shell {
    grid-template-columns: 1fr;
    overflow: auto;
  }
  .fmp-studio-sidebar {
    max-height: none;
  }
  .fmp-studio-main {
    min-height: 900px;
  }
  .fmp-studio-chart-grid,
  .fmp-studio-detail-grid {
    grid-template-columns: 1fr;
  }
}

.fmp-jobs-chart-wrap {
  grid-column: 2;
  grid-row: 2;
  min-width: 0;
  min-height: 180px;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 92%, transparent);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.fmp-jobs-chart-content {
  min-height: 0;
  overflow: hidden;
  display: grid;
  grid-template-rows: minmax(280px, 1fr) minmax(220px, 0.42fr);
  gap: 8px;
}

.fmp-jobs-chart-wrap .fmp-chart-wrap {
  width: 100%;
  height: auto;
  min-height: 0;
}

.fmp-jobs-corr-panel {
  grid-row: 1 / -1;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 7px;
  padding: 8px;
  overflow: hidden;
}

.fmp-jobs-corr-panel[hidden],
.fmp-jobs-log-panel[hidden],
.fmp-chart-wrap[hidden] {
  display: none !important;
}

.fmp-jobs-log-panel {
  grid-row: 1 / -1;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 7px;
  padding: 8px;
  overflow: hidden;
}

.fmp-jobs-log-meta {
  min-height: 24px;
  padding: 4px 7px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 58%, transparent);
  border-radius: 6px;
  color: var(--accent);
  background: color-mix(in oklab, var(--panel-bg) 84%, transparent);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 850;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-log-body {
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 9px 10px;
  overflow: auto;
  border: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
  border-radius: 6px;
  color: color-mix(in oklab, var(--text) 92%, var(--accent) 8%);
  background: color-mix(in oklab, var(--panel-bg) 88%, #000 12%);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  line-height: 1.42;
  white-space: pre-wrap;
  word-break: break-word;
  tab-size: 2;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.fmp-jobs-corr-meta {
  min-height: 24px;
  padding: 4px 7px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 58%, transparent);
  border-radius: 6px;
  color: var(--accent);
  background: color-mix(in oklab, var(--panel-bg) 84%, transparent);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 850;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fmp-jobs-corr-shell {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(240px, 24%) minmax(0, 1fr);
  gap: 8px;
  overflow: hidden;
}

.fmp-jobs-corr-key,
.fmp-jobs-corr-table-wrap {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  border: 1px solid color-mix(in oklab, var(--panel-border) 62%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 86%, transparent);
}

.fmp-jobs-corr-key-table,
.fmp-jobs-corr-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.67rem;
  line-height: 1.2;
}

.fmp-jobs-corr-key-table th,
.fmp-jobs-corr-key-table td,
.fmp-jobs-corr-table th,
.fmp-jobs-corr-table td {
  padding: 4px 6px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 38%, transparent);
  white-space: nowrap;
}

.fmp-jobs-corr-key-table th,
.fmp-jobs-corr-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  color: var(--accent);
  background: color-mix(in oklab, var(--panel-bg) 92%, var(--panel-border) 8%);
  font-size: 0.58rem;
  font-weight: 900;
  text-transform: uppercase;
}

.fmp-jobs-corr-key-table td {
  color: var(--text);
}

.fmp-jobs-corr-key-id {
  color: var(--accent);
  font-weight: 900;
}

.fmp-jobs-corr-key-name {
  max-width: 360px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.fmp-jobs-corr-table {
  width: max-content;
  min-width: 100%;
}

.fmp-jobs-corr-table th {
  text-align: center;
}

.fmp-jobs-corr-table th:first-child {
  left: 0;
  z-index: 3;
  text-align: left;
}

.fmp-jobs-corr-row-head {
  position: sticky;
  left: 0;
  z-index: 1;
  min-width: 54px;
  color: var(--accent);
  background: color-mix(in oklab, var(--panel-bg) 92%, var(--panel-border) 8%);
  font-weight: 900;
}

.fmp-jobs-corr-cell {
  min-width: 58px;
  text-align: right;
  color: var(--text);
  font-weight: 850;
}

.fmp-jobs-corr-cell.na {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-bg) 72%, transparent);
}

.fmp-jobs-corr-cell.diag {
  color: var(--success);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--success) 38%, transparent);
}

.fmp-jobs-corr-cell.is-corr-hover-row,
.fmp-jobs-corr-cell.is-corr-hover-col {
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--danger) 48%, transparent);
}

.fmp-jobs-corr-cell.is-corr-hover-cell {
  position: relative;
  z-index: 4;
  box-shadow:
    inset 0 0 0 2px var(--danger),
    0 0 0 1px color-mix(in oklab, var(--danger) 45%, transparent);
}

.fmp-jobs-corr-row-head.is-corr-hover-row,
.fmp-jobs-corr-col-head.is-corr-hover-col {
  color: var(--danger);
  outline: 2px solid var(--danger);
  outline-offset: -2px;
  background: color-mix(in oklab, var(--danger) 16%, var(--table-sticky-head-bg, var(--panel-bg)) 84%);
}

.fmp-jobs-corr-key-table tr.is-corr-hover-row td {
  background: color-mix(in oklab, var(--danger) 13%, transparent);
  box-shadow:
    inset 0 2px 0 var(--danger),
    inset 0 -2px 0 var(--danger);
}

.fmp-jobs-corr-key-table tr.is-corr-hover-row td:first-child {
  box-shadow:
    inset 2px 0 0 var(--danger),
    inset 0 2px 0 var(--danger),
    inset 0 -2px 0 var(--danger);
}

.fmp-jobs-corr-key-table tr.is-corr-hover-row td:last-child {
  box-shadow:
    inset -2px 0 0 var(--danger),
    inset 0 2px 0 var(--danger),
    inset 0 -2px 0 var(--danger);
}

@media (max-width: 980px) {
  .fmp-jobs-corr-shell {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 980px) {
  .fmp-jobs-body {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(260px, 0.5fr) minmax(320px, 1fr);
    overflow-y: auto;
  }

  .fmp-jobs-form,
  .fmp-jobs-table-wrap,
  .fmp-jobs-chart-wrap {
    grid-column: 1;
  }

  .fmp-jobs-form { grid-row: 1; }
  .fmp-jobs-table-wrap { grid-row: 2; }
  .fmp-jobs-chart-wrap { grid-row: 3; }
}

/* ── Strategy Designer panel ─────────────────────────────────────────────── */
.strategy-designer-root {
  flex: 1;
  min-height: 0;
  padding: 8px 10px 10px;
  overflow: hidden;
}

.strategy-designer-app {
  display: flex;
  flex-direction: column;
  gap: 8px;
  height: 100%;
  min-height: 0;
}

.strategy-designer-toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  overflow: hidden;
}

.strategy-designer-toolbar button {
  white-space: nowrap;
}

.strategy-designer-toolbar .fmp-input {
  height: 24px;
  min-height: 24px;
  font-size: 0.68rem;
}

.strategy-designer-workspace-select {
  width: min(300px, 22vw);
  min-width: 150px;
}

.strategy-designer-mode-select {
  width: 150px;
  min-width: 130px;
}

.strategy-designer-name-input {
  width: min(240px, 18vw);
  min-width: 120px;
}

.strategy-designer-state {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
}

.strategy-designer-layout {
  display: flex;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.strategy-designer-canvas-shell {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
  transition: border-color .12s ease, box-shadow .12s ease, background .12s ease;
}

.strategy-designer-canvas-shell.is-factor-drop-target {
  border-color: color-mix(in oklab, var(--accent) 82%, var(--panel-border) 18%);
  background: color-mix(in oklab, var(--accent) 8%, var(--panel-bg) 92%);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 34%, transparent);
}

.strategy-designer-canvas {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  background: color-mix(in oklab, var(--panel-bg) 82%, #000 18%);
}

.strategy-designer-canvas > * {
  width: 100%;
  height: 100%;
  min-height: 0;
}

.edgex-jdm-canvas {
  --grl-font-family: var(--font-sans);
  --grl-border-radius: 5px;
  --grl-color-bg-layout: color-mix(in oklab, var(--bg) 86%, #000 14%);
  --grl-color-bg-container: color-mix(in oklab, var(--panel-bg) 94%, var(--bg) 6%);
  --grl-color-bg-elevated: color-mix(in oklab, var(--input-bg) 82%, var(--panel-bg) 18%);
  --grl-color-bg-container-disabled: color-mix(in oklab, var(--input-bg) 52%, var(--panel-bg) 48%);
  --grl-color-bg-text-hover: color-mix(in oklab, var(--accent) 12%, transparent);
  --grl-color-border: color-mix(in oklab, var(--panel-border) 86%, var(--text) 14%);
  --grl-color-border-fade: color-mix(in oklab, var(--panel-border) 54%, transparent);
  --grl-color-border-hover: color-mix(in oklab, var(--accent) 58%, var(--panel-border) 42%);
  --grl-color-text: var(--text);
  --grl-color-text-base: var(--text);
  --grl-color-text-secondary: var(--muted);
  --grl-color-text-placeholder: color-mix(in oklab, var(--muted) 74%, transparent);
  --grl-color-text-disabled: color-mix(in oklab, var(--muted) 56%, transparent);
  --grl-color-primary: var(--accent);
  --grl-color-primary-hover: color-mix(in oklab, var(--accent) 86%, var(--accent-2) 14%);
  --grl-color-primary-active: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
  --grl-color-primary-border: color-mix(in oklab, var(--accent) 60%, var(--panel-border) 40%);
  --grl-color-primary-border-hover: color-mix(in oklab, var(--accent) 80%, var(--panel-border) 20%);
  --grl-color-primary-bg: color-mix(in oklab, var(--accent) 18%, transparent);
  --grl-color-primary-bg-hover: color-mix(in oklab, var(--accent) 28%, transparent);
  --grl-color-primary-bg-fade: color-mix(in oklab, var(--accent) 8%, transparent);
  --grl-color-success: var(--ok);
  --grl-color-success-bg: color-mix(in oklab, var(--ok) 16%, transparent);
  --grl-color-success-border: color-mix(in oklab, var(--ok) 52%, var(--panel-border) 48%);
  --grl-color-warning: var(--warn);
  --grl-color-warning-bg: color-mix(in oklab, var(--warn) 14%, transparent);
  --grl-color-warning-border: color-mix(in oklab, var(--warn) 52%, var(--panel-border) 48%);
  --grl-color-error: var(--danger);
  --grl-color-error-bg: color-mix(in oklab, var(--danger) 14%, transparent);
  --grl-color-error-border: color-mix(in oklab, var(--danger) 54%, var(--panel-border) 46%);
  --grl-color-info: var(--accent);
  --grl-color-info-bg: color-mix(in oklab, var(--accent) 14%, transparent);
  --grl-color-info-border: color-mix(in oklab, var(--accent) 52%, var(--panel-border) 48%);
  --grl-control-outline: color-mix(in oklab, var(--accent) 32%, transparent);
  color: var(--grl-color-text);
  background: var(--grl-color-bg-layout);
}

body[data-theme='light'] .edgex-jdm-canvas,
body[data-theme='paper'] .edgex-jdm-canvas {
  --grl-color-bg-layout: color-mix(in oklab, var(--bg-overlay) 88%, #ffffff 12%);
  --grl-color-bg-container: color-mix(in oklab, var(--panel-bg) 94%, #ffffff 6%);
  --grl-color-bg-elevated: var(--input-bg);
  --grl-color-bg-container-disabled: color-mix(in oklab, var(--input-bg) 54%, #e5e7eb 46%);
  --grl-color-border: color-mix(in oklab, var(--panel-border) 82%, var(--text) 18%);
  --grl-color-border-fade: color-mix(in oklab, var(--panel-border) 66%, transparent);
}

body[data-theme='contrast'] .edgex-jdm-canvas {
  --grl-color-bg-layout: #000000;
  --grl-color-bg-container: #050505;
  --grl-color-bg-elevated: #090909;
  --grl-color-bg-container-disabled: #171200;
  --grl-color-bg-text-hover: rgba(255, 180, 0, 0.18);
  --grl-color-border: rgba(255, 190, 32, 0.78);
  --grl-color-border-fade: rgba(255, 190, 32, 0.34);
  --grl-color-border-hover: #ffd85a;
  --grl-color-text: #ffe89a;
  --grl-color-text-base: #ffe89a;
  --grl-color-text-secondary: #ffd85a;
  --grl-color-text-placeholder: rgba(255, 232, 154, 0.68);
  --grl-color-text-disabled: rgba(255, 232, 154, 0.46);
  --grl-color-primary-bg: rgba(255, 180, 0, 0.20);
  --grl-color-primary-bg-hover: rgba(255, 180, 0, 0.32);
  --grl-color-primary-bg-fade: rgba(255, 180, 0, 0.10);
  --grl-control-outline: rgba(255, 216, 90, 0.40);
}

.edgex-jdm-canvas .grl-dg,
.edgex-jdm-canvas .grl-dg__graph,
.edgex-jdm-canvas .grl-dg__graph .tab-content,
.edgex-jdm-canvas .grl-dg__graph .content-wrapper,
.edgex-jdm-canvas .grl-dg__view {
  color: var(--grl-color-text) !important;
  background: var(--grl-color-bg-layout) !important;
}

.edgex-jdm-canvas .grl-dg__graph .react-flow,
.edgex-jdm-canvas .react-flow__pane,
.edgex-jdm-canvas .react-flow__renderer,
.edgex-jdm-canvas .react-flow__viewport {
  background-color: var(--grl-color-bg-layout) !important;
}

.edgex-jdm-canvas .grl-dg__graph .grl-graph-tabs,
.edgex-jdm-canvas .grl-dg__component-bar,
.edgex-jdm-canvas .grl-dg__aside,
.edgex-jdm-canvas .grl-dg__aside__side-bar,
.edgex-jdm-canvas .grl-dg__aside__menu,
.edgex-jdm-canvas .grl-dg__panel,
.edgex-jdm-canvas .grl-dg__panel__toolbar {
  color: var(--grl-color-text) !important;
  border-color: var(--grl-color-border) !important;
  background: var(--grl-color-bg-container) !important;
}

.edgex-jdm-canvas .grl-dg__graph .node,
.edgex-jdm-canvas .grl-node-content-side__panel,
.edgex-jdm-canvas .grl-function__debugger__panel,
.edgex-jdm-canvas .react-flow__controls-button {
  color: var(--grl-color-text) !important;
  border-color: var(--grl-color-border) !important;
  background: var(--grl-color-bg-elevated) !important;
}

.edgex-jdm-canvas .grl-dg__graph .node:hover {
  border-color: var(--grl-color-primary-hover) !important;
}

.edgex-jdm-canvas .grl-dg__graph .node.selected {
  border-color: var(--grl-color-primary-active) !important;
  box-shadow: 0 0 0 1px var(--grl-color-primary-active);
}

.edgex-jdm-canvas .grl-text-edit__text,
.edgex-jdm-canvas .grl-text-edit__input,
.edgex-jdm-canvas .single-line,
.edgex-jdm-canvas .ant-tabs-tab-btn,
.edgex-jdm-canvas .ant-typography {
  color: var(--grl-color-text) !important;
}

.edgex-jdm-canvas .grl-text-edit__input,
.edgex-jdm-canvas .grl-textarea-input,
.edgex-jdm-canvas .grl-ce .cm-editor {
  color: var(--grl-color-text) !important;
  border-color: var(--grl-color-border) !important;
  background: var(--grl-color-bg-container) !important;
}

.edgex-jdm-canvas .grl-dg .react-flow__edge-path {
  stroke: color-mix(in oklab, var(--grl-color-text-secondary) 68%, var(--grl-color-border) 32%) !important;
}

.edgex-jdm-canvas .grl-dg .react-flow__edge-path-selector {
  stroke: transparent !important;
}

.edgex-jdm-canvas .grl-dg .react-flow__connection-path,
.edgex-jdm-canvas .grl-dg .react-flow__edge.selected .react-flow__edge-path {
  stroke: var(--grl-color-primary) !important;
}

.edgex-jdm-canvas .react-flow__controls,
.edgex-jdm-canvas .react-flow__panel,
.edgex-jdm-canvas .react-flow__minimap {
  color: var(--grl-color-text) !important;
  border-color: var(--grl-color-border) !important;
  background: var(--grl-color-bg-container) !important;
}

.edgex-jdm-canvas .react-flow__controls-button svg {
  fill: currentColor !important;
}

.edgex-jdm-canvas .react-flow__attribution {
  color: var(--grl-color-text-secondary) !important;
  background: transparent !important;
}

.strategy-designer-node-tab {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 14px;
  overflow: auto;
  background: color-mix(in oklab, var(--panel-bg) 92%, #000 8%);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.72rem;
}

.strategy-designer-node-tab-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.strategy-designer-node-tab-header > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.strategy-designer-node-tab-header strong {
  overflow-wrap: anywhere;
  color: var(--warning, #ffd84d);
  font-size: 0.82rem;
  text-transform: uppercase;
}

.strategy-designer-node-tab-header span {
  color: var(--muted);
}

.strategy-designer-node-tab-id {
  flex: 0 1 auto;
  max-width: 30ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  text-align: right;
}

.strategy-designer-node-tab-body {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 8px 12px;
  align-content: start;
  min-height: 0;
}

.strategy-designer-node-field {
  display: grid;
  grid-template-columns: minmax(110px, 0.42fr) minmax(140px, 1fr);
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.strategy-designer-node-field span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  text-transform: uppercase;
}

.strategy-designer-node-field input[type='text'] {
  min-width: 0;
  height: 26px;
  padding: 3px 7px;
  border: 1px solid var(--input-border, var(--panel-border));
  border-radius: 5px;
  background: var(--input-bg, #050505);
  color: var(--text);
  font: inherit;
}

.strategy-designer-node-field input[type='checkbox'] {
  justify-self: start;
}

.strategy-designer-node-empty {
  color: var(--muted);
}

.strategy-designer-canvas-error {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 8px;
  width: 100%;
  height: 100%;
  min-height: 180px;
  padding: 18px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  text-align: center;
}

.strategy-designer-canvas-error strong {
  color: var(--danger);
  font-size: 0.8rem;
  text-transform: uppercase;
}

.strategy-designer-canvas-error span {
  max-width: min(720px, 100%);
  overflow-wrap: anywhere;
}

.strategy-designer-loading {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 8px;
  flex: 1;
  min-height: 0;
  padding: 16px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  text-align: center;
}

.strategy-designer-loading strong {
  color: var(--warning, #ffd84d);
  font-size: 0.8rem;
  text-transform: uppercase;
}

.strategy-designer-loading.is-error strong {
  color: var(--danger);
}

.strategy-designer-loading span {
  max-width: min(720px, 100%);
  overflow-wrap: anywhere;
}

.strategy-designer-load-error {
  display: grid;
  align-content: start;
  gap: 8px;
  height: 100%;
  min-height: 180px;
  padding: 12px;
  border: 1px solid color-mix(in oklab, var(--danger) 52%, var(--panel-border) 48%);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.72rem;
}

.strategy-designer-load-error strong {
  color: var(--danger);
  font-size: 0.76rem;
  text-transform: uppercase;
}

.strategy-designer-load-error span {
  color: var(--muted);
  overflow-wrap: anywhere;
}

@media (max-width: 760px) {
  .strategy-designer-toolbar {
    flex-wrap: wrap;
    min-height: 0;
  }
}

/* ── Signal Designer panel ───────────────────────────────────────────────── */
.signal-designer-root {
  flex: 1;
  min-height: 0;
  padding: 8px 10px 10px;
  overflow: hidden;
}

.signal-designer-app {
  display: flex;
  flex-direction: column;
  gap: 8px;
  height: 100%;
  min-height: 0;
}

.signal-designer-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 34px;
  overflow: hidden;
}

.signal-designer-toolbar button {
  white-space: nowrap;
}

.signal-designer-toolbar .fmp-input {
  height: 24px;
  min-height: 24px;
  font-size: 0.68rem;
}

.signal-designer-draft-fields {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.signal-designer-draft-fields label {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-draft-fields label span {
  flex: 0 0 auto;
}

.signal-designer-toolbar-actions {
  display: flex;
  align-items: center;
  gap: 5px;
  flex: 0 0 auto;
}

.signal-designer-app.signal-designer-theme-light {
  --panel-bg: #f7f9fc;
  --panel-border: #c8d3e3;
  --input-bg: #ffffff;
  --input-border: #b9c6d8;
  --text: #142033;
  --muted: #607086;
  --accent: #2563eb;
  --warning: #a16207;
  color: var(--text);
  background: #eef3f9;
}

.signal-designer-app.signal-designer-theme-light .signal-designer-canvas {
  background: #f5f7fb;
}

.signal-designer-app.signal-designer-theme-light .signal-designer-contract-json {
  background: #ffffff;
  color: #142033;
}

.signal-designer-id-input {
  width: 150px;
  min-width: 130px;
  font-family: var(--font-mono);
}

.signal-designer-name-input {
  width: min(280px, 20vw);
  min-width: 150px;
}

.signal-designer-state {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
}

.signal-designer-layout {
  display: grid;
  grid-template-areas:
    "inputs contract"
    "splitter contract"
    "canvas contract";
  grid-template-columns: minmax(0, 1fr) minmax(340px, 420px);
  grid-template-rows:
    minmax(150px, var(--signal-designer-input-height, 260px))
    12px
    minmax(300px, 1fr);
  gap: 8px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.signal-designer-layout.is-contract-collapsed {
  grid-template-columns: minmax(0, 1fr) var(--edgex-side-rail-width, 32px);
}

.signal-designer-inputs,
.signal-designer-contract,
.signal-designer-canvas-shell {
  min-height: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 7px;
  background: color-mix(in oklab, var(--panel-bg) 90%, transparent);
}

.signal-designer-inputs,
.signal-designer-contract {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 8px;
  overflow: hidden;
}

.signal-designer-inputs {
  grid-area: inputs;
}

.signal-designer-canvas-shell {
  grid-area: canvas;
}

.signal-designer-splitter {
  position: relative;
  grid-area: splitter;
  min-width: 0;
  min-height: 12px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, color-mix(in oklab, var(--accent, #6395ff) 24%, transparent), transparent),
    color-mix(in oklab, var(--panel-bg) 82%, var(--bg) 18%);
  cursor: row-resize;
}

.signal-designer-splitter::before {
  content: "";
  position: absolute;
  inset: 4px max(32px, 38%) auto;
  height: 2px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent, #6395ff) 70%, var(--muted) 30%);
  box-shadow:
    0 -3px 0 color-mix(in oklab, var(--accent, #6395ff) 34%, transparent),
    0 3px 0 color-mix(in oklab, var(--accent, #6395ff) 34%, transparent);
}

.signal-designer-splitter:hover,
.signal-designer-splitter:focus-visible,
.signal-designer-layout.is-split-resizing .signal-designer-splitter {
  outline: none;
  border-color: color-mix(in oklab, var(--accent, #6395ff) 74%, var(--panel-border) 26%);
  background:
    linear-gradient(90deg, transparent, color-mix(in oklab, var(--accent, #6395ff) 38%, transparent), transparent),
    color-mix(in oklab, var(--accent, #6395ff) 10%, var(--panel-bg) 90%);
}

body.signal-designer-split-resizing {
  cursor: row-resize;
  user-select: none;
}

.signal-designer-contract {
  grid-area: contract;
}

.signal-designer-contract-rail {
  flex: 1 1 auto;
}

.signal-designer-contract.is-collapsed {
  gap: 0;
  padding: 0;
}

.signal-designer-contract.is-collapsed > :not(.signal-designer-contract-rail) {
  display: none !important;
}

.signal-designer-contract.is-collapsed > .signal-designer-contract-rail {
  display: flex;
}

.signal-designer-contract-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.signal-designer-pane-head {
  color: var(--warning, #ffd84d);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-panel-head,
.signal-designer-workbench-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.signal-designer-panel-head {
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: center;
  padding: 4px 4px 0;
  border-bottom: 1px solid color-mix(in oklab, var(--accent) 26%, var(--panel-border) 74%);
}

.signal-designer-workbench-actions {
  flex: 0 0 auto;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-workbench-actions span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.signal-designer-search {
  width: 100%;
  height: 26px;
}

.signal-designer-input-registry {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  border: 1px solid color-mix(in oklab, var(--accent) 34%, var(--panel-border) 66%);
  border-top-width: 2px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--bg) 62%, var(--panel-bg) 38%);
  box-shadow:
    inset 0 1px 0 color-mix(in oklab, var(--accent) 16%, transparent),
    0 0 0 1px color-mix(in oklab, black 42%, transparent);
}

.signal-designer-current-graph {
  min-width: 0;
}

.signal-designer-current-graph small {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
}

.signal-designer-current-graph {
  display: grid;
  gap: 3px;
  padding: 7px;
  border: 1px solid color-mix(in oklab, var(--accent) 28%, var(--panel-border) 72%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--accent) 8%, var(--panel-bg) 92%);
}

.signal-designer-current-graph span {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-current-graph code,
.signal-designer-current-graph strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.signal-designer-current-graph code {
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 900;
}

.signal-designer-current-graph strong {
  color: var(--text);
  font-size: 0.74rem;
}

.signal-designer-input-table:not(.signal-designer-source-table) {
  min-width: 1540px;
}

.signal-designer-input-table th {
  cursor: pointer;
}

table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(1) { width: 42px; min-width: 42px; max-width: 42px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(2) { width: 178px; min-width: 178px; max-width: 178px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(3) { width: 320px; min-width: 320px; max-width: 320px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(4) { width: 76px; min-width: 76px; max-width: 76px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(5) { width: 106px; min-width: 106px; max-width: 106px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(6) { width: 118px; min-width: 118px; max-width: 118px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(7) { width: 92px; min-width: 92px; max-width: 92px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(8) { width: 52px; min-width: 52px; max-width: 52px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(9) { width: 104px; min-width: 104px; max-width: 104px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(10) { width: 112px; min-width: 112px; max-width: 112px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(11) { width: 58px; min-width: 58px; max-width: 58px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(12) { width: 76px; min-width: 76px; max-width: 76px; }
table.signal-designer-input-table:not(.signal-designer-source-table) :is(th, td):nth-child(13) { width: 206px; min-width: 206px; max-width: 206px; }

table.signal-designer-source-table {
  min-width: 1260px;
}

table.signal-designer-source-table :is(th, td):nth-child(1) { width: 42px; min-width: 42px; max-width: 42px; }
table.signal-designer-source-table :is(th, td):nth-child(2) { width: 210px; min-width: 210px; max-width: 210px; }
table.signal-designer-source-table :is(th, td):nth-child(3) { width: 300px; min-width: 300px; max-width: 300px; }
table.signal-designer-source-table :is(th, td):nth-child(4) { width: 144px; min-width: 144px; max-width: 144px; }
table.signal-designer-source-table :is(th, td):nth-child(5) { width: 190px; min-width: 190px; max-width: 190px; }
table.signal-designer-source-table :is(th, td):nth-child(6) { width: 126px; min-width: 126px; max-width: 126px; }
table.signal-designer-source-table :is(th, td):nth-child(7) { width: 92px; min-width: 92px; max-width: 92px; }
table.signal-designer-source-table :is(th, td):nth-child(8) { width: 170px; min-width: 170px; max-width: 170px; }
table.signal-designer-source-table :is(th, td):nth-child(9) { width: 86px; min-width: 86px; max-width: 86px; }

.signal-designer-input-table tbody tr {
  cursor: pointer;
}

.signal-designer-input-table tbody tr.is-selected {
  background: color-mix(in oklab, var(--accent) 18%, transparent);
}

.signal-designer-input-table tbody tr.is-selected > td {
  background: color-mix(in oklab, var(--accent) 16%, var(--panel-bg) 84%);
  box-shadow: inset 0 1px 0 color-mix(in oklab, var(--accent) 24%, transparent);
}

.signal-designer-input-table tbody tr.is-selected > td:first-child {
  box-shadow:
    inset 3px 0 0 var(--accent),
    inset 0 1px 0 color-mix(in oklab, var(--accent) 24%, transparent);
}

.signal-designer-scope-tabs {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  min-width: 0;
  padding: 2px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 80%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--input-bg) 72%, var(--panel-bg) 28%);
}

.signal-designer-catalog-tabs {
  gap: 0;
  padding: 0;
  overflow: hidden;
  border-color: color-mix(in oklab, var(--accent) 42%, var(--panel-border) 58%);
  border-radius: 7px 7px 0 0;
  background: color-mix(in oklab, var(--bg) 54%, var(--panel-bg) 46%);
  box-shadow: inset 0 -1px 0 color-mix(in oklab, var(--accent) 22%, transparent);
}

.signal-designer-mode-tabs {
  margin-left: auto;
}

.signal-designer-scope-tabs button {
  height: 24px;
  min-width: max-content;
  padding: 0 8px;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-catalog-tabs button {
  height: 29px;
  padding: 0 12px;
  border-radius: 0;
  border-right: 1px solid color-mix(in oklab, var(--panel-border) 86%, transparent);
  color: color-mix(in oklab, var(--text) 76%, var(--muted) 24%);
  background: color-mix(in oklab, var(--panel-bg) 76%, var(--bg) 24%);
  letter-spacing: 0;
}

.signal-designer-catalog-tabs button:last-child {
  border-right: 0;
}

.signal-designer-scope-tabs button.is-active {
  border-color: color-mix(in oklab, var(--accent) 46%, var(--panel-border) 54%);
  background: color-mix(in oklab, var(--accent) 12%, var(--input-bg) 88%);
  color: var(--accent);
}

.signal-designer-catalog-tabs button.is-active {
  border-color: color-mix(in oklab, var(--accent) 72%, var(--panel-border) 28%);
  background: linear-gradient(
    180deg,
    color-mix(in oklab, var(--accent) 36%, var(--panel-bg) 64%),
    color-mix(in oklab, var(--accent) 20%, var(--bg) 80%)
  );
  color: var(--text);
  box-shadow:
    inset 0 2px 0 color-mix(in oklab, var(--accent) 72%, white 28%),
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 48%, transparent);
}

.signal-designer-input-registry .sig-registry-table {
  border-collapse: separate;
  border-spacing: 0;
}

.signal-designer-input-registry .sig-registry-table thead th {
  border-right: 1px solid color-mix(in oklab, var(--accent) 16%, var(--panel-border) 84%);
  border-bottom: 1px solid color-mix(in oklab, var(--accent) 42%, var(--panel-border) 58%);
  background: color-mix(in oklab, var(--bg) 76%, var(--accent) 7%);
  color: color-mix(in oklab, var(--warning, #ffd84d) 88%, var(--text) 12%);
}

.signal-designer-input-registry .sig-registry-table thead th:last-child,
.signal-designer-input-registry .sig-registry-table tbody td:last-child {
  border-right: 0;
}

.signal-designer-input-registry .sig-registry-table thead tr.sig-filter-row th {
  border-bottom: 2px solid color-mix(in oklab, var(--accent) 36%, var(--panel-border) 64%);
  background: color-mix(in oklab, var(--panel-bg) 78%, var(--bg) 22%);
}

.signal-designer-input-registry .sig-registry-table tbody td {
  border-right: 1px solid color-mix(in oklab, var(--panel-border) 64%, transparent);
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 58%, transparent);
  background: color-mix(in oklab, var(--bg) 82%, var(--panel-bg) 18%);
}

.signal-designer-input-registry .sig-registry-table tbody tr:nth-child(even) td {
  background: color-mix(in oklab, var(--bg) 72%, var(--panel-bg) 28%);
}

.signal-designer-input-registry .sig-registry-table tbody tr:hover td {
  background: color-mix(in oklab, var(--accent) 10%, var(--panel-bg) 90%);
}

.signal-designer-scope-cell,
.signal-designer-time-cell,
.signal-designer-horizon-cell {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
  white-space: nowrap;
}

.signal-designer-branch-count {
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.signal-designer-coverage-cell {
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 900;
  white-space: nowrap;
}

.signal-designer-coverage-broad {
  color: var(--ok, #7cffb3);
}

.signal-designer-coverage-partial,
.signal-designer-coverage-limited {
  color: var(--warning, #ffd84d);
}

.signal-designer-coverage-thin,
.signal-designer-coverage-single_day,
.signal-designer-coverage-empty {
  color: var(--danger, #ff6f7d);
}

.signal-designer-drag-cell {
  text-align: center;
}

.signal-designer-drag-handle {
  display: inline-block;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border) 78%, var(--accent) 22%);
  border-radius: 4px;
  background:
    linear-gradient(currentColor 0 0) 6px 6px / 12px 1px no-repeat,
    linear-gradient(currentColor 0 0) 6px 10px / 12px 1px no-repeat,
    linear-gradient(currentColor 0 0) 6px 14px / 12px 1px no-repeat,
    color-mix(in oklab, var(--input-bg) 88%, var(--panel-bg) 12%);
  color: color-mix(in oklab, var(--accent) 84%, var(--text) 16%);
  cursor: grab;
}

.signal-designer-drag-handle:active {
  cursor: grabbing;
}

.signal-designer-input-name {
  min-width: 0;
  max-width: 420px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.signal-designer-input-count {
  display: block;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  text-align: right;
}

.signal-designer-filter-count {
  flex: 0 0 auto;
  min-width: 68px;
  margin-left: auto;
  padding: 2px 6px;
  border: 1px solid color-mix(in oklab, var(--accent) 20%, var(--panel-border) 80%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--bg) 70%, var(--panel-bg) 30%);
}

.signal-designer-input-table-actions {
  display: flex;
  gap: 4px;
  white-space: nowrap;
}

.signal-designer-input-table-actions .fmp-btn-sm {
  min-width: max-content;
}

.signal-designer-empty {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.7rem;
}

.signal-designer-canvas-shell {
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  transition: border-color .12s ease, box-shadow .12s ease, background .12s ease;
}

.signal-designer-canvas-shell.is-input-drop-target {
  border-color: color-mix(in oklab, var(--accent) 82%, var(--panel-border) 18%);
  background: color-mix(in oklab, var(--accent) 8%, var(--panel-bg) 92%);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 34%, transparent);
}

.signal-designer-workbench-tabs {
  display: flex;
  flex: 0 0 auto;
  gap: 4px;
  min-height: 28px;
  padding: 4px 5px 0;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 72%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 94%, #000 6%);
}

.signal-designer-workbench-tabs button {
  height: 24px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-bottom-color: transparent;
  border-radius: 5px 5px 0 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-workbench-tabs button.is-active {
  border-color: color-mix(in oklab, var(--panel-border) 78%, var(--accent) 22%);
  border-bottom-color: color-mix(in oklab, var(--panel-bg) 94%, #000 6%);
  color: var(--accent);
  background: color-mix(in oklab, var(--input-bg) 78%, var(--panel-bg) 22%);
}

.signal-designer-node-toolbar {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 5px 7px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 68%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 90%, #000 10%);
}

.signal-designer-node-toolbar > span {
  flex: 0 0 auto;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-node-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  overflow-x: auto;
}

.signal-designer-node-action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: max-content;
  height: 25px;
  padding: 0 9px 0 7px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 76%, var(--accent) 24%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--input-bg) 72%, var(--panel-bg) 28%);
  color: var(--text);
  cursor: grab;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 850;
  white-space: nowrap;
}

.signal-designer-node-action:hover {
  border-color: color-mix(in oklab, var(--accent) 52%, var(--panel-border) 48%);
  background: color-mix(in oklab, var(--accent) 10%, var(--input-bg) 90%);
}

.signal-designer-node-action:active {
  cursor: grabbing;
}

.signal-designer-node-action i {
  width: 10px;
  height: 10px;
  border-radius: 2px;
}

.signal-designer-canvas {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  background: color-mix(in oklab, var(--panel-bg) 82%, #000 18%);
}

.signal-designer-canvas > * {
  width: 100%;
  height: 100%;
  min-height: 0;
}

.signal-designer-workbench-panel {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  min-height: 0;
  padding: 8px;
  overflow: hidden;
  background: color-mix(in oklab, var(--panel-bg) 90%, #000 10%);
}

.signal-designer-tab-json {
  flex: 1;
  min-height: 0;
  width: 100%;
  padding: 9px;
  border: 1px solid var(--input-border, var(--panel-border));
  border-radius: 5px;
  background: var(--code-bg, #0d1117);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  line-height: 1.4;
  resize: none;
}

.signal-designer-app.signal-designer-theme-light .signal-designer-tab-json {
  background: #ffffff;
  color: #142033;
}

.signal-designer-assistant-workbench .signal-designer-goal {
  flex: 0 0 80px;
}

.signal-designer-canvas .grl-dg__graph .node {
  width: 340px;
  min-width: 340px;
  height: auto;
  min-height: 92px;
  padding: 8px 10px;
}

.signal-designer-canvas .grl-dg__graph .node .single-line,
.signal-designer-canvas .grl-text-edit,
.signal-designer-canvas .grl-text-edit__text {
  width: auto !important;
  min-width: 0;
  max-width: 306px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap !important;
  word-break: normal;
  overflow-wrap: normal;
}

.signal-designer-canvas .grl-dg__aside__menu,
.signal-designer-canvas .grl-dg__aside__menu *,
.signal-designer-canvas .grl-dn,
.signal-designer-canvas .grl-dn * {
  writing-mode: horizontal-tb !important;
  text-orientation: mixed !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}

.signal-designer-canvas .grl-dg__aside__menu,
.signal-designer-canvas .grl-dg__component-bar {
  min-width: 220px;
  overflow-x: auto;
}

.signal-designer-canvas .grl-dg__aside__menu {
  display: none !important;
}

.signal-designer-canvas .grl-dg__aside__menu__heading__text,
.signal-designer-canvas .grl-dg__aside__menu__components,
.signal-designer-canvas .grl-dn__header__text,
.signal-designer-canvas .grl-dn__header__text__name {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap !important;
}

.signal-designer-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.signal-designer-output-contract {
  display: grid;
  gap: 6px;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--accent) 34%, var(--panel-border) 66%);
  border-radius: 6px;
  background: color-mix(in oklab, var(--accent) 8%, var(--panel-bg) 92%);
  color: var(--text);
}

.signal-designer-output-contract-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-output-contract-head code,
.signal-designer-output-contract > strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.signal-designer-output-contract-head code {
  color: var(--accent);
  font-size: 0.7rem;
}

.signal-designer-output-contract > strong {
  color: var(--text);
  font-size: 0.76rem;
}

.signal-designer-selected-properties {
  border-color: color-mix(in oklab, var(--accent) 48%, var(--panel-border) 52%);
}

.signal-designer-property-description {
  margin: 0;
  color: color-mix(in oklab, var(--text) 84%, var(--muted) 16%);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.45;
}

.signal-designer-property-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.signal-designer-output-contract dl {
  display: grid;
  gap: 4px;
  margin: 0;
}

.signal-designer-output-contract dl > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2px;
  min-width: 0;
}

.signal-designer-output-contract dt,
.signal-designer-output-contract dd {
  min-width: 0;
  margin: 0;
  font-family: var(--font-mono);
  font-size: 0.66rem;
}

.signal-designer-output-contract dt {
  overflow: hidden;
  color: var(--muted);
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-transform: uppercase;
}

.signal-designer-output-contract dd {
  overflow: hidden;
  color: var(--text);
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.signal-designer-expression-builder {
  display: grid;
  gap: 7px;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 78%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--input-bg) 58%, var(--panel-bg) 42%);
}

.signal-designer-expression-builder-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--warning, #ffd84d);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-expression-builder-head code {
  color: var(--muted);
  font-size: 0.64rem;
}

.signal-designer-expression-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.signal-designer-expression-grid label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 800;
  text-transform: uppercase;
}

.signal-designer-expression-builder p {
  margin: 0;
  color: var(--muted);
  font-size: 0.68rem;
  line-height: 1.35;
}


.signal-designer-assistant-panel {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  gap: 6px;
  min-height: 132px;
  padding-bottom: 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.signal-designer-catalog-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--warning, #ffd84d);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-catalog-title span:last-child {
  color: var(--muted);
}

.signal-designer-goal {
  min-height: 52px;
}

.signal-designer-assistant-copy {
  width: 100%;
}

.signal-designer-assistant-meta {
  display: grid;
  grid-template-columns: 1fr;
  gap: 3px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
  text-transform: uppercase;
}

.signal-designer-form-grid label,
.signal-designer-description-label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 800;
  text-transform: uppercase;
}

.signal-designer-description {
  min-height: 58px;
  resize: vertical;
}

.signal-designer-main-description {
  width: 100%;
  min-height: 172px;
  height: auto;
  padding: 9px 10px;
  border: 1px solid var(--input-border, var(--panel-border));
  border-radius: 6px;
  background: color-mix(in oklab, var(--input-bg) 88%, var(--panel-bg) 12%);
  color: var(--text);
  box-shadow: inset 0 1px 0 color-mix(in oklab, var(--text) 4%, transparent);
  font-family: var(--font-sans);
  font-size: 0.74rem;
  font-weight: 500;
  line-height: 1.48;
  text-transform: none;
  white-space: pre-wrap;
  overflow: auto;
}

.signal-designer-main-description:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow:
    inset 0 1px 0 color-mix(in oklab, var(--text) 4%, transparent),
    0 0 0 1px color-mix(in oklab, var(--accent) 42%, transparent);
}

.signal-designer-main-description::selection {
  background: color-mix(in oklab, var(--accent) 34%, transparent);
}

.signal-designer-save-panel {
  display: grid;
  gap: 6px;
  padding-top: 8px;
  border-top: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.signal-designer-save-panel-title {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  font-weight: 900;
  text-transform: uppercase;
}

.signal-designer-save-secondary {
  width: 100%;
}

.signal-designer-contract-json {
  flex: 1;
  min-height: 0;
  width: 100%;
  padding: 8px;
  border: 1px solid var(--input-border, var(--panel-border));
  border-radius: 5px;
  background: var(--code-bg, #0d1117);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  line-height: 1.35;
  resize: none;
}

.signal-designer-node-tab {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 14px;
  overflow: auto;
  background: color-mix(in oklab, var(--panel-bg) 92%, #000 8%);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.72rem;
}

.signal-designer-node-tab-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
}

.signal-designer-node-tab-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
}

.signal-designer-node-tab-header > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.signal-designer-node-tab-header strong {
  overflow-wrap: anywhere;
  color: var(--warning, #ffd84d);
  font-size: 0.82rem;
  text-transform: uppercase;
}

.signal-designer-node-tab-header span {
  color: var(--muted);
}

.signal-designer-node-tab-id {
  max-width: 30ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  text-align: right;
}

.signal-designer-node-tab-body {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 8px 12px;
  align-content: start;
  min-height: 0;
}

.signal-designer-node-field {
  display: grid;
  grid-template-columns: minmax(110px, 0.42fr) minmax(140px, 1fr);
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.signal-designer-node-field.is-wide {
  grid-column: 1 / -1;
  align-items: start;
}

.signal-designer-node-field span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  text-transform: uppercase;
}

.signal-designer-node-field input[type='text'],
.signal-designer-node-field input[type='number'],
.signal-designer-node-field input[type='time'],
.signal-designer-node-field select,
.signal-designer-node-field textarea {
  min-width: 0;
  padding: 3px 7px;
  border: 1px solid var(--input-border, var(--panel-border));
  border-radius: 4px;
  background: var(--input-bg);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.72rem;
}

.signal-designer-node-field input[type='text'],
.signal-designer-node-field input[type='number'],
.signal-designer-node-field input[type='time'],
.signal-designer-node-field select {
  height: 26px;
}

.signal-designer-node-field textarea {
  min-height: 54px;
  resize: vertical;
}

.signal-designer-node-field input[type='checkbox'] {
  justify-self: start;
}

.signal-designer-loading,
.signal-designer-canvas-error,
.signal-designer-load-error {
  display: grid;
  place-content: center;
  gap: 8px;
  height: 100%;
  min-height: 180px;
  padding: 18px;
  color: var(--muted);
  text-align: center;
}

.signal-designer-loading strong,
.signal-designer-canvas-error strong,
.signal-designer-load-error strong {
  color: var(--warning, #ffd84d);
  font-family: var(--font-mono);
  font-size: 0.9rem;
  text-transform: uppercase;
}

.signal-designer-loading.is-error strong {
  color: var(--danger, #ff5a6c);
}

@media (max-width: 1320px) {
  .signal-designer-layout {
    grid-template-areas:
      "inputs"
      "splitter"
      "canvas";
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows:
      minmax(150px, var(--signal-designer-input-height, 240px))
      12px
      minmax(300px, 1fr);
  }

  .signal-designer-contract {
    display: none;
  }
}

@media (max-width: 760px) {
  .signal-designer-toolbar {
    flex-wrap: wrap;
    min-height: 0;
  }
}

/* ── FMP Monitor panel ─────────────────────────────────────────────────── */
.fmp-monitor-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  padding: 6px 10px;
  gap: 6px;
}
.fmp-monitor-controls {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.fmp-monitor-charts {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  gap: 4px;
}
.fmp-monitor-chart {
  flex: 3;
  min-height: 160px;
  width: 100%;
}
.fmp-monitor-chart-sm {
  flex: 1;
  min-height: 80px;
}
.fmp-monitor-table-wrap {
  flex-shrink: 0;
  max-height: 140px;
  overflow-y: auto;
}

/* ── Inline report modal ─────────────────────────────────────────────────── */
.fmp-report-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  background: #0f172a;
}
.fmp-report-modal-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 14px;
  border-bottom: 1px solid #2a2f42;
  flex-shrink: 0;
  background: #131928;
}
.fmp-report-modal-title {
  font-family: var(--font-mono, monospace);
  font-size: .75rem;
  color: #8e96b4;
}
.fmp-report-frame {
  flex: 1;
  width: 100%;
  border: none;
  background: #f1f5f9;
}

/* ── Signal Library ─────────────────────────────────────────────────────── */
article.panel[data-panel-id='signal-library'] {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.sig-lib-toolbar {
  display: flex;
  align-items: center;
  gap: 5px;
  flex: 1;
}
.sig-lib-status {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.72rem;
  color: var(--muted, #a6adc4);
}
.sig-lib-body {
  display: flex;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.sig-lib-tree-panel {
  width: 210px;
  min-width: 120px;
  max-width: 380px;
  flex-shrink: 0;
  border-right: 1px solid var(--border, #2a2f42);
  overflow-y: auto;
  overflow-x: hidden;
  padding: 6px 0;
  resize: horizontal;
}
.sig-lib-tree { font-size: 0.78rem; }
.sig-tree-empty { color: var(--muted, #a6adc4); padding: 8px 10px; margin: 0; }
.sig-tree-cat { margin-bottom: 4px; }
.sig-tree-cat-label {
  display: block;
  padding: 3px 10px;
  color: var(--muted, #a6adc4);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  cursor: default;
}
.sig-tree-items { padding-left: 4px; }
.sig-tree-item {
  display: flex;
  flex-direction: column;
  padding: 4px 10px;
  cursor: pointer;
  border-radius: 4px;
  margin: 1px 4px;
}
.sig-tree-item:hover { background: var(--hover-bg, rgba(255,255,255,.06)); }
.sig-tree-item-active { background: var(--active-bg, rgba(99,149,255,.18)) !important; }
.sig-tree-item-name { font-size: 0.78rem; font-weight: 600; word-break: break-word; }
.sig-tree-item-id { font-size: 0.68rem; color: var(--muted, #a6adc4); word-break: break-all; }

.sig-lib-workbench {
  flex: 1;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
}
.sig-wb-meta {
  flex-shrink: 0;
  padding: 8px 12px 4px;
  border-bottom: 1px solid var(--border, #2a2f42);
}
.sig-wb-row {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 24px;
  margin-bottom: 3px;
}
.sig-wb-lbl {
  width: 58px;
  flex-shrink: 0;
  font-size: 0.68rem;
  text-transform: uppercase;
  color: var(--muted, #a6adc4);
  letter-spacing: .04em;
}
.sig-wb-lbl-gap { margin-left: 8px; }
.sig-wb-val { flex: 1; min-width: 0; }
.sig-wb-editor-wrap {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  padding: 6px 12px 6px;
  border-bottom: 1px solid var(--border, #2a2f42);
}
.sig-wb-editor-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 5px;
}
.sig-wb-sql-lbl {
  font-size: 0.68rem;
  text-transform: uppercase;
  color: var(--muted, #a6adc4);
  letter-spacing: .04em;
}
.sig-source-tabs {
  display: flex;
  gap: 2px;
}
.sig-source-tab {
  padding: 2px 9px;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  border: 1px solid var(--border, #2a2f42);
  border-radius: 3px;
  background: transparent;
  color: var(--muted, #a6adc4);
  cursor: pointer;
  transition: border-color .12s, color .12s;
}
.sig-source-tab:hover { border-color: var(--accent, #6395ff); color: var(--accent, #6395ff); }
.sig-source-tab-active { border-color: var(--accent, #6395ff) !important; color: var(--accent, #6395ff) !important; background: var(--active-bg, rgba(99,149,255,.18)) !important; }
.sig-wb-sql {
  display: block;
  width: 100%;
  min-height: 200px;
  background: var(--code-bg, #0d1117);
  color: var(--fg, #e2e8f0);
  font-family: var(--font-mono, monospace);
  font-size: 0.75rem;
  border: 1px solid var(--border, #2a2f42);
  border-radius: 4px;
  padding: 6px 8px;
  resize: vertical;
  overflow: auto;
  box-sizing: border-box;
  flex-shrink: 0;
}
.sig-wb-sql:focus { outline: none; border-color: var(--accent, #6395ff); }
.sig-script-pane { padding-top: 4px; }
.sig-graph-pane {
  padding-top: 8px;
}
.sig-graph-editor-actions {
  display: flex;
  align-items: center;
  gap: 4px;
}
.sig-graph-json {
  min-height: 280px;
}
.sig-source-hint {
  font-size: 0.68rem;
  color: var(--muted, #a6adc4);
  margin: 8px 0 2px;
  line-height: 1.5;
}
.sig-source-hint code {
  font-family: var(--font-mono, monospace);
  background: var(--code-bg, #0d1117);
  padding: 1px 4px;
  border-radius: 3px;
  font-size: 0.72rem;
}
.sig-wb-actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-bottom: 1px solid var(--border, #2a2f42);
}
.sig-mat-date { width: 120px; flex-shrink: 0; }
.sig-wb-action-sep { color: var(--muted, #a6adc4); font-size: 0.78rem; }
.sig-preview-wrap {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 6px 12px 10px;
}
.sig-preview-summary {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
  font-size: 0.78rem;
}
.sig-preview-feature { color: var(--muted, #a6adc4); font-size: 0.72rem; }
.sig-preview-scroll { overflow-x: auto; }
.sig-preview-table { font-size: 0.78rem; width: 100%; }
.sig-eval-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
  font-family: var(--font-mono, monospace);
}
.sig-eval-head div {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.sig-eval-head span,
.sig-eval-head small {
  color: var(--muted);
}
.sig-eval-card-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(84px, 1fr));
  gap: 6px;
  margin-bottom: 8px;
}
.sig-eval-card {
  display: grid;
  gap: 2px;
  padding: 6px 8px;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 75%, transparent);
  border-radius: 5px;
  font-family: var(--font-mono, monospace);
}
.sig-eval-card span {
  color: var(--muted);
  font-size: .64rem;
  text-transform: uppercase;
}
.sig-eval-card b {
  color: var(--success, #24ae6c);
  font-size: .92rem;
}
.sig-eval-chart {
  width: 100%;
  height: 300px;
  min-height: 240px;
  margin-bottom: 8px;
}
.sig-eval-subtitle {
  margin: 6px 0;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
}
.sig-quantile-grid {
  display: grid;
  gap: 3px;
  font-family: var(--font-mono, monospace);
  font-size: .72rem;
}
.sig-q-row {
  display: grid;
  grid-template-columns: 34px minmax(80px, 1fr) 76px 82px;
  align-items: center;
  gap: 7px;
}
.sig-q-row > div {
  height: 8px;
  background: color-mix(in oklab, var(--panel-bg) 86%, var(--border) 14%);
  border-radius: 999px;
  overflow: hidden;
}
.sig-q-row i {
  display: block;
  height: 100%;
}
.sig-q-row b {
  text-align: right;
}
.sig-q-row em {
  color: var(--muted);
  font-style: normal;
  text-align: right;
}
.sig-q-pos { background: var(--success, #24ae6c); }
.sig-q-neg { background: var(--danger, #d64d4d); }

.sig-studio-body {
  display: grid;
  grid-template-columns: minmax(270px, 330px) minmax(0, 1fr);
  gap: 8px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  padding: 6px;
}
.sig-studio-form,
.sig-studio-main {
  min-height: 0;
  overflow: auto;
}
.sig-studio-form {
  display: flex;
  flex-direction: column;
  gap: 7px;
  border-right: 1px solid var(--border, #2a2f42);
  padding-right: 8px;
}
.sig-studio-main {
  display: grid;
  grid-template-rows:
    minmax(110px, var(--sig-studio-registry-height, 235px))
    minmax(74px, var(--sig-studio-selected-height, 90px))
    minmax(110px, var(--sig-studio-runs-height, 235px))
    12px
    minmax(140px, 0.42fr)
    minmax(180px, 0.58fr);
  gap: 10px;
  padding-right: 6px;
  overflow: hidden;
}
.sig-studio-section,
.sig-pane {
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 84%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 88%, transparent);
}
.sig-pane {
  flex: 0 0 auto;
  min-height: 0;
  max-height: none;
  overflow: hidden;
  resize: none;
}
.sig-registry-pane,
.sig-selected-pane,
.sig-eval-runs-pane,
.sig-analysis-pane,
.sig-analysis-detail-pane {
  height: auto;
}
.sig-registry-pane,
.sig-eval-runs-pane,
.sig-analysis-pane,
.sig-analysis-detail-pane {
  min-width: 0;
}
.sig-studio-splitter {
  position: relative;
  min-width: 0;
  min-height: 12px;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 72%, transparent);
  border-radius: 999px;
  background:
    linear-gradient(90deg, transparent, color-mix(in oklab, var(--accent, #6395ff) 26%, transparent), transparent),
    color-mix(in oklab, var(--panel-bg) 82%, var(--bg) 18%);
  cursor: row-resize;
}
.sig-studio-splitter::before {
  content: "";
  position: absolute;
  inset: 4px max(32px, 38%) auto;
  height: 2px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent, #6395ff) 70%, var(--muted) 30%);
  box-shadow:
    0 -3px 0 color-mix(in oklab, var(--accent, #6395ff) 34%, transparent),
    0 3px 0 color-mix(in oklab, var(--accent, #6395ff) 34%, transparent);
}
.sig-studio-splitter:hover,
.sig-studio-splitter:focus-visible,
.sig-studio-main.is-split-resizing .sig-studio-splitter {
  outline: none;
  border-color: color-mix(in oklab, var(--accent, #6395ff) 74%, var(--panel-border) 26%);
  background:
    linear-gradient(90deg, transparent, color-mix(in oklab, var(--accent, #6395ff) 38%, transparent), transparent),
    color-mix(in oklab, var(--accent, #6395ff) 10%, var(--panel-bg) 90%);
}
body.sig-studio-split-resizing {
  cursor: row-resize;
  user-select: none;
}
.sig-studio-section {
  display: grid;
  gap: 6px;
  padding: 8px;
}

.istr-body {
  display: grid;
  grid-template-columns: var(--strategy-studio-control-column) minmax(0, 1fr);
  gap: 10px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  padding: 10px;
}

.istr-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
  overflow-y: auto;
  padding: 10px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 76%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel-bg) 94%, transparent);
}

.istr-main {
  display: grid;
  grid-template-rows: minmax(190px, 0.32fr) minmax(150px, 0.24fr) minmax(300px, 0.44fr);
  gap: 8px;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.istr-drop {
  transition: border-color .12s ease, background .12s ease;
}

.istr-drop.is-factor-drop-target {
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 13%, var(--panel-bg) 87%);
}

.sig-section-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.istr-factor-head,
.istr-factor-row {
  display: grid;
  grid-template-columns: 34px minmax(190px, 1fr) minmax(78px, 0.48fr) 64px 30px;
  gap: 5px;
  align-items: center;
}

.istr-factor-head {
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .58rem;
  font-weight: 900;
  text-transform: uppercase;
}

.istr-factor-rows {
  display: grid;
  gap: 5px;
  min-height: 42px;
  border-radius: 6px;
  outline: 1px solid transparent;
  outline-offset: 3px;
  transition: outline-color .12s ease, background .12s ease;
}

.istr-factor-rows:empty {
  place-items: center;
  border: 1px dashed color-mix(in oklab, var(--border) 78%, transparent);
  background: color-mix(in oklab, var(--panel) 84%, transparent);
}

.istr-factor-rows:empty::before {
  content: "Drop daily or intraday factors here";
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .62rem;
  font-weight: 850;
  text-transform: uppercase;
}

.istr-factor-rows.is-factor-drop-target {
  outline-color: color-mix(in oklab, var(--accent) 76%, transparent);
  background: color-mix(in oklab, var(--accent) 10%, transparent);
}

.istr-factor-row {
  border-radius: 5px;
  transition: box-shadow .14s ease, background .14s ease;
}

.istr-factor-row.is-factor-drop-added {
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--success, #4ade80) 78%, transparent), 0 0 14px color-mix(in oklab, var(--success, #4ade80) 22%, transparent);
}

.istr-factor-row .fmp-input {
  width: 100% !important;
  min-width: 0;
  font-size: .7rem;
}

.istr-factor-row [data-istr-factor-id] {
  font-size: .72rem;
  font-weight: 850;
  text-overflow: ellipsis;
}

.istr-factor-row [data-istr-factor-weight] {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.istr-action-row {
  grid-template-columns: minmax(118px, 0.86fr) minmax(0, 1fr) minmax(0, 1fr);
}

.istr-action-row button {
  min-width: 0;
}

.istr-contract-row {
  grid-template-columns: minmax(118px, 1fr) repeat(3, minmax(0, .92fr));
}

.istr-grid-row {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) minmax(0, .9fr);
}

.istr-selected-run-summary {
  --fmp-jobs-summary-height: 168px;
}

.istr-selected-run-summary .fmp-jobs-summary-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.istr-form .sig-selected-summary {
  height: auto;
  max-height: 150px;
  display: grid;
  gap: 5px;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 60%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 72%, transparent);
}

.istr-form .sig-selected-summary > div {
  display: grid;
  grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
  gap: 7px;
  align-items: baseline;
  min-width: 0;
}

.istr-form .sig-selected-summary strong,
.istr-form .sig-selected-summary span,
.istr-form .sig-selected-summary b {
  min-width: 0;
  overflow-wrap: anywhere;
}

.istr-form .sig-selected-summary strong,
.istr-form .sig-selected-summary > div > span:first-child {
  color: var(--accent);
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 900;
}

.istr-form .sig-selected-summary b,
.istr-form .sig-selected-summary > div > span:last-child {
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: .68rem;
  font-weight: 800;
}

.istr-mode-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px 8px;
  text-align: left;
}

.istr-mode-grid label,
.istr-form .sig-inline-check {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: .68rem;
  font-weight: 800;
}

.istr-disabled-section,
.istr-method-grid input:disabled,
.istr-form select:disabled,
.istr-form input:disabled,
.istr-form button:disabled {
  opacity: 0.55;
}

.istr-disabled-section {
  filter: saturate(0.65);
}

.istr-disabled-section .fmp-jobs-section-title::after {
  content: "pending";
  margin-left: auto;
  color: var(--muted);
  font-size: .58rem;
  text-transform: uppercase;
}

.istr-method-grid label {
  color: var(--muted);
}

.istr-runs-pane,
.istr-daily-pane,
.istr-chart-pane {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.istr-runs-scroll,
.istr-daily-scroll {
  height: calc(100% - 29px);
}

.istr-runs-table {
  min-width: 1760px;
  -webkit-user-select: text;
  user-select: text;
}

.istr-runs-table .sig-eval-status {
  min-width: 220px;
  vertical-align: top;
}

.istr-run-progress {
  margin-top: 4px;
  width: min(210px, 100%);
}

.istr-run-progress-label {
  max-width: 230px;
  margin-top: 2px;
  text-transform: none;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.2;
  -webkit-user-select: text;
  user-select: text;
}

.istr-daily-table {
  min-width: 1080px;
}

.istr-runs-table tbody tr {
  cursor: pointer;
}

.istr-run-active td {
  background: color-mix(in oklab, var(--accent) 13%, transparent);
  box-shadow: inset 0 1px 0 color-mix(in oklab, var(--accent) 38%, transparent), inset 0 -1px 0 color-mix(in oklab, var(--accent) 38%, transparent);
}

.istr-chart {
  height: calc(100% - 29px);
  min-height: 260px;
  width: 100%;
}

.istr-chart[hidden],
.istr-correlation-panel[hidden],
.istr-log-panel[hidden] {
  display: none !important;
}

.istr-correlation-panel,
.istr-log-panel {
  height: calc(100% - 29px);
}

.istr-log-panel .fmp-jobs-log-body,
.istr-correlation-panel .fmp-jobs-log-body {
  -webkit-user-select: text !important;
  user-select: text !important;
}

@media (max-width: 980px) {
  .istr-body {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(260px, auto) minmax(0, 1fr);
  }

  .istr-form {
    border-right: 0;
    border-bottom: 1px solid var(--border, #2a2f42);
    padding-right: 0;
    padding-bottom: 8px;
    max-height: 360px;
  }
}

.sig-section-title,
.sig-pane-head {
  color: var(--accent, #6395ff);
  font-family: var(--font-mono, monospace);
  font-size: .7rem;
  font-weight: 800;
  text-transform: uppercase;
}
.sig-section-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.sig-studio-section label.sig-inline-check {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
  min-width: 0;
  min-height: 24px;
  color: var(--text);
  font-size: .64rem;
  font-weight: 900;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}
.sig-studio-section label.sig-inline-check > span {
  overflow: visible;
  text-overflow: clip;
}
.sig-new-btn {
  min-height: 24px;
  font-weight: 800;
  white-space: nowrap;
}
.sig-pane-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 28px;
  padding: 0 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 70%, transparent);
}
.sig-pane-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}
.sig-analysis-head {
  gap: 10px;
}
.sig-analysis-tabs {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  min-width: 0;
}
.sig-analysis-title {
  color: color-mix(in oklab, var(--accent) 86%, var(--text) 14%);
  font-family: var(--font-mono, monospace);
  font-size: .68rem;
  font-weight: 900;
  text-transform: uppercase;
}
.sig-analysis-tab {
  min-height: 22px;
  padding: 2px 10px;
  border: 1px solid color-mix(in oklab, var(--input-border, var(--border)) 76%, transparent);
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 900;
  text-transform: uppercase;
  cursor: pointer;
}
.sig-analysis-tab:hover {
  color: var(--accent);
  border-color: color-mix(in oklab, var(--accent) 52%, transparent);
}
.sig-analysis-tab.is-active {
  color: color-mix(in oklab, var(--accent) 86%, var(--text) 14%);
  border-color: color-mix(in oklab, var(--accent) 72%, var(--panel-border) 28%);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}
.sig-analysis-actions[hidden],
.sig-analysis-content[hidden] {
  display: none !important;
}
.sig-analysis-content {
  height: calc(100% - 29px);
  min-height: 0;
  overflow: hidden;
}
.sig-run-log-wrap {
  height: 100%;
  min-height: 0;
  overflow: auto;
  padding: 8px;
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: .7rem;
  scrollbar-gutter: stable;
}
.sig-run-log-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 6px;
  margin-bottom: 8px;
}
.sig-run-log-summary > div {
  min-width: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 70%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--bg) 64%, transparent);
  padding: 6px 8px;
}
.sig-run-log-summary span,
.sig-run-log-error-block span {
  display: block;
  color: color-mix(in oklab, var(--warning) 75%, var(--text) 25%);
  font-size: .6rem;
  font-weight: 900;
  text-transform: uppercase;
}
.sig-run-log-summary b {
  display: block;
  overflow: hidden;
  color: var(--text);
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sig-run-log-status-done { color: var(--success, #24ae6c) !important; }
.sig-run-log-status-failed { color: var(--danger, #d64d4d) !important; }
.sig-run-log-status-running { color: var(--accent, #6ea8ff) !important; }
.sig-run-log-status-queued { color: var(--muted) !important; }
.sig-run-log-notes {
  display: grid;
  gap: 4px;
  margin-bottom: 8px;
  padding: 7px 8px;
  border: 1px solid color-mix(in oklab, var(--accent) 40%, var(--panel-border) 60%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--accent) 9%, transparent);
  color: color-mix(in oklab, var(--text) 86%, var(--accent) 14%);
}
.sig-run-log-error-block {
  margin-bottom: 8px;
  border: 1px solid color-mix(in oklab, var(--danger, #d64d4d) 55%, var(--panel-border) 45%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--danger, #d64d4d) 10%, transparent);
  padding: 7px 8px;
}
.sig-run-log-error-block pre,
.sig-run-log-entry pre {
  max-height: 180px;
  overflow: auto;
  margin: 5px 0 0;
  white-space: pre-wrap;
  word-break: break-word;
}
.sig-run-log-list {
  display: grid;
  gap: 5px;
}
.sig-run-log-entry {
  display: grid;
  grid-template-columns: 70px 56px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  border-left: 3px solid color-mix(in oklab, var(--muted) 60%, transparent);
  background: color-mix(in oklab, var(--bg) 62%, transparent);
  padding: 6px 8px;
}
.sig-run-log-entry time {
  color: var(--muted);
}
.sig-run-log-entry span {
  font-weight: 900;
  text-transform: uppercase;
}
.sig-run-log-entry p {
  margin: 0;
  min-width: 0;
}
.sig-run-log-ok { border-left-color: var(--success, #24ae6c); }
.sig-run-log-warn { border-left-color: var(--warning, #d9a441); }
.sig-run-log-error { border-left-color: var(--danger, #d64d4d); }
.sig-run-log-empty {
  padding: 10px;
  color: var(--muted);
}
.sig-analysis-filters-content {
  height: calc(100% - 29px);
  min-height: 0;
  overflow: hidden;
}
.sig-studio-section label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted);
  font-size: .64rem;
  font-weight: 800;
  text-transform: uppercase;
}
.sig-studio-section label > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sig-id-field {
  font-family: var(--font-mono, monospace);
  font-weight: 800;
  letter-spacing: 0;
}
.sig-id-parts {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 58px 58px;
  gap: 6px;
}
.sig-studio-two {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 6px;
}
.sig-studio-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 5px;
}
.sig-studio-actions-single {
  grid-template-columns: minmax(0, 1fr);
}
.sig-studio-actions .fmp-btn-sm {
  width: 100% !important;
  justify-content: center;
}
#sigEvaluateBtn,
#sigEvaluateVisibleBtn,
#sigEvaluateSelectedBtn,
#sigEvaluateAllBtn,
#isigEvaluateBtn,
#isigEvaluateVisibleBtn,
#isigEvaluateSelectedBtn,
#isigEvaluateAllBtn {
  border-color: color-mix(in oklab, var(--success, #24ae6c) 66%, var(--panel-border) 34%) !important;
  background: color-mix(in oklab, var(--success, #24ae6c) 13%, var(--panel-bg) 87%) !important;
  color: color-mix(in oklab, var(--success, #24ae6c) 86%, var(--text) 14%) !important;
}
#sigUseStrategyBtn {
  border-color: color-mix(in oklab, var(--warning) 68%, var(--panel-border) 32%) !important;
  background: color-mix(in oklab, var(--warning) 13%, var(--panel-bg) 87%) !important;
  color: color-mix(in oklab, var(--warning) 88%, var(--text) 12%) !important;
}
#sigEvalFilterResetBtn,
#isigEvalFilterResetBtn {
  border-color: color-mix(in oklab, var(--muted) 55%, var(--panel-border) 45%) !important;
  background: color-mix(in oklab, var(--muted) 9%, var(--panel-bg) 91%) !important;
  color: color-mix(in oklab, var(--muted) 78%, var(--text) 22%) !important;
}
#sigMaterializeBtn,
#isigMaterializeBtn {
  border-color: color-mix(in oklab, var(--accent) 68%, var(--panel-border) 32%) !important;
  background: color-mix(in oklab, var(--accent) 13%, var(--panel-bg) 87%) !important;
  color: color-mix(in oklab, var(--accent) 90%, var(--text) 10%) !important;
}
article.panel[data-panel-id='intraday-signal-library'] #isigEvaluateBtn,
article.panel[data-panel-id='intraday-signal-library'] #isigEvaluateVisibleBtn,
article.panel[data-panel-id='intraday-signal-library'] #isigEvaluateSelectedBtn,
article.panel[data-panel-id='intraday-signal-library'] #isigEvaluateAllBtn {
  border-color: color-mix(in oklab, #24ae6c 72%, var(--panel-border) 28%) !important;
  background: color-mix(in oklab, #24ae6c 17%, var(--panel-bg) 83%) !important;
  color: color-mix(in oklab, #5dffb8 86%, var(--text) 14%) !important;
}
article.panel[data-panel-id='intraday-signal-library'] #isigMaterializeBtn {
  border-color: color-mix(in oklab, #38bdf8 72%, var(--panel-border) 28%) !important;
  background: color-mix(in oklab, #38bdf8 16%, var(--panel-bg) 84%) !important;
  color: color-mix(in oklab, #7dd3fc 90%, var(--text) 10%) !important;
}
article.panel[data-panel-id='intraday-signal-library'] #isigEvalFilterResetBtn {
  border-color: color-mix(in oklab, #94a3b8 58%, var(--panel-border) 42%) !important;
  background: color-mix(in oklab, #94a3b8 10%, var(--panel-bg) 90%) !important;
  color: color-mix(in oklab, #cbd5e1 76%, var(--text) 24%) !important;
}
.sig-source-tabs {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px;
}
.sig-script-pane {
  display: grid;
  gap: 6px;
}
.sig-registry-scroll {
  overflow-x: auto;
  overflow-y: scroll;
  height: calc(100% - 29px);
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--accent) 65%, var(--input-border) 35%) color-mix(in oklab, var(--bg) 72%, black 28%);
}
.sig-registry-table {
  width: max-content;
  min-width: 100%;
  font-size: .74rem;
  border-collapse: separate;
  border-spacing: 0;
}
.sig-eval-runs-scroll {
  height: calc(100% - 29px);
  overflow-x: auto;
  overflow-y: scroll;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--accent) 65%, var(--input-border) 35%) color-mix(in oklab, var(--bg) 72%, black 28%);
}
.sig-eval-runs-table {
  width: 100%;
  min-width: 1500px;
  font-size: .72rem;
  border-collapse: separate;
  border-spacing: 0;
}
.sig-registry-table thead th,
.sig-eval-runs-table thead th,
.fmp-stage-baskets-table thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--table-sticky-head-bg, var(--bg));
  background-color: var(--table-sticky-head-bg, var(--bg));
  background-clip: padding-box;
  box-shadow:
    inset 0 -1px 0 color-mix(in oklab, var(--accent) 42%, var(--panel-border) 58%),
    0 1px 0 color-mix(in oklab, var(--bg) 75%, transparent);
}
.sig-registry-table thead tr.sig-filter-row th,
.sig-eval-runs-table thead tr.sig-filter-row th,
.fmp-stage-baskets-table thead tr.fmp-portfolio-filter-row th {
  top: 24px;
  z-index: 5;
  padding-top: 2px;
  padding-bottom: 3px;
  background: color-mix(in oklab, var(--table-sticky-head-bg, var(--bg)) 94%, var(--panel-bg) 6%);
  background-color: color-mix(in oklab, var(--table-sticky-head-bg, var(--bg)) 94%, var(--panel-bg) 6%);
}
.signal-designer-input-registry.sig-registry-scroll {
  overflow-x: auto;
  overflow-y: hidden;
}
.signal-designer-input-registry .sig-registry-table {
  display: flex;
  flex-direction: column;
  height: 100%;
  width: 100%;
}
.signal-designer-input-registry .signal-designer-input-table:not(.signal-designer-source-table) {
  min-width: 1540px;
}
.signal-designer-input-registry .signal-designer-source-table {
  min-width: 1260px;
}
.signal-designer-input-registry .sig-registry-table thead {
  display: block;
  flex: 0 0 auto;
  padding-right: 12px;
  background: color-mix(in oklab, var(--bg) 76%, var(--panel-bg) 24%);
}
.signal-designer-input-registry .sig-registry-table tbody {
  display: block;
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--accent) 65%, var(--input-border) 35%) color-mix(in oklab, var(--bg) 72%, black 28%);
}
.signal-designer-input-registry .sig-registry-table thead tr,
.signal-designer-input-registry .sig-registry-table tbody tr {
  display: table;
  table-layout: fixed;
  width: 100%;
}
.signal-designer-input-registry .sig-registry-table thead th,
.signal-designer-input-registry .sig-registry-table thead tr.sig-filter-row th {
  position: static;
  top: auto;
  z-index: auto;
}
.signal-designer-input-registry .sig-registry-table :is(th, td) {
  overflow: hidden;
  text-overflow: ellipsis;
}
.sig-table-filter {
  display: block;
  width: 100%;
  min-width: 54px;
  height: 21px;
  padding: 1px 6px;
  border: 1px solid color-mix(in oklab, var(--input-border, var(--border)) 82%, transparent);
  border-radius: 3px;
  background: color-mix(in oklab, var(--input-bg, var(--panel-bg)) 92%, transparent);
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: max(.66rem, 10px);
  font-weight: 700;
  line-height: 19px;
  box-sizing: border-box;
}
.sig-table-filter:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 35%, transparent);
}
.sig-table-filter::placeholder {
  color: color-mix(in oklab, var(--muted) 58%, transparent);
  opacity: .62;
}

body[data-theme='light'] table thead th,
body[data-theme='light'] .fmp-jobs-table th,
body[data-theme='light'] .sig-registry-table thead th,
body[data-theme='light'] .sig-eval-runs-table thead th,
body[data-theme='light'] .sig-matrix-table th,
body[data-theme='paper'] table thead th,
body[data-theme='paper'] .fmp-jobs-table th,
body[data-theme='paper'] .sig-registry-table thead th,
body[data-theme='paper'] .sig-eval-runs-table thead th,
body[data-theme='paper'] .sig-matrix-table th {
  color: var(--table-head);
  background: var(--table-sticky-head-bg, var(--panel-bg));
  background-color: var(--table-sticky-head-bg, var(--panel-bg));
}

body[data-theme='light'] .sig-table-filter,
body[data-theme='paper'] .sig-table-filter {
  color: var(--text);
  background: color-mix(in oklab, var(--input-bg) 88%, var(--table-sticky-head-bg) 12%);
  border-color: color-mix(in oklab, var(--input-border) 82%, var(--text) 18%);
}
.sig-registry-table th[data-sig-registry-sort],
.sig-registry-table th[data-isig-registry-sort],
.sig-eval-runs-table th[data-sig-eval-sort],
.sig-eval-runs-table th[data-isig-eval-sort] {
  cursor: pointer;
  user-select: none;
}
.sig-registry-table th[data-sig-registry-sort]:hover,
.sig-registry-table th[data-isig-registry-sort]:hover,
.sig-eval-runs-table th[data-sig-eval-sort]:hover,
.sig-eval-runs-table th[data-isig-eval-sort]:hover {
  color: var(--accent);
}
.sig-registry-table th.sig-sort-asc::after,
.sig-eval-runs-table th.sig-sort-asc::after {
  content: ' ↑';
  color: var(--accent);
}
.sig-registry-table th.sig-sort-desc::after,
.sig-eval-runs-table th.sig-sort-desc::after {
  content: ' ↓';
  color: var(--accent);
}
.sig-registry-scroll::-webkit-scrollbar,
.sig-eval-runs-scroll::-webkit-scrollbar,
.signal-designer-input-registry .sig-registry-table tbody::-webkit-scrollbar {
  width: 12px;
  height: 12px;
}
.sig-registry-scroll::-webkit-scrollbar-track,
.sig-eval-runs-scroll::-webkit-scrollbar-track,
.signal-designer-input-registry .sig-registry-table tbody::-webkit-scrollbar-track {
  background: color-mix(in oklab, var(--bg) 72%, black 28%);
}
.sig-registry-scroll::-webkit-scrollbar-thumb,
.sig-eval-runs-scroll::-webkit-scrollbar-thumb,
.signal-designer-input-registry .sig-registry-table tbody::-webkit-scrollbar-thumb {
  background: color-mix(in oklab, var(--accent) 55%, var(--input-border) 45%);
  border-radius: 999px;
  border: 2px solid color-mix(in oklab, var(--bg) 72%, black 28%);
}
.sig-eval-runs-table th,
.sig-eval-runs-table td {
  white-space: nowrap;
}
.sig-eval-runs-table th[data-sig-eval-sort="run"],
.sig-eval-runs-table td:nth-child(2) {
  min-width: 92px;
}
.sig-eval-runs-table th[data-sig-eval-sort="factor"],
.sig-eval-runs-table th[data-isig-eval-sort="factor"],
.sig-eval-runs-table td:nth-child(3) {
  min-width: 320px;
  max-width: 560px;
}
.sig-eval-runs-table th[data-sig-eval-sort="liquidity"],
.sig-eval-runs-table th[data-isig-eval-sort="liquidity"],
.sig-eval-runs-table td:nth-child(4) {
  min-width: 58px;
  text-align: center;
}
.sig-eval-runs-table th[data-sig-eval-sort="score"],
.sig-eval-runs-table th[data-isig-eval-sort="score"],
.sig-eval-runs-table td.sig-eval-score {
  min-width: 56px;
  text-align: right;
}
.sig-eval-runs-table th[data-sig-eval-sort="from"],
.sig-eval-runs-table th[data-sig-eval-sort="thru"],
.sig-eval-runs-table th[data-sig-eval-sort="asof_date"],
.sig-eval-runs-table th[data-isig-eval-sort="from"],
.sig-eval-runs-table th[data-isig-eval-sort="thru"],
.sig-eval-runs-table th[data-isig-eval-sort="asof_date"],
.sig-eval-runs-table td.sig-eval-date-cell {
  min-width: 78px;
  font-family: var(--font-mono, monospace);
  font-weight: 850;
}
.sig-eval-runs-table td.sig-eval-date-stale {
  color: var(--warning);
  background: color-mix(in oklab, var(--warning) 10%, transparent);
}
.sig-run-factor-cell {
  white-space: nowrap !important;
  vertical-align: middle;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sig-factor-drag-handle {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 18px;
  min-width: 22px;
  margin-right: 5px;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--accent) 58%, var(--panel-border) 42%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--accent) 14%, transparent);
  color: var(--accent);
  font-family: var(--font-mono, monospace);
  font-size: 0.58rem;
  font-weight: 900;
  line-height: 1;
  vertical-align: middle;
  cursor: grab;
}

.sig-factor-drag-handle:hover,
.sig-factor-drag-handle:focus-visible,
.sig-factor-drag-handle.is-dragging {
  outline: none;
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 28%, transparent);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 36%, transparent);
}

.sig-factor-drag-handle:active {
  cursor: grabbing;
}

.sig-run-factor-id {
  display: inline-block;
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}
.sig-run-error {
  display: inline-block;
  max-width: 360px;
  margin-left: 8px;
  color: var(--danger, #d64d4d);
  font-family: var(--font-mono, monospace);
  font-size: .63rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}
.sig-run-progress {
  display: inline-grid;
  grid-template-columns: 130px minmax(120px, 1fr);
  align-items: center;
  gap: 6px;
  width: min(360px, calc(100% - 170px));
  margin-left: 8px;
  color: #22d3ee;
  font-family: var(--font-mono, monospace);
  font-size: .62rem;
  font-weight: 850;
  text-shadow: 0 0 8px rgba(34, 211, 238, .35);
  vertical-align: middle;
  white-space: nowrap;
}
.sig-run-progress span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sig-run-progress-track {
  position: relative;
  height: 6px;
  overflow: hidden;
  border: 1px solid rgba(34, 211, 238, .68);
  border-radius: 999px;
  background: rgba(4, 24, 31, .76);
  box-shadow: 0 0 0 1px rgba(34, 211, 238, .08), inset 0 0 8px rgba(34, 211, 238, .08);
}
.sig-run-progress-track::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(125, 249, 255, .42), transparent);
  animation: sig-progress-sweep 1.4s linear infinite;
}
.sig-run-progress-track i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #0891b2, #22d3ee 72%, #a5f3fc);
  box-shadow: 0 0 10px rgba(34, 211, 238, .65);
  transition: width .35s ease;
}
.sig-run-progress-waiting .sig-run-progress-track i {
  opacity: 0;
}
body[data-theme='light'] .sig-run-progress,
body[data-theme='paper'] .sig-run-progress {
  color: #dc2626;
  text-shadow: 0 0 6px rgba(220, 38, 38, .22);
}
body[data-theme='light'] .sig-run-progress-track,
body[data-theme='paper'] .sig-run-progress-track {
  border-color: rgba(220, 38, 38, .62);
  background: rgba(127, 29, 29, .08);
  box-shadow: inset 0 0 8px rgba(220, 38, 38, .08);
}
body[data-theme='light'] .sig-run-progress-track::after,
body[data-theme='paper'] .sig-run-progress-track::after {
  background: linear-gradient(90deg, transparent, rgba(248, 113, 113, .38), transparent);
}
body[data-theme='light'] .sig-run-progress-track i,
body[data-theme='paper'] .sig-run-progress-track i {
  background: linear-gradient(90deg, #b91c1c, #ef4444 72%, #fecaca);
  box-shadow: 0 0 9px rgba(239, 68, 68, .45);
}
.sig-run-progress-daily {
  color: #39ff14;
  text-shadow: 0 0 8px rgba(57, 255, 20, .34);
}
.sig-run-progress-daily .sig-run-progress-track {
  border-color: rgba(57, 255, 20, .68);
  background: rgba(5, 33, 10, .78);
  box-shadow: 0 0 0 1px rgba(57, 255, 20, .08), inset 0 0 8px rgba(57, 255, 20, .10);
}
.sig-run-progress-daily .sig-run-progress-track::after {
  background: linear-gradient(90deg, transparent, rgba(134, 239, 172, .44), transparent);
}
.sig-run-progress-daily .sig-run-progress-track i {
  background: linear-gradient(90deg, #16a34a, #39ff14 72%, #bbf7d0);
  box-shadow: 0 0 10px rgba(57, 255, 20, .62);
}
body[data-theme='light'] .sig-run-progress-daily,
body[data-theme='paper'] .sig-run-progress-daily {
  color: #15803d;
  text-shadow: none;
}
body[data-theme='light'] .sig-run-progress-daily .sig-run-progress-track,
body[data-theme='paper'] .sig-run-progress-daily .sig-run-progress-track {
  border-color: rgba(22, 163, 74, .60);
  background: rgba(22, 163, 74, .08);
  box-shadow: inset 0 0 8px rgba(22, 163, 74, .08);
}
body[data-theme='light'] .sig-run-progress-daily .sig-run-progress-track::after,
body[data-theme='paper'] .sig-run-progress-daily .sig-run-progress-track::after {
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, .34), transparent);
}
body[data-theme='light'] .sig-run-progress-daily .sig-run-progress-track i,
body[data-theme='paper'] .sig-run-progress-daily .sig-run-progress-track i {
  background: linear-gradient(90deg, #15803d, #16a34a 72%, #86efac);
  box-shadow: 0 0 8px rgba(22, 163, 74, .38);
}
.sig-eval-progress-count {
  color: color-mix(in oklab, #39ff14 78%, var(--text) 22%);
  background: color-mix(in oklab, #39ff14 11%, transparent);
  font-family: var(--font-mono, monospace);
  font-variant-numeric: tabular-nums;
  font-weight: 900;
  text-align: right;
}
@keyframes sig-progress-sweep {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}
.sig-eval-runs-table th[data-sig-eval-sort="icir"],
.sig-eval-runs-table th[data-sig-eval-sort="score"],
.sig-eval-runs-table th[data-sig-eval-sort="unique"],
.sig-eval-runs-table th[data-sig-eval-sort="mean_ic"],
.sig-eval-runs-table th[data-sig-eval-sort="hit"],
.sig-eval-runs-table th[data-sig-eval-sort="spread_sharpe"],
.sig-eval-runs-table th[data-sig-eval-sort="spread_ann"],
.sig-eval-runs-table th[data-isig-eval-sort="icir"],
.sig-eval-runs-table th[data-isig-eval-sort="score"],
.sig-eval-runs-table th[data-isig-eval-sort="unique"],
.sig-eval-runs-table th[data-isig-eval-sort="mean_ic"],
.sig-eval-runs-table th[data-isig-eval-sort="hit"],
.sig-eval-runs-table th[data-isig-eval-sort="spread_sharpe"],
.sig-eval-runs-table th[data-isig-eval-sort="spread_ann"] {
  color: color-mix(in oklab, var(--warning) 80%, var(--text) 20%);
  background: color-mix(in oklab, var(--warning) 10%, var(--table-sticky-head-bg, var(--bg)) 90%);
  background-color: color-mix(in oklab, var(--warning) 10%, var(--table-sticky-head-bg, var(--bg)) 90%);
  font-weight: 900;
}
.sig-eval-num {
  text-align: right;
  font-family: var(--font-mono, monospace);
  font-variant-numeric: tabular-nums;
  font-weight: 850;
  background: color-mix(in oklab, var(--panel-border) 6%, transparent);
}
.sig-eval-num.sig-metric-good {
  color: color-mix(in oklab, var(--success, #24ae6c) 88%, var(--text) 12%);
  background: color-mix(in oklab, var(--success, #24ae6c) 11%, transparent);
}
.sig-eval-num.sig-metric-bad {
  color: color-mix(in oklab, var(--danger, #d64d4d) 90%, var(--text) 10%);
  background: color-mix(in oklab, var(--danger, #d64d4d) 12%, transparent);
}
.sig-eval-num.sig-metric-flat {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-border) 8%, transparent);
}
.sig-eval-num.sig-metric-empty {
  color: var(--muted);
  opacity: .75;
}
.sig-eval-score {
  font-family: var(--font-mono, monospace);
  font-variant-numeric: tabular-nums;
  font-weight: 950;
  box-shadow: inset 2px 0 0 color-mix(in oklab, #58a6ff 72%, var(--accent) 28%);
}
.sig-eval-score.sig-score-top {
  color: #58a6ff;
  background: color-mix(in oklab, #58a6ff 20%, transparent);
}
.sig-eval-score.sig-score-good {
  color: color-mix(in oklab, #58a6ff 70%, var(--success) 30%);
  background: color-mix(in oklab, #58a6ff 12%, transparent);
}
.sig-eval-score.sig-score-mid {
  color: color-mix(in oklab, var(--warning) 82%, var(--text) 18%);
  background: color-mix(in oklab, var(--warning) 11%, transparent);
  box-shadow: inset 2px 0 0 color-mix(in oklab, var(--warning) 75%, var(--accent) 25%);
}
.sig-eval-score.sig-score-bad {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 14%, transparent);
  box-shadow: inset 2px 0 0 var(--danger);
}
.sig-eval-score.sig-score-empty {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-border) 12%, transparent);
  box-shadow: none;
}
.sig-eval-runs-table tbody tr {
  cursor: pointer;
}
.sig-eval-run-active td {
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}
.sig-eval-run-id {
  color: var(--accent);
  font-family: var(--font-mono, monospace);
  font-weight: 800;
}
.sig-run-status {
  display: inline-flex;
  align-items: center;
  min-width: 50px;
  padding: 1px 5px;
  border-radius: 3px;
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 800;
  text-transform: uppercase;
}
.sig-run-done { color: var(--success, #24ae6c); background: color-mix(in oklab, var(--success, #24ae6c) 14%, transparent); }
.sig-run-running { color: var(--warning, #d9a441); background: color-mix(in oklab, var(--warning, #d9a441) 14%, transparent); }
.sig-run-queued { color: var(--muted); background: color-mix(in oklab, var(--panel-border) 18%, transparent); }
.sig-run-failed { color: var(--danger, #d64d4d); background: color-mix(in oklab, var(--danger, #d64d4d) 14%, transparent); }
.sig-run-cancelled { color: var(--muted); background: color-mix(in oklab, var(--panel-border) 22%, transparent); }
.sig-run-delete {
  min-height: 20px;
  padding: 0 6px;
}
.sig-run-actions {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
.sig-run-refresh {
  min-height: 20px;
  padding: 0 6px;
  font-family: var(--font-mono, monospace);
  font-size: .68rem;
}
.sig-insights-wrap {
  height: 100%;
  min-height: 0;
  overflow: auto;
  padding: 6px;
  scrollbar-gutter: stable;
}
.sig-insights-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(390px, 1fr));
  gap: 10px;
  align-items: start;
}
.sig-insight-card {
  min-width: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 70%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--bg) 58%, transparent);
  padding: 7px;
}
.sig-insight-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  color: color-mix(in oklab, var(--warning) 72%, var(--text) 28%);
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 850;
  text-transform: uppercase;
}
.sig-insight-card-head > span:first-child {
  margin-right: auto;
}
.sig-insight-reset {
  min-height: 19px;
  padding: 0 5px;
  font-size: .62rem;
  line-height: 17px;
}
.sig-insight-chart-shell {
  position: relative;
  height: 310px;
  min-height: 0;
}
.sig-insight-chart {
  height: 100%;
}
.sig-insight-pie {
  height: 310px;
}
.sig-insight-selection-layer {
  position: absolute;
  left: 46px;
  right: 14px;
  top: 12px;
  bottom: 54px;
  z-index: 4;
  cursor: crosshair;
  user-select: none;
}
.sig-insight-selection-band {
  position: absolute;
  top: 0;
  bottom: 0;
  min-width: 8px;
  border: 1px solid color-mix(in oklab, var(--accent) 82%, white 18%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--accent) 24%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 22%, transparent);
  cursor: move;
}
.sig-insight-selection-handle {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 8px;
  background: color-mix(in oklab, var(--accent) 62%, white 18%);
  opacity: .75;
  cursor: ew-resize;
}
.sig-insight-selection-handle.is-left {
  left: -4px;
  border-radius: 5px 0 0 5px;
}
.sig-insight-selection-handle.is-right {
  right: -4px;
  border-radius: 0 5px 5px 0;
}
.sig-insight-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding-top: 5px;
}
.sig-insight-pill {
  min-height: 20px;
  padding: 1px 6px;
  border: 1px solid color-mix(in oklab, var(--input-border, var(--border)) 72%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--panel-bg) 82%, transparent);
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: .64rem;
  font-weight: 800;
}
.sig-insight-pill.is-active {
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 18%, transparent);
  color: var(--accent);
}
.sig-matrix-select {
  width: auto;
  min-width: 118px;
  min-height: 24px;
  padding: 2px 6px;
  font-size: .68rem;
}
.sig-matrix-wrap {
  height: 100%;
  min-height: 0;
  overflow: hidden;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .72rem;
  padding: 6px;
}
.sig-matrix-placeholder {
  color: var(--muted);
  padding: 6px;
}
.sig-selected-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 6px;
}
.sig-selected-grid div {
  min-width: 0;
  padding: 5px 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 76%, transparent);
}
.sig-selected-grid span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  font-weight: 800;
  text-transform: uppercase;
}
.sig-selected-grid b {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-size: .7rem;
}
.istr-panel-columns-summary {
  display: grid;
  gap: 5px;
  min-height: 28px;
  padding: 6px;
  border: 1px solid color-mix(in oklab, var(--panel-border) 70%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 76%, transparent);
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  font-size: .66rem;
  font-weight: 800;
}
.istr-panel-schema-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  color: color-mix(in oklab, var(--accent) 70%, var(--text) 30%);
  text-transform: uppercase;
}
.istr-panel-column-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  max-height: 74px;
  overflow: auto;
  scrollbar-width: thin;
}
.istr-panel-column-chips button {
  min-height: 20px;
  max-width: 100%;
  padding: 1px 6px;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: .62rem;
}
.istr-panel-schema-error {
  color: var(--danger, #d64d4d);
}
.sig-status-badge {
  display: inline-flex;
  align-items: center;
  min-height: 17px;
  padding: 1px 5px;
  border-radius: 3px;
  border: 1px solid color-mix(in oklab, var(--muted) 34%, transparent);
  font-size: .58rem;
  font-weight: 900;
  text-transform: uppercase;
}
.sig-status-done {
  color: var(--success);
  background: color-mix(in oklab, var(--success) 16%, transparent);
}
.sig-status-running,
.sig-status-queued {
  color: var(--accent);
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}
.sig-status-failed {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 14%, transparent);
}
.sig-status-cancelled {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-border) 22%, transparent);
}
.sig-eval-run-id,
.sig-run-factor-cell {
  min-width: 0;
}
.sig-eval-run-id {
  font-family: var(--font-mono, monospace);
}
.sig-copy-value,
.sig-run-factor-id {
  display: inline-block;
  max-width: 16rem;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}
.sig-copy-value {
  cursor: copy;
  -webkit-user-select: text;
  user-select: text;
}
.sig-copy-value:hover,
.sig-copy-value:focus-visible {
  color: color-mix(in oklab, var(--accent) 82%, var(--text) 18%);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
.sig-copy-chip {
  min-height: 18px;
  margin-left: 5px;
  padding: 1px 5px;
  border: 1px solid color-mix(in oklab, var(--accent) 34%, var(--panel-border) 66%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--accent) 9%, transparent);
  color: color-mix(in oklab, var(--accent) 80%, var(--text) 20%);
  font-size: .56rem;
  font-weight: 850;
  line-height: 1;
  text-transform: uppercase;
  vertical-align: middle;
}
.sig-copy-chip:hover,
.sig-copy-chip:focus-visible {
  border-color: color-mix(in oklab, var(--accent) 64%, var(--panel-border) 36%);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}
.sig-matrix-note {
  margin: 0 0 5px;
  color: var(--muted);
}
.sig-matrix-scroll {
  height: calc(100% - 18px);
  max-width: 100%;
  overflow: auto;
  scrollbar-gutter: stable;
}
.sig-matrix-table {
  width: max-content;
  min-width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: .68rem;
}
.sig-matrix-table th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--table-sticky-head-bg, var(--bg));
  background-color: var(--table-sticky-head-bg, var(--bg));
  color: color-mix(in oklab, var(--table-head, var(--muted)) 88%, var(--text) 12%);
  white-space: nowrap;
  max-width: 138px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sig-matrix-table tbody th {
  left: 0;
  z-index: 2;
  text-align: left;
}
.sig-matrix-table td {
  min-width: 68px;
  text-align: right;
  font-family: var(--font-mono, monospace);
  font-variant-numeric: tabular-nums;
  font-weight: 850;
}
.sig-matrix-high-pos {
  color: var(--success);
  background: color-mix(in oklab, var(--success) 22%, transparent);
}
.sig-matrix-mid-pos {
  color: color-mix(in oklab, var(--success) 84%, var(--text) 16%);
  background: color-mix(in oklab, var(--success) 12%, transparent);
}
.sig-matrix-neg {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 15%, transparent);
}
.sig-matrix-flat {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-border) 8%, transparent);
}
.sig-matrix-empty {
  color: var(--muted);
  opacity: .72;
}
.sig-matrix-table td.is-matrix-hover-row,
.sig-matrix-table td.is-matrix-hover-col {
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--danger) 48%, transparent);
}
.sig-matrix-table td.is-matrix-hover-cell {
  position: relative;
  z-index: 4;
  box-shadow:
    inset 0 0 0 2px var(--danger),
    0 0 0 1px color-mix(in oklab, var(--danger) 45%, transparent);
}
.sig-matrix-table th.is-matrix-hover-row,
.sig-matrix-table th.is-matrix-hover-col {
  color: var(--danger);
  outline: 2px solid var(--danger);
  outline-offset: -2px;
  background: color-mix(in oklab, var(--danger) 16%, var(--table-sticky-head-bg, var(--bg)) 84%);
}
.sig-registry-table th {
  color: var(--muted);
  font-size: .66rem;
  text-transform: uppercase;
}
.sig-registry-table td,
.sig-registry-table th {
  white-space: nowrap;
}
.sig-registry-table :is(th, td):nth-child(1) { min-width: 128px; }
.sig-registry-table :is(th, td):nth-child(2) { min-width: 220px; }
.sig-registry-table :is(th, td):nth-child(3) { min-width: 70px; }
.sig-registry-table :is(th, td):nth-child(4) { min-width: 96px; }
.sig-registry-table :is(th, td):nth-child(5) { min-width: 84px; }
.sig-registry-table :is(th, td):nth-child(6) { min-width: 72px; }
.sig-registry-table :is(th, td):nth-child(7) { min-width: 72px; }
.sig-registry-table :is(th, td):nth-child(8) { min-width: 74px; }
.sig-registry-table :is(th, td):nth-child(9) { min-width: 64px; }
.sig-registry-table :is(th, td):nth-child(10) { min-width: 90px; }
.sig-registry-table :is(th, td):nth-child(11) { min-width: 86px; }
.sig-registry-table :is(th, td):nth-child(12) { min-width: 82px; }
.sig-registry-table :is(th, td):nth-child(13) { min-width: 82px; }
.sig-registry-table :is(th, td):nth-child(14) { min-width: 220px; }
.sig-registry-table :is(th, td):nth-child(15) { min-width: 34px; }
.sig-registry-table tbody tr {
  cursor: pointer;
}
.sig-registry-table tbody tr:focus-visible td {
  outline: 1px solid var(--accent);
  outline-offset: -1px;
}
.sig-registry-active td {
  background: color-mix(in oklab, var(--accent) 14%, transparent);
}
.sig-registry-selected td {
  background: color-mix(in oklab, var(--accent) 8%, transparent);
  box-shadow: inset 0 -1px 0 color-mix(in oklab, var(--accent) 45%, transparent);
}
.sig-registry-active.sig-registry-selected td {
  background: color-mix(in oklab, var(--accent) 18%, transparent);
}
.sig-registry-id {
  color: var(--accent);
  font-family: var(--font-mono, monospace);
  font-weight: 800;
}
.sig-registry-liquidity {
  color: var(--accent);
  font-family: var(--font-mono, monospace);
  font-weight: 850;
  text-align: center;
}
.sig-registry-materialization {
  font-family: var(--font-mono, monospace);
  font-weight: 900;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.sig-registry-materialization-ok {
  color: var(--success, #24ae6c);
  background: color-mix(in oklab, var(--success, #24ae6c) 10%, transparent);
}
.sig-registry-materialization-missing {
  color: var(--danger, #d64d4d);
  background: color-mix(in oklab, var(--danger, #d64d4d) 9%, transparent);
}
.sig-registry-materialization-unknown {
  color: var(--warning, #d9a441);
  background: color-mix(in oklab, var(--warning, #d9a441) 10%, transparent);
}
.sig-registry-materialization-feedback-pending {
  color: var(--warning, #d9a441);
  background: color-mix(in oklab, var(--warning, #d9a441) 16%, transparent);
}
.sig-registry-materialization-feedback-running {
  color: var(--accent);
  background: color-mix(in oklab, var(--accent) 16%, transparent);
}
.sig-registry-materialization-feedback-done {
  color: var(--success, #24ae6c);
  background: color-mix(in oklab, var(--success, #24ae6c) 16%, transparent);
}
.sig-registry-materialization-feedback-failed {
  color: var(--danger, #d64d4d);
  background: color-mix(in oklab, var(--danger, #d64d4d) 14%, transparent);
}
.signal-created-author {
  color: color-mix(in oklab, var(--muted) 74%, var(--text) 26%);
  font-size: 0.7rem;
}
.signal-created-chip {
  display: inline-flex;
  align-items: center;
  max-width: 11rem;
  min-height: 20px;
  padding: 0 6px;
  border: 1px solid color-mix(in oklab, var(--accent) 44%, var(--panel-border) 56%);
  border-radius: 4px;
  color: color-mix(in oklab, var(--accent) 78%, var(--text) 22%);
  background: color-mix(in oklab, var(--accent) 9%, transparent);
  overflow: hidden;
  text-overflow: ellipsis;
}
.sig-registry-actions {
  text-align: center;
}
.signal-delete-btn {
  min-width: 24px;
  padding-inline: 7px;
  font-weight: 800;
  line-height: 1;
}
.sig-selected-summary {
  height: calc(100% - 29px);
  overflow: auto;
  padding: 8px;
  scrollbar-gutter: stable;
}
.sig-summary-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 7px;
  font-family: var(--font-mono, monospace);
}
.sig-summary-title span {
  color: var(--accent);
  font-size: .72rem;
}
.sig-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(120px, 1fr));
  gap: 6px;
}
.sig-summary-cell {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr);
  min-width: 0;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 70%, transparent);
  border-radius: 5px;
  overflow: hidden;
  font-family: var(--font-mono, monospace);
  font-size: .72rem;
}
.sig-summary-cell span {
  padding: 3px 5px;
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-bg) 78%, var(--accent) 8%);
  text-transform: uppercase;
}
.sig-summary-cell b {
  min-width: 0;
  padding: 3px 5px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sig-empty-summary {
  color: var(--muted);
  font-size: .78rem;
}
.sig-preview-pane {
  display: flex;
  flex-direction: column;
}
.sig-analysis-content .sig-preview-wrap {
  height: 100%;
  min-height: 0;
}
.fmp-model-badge {
  font-size: 0.68rem;
  color: var(--warning, #f5a623);
  font-family: var(--font-mono, monospace);
  padding: 1px 5px;
  background: rgba(245,166,35,.12);
  border-radius: 3px;
  flex-shrink: 0;
}
.fmp-lib-picker-menu {
  background: var(--bg-overlay, var(--panel-bg));
  border: 1px solid var(--border, var(--panel-border));
  border-radius: 6px;
  color: var(--text);
  min-width: 230px;
  max-height: 320px;
  overflow-y: auto;
  box-shadow: 0 12px 28px color-mix(in oklab, black 20%, transparent);
  padding: 4px 0;
}
.fmp-lib-picker-note { color: var(--muted); font-size: 0.78rem; padding: 8px 12px; margin: 0; }
.fmp-lib-picker-cat {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--muted);
  padding: 6px 12px 2px;
}
.fmp-lib-picker-item {
  display: flex;
  flex-direction: column;
  padding: 5px 12px;
  cursor: pointer;
  font-size: 0.78rem;
}
.fmp-lib-picker-item:hover { background: var(--hover-bg); }
.fmp-lib-picker-reset {
  font-size: 0.73rem;
  color: var(--muted);
  border-bottom: 1px solid var(--border, var(--panel-border));
  margin-bottom: 4px;
  padding-bottom: 7px;
}
.fmp-lib-picker-name { font-weight: 600; }
.fmp-lib-picker-sub { font-size: 0.67rem; color: var(--muted); }
.sig-status-ok    { color: var(--success, #3ecf8e) !important; }
.sig-status-error { color: var(--danger,  #f76f6f) !important; }
.sig-status-warn  { color: var(--warning, #f5a623) !important; }
#sigDeleteBtn:not(:disabled),
#sigDeleteBtn:not([disabled]) { opacity: 1; }
.sig-wb-actions button:disabled,
.sig-lib-toolbar button:disabled { opacity: 0.35; cursor: not-allowed; }

/* ── Execute to broker form ──────────────────────────────────────────────── */
.fmp-exec-form { padding: 0 12px 8px; }
.fmp-exec-result {
  margin: 4px 12px 8px;
  padding: 6px 8px;
  background: var(--surface2, #1a1f2e);
  border: 1px solid var(--border, #2a2f42);
  border-radius: 4px;
  font-size: 0.72rem;
}
.fmp-exec-summary { color: var(--fg, #e2e8f0); margin-bottom: 3px; }
.fmp-exec-errors {
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: var(--danger, #f76f6f);
  max-height: 80px;
  overflow-y: auto;
}


.preflight-body {
  display: grid;
  gap: 5px;
  padding: 5px 8px 8px;
}

.preflight-summary {
  min-width: 0;
  overflow: auto;
}

.preflight-tabs {
  display: flex;
  gap: 4px;
  min-height: 24px;
  border-bottom: 1px solid color-mix(in oklab, var(--border, #2a2f42) 75%, transparent);
}

.preflight-tabs button {
  height: 24px;
  padding: 0 9px;
  border: 1px solid transparent;
  border-bottom: 0;
  border-radius: 5px 5px 0 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 900;
  text-transform: uppercase;
}

.preflight-tabs button.is-active {
  border-color: color-mix(in oklab, var(--border, #2a2f42) 80%, var(--accent, #7bc4ff) 20%);
  background: color-mix(in oklab, var(--panel-bg) 92%, var(--bg) 8%);
  color: var(--accent, #7bc4ff);
}

.preflight-tab-panel {
  min-height: 0;
}

.preflight-table {
  width: 100%;
  min-width: 760px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 70%, transparent);
  border-radius: 5px;
  overflow: hidden;
  border-spacing: 0;
  background: color-mix(in oklab, var(--panel-bg) 90%, var(--bg) 10%);
  table-layout: fixed;
}

.preflight-table th,
.preflight-table td {
  min-width: 0;
  padding: 4px 7px;
  border-bottom: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  line-height: 1.25;
  text-align: left;
  vertical-align: middle;
}

.preflight-table th {
  color: var(--muted);
  background: color-mix(in oklab, var(--panel-bg) 94%, var(--bg) 6%);
  font-size: 0.6rem;
  font-weight: 900;
  text-transform: uppercase;
}

.preflight-table td {
  color: var(--text);
}

.preflight-table tbody tr:last-child td {
  border-bottom: 0;
}

.preflight-table :is(th, td):nth-child(1) {
  width: 92px;
  color: var(--muted);
  font-weight: 900;
  text-transform: uppercase;
}

.preflight-table :is(th, td):nth-child(2) {
  width: 180px;
  color: var(--muted);
  font-weight: 800;
  text-transform: uppercase;
}

.preflight-table :is(th, td):nth-child(3) {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.preflight-table :is(th, td):nth-child(4) {
  width: 74px;
  text-align: right;
}

.preflight-badge {
  border-radius: 999px;
  padding: 1px 6px;
  font-size: 0.58rem;
  font-weight: 900;
  text-transform: uppercase;
}

.preflight-badge[data-state='ok'] {
  color: #052d1c;
  background: #7ee2a8;
}

.preflight-badge[data-state='warn'] {
  color: #3d2600;
  background: #ffc75f;
}

.preflight-badge[data-state='bad'] {
  color: #3b000b;
  background: #ff6b88;
}

.preflight-badge[data-state='info'] {
  color: #001f35;
  background: #7bc4ff;
}

.preflight-json {
  max-height: min(60vh, 520px);
  overflow: auto;
}

.content-grid > article.panel[data-widget-type='ai-workbench'] {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
}

.ai-workbench-root {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  min-height: 0;
  height: auto;
  max-height: 100%;
  overflow: hidden;
}

.aiw-shell {
  display: grid;
  flex: 1 1 0;
  grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
  gap: 8px;
  min-height: 0;
  height: auto;
  overflow: hidden;
}

.aiw-shell.aiw-sidebar-collapsed {
  grid-template-columns: var(--edgex-side-rail-width, 32px) minmax(0, 1fr);
}

.aiw-sidebar,
.aiw-main {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 92%, var(--bg) 8%);
}

.aiw-sidebar {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 8px;
}

.aiw-sidebar-rail {
  flex: 1 1 auto;
}

.aiw-shell.aiw-sidebar-collapsed .aiw-sidebar {
  gap: 0;
  padding: 0;
}

.aiw-shell.aiw-sidebar-collapsed .aiw-sidebar > :not(.aiw-sidebar-rail) {
  display: none !important;
}

.aiw-shell.aiw-sidebar-collapsed .aiw-sidebar-rail {
  display: flex;
}

.aiw-side-head,
.aiw-export-actions,
.aiw-composer-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.aiw-session-list {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  gap: 5px;
  overflow: auto;
}

.aiw-session {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2px;
  width: 100%;
  min-height: 42px;
  padding: 7px 8px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 65%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}

.aiw-session.is-active {
  border-color: color-mix(in oklab, var(--accent, #7bc4ff) 70%, var(--border, #2a2f42) 30%);
  background: color-mix(in oklab, var(--accent, #7bc4ff) 12%, var(--panel-bg) 88%);
}

.aiw-session span,
.aiw-session small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aiw-session span {
  font-size: 0.78rem;
  font-weight: 800;
}

.aiw-session small {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  text-transform: uppercase;
}

.aiw-main {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: 8px;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding: 8px;
}

.aiw-workbench-bar {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.aiw-view-tabs {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.aiw-view-tabs button.is-active {
  border-color: color-mix(in oklab, var(--accent, #7bc4ff) 70%, transparent);
  background: color-mix(in oklab, var(--accent, #7bc4ff) 16%, transparent);
  color: var(--text);
}

.aiw-view {
  min-width: 0;
  min-height: 0;
}

.aiw-view[hidden] {
  display: none;
}

.aiw-chat-view {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 8px;
  min-height: 0;
}

.aiw-settings-view {
  overflow: auto;
}

.aiw-workbench-title {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.aiw-workbench-title strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-size: 0.84rem;
  font-weight: 850;
}

.aiw-settings-panel {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
  align-items: start;
  max-height: none;
  overflow: auto;
  padding: 10px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 62%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--bg) 68%, var(--panel-bg) 32%);
}

.aiw-settings-panel[hidden],
.aiw-api-panel[hidden] {
  display: none;
}

.aiw-settings-topline {
  display: flex;
  grid-column: 1 / -1;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.aiw-settings-topline span {
  min-width: 0;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aiw-settings-panel label,
.aiw-api-panel label {
  display: grid;
  min-width: 0;
  gap: 3px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

.aiw-settings-panel input,
.aiw-settings-panel select,
.aiw-api-panel input,
.aiw-api-panel select,
.aiw-api-panel textarea,
.aiw-composer textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 75%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--bg) 78%, var(--panel-bg) 22%);
  color: var(--text);
}

.aiw-settings-panel input,
.aiw-settings-panel select,
.aiw-api-panel select {
  height: 30px;
  padding: 0 8px;
  font-size: 0.76rem;
}

.aiw-settings-panel label.aiw-source-toggle {
  display: flex;
  align-items: center;
  min-height: 32px;
  gap: 8px;
  align-self: end;
  color: var(--text);
  font-size: 0.76rem;
  font-weight: 800;
  line-height: 1.2;
  text-transform: none;
  white-space: nowrap;
}

.aiw-settings-panel label.aiw-source-toggle input {
  width: 18px;
  min-width: 18px;
  height: 18px;
  padding: 0;
  accent-color: var(--accent, #7bc4ff);
}

.aiw-api-panel {
  display: grid;
  gap: 8px;
  min-width: 0;
  max-height: 34%;
  overflow: auto;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 62%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--bg) 68%, var(--panel-bg) 32%);
}

.aiw-api-controls {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto auto;
  gap: 8px;
  align-items: end;
}

.aiw-api-dry-run input {
  width: 18px;
  height: 18px;
  min-width: 18px;
}

.aiw-api-tool-meta {
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  gap: 6px;
}

.aiw-api-tool-meta span {
  min-width: 0;
  padding: 2px 6px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  border-radius: 999px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 900;
  text-transform: uppercase;
  overflow-wrap: anywhere;
}

.aiw-api-json-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.aiw-api-json-grid textarea {
  min-height: 70px;
  max-height: 150px;
  padding: 7px;
  resize: vertical;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  line-height: 1.35;
}

.aiw-api-result {
  max-height: 180px;
  min-height: 0;
  margin: 0;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  line-height: 1.42;
}

.aiw-key-status {
  grid-column: 1 / -1;
  min-width: 0;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.aiw-settings-actions {
  display: flex;
  grid-column: 1 / -1;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 6px;
  padding-top: 2px;
}

.aiw-key-control {
  display: grid;
  position: relative;
  min-width: 0;
}

.aiw-key-control input {
  padding-right: 34px;
}

.aiw-key-toggle {
  position: absolute;
  right: 3px;
  top: 3px;
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
}

.aiw-key-toggle:hover,
.aiw-key-toggle.is-active {
  border-color: color-mix(in oklab, var(--accent, #7bc4ff) 48%, transparent);
  background: color-mix(in oklab, var(--accent, #7bc4ff) 10%, transparent);
  color: var(--text);
}

.aiw-key-toggle svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.aiw-transcript {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--accent) 65%, var(--input-border) 35%) color-mix(in oklab, var(--bg) 72%, black 28%);
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 60%, transparent);
  border-radius: 5px;
  padding: 8px;
  background: color-mix(in oklab, var(--bg) 74%, var(--panel-bg) 26%);
}

.aiw-transcript::-webkit-scrollbar {
  width: 12px;
}

.aiw-transcript::-webkit-scrollbar-track {
  background: color-mix(in oklab, var(--bg) 72%, black 28%);
}

.aiw-transcript::-webkit-scrollbar-thumb {
  border: 2px solid color-mix(in oklab, var(--bg) 72%, black 28%);
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent) 55%, var(--input-border) 45%);
}

.aiw-transcript::-webkit-scrollbar-thumb:hover {
  background: color-mix(in oklab, var(--accent) 72%, var(--input-border) 28%);
}

.aiw-message {
  display: grid;
  gap: 5px;
  margin-bottom: 8px;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel-bg) 90%, var(--bg) 10%);
}

.aiw-message-user {
  width: min(88%, 820px);
  margin-left: auto;
  border-color: color-mix(in oklab, var(--accent, #7bc4ff) 46%, var(--border, #2a2f42) 54%);
  background: color-mix(in oklab, var(--accent, #7bc4ff) 12%, var(--panel-bg) 88%);
}

.aiw-message-assistant {
  width: 100%;
  box-sizing: border-box;
  margin-right: auto;
  border-left: 3px solid color-mix(in oklab, #7ee2a8 62%, var(--border, #2a2f42) 38%);
  background: color-mix(in oklab, var(--panel-bg) 88%, var(--bg) 12%);
}

.aiw-message-user .aiw-message-meta {
  justify-content: flex-end;
}

.aiw-message-user .aiw-message-body {
  text-align: right;
}

.aiw-message-meta {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 7px;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  text-transform: uppercase;
}

.aiw-message-meta strong {
  color: var(--text);
}

.aiw-message-meta span,
.aiw-message-meta em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aiw-message pre {
  margin: 0;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  color: var(--text);
  font-family: inherit;
  font-size: 0.74rem;
  line-height: 1.45;
}

.aiw-message-body,
.aiw-markdown {
  min-width: 0;
}

.aiw-markdown {
  display: grid;
  gap: 7px;
  color: var(--text);
  font-size: 0.74rem;
  line-height: 1.45;
}

.aiw-markdown :is(h3, h4, h5, h6, p, ul, ol) {
  margin: 0;
}

.aiw-markdown :is(h3, h4, h5, h6) {
  color: var(--text);
  font-size: 0.78rem;
  font-weight: 850;
  line-height: 1.25;
}

.aiw-markdown ul,
.aiw-markdown ol {
  display: grid;
  gap: 3px;
  padding-left: 18px;
}

.aiw-markdown li {
  min-width: 0;
}

.aiw-markdown code {
  padding: 1px 4px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 48%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--bg) 80%, var(--panel-bg) 20%);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.68rem;
}

.aiw-markdown-code {
  max-height: 220px;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  border-radius: 5px;
  background: color-mix(in oklab, var(--bg) 82%, var(--panel-bg) 18%);
}

.aiw-markdown-code code {
  padding: 0;
  border: 0;
  background: transparent;
}

.aiw-markdown hr {
  width: 100%;
  height: 1px;
  margin: 2px 0;
  border: 0;
  background: color-mix(in oklab, var(--border, #2a2f42) 70%, transparent);
}

.aiw-markdown a {
  color: var(--accent, #7bc4ff);
  text-decoration: none;
}

.aiw-markdown a:hover {
  text-decoration: underline;
}

.aiw-markdown-table-wrap {
  min-width: 0;
  overflow-x: auto;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  border-radius: 5px;
}

.aiw-markdown table {
  width: 100%;
  min-width: 520px;
  border-collapse: collapse;
  background: color-mix(in oklab, var(--bg) 74%, var(--panel-bg) 26%);
}

.aiw-markdown th,
.aiw-markdown td {
  padding: 6px 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--border, #2a2f42) 52%, transparent);
  border-right: 1px solid color-mix(in oklab, var(--border, #2a2f42) 38%, transparent);
  color: var(--text);
  text-align: left;
  vertical-align: top;
  overflow-wrap: anywhere;
}

.aiw-markdown th:last-child,
.aiw-markdown td:last-child {
  border-right: 0;
}

.aiw-markdown tbody tr:last-child td {
  border-bottom: 0;
}

.aiw-markdown th {
  background: color-mix(in oklab, var(--panel-bg) 78%, var(--bg) 22%);
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

.aiw-markdown .aiw-align-center {
  text-align: center;
}

.aiw-markdown .aiw-align-right {
  text-align: right;
}

.aiw-proposal-stack {
  display: grid;
  gap: 7px;
  margin-top: 3px;
}

.aiw-proposal-card {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 8px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  border-left: 3px solid color-mix(in oklab, var(--accent, #7bc4ff) 78%, var(--border, #2a2f42) 22%);
  border-radius: 5px;
  background: color-mix(in oklab, var(--bg) 62%, var(--panel-bg) 38%);
}

.aiw-proposal-card[data-aiw-proposal-status='completed'] {
  border-left-color: #7ee2a8;
}

.aiw-proposal-card[data-aiw-proposal-status='failed'] {
  border-left-color: #ff6b88;
}

.aiw-proposal-card[data-aiw-proposal-status='planned'] {
  border-left-color: #ffc75f;
}

.aiw-proposal-head,
.aiw-proposal-actions {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.aiw-proposal-head > div {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.aiw-proposal-head strong,
.aiw-proposal-head small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aiw-proposal-head strong {
  color: var(--text);
  font-size: 0.78rem;
  font-weight: 850;
}

.aiw-proposal-head small {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.64rem;
}

.aiw-proposal-head > span {
  flex: 0 0 auto;
  padding: 2px 6px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent, #7bc4ff) 13%, var(--panel-bg) 87%);
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.58rem;
  font-weight: 900;
  text-transform: uppercase;
}

.aiw-proposal-card p {
  margin: 0;
  color: color-mix(in oklab, var(--text) 86%, var(--muted) 14%);
  font-size: 0.72rem;
  line-height: 1.35;
}

.aiw-proposal-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
  margin: 0;
}

.aiw-proposal-facts div {
  display: grid;
  min-width: 0;
  gap: 1px;
  padding: 5px 6px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 58%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 70%, var(--bg) 30%);
}

.aiw-proposal-facts dt,
.aiw-proposal-facts dd {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aiw-proposal-facts dt {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.55rem;
  font-weight: 900;
  text-transform: uppercase;
}

.aiw-proposal-facts dd {
  color: var(--text);
  font-size: 0.68rem;
  font-weight: 750;
}

.aiw-planned-request,
.aiw-tool-result {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 7px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 56%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--bg) 80%, var(--panel-bg) 20%);
}

.aiw-planned-request code,
.aiw-tool-result strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.66rem;
}

.aiw-planned-request pre,
.aiw-tool-result pre {
  max-height: 180px;
  margin: 0;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  line-height: 1.42;
}

.aiw-proposal-error {
  padding: 6px 7px;
  border: 1px solid color-mix(in oklab, #ff6b88 58%, var(--border, #2a2f42) 42%);
  border-radius: 4px;
  background: color-mix(in oklab, #ff6b88 13%, var(--bg) 87%);
  color: color-mix(in oklab, #ff6b88 82%, var(--text) 18%);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  overflow-wrap: anywhere;
}

.aiw-proposal-actions {
  justify-content: flex-end;
  flex-wrap: wrap;
}

.aiw-composer {
  display: grid;
  flex: 0 0 auto;
  gap: 6px;
  min-height: 0;
}

.aiw-composer textarea {
  min-height: 64px;
  max-height: 160px;
  padding: 8px;
  resize: none;
  font-family: inherit;
  font-size: 0.82rem;
  line-height: 1.35;
}

.aiw-composer.is-busy textarea {
  border-color: color-mix(in oklab, var(--accent, #7bc4ff) 54%, var(--border, #2a2f42) 46%);
  background: color-mix(in oklab, var(--accent, #7bc4ff) 7%, var(--bg) 93%);
}

.aiw-composer.is-busy textarea::placeholder {
  color: color-mix(in oklab, var(--text) 74%, var(--muted) 26%);
  opacity: 1;
}

.aiw-composer.is-busy [data-aiw-send]:disabled {
  border-color: color-mix(in oklab, var(--border, #2a2f42) 72%, transparent);
  background: color-mix(in oklab, var(--panel-bg) 78%, var(--bg) 22%);
  color: var(--muted);
  opacity: 1;
}

.aiw-composer-actions {
  justify-content: space-between;
}

.aiw-path-note,
.aiw-empty {
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  text-transform: uppercase;
}

.aiw-path-note {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.25;
  text-transform: none;
  white-space: normal;
}

@media (max-width: 900px) {
  .aiw-shell {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(110px, 180px) minmax(0, 1fr);
  }

  .aiw-sidebar {
    max-height: none;
  }

  .aiw-workbench-bar {
    align-items: flex-start;
    flex-direction: column;
  }

  .aiw-settings-panel {
    grid-template-columns: 1fr;
  }

  .aiw-api-controls,
  .aiw-api-json-grid {
    grid-template-columns: 1fr;
  }

  .aiw-proposal-facts {
    grid-template-columns: 1fr;
  }
}

article.panel[data-panel-id='realtime-factor-monitor'] {
  display: flex;
  flex-direction: column;
  min-height: 520px;
}

.rt-factor-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
}

.rt-factor-status {
  min-width: 92px;
  text-align: right;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.rt-factor-replay-clock {
  min-width: 210px;
  text-align: right;
  color: var(--warning, #ffd84d);
  font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 700;
}

.rt-factor-status[data-status='ok'] {
  color: var(--success, #8cffc5);
}

.rt-factor-status[data-status='warn'] {
  color: var(--warning, #ffd84d);
}

.rt-factor-status[data-status='bad'] {
  color: var(--danger, #ff6b88);
}

.rt-factor-root {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
}

.rt-factor-controls {
  display: grid;
  grid-template-columns: repeat(3, minmax(120px, 1fr));
  gap: 7px;
  min-width: 0;
  align-items: end;
}

article.panel[data-panel-id='realtime-factor-monitor'] .rt-factor-advanced-filter {
  display: none;
}

.rt-factor-controls label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: var(--muted, #a6adc4);
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
}

.rt-factor-controls .fmp-input {
  width: 100%;
  min-width: 0;
  height: 32px;
  padding-top: 0.34rem;
  padding-bottom: 0.34rem;
  font-family: var(--font-mono);
  font-size: 0.74rem;
}

.rt-factor-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 6px;
  min-width: 0;
}

.rt-factor-metrics > div {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid color-mix(in oklab, var(--panel-border, var(--border)) 70%, transparent);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg) 74%, var(--bg) 26%);
}

.rt-factor-metrics span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--muted, #a6adc4);
  font-size: 0.62rem;
  font-weight: 850;
  text-transform: uppercase;
  white-space: nowrap;
}

.rt-factor-metrics strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--text, #eef1fa);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 850;
  white-space: nowrap;
}

.rt-factor-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 150px) minmax(160px, 1fr);
  gap: 8px;
  min-width: 0;
  min-height: 0;
}

.has-symbol-values .rt-factor-grid {
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 190px) minmax(160px, 1fr);
}

.symbol-matrix-expanded .rt-factor-grid {
  --rt-symbol-matrix-height: 330px;
}

.symbol-matrix-resized .rt-factor-grid {
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 260px) minmax(150px, 1fr);
}

.rt-factor-chart-pane,
.rt-factor-latest-pane,
.rt-factor-status-pane,
.rt-factor-symbol-pane {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
}

.rt-factor-latest-pane {
  grid-row: 1;
}

.rt-factor-chart-pane {
  grid-row: 3;
}

.rt-factor-symbol-pane {
  grid-row: 2;
}

.rt-factor-symbol-pane[hidden],
.rt-factor-status-pane[hidden] {
  display: none;
}

.rt-factor-chart {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 160px;
}

.rt-factor-horizon-cursor {
  position: absolute;
  inset: 0;
  z-index: 6;
  pointer-events: none;
  opacity: 0;
}

.rt-factor-horizon-cursor.is-active {
  opacity: 1;
}

.rt-factor-horizon-cursor-line {
  position: absolute;
  width: 1px;
  min-height: 12px;
  transform: translateX(-0.5px);
  background: var(--rt-horizon-cursor-color, #f7d774);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--rt-horizon-cursor-color, #f7d774) 22%, transparent);
}

.rt-factor-horizon-cursor-values {
  position: absolute;
  inset: 0;
}

.rt-factor-horizon-cursor-label,
.rt-factor-horizon-cursor-time {
  position: absolute;
  min-width: 48px;
  padding: 1px 4px;
  border: 1px solid color-mix(in oklab, var(--rt-horizon-cursor-color, #f7d774) 42%, var(--panel-border, #2a2f42) 58%);
  border-radius: 0;
  background: color-mix(in oklab, var(--bg, #060910) 78%, transparent);
  color: var(--text, #eef1fa);
  font-family: var(--font-mono);
  font-size: 0.63rem;
  font-weight: 900;
  line-height: 1.1;
  text-align: right;
  white-space: nowrap;
}

.rt-factor-horizon-cursor-label {
  transform: translateY(-50%);
}

.rt-factor-horizon-cursor-time {
  min-width: 68px;
  color: var(--rt-horizon-cursor-color, #f7d774);
}

.rt-factor-horizon-cursor-label.is-left,
.rt-factor-horizon-cursor-time.is-left {
  transform: translate(-100%, -50%);
}

.rt-factor-horizon-cursor-time.is-left {
  transform: translate(-100%, 0);
}

.rt-factor-horizon-cursor-time.is-right {
  transform: translate(0, 0);
}

.rt-factor-horizon-cursor-label[data-tone='positive'] {
  border-color: color-mix(in oklab, var(--rt-horizon-positive-color, #68b7ff) 46%, var(--panel-border, #2a2f42) 54%);
  color: color-mix(in oklab, var(--rt-horizon-positive-color, #68b7ff) 86%, white 14%);
}

.rt-factor-horizon-cursor-label[data-tone='negative'] {
  border-color: color-mix(in oklab, var(--rt-horizon-negative-color, #b88cff) 50%, var(--panel-border, #2a2f42) 50%);
  color: color-mix(in oklab, var(--rt-horizon-negative-color, #b88cff) 86%, white 14%);
}

.rt-factor-horizon-cursor-dot {
  position: absolute;
  width: 5px;
  height: 5px;
  transform: translate(-50%, -50%);
  border: 1px solid color-mix(in oklab, var(--bg, #060910) 72%, transparent);
  border-radius: 0;
  background: var(--rt-horizon-cursor-color, #f7d774);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--rt-horizon-cursor-color, #f7d774) 36%, transparent);
}

.rt-factor-horizon-cursor-dot[data-tone='positive'] {
  background: var(--rt-horizon-positive-color, #68b7ff);
}

.rt-factor-horizon-cursor-dot[data-tone='negative'] {
  background: var(--rt-horizon-negative-color, #b88cff);
}

.rt-factor-chart-head {
  gap: 8px;
}

.rt-factor-chart-tools {
  display: flex;
  align-items: end;
  gap: 6px;
  margin-left: auto;
  min-width: 0;
}

.rt-factor-chart-tools label {
  display: grid;
  gap: 2px;
  min-width: 0;
  color: var(--muted, #a6adc4);
  font-size: 0.58rem;
  font-weight: 850;
  line-height: 1;
  text-transform: uppercase;
}

.rt-factor-chart-tools .fmp-input {
  width: 118px;
  height: 24px;
  padding: 2px 6px;
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
}

.symbol-matrix-expanded .rt-factor-chart,
.symbol-matrix-resized .rt-factor-chart {
  min-height: 0;
}

.rt-factor-table-scroll {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
}

.rt-factor-table {
  width: 100%;
  min-width: 1360px;
}

.rt-factor-table th,
.rt-factor-table td {
  white-space: nowrap;
}

.rt-factor-table th[data-rt-sort] {
  cursor: pointer;
  user-select: none;
}

.rt-factor-table th[data-rt-sort]:hover {
  color: var(--accent);
}

.rt-factor-table th.sig-sort-asc::after {
  content: ' ↑';
  color: var(--accent);
}

.rt-factor-table th.sig-sort-desc::after {
  content: ' ↓';
  color: var(--accent);
}

.rt-factor-table tbody tr.is-selected > td {
  background: color-mix(in oklab, var(--accent) 10%, transparent);
}

.rt-factor-table tbody tr.is-active > td:first-child,
.rt-factor-table tbody tr.is-active > td:nth-child(2) {
  box-shadow: inset 3px 0 0 var(--accent);
}

.rt-factor-id-cell {
  cursor: pointer;
  font-weight: 850;
}

.rt-factor-symbol-table {
  width: max-content;
  min-width: 100%;
}

.rt-factor-symbol-table th,
.rt-factor-symbol-table td {
  min-width: 92px;
}

.rt-factor-symbol-cell {
  color: var(--accent, #7eb8f7);
  font-family: var(--font-mono);
  font-weight: 900;
}

.rt-factor-symbol-cell.rt-factor-symbol-sticky {
  display: flex;
  align-items: center;
  gap: 6px;
}

.rt-factor-symbol-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rt-factor-symbol-remove {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-left: auto;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--danger, #ff6b88) 46%, var(--input-border, var(--border)) 54%);
  border-radius: 2px;
  background: color-mix(in oklab, var(--danger, #ff6b88) 7%, transparent);
  color: color-mix(in oklab, var(--danger, #ff6b88) 82%, var(--text, #eef1fa) 18%);
  cursor: pointer;
  opacity: 0.78;
}

.rt-factor-symbol-remove:hover,
.rt-factor-symbol-remove:focus-visible {
  border-color: var(--danger, #ff6b88);
  background: color-mix(in oklab, var(--danger, #ff6b88) 16%, transparent);
  opacity: 1;
  outline: none;
}

.rt-factor-symbol-remove svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.rt-factor-symbol-sticky {
  position: sticky;
  left: 0;
  z-index: 2;
  min-width: 136px;
  background: color-mix(in oklab, var(--panel-bg, #101620) 88%, var(--bg, #060910) 12%);
}

thead .rt-factor-symbol-sticky {
  z-index: 4;
}

.rt-factor-projection-factor-head {
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rt-factor-projection-cell {
  min-width: 96px;
}

.rt-factor-symbol-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.rt-factor-symbol-title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.rt-factor-symbol-title em {
  color: var(--muted, #a6adc4);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-style: normal;
  font-weight: 800;
}

.rt-factor-symbol-tools {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  min-width: 0;
}

.rt-factor-symbol-entry-row > td {
  position: sticky;
  bottom: 0;
  z-index: 5;
  background: color-mix(in oklab, var(--bg, #060910) 78%, var(--panel-bg, #101620) 22%);
  box-shadow: 0 -1px 0 color-mix(in oklab, var(--accent, #7eb8f7) 22%, transparent);
}

.rt-factor-symbol-entry-row .rt-factor-symbol-sticky {
  z-index: 6;
  min-width: 156px;
  background: color-mix(in oklab, var(--bg, #060910) 78%, var(--panel-bg, #101620) 22%);
}

.rt-factor-symbol-entry-input {
  box-sizing: border-box;
  width: 100%;
  min-width: 92px;
  height: 28px;
  padding: 3px 8px;
  border-color: color-mix(in oklab, var(--accent) 30%, var(--input-border, var(--border)) 70%);
  background: color-mix(in oklab, var(--input-bg, #101722) 92%, var(--bg, #060910) 8%);
  color: var(--text, #eef1fa);
  caret-color: var(--accent, #7eb8f7);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 900;
  text-transform: uppercase;
  -webkit-text-fill-color: var(--text, #eef1fa);
}

.rt-factor-symbol-entry-input:focus {
  border-color: color-mix(in oklab, var(--accent, #7eb8f7) 82%, white 18%);
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent, #7eb8f7) 18%, transparent);
  outline: none;
}

.rt-factor-symbol-entry-input::placeholder {
  color: color-mix(in oklab, var(--muted, #a6adc4) 72%, transparent);
  opacity: 1;
}

.rt-factor-symbol-entry-pad {
  min-width: 120px;
}

.rt-factor-pane-resize {
  position: relative;
  flex: 0 0 8px;
  height: 8px;
  margin: 0 3px 2px;
  border-top: 1px solid color-mix(in oklab, var(--accent, #7eb8f7) 34%, transparent);
  cursor: ns-resize;
  touch-action: none;
}

.rt-factor-pane-resize::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 2px;
  width: 80px;
  max-width: 34%;
  height: 2px;
  transform: translateX(-50%);
  border-radius: 0;
  background: color-mix(in oklab, var(--accent, #7eb8f7) 64%, transparent);
  opacity: 0.6;
}

.rt-factor-pane-resize:hover,
.is-factor-pane-resizing .rt-factor-pane-resize {
  border-top-color: var(--accent, #7eb8f7);
  background: color-mix(in oklab, var(--accent, #7eb8f7) 8%, transparent);
}

.is-factor-pane-resizing {
  user-select: none;
}

.rt-factor-check-cell {
  width: 42px;
  min-width: 42px;
  text-align: center;
}

.rt-factor-check-cell input[type='checkbox'],
.rt-factor-table thead input[data-rt-factor-select-all] {
  appearance: none;
  display: inline-grid;
  place-content: center;
  width: 18px;
  height: 18px;
  min-width: 18px;
  min-height: 18px;
  margin: 0;
  border: 2px solid color-mix(in oklab, var(--accent) 72%, var(--panel-border, var(--border)) 28%);
  border-radius: 4px;
  background: color-mix(in oklab, var(--panel-bg, var(--surface)) 88%, transparent);
  cursor: pointer;
}

.rt-factor-check-cell input[type='checkbox']::before,
.rt-factor-table thead input[data-rt-factor-select-all]::before {
  content: "";
  width: 10px;
  height: 10px;
  transform: scale(0);
  transition: transform .08s ease-in-out;
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 16%, 84% 4%, 35% 66%);
  background: #050505;
}

.rt-factor-check-cell input[type='checkbox']:checked,
.rt-factor-table thead input[data-rt-factor-select-all]:checked {
  background: var(--accent);
  border-color: var(--accent);
}

.rt-factor-check-cell input[type='checkbox']:checked::before,
.rt-factor-table thead input[data-rt-factor-select-all]:checked::before {
  transform: scale(1);
}

.rt-factor-check-cell input[type='checkbox']:indeterminate,
.rt-factor-table thead input[data-rt-factor-select-all]:indeterminate {
  background: color-mix(in oklab, var(--accent) 55%, var(--panel-bg, var(--surface)) 45%);
  border-color: var(--accent);
}

.rt-factor-check-cell input[type='checkbox']:indeterminate::before,
.rt-factor-table thead input[data-rt-factor-select-all]:indeterminate::before {
  width: 10px;
  height: 2px;
  clip-path: none;
  transform: scale(1);
  background: var(--bg, #050505);
}

.rt-factor-num {
  font-family: var(--font-mono);
  text-align: right;
}

.rt-factor-heat {
  background:
    linear-gradient(90deg, var(--rt-heat-bg, transparent) 0 var(--rt-heat-fill, 100%), transparent var(--rt-heat-fill, 100%) 100%);
  box-shadow: inset 0 0 0 1px var(--rt-heat-border, transparent);
}

.rt-factor-table tbody tr.is-selected > td.rt-factor-heat {
  background:
    linear-gradient(90deg, var(--rt-heat-bg, transparent) 0 var(--rt-heat-fill, 100%), transparent var(--rt-heat-fill, 100%) 100%),
    color-mix(in oklab, var(--accent) 10%, transparent);
}

.rt-factor-table tbody tr:hover > td.rt-factor-heat {
  box-shadow:
    inset 0 0 0 1px var(--rt-heat-border, transparent),
    inset 0 0 0 999px color-mix(in oklab, var(--text) 3%, transparent);
}

.rt-factor-heat .rt-factor-pill {
  background: color-mix(in oklab, var(--panel-bg, #101620) 72%, transparent);
}

.rt-factor-pill {
  display: inline-flex;
  align-items: center;
  min-height: 18px;
  padding: 1px 6px;
  border: 1px solid color-mix(in oklab, var(--border, #2a2f42) 82%, transparent);
  border-radius: 2px;
  color: var(--text, #eef1fa);
  font-family: var(--font-mono);
  font-size: 0.66rem;
  font-weight: 800;
}

.rt-factor-pill[data-tone='ok'] {
  border-color: color-mix(in oklab, var(--success, #8cffc5) 58%, var(--border, #2a2f42) 42%);
  color: var(--success, #8cffc5);
}

.rt-factor-pill[data-tone='warn'] {
  border-color: color-mix(in oklab, var(--warning, #ffd84d) 58%, var(--border, #2a2f42) 42%);
  color: var(--warning, #ffd84d);
}

.rt-factor-pill[data-tone='bad'] {
  border-color: color-mix(in oklab, var(--danger, #ff6b88) 58%, var(--border, #2a2f42) 42%);
  color: var(--danger, #ff6b88);
}

body.layout-engine-dockview-active article.panel[data-panel-id='realtime-factor-monitor'][data-panel-dockview-mounted='true'] {
  display: flex;
  flex-direction: column;
}

body.layout-engine-dockview-active article.panel[data-panel-id='realtime-factor-monitor'][data-panel-dockview-mounted='true'] .rt-factor-root {
  flex: 1 1 auto;
  min-height: 0;
}

body.layout-engine-dockview-active article.panel[data-panel-id='realtime-factor-monitor'][data-panel-dockview-mounted='true'] .rt-factor-chart {
  min-height: 0;
  height: 100%;
}

@media (max-width: 1200px) {
  .rt-factor-controls {
    grid-template-columns: repeat(3, minmax(120px, 1fr));
  }

  .rt-factor-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .rt-factor-grid {
    grid-template-columns: 1fr;
    grid-template-rows: var(--rt-live-factors-height, 290px) var(--rt-symbol-matrix-height, 140px) minmax(150px, 1fr);
  }

  .has-symbol-values .rt-factor-grid {
    grid-template-rows: var(--rt-live-factors-height, 290px) var(--rt-symbol-matrix-height, 180px) minmax(150px, 1fr);
  }

  .symbol-matrix-expanded .rt-factor-grid {
    --rt-symbol-matrix-height: 320px;
  }

  .symbol-matrix-resized .rt-factor-grid {
    grid-template-rows: var(--rt-live-factors-height, 290px) var(--rt-symbol-matrix-height, 260px) minmax(140px, 1fr);
  }

  .rt-factor-chart-pane,
  .rt-factor-symbol-pane {
    grid-row: auto;
  }
}

@media (max-width: 720px) {
  .rt-factor-controls,
  .rt-factor-metrics {
    grid-template-columns: 1fr;
  }

  .rt-factor-chart-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .rt-factor-chart-tools {
    width: 100%;
    margin-left: 0;
  }

  .rt-factor-chart-tools label {
    flex: 1 1 0;
  }

  .rt-factor-chart-tools .fmp-input {
    width: 100%;
  }

  .rt-factor-toolbar {
    justify-content: flex-start;
  }

  .rt-factor-status {
    flex: 1 1 100%;
    text-align: left;
  }
}

body.rt-factor-demo-page {
  min-height: 100vh;
  overflow: hidden;
  background:
    linear-gradient(180deg, #07090d 0%, #0a0d12 55%, #080a0d 100%);
  color: var(--text, #eef1fa);
}

.rt-factor-demo-page #backdrop,
.rt-factor-demo-page .app-shell {
  display: none;
}

.rt-factor-demo-shell {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: 14px;
  width: min(100vw, 1920px);
  height: 100vh;
  min-width: 0;
  min-height: 0;
  margin: 0 auto;
  padding: 24px 28px 26px;
  background:
    linear-gradient(90deg, rgba(126, 184, 247, 0.08), transparent 44%),
    linear-gradient(180deg, rgba(247, 199, 126, 0.06), transparent 38%);
}

.rt-factor-demo-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  min-width: 0;
}

.rt-factor-demo-title {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.rt-factor-demo-title .eyebrow {
  margin: 0;
  color: #88d8ff;
  letter-spacing: 0;
}

.rt-factor-demo-title h1 {
  margin: 0;
  color: #f6f8ff;
  font-size: 4.4rem;
  line-height: 0.95;
  letter-spacing: 0;
}

.rt-factor-demo-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  color: #c7cfdf;
  font-family: var(--font-mono);
  font-size: 0.78rem;
}

.rt-factor-demo-tags span,
.rt-factor-demo-clock {
  border: 1px solid rgba(199, 207, 223, 0.2);
  background: rgba(14, 18, 25, 0.72);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.26);
}

.rt-factor-demo-tags span {
  padding: 5px 9px;
  border-radius: 4px;
}

.rt-factor-demo-clock {
  display: grid;
  justify-items: end;
  gap: 6px;
  min-width: 210px;
  padding: 12px 14px;
  border-radius: 6px;
}

.rt-factor-demo-clock .rt-factor-status {
  min-width: 0;
  text-align: right;
}

.rt-factor-demo-clock strong {
  color: #f7c77e;
  font-family: var(--font-mono);
  font-size: 1.22rem;
  font-weight: 750;
}

.rt-factor-demo-scoreboard {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) repeat(5, minmax(0, 0.8fr));
  gap: 10px;
  min-width: 0;
}

.rt-factor-demo-scoreboard > div {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid rgba(199, 207, 223, 0.18);
  border-radius: 6px;
  background: rgba(13, 17, 24, 0.78);
}

.rt-factor-demo-scoreboard span {
  overflow: hidden;
  color: #91a0b8;
  font-size: 0.72rem;
  font-weight: 850;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.rt-factor-demo-scoreboard strong {
  overflow: hidden;
  color: #f6f8ff;
  font-family: var(--font-mono);
  font-size: 2rem;
  font-weight: 760;
  line-height: 1.04;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.rt-factor-demo-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 130px) minmax(0, 1fr);
  gap: 12px;
  min-width: 0;
  min-height: 0;
}

.has-symbol-values .rt-factor-demo-grid {
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 170px) minmax(0, 1fr);
}

.symbol-matrix-expanded .rt-factor-demo-grid {
  --rt-symbol-matrix-height: 330px;
}

.symbol-matrix-resized .rt-factor-demo-grid {
  grid-template-rows: var(--rt-live-factors-height, 300px) var(--rt-symbol-matrix-height, 240px) minmax(0, 1fr);
}

.rt-factor-demo-chart-pane,
.rt-factor-demo-latest-pane,
.rt-factor-demo-status-pane,
.rt-factor-demo-symbol-pane {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  border-color: rgba(199, 207, 223, 0.18);
  background: rgba(12, 15, 21, 0.82);
}

.rt-factor-demo-chart-pane {
  grid-row: 3;
}

.rt-factor-demo-latest-pane {
  grid-row: 1;
}

.rt-factor-demo-symbol-pane {
  grid-row: 2;
}

.rt-factor-demo-symbol-pane[hidden] {
  display: none;
}

.rt-factor-demo-status-pane {
  display: none;
}

.rt-factor-demo-chart-pane .sig-pane-head,
.rt-factor-demo-latest-pane .sig-pane-head,
.rt-factor-demo-status-pane .sig-pane-head,
.rt-factor-demo-symbol-pane .sig-pane-head {
  min-height: 34px;
  color: #cbd5e6;
}

.rt-factor-demo-chart-pane .rt-factor-chart {
  min-height: 0;
  height: 100%;
}

.rt-factor-demo-latest-pane .rt-factor-table {
  min-width: 1360px;
}

.rt-factor-demo-status-pane .rt-factor-table {
  min-width: 560px;
}

.rt-factor-demo-latest-pane .rt-factor-table th,
.rt-factor-demo-latest-pane .rt-factor-table td,
.rt-factor-demo-status-pane .rt-factor-table th,
.rt-factor-demo-status-pane .rt-factor-table td,
.rt-factor-demo-symbol-pane .rt-factor-table th,
.rt-factor-demo-symbol-pane .rt-factor-table td {
  font-size: 0.72rem;
}

.rt-factor-demo-hidden-controls,
.rt-factor-demo-hidden-status {
  display: none;
}

@media (max-width: 1100px) {
  body.rt-factor-demo-page {
    overflow: auto;
  }

  .rt-factor-demo-shell {
    height: auto;
    min-height: 100vh;
    padding: 18px;
  }

  .rt-factor-demo-header {
    flex-direction: column;
  }

  .rt-factor-demo-clock {
    justify-items: start;
    width: 100%;
  }

  .rt-factor-demo-scoreboard,
  .rt-factor-demo-grid {
    grid-template-columns: 1fr;
  }

  .rt-factor-demo-grid,
  .has-symbol-values .rt-factor-demo-grid,
  .symbol-matrix-expanded .rt-factor-demo-grid,
  .symbol-matrix-resized .rt-factor-demo-grid {
    grid-template-rows: auto auto minmax(360px, auto);
  }

  .rt-factor-demo-title h1 {
    font-size: 2.6rem;
  }

  .rt-factor-demo-scoreboard strong {
    font-size: 1.36rem;
  }

  .rt-factor-demo-chart-pane .rt-factor-chart {
    min-height: 430px;
  }
}
