Author's Note: This post was originally written in April 2014 and since then a lot has changed with Shadow DOM CSS. I've updated the post to reflect the current state of things as of March 2016.

This guide is my attempt to track the progress of all the new CSS selectors which affect the Shadow DOM. I've written this from the perspective of someone who uses Polymer so in a few places I point out polyfill features like Custom Properties (CSS Variables) and @apply. But the selectors themselves are all native and comply to the current draft spec.

:host

Selects a shadow host element. May contain additional identifiers in parenthesis.
:host(.fancy) {
  display: inline-block;
  background: purple;
}

Try it on JS Bin | Read the Spec

Support Type Chrome Firefox Internet Explorer Safari Opera
Polyfill Yes Yes 10+ 6+ Yes
Native 35 ? ? ? ?

:host-context

Selects a shadow host based on a matching parent element.
:host-context(.blocky) {
  display: block
  background: red;
}

Try it on JS Bin | Read the Spec

Support Type Chrome Firefox Internet Explorer Safari Opera
Polyfill Yes Yes 10+ 6+ Yes
Native 35 ? ? ? ?

::content (renamed to ::slotted)

Selects distributed nodes inside of an element. `::content` was renamed to `::slotted` but as of yet no browser has shipped the renamed version. It's important to note that `::slotted` can only select top-level children, it can't do descendant selectors.
/* Current implementation in Chrome */
::content h1 {
  color: red;
}

/* Upcoming implementation in Chrome and Safari */
::slotted(h1) {
  color: red;
}

Try it on JS Bin | Read the Spec

Support Type Chrome Firefox Internet Explorer Safari Opera
Polyfill Yes Yes 10+ 6+ Yes
Native 35 ? ? ? ?

Custom Properties

Exposes a custom property (a.k.a. [CSS variable](https://developers.google.com/web/updates/2016/02/css-variables-why-should-you-care?hl=en)) to be styled from the outside. Polymer will [polyfill support for custom properties](https://www.polymer-project.org/1.0/docs/devguide/styling.html#xscope-styling-details) in style tags marked as `