툴도 더
통일된 제품답게
인터페이스는 모노톤 블랙입니다. 도구마다 12스톱 색환에서 색 하나와 플랫 캐릭터 하나를 가지며, 그 짝이 그 도구의 아이덴티티 전부입니다 — 인덱스 밴드에서도, 헤더에서도, 결과 숫자에서도.
지면
세 가지 면나머지 전부가 여기에 얹힙니다. 면은 셋이고, 각 면이 그 위 글자색을 정합니다. 컴포넌트마다 따로 정하지 않습니다.
색면에는 밝은 글자를 얹지 않습니다. 12스톱은 전부 명도가 높아 어느 색이든 글자는 먹입니다. 그래서 컴포넌트가 설계해야 할 상태는 열둘이 아니라 둘입니다.
브랜드 오렌지는 면이 아닙니다. #FF6B1A는 로고와 CTA의 색입니다. 이걸로 패널을 칠하면 그 화면이 도구 하나처럼 보입니다.
팔레트
브랜드 1 · 앱 12스톱색환은 카테고리가 아니라 색상환을 돕니다. 빨강 → 분홍 → 보라 → 파랑 → 청록 → 초록 → 올리브 → 노랑 → 모래 → 밀크 순이라 인덱스에서 이웃한 두 밴드는 반드시 분리됩니다. 칼센틱 오렌지는 색환 밖에 있고 어떤 도구에도 배정되지 않습니다 — 로고와 페이지당 하나의 CTA로 남습니다.
앱 컬러 맵
도구 23개도구 하나에 색 하나, 마크 하나. 그 짝이 그 도구의 아이덴티티 전부입니다 — 인덱스에서도, 헤더에서도, 결과 뒤에서도.
타이포그래피
Archivo · IBM Plex Mono · Pretendard스케일
한글은 대문자도, 모노도 쓰지 않습니다. 영문은 Archivo 대문자와 자간 벌린 모노 라벨에 기대는데 둘 다 번역되면 살아남지 못합니다. 한글 레이어는 Pretendard로 바꾸고 uppercase를 끄고 디스플레이 크기를 한 단계 낮춥니다. EN과 KR은 레이아웃을 공유하지 타이포를 공유하지 않습니다.
선 두께
두께는 하나사이트의 모든 선은 2px입니다. 컴포넌트의 테두리와 문단 구분을 가르는 것은 두께가 아니라 색입니다. 굵기를 섞으면 얇은 쪽이 실수처럼 읽힙니다.
캐릭터 마크
도구마다 하나도구마다 하나의 기하학적 몸통으로 된 플랫 캐릭터. 몸통은 단색 면 하나이고, 눈과 입은 뒤에 놓인 면의 색으로 칠해 구멍처럼 읽힙니다. 아웃라인도, 그라디언트도, 두 번째 채움도 없습니다.
도구마다 자기 몸통을 가집니다. 형태를 공유하지 않습니다. 같은 모양은 색이 달라도 언뜻 같은 도구로 읽히기 때문입니다. 새 도구에는 새 몸통을 같은 규칙으로 그립니다 — 단색 면 하나, 뚫린 얼굴, 그 외에는 없습니다.
캐릭터는 그리고, 시스템 아이콘은 가져옵니다. 마크는 브랜드 자산이라 직접 만듭니다. 기능을 가리킬 뿐인 것 — 검색·닫기·내려받기·전체화면·도식 아이콘 — 은 MingCute(Apache 2.0)에서, 소셜 마크는 Simple Icons(CC0)에서 가져옵니다. fill 계열만 쓰며 line 계열은 단색 면 규칙에 어긋납니다.
컴포넌트
각각 두 상태면은 둘입니다 — 도구 페이지의 미색 지면과 패널의 앱 색면. 두 면에 다 놓이는 컴포넌트는 나란히 두 상태로 보여줍니다. 한 면에만 놓이는 것은 그 면 하나로만 보여줍니다. 없는 자리를 그려 두면 규격이 아니라 지어낸 상태가 되기 때문입니다.
여기 시연은 실물입니다. 규칙을 빌드 때 tool.css 에서 뽑아 시연 패널 안으로만 좁혔습니다. 손으로 베낀 사본이 없으니 사이트와 어긋날 수가 없습니다.
입력
Input값을 받는 것. 테두리를 두르지 않고 밑줄 하나로 선다.
필드
.field
미색 지면에만 놓입니다금액
.amount
미색 지면에만 놓입니다프리셋
.presets .preset
미색 지면에만 놓입니다셀렉트
.sel
미색 지면에만 놓입니다이름 칩
.chipbox .nchip
미색 지면에만 놓입니다선택
Choice갈래를 고르는 것. 고른 것은 채워지고 나머지는 비어 있다.
탭
.tabs .tab
미색 지면 · 앱 색면옵션 칩
.opts .optgrp .opt
미색 지면 · 앱 색면토글
.toggle
미색 지면 · 앱 색면실행
Action누르면 일이 벌어지는 것. 주 실행은 화면에 하나뿐이다.
주 실행
.tab--primary
앱 색면에만 놓입니다링크 버튼
.btn
검정 지면 · 앱 색면아이콘 버튼
.iconbtn
앱 색면에만 놓입니다저장
.savebtn
앱 색면에만 놓입니다표시
Readout값을 보여주는 것. 숫자는 디스플레이, 이름표는 모노.
결과
.result__k .result__v .u
앱 색면에만 놓입니다50,000의 12.5%는 6,250입니다.
통계
.stats .stat
앱 색면에만 놓입니다비율 막대
.bar
앱 색면에만 놓입니다이름표
.label .idx
미색 지면에만 놓입니다© 2026 TOOLBIT
묶음
Blocks내용을 담는 면. 색면은 결과에만, 나머지는 지면 위에.
스펙표
.spectable
앱 색면에만 놓입니다설명 카드
.explain .ex
미색 지면에만 놓입니다첫날에서 갈립니다
날짜를 빼면 시작일이 빠집니다. 계약은 양쪽을 다 세는 경우가 많습니다.
양쪽 = 차이 + 1
질문
.faq
미색 지면에만 놓입니다입력한 값이 서버로 가나요?
아닙니다. 계산은 전부 브라우저 안에서 끝나고 어디에도 저장되지 않습니다.
메가 타일
.mcard
검정 지면에만 놓입니다데이터 막대
네 가지 형태막대는 네 가지 다른 일을 하고, 일마다 형태가 다릅니다. 형태를 가르는 기준은 두 가지입니다 — 낱개를 읽는가 모양만 읽는가, 그리고 바닥에 붙는가.
기둥
실선
범위
계단
게이지
막대에는 팔레트 색을 쓰지 않습니다. 12스톱은 '도구 하나에 색 하나'라는 규칙에 묶여 있습니다. 스톱으로 칠한 막대는 다른 도구를 가리키게 됩니다. 여기 네 형태는 전부 currentColor의 농도로만 계열을 나눠, 막대가 언제나 자기가 놓인 면에 속합니다.
강조는 언제나 하나입니다. 강조가 뜻하는 것은 최댓값이거나 지금 값, 둘 중 하나뿐입니다. 둘을 강조하면 강조가 아닙니다 — 두 막대가 다 중요하다면 그 차트는 질문 두 개에 답하고 있는 것이고, 차트를 둘로 나눠야 합니다.
스케일 & 슬라이드
모션 파운데이션면이 움직이는 방식은 두 가지뿐입니다. 눌린 자리에서 자라나거나, 한쪽 가장자리를 따라 드러납니다. 색·타이포·아이콘은 움직이지 않고, 움직임은 면이 맡습니다.
스케일
눌린 요소에서 출발해 제자리까지 자라납니다. 도착지가 화면에 이미 작은 형태로 있었을 때 씁니다.
240ms · cubic-bezier(.65, 0, .2, 1.06)슬라이드
한쪽 가장자리를 따라 위에서 아래로 드러납니다. 자라날 출발점이 화면에 없었을 때 씁니다.
220ms · cubic-bezier(.65, 0, .2, 1.06)컬러 인계
면은 그대로 있고 색만 바뀔 때, 나가는 색을 들어오는 색 위에 덮고 걷어냅니다. 두 색이 직접 만납니다.
220ms · cubic-bezier(.65, 0, .2, 1.06)두 면이 동시에 반투명해지는 일은 없습니다. 페이드가 겹치면 그 아래 지면이 드러나고, 그것이 두 색 사이의 번쩍임으로 보입니다. 면은 완전히 칠해지거나, 자기 색을 다음 면에 건넵니다.
어떤 연출도 250밀리초를 넘지 않습니다. 들어가고 나오며 끝에서 살짝 넘겼다 돌아옵니다. 시작이 분명하고 마무리에 탄력이 붙습니다. 작은 요소는 140 근처, 큰 면은 240 근처에 놓이고 상한은 움직이지 않습니다.