add background photo upload (full audit); UI adjustments (all); moved inline JS to script file (all)