 of transpiler tooling and configuration, they also require sacrificing code readability in order to work, e.g. <code>&lt;a class={classnames(styles.button, styles.danger)}&gt;&lt;/a&gt;</code> vs <code>&lt;a class=&quot;button danger&quot;&gt;&lt;/a&gt;</code> (or <code>m(&quot;a.button.danger&quot;)</code> if we&#39;re using hyperscript).</p>
<p>Often sacrifices also need to be made at time of debugging, when mapping rendered CSS class names back to their source. Often all you get in browser developer too