Более-менее хорошее решение предложил
Владимир Мальков.
К сожалению селектор
* протекает и в shadow DOM, но
чаще всего это не имеет значения.
В будущем могут помочь css правила:
contain: layout - сейчас нет поддержки браузерами.
all: revert - сейчас нет поддержки браузерами
revert.
Можно использовать
all: unset, для всего, но тогда пропадут и стили по умолчанию, придётся к каждому элементу возвращать их вручную.
Абсолютная гарантия есть сейчас только у
iframe с
allowtransparency="true" но там придётся сильно морочиться с размерами и позиционированием.