I know this only accounts for some of what you are looking for, but we got this code to work so our logo changes depending on the theme color of the header.
It's only CSS, we are not using any code injection.
//* CHANGE LOGO DEPENDING ON THEME *//
[data-header-theme=""],.bright,.dark, .darkest, .black {
&.header .header-title-logo a {
content: url('INSERT IMAGE URL');
block-size: 50px;
}
&.header .header-mobile-logo a {
content: url('INSERT IMAGE URL');
block-size: 30px;
}
}
The "block-size" is to force the new logo to a certain size so it matches the original.
Hope this can help you 🙂