{# Settings drawer — five tabs: Imports / Profile / Density / ETF pairs / About. Each tab is a separate template included below; switching is purely client-side via Alpine. Cross-tab interactions (e.g. profile changes that recompute pages) post to /preferences and rely on HX-Refresh. Open events come from outside this scope via: window.dispatchEvent(new CustomEvent('open-settings-drawer', { detail: { tab: 'density' } })) `tab` is optional; defaults to 'imports' if not set or unknown. #}
{# Backdrop #} {# Drawer panel — width is resizable via the left-edge drag handle. The icon that opens this drawer is hidden on mobile, so width binds unconditionally. #}