사용자 화면 · 홈
HOM-001 · 2026. 03. 20
| 0 | 화면 접근 조건 |
|
| 1 | 헤더 |
|
| 2 | 안심영역 |
|
| 3 | 판단 프레이밍 영역 |
|
| 4 | 가벼운 탐색 영역 - 마켓 |
|
| 5 | 가벼운 탐색 영역 - 지금 주목할 작품 |
|
| 6 | 가벼운 탐색 영역 - 컬렉터들의 선택 |
|
| 7 | 소형 띠배너 |
|
| 8 | 공통 규칙 |
|
Design Output
위 스토리보드 기획을 CHAART OS 디자인 토큰으로 변환한 결과물. 실제 구현 시 참조할 최종 디자인.
차트, 검증된 기준으로
거래하는 리세일 마켓.
어떤 방식으로 찾으시겠어요?
직접 찾을게요
공개 마켓 탐색
조용히 찾을래요
프라이빗 세일 의뢰
이배 원화
Lee Bae
김창열 원화
Kim TschangYeul
남춘모 원화
Nam TchunMo
김선우 원화
Kim SunWoo
요시토모 나라 아트토이
Yoshitomo Nara
이배 원화
Lee Bae
김창열 원화
Kim TschangYeul
남춘모 원화
Nam TchunMo
아야코 록카쿠 원화
Ayako Rokkaku
요시토모 나라 아트토이
Yoshitomo Nara
김창열 원화
Kim TschangYeul
이배 원화
Lee Bae
아야코 록카쿠 원화
Ayako Rokkaku
김선우 원화
Kim SunWoo
요시토모 나라 아트토이
Yoshitomo Nara
Update History
1. 화면 구조 개요
HOM-001은 홈 기본 화면(default)이다. 로그인/비로그인 사용자 모두 접근 가능하며, 하단 내비게이션의 "홈" 탭 클릭 시 본 화면으로 이동한다.
구성 요소 요약 테이블
| # | 영역 | 역할 | 스크롤 |
|---|---|---|---|
| 0 | Status Bar (iOS) | 시스템 상태 표시 | 고정 |
| 1 | 헤더 (로고 + 알림) | 브랜드 인식 + 알림 진입 | 고정 |
| 2 | 안심영역 카피 | 서비스 소개 + CTA | 세로 |
| — | 구분선 | 안심영역/판단영역 시각 분리 | — |
| 3 | 판단 프레이밍 (선택 카드 2종) | 마켓/PS 진입 유도 | 세로 |
| 4 | 실시간 마켓 업데이트 (캐러셀) | 최신 공개 작품 5건 노출 | 가로 스냅 |
| 5 | 지금 주목할 작품 (캐러셀) | 에디터 큐레이션 5건 노출 | 가로 스냅 |
| 6 | 컬렉터들의 선택 (캐러셀) | 컬렉터 찜/거래 인기 5건 | 가로 스냅 |
| 7 | 소형 띠배너 (AD) | Google 띠배너 광고 | 세로 |
| 8 | 하단 탭바 (Tab Bar) | 글로벌 내비게이션 4탭 | 고정 |
2. 레이어 구조 + 치수
위에서 아래로 각 레이어의 역할, 정확한 치수, 사용 토큰을 기술한다. 모든 값은 디자인 산출물 인라인 스타일에서 추출한 실측값이다.
2-1. Status Bar (iOS)
#1d1d1f (iOS 시스템 기본)2-2. 헤더 (Header)
var(--bg) var(--bg)padding: 0 24px)display:flex; align-items:center; justify-content:space-between--charcoal var(--charcoal), 마침표 점 fill --red-brand var(--red-brand)stroke: var(--charcoal), stroke-width 1.5, fill none2-3. 안심영역 (Hero Copy)
padding: 32px 24px 44px)color: var(--red-brand) var(--red-brand)color: #060606var(--sans) Pretendardvar(--ls-tight))inline-flex; align-items:center; gap:6pxvar(--size-md-height))1px solid rgba(6,6,6,0.1)transparentvar(--sans) 13px / 500 / rgba(6,6,6,0.8)stroke: currentColor, stroke-width 2, top -1.25px 보정2-4. 구분선
margin: 0 24px)border-top: 1px solid /* NOTE: --alpha-6 미정의, 치환 보류 */rgba(6,6,6,0.06)2-5. 판단 프레이밍 영역 (Choice Cards)
padding: 32px 24px 28px)var(--sans) 17px / 700 / var(--charcoal) var(--charcoal)display:flex; gap:12px (가로 2열 균등)flex:1; min-height:120px1px solid var(--alpha-8)transparentdisplay:flex; flex-direction:column; gap:12pxstroke: var(--red-brand) var(--red-brand), stroke-width 1.5var(--sans) 14px / 600 / #060606 / letter-spacing -0.01em / line-height 1.3var(--sans) 11px / 400 / rgba(6,6,6,0.4) / letter-spacing -0.005em / margin-top:autostroke: var(--red-brand) var(--red-brand), stroke-width 1.5, rx="0" (직각 자물쇠).hom-choice-card):
border-color: rgba(6,6,6,0.2)background: rgba(6,6,6,0.015)transition: border-color 0.2s, background 0.2s2-6. Full Bleed Carousel — 공통 구조 (3개 섹션 공유)
아래 3개 섹션(실시간 마켓 업데이트 / 지금 주목할 작품 / 컬렉터들의 선택)은 동일한 Full Bleed Carousel 패턴을 사용한다.
padding: 20px 0 — 좌우 패딩 없음(Full Bleed)padding: 0 24px; margin-bottom:12px display:flex; justify-content:space-between; align-items:centervar(--sans) 17px / 700 / var(--charcoal) var(--charcoal) / letter-spacing -0.02emstroke: var(--charcoal), stroke-width 1.5, linecap square, linejoin miterdisplay:flex; gap:12pxoverflow-x:auto; overflow-y:hiddenscroll-snap-type: x mandatoryscroll-padding-left: 24pxpadding: 0 0 2px 24px — 좌측만 24px, 우측은 화면 끝까지 확장-webkit-overflow-scrolling: touchscrollbar-width: none (스크롤바 숨김)cursor: grab (드래그 중 grabbing)flex: 0 0 44%; min-width:0; scroll-snap-align:startflex:0 0 24px; min-width:24px)aspect-ratio: 1/1 (정방형)background: var(--paper) var(--warm-paper) (이미지 로드 전 fallback)position:relative; overflow:hiddenwidth:100%; height:100%; object-fit:covervar(--sans) 14px / 600 / #060606 / letter-spacing -0.02em / line-height 1.3display:inline-block; font-size:var(--text-2xs); font-weight:500; color:rgba(6,6,6,0.35); border:1px solid rgba(6,6,6,0.1); padding:1px 5px; margin-left:4px; vertical-align:baseline; letter-spacing:var(--ls-normal)var(--serif) Libre Baskerville 12px / 400 / rgba(6,6,6,0.45) / line-height 1.3 / margin-top 2px2-7. 소형 띠배너 (AD Banner)
var(--paper) var(--warm-paper)var(--mono) 10px / letter-spacing 0.08em / uppercase / var(--text-muted) / z-index:12-8. 하단 탭바 (Tab Bar)
var(--bg) var(--bg)border-top: 1px solid rgba(26,26,26,0.06)display:flex; align-items:center; justify-content:space-around; padding:0 24pxdisplay:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px| 탭 | 아이콘 | 활성 스타일 | 비활성 스타일 |
|---|---|---|---|
| 홈 (active) | Lucide house 24x24 | stroke var(--red-brand), stroke-width 1.8, font-weight 600 | — |
| 마켓 | Lucide shopping-cart 24x24 | — | stroke var(--text-muted), stroke-width 1.5, font-weight 500 |
| PS | Lucide lock 24x24 | — | stroke var(--text-muted), stroke-width 1.5, font-weight 500 |
| MY | Lucide user 24x24 | — | stroke var(--text-muted), stroke-width 1.5, font-weight 500 |
var(--sans) 10px / letter-spacing -0.01emvar(--red-brand)(red-brand) + stroke-width 1.8 + font-weight 600var(--text-muted) + stroke-width 1.5 + font-weight 5003. 핵심 인터랙션
| 사용자 동작 | 시스템 반응 |
|---|---|
| 헤더 로고 탭 | 별도 액션 없음 (홈 리프레시/이동 없음) |
| 알림 아이콘 탭 (로그인) | HOM-004 알림 내역 화면으로 이동 |
| 알림 아이콘 탭 (비로그인) | LOG-008 로그인 안내 모달 노출 → 로그인 완료 시 HOM-004로 이동 |
| CTA "CHRT. 소개 보기" 탭 | 차트 서비스 소개 랜딩 페이지로 이동 (화면 ID 추후 작성) |
| "직접 찾을게요" 카드 탭 | MKT-001 마켓 화면으로 이동 |
| "조용히 찾을래요" 카드 탭 | 프라이빗 세일 화면으로 이동 (화면 ID 추후 작성) |
| 작품 카드 탭 (3개 캐러셀 공통) | MKT-013 작품 상세 화면으로 이동 |
| 찜 아이콘 탭 (로그인) | .is-saved 클래스 토글 → 찜 추가/해제 API 호출 |
| 찜 아이콘 탭 (비로그인) | LOG-008 로그인 유도 모달 노출, 찜 동작 수행 안 됨 |
| 캐러셀 가로 스와이프/드래그 | scroll-snap으로 카드 정렬, 드래그 중 snap 임시 해제 → 놓으면 복원 |
| 섹션 chevron(→) 탭 — 실시간 마켓 | MKT-001 마켓 목록 화면으로 이동 |
| 섹션 chevron(→) 탭 — 지금 주목할 작품 | "차트 PICK" 목록 화면으로 이동 |
| 섹션 chevron(→) 탭 — 컬렉터들의 선택 | "차트 PICK" 목록 화면으로 이동 |
| AD 배너 탭 | 연동된 외부 랜딩 페이지로 이동 (광고 SDK) |
| 탭바 "마켓" 탭 | MKT-001로 이동 |
| 탭바 "PS" 탭 | Private Sale 화면으로 이동 (TBD) |
| 탭바 "MY" 탭 | MYP-001로 이동 (비로그인 시 LOG-001) |
4. 상태 변화
4-1. 찜(북마크) 아이콘 상태
| 상태 | CSS 클래스 | 시각 표현 |
|---|---|---|
| 비활성 (기본) | .chrt-save | fill:none, stroke:rgba(255,255,255,0.9), drop-shadow(0 1px 3px var(--alpha-40)) |
| 활성 (찜 완료) | .chrt-save.is-saved | fill:var(--red-brand), stroke:var(--red-brand), transition: fill 0.25s ease, stroke 0.25s ease |
| 프레스 (탭 중) | .chrt-save:active | svg transform: scale(0.92), transition: transform 0.2s ease-out |
position:absolute; top:8px; right:8px; z-index:1)-webkit-tap-highlight-color: transparent4-2. 판단 프레이밍 카드 상태
| 상태 | border-color | background |
|---|---|---|
| 기본(default) | var(--alpha-8) | transparent |
| hover | rgba(6,6,6,0.2) | rgba(6,6,6,0.015) |
4-3. 홈 화면 분기 (사용자 상태별)
| 사용자 상태 | 표시 화면 |
|---|---|
| 찜한 작품 있음 | HOM-002 |
| 최근 본 작품 있음 / 찜 없음 | HOM-003 |
| 둘 다 없음 (기본) | HOM-001 (현재 화면) |
5. 네비게이션 플로우
5-1. 어디서 오는가 (Incoming)
5-2. 어디로 가는가 (Outgoing)
| 트리거 | 목적지 화면 ID | 비고 |
|---|---|---|
| 알림 아이콘 (로그인) | HOM-004 | 알림 내역 |
| 알림 아이콘 (비로그인) | LOG-008 (모달) | 로그인 안내 → 완료 시 HOM-004 |
| CTA "CHRT. 소개 보기" | TBD | 소개 랜딩 페이지 |
| "직접 찾을게요" 카드 | MKT-001 | 공개 마켓 |
| "조용히 찾을래요" 카드 | TBD | 프라이빗 세일 |
| 작품 카드 (전체 캐러셀) | MKT-013 | 작품 상세 |
| 찜 아이콘 (비로그인) | LOG-008 (모달) | 로그인 유도 |
| chevron(→) — 실시간 마켓 | MKT-001 | 마켓 목록 |
| chevron(→) — 지금 주목할 작품 | 차트 PICK 목록 | 큐레이션 목록 |
| chevron(→) — 컬렉터들의 선택 | 차트 PICK 목록 | 큐레이션 목록 |
| AD 배너 | 외부 URL | 광고 SDK 연동 |
| 탭바 "마켓" | MKT-001 | — |
| 탭바 "PS" | TBD | Private Sale |
| 탭바 "MY" | MYP-001 / LOG-001 | 로그인 시 MYP-001, 비로그인 시 LOG-001 |
6. 에러/예외 처리
| 예외 상황 | 처리 방식 |
|---|---|
| 비로그인 상태에서 찜 아이콘 탭 | LOG-008 로그인 안내 모달 노출. 찜 동작 수행되지 않음 |
| 비로그인 상태에서 알림 아이콘 탭 | LOG-008 로그인 안내 모달 노출. 로그인 완료 시 HOM-004로 이동 |
| 캐러셀 작품 데이터 0건 (API 실패/빈 결과) | 해당 캐러셀 섹션 자체를 숨김 처리 (빈 상태 UI 없음) |
| 작품 이미지 로드 실패 | background fallback var(--paper) var(--warm-paper) 노출 |
| 찜한 작품 있는 로그인 사용자 진입 | HOM-001이 아닌 HOM-002로 자동 리다이렉트 |
| 최근 본 작품 있고 찜 없는 로그인 사용자 | HOM-001이 아닌 HOM-003으로 자동 리다이렉트 |
7. 모션 스펙
CHAART 모션 원칙: 절제되고 고급스러운 인상. 바운시/스프링 효과 금지, ease/ease-out 위주.
| 요소 | 속성 | duration | easing |
|---|---|---|---|
| 판단 카드 hover | border-color, background | 0.2s | ease (기본) |
| 찜 아이콘 — 프레스 스케일 | transform (scale) | 0.2s | ease-out |
| 찜 아이콘 — 활성 색상 전환 | fill, stroke | 0.25s | ease |
| 캐러셀 scroll-snap | scroll-behavior | 브라우저 기본 | 브라우저 기본 (smooth) |
8. 여백 · 간격 요약
| 영역 | padding / margin | gap |
|---|---|---|
| 헤더 | padding: 0 24px / height: 48px | — |
| 안심영역 | padding: 32px 24px 44px | 타이틀→CTA: margin-top 24px |
| 구분선 | margin: 0 24px | — |
| 판단 프레이밍 | padding: 32px 24px 28px | 타이틀→카드: margin-bottom 16px / 카드간 gap: 12px |
| 캐러셀 섹션 (x3) | padding: 20px 0 | 헤더 px: 24px / 카드간 gap: 12px / 스크롤 padding-left: 24px |
| 캐러셀 헤더→카드 | margin-bottom: 12px | — |
| 카드 썸네일→텍스트 | margin-top: 8px | 국문→영문: margin-top 2px |
| 캐러셀 끝 spacer | flex: 0 0 24px / min-width: 24px | — |
| AD 배너 | padding: 12px 24px | — |
| 하단 탭바 | padding: 0 24px / height: 80px | 아이콘→라벨: gap 3px |
9. 적용 디자인 토큰
9-1. 색상 토큰
| 토큰명 | 실제값 | 사용처 |
|---|---|---|
--bg | var(--bg) | 헤더 배경, 탭바 배경 |
--paper | var(--warm-paper) | 썸네일 fallback, AD 배너 배경 |
--charcoal | var(--charcoal) | 섹션 타이틀, chevron stroke, 로고 본체 |
--red-brand | var(--red-brand) | 타이틀 "차트," 강조, 로고 점, 활성 탭, 찜 활성, 카드 아이콘 |
--text-muted | var(--text-muted) | 비활성 탭 아이콘/라벨, AD 라벨 |
#060606 | (하드코딩) | 안심영역 카피 본문, 카드 헤드라인, 작가명 |
rgba(6,6,6,0.4) | — | 카드 서브카피 (공개 마켓 탐색 / 프라이빗 세일 의뢰) |
rgba(6,6,6,0.45) | — | 영문 작가명 |
rgba(6,6,6,0.35) | — | 작품유형 뱃지 텍스트 |
var(--alpha-8) | — | 카드 border 기본, 뱃지 border |
rgba(6,6,6,0.1) | — | CTA 버튼 border, 뱃지 border |
/* NOTE: --alpha-6 미정의, 치환 보류 */rgba(6,6,6,0.06) | — | 안심/판단 구분선 |
rgba(26,26,26,0.06) | — | 탭바 상단 border |
rgba(255,255,255,0.9) | — | 찜 비활성 아이콘 stroke |
rgba(6,6,6,0.8) | — | CTA 버튼 텍스트 |
9-2. 타이포그래피 토큰
| 요소 | font-family | size | weight | letter-spacing | line-height |
|---|---|---|---|---|---|
| 안심영역 타이틀 | var(--sans) | 28px | 800 | -0.02em | 1.4 |
| 섹션 타이틀 | var(--sans) | 17px | 700 | -0.02em | 기본 |
| 카드 헤드라인 | var(--sans) | 14px | 600 | -0.01em | 1.3 |
| CTA 버튼 | var(--sans) | 13px | 500 | -0.01em | 기본 |
| 작가명 (국문) | var(--sans) | 14px | 600 | -0.02em | 1.3 |
| 작가명 (영문) | var(--serif) | 12px | 400 | 기본 | 1.3 |
| 작품유형 뱃지 | var(--sans) | 10px | 500 | 0.01em | 기본 |
| 카드 서브카피 | var(--sans) | 11px | 400 | -0.005em | 기본 |
| 탭바 라벨 | var(--sans) | 10px | 500/600 | -0.01em | 기본 |
| AD 배너 라벨 | var(--mono) | 10px | 400 | 0.08em | 기본 |
9-3. 아이콘 토큰
| 아이콘 | 크기 | stroke-width | stroke/fill | 비고 |
|---|---|---|---|---|
| bell (알림) | 20x20 | 1.5 | var(--charcoal) | 헤더 우측 |
| search (검색) | 20x20 | 1.5 | var(--red-brand) | 직접 찾을게요 카드 |
| lock (자물쇠) | 20x20 | 1.5 | var(--red-brand) | 조용히 찾을래요 카드, rx=0 |
| chevron-right | 14x14 (CTA) / 8x14 (섹션) | 2 / 1.5 | currentColor / var(--charcoal) | CTA / 섹션 헤더 |
| bookmark (찜) | 18x18 | 2 | rgba(255,255,255,0.9) / var(--red-brand)(활성) | drop-shadow 적용 |
| house (홈) | 24x24 | 1.8 | var(--red-brand) | 활성 탭 |
| shopping-cart (마켓) | 24x24 | 1.5 | var(--text-muted) | 비활성 탭 |
| lock (PS) | 24x24 | 1.5 | var(--text-muted) | 비활성 탭 |
| user (MY) | 24x24 | 1.5 | var(--text-muted) | 비활성 탭 |
9-4. 레이아웃 토큰
| 토큰/값 | 실제값 | 사용처 |
|---|---|---|
| 전체 좌우 패딩 | 24px | 헤더, 안심영역, 판단프레이밍, 섹션헤더, AD배너, 탭바 |
| 캐러셀 카드 너비 | 44% | 3개 캐러셀 공통 (2장 + peek) |
| 캐러셀 gap | 12px | 카드 사이 간격 |
| 판단카드 gap | 12px | 선택 카드 2종 사이 |
| 판단카드 내부 gap | 12px | 아이콘→헤드라인→서브카피 |
| CTA 버튼 min-height | 40px | var(--size-md-height) |
| border-radius | 0 | 모든 카드, 버튼, 배너 (직각 원칙) |
9-5. CSS 클래스 레퍼런스
| 클래스 | 용도 |
|---|---|
.hom-choice-card | 판단 프레이밍 선택 카드 — hover 시 border-color 0.08→0.2, background transparent→0.015 전환 (0.2s) |
.chrt-save | 찜(북마크) 아이콘 래퍼 — absolute top:8px right:8px, 28x28 터치 영역, cursor:pointer |
.chrt-save.is-saved | 찜 활성 상태 — fill/stroke var(--red-brand), 0.25s ease 색상 전환 |
.chrt-save:active | 프레스 피드백 — svg scale(0.92), 0.2s ease-out |
.sb-dp-homebar | iOS Home Indicator bar (탭바 하단) |
9-6. JS 스크롤 드래그 (마우스 드래그 스크롤)
marketScroll, pickScroll, collectScrollel.scrollLeft = scrollL - (x - startX)e.preventDefault() 적용 — 이미지 드래그 방지-webkit-overflow-scrolling: touch)9-7. 디자인 원칙 준수 사항
border-radius: 0. 둥근 모서리 절대 금지var(--sans)), 영문 Libre Baskerville(var(--serif)), 라벨 Space Grotesk(var(--mono))var(--red-brand) (red-brand) — CTA 강조, 활성 탭, 찜 활성, 로고 점, 카드 아이콘에만 사용scrollbar-width: none