We need to talk about Shadow DOM. While the Google official docs strongly encourage the use of Shadow DOM, I quite strongly disagree.
As an example, a couple weeks ago I realized I could style the <summary> part of a <details><summary> set of elements as a button, which would
look great and more readily indicate its function. You can see the improvement here:
Before:

After:

Thankfully I hadn’t swallowed the party-line on Shadown DOM and this is the full set of CSS changes I had to make, just the following additions:
details {
summary {
display: inline-block;
outline: none;
padding: 4px;
background: var(--surface);
color: var(--on-surface);
border: solid 1px var(--surface-1dp);
cursor: pointer;
list-style: none;
margin: 8px 0;
}
summary::-webkit-details-marker {
display: none;
}
}
details[open] {
border: solid 1px var(--on-surface);
padding: 0 8px 16px 8px;
background: var(--surface);
margin: 8px 8px 8px 0;
summary {
margin-top: 8px;
margin-bottom: 8px;
}
}
Note that this Style change Cascaded across three controls, almost as if
that’s what CSS was designed to do. If I had fallen into the Shadow DOM trap
I would have had to change the embedded CSS for every element that used
summary and details, and that’s not even mentioning the performance
penalty I’d pay. So
please think twice before adopting Shadow DOM.
Joe Gregorio