Block
.snake_caseA component is named for what it is, never for what it looks like. .user_card, not .bg-white.rounded-xl.p-4.shadow-sm . That may save you time when you first write the component, but maintaining it becomes a nightmare. For a dark theme, you need to define dark colors for every component. The second it changes, you have to update all your components. That's O(n) complexity for a simple color swap.
With BEAM, your component always stays .user_card. And after you import theme.css, you get a dark theme automatically as you create any component, with O(1) complexity for swapping colors.
Why snake_case? user_card is one double-click. user-card is two. You will select this token thousands of times. Optimize for the thousands.
HTML id is a document hook, not a styling API. In BEAM, we never use it in CSS. An ID selector has a specificity of 1,0,0. You can never override it with classes without using anotherid or !important, so we get rid of it.
/* The name survives every redesign. */
.user_card {
padding: var(--space-5);
border: 1px solid var(--border-base);
background: var(--bg-surface);
}