Public preview for read-only browsing

You can now browse parts of the dashboard without an account so prospects and AI agents can see what Last Price actually looks like before signing up. Anything that writes still requires auth.

The `/app` shell now renders in a read-only preview mode for signed out visitors. Catalogs, sample functions, and the marketplace are visible; anything that mutates state (creating a function, running a priced call, editing settings) prompts a sign-in instead.

Header CTAs adapt: signed-out visitors see "Sign in" and "Open the app"; signed-in users see their workspace switcher

A dedicated public-preview API guard blocks write paths at the server boundary, not just in the UI

Telemetry hook captures preview-mode page views separately so we can measure conversion from preview to signed up

Dashboard layout no longer races on the redirect decision when a session is still loading