{% comment %} Trigger: click toggles in click mode; in hover mode opening/closing is driven by the root's mouseenter/mouseleave (with intent delays) instead. {% endcomment %}
{{ trigger }}
{% comment %} Outer frame is placed by the shared positioning helper (it owns top/left and, for centered alignment, a translateX transform). The inner panel owns the enter/leave transition, so its scale transform never fights the helper's alignment transform and it stays invisible until it has been positioned. {% endcomment %}