@layer mlola.recipes{.ml-node-graph-edges{fill:none;max-width:none;position:absolute;top:0;left:0;overflow:visible}.ml-node-graph-edge{--ml-graph-edge:color-mix(in oklab, var(--ml-text) 30%, transparent)}.ml-node-graph-edge[data-state=done]{--ml-graph-edge:var(--ml-success-text)}.ml-node-graph-edge[data-state=active]{--ml-graph-edge:var(--ml-primary-text)}.ml-node-graph-edge[data-state=error]{--ml-graph-edge:var(--ml-danger-text)}.ml-node-graph-edge[data-state=skipped]{--ml-graph-edge:color-mix(in oklab, var(--ml-text) 16%, transparent)}.ml-node-graph-edge[data-selected]{--ml-graph-edge:var(--ml-focus)}.ml-node-graph-edge-hit{stroke:#0000;stroke-width:14px;pointer-events:stroke;cursor:pointer}.ml-node-graph-edge-line{stroke:var(--ml-graph-edge);stroke-width:2px;stroke-linecap:round;pointer-events:none;transition:stroke var(--ml-duration-normal) var(--ml-ease-standard)}.ml-node-graph-edge[data-state=skipped] .ml-node-graph-edge-line{stroke-dasharray:4 6}.ml-node-graph-edge[data-state=active] .ml-node-graph-edge-line{stroke-dasharray:8 8;animation:.6s linear infinite ml-graph-flow}@keyframes ml-graph-flow{to{stroke-dashoffset:-16px}}.ml-node-graph-pending{stroke:var(--ml-primary-text);stroke-width:2px;stroke-dasharray:6 5;pointer-events:none}.ml-node-graph-edge-label{padding:var(--ml-space-0-5) var(--ml-space-2);border:var(--ml-border-width) solid var(--ml-border-subtle);border-radius:var(--ml-radius-pill);background:var(--ml-surface);color:var(--ml-text-muted);font-size:var(--ml-type-2xs);white-space:nowrap;pointer-events:none;font-weight:500;position:absolute;translate:-50% -50%}.ml-node-graph-edge-label[data-state=active]{border-color:color-mix(in oklab, var(--ml-primary) 40%, transparent);color:var(--ml-primary-text)}.ml-graph-node{--ml-graph-accent:var(--ml-text-muted);--ml-graph-accent-fill:var(--ml-fill-hover);border:var(--ml-border-width) solid var(--ml-border);border-radius:var(--ml-radius-lg);background:var(--ml-surface);box-shadow:var(--ml-shadow-sm);color:var(--ml-text);font-size:var(--ml-type-sm);cursor:grab;transition:box-shadow var(--ml-duration-fast) var(--ml-ease-standard), border-color var(--ml-duration-fast) var(--ml-ease-standard);outline:none;display:grid;position:absolute}.ml-graph-node:active{cursor:grabbing}.ml-graph-node[data-tone=primary]{--ml-graph-accent:var(--ml-primary-text);--ml-graph-accent-fill:color-mix(in oklab, var(--ml-primary) 12%, transparent)}.ml-graph-node[data-tone=info]{--ml-graph-accent:var(--ml-info-text);--ml-graph-accent-fill:color-mix(in oklab, var(--ml-info) 13%, transparent)}.ml-graph-node[data-tone=success]{--ml-graph-accent:var(--ml-success-text);--ml-graph-accent-fill:color-mix(in oklab, var(--ml-success) 13%, transparent)}.ml-graph-node[data-tone=warning]{--ml-graph-accent:var(--ml-warning-text);--ml-graph-accent-fill:color-mix(in oklab, var(--ml-warning) 15%, transparent)}.ml-graph-node[data-tone=danger]{--ml-graph-accent:var(--ml-danger-text);--ml-graph-accent-fill:color-mix(in oklab, var(--ml-danger) 13%, transparent)}.ml-graph-node[data-selected],.ml-graph-node:focus-visible{border-color:var(--ml-focus);box-shadow:0 0 0 3px color-mix(in oklab, var(--ml-focus) 25%, transparent), var(--ml-shadow-md)}.ml-graph-node[data-status=running]{border-color:var(--ml-primary-text);box-shadow:0 0 0 4px color-mix(in oklab, var(--ml-primary) 16%, transparent), var(--ml-shadow-md)}.ml-graph-node[data-status=error]{border-color:var(--ml-danger-text)}.ml-graph-node[data-status=skipped]{opacity:.55}.ml-graph-node-header{align-items:center;gap:var(--ml-space-2-5);min-height:var(--ml-graph-header);padding:var(--ml-space-2) var(--ml-space-3);display:flex}.ml-graph-node-icon{border-radius:var(--ml-radius-md);background:var(--ml-graph-accent-fill);width:1.875rem;height:1.875rem;color:var(--ml-graph-accent);font-size:var(--ml-type-base);flex:none;place-items:center;display:inline-grid}.ml-graph-node-titles{flex:1;min-width:0;display:grid}.ml-graph-node-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ml-graph-node-subtitle{color:var(--ml-text-muted);font-size:var(--ml-type-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ml-graph-node-status{align-items:center;gap:var(--ml-space-1);color:var(--ml-text-muted);font-size:var(--ml-type-2xs);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}.ml-graph-node-status[data-status=running]{color:var(--ml-primary-text)}.ml-graph-node-status[data-status=success]{color:var(--ml-success-text)}.ml-graph-node-status[data-status=error]{color:var(--ml-danger-text)}.ml-graph-node-spinner{animation:.9s linear infinite ml-spin}.ml-graph-node-dot{width:.4375rem;height:.4375rem;animation:ml-pulse 1.4s var(--ml-ease-standard) infinite;background:currentColor;border-radius:50%}.ml-graph-node-ports{border-top:var(--ml-border-width) solid var(--ml-border-subtle);display:grid}.ml-graph-node-port-row{height:var(--ml-graph-row);padding-inline:var(--ml-space-3);color:var(--ml-text-muted);font-size:var(--ml-type-2xs);justify-content:space-between;align-items:center;display:flex}.ml-graph-node-body{padding:var(--ml-space-2-5) var(--ml-space-3) var(--ml-space-3);border-top:var(--ml-border-width) solid var(--ml-border-subtle);color:var(--ml-text-muted);font-size:var(--ml-type-xs);cursor:default;line-height:1.5}.ml-graph-port{z-index:1;border:2px solid var(--ml-text-muted);background:var(--ml-surface);cursor:crosshair;width:.75rem;height:.75rem;transition:scale var(--ml-duration-fast) var(--ml-ease-spring), background-color var(--ml-duration-fast);border-radius:50%;position:absolute;translate:-50% -50%}.ml-graph-port[data-side=in]{left:0}.ml-graph-port[data-side=out]{left:100%}.ml-graph-port[data-connected]{border-color:var(--ml-graph-accent);background:var(--ml-graph-accent)}.ml-graph-port:hover,.ml-graph-port[data-target]{border-color:var(--ml-primary-text);scale:1.45}.ml-graph-port[data-target]{background:var(--ml-primary-text)}@media (prefers-reduced-motion:reduce){.ml-node-graph-edge[data-state=active] .ml-node-graph-edge-line,.ml-graph-node-dot{animation:none}.ml-graph-node,.ml-graph-port,.ml-node-graph-edge-line{transition:none}}.ml-node-graph-edge-hit:focus{outline:none}}
