So the last thing I tried to fix the delay on phone worked. It basically brute forced the CSS into the head regardless of whether the head existed or not, and once the head finished loading, it stopped the brute forcing, added the CSS properly at the end of head, and then deleted any CSS previously inserted with the brute forcing tactic. This isn't the nicest solution, but it's working.
With this version, several color values are updated. I've introduced button color and button color stark to allow more possibilities for future. Appearance remains unchanged. Also, the theme engine station where users can customize colors is now fetched from my github repo. The script stores everything in sessionStorage so that the loading time is not great for every refresh. This is different from localStorage because it expires every time the browser is closed. So, the value in sessionStorage will be updated once every time the browser is newly opened and the engine station is visited.