/* Open, node-based operation tree. The graph owns no simulation state. */
.ot-root{background:#0a1921}
.ot-toolbar{padding:10px 16px 8px}
.ot-heading h2{font-size:17px;letter-spacing:0;font-weight:500}
.ot-runbar{background:#0b1c24;padding-block:6px;border-color:#2a424b}
.ot-run-facts{padding-block:8px;gap:22px}
.ot-run-facts .ot-metric>strong{font-size:18px}
.ot-trend{background:transparent;padding-block:6px 3px}
.ot-trend svg{height:50px}
.ot-content{grid-template-columns:minmax(0,1fr) 290px}
.ot-viewbar{background:#0c2028;border-color:#29434b}
.ot-canvas{background-color:#091922;background-image:radial-gradient(#92b8c018 .7px,transparent .7px);background-size:24px 24px;min-height:235px}
.ot-tree-scene{position:relative;min-width:100%;isolation:isolate}
.ot-tree-scene>svg{position:absolute;inset:0;overflow:visible;pointer-events:none;z-index:0}
.ot-tree-link{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.ot-tree-link.actual{stroke:#83ceb8;stroke-width:2;opacity:.9}
.ot-tree-link.alternative{stroke:#b09c70;stroke-width:1.3;stroke-dasharray:3 5;opacity:.65}
.ot-tree-link.forecast{stroke:#e9c782;stroke-width:1.7;stroke-dasharray:4 4}
.ot-tree-link.gap{stroke:#698a98;stroke-width:1.2;stroke-dasharray:2 6}
.ot-root .ot-tree-node{position:absolute;z-index:1;display:flex;align-items:center;flex-direction:column;box-sizing:border-box;width:156px;min-height:0;padding:0!important;margin:0;border:0!important;border-radius:0;background:none!important;box-shadow:none!important;color:#cfe9e4;text-align:center;cursor:pointer;font-variant-numeric:tabular-nums;transform:translate(-50%,-16px)}
.ot-root .ot-tree-node:disabled{opacity:1;cursor:default}
.ot-root .ot-tree-node.selected{background:none!important;box-shadow:none!important}
.ot-node-ring{position:relative;box-sizing:border-box;display:grid;place-items:center;flex:none;width:32px;height:32px;border:1.5px solid #8fd9c2;border-radius:50%;background:#0d242b;box-shadow:0 0 0 5px #79c8af0c;transition:box-shadow .16s,border-color .16s,background .16s}
.ot-node-ring:after{content:"";display:block;width:8px;height:8px;border-radius:50%;background:#a3ead2;box-shadow:0 0 8px #8ce3c647}
.ot-node-step{display:block;margin-top:9px;color:#86aaaF;font-size:9px;line-height:12px;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.ot-node-value{display:block;margin-top:2px;font-size:18px;line-height:22px;font-weight:550;color:#d3f7e9;white-space:nowrap}
.ot-node-caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-width:148px;margin-top:4px;font-size:10px;line-height:14px;font-weight:400;color:#a2bfc5;overflow-wrap:anywhere}
.ot-node-status{display:block;max-width:148px;margin-top:3px;color:#607f8d;font-size:8px;line-height:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ot-root .ot-tree-node.alternative,.ot-root .ot-tree-node.forecast{transform:translate(-50%,-10px)}
.ot-tree-node.alternative .ot-node-ring,.ot-tree-node.forecast .ot-node-ring{width:20px;height:20px;border-color:#d1b77d;background:#15242a;box-shadow:none}
.ot-tree-node.alternative .ot-node-ring:after,.ot-tree-node.forecast .ot-node-ring:after{width:5px;height:5px;background:#d6bb80;box-shadow:none}
.ot-tree-node.alternative .ot-node-step,.ot-tree-node.forecast .ot-node-step{margin-top:7px;color:#a29373;font-size:8px}
.ot-tree-node.alternative .ot-node-value,.ot-tree-node.forecast .ot-node-value{color:#e3cea1;font-size:15px;line-height:19px}
.ot-tree-node.alternative .ot-node-caption,.ot-tree-node.forecast .ot-node-caption{color:#b9b7a7}
.ot-tree-node.forecast .ot-node-ring{outline:1px dashed #d1b77d;outline-offset:4px}
.ot-tree-node.pending .ot-node-ring{border-style:dashed;border-color:#93b5c9;background:#102631}
.ot-tree-node.pending .ot-node-ring:after{background:#93b5c9}
.ot-tree-node.danger .ot-node-ring,.ot-tree-node.rejected .ot-node-ring{border-color:#e58c94}
.ot-tree-node.danger .ot-node-ring:after,.ot-tree-node.rejected .ot-node-ring:after{background:#ed929a}
.ot-tree-node.danger .ot-node-value,.ot-tree-node.rejected .ot-node-value{color:#f0a3ac}
.ot-root .ot-tree-node:hover .ot-node-ring,.ot-root .ot-tree-node:focus-visible .ot-node-ring{background:#1c3b3e;box-shadow:0 0 0 5px #9ce0c51b,0 0 20px #90d7bd24}
.ot-root .ot-tree-node.selected .ot-node-ring{border-color:#e8fff6;background:#2b564d;box-shadow:0 0 0 5px #9fe4c925,0 0 22px #89d2b733}
.ot-root .ot-tree-node.selected .ot-node-caption{color:#e4f4ed}
.ot-root .ot-tree-node:focus-visible{outline:none}
.ot-root .ot-tree-node:focus-visible .ot-node-ring{outline:2px solid #e2fff0;outline-offset:5px}
.ot-tree-scene .ot-lane-label{font-size:8px;letter-spacing:.12em;color:#547b87;pointer-events:none}
.ot-tree-scene .ot-lane-label.alternatives{color:#8c8166}
.ot-root .ot-tree-more{position:absolute;z-index:1;transform:translateX(-50%);min-width:100px;padding:4px 8px;border:1px solid #846f4340;border-radius:12px;background:#12232a;color:#c6b58e;font-size:9px;box-shadow:none}
.ot-root .ot-tree-more:hover{border-color:#b09b6c;background:#233334}
.ot-inspector{background:#0e212b;border-color:#2c4853}
.ot-inspector h3{font-size:16px}
.ot-detail-alternatives button{border-color:#35515c;background:#10262e;border-radius:4px}
.ot-detail-alternatives button.selected{background:#1c3b36!important;box-shadow:none!important}
.ot-live-actions{background:#102a2c;border-color:#355c55;padding-block:8px}
.ot-legend{background:#0a1a22;border-color:#263e48}
@media(min-width:1600px){.ot-content{grid-template-columns:minmax(0,1fr) 310px}.ot-trend svg{height:55px}}
@media(max-width:1100px){.ot-content{grid-template-columns:minmax(0,1fr) 245px}}
@media(max-width:850px){.ot-content{display:flex}.ot-main{min-height:600px}.ot-canvas{min-height:310px;max-height:450px}.ot-trend svg{height:45px}.ot-inspector{min-height:190px}}
@media(prefers-reduced-motion:reduce){.ot-node-ring{transition:none}}
/* One camera over the entire run, including independent simulated forks. */
.ot-canvas{position:relative;padding:0;cursor:grab;overscroll-behavior:contain;scroll-behavior:auto;touch-action:pan-x pan-y;user-select:none;-webkit-user-select:none}
.ot-canvas *{user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.ot-canvas.ot-dragging{cursor:grabbing;user-select:none}
.ot-tree-scene{min-width:0}
.ot-tree-node.counterfactual{transform:translate(-50%,-10px)}
.ot-tree-node.counterfactual .ot-node-ring{width:20px;height:20px;border-color:#a4baf1;background:#162a40;box-shadow:none}
.ot-tree-node.counterfactual .ot-node-ring:after{background:#b5c9fa;width:5px;height:5px}
.ot-tree-node.counterfactual .ot-node-value{font-size:15px;color:#c5d4fb}
.ot-tree-node.counterfactual .ot-node-step{font-size:8px;letter-spacing:.06em;color:#9aadd4}
.ot-tree-link.counterfactual,.ot-tree-link.counterfactual-fork{stroke:#9ab2e9;stroke-width:1.7;stroke-dasharray:6 4;opacity:.8}
.ot-dot.simulated{background:#9ab2e9}
.ot-viewbar{flex-wrap:wrap;gap:8px}
.ot-camera-hint{font-size:9px;color:#6c939d;margin-left:auto}
.ot-zoom-controls{display:flex;align-items:center;gap:3px}
.ot-zoom-controls button{padding:3px 7px;font-size:10px}
.ot-zoom-value{min-width:39px;text-align:center;font-size:10px;color:#b6d4d1;font-variant-numeric:tabular-nums}
.ot-zoom-overview .ot-node-caption,.ot-zoom-overview .ot-node-status{display:none}
.ot-zoom-distant .ot-node-step,.ot-zoom-distant .ot-node-value,.ot-zoom-distant .ot-tree-more{display:none}
.ot-whatif-controls{padding:12px;background:#142936;border:1px solid #405d79;border-radius:5px;margin-bottom:16px;display:flex;flex-direction:column;gap:9px}
.ot-whatif-controls label{display:flex;flex-direction:column;gap:4px;color:#9ab3c5;font-size:10px}
.ot-whatif-controls select{width:100%;min-width:0;font-size:10px;padding:6px;color:#d0deeb;background:#0d202c;border:1px solid #3d596e}
.ot-whatif-controls button{background:#304c68;border:1px solid #7b9abd;color:#e2eaf6;padding:8px;font-size:11px}
.ot-whatif-controls small{font-size:9px;line-height:1.55;color:#90a8bc}
.ot-whatif-controls select:disabled{opacity:.5}
@media(max-width:850px){.ot-camera-hint{display:none}.ot-canvas{max-height:none}.ot-zoom-controls{margin-left:auto}}
