다크모드 색을 실측으로 맞춘 이야기

다크모드 색을 실측으로 맞춘 이야기

날짜
2026/08/14
요약
눈으로 비슷하게 맞추는 대신 값을 재서 맞췄다. 나중에 설정 화면과 대조해 보니 대부분 일치했다.
태그
디자인
디자인을 참고할 때 "비슷해 보이게"는 위험한 기준입니다. 라이트 모드에서 맞춘 색이 다크 모드에서 어긋나고, 어긋난 이유를 설명할 수 없게 됩니다. 그래서 눈이 아니라 렌더링 결과를 재서 값으로 옮겼습니다.
나중에 참고한 서비스의 설정 화면을 볼 기회가 생겨 대조해 봤더니 재서 맞춘 값들이 그쪽 설정과 일치했습니다.
항목
값
모서리 둥글게 (갤러리, 콜아웃)
4px
모서리 둥글게 (이미지)
0
페이지 너비
900px
상단 메뉴 높이
48px
마우스 오버 색상
#669DFD
예외가 하나 있었습니다. 설정 화면의 "폰트 크기 16"과 달리 실제 nav 링크는 14px, 굵기 700으로 렌더됩니다. 라벨과 실측이 다를 때는 실측을 따랐습니다. 화면에 그려지는 쪽이 사용자가 보는 것입니다.

색을 두 벌로 관리하는 법

모든 색과 간격은 styles/folio-tokens.css의 CSS 변수 하나로 모았습니다. 라이트는 :root에서 정의하고, 다크는 .dark-mode에서 필요한 토큰만 덮어씁니다. 값을 새로 정의하는 게 아니라 덮어쓰는 구조라, 라이트에만 있는 색이 다크에서 투명하게 비는 일이 생기지 않습니다.
🌙
다크 모드는 next-themes가 <html>에 클래스를 붙여 처리합니다. system, light, dark 3-state이고, 방문자의 선택은 localStorage에 남습니다.
토큰 파일 하나만 고치면 사이트 전체 톤이 바뀝니다. 색을 고를 때 들인 시간보다, 색을 한 곳에 모으는 데 들인 시간이 더 값이 나갔습니다.