:root{--bg:#f6f7f9;--panel:#fff;--text:#1f2933;--muted:#6b7280;--border:#e2e5ea;--accent:#2563eb;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:var(--accent)}.header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.75rem 1.5rem;display:flex}.header h1{margin:0;font-size:1.1rem}.header nav a{margin-right:1rem}.spacer{flex:1}.badge{border:1px solid var(--border);background:var(--bg);border-radius:999px;padding:.15rem .6rem;font-size:.8rem}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.degraded{color:var(--warn);border-color:var(--warn)}.badge.error{color:var(--bad);border-color:var(--bad)}.badge.pass{color:var(--ok);border-color:var(--ok)}.badge.fail{color:var(--bad);border-color:var(--bad);background:#fef2f2}.badge.skipped{color:var(--muted);border-color:var(--muted)}main{max-width:1100px;margin:0 auto;padding:1.5rem}.panel{background:var(--panel);border:1px solid var(--border);border-radius:6px;margin-bottom:1rem;padding:1rem}.toolbar{align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}table{border-collapse:collapse;background:var(--panel);width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .75rem;font-size:.9rem}th{color:var(--muted);font-weight:600}pre.json{color:#e2e8f0;background:#0f172a;border-radius:4px;max-height:24rem;padding:.75rem;font-size:.8rem;overflow:auto}.form{gap:.75rem;max-width:32rem;display:grid}.form label{gap:.25rem;font-size:.9rem;display:grid}input,select,textarea,button{font:inherit;border:1px solid var(--border);background:var(--panel);border-radius:4px;padding:.4rem .6rem}button{cursor:pointer;background:var(--accent);color:#fff;border-color:var(--accent)}button.secondary{background:var(--panel);color:var(--text)}button:disabled{opacity:.6;cursor:default}.error{color:var(--bad)}.muted{color:var(--muted)}code{font-size:.85em}.form.wide{max-width:56rem}textarea.code{min-height:14rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.row{gap:1rem;display:flex}.row>label{flex:1}.issues{margin:0;padding-left:1.2rem}.links a{margin-bottom:.5rem;display:block}.gate{max-width:28rem;margin:4rem auto;padding:0 1rem}.gate .form{max-width:none}.user{align-items:center;gap:.75rem;font-size:.9rem;display:inline-flex}.user button{padding:.25rem .6rem;font-size:.85rem}.actions{gap:.5rem;display:flex}label.inline{flex-direction:row;align-items:center;gap:.5rem;display:inline-flex}fieldset.config{border:1px solid var(--border);border-radius:4px;gap:.75rem;padding:.75rem 1rem;display:grid}fieldset.config legend{color:var(--muted);font-size:.9rem}.config-fields{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.75rem;display:grid}.config-fields .field{gap:.25rem;font-size:.9rem;display:grid}.config-fields .field input[type=checkbox]{justify-self:start}.required{color:var(--bad)}.help{font-size:.8rem}textarea.code.small{min-height:4rem}.config-fields .field.wide{grid-column:1/-1}.config-fields .field textarea.code{min-height:6rem}fieldset.field-group{border:1px dashed var(--border);border-radius:4px;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:.75rem;margin:0;padding:.5rem .75rem .75rem;display:grid}fieldset.field-group legend{color:var(--muted);padding:0 .25rem;font-size:.85rem}.cheatsheet{color:var(--muted);grid-template-columns:max-content 1fr;gap:.15rem .75rem;margin:.25rem 0 0;font-size:.8rem;display:grid}.cheatsheet dt{font-weight:600}.cheatsheet dd{margin:0}.cheatsheet code{color:var(--text)}fieldset.dry-run{border:1px solid var(--border);border-radius:4px;gap:.75rem;padding:.75rem 1rem;display:grid}fieldset.dry-run legend{color:var(--muted);font-size:.9rem}.dry-run textarea.code{min-height:8rem}.dry-run .result{gap:.5rem;display:grid}.dry-run .result p{margin:0}ul.issues.error li{color:var(--bad)}.import-result{margin-top:1rem}.actions.align-end{align-items:flex-end}.badge.approve{color:var(--ok);border-color:var(--ok)}.badge.manual_review{color:var(--warn);border-color:var(--warn)}.badge.reject{color:var(--bad);border-color:var(--bad);background:#fef2f2}.band-bar{border:1px solid var(--border);border-radius:4px;width:100%;font-size:.8rem;display:flex;overflow:hidden}.band-bar .band{color:#fff;border-right:1px solid #fff9;flex-basis:0;gap:.1rem;min-width:0;padding:.4rem .5rem;display:grid}.band-bar .band:last-child{border-right:none}.band-bar .band.approve{background:var(--ok)}.band-bar .band.manual_review{background:var(--warn)}.band-bar .band.reject{background:var(--bad)}.band-bar .band .range{font-weight:600}.calculator-result{align-self:end;margin:0 0 .4rem}fieldset.preview tfoot th{color:var(--text)}.badge.queued,.badge.running{color:var(--accent);border-color:var(--accent)}.badge.completed{color:var(--ok);border-color:var(--ok)}.badge.failed{color:var(--bad);border-color:var(--bad)}.progress-row{align-items:center;gap:.75rem;display:flex}.progress{border:1px solid var(--border);background:var(--bg);border-radius:999px;flex:1;height:.6rem;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .3s}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.75rem;display:grid}.summary-grid>p{grid-column:1/-1;margin:0}.summary-grid h4,.backtest h4{color:var(--muted);margin:0 0 .4rem;font-size:.9rem}.outcome-badges{flex-wrap:wrap;gap:.5rem;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tabs{gap:.25rem;display:flex}.tabs button{padding:.25rem .75rem;font-size:.85rem}.schema-form{gap:.75rem;display:grid}.schema-form .field-group .field{gap:.25rem;font-size:.9rem;display:grid}.schema-form .field-group.array,.schema-form .field-group.condition-field{grid-template-columns:1fr}ol.array-items{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}li.array-item{align-items:flex-end;gap:.5rem;display:flex}li.array-item .array-item-body{flex:1}li.array-item .array-item-body>.field>.field-group{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr))}.condition{flex-wrap:wrap;gap:.5rem;display:flex}.condition>input{flex:1;min-width:10rem}.code-editor{gap:.4rem;display:grid}.code-editor .cm-editor{border:1px solid var(--border);border-radius:4px;font-size:.8rem}.code-editor .cm-editor.cm-focused{outline:2px solid var(--accent)}.cm-json-error{-webkit-text-decoration:underline wavy var(--bad);text-decoration:underline wavy var(--bad);background:#fef2f2}.cm-cel-string{color:#15803d}.cm-cel-number{color:#b45309}.cm-cel-keyword{color:#7c3aed}.cm-cel-operator{color:var(--accent)}details.dry-run-details>summary{cursor:pointer;color:var(--muted);font-size:.9rem}.schema-form .field-group.record{grid-template-columns:1fr}.additional-entry .row{align-items:center}.additional-entry .additional-value{flex:2}ol.step-list{gap:.35rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}ol.step-list li{border:1px solid var(--border);background:var(--panel);border-radius:4px;align-items:center;gap:.5rem;padding:.25rem .5rem;display:flex}ol.step-list li.selected{border-color:var(--accent)}button.step-select,button.link{text-align:left;color:var(--text);background:0 0;border:none;flex:1;padding:.25rem}.step-panel{border:1px solid var(--border);border-radius:4px;gap:.5rem;margin-top:.75rem;padding:.75rem 1rem;display:grid}.step-panel h4{margin:0}ul.problems li{list-style:none}ul.problems{padding-left:0}.graph-view{flex-direction:column;gap:.5rem;display:flex}.graph-editor{align-items:stretch;gap:.75rem;display:flex}.graph-canvas{border:1px solid var(--border);background:var(--panel);border-radius:6px;flex:1;min-width:0;height:34rem}.graph-drawer{border:1px solid var(--border);background:var(--panel);border-radius:6px;flex:0 0 24rem;max-height:34rem;padding:.5rem .75rem;overflow:auto}.graph-drawer>.actions{justify-content:flex-end}.graph-drawer .step-panel{border:none;padding:0}.step-node{border:1px solid var(--border);background:var(--panel);border-radius:6px;width:220px;min-height:72px;padding:.4rem .55rem .55rem;font-size:.78rem;line-height:1.3;box-shadow:0 1px 2px #0000000f}.step-node.selected{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb40}.step-node.has-error{border-color:var(--bad)}.step-node.has-error.selected{box-shadow:0 0 0 2px #dc262640}.step-node-head{flex-wrap:wrap;gap:.25rem;margin-bottom:.2rem;display:flex}.step-node-head .badge{font-size:.68rem}.step-node-title,.step-node-summary{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.step-node-dangling{color:var(--bad);font-size:.7rem}.step-node .react-flow__handle{background:var(--muted);width:9px;height:9px}.step-node .react-flow__handle.handle-branch{background:var(--accent)}.step-node .react-flow__handle.handle-default{background:var(--warn)}.react-flow__edge.edge-default .react-flow__edge-path{stroke-dasharray:5 4}.react-flow__edge-textbg{fill:var(--bg)}.react-flow__edge-text{font-size:.68rem}@media (width<=900px){.graph-editor{flex-direction:column}.graph-drawer{flex-basis:auto;max-height:none}}
