CSS 选择器:select 元素基于最后 parent 和特定 class?

CSS Selector: select element based on last parent with specific class?

我有一些 类 可以将背景颜色应用于 div:

.bg-light: white;
.surface-light: light-gray;

.bg-dark: black;
.surface-dark: darker-gray;

问题是当我尝试将自定义颜色应用于这些 div 中的元素时,例如文本、按钮、边框等。我正在尝试这样做:

.bg-light input,
.surface-light input {
    color: black;
}

.bg-dark input,
.surface-dark input {
    color: white;
}

但它不适用于这样的场景:

light:
  dark:
    light:
        other-classes...: input

因为输入选择在两种情况下都为真,并且将设置最后定义的颜色。所以我需要做一个选择只考虑最后一个 'ascendent' parent.

有什么想法吗?感谢您的帮助。

我想我用变量解决了它:

.bg-light {
  background-color: var(--clr-bg-light);
}
.surface-light {
  background-color: var(--clr-surface-light);
}
.bg-light, .surface-light {
  --clr-text: var(--clr-text-dark);
  --clr-neutral: var(--clr-neutral-dark);
}

.bg-dark {
  background-color: var(--clr-bg-dark);
}
.surface-dark {
  background-color: var(--clr-surface-dark);
}
.bg-dark, .surface-dark {
  --clr-text: var(--clr-text-light);
  --clr-neutral: var(--clr-neutral-light);
}

.text { color: var(--clr-text); }
.neutral { color: var(--clr-neutral); }