PageSourceSearch

https://www.hamienet.com/assets/SouthparkVariants-DYvo6xjJ.js

js hamienet.com collected 2026-10-02 05:03:36 UTC 24,108 bytes, 926 lines download raw bytes

1const CURATED_ANIMAL_VARIANTS = {
2  // 1. FOX (Guitar Family)
3  fox: [
4    {
5      id: "fox_0",
6      variantIndex: 0,
7      label: "Red Fox (First Chair / Lead)",
8      furColor: "#eb6a24",
9      sleeveColor: "#eb6a24",
10      strokeColor: "#3d180a",
11      strokeWidth: 2.5,
12      hueShift: 0,
13      saturate: 1,
14      brightness: 1,
15      costumeIds: ["cool_sunglasses", "brown_vest"],
16      scaleMultiplier: 1,
17      hatTilt: 0
18    },
19    {
20      id: "fox_1",
21      variantIndex: 1,
22      label: "Silver / Charcoal Fox (Rhythm)",
23      furColor: "#4b5563",
24      sleeveColor: "#4b5563",
25      strokeColor: "#1e293b",
26      strokeWidth: 2.5,
27      hueShift: 195,
28      saturate: 0.35,
29      brightness: 0.75,
30      costumeIds: ["sp_stan_beanie", "striped_scarf"],
31      scaleMultiplier: 1.04,
32      hatTilt: -3
33    },
34    {
35      id: "fox_2",
36      variantIndex: 2,
37      label: "Arctic Sand Fox (Acoustic)",
38      furColor: "#e2d5c3",
39      sleeveColor: "#e2d5c3",
40      strokeColor: "#634b35",
41      strokeWidth: 2.5,
42      hueShift: 35,
43      saturate: 0.65,
44      brightness: 1.25,
45      costumeIds: ["red_bow_tie", "nerd_glasses"],
46      scaleMultiplier: 0.96,
47      hatTilt: 3
48    }
49  ],
50  // 2. BEAR (Organ Family)
51  bear: [
52    {
53      id: "bear_0",
54      variantIndex: 0,
55      label: "Grizzly Brown Bear (Primary)",
56      furColor: "#8c5c3e",
57      sleeveColor: "#8c5c3e",
58      strokeColor: "#382012",
59      strokeWidth: 2.5,
60      hueShift: 0,
61      saturate: 1,
62      brightness: 1,
63      costumeIds: ["sp_top_hat", "red_bow_tie"],
64      scaleMultiplier: 1,
65      hatTilt: 0
66    },
67    {
68      id: "bear_1",
69      variantIndex: 1,
70      label: "Black Forest Bear (Shadow)",
71      furColor: "#292524",
72      sleeveColor: "#292524",
73      strokeColor: "#12100e",
74      strokeWidth: 2.5,
75      hueShift: 0,
76      saturate: 0.3,
77      brightness: 0.52,
78      costumeIds: ["cool_sunglasses", "gold_chain"],
79      scaleMultiplier: 1.05,
80      hatTilt: -4
81    },
82    {
83      id: "bear_2",
84      variantIndex: 2,
85      label: "Cinnamon Blonde Bear (Honey)",
86      furColor: "#b45309",
87      sleeveColor: "#b45309",
88      strokeColor: "#451a03",
89      strokeWidth: 2.5,
90      hueShift: 25,
91      saturate: 1.3,
92      brightness: 1.15,
93      costumeIds: ["sp_cowboy_hat", "bandana"],
94      scaleMultiplier: 0.96,
95      hatTilt: 4
96    }
97  ],
98  // 3. WOLF (Bass Family)
99  wolf: [
100    {
101      id: "wolf_0",
102      variantIndex: 0,
103      label: "Timber Wolf (Upright / Lead Bass)",
104      furColor: "#7d8692",
105      sleeveColor: "#7d8692",
106      strokeColor: "#242930",
107      strokeWidth: 2.5,
108      hueShift: 0,
109      saturate: 1,
110      brightness: 1,
111      costumeIds: ["cool_sunglasses"],
112      scaleMultiplier: 1,
113      hatTilt: 0
114    },
115    {
116      id: "wolf_1",
117      variantIndex: 1,
118      label: "Midnight Shadow Wolf (Synth Bass)",
119      furColor: "#27272a",
120      sleeveColor: "#27272a",
121      strokeColor: "#09090b",
122      strokeWidth: 2.5,
123      hueShift: 0,
124      saturate: 0.2,
125      brightness: 0.48,
126      costumeIds: ["villain_goatee", "gold_chain"],
127      scaleMultiplier: 1.04,
128      hatTilt: -3
129    },
130    {
131      id: "wolf_2",
132      variantIndex: 2,
133      label: "Arctic White Wolf (Slap Bass)",
134      furColor: "#e2e8f0",
135      sleeveColor: "#e2e8f0",
136      strokeColor: "#475569",
137      strokeWidth: 2.5,
138      hueShift: 210,
139      saturate: 0.25,
140      brightness: 1.32,
141      costumeIds: ["sp_kyle_ushanka", "striped_scarf"],
142      scaleMultiplier: 0.96,
143      hatTilt: 3
144    }
145  ],
146  // 4. LION (Brass Family)
147  lion: [
148    {
149      id: "lion_0",
150      variantIndex: 0,
151      label: "Savanna Gold Lion (1st Trumpet)",
152      furColor: "#e09f3e",
153      sleeveColor: "#e09f3e",
154      strokeColor: "#52320b",
155      strokeWidth: 2.5,
156      hueShift: 0,
157      saturate: 1,
158      brightness: 1,
159      costumeIds: ["gold_chain"],
160      scaleMultiplier: 1,
161      hatTilt: 0
162    },
163    {
164      id: "lion_1",
165      variantIndex: 1,
166      label: "White Platinum Lion (Trombone)",
167      furColor: "#dcd3c2",
168      sleeveColor: "#dcd3c2",
169      strokeColor: "#574c38",
170      strokeWidth: 2.5,
171      hueShift: 30,
172      saturate: 0.4,
173      brightness: 1.25,
174      costumeIds: ["sp_top_hat", "black_bow_tie"],
175      scaleMultiplier: 1.04,
176      hatTilt: -3
177    },
178    {
179      id: "lion_2",
180      variantIndex: 2,
181      label: "Dark Mane Russet Lion (French Horn)",
182      furColor: "#92400e",
183      sleeveColor: "#92400e",
184      strokeColor: "#381604",
185      strokeWidth: 2.5,
186      hueShift: -18,
187      saturate: 1.2,
188      brightness: 0.85,
189      costumeIds: ["sp_cowboy_hat", "bandana"],
190      scaleMultiplier: 0.97,
191      hatTilt: 3
192    }
193  ],
194  // 5. OWL (Pipe / Flute Family)
195  owl: [
196    {
197      id: "owl_0",
198      variantIndex: 0,
199      label: "Barn Owl (Concert Flute)",
200      furColor: "#8b5a2b",
201      sleeveColor: "#8b5a2b",
202      strokeColor: "#36210c",
203      strokeWidth: 2.5,
204      hueShift: 0,
205      saturate: 1,
206      brightness: 1,
207      costumeIds: ["nerd_glasses"],
208      scaleMultiplier: 1,
209      hatTilt: 0
210    },
211    {
212      id: "owl_1",
213      variantIndex: 1,
214      label: "Snowy Arctic Owl (Piccolo)",
215      furColor: "#e2e8f0",
216      sleeveColor: "#e2e8f0",
217      strokeColor: "#475569",
218      strokeWidth: 2.5,
219      hueShift: 180,
220      saturate: 0.2,
221      brightness: 1.35,
222      costumeIds: ["sp_wizard_hat", "red_bow_tie"],
223      scaleMultiplier: 0.95,
224      hatTilt: -4
225    },
226    {
227      id: "owl_2",
228      variantIndex: 2,
229      label: "Great Horned Owl (Pan Flute)",
230      furColor: "#52433d",
231      sleeveColor: "#52433d",
232      strokeColor: "#201815",
233      strokeWidth: 2.5,
234      hueShift: -25,
235      saturate: 0.7,
236      brightness: 0.78,
237      costumeIds: ["monocle", "brown_vest"],
238      scaleMultiplier: 1.03,
239      hatTilt: 3
240    }
241  ],
242  // 6. RACCOON (Drum / Percussion Family)
243  raccoon: [
244    {
245      id: "raccoon_0",
246      variantIndex: 0,
247      label: "Bandit Mask Raccoon (Drum Kit)",
248      furColor: "#757575",
249      sleeveColor: "#757575",
250      strokeColor: "#262626",
251      strokeWidth: 2.5,
252      hueShift: 0,
253      saturate: 1,
254      brightness: 1,
255      costumeIds: ["sp_cartman_beanie"],
256      scaleMultiplier: 1,
257      hatTilt: 0
258    },
259    {
260      id: "raccoon_1",
261      variantIndex: 1,
262      label: "Slate Shadow Raccoon (Rock Drums)",
263      furColor: "#3f3f46",
264      sleeveColor: "#3f3f46",
265      strokeColor: "#18181b",
266      strokeWidth: 2.5,
267      hueShift: 0,
268      saturate: 0.25,
269      brightness: 0.65,
270      costumeIds: ["pirate_eyepatch", "bandana"],
271      scaleMultiplier: 1.03,
272      hatTilt: -4
273    },
274    {
275      id: "raccoon_2",
276      variantIndex: 2,
277      label: "Toasted Cinnamon Raccoon (Percussion Fill)",
278      furColor: "#c2a68c",
279      sleeveColor: "#c2a68c",
280      strokeColor: "#4f3c2c",
281      strokeWidth: 2.5,
282      hueShift: 40,
283      saturate: 1.1,
284      brightness: 1.18,
285      costumeIds: ["sp_stan_beanie", "red_bow_tie"],
286      scaleMultiplier: 0.97,
287      hatTilt: 3
288    }
289  ],
290  // 7. HAMSTER (Piano / Keyboard Family)
291  hamster: [
292    {
293      id: "hamster_0",
294      variantIndex: 0,
295      label: "Syrian Golden Hamster (Grand Piano)",
296      furColor: "#d99d5a",
297      sleeveColor: "#d99d5a",
298      strokeColor: "#6c412c",
299      strokeWidth: 1.3,
300      hueShift: 0,
301      saturate: 1,
302      brightness: 1,
303      costumeIds: ["sp_top_hat", "red_bow_tie"],
304      scaleMultiplier: 1,
305      hatTilt: 0
306    },
307    {
308      id: "hamster_1",
309      variantIndex: 1,
310      label: "Roborovski Cream Hamster (Rhodes)",
311      furColor: "#f5e6ca",
312      sleeveColor: "#f5e6ca",
313      strokeColor: "#785b37",
314      strokeWidth: 1.3,
315      hueShift: 20,
316      saturate: 0.75,
317      brightness: 1.28,
318      costumeIds: ["nerd_glasses", "black_bow_tie"],
319      scaleMultiplier: 0.95,
320      hatTilt: -3
321    },
322    {
323      id: "hamster_2",
324      variantIndex: 2,
325      label: "Panda Dwarf Hamster (Clavinet)",
326      furColor: "#334155",
327      sleeveColor: "#334155",
328      strokeColor: "#0f172a",
329      strokeWidth: 1.3,
330      hueShift: 205,
331      saturate: 0.45,
332      brightness: 0.65,
333      costumeIds: ["cool_sunglasses", "gold_chain"],
334      scaleMultiplier: 1.04,
335      hatTilt: 4
336    }
337  ],
338  // 8. OTTER (Chromatic Mallet Family)
339  otter: [
340    {
341      id: "otter_0",
342      variantIndex: 0,
343      label: "River Otter (Vibraphone)",
344      furColor: "#ad7557",
345      sleeveColor: "#ad7557",
346      strokeColor: "#422617",
347      strokeWidth: 1.3,
348      hueShift: 0,
349      saturate: 1,
350      brightness: 1,
351      costumeIds: ["striped_scarf"],
352      scaleMultiplier: 1,
353      hatTilt: 0
354    },
355    {
356      id: "otter_1",
357      variantIndex: 1,
358      label: "Sea Otter Dark Seal (Marimba)",
359      furColor: "#452c1e",
360      sleeveColor: "#452c1e",
361      strokeColor: "#1a0e08",
362      strokeWidth: 1.3,
363      hueShift: 0,
364      saturate: 0.5,
365      brightness: 0.58,
366      costumeIds: ["nerd_glasses", "brown_vest"],
367      scaleMultiplier: 1.04,
368      hatTilt: -4
369    },
370    {
371      id: "otter_2",
372      variantIndex: 2,
373      label: "Amber River Otter (Xylophone)",
374      furColor: "#c99a6b",
375      sleeveColor: "#c99a6b",
376      strokeColor: "#573d23",
377      strokeWidth: 1.3,
378      hueShift: 28,
379      saturate: 1.25,
380      brightness: 1.2,
381      costumeIds: ["sp_cowboy_hat", "red_bow_tie"],
382      scaleMultiplier: 0.96,
383      hatTilt: 4
384    }
385  ],
386  // 9. DEER (Strings / Violins Family)
387  deer: [
388    {
389      id: "deer_0",
390      variantIndex: 0,
391      label: "Fawn Tan Deer (1st Violin / Concertmaster)",
392      furColor: "#ebbe6c",
393      sleeveColor: "#ebbe6c",
394      strokeColor: "#5c371e",
395      strokeWidth: 1.3,
396      hueShift: 0,
397      saturate: 1,
398      brightness: 1,
399      costumeIds: ["sp_top_hat", "red_bow_tie"],
400      scaleMultiplier: 1,
401      hatTilt: 0
402    },
403    {
404      id: "deer_1",
405      variantIndex: 1,
406      label: "Red Chestnut Deer (2nd Violin)",
407      furColor: "#a14e28",
408      sleeveColor: "#a14e28",
409      strokeColor: "#421a0a",
410      strokeWidth: 1.3,
411      hueShift: -15,
412      saturate: 1.25,
413      brightness: 0.88,
414      costumeIds: ["green_jacket", "black_bow_tie"],
415      scaleMultiplier: 1.04,
416      hatTilt: -3
417    },
418    {
419      id: "deer_2",
420      variantIndex: 2,
421      label: "Frost Piebald Deer (Viola)",
422      furColor: "#ded4c3",
423      sleeveColor: "#ded4c3",
424      strokeColor: "#5c5243",
425      strokeWidth: 1.3,
426      hueShift: 35,
427      saturate: 0.45,
428      brightness: 1.24,
429      costumeIds: ["striped_scarf", "nerd_glasses"],
430      scaleMultiplier: 0.96,
431      hatTilt: 3
432    }
433  ],
434  // 10. PENGUIN (Ensemble / Choirs Family)
435  penguin: [
436    {
437      id: "penguin_0",
438      variantIndex: 0,
439      label: "Emperor Classic Penguin (Choir A)",
440      furColor: "#7d7c7e",
441      sleeveColor: "#7d7c7e",
442      strokeColor: "#1a202c",
443      strokeWidth: 1.3,
444      hueShift: 0,
445      saturate: 1,
446      brightness: 1,
447      costumeIds: ["black_bow_tie"],
448      scaleMultiplier: 1,
449      hatTilt: 0
450    },
451    {
452      id: "penguin_1",
453      variantIndex: 1,
454      label: "Blue Fairy Penguin (Choir B)",
455      furColor: "#334155",
456      sleeveColor: "#334155",
457      strokeColor: "#0f172a",
458      strokeWidth: 1.3,
459      hueShift: 215,
460      saturate: 0.85,
461      brightness: 0.78,
462      costumeIds: ["cool_sunglasses", "striped_scarf"],
463      scaleMultiplier: 0.94,
464      hatTilt: -4
465    },
466    {
467      id: "penguin_2",
468      variantIndex: 2,
469      label: "Gentoo Midnight Penguin (Orchestra Hit)",
470      furColor: "#1e293b",
471      sleeveColor: "#1e293b",
472      strokeColor: "#020617",
473      strokeWidth: 1.3,
474      hueShift: 0,
475      saturate: 0.2,
476      brightness: 0.45,
477      costumeIds: ["sp_top_hat", "gold_chain"],
478      scaleMultiplier: 1.04,
479      hatTilt: 4
480    }
481  ],
482  // 11. BADGER (Reed / Saxophone Family)
483  badger: [
484    {
485      id: "badger_0",
486      variantIndex: 0,
487      label: "European Badger (Tenor Sax)",
488      furColor: "#807f7e",
489      sleeveColor: "#807f7e",
490      strokeColor: "#242c38",
491      strokeWidth: 1.3,
492      hueShift: 0,
493      saturate: 1,
494      brightness: 1,
495      costumeIds: ["green_jacket"],
496      scaleMultiplier: 1,
497      hatTilt: 0
498    },
499    {
500      id: "badger_1",
501      variantIndex: 1,
502      label: "Honey Blonde Badger (Alto Sax)",
503      furColor: "#d4af7a",
504      sleeveColor: "#d4af7a",
505      strokeColor: "#5e482b",
506      strokeWidth: 1.3,
507      hueShift: 38,
508      saturate: 1.25,
509      brightness: 1.25,
510      costumeIds: ["sp_cowboy_hat", "bandana"],
511      scaleMultiplier: 0.98,
512      hatTilt: -3
513    },
514    {
515      id: "badger_2",
516      variantIndex: 2,
517      label: "Graphite Silver Badger (Baritone Sax)",
518      furColor: "#475569",
519      sleeveColor: "#475569",
520      strokeColor: "#1e293b",
521      strokeWidth: 1.3,
522      hueShift: 200,
523      saturate: 0.45,
524      brightness: 0.72,
525      costumeIds: ["monocle", "red_bow_tie"],
526      scaleMultiplier: 1.04,
527      hatTilt: 3
528    }
529  ],
530  // 12. RABBIT (Synth Lead Family)
531  rabbit: [
532    {
533      id: "rabbit_0",
534      variantIndex: 0,
535      label: "Cinnamon Cottontail (Square Lead)",
536      furColor: "#d7a666",
537      sleeveColor: "#d7a666",
538      strokeColor: "#735e52",
539      strokeWidth: 1.3,
540      hueShift: 0,
541      saturate: 1,
542      brightness: 1,
543      costumeIds: ["sp_wizard_hat"],
544      scaleMultiplier: 1,
545      hatTilt: 0
546    },
547    {
548      id: "rabbit_1",
549      variantIndex: 1,
550      label: "Snowshoe White Hare (Sawtooth Lead)",
551      furColor: "#f1f5f9",
552      sleeveColor: "#f1f5f9",
553      strokeColor: "#475569",
554      strokeWidth: 1.3,
555      hueShift: 180,
556      saturate: 0.15,
557      brightness: 1.35,
558      costumeIds: ["sp_kyle_ushanka", "red_bow_tie"],
559      scaleMultiplier: 0.95,
560      hatTilt: -4
561    },
562    {
563      id: "rabbit_2",
564      variantIndex: 2,
565      label: "Dutch Charcoal Lop (Sync Lead)",
566      furColor: "#374151",
567      sleeveColor: "#374151",
568      strokeColor: "#111827",
569      strokeWidth: 1.3,
570      hueShift: 0,
571      saturate: 0.25,
572      brightness: 0.6,
573      costumeIds: ["cool_sunglasses", "gold_chain"],
574      scaleMultiplier: 1.04,
575      hatTilt: 4
576    }
577  ],
578  // 13. KOALA (Synth Pad Family)
579  koala: [
580    {
581      id: "koala_0",
582      variantIndex: 0,
583      label: "Eucalyptus Grey Koala (Warm Pad)",
584      furColor: "#b4a696",
585      sleeveColor: "#b4a696",
586      strokeColor: "#474440",
587      strokeWidth: 1.3,
588      hueShift: 0,
589      saturate: 1,
590      brightness: 1,
591      costumeIds: ["nerd_glasses"],
592      scaleMultiplier: 1,
593      hatTilt: 0
594    },
595    {
596      id: "koala_1",
597      variantIndex: 1,
598      label: "Silver Ash Koala (Bowed Glass)",
599      furColor: "#64748b",
600      sleeveColor: "#64748b",
601      strokeColor: "#1e293b",
602      strokeWidth: 1.3,
603      hueShift: 210,
604      saturate: 0.6,
605      brightness: 0.82,
606      costumeIds: ["sp_cartman_beanie", "striped_scarf"],
607      scaleMultiplier: 1.04,
608      hatTilt: -3
609    },
610    {
611      id: "koala_2",
612      variantIndex: 2,
613      label: "Sunlit Bush Koala (Halo Pad)",
614      furColor: "#cfbeaa",
615      sleeveColor: "#cfbeaa",
616      strokeColor: "#5c4e3f",
617      strokeWidth: 1.3,
618      hueShift: 30,
619      saturate: 0.85,
620      brightness: 1.22,
621      costumeIds: ["red_bow_tie", "brown_vest"],
622      scaleMultiplier: 0.96,
623      hatTilt: 3
624    }
625  ],
626  // 14. BAT (Synth Effects Family)
627  bat: [
628    {
629      id: "bat_0",
630      variantIndex: 0,
631      label: "Twilight Purple Bat (Sci-Fi FX)",
632      furColor: "#836174",
633      sleeveColor: "#836174",
634      strokeColor: "#2e1b36",
635      strokeWidth: 1.3,
636      hueShift: 0,
637      saturate: 1,
638      brightness: 1,
639      costumeIds: ["superhero_cape"],
640      scaleMultiplier: 1,
641      hatTilt: 0
642    },
643    {
644      id: "bat_1",
645      variantIndex: 1,
646      label: "Midnight Raven Bat (Goblins / Echo)",
647      furColor: "#1f242d",
648      sleeveColor: "#1f242d",
649      strokeColor: "#090b10",
650      strokeWidth: 1.3,
651      hueShift: 240,
652      saturate: 0.35,
653      brightness: 0.45,
654      costumeIds: ["sp_top_hat", "villain_goatee"],
655      scaleMultiplier: 1.05,
656      hatTilt: -4
657    },
658    {
659      id: "bat_2",
660      variantIndex: 2,
661      label: "Golden Flying Fox (Atmosphere)",
662      furColor: "#a16207",
663      sleeveColor: "#a16207",
664      strokeColor: "#451a03",
665      strokeWidth: 1.3,
666      hueShift: 65,
667      saturate: 1.35,
668      brightness: 1.15,
669      costumeIds: ["monocle", "gold_chain"],
670      scaleMultiplier: 0.96,
671      hatTilt: 4
672    }
673  ],
674  // 15. LLAMA (Ethnic Family)
675  llama: [
676    {
677      id: "llama_0",
678      variantIndex: 0,
679      label: "Alpaca Cream Llama (Sitar / Banjo)",
680      furColor: "#ebe3d1",
681      sleeveColor: "#ebe3d1",
682      strokeColor: "#75644d",
683      strokeWidth: 1.3,
684      hueShift: 0,
685      saturate: 1,
686      brightness: 1,
687      costumeIds: ["cool_sunglasses"],
688      scaleMultiplier: 1,
689      hatTilt: 0
690    },
691    {
692      id: "llama_1",
693      variantIndex: 1,
694      label: "Andean Mocha Llama (Koto / Shamisen)",
695      furColor: "#784c32",
696      sleeveColor: "#784c32",
697      strokeColor: "#361e11",
698      strokeWidth: 1.3,
699      hueShift: -25,
700      saturate: 1.1,
701      brightness: 0.72,
702      costumeIds: ["bandana", "sp_cowboy_hat"],
703      scaleMultiplier: 1.04,
704      hatTilt: -3
705    },
706    {
707      id: "llama_2",
708      variantIndex: 2,
709      label: "Midnight Slate Llama (Bagpipe / Kalimba)",
710      furColor: "#334155",
711      sleeveColor: "#334155",
712      strokeColor: "#0f172a",
713      strokeWidth: 1.3,
714      hueShift: 210,
715      saturate: 0.4,
716      brightness: 0.62,
717      costumeIds: ["striped_scarf", "nerd_glasses"],
718      scaleMultiplier: 0.97,
719      hatTilt: 3
720    }
721  ],
722  // 16. GORILLA (Percussive / Drums Family)
723  gorilla: [
724    {
725      id: "gorilla_0",
726      variantIndex: 0,
727      label: "Silverback Granite Gorilla (Timpani)",
728      furColor: "#606369",
729      sleeveColor: "#606369",
730      strokeColor: "#1c1d22",
731      strokeWidth: 1.3,
732      hueShift: 0,
733      saturate: 1,
734      brightness: 1,
735      costumeIds: ["brown_vest"],
736      scaleMultiplier: 1,
737      hatTilt: 0
738    },
739    {
740      id: "gorilla_1",
741      variantIndex: 1,
742      label: "Lowland Obsidian Gorilla (Taiko)",
743      furColor: "#18181b",
744      sleeveColor: "#18181b",
745      strokeColor: "#09090b",
746      strokeWidth: 1.3,
747      hueShift: 0,
748      saturate: 0.15,
749      brightness: 0.42,
750      costumeIds: ["gold_chain", "cool_sunglasses"],
751      scaleMultiplier: 1.06,
752      hatTilt: -4
753    },
754    {
755      id: "gorilla_2",
756      variantIndex: 2,
757      label: "Aged Mountain Frost Gorilla (Steel Drums)",
758      furColor: "#94a3b8",
759      sleeveColor: "#94a3b8",
760      strokeColor: "#334155",
761      strokeWidth: 1.3,
762      hueShift: 205,
763      saturate: 0.35,
764      brightness: 1.28,
765      costumeIds: ["sp_top_hat", "black_bow_tie"],
766      scaleMultiplier: 0.98,
767      hatTilt: 4
768    }
769  ],
770  // 17. PARROT (Sound Effects Family)
771  parrot: [
772    {
773      id: "parrot_0",
774      variantIndex: 0,
775      label: "Scarlet Crimson Macaw (Primary SFX)",
776      furColor: "#b63e43",
777      sleeveColor: "#b63e43",
778      strokeColor: "#68181a",
779      strokeWidth: 1.3,
780      hueShift: 0,
781      saturate: 1,
782      brightness: 1,
783      costumeIds: ["striped_scarf"],
784      scaleMultiplier: 1,
785      hatTilt: 0
786    },
787    {
788      id: "parrot_1",
789      variantIndex: 1,
790      label: "Hyacinth Cobalt Macaw (Laser / Breath)",
791      furColor: "#2563eb",
792      sleeveColor: "#2563eb",
793      strokeColor: "#1e3a8a",
794      strokeWidth: 1.3,
795      hueShift: 220,
796      saturate: 1.4,
797      brightness: 1.1,
798      costumeIds: ["pirate_eyepatch", "bandana"],
799      scaleMultiplier: 1.03,
800      hatTilt: -4
801    },
802    {
803      id: "parrot_2",
804      variantIndex: 2,
805      label: "Amazon Emerald Conure (Applause / Bird Tweet)",
806      furColor: "#16a34a",
807      sleeveColor: "#16a34a",
808      strokeColor: "#14532d",
809      strokeWidth: 1.3,
810      hueShift: 115,
811      saturate: 1.3,
812      brightness: 1.05,
813      costumeIds: ["sp_stan_beanie", "red_bow_tie"],
814      scaleMultiplier: 0.96,
815      hatTilt: 3
816    }
817  ]
818};
819const EXTENDED_COSTUME_ROTATIONS = [
820  ["sp_cartman_beanie", "red_bow_tie"],
821  ["nerd_glasses", "brown_vest"],
822  ["sp_kyle_ushanka", "striped_scarf"],
823  ["sp_cowboy_hat", "bandana"],
824  ["sp_wizard_hat", "gold_chain"],
825  ["sp_top_hat", "black_bow_tie"],
826  ["cool_sunglasses", "green_jacket"],
827  ["monocle", "tuxedo_suit"],
828  ["pirate_eyepatch", "superhero_cape"]
829];
830function hslToHex(h, s, l) {
831  l /= 100;
832  const a = s * Math.min(l, 1 - l) / 100;
833  const f = (n) => {
834    const k = (n + h / 30) % 12;
835    const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
836    return Math.round(255 * color).toString(16).padStart(2, "0");
837  };
838  return `#${f(0)}${f(8)}${f(4)}`;
839}
840function getProceduralAnimalVariant(animalId, instanceIndex, baseFurColor) {
841  const hueShift = Math.round((instanceIndex * 67 + 43) % 360);
842  const cycle = instanceIndex % 3;
843  const saturate = cycle === 0 ? 1.25 : cycle === 1 ? 0.75 : 0.45;
844  const brightness = cycle === 0 ? 1.15 : cycle === 1 ? 0.85 : 0.65;
845  const proceduralHex = hslToHex(hueShift, Math.round(saturate * 60), Math.round(brightness * 50));
846  const costumeIdx = (instanceIndex - 3) % EXTENDED_COSTUME_ROTATIONS.length;
847  const costumeIds = EXTENDED_COSTUME_ROTATIONS[costumeIdx] || ["cool_sunglasses"];
848  const scaleJitter = 0.95 + instanceIndex * 17 % 11 * 0.01;
849  const hatTilt = instanceIndex * 3 % 11 - 5;
850  return {
851    id: `${animalId}_${instanceIndex}`,
852    variantIndex: instanceIndex,
853    label: `${animalId.toUpperCase()} Variant #${instanceIndex + 1} (Procedural)`,
854    furColor: proceduralHex,
855    sleeveColor: proceduralHex,
856    strokeColor: "#1e1b18",
857    strokeWidth: 2,
858    hueShift,
859    saturate,
860    brightness,
861    costumeIds,
862    scaleMultiplier: scaleJitter,
863    hatTilt
864  };
865}
866function getAnimalVariant(animalId, instanceIndex, defaultFurColor = "#eb6a24") {
867  const list = CURATED_ANIMAL_VARIANTS[animalId];
868  if (list && instanceIndex < list.length) {
869    return list[instanceIndex];
870  }
871  return getProceduralAnimalVariant(animalId, instanceIndex);
872}
873function getVariantFilterId(animalId, instanceIndex) {
874  return `sp-filter-${animalId}-v${instanceIndex}`;
875}
876function renderSvgVariantFilter(filterId, hueShift, saturate, brightness) {
877  if (hueShift === 0 && saturate === 1 && brightness === 1) {
878    return "";
879  }
880  const rad = hueShift * Math.PI / 180;
881  const cosVal = Math.cos(rad);
882  const sinVal = Math.sin(rad);
883  const lumR = 0.213;
884  const lumG = 0.715;
885  const lumB = 0.072;
886  const h00 = lumR + cosVal * (1 - lumR) + sinVal * -lumR;
887  const h01 = lumG + cosVal * -lumG + sinVal * -lumG;
888  const h02 = lumB + cosVal * -lumB + sinVal * (1 - lumB);
889  const h10 = lumR + cosVal * -lumR + sinVal * 0.143;
890  const h11 = lumG + cosVal * (1 - lumG) + sinVal * 0.14;
891  const h12 = lumB + cosVal * -lumB + sinVal * -0.283;
892  const h20 = lumR + cosVal * -lumR + sinVal * -0.787;
893  const h21 = lumG + cosVal * -lumG + sinVal * lumG;
894  const h22 = lumB + cosVal * (1 - lumB) + sinVal * lumB;
895  const s = saturate;
896  const b = brightness;
897  const m00 = (lumR * (1 - s) + s * h00) * b;
898  const m01 = (lumG * (1 - s) + s * h01) * b;
899  const m02 = (lumB * (1 - s) + s * h02) * b;
900  const m10 = (lumR * (1 - s) + s * h10) * b;
901  const m11 = (lumG * (1 - s) + s * h11) * b;
902  const m12 = (lumB * (1 - s) + s * h12) * b;
903  const m20 = (lumR * (1 - s) + s * h20) * b;
904  const m21 = (lumG * (1 - s) + s * h21) * b;
905  const m22 = (lumB * (1 - s) + s * h22) * b;
906  const matrixStr = `
907        ${m00.toFixed(3)} ${m01.toFixed(3)} ${m02.toFixed(3)} 0 0
908        ${m10.toFixed(3)} ${m11.toFixed(3)} ${m12.toFixed(3)} 0 0
909        ${m20.toFixed(3)} ${m21.toFixed(3)} ${m22.toFixed(3)} 0 0
910        0 0 0 1 0
911    `.trim().replace(/\s+/g, " ");
912  return `
913        <filter id="${filterId}" color-interpolation-filters="sRGB">
914            <feColorMatrix type="matrix" values="${matrixStr}" />
915        </filter>
916    `.trim();
917}
918function getVariantFilterSvg(filterId, variant) {
919  return renderSvgVariantFilter(filterId, variant.hueShift, variant.saturate, variant.brightness);
920}
921export {
922  getVariantFilterId as a,
923  getVariantFilterSvg as b,
924  getAnimalVariant as g,
925  renderSvgVariantFilter as r
926};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.