Coat of Many Colours Challenge
Given a list of unique colour names as input, sort them in the order that they first appear in Joseph's Amazing Technicolour Dreamcoat.

Example
Input:  green, blue, red, brown
Output: red, green, brown, blue

The full list of colours, in order, is:
 1. red
 2. yellow
 3. green
 4. brown
 5. scarlet
 6. black
 7. ochre
 8. peach
 9. ruby
10. olive
11. violet
12. fawn
13. lilac
14. gold
15. chocolate
16. mauve
17. cream
18. crimson
19. silver
20. rose
21. azure
22. lemon
23. russet
24. grey
25. purple
26. white
27. pink
28. orange
29. blue

Or as an array of strings:
[&quot;red&quot;,&quot;yellow&quot;,&quot;green&quot;,&quot;brown&quot;,&quot;scarlet&quot;,&quot;black&quot;,&quot;ochre&quot;,&quot;peach&quot;,&quot;ruby&quot;,&quot;olive&quot;,&quot;violet&quot;,&quot;fawn&quot;,&quot;lilac&quot;,&quot;gold&quot;,&quot;chocolate&quot;,&quot;mauve&quot;,&quot;cream&quot;,&quot;crimson&quot;,&quot;silver&quot;,&quot;rose&quot;,&quot;azure&quot;,&quot;lemon&quot;,&quot;russet&quot;,&quot;grey&quot;,&quot;purple&quot;,&quot;white&quot;,&quot;pink&quot;,&quot;orange&quot;,&quot;blue&quot;]


Rules

You may take input by any reasonable, convenient means (e.g., an array of strings, a delimited string, individual strings) as long as it's permitted by our standard I/O rules, but please specify your input method in your answer.
You may do the same for your output.
The input will only ever contain colours from the above list.
Your solution should be able to handle empty inputs.
You may choose whether all words in the input are consistently uppercase, lowercase or title case but your output's casing must match your input's.
This is code-golf so lowest byte count in each language wins.
As always, standard loopholes are forbidden.


Test cases
Input:  []
Output: []

Input:  [&quot;green&quot;, &quot;blue&quot;, &quot;red&quot;, &quot;brown&quot;]
Output: [&quot;red&quot;, &quot;green&quot;, &quot;brown&quot;, &quot;blue&quot;]

Input:  [&quot;gold&quot;, &quot;grey&quot;, &quot;green&quot;]
Output: [&quot;green&quot;, &quot;gold&quot;, &quot;grey&quot;]

Input:  [&quot;ruby&quot;,&quot;yellow&quot;,&quot;red&quot;,&quot;grey&quot;]
Output: [&quot;red&quot;, &quot;yellow&quot;, &quot;ruby&quot;, &quot;grey&quot;]

Input:  [&quot;gold&quot;, &quot;green&quot;, &quot;fawn&quot;, &quot;white&quot;, &quot;azure&quot;, &quot;rose&quot;, &quot;black&quot;, &quot;purple&quot;, &quot;orange&quot;, &quot;silver&quot;, &quot;ruby&quot;, &quot;blue&quot;, &quot;lilac&quot;, &quot;crimson&quot;, &quot;pink&quot;, &quot;cream&quot;, &quot;lemon&quot;, &quot;russet&quot;, &quot;grey&quot;, &quot;olive&quot;, &quot;violet&quot;, &quot;mauve&quot;, &quot;chocolate&quot;, &quot;yellow&quot;, &quot;peach&quot;, &quot;brown&quot;, &quot;ochre&quot;, &quot;scarlet&quot;, &quot;red&quot;]
Output: [&quot;red&quot;, &quot;yellow&quot;, &quot;green&quot;, &quot;brown&quot;, &quot;scarlet&quot;, &quot;black&quot;, &quot;ochre&quot;, &quot;peach&quot;, &quot;ruby&quot;, &quot;olive&quot;, &quot;violet&quot;, &quot;fawn&quot;, &quot;lilac&quot;, &quot;gold&quot;, &quot;chocolate&quot;, &quot;mauve&quot;, &quot;cream&quot;, &quot;crimson&quot;, &quot;silver&quot;, &quot;rose&quot;, &quot;azure&quot;, &quot;lemon&quot;, &quot;russet&quot;, &quot;grey&quot;, &quot;purple&quot;, &quot;white&quot;, &quot;pink&quot;, &quot;orange&quot;, &quot;blue&quot;]
PowerShell, 262 155 151 127 125 95 bytes



$args|sort{"rlyegwbrscbrocpyrvo lvnfaldgccvmacmcvseraolsrygpptwkpnoeb".indexof((-join$_[3,0]))}


Try it online!

Naive approach. PowerShell sort-object can sort based on a script block that gets executed for every object. Here we're simply getting the .IndexOf() the color from a string, which will assign a numerical value to each color, and then sorts based on those numbers. The string is constructed from the fourth and first letters of each color to ensure uniqueness. Output is implicit.

-4 bytes thanks to Shaggy.
-2 bytes thanks to mazzy.
A whopping -30 bytes thanks to KGlasier.