스트립 = 칩의 행. 자유 텍스트·구두점 없음. 솔리드 칩 = 긴급(시한·지금) 또는 종결(취소됨) · 흰 칩 = 경고·진행 중·스탠딩(의미는 글자색). 메시지와 한정어는 한 칩 — 서브 세그먼트는 본문과 동일 렌더, 구분은 헤어라인뿐 (B안). 역할 우선순위 호스트 > 확정 > 예비자 > 브라우즈; 공통 인터럽트(취소·라이브)가 전 역할 선점. 모집 상태는 브라우즈 전용.
언어 문법 · 상태는 ~중 (라이브 → 진행, 예비, 입금 확인 중) · 결과는 ~됨/확정 (취소됨, 참석 확정) · 행동은 ~필요 (입금 필요, 점수 확인 필요) · 카운트다운 한정어는 N 남음, 미래 시작은 N 뒤 — “3시간 전”은 단독 칩으로 읽으면 과거형이라 금지 · 웨이팅은 ‘예비’ — 신청함은 새 신청 N건으로 분리. ‘대기’는 결제 대기 등 프로세스 대기에만 남김 (성사 대기처럼 사람이 아니라 절차가 기다리는 경우) · RSVP 동사는 참석/불참(참석하다/불참하다) — 참가는 참가비·토너먼트 참가에만. 참가비 송금 확인 절차는 클럽 총무 어휘에 맞춰 입금 (입금 필요/입금 확인 중/입금 완료) · 신청/접수 시점: 접수는 받는 쪽, 신청은 하는 쪽 — 뷰어 칩은 항상 뷰어의 동사 (예비 가능) · 칩 색 원칙: 솔리드 = 긴급(마감 시한·지금 벌어짐) 또는 종결 — 취소됨·라이브·입금 필요·마감 임박·곧 시작. 흰 칩 = 경고·진행 중·스탠딩 — 우천 예보·새 신청·점수 확인 필요·입금 확인 중·호스트·참석 확정·예비·모집 마감
적용 서피스 렌더 — 카드 + 상세
SHIPPED (session-strip-ui.tsx:341-371,444): the bare Bookmark glyph is baked into SessionStripView and always renders at the strip's end on every non-null strip — filled when saved, ~0.7-opacity outline when not; it is not tappable there. The detail screen additionally carries its own tappable toggle in the header (SessionSaveButton, session-detail-screen.tsx:342) — the strip's indicator only mirrors that state, it never replaces it.
서초구
양재 클레이코트
토 7/26 · 오전 10:00₩10,000
복식친선NTRP 3.0–5.0
모집 중5/12
라이브
송파구
올림픽공원 테니스장
오늘 · 오후 7:00
복식정기NTRP 3.0–5.0
12/12
입금 필요8분 남음
영등포구
한강공원 코트
일 7/27 · 오전 8:00₩8,000
복식친선NTRP 3.0–4.0
8/12
참석 확정
성동구
서울숲 코트
월 7/28 · 오후 8:00
단식정기NTRP 3.5
11/12
카드 4종① 브라우즈(밴드 없음 — 표시할 곳 없음 = 미저장 기본) ② 라이브 리본 끝 아웃라인(미저장) ③ 입금 리본 끝 필드(저장) ④ 캄 밴드 끝 필드(저장). 썸네일은 지도+핀만 — 오버레이 금지(라운드4 캐논)
양재 클레이코트 · 토 10:00
밴드 없음 (모집 중 브라우즈) — 북마크는 헤더에 상주
VenueHero …
한강공원 코트 · 일 8:00
입금 필요8분 남음
VenueHero …
상세 2종헤더 아이콘 로우(공유·수정 옆)에 북마크 토글 상주 — 아웃라인(미저장) / 필드+브랜드그린(저장). 상세 리본은 카드보다 한 단계 큼
공통 인터럽트 — 모든 역할 선점
취소됨
모든 역할rank 10 — 전부를 이김. 북마크 = 맨 아이콘 토큰 (흰색)
라이브
모든 역할rank 20 — 앱 전역 in_progress 배지와 동일 어휘. 북마크 = 맨 끝 아이콘 토큰(모든 non-null 스트립 공통, session-strip-ui.tsx:444)
호스트 — 모집 상태 없음
새 신청 2건
호스트게스트 신청 도착 — 행동 대상이지만 시한이 없음 → 흰 앰버 칩 (새 메시지 N개 패턴)