dfdf480fa1
ArrowDown on a picker that has never been opened pins the deferred path where _tree is still null when the keydown is handled: the panel opens in that render pass and the roving tab stop lands on the first row in the next one. Escape on a closed picker is pinned as a no-op. Two notes, no behaviour change: FirstVisibleInstance records WHY it may trust TreeView.IsExpanded (Blazor Server's single renderer sync context runs the render plus the pending ExpandAll/CollapseAll before the next keydown is dispatched — an await that genuinely yields inside OnAfterRenderAsync would break that), and the stylesheet warns integrators that the absolutely-positioned panel is clipped by any ancestor with overflow: hidden/auto. The ArrowDown focus interop assertion is kept — it was stable across repeated runs — with a comment marking the tabindex as the behavioural check. Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29