"이 색의 밝기만 20% 올린 버전"을 만들려면 예전에는 원래 색이 hex인지 hsl인지 rgb인지부터 알아야 했고, 디자인 토큰이 어떤 포맷으로 올지 모르는 컴포넌트 라이브러리에서는 이게 꽤 번거로웠습니다. JS 색상 라이브러리로 파싱-변환-재조합하는 게 흔한 우회였습니다.
상대 색상 문법은 `hsl(from var(--accent) h s calc(l + 20))`처럼 기존 색을 `from`으로 불러와 `h`(hue)·`s`(saturation)·`l`(lightness) 같은 채널 변수로 바로 씁니다. `color(from var(--accent) srgb r g b / 0.4)`로 투명도만 바꾸는 것도 가능해서, 원래 포맷이 무엇이든 CSS 안에서 바로 파생 색을 만들 수 있습니다.
기본 지원은 caniuse/MDN baseline을 확인하세요. 미지원 브라우저에서는 JS로 원래 색을 파싱해 채널을 바꾼 뒤 다시 문자열로 합치는 것이 대안입니다.
언제 쓰나
토큰 색의 포맷을 모른 채로 밝기·채도·투명도만 바꾼 파생 색을 만들 때.