Personally, I just have a simple bash script that copies all of the files to different build folders for each browser and then deletes any browser-specific files.
For example, I have manifest-firefox.json and manifest-chrome.json. After everything is copied (let’s say, for Chrome), the Firefox file is deleted from the build folder and the chrome one is renamed.
The polyfill library is also an option, but I’ve never personally used it.
As for CSS, 99% of the CSS should work on both browsers. If you need to use CSS with a vendor prefix, you can just add it in. Firefox will ignore it.