DESIGN SYSTEM · PROPOSAL A / 페이블
디자인 스타일 가이드 (페이블 제안 v0.1)
본서비스 화면은 어떤 색·글자·간격·문구로 그리나?
디자인 스타일 · 페이블 제안 v0.1
본서비스 화면은 어떤 색·글자·간격·문구로 그리나?
- 쏠의 봉인된 원탁 콘셉트와 역할 색 4종(보라=내 비공개, 청록=우리 합의, 녹슨 주황=반드시 지킬 조건, 회색=보조)을 그대로 받아 CSS 토큰으로 고정했다.
- 글자 8단계, 간격 10단계, 반경 3단계, 그림자 2단계, 컴포넌트 10종(버튼·3상태 응답·상한 선택·재확인 3버튼 등)과 금지어 표를 정했다.
- 모든 글자 색 조합은 WCAG AA 4.5:1 이상으로 계산해 확인했다. 현재 목업의 보라·주황은 미달이라 교체한다.
- 쏠 제안과 합친 결과는 통합 시각 보드에 있다. 이 문서의 보라·잉크 값은 통합안에서 쏠 값으로 바뀌었다.
누가 읽나: 디자이너 · 프런트 개발자 · UI/UX 기획자
작성: 페이블 · 2026-09-06 · 팀 억지타협업소
목적: 본서비스 디자인과 UI/UX 기획을 시작할 때 팀이 같은 언어로 화면을 만들 수 있게 하는 기준. 색·글자·간격·형태·컴포넌트·문구·접근성을 토큰과 규칙으로 고정한다.
전제: 쏠의 「디자인 벤치마킹」(2026-09-05)이 제안한 콘셉트 봉인된 원탁과 역할 색 4종을 그대로 받아, 그 위에 실제로 화면을 그릴 수 있는 수준의 시스템으로 확장한다. 콘셉트 논쟁을 다시 열지 않는다.
근거: 현재 목업 OUTBOX/KKIRI/mockup/styles.css, 쏠 KKIRI_DESIGN_BENCHMARK.md, 근거 노트 RESEARCH/KKIRI_DESIGN_BENCHMARK_SOURCES_2026_09_05.md, 요구사항 KKIRI_REQUIREMENTS_AND_POLICY.md. 명도 대비 수치는 이 문서 작성 시 sRGB 상대 휘도 공식으로 직접 계산했다(§3-4).
0. 한 장 요약
| 항목 | 결정 |
|---|---|
| 한 문장 | 묻는 건 설문처럼 편하게, 지키는 건 금고처럼 확실하게, 끝은 우리 손으로. |
| 시각 콘셉트 | 봉인된 원탁 — 봉인 카드(개인) → 교집합(합의) → 원탁의 점(익명 재확인) |
| 바탕 | 따뜻한 종이색 #FAF8F4 + 흰 카드. 차가운 SaaS 회색을 쓰지 않는다 |
| 역할 색 4종 | 보라=나의 비공개 · 청록=우리의 합의 · 녹슨 주황=반드시 지킬 조건 · 따뜻한 회색=보조 |
| 글꼴 | Pretendard Variable(한글·숫자) + 시스템 폴백. 숫자는 tabular-nums |
| 레이아웃 | 참가자 화면은 모바일 단일 열(최대 480px), 방장·결과는 데스크톱 2열(≥960px) |
| 형태 | 반경 3단계(12·16·24)로 계층. 그림자는 실제로 떠 있는 것에만 |
| 모션 | 상태 변화를 설명하는 200~300ms 전환만. 장식용 부유·반복 애니메이션 금지 |
| 목소리 | 「~해요」체. 사람의 말을 지어내지 않고, 시스템이 한 일만 말한다 |
1. 브랜드 원칙 3가지
디자인 결정이 갈릴 때 이 순서로 판단한다.
- 비공개가 먼저 보인다. 사용자가 답하는 모든 화면에는 「이 답은 아무에게도 보이지 않아요」가 눈에 들어와야 한다. 익명성은 설정 항목이 아니라 화면의 상태다. (근거: 문제 정의 H1 — 가까운 사이일수록 침묵이 크다)
- 선호와 절대 조건은 다른 크기로 보인다. 후보를 탈락시키는 선택(상한·거부)은 일반 선호보다 크고, 색이 다르고, 결과를 문장으로 즉시 보여 준다. 작은 체크박스에 거부권을 두지 않는다.
- AI는 말을 지어내지 않는다. 대리인의 가상 대사, 사람 흉내를 내는 캐릭터, 정밀해 보이는 소수점 점수를 화면에 두지 않는다. 시스템이 실제로 한 일(제외한 후보 수, 지켜진 조건 수, 비교한 후보 수)만 보여 준다.
이 세 가지에 어긋나면 예쁘더라도 채택하지 않는다.
2. 시각 콘셉트 — 봉인된 원탁을 화면 언어로
쏠의 콘셉트를 세 가지 시각 모티프로 고정한다. 로고·아이콘·로딩·결과 화면이 모두 이 세 모양에서 나온다.
| 모티프 | 모양 | 어디에 쓰나 | 색 |
|---|---|---|---|
| 봉인 카드 | 모서리 둥근 세로 카드 위에 작은 원형 봉인 점 | 내 답변 입력 화면 상단 표식, 내 리포트 헤더, 「비공개」 배지 | 보라 |
| 교집합 | 원 2~3개가 겹친 가운데 영역만 채색 | 조율 진행 화면, 결과 결론 카드 배경 패턴, 로고 심볼 | 청록 |
| 원탁의 점 | 원 둘레를 따라 놓인 점 n개, 채워진 점 = 재확인 완료 | 대기실 제출 현황, 최종 재확인 집계 | 청록(완료)·회색(미완) |
로고 심볼은 교집합 모티프 하나로 만든다. 현재 목업의 검은 정사각형 안 「끼」 글자는 임시 표식으로 두고, 심볼 제작은 P2다(쏠 §7 P2와 동일).
금지: 뇌·악수·말풍선 이모지, 사람 얼굴 캐릭터, 로봇 일러스트. 「AI가 사람 대신 말한다」는 인상을 만들기 때문이다.
3. 색
3-1. 기본 토큰
| 토큰 | 값 | 용도 |
|---|---|---|
--paper | #FAF8F4 | 화면 바탕. 흰색이 아니다 |
--surface | #FFFFFF | 카드·입력 필드 |
--surface-sunken | #F3F0EA | 바탕보다 한 단계 눌린 영역(메모, 명단 행) |
--ink | #1A1714 | 본문·제목. 순검정 대신 따뜻한 검정 |
--ink-muted | #6B6560 | 설명·메타 정보·플레이스홀더 |
--ink-disabled | #A8A29B | 비활성 텍스트. 읽을 수 있어야 하는 정보에는 쓰지 않는다 |
--line | #E6E1DA | 카드 테두리·구분선(장식용) |
--line-strong | #8C8680 | 입력 필드처럼 경계 자체가 기능인 곳의 테두리 |
--ink-inverse | #FFFFFF | 어두운 카드 위 글자 |
--surface-dark | #1A1714 | 초대 카드처럼 강조하는 어두운 카드 |
3-2. 역할 색 (의미를 가진 색)
색은 장식이 아니라 「이 정보가 누구 것인가」를 말한다. 역할을 벗어난 데 쓰지 않는다.
| 역할 | 토큰 | 진한 값(글자) | 중간 값(강조·버튼) | 연한 값(배경) | 쓰는 곳 | 쓰지 않는 곳 |
|---|---|---|---|---|---|---|
| 나의 비공개 | --private-* | #4F38C9 | #684DEB | #EFEBFF | 내 답변 선택 상태, 내 리포트, 비공개 배지, 진행바 | 공동 결과, 방장 액션 |
| 우리의 합의 | --consensus-* | #0B5C56 | #0F766E | #E3F3F0 | 합의안, 지켜진 조건, 제출 완료, 동의 집계 | 개인 선택 상태 |
| 반드시 지킬 조건 | --veto-* | #9A2E10 | #B93815 | #FCEDE7 | 상한·거부권 선택, 탈락 사유, 합의 불가 | 일반 오류, 단순 경고 |
| 기다림·마감 | --wait-* | #7A4F00 | #B7791F | #FFF3D6 | 마감 카운트다운, 작성 중 상태, 30초 초과 안내 | 성공·실패 표현 |
| 안내 | --info-* | #1D4ED8 | #3B6FE0 | #E6F0FF | 참여 완료 전 상태, 링크 도움말 | 강조 버튼 |
| 보조 | --ink-muted | #6B6560 | — | — | 설명, 시각 잡음 없는 메타 | 결론 문장 |
원칙: 한 화면에 역할 색은 최대 2가지. 보라(내 것)와 청록(우리 것)이 한 화면에 같이 있는 것은 정상이다(결과 화면). 거기에 녹슨 주황이 더 들어오면 그 화면은 「탈락·경고」가 주제일 때뿐이다.
3-3. 주 버튼 색
주 버튼은 역할 색이 아니라 잉크색(--ink) 바탕에 흰 글자다. 이유는 두 가지다. 역할 색을 버튼에 쓰면 「보라 버튼=내 것」 규칙이 흐려진다. 그리고 검은 버튼은 종이 바탕 위에서 가장 대비가 높다(17.85:1).
예외: 최종 재확인 3버튼은 의미가 곧 색이므로 동의=청록 테두리, 조건부=잉크 테두리, 재조율=녹슨 주황 테두리를 쓴다(§8-9).
3-4. 명도 대비 검증 (WCAG 2.1 AA 기준: 본문 4.5:1, 큰 글자·UI 경계 3:1)
| 조합 | 대비 | 판정 |
|---|---|---|
#1A1714 잉크 / #FAF8F4 종이 | 16.83:1 | 통과 |
#6B6560 보조 / #FAF8F4 | 5.42:1 | 통과 |
#684DEB 보라 / #FAF8F4 | 5.14:1 | 통과 |
#4F38C9 보라 진한 / #EFEBFF 보라 연한 | 6.56:1 | 통과 |
흰 글자 / #684DEB | 5.45:1 | 통과 |
#0F766E 청록 / #FAF8F4 | 5.16:1 | 통과 |
#0B5C56 / #E3F3F0 | 6.85:1 | 통과 |
#B93815 녹슨 주황 / #FAF8F4 | 5.44:1 | 통과 |
#9A2E10 / #FCEDE7 | 6.64:1 | 통과 |
#7A4F00 기다림 / #FFF3D6 | 6.46:1 | 통과 |
#1D4ED8 안내 / #E6F0FF | 5.83:1 | 통과 |
#B8B2AA / #1A1714 어두운 카드 위 보조 글자 | 8.49:1 | 통과 |
#8C8680 입력 테두리 / #FFFFFF | 3.60:1 | UI 경계 3:1 통과 |
#E6E1DA 장식 테두리 / #FFFFFF | 1.30:1 | 경계 기능으로 쓰면 안 됨 |
#A8A29B 비활성 / #FAF8F4 | 2.38:1 | 비활성 전용. 정보 텍스트 금지 |
현재 목업의 #7057ff/#fbfaf8는 4.48:1로 미달, 배지 #ff7657/흰색은 2.63:1이다(쏠 근거 노트와 동일). 본서비스에서는 두 값을 쓰지 않는다.
3-5. 다크 모드
P0 범위 밖. 다만 토큰을 의미 단위(--paper, --ink, --private-fg)로 잡아 두면 값만 바꿔 대응할 수 있으므로, 구현 시 색을 직접 쓰지 않고 토큰만 쓴다.
4. 타이포그래피
4-1. 글꼴
font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
"Apple SD Gothic Neo", "Segoe UI", "Noto Sans KR", sans-serif;
font-feature-settings: "tnum" 1; /* 숫자 폭 고정 */
- Pretendard는 SIL Open Font License라 상업 서비스 웹폰트로 쓸 수 있다. 가변 글꼴 하나만 로드해 굵기 400·600·700·800을 쓴다.
- 영문 전용 브랜드 서체는 두지 않는다.
PRIVATE AGENT CONSENSUS같은 영문 표어는 보조 문구로 내리고 같은 글꼴 12px 대문자 자간 0.08em으로 처리한다.
4-2. 크기 단계
| 이름 | 크기/행간 | 굵기 | 자간 | 쓰는 곳 |
|---|---|---|---|---|
| Display | 34/40px | 800 | -0.03em | 홈 헤드라인, 결과 결론 |
| Title | 28/34px | 800 | -0.02em | 질문 문장, 화면 제목 |
| Heading | 20/28px | 700 | -0.01em | 카드 제목 |
| Body L | 18/28px | 500 | 0 | 선택지 텍스트, 입력 필드 |
| Body | 16/25px | 400 | 0 | 본문, 설명 |
| Small | 14/20px | 600 | 0 | 메타, 상태, 버튼 보조 |
| Caption | 12/16px | 600 | 0.02em | 배지, 진행 단계, 법적 안내 |
| Number XL | 56/56px | 800 | -0.02em | 인원 수, 집계 숫자 |
규칙:
- 한 화면에 Display 또는 Title은 하나. 질문 화면 제목은 2줄(약 20자) 안에 끝나게 쓴다.
- 본문 설명 한 문단은 2줄을 넘기지 않는다. 넘으면 항목으로 쪼갠다.
- 숫자(인원·시간·금액·집계)는 tabular-nums로 폭을 고정한다. 값이 바뀔 때 레이아웃이 흔들리지 않게 한다.
- 최소 본문 크기 14px. 12px는 배지와 법적 안내에만.
- 데스크톱(≥960px)에서는 Display 40/48, Title 32/40으로 한 단계 올린다. 나머지는 유지.
5. 레이아웃·간격
5-1. 간격 단위
4px 기준. 실제로는 아래 값만 쓴다.
4 · 8 · 12 · 16 · 20 · 24 · 32 · 40 · 48 · 64
| 관계 | 간격 |
|---|---|
| 같은 묶음 안의 항목(선택지끼리, 칩끼리) | 8~12 |
| 카드 안쪽 여백 | 16(정보 카드) · 20(입력 카드) · 24(결과 결론 카드) |
| 제목과 본문 사이 | 12 |
| 카드와 카드 사이 | 16 |
| 섹션과 섹션 사이 | 32~40 |
| 화면 좌우 여백(모바일) | 20 |
| 하단 고정 버튼 위 여백 | 16, 버튼 아래 safe-area + 16 |
5-2. 화면 폭과 역할
| 화면 | 폭 | 이유 |
|---|---|---|
| 참가자 입력(질문·대기·재확인) | 단일 열, 콘텐츠 최대 480px, 가운데 정렬 | 한 화면 한 질문 집중. 모바일에서 링크로 들어오는 사용자가 대부분 |
| 방장 현황(대기실 방장 모드) | ≥960px에서 2열: 좌 현황(제출·마감·리마인드) 400px, 우 방 정보 | 여러 사람 상태를 비교·관리 |
| 공동 결과 | ≥960px에서 2열: 좌 결론+지켜진 약속(sticky), 우 이유·후보 비교·재확인 | 결론을 보면서 근거를 읽는다 |
| 내 리포트 | 단일 열 480px, 보라 영역 | 개인 정보임을 폭으로도 드러낸다 |
브레이크포인트: 모바일 기본, ≥700px에서 바탕이 #EBE7E2로 바뀌고 480px 카드가 종이 위에 놓인 형태(현재 목업 방식 유지), ≥960px에서 2열 전환. 최대 콘텐츠 폭 1120px.
5-3. 하단 고정 CTA
질문·재확인 화면의 주 행동 버튼은 화면 하단에 고정한다. 콘텐츠가 버튼 뒤에 가려지지 않게 본문 하단 여백 = 버튼 높이 56 + 32. 키보드가 올라오면 버튼이 키보드 위에 붙는다.
6. 형태 — 반경·테두리·높이
6-1. 반경 3단계
현재 목업은 거의 모든 요소가 17~24px 반경이라 계층이 없다. 3단계로 나눈다.
| 토큰 | 값 | 쓰는 곳 |
|---|---|---|
--r-sm | 12px | 칩, 상태 배지 안쪽 요소, 명단 행, 메모 박스 |
--r-md | 16px | 선택지 카드, 입력 필드, 버튼, 정보 카드 |
--r-lg | 24px | 결과 결론 카드, 초대 카드, 바텀 시트 |
--r-pill | 999px | 상태 배지, 진행 단계 표시 |
6-2. 테두리
- 카드 기본:
1px solid var(--line). 그림자 없음. - 선택됨:
1px solid var(--private-600)+box-shadow: 0 0 0 2px var(--private-100). 테두리를 두껍게 바꾸지 않는다(레이아웃 점프 방지). - 거부권 선택됨: 같은 방식에
--veto-*. - 입력 필드:
1px solid var(--line-strong), 포커스 시--private-600+ 2px 링.
6-3. 높이(그림자)
「실제로 화면 위에 떠 있는 것」에만 그림자를 준다.
| 단계 | 값 | 쓰는 곳 |
|---|---|---|
| 0 | 없음 | 카드, 선택지, 버튼 |
| 1 | 0 4px 16px rgba(26,23,20,.06) | 하단 고정 CTA 영역, sticky 헤더 |
| 2 | 0 12px 40px rgba(26,23,20,.14) | 바텀 시트, 모달, 토스트 |
현재 목업의 .genre 카드 그림자와 .agent 부유 그림자는 제거 대상이다.
7. 아이콘·일러스트·모션
7-1. 아이콘
- 선 아이콘 1.5px 굵기, 20px 기본, 24px 버튼 안. Lucide 계열처럼 굵기가 균일한 세트 하나로 통일한다.
- 이모지는 제품 UI에서 쓰지 않는다. 목업의 🏢·🏖·🍻·🧠·🤝·💬는 전부 선 아이콘으로 교체한다.
- 의미 아이콘 3종은 고정한다: 자물쇠(비공개), 겹친 원(합의·조율), 방패(반드시 지킬 조건).
7-2. 일러스트
- 사람·로봇·얼굴을 그리지 않는다. 봉인 카드·교집합·원탁의 점 세 모티프의 기하 도형만으로 구성한다.
- 후보 카드(장소·일정)에 사진을 넣는 것은 P2. 넣더라도 사진은 조건 정보(일정·비용·이동·충족 조건) 아래에 둔다(쏠 §5-E와 동일: 사진 매력도가 순위 판단을 왜곡하지 않게).
7-3. 모션
| 상황 | 모션 | 시간 |
|---|---|---|
| 선택지 선택 | 테두리·배경 색 전환 | 150ms ease-out |
| 화면 전환(질문 → 다음 질문) | 다음 화면이 오른쪽에서 16px 이동하며 fade-in | 240ms |
| 진행바 | 폭 변화 | 250ms |
| 조율 단계 완료(○ → ✓) | 체크 아이콘 scale 0.8→1 + 색 전환 | 200ms |
| 교집합 모션(조율 중) | 봉인 카드 n개가 중앙으로 모여 교집합 영역이 채워짐. 한 번만 재생, 이후 정지 | 1200ms |
| 재확인 집계 | 원탁의 점이 하나 채워짐 | 200ms |
| 토스트 | 아래에서 8px 올라오며 fade-in | 200ms |
금지: 무한 반복 부유(현재 .agent float), 회전, 점 세 개 깜박임 대신 진행 단계 텍스트로 대체. prefers-reduced-motion: reduce에서는 전환을 fade만 남긴다.
8. 컴포넌트 규격
8-1. 버튼
| 종류 | 모양 | 높이 | 쓰는 곳 |
|---|---|---|---|
| Primary | --ink 바탕, 흰 글자 700, --r-md | 56(모바일)·48(데스크톱) | 화면당 1개. 다음·제출·시작 |
| Secondary | 흰 바탕, --line-strong 테두리, 잉크 글자 | 48 | 되돌아가기, 링크 복사, 부가 행동 |
| Tertiary | 배경 없음, 잉크 글자 밑줄 없음 | 40 | 「계산 기준 보기」 같은 펼침 |
| Destructive | 흰 바탕, --veto-600 테두리·글자 | 48 | 방 닫기, 답변 삭제 |
- 비활성: 배경
#C9C5C0, 글자 흰색. 비활성 이유를 버튼 위 Small 텍스트로 쓴다(「아직 답하지 않은 질문이 있어요」). - 로딩: 글자를 「보내는 중」으로 바꾸고 spinner 없이 opacity 0.7. 버튼 폭은 유지.
- 터치 영역 최소 44×44.
8-2. 선택지 카드 (한 화면 한 질문)
- 폭 100%, 최소 높이 62, 좌우 패딩 18,
--r-md, 텍스트 Body L 좌정렬. - 왼쪽 선택 표시: 단일 선택은 라디오 원 20px, 순위 선택은 숫자 원 24px(
--private-600바탕). - 선택 상태: 테두리
--private-600, 배경--private-50, 글자--private-700. - 선택지는 최대 5개. 넘으면 칩 그리드로 바꾼다.
8-3. 3상태 응답 (선호 / 양보 가능 / 어려움)
Doodle·Loomio 3상태 문법을 끼리 의미로 고정한다. 모든 조건 질문의 기본 응답 형식이다.
| 상태 | 표시 | 색 |
|---|---|---|
| 좋아요 | 채운 원 + 「좋아요」 | --private-* |
| 필요하면 양보할 수 있어요 | 반 채운 원 | --ink-muted |
| 이 조건은 어려워요 | 빈 원에 사선 | --veto-* |
세 상태는 아이콘·글자·색 세 가지로 동시에 구분한다. 색만으로 구분하지 않는다.
8-4. 상한·거부권 선택 (체크박스 대체)
현재 목업의 상한 켜기 체크박스를 2칸 의미 선택으로 바꾼다.
선택한 5만원은…
┌──────────────────────┐ ┌──────────────────────┐
│ 가능하면 맞춰 주세요 │ │ 반드시 넘지 말아 주세요│
│ │ │ 이 값을 넘는 후보는 제외돼요│
└──────────────────────┘ └──────────────────────┘
- 두 칸 같은 크기, 높이 72 이상. 오른쪽 선택 시 테두리·글자
--veto-*, 배경--veto-50, 방패 아이콘. - 선택 즉시 아래 한 줄: 「지금 후보 6개 중 2개가 제외돼요」(엔진이 계산한 실제 수. 계산 불가 시 문장 생략).
8-5. 상태 배지
--r-pill, 높이 24, Caption 700, 좌 아이콘 12px.
| 상태 | 글자 | 색 |
|---|---|---|
| 제출 완료 | 완료 | --consensus-* |
| 작성 중 | 작성 중 | --wait-* |
| 참여함(미작성) | 참여 | --info-* |
| 미참여 | 아직 | --ink-muted / --surface-sunken |
| 비공개 | 자물쇠 + 비공개 | --private-* |
| 반드시 | 방패 + 반드시 | --veto-* |
8-6. 진행 표시
- 질문 진행바: 높이 4,
--private-600단색(그라데이션 제거), 위에4/7 · 약 1분 남음Small. - 조율 진행: 4단계 세로 목록. 완료 ✓ 청록, 진행 중 ● 보라 + 「~하는 중」, 대기 ○ 회색. 각 단계는 시스템이 실제로 한 일을 숫자와 함께 쓴다(「절대 조건과 충돌하는 후보 2개 제외」).
- 원탁의 점: 원 둘레 점 n개(3~8). 채워진 점만 청록. 이름·순서 정보를 주지 않는다(누가 먼저 답했는지 추론 방지 — 점 채우는 위치는 시계 방향이 아니라 무작위 고정 시드).
8-7. 카드 종류
| 카드 | 반경 | 패딩 | 테두리/배경 | 쓰는 곳 |
|---|---|---|---|---|
| 정보 카드 | 16 | 16 | --line / 흰색 | 명단, 마감, 설명 |
| 입력 카드 | 16 | 20 | --line / 흰색 | 자유서술, 「이렇게 이해했어요」 |
| 결론 카드 | 24 | 24 | 테두리 없음 / --consensus-50, 좌측 4px --consensus-600 바 | 결과 첫 화면 |
| 내 리포트 카드 | 24 | 24 | 테두리 없음 / --private-50 | 개인 영역 헤더 |
| 어두운 카드 | 24 | 24 | --surface-dark / 흰 글자 | 초대 링크 카드 하나뿐 |
| 경고 카드 | 16 | 16 | --veto-50 / 좌측 4px --veto-600 | 합의 불가, 탈락 사유 |
8-8. 「이렇게 이해했어요」 확인 카드
자유서술을 AI가 조건으로 바꾼 뒤 보여 주는 카드. 필수 구성:
- 상단 Caption 「AI가 이렇게 이해했어요」 + 자물쇠 배지
- 조건 칩 목록(선호=보라, 반드시=녹슨 주황)
- 버튼 2개:
[맞아요]Primary ·[수정할게요]Secondary
이해 실패 시 배경 --veto-50, 「조건으로 바꾸지 못했어요. 한 가지만 다시 적어 주세요」.
8-9. 최종 재확인 3버튼
| 선택 | 문구 | 아이콘 | 테두리 색 | 결과 설명(버튼 아래 Small) |
|---|---|---|---|---|
| 동의 | 이 안으로 좋아요 | 체크 | --consensus-600 | 동의 1 추가 |
| 조건부 | 실행 조건이 있으면 좋아요 | 말풍선 | --ink | 공개 가능한 조건 한 줄 입력 |
| 재조율 | 이 조건은 다시 맞춰야 해요 | 되돌림 | --veto-600 | 비공개 조건 추가 후 1회 재계산 |
세로로 쌓고 각 높이 72. 집계는 동의 3 · 조건부 1 · 재조율 0으로만.
8-10. 토스트·시트
- 토스트: 잉크 바탕, 흰 글자 Small,
--r-sm, 하단 24px, 3초 후 자동 소멸. 되돌리기가 필요한 행동(답변 삭제)은 토스트 안에되돌리기링크. - 바텀 시트:
--r-lg상단만, 높이 2 그림자, 상단 손잡이 바. 초대 공유·계산 기준 보기·조건 입력에 쓴다.
9. 상태 패턴
| 상태 | 화면 규칙 |
|---|---|
| 로딩(조율 중) | 스피너 대신 4단계 진행 목록. 30초 초과 시 --wait-50 배너 「시간이 오래 걸려 규칙 기반 결과로 전환했어요」 |
| 비어 있음(대기실, 아무도 제출 안 함) | 원탁의 점 전부 회색 + 「아직 아무도 답하지 않았어요」 + 방장에게만 리마인드 버튼 |
| 오류(네트워크) | 인라인 경고 카드 + 재시도 버튼. 입력 내용은 로컬에 보존한다고 명시 |
| 비활성 | 비활성 이유를 텍스트로. 색만 흐리게 하고 끝내지 않는다 |
| 마감 임박(<1시간) | 마감 카드가 --wait-50으로 바뀌고 남은 시간 tabular-nums |
| 마감 지남(미제출) | 「마감됐어요. 답하지 않은 사람은 결과에 포함되지 않아요」 + 결과 보기 |
| 합의 불가 | --veto-50 카드, 실패 단어 대신 「모든 절대 조건을 함께 지킬 후보가 없어요」 + 행동 2개. 충돌한 조건 범주 수만 표시(개인 추론 방지) |
10. 카피·목소리
10-1. 톤
- 「~해요」체. 「~하세요」 명령형은 버튼 안에서만.
- 짧게. 한 문장 25자 안팎, 설명 문단 2줄.
- 사람에게 말하듯. 「입력하십시오」가 아니라 「적어 주세요」.
- 시스템이 한 일을 주어로. 「AI가 후보 2개를 제외했어요」(O) / 「대리인 B가 반대했어요」(X).
10-2. 쓰지 않는 말
| 금지 | 대신 |
|---|---|
| 협상, 대리인이 말했다, 설득 | 조율, 조건을 맞췄어요 |
| 실패, 불가능 | 함께 지킬 후보가 없어요 |
| 익명 보장(추상) | 이 답은 아무에게도 보이지 않아요(구체) |
| 만족도 61.5점 | 가장 아쉬운 사람도 수용 가능한 범위예요 |
| 제출, 전송 | 봉인하기(첫 답변), 보내기 |
| 오류가 발생했습니다 | 연결이 끊겼어요. 적은 내용은 남아 있어요 |
10-3. 고정 문구
| 자리 | 문구 |
|---|---|
| 홈 헤드라인 | 서로의 속마음은 숨기고, 모두가 납득할 안을 찾아요. |
| 홈 3단계 | 봉인해 답하기 → AI가 교집합 찾기 → 함께 확인하기 |
| 질문 화면 하단 고정 | 🔒 이 답은 방장을 포함해 아무에게도 보이지 않아요 (아이콘은 선 아이콘) |
| 결과 상단 배지 | 절대 조건 4개 모두 지킴 |
| 내 리포트 상단 | 본인만 볼 수 있음 · 30일 뒤 삭제 ※ 보관 기간은 미결(§13) |
11. 접근성 체크리스트
구현 전 화면마다 확인한다.
- ☐ 본문 텍스트 대비 4.5:1 이상, UI 경계 3:1 이상(§3-4 표의 조합만 사용)
- ☐ 색만으로 의미를 전달하지 않는다(3상태 응답·배지는 아이콘+글자 동반)
- ☐ 터치 영역 44×44 이상, 선택지 사이 8px 이상
- ☐ 포커스 링 2px
--private-600가시(키보드 탐색) - ☐ 진행바·원탁의 점에
aria-valuenow또는 텍스트 대체(「7명 중 3명 완료」) - ☐ 조율 진행 4단계는
aria-live="polite"로 읽힌다 - ☐
prefers-reduced-motion에서 교집합 모션은 정지 이미지로 대체 - ☐ 320px 폭에서 가로 넘침 없음(문서 사이트 검토에서 이미 한 번 잡힌 문제)
- ☐ 글자 크기 200% 확대에서 하단 고정 CTA가 본문을 가리지 않음
2026-09-06 추가: 이 9줄을 WCAG 2.2 AA 전 항목 · 컴포넌트별 ARIA 명세 · 화면별 검사 항목 · 검사 도구와 인수 기준으로 넓힌 문서는 KKIRI_ACCESSIBILITY_STANDARD.md(https://kkiri-plan.pages.dev/docs/accessibility-standard)다. 이 체크리스트는 그 문서 §2의 부분집합으로 계속 쓴다.
12. 토큰 (복사해서 쓰는 CSS)
:root {
/* 바탕·글자 */
--paper: #FAF8F4;
--surface: #FFFFFF;
--surface-sunken: #F3F0EA;
--surface-dark: #1A1714;
--ink: #1A1714;
--ink-muted: #6B6560;
--ink-disabled: #A8A29B;
--ink-inverse: #FFFFFF;
--line: #E6E1DA;
--line-strong: #8C8680;
/* 역할 색 */
--private-700: #4F38C9; --private-600: #684DEB; --private-50: #EFEBFF; --private-100: #DCD4FF;
--consensus-700: #0B5C56; --consensus-600: #0F766E; --consensus-50: #E3F3F0;
--veto-700: #9A2E10; --veto-600: #B93815; --veto-50: #FCEDE7;
--wait-700: #7A4F00; --wait-600: #B7791F; --wait-50: #FFF3D6;
--info-700: #1D4ED8; --info-600: #3B6FE0; --info-50: #E6F0FF;
/* 형태 */
--r-sm: 12px; --r-md: 16px; --r-lg: 24px; --r-pill: 999px;
--shadow-1: 0 4px 16px rgba(26,23,20,.06);
--shadow-2: 0 12px 40px rgba(26,23,20,.14);
/* 간격 */
--s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 20px;
--s-6: 24px; --s-8: 32px; --s-10: 40px; --s-12: 48px; --s-16: 64px;
/* 글자 */
--font: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
"Apple SD Gothic Neo", "Segoe UI", "Noto Sans KR", sans-serif;
--t-display: 800 34px/40px var(--font);
--t-title: 800 28px/34px var(--font);
--t-heading: 700 20px/28px var(--font);
--t-body-l: 500 18px/28px var(--font);
--t-body: 400 16px/25px var(--font);
--t-small: 600 14px/20px var(--font);
--t-caption: 600 12px/16px var(--font);
--t-number: 800 56px/56px var(--font);
/* 모션 */
--m-fast: 150ms; --m-base: 240ms; --m-slow: 1200ms;
--ease: cubic-bezier(.2,.7,.2,1);
}
body { font: var(--t-body); font-feature-settings: "tnum" 1; color: var(--ink); background: var(--paper); }
@media (min-width: 960px) {
:root { --t-display: 800 40px/48px var(--font); --t-title: 800 32px/40px var(--font); }
}
@media (prefers-reduced-motion: reduce) {
:root { --m-fast: 0ms; --m-base: 0ms; --m-slow: 0ms; }
}
13. 현재 목업 → 본서비스 전환 표
현재 목업 (styles.css) | 본서비스 | 이유 |
|---|---|---|
--accent:#7057ff | --private-600:#684DEB | 대비 4.48 → 5.14 |
--accent2:#ff7657 배지·경고 | --veto-600:#B93815 | 대비 2.63 → 5.44, 의미를 「반드시」로 고정 |
--mint:#dff7e9 성공 | --consensus-50:#E3F3F0 | 합의 역할 색으로 통합 |
.genre 카드 그림자 | 제거, 테두리만 | 떠 있는 요소 아님 |
.agent 부유 이모지 3개 + 로그 패널 | 4단계 진행 목록 + 교집합 모션 1회 | 원칙 3(말을 지어내지 않는다) |
.toggle 상한 체크박스 | 2칸 의미 선택(§8-4) | 원칙 2 |
.progress 그라데이션 | 단색 + 남은 시간 텍스트 | 잡음 제거, 부담 안내 |
| 반경 17~24 혼재 | 12·16·24 3단계 | 계층 |
| 이모지 아이콘 | 선 아이콘 세트 | 톤 통일, 플랫폼별 렌더 차이 제거 |
.result-title 38px + 점수 소수점 | 결론 카드 + 「지켜진 약속」 + 이유 3개, 점수는 펼침 | 거짓 정밀도 제거 |
.brand-mark 검은 정사각형 | 교집합 심볼(P2), 그때까지 현행 유지 | — |
14. 우선순위와 미결
적용 순서
- P0 (기획·목업 즉시): §3 색 토큰, §8-4 상한 선택, §8-6 조율 진행, §8-9 재확인 버튼, §10 금지어. 발표 설득력에 직접 닿는 것.
- P1 (본서비스 1차): §4 타이포 단계, §5-2 데스크톱 2열, §6 반경·높이, §8 나머지 컴포넌트, §9 상태 패턴, §11 접근성.
- P2: 로고 심볼, 후보 카드 사진, 다크 모드, 장르별 시각 템플릿.
민수님 판단이 필요한 것
- 주 버튼 색 — 잉크(검정)로 갈지, 보라를 브랜드 주색으로 밀어 버튼까지 보라로 갈지. 이 문서는 잉크를 권한다(§3-3). 보라를 택하면 「보라=내 비공개」 규칙을 「보라=끼리」로 바꿔야 하고, 합의(청록)와의 대비 서사가 약해진다.
- 내 리포트 보관 기간 문구 — 요구사항 정의서 §7 미결과 같은 항목. 문구 자리는 잡아 두었다(§10-3).
이 두 가지 외에는 이 문서의 값을 그대로 쓰면 된다. 쏠이 이 요청에 별도 안을 내면, 겹치는 항목(역할 색 4종·봉인된 원탁)은 이미 같은 값이고 다른 항목은 이 표 형식으로 합치면 된다.