개요 색상 변수 폰트·크기 코드 토큰색 레이아웃 본문 강조 박스 코드·파일 표·도식 네비·카드 내부 UI
🎨 공통 CSS 가이드

공통 스타일 시스템 설명서

이 학습 사이트의 모든 페이지가 공유하는 common.css의 색상 변수·폰트·클래스를 한눈에 정리했습니다. 아래 미리보기는 실제 공용 CSS로 렌더된 것이라, 보이는 그대로 챕터에서 쓰면 됩니다.

🧭
OVERVIEW
3가지만 알면 됩니다
색을 정하는 "변수", 글꼴/크기를 정하는 "폰트 변수", 그리고 실제로 화면에 놓는 "클래스"

이 시스템은 색을 직접 쓰지 않고 변수로 씁니다. 예를 들어 글자색은 #e6edf3이 아니라 var(--text)라고 써요. 그래서 라이트/다크 모드나 테마를 바꾸면 색이 자동으로 따라 바뀝니다. 여러분이 챕터를 만들 때는 아래 클래스 이름만 골라 쓰면, 색·간격·폰트가 알아서 통일돼요.

💡
변수 → 클래스 흐름. ①색·폰트는 :root의 변수로 정의 → ②클래스(.compare-box 등)가 그 변수를 참조 → ③여러분은 클래스만 붙임. 색을 바꾸고 싶으면 변수 하나만 고치면 전 페이지에 반영돼요.
🎨
COLORS
색상 변수 — 어떤 색을 언제 쓰나
스와치는 지금 이 페이지의 실제 변수값입니다 (다크 기본)

글자색 텍스트

글자에 쓰는 3단계 밝기. 중요할수록 밝게, 부가 설명일수록 흐리게.

--text
본문 기본 글자·제목
다크 #e6edf3 · 라이트 #1f2328
--text2
보조 설명(회색 본문)
다크 #8b949e · 라이트 #656d76
--text3
캡션·비활성·아주 흐린 글자
다크 #6e7681 · 라이트 #9198a1

배경·표면 배경

페이지 → 패널 → 카드 → 코드창 순으로 층을 나눕니다.

--bg
페이지 전체 배경
다크 #100f1a · 라이트 #ffffff
--bg2
네비바·표 헤더·패널 배경
다크 #181626 · 라이트 #f6f8fa
--surface
카드·입력창 등 표면
다크 #1e1b30 · 라이트 #ffffff
--code-bg
코드창 배경
다크 #282a36 · 라이트 #F6FAFC

테두리

--border
기본 실선 테두리·구분선
다크 #30363d · 라이트 #d0d7de
--border2
조금 더 진한 테두리
다크 #484f58 · 라이트 #afb8c1

강조·상태색 의미

각 색이 "뜻"을 가집니다. 파랑=강조/링크, 초록=성공/정답, 노랑=주의, 빨강=에러.

--accent
링크·강조·활성 (파랑)
다크 #58a6ff · 라이트 #2f7ef0
--success
성공·정답·초록 제목 (초록)
다크 #3fb950 · 라이트 #2eb03a
--warn
주의·경고 (노랑)
다크 #d29922 · 라이트 #9a6700
--error
에러·위험 (빨강)
다크 #f85149 · 라이트 #cf222e
--inline-code-color
문장 속 인라인 코드 글자색 (주황)
다크 #f0883e · 라이트 #cf222e

페이지 고유색 --day

--day과목/챕터의 대표색입니다. 뱃지·섹션 아이콘·스텝 활성·번외편 등이 이 색을 따라가요. 과목마다 아래 팔레트 중 하나를 --day로 지정합니다. (이 페이지는 --teal로 설정돼 있어요.)

