- Pass current theme as ?theme=dark|light in popout URL - viewer.js, app.js, palette.js all pass theme to popout - popout.html reads theme from URL param first (fallback: localStorage, then dark) - Also syncs theme back to localStorage when set via query param