.rete-diagram{position:relative;width:100%;height:520px;margin:1.5rem 0;overflow:hidden;border-radius:6px;background:radial-gradient(circle at 1px 1px,rgba(120,120,120,.18) 1px,transparent 0)0 0/24px 24px,var(--rete-bg,#fafafa);border:1px solid rgba(0,0,0,8%);font-family:inter,system-ui,sans-serif;color:#262424;user-select:none}html.dark .rete-diagram,.dark .rete-diagram{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,8%) 1px,transparent 0)0 0/24px 24px,#1a1a1a;border-color:rgba(255,255,255,8%);color:#ededed}.rete-diagram>.rete-viewport{width:100%;height:100%}.rete-group-layer{position:absolute;inset:0;pointer-events:none}.rete-group{position:absolute;top:0;left:0;border:2px solid #d1d1d1;border-radius:4px;background:rgba(255,255,255,.5);box-sizing:border-box}html.dark .rete-group,.dark .rete-group{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,3%)}.rete-group__label{position:absolute;top:-10px;left:12px;padding:0 8px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:var(--rete-bg,#fafafa);color:#6d6666}html.dark .rete-group__label,.dark .rete-group__label{background:#1a1a1a;color:#b5b5b5}.rete-connections{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.rete-connection{fill:none;stroke:#c9ccd6;stroke-width:4;stroke-linecap:round;stroke-dasharray:10 10;animation:rete-flow 1.2s linear infinite}@keyframes rete-flow{to{stroke-dashoffset:-20}}.rete-connection--thick{stroke-width:24;opacity:.85;stroke-linecap:butt;stroke:#555f8e;stroke-dasharray:40 24;animation-duration:2.4s}.rete-connection--dashed{stroke-dasharray:6 6}.rete-connection--labelled{stroke-dasharray:none;animation:none}.rete-connection__label{fill:#fff;stroke:none;font-family:inter,system-ui,sans-serif;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;paint-order:stroke;pointer-events:none}.rete-node{box-sizing:border-box;background:#fff;border-radius:12px;box-shadow:0 1px 2px rgba(0,0,0,6%),0 8px 24px rgba(0,0,0,8%);overflow:hidden;cursor:grab;position:relative;display:flex;flex-direction:column}.rete-node:active{cursor:grabbing}html.dark .rete-node,.dark .rete-node{background:#2a2a2a;box-shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.4)}.rete-node{--rete-node-color:#6b7280}.rete-node--vault{--rete-node-color:#555f8e}.rete-node--storage{--rete-node-color:#6b7280}.rete-node--hub{--rete-node-color:#84559f}.rete-node--agent{--rete-node-color:#4a796b}.rete-node--factory{--rete-node-color:#4a796b}.rete-node--camera{--rete-node-color:#374151}.rete-node--amqp{--rete-node-color:#b45309}.rete-node--turn{--rete-node-color:#1d4ed8}.rete-node--mqtt{--rete-node-color:#0f766e}.rete-node--pipeline-monitor{--rete-node-color:#be185d}.rete-node--pipeline-sequence{--rete-node-color:#be185d}.rete-node--pipeline-analysis{--rete-node-color:#be185d}.rete-node--pipeline-classifier{--rete-node-color:#be185d}.rete-node--pipeline-threshold{--rete-node-color:#be185d}.rete-node--pipeline-notification{--rete-node-color:#be185d}.rete-node--pipeline-sprite{--rete-node-color:#be185d}.rete-node--pipeline-dominantcolor{--rete-node-color:#be185d}.rete-node--pipeline-thumbnail{--rete-node-color:#be185d}.rete-node--pipeline-export{--rete-node-color:#be185d}.rete-node--pipeline-counting{--rete-node-color:#be185d}.rete-node--pipeline-licenseplate{--rete-node-color:#be185d}.rete-node--pipeline-nohelmet{--rete-node-color:#be185d}.rete-node--pipeline-llm{--rete-node-color:#be185d}.rete-node__header{padding:8px 14px;background:var(--rete-node-color);color:#fff;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-align:center;border-radius:11px 11px 0 0;white-space:nowrap}.rete-node__step{position:absolute;top:6px;right:6px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#fff;color:var(--rete-node-color);font-size:12px;font-weight:700;line-height:22px;text-align:center;box-shadow:0 1px 2px rgba(0,0,0,.2);box-sizing:border-box;z-index:2}.rete-node__body{padding:18px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;flex:1;box-sizing:border-box}.rete-node__body:has(.rete-node__badges){padding-bottom:24px;gap:6px}.rete-node__title{font-weight:700;font-size:18px;letter-spacing:.01em;color:inherit;line-height:1.2}.rete-node__subtitle{margin-top:0;font-size:13px;color:#6d6666;line-height:1.2}html.dark .rete-node__subtitle,.dark .rete-node__subtitle{color:#b5b5b5}.rete-node__badges{margin-top:0;display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;line-height:1}.rete-node__badge{width:28px;height:28px;object-fit:contain;display:block}.rete-node[data-selected=true]{outline:2px solid var(--rete-node-color);outline-offset:2px}.rete-toolbar{position:absolute;top:12px;right:12px;z-index:5;display:flex;gap:4px}.rete-toolbar__btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid rgba(0,0,0,.12);border-radius:4px;background:rgba(255,255,255,.9);color:#262424;cursor:pointer;transition:background 120ms ease,color 120ms ease}.rete-toolbar__btn:hover{background:#fff;color:#555f8e}.rete-toolbar__btn:focus-visible{outline:2px solid #555f8e;outline-offset:1px}html.dark .rete-toolbar__btn,.dark .rete-toolbar__btn{background:rgba(40,40,40,.9);border-color:rgba(255,255,255,.15);color:#ededed}html.dark .rete-toolbar__btn:hover,.dark .rete-toolbar__btn:hover{background:#2a2a2a;color:#fff}.rete-diagram--pseudo-fullscreen{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;margin:0!important;z-index:9999;border-radius:0}body.rete-diagram-fs-lock{overflow:hidden}.rete-diagram-figure{position:relative}.rete-diagram-edit{position:absolute;top:12px;right:52px;z-index:5;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 10px;box-sizing:border-box;border-radius:4px;border:1px solid rgba(0,0,0,.12);background:rgba(255,255,255,.92);color:#555f8e;font:600 11px/1 inter,system-ui,sans-serif;text-decoration:none;opacity:0;transition:opacity 120ms ease,background 120ms ease,color 120ms ease,border-color 120ms ease}.rete-diagram-figure:hover .rete-diagram-edit,.rete-diagram-edit:focus-visible{opacity:1}.rete-diagram-edit:hover{background:#555f8e;color:#fff;border-color:#555f8e}html.dark .rete-diagram-edit,.dark .rete-diagram-edit{background:rgba(31,31,31,.92);color:#b5b5ff;border-color:rgba(255,255,255,.15)}html.dark .rete-diagram-edit:hover,.dark .rete-diagram-edit:hover{background:#555f8e;color:#fff}