Раз родительский элемент управляет отступами, это явно свойства ( элемента ) родительского блока.
Когда возникают такие дилеммы, нужно просто задать блоку / элементу вопрос: «А кто назначил тебе это правило?» и всё становится понятно — какие-то свойства отъезжают в модификатор, какие-то — в элемент внешнего блока.
Общие стили:
.title { display: block }
.title_align_left { text-align: left }
.title_align_right { text-align: right }
.title_align_center { text-align: center }
Элемент прижат к левому краю (модификатор .title_align_left добавил для наглядности):
.card
.card__title.title.title_align_left
— card__title „говорит“: «внутри меня лежит блок title с модификацией align в значении left»
Элемент прижат к правому краю:
.card
.card__title.title.title_align_right
— card__title „говорит“: «внутри меня лежит блок title с модификацией align в значении right»
Элемент выровнен по центру:
.card
.card__title.title.title_align_center
— card__title „говорит“: «внутри меня лежит блок title с модификацией align в значении center»
Элемент прижат к левому краю, но на другом брейкпоинте выравнивается по правому:
.card__title { text-align: right }
@media (min-width: 720px) {
.card__title { text-align: left }
}
.card
.card__title.title
— card__title „говорит“: «внутри меня лежит блок title, но я сам управляю его align»
Надеюсь, аналогия ясна.