# TriplePick — Look & Feel / Design System (SSOT) 최종 갱신: 2026-06-09 KST 출처: 구현된 `app/globals.css` + 컴포넌트 + 사용자 디렉션(02/03 목업 + 첨부 레퍼런스 반복 확정) 원칙: **이 문서가 룩앤필의 단일 기준(SSOT).** 새 컴포넌트·페이지는 여기 토큰·패턴을 그대로 따른다. > 디자인 진화 기록(Before/After): `/before`(v1 다크토큰) vs `/`(현재). 임의 변경 금지 — 토큰을 바꾸면 여기부터 갱신. --- ## 1. 브랜드 에센스 - 이름: **TriplePick / Triple Pick 2026** · 핸들 `@triplepick_ai` · 운영 AIO2O - 컨셉: "AI 셋(GPT·Claude·Gemini) vs 너" — 대결·스코어보드·e스포츠 픽밴 에너지 - 톤: 다크 차콜 베이스 + **민트/틸그린 액센트**, 프리미엄 스포츠 브로드캐스트 - ⚠️ 금지: **"월드컵" 명칭(법적)** → "글로벌 축구" 프레이밍 / **골드 촌스러운 톤 금지**(쿨 민트·틸) / **단색 초록 일변도 금지** --- ## 2. 컬러 토큰 (globals.css `:root` — 정확값) | 역할 | 변수 | HEX | 용도 | |---|---|---|---| | 베이스 | `--bg` | `#14171C` | 차콜 다크 배경 | | 베이스2 | `--bg2` | `#1B1F26` | 카드/입력 배경 | | 카드 | `--card` | `#20262F` | 다크 카드 | | **CTA 민트** | `--mint` | `#85FCA8` | 메인 버튼(밝은 민트그린) | | 민트 텍스트 | `--mint-ink` | `#0A2417` | 민트 버튼 위 글자 | | 액센트/글로우 | `--green` | `#3EE08A` | VS 글로우·보더·언더라인 | | **레이어 시트** | `--sheet` | `#F2F3EF` | 화이트 레이어드 시트(AI예측·픽) | | 시트 카드 | `--sheet-card` | `#FFFFFF` | 시트 위 카드 | | 잉크 | `--ink` | `#14171C` | 화이트 위 텍스트 | | 잉크 뮤트 | `--ink-muted` | `#79808C` | 보조 텍스트 | | 다크 라인 | `--line-d` | `#2B313C` | 다크 보더 | | 라이트 라인 | `--line-l` | `#E3E5DF` | 시트 보더 | **모델 컬러(고정):** GPT `--gpt #15A99B`(틸그린) · Claude `--claude #E8814A`(오렌지) · Gemini `--gemini #5B8CFF`(블루) **상금 카드(쿨톤, 골드 폐기):** 보더 `--gold-border #5EF0B4` · 배경 `--gold-bg #0E1F1B`(딥틸) · 버튼 그라데 `#85FCA8 → #15A99B`(`.gold-btn`) > 배경: `radial-gradient(120% 50% at 50% -5%, #20302A, var(--bg))` — 상단 미세 그린 글로우. --- ## 3. 타이포그래피 - **타이틀 = Impact** (`.font-impact`: Impact, Haettenschweiler, "Arial Narrow Bold"). 예: `TRIPLE PICK 2026` 44px, 섹션 헤딩 32–40px - 본문 = Pretendard / 시스템 산세리프 (한글). (Pretendard 웹폰트 로드는 TODO) - 스케일: **사용자 지시로 2× 상향**. AI 스코어 28px · 모델명 20px · 매치 타이틀 22px · 헤딩 22px · 세그먼트 16px · 스테퍼 32px · CTA 20px - 후킹 헤드라인: **한 줄 강제**(`whitespace-nowrap`, 19px) + 양옆 `⫽` 그린 --- ## 4. 레이아웃 - **모바일 우선**, `.shell` max-width **460px**, 좌우 패딩 16 - 구조 = **다크 히어로(상) + 레이어드 화이트 시트(하)** 하이브리드 - 다크: Hero · MatchupHUD(대결) - 화이트 시트(`.sheet`, radius 22, 그림자): AI 예측 + 당신의 선택 - 다크: 상금(쿨톤) · Crowd · Footer - 카드 radius 12–22, 터치 타깃 ≥ 44px --- ## 5. 컴포넌트 카탈로그 (현재 구현 = 기준) - **Hero** (`Hero.tsx`): `TRIPLE PICK 2026`(Impact, 2026 그린) → `AI Prediction Arena`(그린) → 서브카피 **알약**(반투명, 가시성↑) → 후킹 한 줄(⫽ 그린) - **MatchupHUD** (`MatchupHUD.tsx`): `Match 01 → Final` 진행 바 → **녹색 글로우 보더 카드**(box-shadow green) → **프로필 로고 아이콘**(`/icons/profile.png`) + 팀명 + 일시(그린 볼드) + 경기장 → 국기(실제 KOR png + CZE 인라인 SVG) + **라이트닝 그린 VS**(Impact, textShadow glow) - **AI 예측 카드** (`Arena.tsx`, 화이트 시트 내): 실제 모델 아이콘(`/icons/gpt.png·claude.jpg·gemini.jpeg`) + 모델명 + 스코어(28px) + 확률% + **모델색 confidence 바** + 근거 한 줄 - **세그먼트(당신의 선택)**: 3분할, 선택 시 `--mint` 배경 + 잉크 텍스트 - **스코어 스테퍼**: −/+ 버튼 + 큰 숫자(32px) - **CTA(`.btn-mint`)**: `#85FCA8` + 글로우 그림자 - **상금 카드(`.gold-card`/`.gold-btn`)**: 딥틸 배경 + 민트 보더 + 민트→틸 그라데 버튼 (쿨톤) - **Crowd Pick**: 가로 세그먼트 단일 바(국기 + %) - **Footer**: fine print + 법무 4고지 + `© 2026 TriplePick · 운영 AIO2O · @triplepick_ai` --- ## 6. 아이콘·이미지 자산 (`public/icons/`) - `ball.png` — **클래식 흑백 축구공(투명 PNG)**. ⚠️ 흰 배경/체커보드 구워넣기 금지(마젠타 키잉으로 투명 처리한 자산) - `profile.png` — TriplePick 브랜드 로고(매치카드 아이콘) - `gpt.png` / `claude.jpg` / `gemini.jpeg` — 실제 브랜드 아이콘(레터박스 금지) - `kor.png` — 한국 국기. 체코는 인라인 SVG(백·적 + 청 삼각) - 글로우는 `drop-shadow(... rgba(62,224,138,.))` 그린으로만 --- ## 7. Do / Don't - ✅ 실제 모델 아이콘 · 클래식 축구공(투명) · 라이트닝 그린 VS · 화이트 시트 + 다크 하이브리드 · 민트 CTA - ✅ 3색(틸그린/오렌지/블루)으로 모델 구분, 글로우는 그린 - ❌ "월드컵" 표현 / 골드 톤 / 단색 초록 일변도 / 레터박스 가짜 아이콘 / 이모지 축구공 / 임의 다크 단색(=v1 회귀) - ❌ 한글을 이미지로 굽기(가독성↓) — 텍스트 레이어로 --- ## 8. 06.09 회의 반영 (DONE 2026-06-09) > 상세: `../../Worldcup 2026/000. Plan/Task — 랜딩·디자인·프론트엔드 업데이트 (06.09 회의).md` - [x] 확률 라벨 `Confidence` → **"OO 승리 확률 XX%"**(이긴 팀 기준) + 승리팀 국기 (`format.winProb` + `TeamFlag`) - [x] confidence 바 **h-1로 축소**, **근거(메인 리즌) 15px 볼드 인용("…")으로 강조** - [x] **닉네임 필드 제거 → 이메일만** + 동의 체크박스(다음 경기/100만원) - [x] 서브타이틀 `… Matchday Prediction` **삭제(중복)** — Hero는 브랜드 헤더로 단일화 - [x] **"투표 종료까지" 카운트다운** 상세에 복원 (`Countdown.tsx`, 마감=lockAt=킥오프) - [x] 멀티 경기: **대시보드(`/`) + 경기 상세(`/match/[matchId]`) + 리더보드 stub(`/leaderboard`)** — 동일 토큰 - [x] 예측하기 → (경기 후) **결과 보기** + 최종 스코어 (`match.result` 분기, MatchupHUD/Arena) - [x] **"월드컵" 표현 제거**(D9) — Hero·schedule hookText·meta → "글로벌 축구" - [x] **경기별 공유**(D8) — `matchUrl()` 딥링크, `navigator.share` invoke - [x] Crowd Pick에 **"AI 승리 확률과 다릅니다"** 구분 라벨 ## 9. 멀티 경기 구조 (06.09 신규) - **라우팅**: `/`=대시보드(전체 일정) · `/match/[matchId]`=경기 상세(6경기 SSG) · `/leaderboard`=차기 stub - **컴포넌트 파라미터화**: `MatchupHUD({match})` · `Arena({match, predictions, crowd, shareUrl})` — 싱글톤 의존 제거 - **국기 일반화**: `TeamFlag({team})` — KOR png / CZE 인라인 SVG / 그 외 이모지 박스 - **데이터**: `mockData.getPredictions(match)`/`getCrowd(match)` — 체코전 큐레이션, 그 외 `matchId` 해시 결정론 생성(Math.random 미사용) - **대시보드 카드**(`ScheduleBoard.tsx`): 날짜 그룹 → 시간·라운드·상태칩·팀 국기·AI 픽 갈림·참여수 → 상세 딥링크. 네이버 e스포츠 승부예측 톤, 다크 토큰 유지