# [[CSS Variables]]

## 📌 Brief Summary
CSS Variables(사용자 지정 속성, Custom Properties)은 JavaScript 없이도 동적인 스타일 제어를 가능하게 하는 모던 CSS의 표준 기능입니다. 과거 Sass와 같은 전처리기(Preprocessor)에 의존해야 했던 변수 기능을 CSS 자체에 내장하여, 런타임 오버헤드를 최소화하면서도 전역적인 테마(Theming) 관리 및 상태 기반 스타일링을 쉽게 만들어 줍니다. 특히 대규모 애플리케이션에서 디자인 토큰을 구현하고 유지보수하기 쉬운 아키텍처를 구축하는 데 핵심적인 역할을 수행합니다.

## 📖 Core Content
* **모던 CSS 표준으로의 진화와 동적 스타일링:**
  CSS 사용자 지정 속성은 과거 전처리기의 전유물이었던 변수 기능을 표준 CSS에 도입한 주요 개선 사항입니다 [1]. 이를 통해 JavaScript의 개입 없이도 동적인 스타일링이 가능해졌으며, 컨테이너 쿼리와 함께 순수 CSS의 부흥(Renaissance)을 이끄는 핵심 기술로 자리 잡았습니다 [2, 3].

* **디자인 토큰(Design Tokens) 구현의 핵심:**
  웹 환경에서 디자인 토큰을 코드로 구현할 때 CSS 변수가 적극적으로 활용됩니다 [4]. 효과적인 디자인 시스템을 구축하기 위해 CSS 변수는 주로 3단계 계층 구조를 가집니다 [5].
  1. **글로벌 토큰 (Primitives):** 컨텍스트 없는 원시 값 (예: `--blue-500: #3b82f6`)
  2. **별칭/시맨틱 토큰 (Alias):** 의미와 목적을 부여한 값 (예: `--color-primary: var(--blue-500)`)
  3. **컴포넌트 토큰:** 특정 UI 요소에 종속된 값 (예: `--button-bg: var(--color-primary)`)
  이와 같이 변수를 참조 연결하는 방식을 통해, 시맨틱 토큰의 값만 교체하여 손쉽게 테마 변경(다크 모드 등)을 적용할 수 있습니다 [6].

* **유지보수 가능한 모던 아키텍처와의 결합:**
  글로벌 단위에서 테마 변수를 CSS 사용자 지정 속성으로 관리하고, 개별 컴포넌트의 스타일은 CSS Modules를 통해 격리하는 하이브리드 아키텍처가 효율적인 실무 접근법으로 권장됩니다 [7, 8]. CSS 변수는 CSS Modules와 결합하여 런타임 오버헤드를 최소화하면서도 동적인 스코프 스타일링을 가능하게 합니다 [2]. 
  또한 CSS Modules 단독으로는 JavaScript의 상태(State) 데이터를 스타일에 직접 주입하기 어렵다는 단점이 존재하는데, CSS 사용자 지정 속성을 인라인으로 전달함으로써 이 한계를 우회할 수 있습니다 [9]. 나아가 Linaria와 같은 Zero-Runtime CSS-in-JS 환경에서는 정적 CSS를 빌드 타임에 추출하고 동적 상태 제어는 CSS 변수에 위임하여 렌더링 성능을 최적화합니다 [10].

## 🔗 Knowledge Connections
- **Related Topics:** [[Design Tokens]], [[CSS Modules]], [[Zero-Runtime CSS-in-JS]]
- **Projects/Contexts:** [[Design Systems]], [[Frontend Architecture]]
- **Contradictions/Notes:** 소스에 따르면 CSS 사용자 지정 속성은 SCSS와 같은 기존 전처리기의 정적 변수나, 런타임 단계에서 스타일을 주입하는 기존 CSS-in-JS가 지닌 성능 저하 문제를 동시에 극복할 수 있는 이상적인 대안으로 평가받습니다 [1, 10]. 

---
*Last updated: 2026-04-26*