.tree-node{touch-action:none;position:absolute;width:60px;height:60px;border:2px solid var(--border-color);border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:2;transition:border-color var(--tree-move-ms,.3s) ease,background var(--tree-move-ms,.3s) ease,box-shadow var(--tree-move-ms,.3s) ease,transform var(--tree-move-ms,.3s) ease,color var(--tree-move-ms,.3s) ease;color:var(--text-primary);background:radial-gradient(circle at 40% 24%,color-mix(in srgb,var(--text-primary) 38%,transparent),transparent 44%),radial-gradient(circle at 50% 34%,color-mix(in srgb,var(--text-primary) 10%,var(--bg-surface)),color-mix(in srgb,var(--bg-app) 30%,var(--bg-surface)) 100%);box-shadow:var(--shadow-glow),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 22%,transparent),inset 0 -3px 6px color-mix(in srgb,var(--bg-app) 40%,transparent),0 6px 14px -6px rgba(0,0,0,.5);transform:translate(-50%,-50%)}.tree-node.new-node{animation:nodeInserted .5s ease-out}.tree-node.current-in-traversal{border-color:var(--accent-primary);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(--accent-primary),color-mix(in srgb,var(--accent-primary) 70%,var(--bg-app)) 100%);color:var(--bg-app);box-shadow:0 0 25px var(--accent-primary),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-node.current-in-traversal:after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--accent-primary);animation:tree-scan-ring 1.15s ease-out infinite;pointer-events:none}@keyframes tree-scan-ring{0%{transform:scale(.92);opacity:.65}to{transform:scale(1.5);opacity:0}}.tree-node.visited{border:2px solid var(--success);color:var(--text-primary);background:radial-gradient(circle at 40% 24%,color-mix(in srgb,var(--text-primary) 42%,transparent),transparent 44%),radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--success) 32%,var(--bg-surface)),color-mix(in srgb,var(--success) 16%,var(--bg-app)) 100%);box-shadow:0 0 15px var(--success),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 25%,transparent),inset 0 -3px 6px color-mix(in srgb,var(--bg-app) 40%,transparent),0 5px 12px -6px rgba(0,0,0,.5);transform:translate(-50%,-50%) scale(1.15)}.tree-node.current-in-traversal.visited{border-color:var(--accent-primary);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(--accent-primary),color-mix(in srgb,var(--accent-primary) 70%,var(--bg-app)) 100%);color:var(--bg-app);box-shadow:0 0 25px var(--accent-primary),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)}.tree-node.selected{border-color:var(--accent-secondary);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-secondary) 22%,transparent),0 0 20px var(--accent-secondary);z-index:30}@media (max-width:768px){.tree-node{width:42px;height:42px;border-width:2px;font-size:.8rem}.ghost-node{width:30px;height:30px;border-width:2px}}.tree-node:hover{border:2px solid var(--accent-primary);transform:translate(-50%,-50%) scale(1.2);color:var(--accent-primary)}.ghost-node{position:absolute;width:40px;height:40px;background-color:transparent;border:2px dashed var(--border-color);border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:2;transition:border-color var(--tree-move-ms,.3s) ease,background-color var(--tree-move-ms,.3s) ease,color var(--tree-move-ms,.3s) ease;color:var(--text-secondary);transform:translate(-50%,-50%);cursor:pointer}.ghost-node:hover{border:2px dashed var(--accent-primary);color:var(--accent-primary);background:var(--bg-surface)}:root{--tree-edge-fill:0.35s;--tree-edge-fill-ease:linear}.tree-edge{stroke:var(--border-color);stroke-width:3.5;opacity:.9;transition:stroke var(--tree-move-ms,.3s) ease,stroke-width var(--tree-move-ms,.3s) ease,opacity var(--tree-move-ms,.3s) ease}.tree-edge-overlay-current{stroke:var(--accent-primary);stroke-width:5.5;filter:drop-shadow(0 0 12px color-mix(in srgb,var(--accent-primary) 85%,transparent));opacity:1;stroke-dasharray:1;stroke-dashoffset:0;animation:edge-draw var(--tree-edge-fill) var(--tree-edge-fill-ease) forwards,tree-edge-current-clear var(--tree-edge-fill) linear forwards;pointer-events:none}@keyframes tree-edge-current-clear{0%,72%{opacity:1}to{opacity:0}}.tree-edge.tree-edge-visited{stroke:var(--success);stroke-width:4.5;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--success) 50%,transparent));opacity:1}.tree-edge.tree-edge-pending{stroke:color-mix(in srgb,var(--success) 45%,var(--border-color));stroke-width:4;stroke-dasharray:9 7;opacity:.85}.tree-edge-ghost{stroke:var(--error);stroke-width:3;stroke-linecap:round;stroke-dasharray:.12 .08;opacity:.85;animation:edge-draw calc(var(--null-slot-ms, .32s) * .5) ease-out forwards;pointer-events:none}.tree-edge-pulse{stroke:color-mix(in srgb,var(--accent-primary) 82%,var(--text-primary));stroke-width:5.5;stroke-linecap:round;stroke-dasharray:.16 1;filter:drop-shadow(0 0 6px var(--accent-primary));animation:tree-edge-pulse-move var(--tree-edge-fill) var(--tree-edge-fill-ease) forwards,tree-edge-pulse-fade var(--tree-edge-fill) linear forwards;pointer-events:none}@keyframes tree-edge-pulse-move{0%{stroke-dashoffset:.16}to{stroke-dashoffset:-.84}}@keyframes tree-edge-pulse-fade{0%,78%{opacity:1}to{opacity:0}}@keyframes edge-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes nodeInserted{0%{transform:translate(-50%,-50%) scale(0);opacity:0}60%{transform:translate(-50%,-50%) scale(1.4);opacity:1}to{transform:translate(-50%,-50%) scale(1)}}.tree-node.delayed-highlight.current-in-traversal,.tree-node.delayed-highlight.visited{transition-delay:var(--tree-edge-fill,.35s)}.tree-node.pending,.tree-node.pointer-target{border-color:var(--accent-primary);border-style:dashed;color:var(--accent-primary);box-shadow:0 0 12px color-mix(in srgb,var(--accent-primary) 35%,transparent);transform:translate(-50%,-50%) scale(1.06)}.ghost-node.null-slot{border-color:var(--error);border-style:dashed;border-width:max(2px,calc(var(--tree-node-size, 60px) * .06));color:var(--error);background:color-mix(in srgb,var(--error) 16%,var(--bg-surface));box-shadow:0 0 10px color-mix(in srgb,var(--error) 45%,transparent);font-weight:700;line-height:1;pointer-events:none;cursor:default;z-index:3;animation:null-slot-miss var(--null-slot-ms,.32s) ease-out both}@keyframes null-slot-miss{0%{opacity:0;transform:translate(-50%,-50%) scale(.55);box-shadow:0 0 0 0 color-mix(in srgb,var(--error) 0%,transparent)}30%{opacity:1;transform:translate(-50%,-50%) scale(1.18);background:color-mix(in srgb,var(--error) 38%,var(--bg-surface));box-shadow:0 0 18px color-mix(in srgb,var(--error) 85%,transparent)}48%{transform:translate(calc(-50% - var(--tree-node-size, 60px) * .1),-50%) scale(1.08)}66%{transform:translate(calc(-50% + var(--tree-node-size, 60px) * .08),-50%) scale(1.03)}82%{transform:translate(calc(-50% - var(--tree-node-size, 60px) * .03),-50%) scale(1)}to{opacity:1;transform:translate(-50%,-50%) scale(1);background:color-mix(in srgb,var(--error) 16%,var(--bg-surface));box-shadow:0 0 10px color-mix(in srgb,var(--error) 45%,transparent)}}.tree-node.pointer-return{animation:tree-node-return var(--tree-move-ms,.55s) ease-out var(--tree-edge-fill,.2s) both}@keyframes tree-node-return{0%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--success) 70%,transparent);filter:brightness(1)}35%{transform:translate(-50%,-50%) scale(1.14);filter:brightness(1.6)}to{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 14px transparent;filter:brightness(1)}}.tree-pointer{display:flex;flex-direction:column;align-items:center;pointer-events:none}.pointer-arrow-icon{width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--accent-primary);filter:drop-shadow(0 0 6px var(--accent-primary));animation:pointer-bob .85s ease-in-out infinite}@keyframes pointer-bob{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.tree-fit .tree-node{width:var(--tree-node-size,60px);height:var(--tree-node-size,60px);font-size:calc(var(--tree-node-size, 60px) * .3)}.tree-fit .ghost-node{width:calc(var(--tree-node-size, 60px) * .62);height:calc(var(--tree-node-size, 60px) * .62);font-size:calc(var(--tree-node-size, 60px) * .26)}.tree-visit-badge{position:absolute;top:-4%;right:-4%;transform:translate(35%,-35%);min-width:max(14px,calc(var(--tree-node-size, 60px) * .38));height:max(14px,calc(var(--tree-node-size, 60px) * .38));padding:0 2px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-family:var(--font-code);font-weight:700;font-size:max(9px,calc(var(--tree-node-size, 60px) * .22));line-height:1;background:var(--success);color:var(--bg-app);border:1px solid color-mix(in srgb,var(--bg-app) 55%,transparent);pointer-events:none;z-index:3;animation:tree-badge-in .36s cubic-bezier(.34,1.56,.64,1) both;transition:background var(--tree-move-ms,.32s) ease,box-shadow var(--tree-move-ms,.32s) ease}.tree-visit-badge.latest{background:var(--accent-primary);box-shadow:0 0 8px color-mix(in srgb,var(--accent-primary) 60%,transparent)}@keyframes tree-badge-in{0%{opacity:0;transform:translate(35%,-35%) scale(.3)}to{opacity:1;transform:translate(35%,-35%) scale(1)}}.lca-return-badge{animation:lca-return-in .32s cubic-bezier(.34,1.56,.64,1) both;transition:box-shadow .32s ease}@keyframes lca-return-in{0%{opacity:0;transform:translateX(-50%) scale(.4)}to{opacity:1;transform:translateX(-50%) scale(1)}}@media (prefers-reduced-motion:reduce){.ghost-node.null-slot,.lca-return-badge,.pointer-arrow-icon,.tree-edge-ghost,.tree-edge-overlay-current,.tree-edge-pulse,.tree-node.current-in-traversal:after,.tree-visit-badge{animation:none!important}.tree-edge{transition:none!important}.flying-chip-node,.tree-edge-pulse{display:none}}.flying-chip-node{width:30px;height:30px;border-radius:50%;background:var(--accent-primary);color:var(--bg-app);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:var(--font-code);animation:fly-to-log var(--tree-fly-ms,.62s) cubic-bezier(.4,0,.6,1) forwards;box-shadow:0 0 14px color-mix(in srgb,var(--accent-primary) 60%,transparent)}@keyframes fly-to-log{0%{transform:translate(0) scale(1);opacity:1}60%{transform:translate(calc(var(--fly-dx) * .7),calc(var(--fly-dy) * .7)) scale(.85);opacity:.9}to{transform:translate(var(--fly-dx),var(--fly-dy)) scale(.55);opacity:0}}