.builder{display:flex;flex-direction:column}.rbcanvas{position:relative;overflow:hidden;border-bottom:1.5px solid #b6b6b6;background:radial-gradient(hsl(var(--hairline-3) / .5) 1px,transparent 1.4px) 0 0 / 26px 26px,hsl(var(--paper-2));aspect-ratio:1000 / 560}.rb-edges{position:absolute;inset:0;width:100%;height:100%;z-index:1}.rb-edges path{fill:none;stroke:#b6b6b6;stroke-width:2;transition:stroke .4s ease}.rb-edges path.accent{stroke:hsl(var(--primary-500) / .55)}.rb-edges path.loop{stroke-dasharray:7 6;stroke:hsl(var(--riso-teal) / .7)}.rbcanvas[data-state=compiling] .rb-edges path,.rbcanvas[data-state=compiled] .rb-edges path{stroke:hsl(var(--ink-3))}.rbcanvas[data-state=compiled] .rb-edges path.accent{stroke:hsl(var(--primary-600))}.rbcanvas[data-state=compiled] .rb-edges path.loop{stroke:hsl(var(--riso-teal))}.rb-edges path.flowing{stroke-dasharray:8 7;animation:edgeflow .7s linear infinite}@keyframes edgeflow{to{stroke-dashoffset:-30}}.rb-grp{position:absolute;z-index:1;border:1.6px dashed hsl(var(--riso-teal) / .7);border-radius:14px;background:hsl(var(--riso-teal) / .05)}.rb-grp .gl{position:absolute;top:-11px;left:16px;font:700 9px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--riso-teal));background:hsl(var(--paper-2));padding:3px 7px;border:1.4px solid hsl(var(--riso-teal) / .55);border-radius:4px;display:inline-flex;align-items:center;gap:6px}.rb-grp .gl svg{width:11px;height:11px}.rb-node{position:absolute;z-index:2;transform:translate(-50%,-50%);display:flex;flex-direction:column;gap:3px;min-width:116px;padding:11px 13px;background:hsl(var(--card));border:1.5px solid var(--ink-line);border-radius:10px;box-shadow:3px 3px hsl(var(--riso-teal) / .22);transition:box-shadow .3s,border-color .3s,transform .3s}.rb-node .nk{font:700 8px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:hsl(var(--ink-5))}.rb-node .nt{display:flex;align-items:center;gap:8px}.rb-node .nt svg{width:16px;height:16px;flex-shrink:0}.rb-node .nt b{font:600 12.5px/1.05 var(--font-sans);color:hsl(var(--ink-0));white-space:nowrap}.rb-node .nmeta{font:500 9.5px/1 var(--font-mono);color:hsl(var(--ink-4))}.rb-node .nbadge{position:absolute;top:-9px;right:-9px;min-width:18px;height:18px;padding:0 5px;display:none;align-items:center;justify-content:center;font:700 9px/1 var(--font-mono);color:#fff;background:hsl(var(--primary-500));border:1.5px solid var(--ink-line);border-radius:9px;box-shadow:1.5px 1.5px hsl(var(--riso-teal) / .4)}.rb-node.term{min-width:0;padding:9px 15px;border-radius:22px;background:hsl(var(--ink-1));border-color:var(--ink-line)}.rb-node.term .nt b{color:hsl(var(--paper-2))}.rb-node.term .nt svg{color:hsl(var(--paper-2))}.rb-node.end{background:hsl(var(--mod-emerald))}.rb-node.cond{min-width:0;width:132px;height:92px;padding:0;background:transparent;border:0;box-shadow:none}.rb-node.cond .dia{position:absolute;inset:14px 30px;transform:rotate(45deg);background:hsl(var(--primary-100));border:1.5px solid var(--ink-line);border-radius:8px;box-shadow:3px 3px hsl(var(--riso-teal) / .24)}.rb-node.cond .clab{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;height:100%;justify-content:center}.rb-node.cond .clab .nk{color:hsl(var(--primary-700))}.rb-node.cond .clab b{font:600 11.5px/1 var(--font-sans);color:hsl(var(--ink-0))}.rb-node .ic-mill{color:hsl(var(--ink-1))}.rb-node .ic-rew{color:hsl(var(--primary-600))}.rb-node .ic-insp{color:hsl(var(--ink-1))}.rb-node .ic-pdf{color:hsl(var(--mod-purple))}.rbcanvas.run .rb-node.lit{border-color:hsl(var(--primary-500));box-shadow:3px 3px hsl(var(--primary-500) / .4);transform:translate(-50%,-50%) scale(1.04)}.rbcanvas.run .rb-node.cond.lit .dia{border-color:hsl(var(--primary-600));box-shadow:3px 3px hsl(var(--primary-500) / .4);background:hsl(var(--primary-300))}.rbcanvas.run .rb-node.cond.lit{box-shadow:none}.rbcanvas[data-state=compiled] .rb-node.has-rca .nbadge{display:inline-flex}.rb-elabel{position:absolute;z-index:2;transform:translate(-50%,-50%);font:700 8.5px/1 var(--font-mono);letter-spacing:.05em;text-transform:uppercase;padding:4px 7px;border-radius:5px;border:1.4px solid var(--ink-line);background:hsl(var(--card));color:hsl(var(--ink-3));box-shadow:1.5px 1.5px hsl(var(--riso-teal) / .25)}.rb-elabel.yes{color:hsl(var(--mod-emerald));border-color:hsl(var(--mod-emerald) / .55)}.rb-elabel.no{color:hsl(var(--primary-700));border-color:hsl(var(--primary-500) / .55)}.rb-elabel.rep{color:hsl(var(--riso-teal));border-color:hsl(var(--riso-teal) / .55)}.rb-valid{position:absolute;top:16px;left:16px;z-index:6;display:inline-flex;align-items:center;gap:9px;font:600 11px/1 var(--font-mono);letter-spacing:.02em;padding:9px 13px;border-radius:8px;border:1.5px solid var(--ink-line);background:hsl(var(--card));color:hsl(var(--ink-3));box-shadow:2.5px 2.5px hsl(var(--riso-teal) / .3);transition:color .25s,border-color .25s}.rb-valid .vdot{width:8px;height:8px;border-radius:50%;background:hsl(var(--ink-5));transition:background .25s}.rbcanvas[data-state=validating] .rb-valid{color:hsl(var(--primary-700));border-color:hsl(var(--primary-500))}.rbcanvas[data-state=validating] .rb-valid .vdot{background:hsl(var(--primary-500));animation:rbpulse .8s ease-in-out infinite}.rbcanvas[data-state=compiling] .rb-valid{color:hsl(var(--primary-700));border-color:hsl(var(--primary-500))}.rbcanvas[data-state=compiling] .rb-valid .vdot{background:hsl(var(--primary-500));animation:rbpulse .8s ease-in-out infinite}.rbcanvas[data-state=compiled] .rb-valid{color:hsl(var(--mod-emerald));border-color:hsl(var(--mod-emerald))}.rbcanvas[data-state=compiled] .rb-valid .vdot{background:hsl(var(--mod-emerald))}@keyframes rbpulse{0%,to{opacity:1}50%{opacity:.25}}.rb-valid .vtxt:after{content:attr(data-idle)}.rbcanvas[data-state=validating] .rb-valid .vtxt:after{content:"Validating graph…"}.rbcanvas[data-state=compiling] .rb-valid .vtxt:after{content:"Compiling rules…"}.rbcanvas[data-state=compiled] .rb-valid .vtxt:after{content:"Compiled · no errors"}.rb-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:hsl(var(--paper-2))}.rb-cstatus{display:flex;align-items:center;gap:10px;min-width:0}.rb-cdot{width:9px;height:9px;border-radius:50%;background:hsl(var(--ink-5));flex-shrink:0;transition:background .25s}.rbcanvas-wrap[data-state=validating] .rb-cdot,.rbcanvas-wrap[data-state=compiling] .rb-cdot{background:hsl(var(--primary-500));animation:rbpulse .8s ease-in-out infinite}.rbcanvas-wrap[data-state=compiled] .rb-cdot{background:hsl(var(--mod-emerald))}.rb-ctx{font:500 11px/1.3 var(--font-mono);letter-spacing:.02em;color:hsl(var(--ink-4));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rb-cbtns{display:flex;gap:10px;flex-shrink:0}.rb-cbtns .rbbtn{flex:0 0 auto;padding:0 20px}.rbbtn{justify-content:center;white-space:nowrap;background:hsl(var(--primary-500));color:#fff;border-color:var(--ink-line);box-shadow:2.5px 2.5px hsl(var(--riso-teal) / .42)}.rbbtn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:3.5px 3.5px hsl(var(--riso-teal) / .5)}.rbbtn:active:not(:disabled){transform:translate(1.5px,1.5px);box-shadow:none}.rbbtn:disabled{cursor:default}.rbcanvas-wrap[data-state=validating] .rbbtn,.rbcanvas-wrap[data-state=compiling] .rbbtn{background:hsl(var(--ink-3))}.rbcanvas-wrap[data-state=compiled] .rbbtn{background:hsl(var(--mod-emerald))}.rbbtn-spin{display:none;width:15px;height:15px;animation:rbspin .7s linear infinite}.rbcanvas-wrap[data-state=validating] .rbbtn-spin,.rbcanvas-wrap[data-state=compiling] .rbbtn-spin{display:inline-block}.rbcanvas-wrap[data-state=validating] .rbbtn-ic,.rbcanvas-wrap[data-state=compiling] .rbbtn-ic{display:none}@keyframes rbspin{to{transform:rotate(360deg)}}.rbbtn .lbl-idle:after{content:"Save & Compile"}.rbcanvas-wrap[data-state=validating] .rbbtn .lbl-idle:after{content:"Validating…"}.rbcanvas-wrap[data-state=compiling] .rbbtn .lbl-idle:after{content:"Compiling…"}.rbcanvas-wrap[data-state=compiled] .rbbtn .lbl-idle:after{content:"Re-compile"}.rbreset{flex-shrink:0;width:46px;display:grid;place-items:center;border:1.5px solid var(--ink-line);border-radius:var(--radius-sm);background:hsl(var(--paper-2));color:hsl(var(--ink-3));box-shadow:2px 2px hsl(var(--riso-teal) / .2);transition:transform .1s,box-shadow .1s,color .14s}.rbreset svg{width:17px;height:17px}.rbreset:hover{color:hsl(var(--ink-0));transform:translate(-1px,-1px);box-shadow:3px 3px hsl(var(--riso-teal) / .28)}.rbreset:active{transform:translate(1.5px,1.5px);box-shadow:none}@media(max-width:560px){.rb-controls{flex-direction:column;align-items:stretch;gap:12px}.rb-cbtns{justify-content:flex-end}}.rbcanvas--embed{width:100%;height:100%}
