In a browser like Chrome, the markup inside an element's shadow root is not visible to the rest of the page. But in browsers like Firefox and Safari, this is not the case. So all of the divs and other bits of markup inside a polymer element are going to be in the main document when you view your site on Firefox or Safari. This means if you write a very loose style selector like:
div {
background: red;
}
It will turn every div (even those inside Polymer elements) red, if you're in a browser like Firefox or Safari. The Shadow DOM polyfill cannot create true style scoping in browsers which lack support (like Firefox, for instance). If you are creating a Polymer element, named x-foo, and you put styles inside of that element, the polyfill will try to help you out by prefixing those styles with your element name.
For example:
// in x-foo.html
:host div {
background: red;
}
becomes:
x-foo div {
background: red;
}
This is useful, but it's not bulletproof, and it means you have to be careful how you write the rest of the styles on your page so you don't accidentally override the styles inside of the elements.