--purple
보라 — 번외편(.bonus) 기본색
다크 #bc8cff
--pink
핑크 — --day 기본 폴백
다크 #ff7eb6
--teal
청록
다크 #39d0c8
--orange
주황 — 용어모음(.terms) 강조
다크 #f0883e
--red
빨강 계열 강조
다크 #ff7b72
--yellow
노랑 — 용어모음(.terms) 박스색
다크 #FFE347
--star-color
별 반짝임 효과색
다크 #ffd33d
🎨
-bg / -bd / -bg-soft 3형제. 각 색마다 옅은 배경(--day-bg), 테두리(--day-bd), 아주 옅은 배경(--day-bg-soft)이 세트로 있어요. 뱃지·박스 배경에 이 옅은 버전을 씁니다. (예: 초록 계열은 --success-bg, --success-bd)
🔤
TYPOGRAPHY
폰트·크기·행간 변수
글꼴은 5그룹, 크기는 요소별로 분리 (테마 패널 슬라이더로 조절 가능)
변수용도기본값
--font-sans본문 한글 (기본 글꼴)Apple SD Gothic Neo 계열
--font-mono코드·소스 (고정폭)JetBrains Mono 계열
--font-title제목한글 본문과 동일
--font-inline-code문장 속 인라인 코드고정폭
--fs-body본문 글자 크기13.5px
--fs-title섹션 제목17px
--fs-subhead소제목·형광펜 초록제목14px
--fs-code코드창 소스12.5px
--fs-inline인라인 코드12px
--fs-badge뱃지 안 코드11.5px
--lh-body본문 행간1.9
--lh-code코드 행간1.7
🌈
CODE TOKENS
코드 하이라이트 색 (--hl-*)
코드블록의 키워드·문자열·함수 등에 자동으로 칠해지는 색 (다크=드라큘라)
--hl-keyword
키워드·태그 (const, if…)
#ff79c6
--hl-string
문자열 "..."
#f1fa8c
--hl-function
함수명·속성명
#50fa7b
--hl-number
숫자·리터럴
#bd93f9
--hl-built_in
내장 객체·클래스명
#8be9fd
--hl-comment
주석 (기울임)
#6272a4
※ 실제 색칠은 .hljs-*(highlight.js)와 .token.*(Prism) 클래스가 위 변수를 참조해서 적용합니다. 라이트/테마 전환 시 값이 자동으로 바뀝니다.
🧱
LAYOUT
레이아웃·구조 클래스
페이지의 뼈대 — 대부분 자동으로 들어가는 골격
.navbar상단 고정 네비바

어디에: 모든 페이지 맨 위. 브랜드명(.nav-brand), 뱃지(.nav-badge), 오른쪽 버튼(.nav-actions·.tag-btn)을 담습니다. 이 페이지 맨 위 "🎨 공통 스타일…" 바가 실제 예시.

.wrap본문 가운데 정렬 컨테이너

어디에: 모든 콘텐츠를 감싸는 폭 880px 중앙 컨테이너. 지금 이 카드들도 전부 .wrap 안에 있어요. 표·박스가 .wrap 안에 있어야 기본 표 스타일이 먹습니다.

.hero페이지 인트로

어디에: 각 챕터 맨 위 인사말 영역. 큰 아이콘(.hero-icon) + 제목(h1) + 설명(p) + 칩(.day-chip). 이 페이지 상단 "🎨 공통 스타일 시스템 설명서"가 그 예시.

.section주제 단위 블록

어디에: 챕터 본문의 각 STEP/주제 하나. 머리(.section-head)에 아이콘(.section-icon + 색: .blue/.green/.purple/.pink/.teal), 라벨(.section-num), 제목(.section-title), 부제(.section-sub)가 들어갑니다.

미리보기
STEP 1
이렇게 생긴 섹션 머리
아이콘 색은 .section-icon.green 처럼 지정
✍️
TEXT
본문·인라인 클래스
글을 쓸 때 가장 자주 쓰는 것들
.p본문 단락

어디에: 설명 문단마다. .p strong은 밝은 강조로 자동 처리돼요.

미리보기

이건 .p 단락이에요. 안에서 strong은 밝게 강조되고, .p code는 인라인 코드로 보입니다.

