.tree-roles{--tree-now:rgb(var(--viz-asking-rgb));--tree-in-play:var(--warning);--tree-done:var(--text-secondary);--tree-done-fill:color-mix(in srgb,var(--text-secondary) 38%,var(--bg-surface))}.tree-roles .tree-node{transition:transform var(--tree-move-ms,.3s) ease,background 0s linear,border-color 0s linear,box-shadow 0s linear,color 0s linear;transition-behavior:allow-discrete}.tree-roles .tree-node.current-in-traversal,.tree-roles .tree-node.current-in-traversal.visited{border-color:var(--tree-now);background:radial-gradient(circle at 40% 22%,color-mix(in srgb,var(--text-primary) 55%,transparent),transparent 46%),radial-gradient(circle at 50% 62%,var(--tree-now),color-mix(in srgb,var(--tree-now) 70%,var(--bg-app)) 100%);color:var(--bg-app);box-shadow:0 0 22px var(--tree-now),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 45%,transparent),inset 0 -4px 8px color-mix(in srgb,var(--bg-app) 45%,transparent),0 6px 16px -6px rgba(0,0,0,.55);transform:translate(-50%,-50%) scale(1.15)}.tree-roles .tree-node.current-in-traversal:after{border-color:var(--tree-now)}.tree-roles .tree-node.visited{border:2px solid color-mix(in srgb,var(--tree-done) 70%,transparent);color:var(--text-primary);background:var(--tree-done-fill);box-shadow:none;transform:translate(-50%,-50%) scale(1)}.tree-roles .tree-node.pending{border-color:var(--tree-in-play);border-style:dashed;color:var(--tree-in-play);box-shadow:0 0 12px color-mix(in srgb,var(--tree-in-play) 35%,transparent)}.tree-roles .tree-node.pointer-target{border-color:var(--tree-now);border-style:dashed;color:var(--tree-now);box-shadow:0 0 12px color-mix(in srgb,var(--tree-now) 35%,transparent)}.tree-roles .tree-node.pointer-return{animation-name:tree-node-return-roles}@keyframes tree-node-return-roles{0%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--tree-now) 70%,transparent)}35%{transform:translate(-50%,-50%) scale(1.14)}to{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 14px transparent}}.tree-roles .tree-visit-badge{background:color-mix(in srgb,var(--tree-done) 85%,var(--bg-surface));color:var(--bg-app)}.tree-roles .tree-visit-badge.latest{background:var(--tree-now);box-shadow:0 0 8px color-mix(in srgb,var(--tree-now) 60%,transparent)}.tree-roles .pointer-arrow-icon{border-top-color:var(--tree-now);filter:drop-shadow(0 0 6px var(--tree-now))}.tree-roles .tree-edge-overlay-current{stroke:var(--tree-now);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--tree-now) 80%,transparent))}.tree-roles .tree-edge-pulse{stroke:color-mix(in srgb,var(--tree-now) 82%,var(--text-primary));filter:drop-shadow(0 0 6px var(--tree-now))}.tree-roles .tree-edge.tree-edge-visited{stroke:color-mix(in srgb,var(--tree-done) 70%,transparent);stroke-width:4;filter:none}.tree-roles .tree-edge.tree-edge-pending{stroke:color-mix(in srgb,var(--tree-in-play) 55%,var(--border-color))}.tree-roles .flying-chip-node{background:var(--tree-now);box-shadow:0 0 14px color-mix(in srgb,var(--tree-now) 60%,transparent)}.tree-level-order .tree-node.current-in-traversal,.tree-level-order .tree-node.visited{transition-delay:var(--lo-land-ms,0s)}.tree-level-order .tree-visit-badge.latest{animation-delay:var(--lo-land-ms,0s)}.tree-level-order .tree-node.current-in-traversal:after{animation:lo-ring-wait var(--lo-land-ms,0s) step-end both,tree-scan-ring 1.15s ease-out var(--lo-land-ms,0s) infinite}@keyframes lo-ring-wait{0%,to{opacity:0}}.tree-level-order .lo-flight-chip{position:absolute;left:0;top:0;opacity:0;z-index:30;display:flex;align-items:center;justify-content:center;font-family:var(--font-code);font-weight:700;line-height:1;color:var(--bg-app);background:var(--warning);border:1px solid var(--warning);border-radius:4px;box-shadow:0 0 12px color-mix(in srgb,var(--tree-now) 45%,transparent);pointer-events:none;will-change:transform,opacity}.lo-callout{animation:lo-callout-in var(--tree-move-ms) ease-out both}@keyframes lo-callout-in{0%{opacity:0;transform:translate(-50%,3px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.tree-level-order .lo-flight-chip{display:none}.lo-callout{animation:none}}