Declarative shadow DOM
+Typed props, refs and styles without the boilerplate.
+
+ <labeled-field> and <color-swatch-picker> render
+ into the light DOM; their CSS lives in a <style> in
+ <head>. They never touch the other components: each edit is
+ shared with <main-context>, which calls the
+ on… callbacks the other components registered.
+
Click or hover a star. Clicking the current value clears it.
+The page can't reach inside, but the component can, through this.root.
Each prop change reflects to an attribute, and this list records them as mutations.
+