.ic인라인 코드칩

어디에: 문장 중간에 코드 조각을 넣을 때. <code class="ic">className</code> 형태.

미리보기
리액트에선 class 대신 className을 씁니다.
.learn-tag학습 태그 알약

어디에: 섹션 위에 "이번에 배울 것" 같은 알약 라벨.

미리보기
📚 이번 장에서 배울 것
📦
CALLOUT BOX
강조·설명 박스
개념 설명, 팁/경고, 번외편, 용어모음 — 목적별로 색이 다릅니다
.compare-box노란 개념 설명·비교 박스

어디에: 핵심 개념 설명, A vs B 비교. 초록 제목(.cmp-h), 하단 비유줄(.bi), 소제목(.sub)을 함께 씁니다.

미리보기
🧠 이렇게 생긴 노란 박스 핵심 개념을 설명할 때 써요. 강조는 밝게, 코드도 넣을 수 있어요. 🍽️ .bi 는 하단에 점선으로 구분된 비유/한줄정리 자리예요.
.note콜아웃 (팁/경고/정보/새것)

어디에: 짧은 팁·주의·참고. 종류에 따라 .tip(초록)·.warn(노랑)·.info(파랑)·.new(--day색)를 붙이고 .note-icon 이모지를 앞에 둡니다.

미리보기
💡
.note.tip — 유용한 팁에.
⚠️
.note.warn — 자주 하는 실수·주의에.
📌
.note.info — 참고 정보에.
.note.new — 새 개념 강조에 (페이지 --day색).
.bonus번외편 접이식 박스 (보라)

어디에: 본문 흐름을 안 끊는 심화·곁가지 내용. <details>로 접었다 펴며, 안의 소제목(.subhead)·용어제목(.term-h)은 보라 알약으로 나옵니다.

미리보기
🧩 번외편 — 눌러서 펼치기
여기에 심화 설명. 용어 제목 이런 보라 알약 뱃지도 쓸 수 있어요.
.terms용어모음 접이식 박스 (노랑)

어디에: 여러 용어를 한 번에 펼쳐 보는 노란 접이식 박스. 각 용어는 .term-item으로 나누고 제목은 .term-h(주황 알약).

미리보기
📖 용어 모아보기 — 눌러서 펼치기
DOM브라우저가 HTML을 객체로 표현한 것.
렌더링코드를 화면 그림으로 그려내는 과정.
details (펼치기 박스)번외 설명 접이식 + ▲접기

어디에: 본문 흐름을 안 끊고 "더 자세한 설명"을 접어뒀다 펼칠 때. 제목(<summary>)을 누르면 펼쳐지고, 내용이 길면 우측 아래 ▲ 접기로 바로 닫아요(닫히면서 제목 위치로 살짝 스크롤). 페이지 대표색(--day)의 점선 박스이고, .bonus·.terms와 달리 인라인 스타일이라 클래스 없이 어디서든 붙여 쓸 수 있어요.

미리보기 — 눌러서 펼치고, ▲접기로 닫아보세요
🧩 이 개념 자세히 — 펼쳐 보기
펼치면 이렇게 자세한 설명이 나와요. 코드·도식·비유 등을 자유롭게 담고, 다 읽으면 아래 ▲ 접기로 닫으면 됩니다.
▲ 접기
복사용 뼈대: <details style="…--day-bd 점선…"><summary>제목</summary><div>내용 + ▲접기</div></details>
💻
CODE
코드·파일 구조 클래스
코드블록과 파일 트리
pre.language-*코드블록

