Hide manual jobs if not run on specific on branch

I want to have a job that can only be:

  1. Run via manual pipeline
  2. And even better yet is the job being able to only run manually (so that is 2 level of manual now)
  3. Job should not show up in pipeline if (1) fails (meaning it was automated pipeline) or at least not appear or next best case to have the run button disabled if the branch name does not match.

So far I am using rules: if branch name match, when manual.