Say I have a block called .my-block. Depending on whether a specific element, say, .my-header appears before it, I need to style it differently. Because this is easy to do with the CSS sibling selector, I'd like to avoid adding conditionals to my HTML templates and add modifiers to my-block. I've considering two options.
Option 1)
<body class="my-block-container">
<header class="my-header my-block-container__header"></header>
<div class="my-block-container__my-block"</div>
</body>
Option 2)
<header class="my-block-sibling"></header>
<div class="my-block"</div>
I dislike option 1, because no classes will be applied directly to .my-block-container and .my-block-container__header. Moreover, I'd have to either rename the children of .my-block and apply the somewhat vague my-block-container as a block name, or introduce a new block-level name with the only purpose of selecting a sibling.
I dislike option 2, because it's not truly BEM; there's no true block-level name.
Should I accept that I've reached the limits of BEM naming, or is there a convention for this kind of situation?