어디에: 예제 코드. <pre class="language-jsx"><code class="language-jsx">…</code></pre>. 안의 <·>·{&lt;·&gt;·&#123;로 이스케이프해야 합니다.

미리보기
const name = "지훈";
const el = <h1>안녕, {name}!</h1>;
.src-panel에디터 탭형 소스

어디에: 여러 파일을 탭으로 전환해 보여주는 코드 패널. .src-tabs > .src-tab(.active) + .src-pane(.active) 구조. 파일 여러 개를 한 위젯에 담을 때.

.filetree .tree-box파일 구조도

어디에: 폴더/파일 트리를 <pre>로 그릴 때. 강조는 .hot(--day색)·.star(파랑)·.dim(흐림). .ft-legend는 트리 아래 범례.

미리보기
src/
├─ App.jsx
├─ components/
│  └─ Button.jsx
└─ index.css
.src-cap소스 캡션 라벨

어디에: 코드블록 위 작은 파일명/라벨.

미리보기
App.jsx
📊
TABLE · DIAGRAM
표·플로우·줄 설명
정리 표와 흐름도
.tbl-wrap표 감싸개

어디에: 비교·정리 표. <div class="tbl-wrap"><table>…. 첫 열은 자동으로 줄바꿈 안 함. (.wrap 안이면 table만 써도 같은 스타일.)

미리보기
HTMLJSX
classclassName
forhtmlFor
.flow세로 플로우차트

어디에: 실행 흐름을 위→아래 단계로. .flow-step(핵심 단계는 .key=초록) 사이에 .flow-arrow.

미리보기
JSX 작성 — 우리가 쓴 코드
Babel 변환 — createElement로 바뀜
화면 렌더
.lines줄별 설명 목록

어디에: 코드 한 줄씩 뜯어 설명할 때. 왼쪽 뱃지(.k) + 설명(.d).

미리보기
  • const값이 안 바뀌는 변수를 선언해요.
  • return함수가 값을 돌려줘요.
.dia고정폭 도식

어디에: 박스 안 아스키/고정폭 도식(.compare-box .dia 또는 .bonus .dia). 토큰 색은 .dia-kw·.dia-id·.dia-num·.dia-op, 인덱스 강조는 .idx(빨강).

🧭
NAV · CARD
네비게이션·이동 카드
챕터 사이 이동과 점프
.stepnav상단 점프바

어디에: 네비바 바로 아래 고정. 섹션 앵커 링크(.sn-scroll > .sn-item, 활성 시 .active)와 페이지 이동(.sn-days > .sn-day, 로드맵은 .roadmap, 비활성은 .disabled). 이 페이지 위쪽 "개요·색상 변수…" 바가 실제 예시.

.floatnav우하단 떠있는 이전/다음

어디에: 화면 우하단 고정 버튼(#prevBtn/#nextBtn). 섹션 간 이동·맨 위로. common.js가 동작을 연결합니다.

.next-card .start-card이동 카드

어디에: 챕터 끝 "다음 장" 카드(.next-card)나 목록의 시작 카드(.start-card). 번호는 .next-num/.start-num, 여러 개는 .nav-cards로 나란히.

미리보기
.guide-img .guide-cap스크린샷·캡션

어디에: 설명용 이미지(.guide-img, 폭 75% 가운데)와 그 아래 캡션(.guide-cap).

⚙️
INTERNAL
내부 도구 클래스 (작성 시 안 씀)
common.js가 자동으로 만드는 UI라 콘텐츠 작성 땐 신경 쓸 필요 없어요
접두사무엇
.tp-*우측 테마 편집 패널 (폰트·크기·색·테마 조절). 우상단 버튼으로 열림.
.cp-*패널 안 컬러피커 (팔레트·슬라이더·입력).
.cs-*왼쪽 코드 미러 패널 (본문 코드창을 복제해 옆에 띄움).
.pop-trigger·.term-pop용어 뱃지 클릭 팝오버. 뱃지(.k.pop-trigger)를 누르면 설명 카드가 뜸.
.vref-*변수 추적용 강조(개발 참고용).
🔧
이 클래스들은 common.js가 DOM을 동적으로 생성하므로, 여러분이 챕터 HTML을 쓸 때 직접 넣지 않아도 됩니다. 위쪽 레이아웃~네비 클래스만 알면 콘텐츠 작성은 충분해요.