designpaca/apps/site/public/work/baekje-celadon/design.md
Yun Chan 8e3cdb0d3b
Some checks are pending
ci / build (push) Waiting to run
feat(site): rework 19 marketing showcases for composition diversity
Measured convergence before: split hero 13/19, top-bar nav 19/19,
one-line notice footer 14/19, body Pretendard 17/21, 10 similarity
pairs above 0.78. Each showcase got a pre-assigned hero family, nav
form, footer form, type pair, background, accent hue, radius, motion
grammar and material from outputs/rework-2026-10-06/plan.md; direction
cards and the chosen reason are recorded in every design.md.

After: 0 similarity warnings, 19 distinct display faces, 7 hero
families, 5 nav forms, 5 footer forms, no scroll reveals, 5 showcases
with SVG filter materials. Example contact values replace bracket
placeholders under the existing fictional-brand notices. Thumbnails,
OG images, card copy and three e2e assertions updated; dead CSS in
dure-enrollment and hannam-jari removed; similarity.mjs learns the new
font families.
2026-10-06 16:55:50 +09:00

129 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# design.md — 비색, 1,280°C (고려청자 특별전)
## 진행 상태
- 0단계 완료 — 전체(리디자인) 경로. 현행 감사와 보존 자산은 `outputs/rework-2026-10-06/baekje-celadon.md` 0단계 절.
- 1단계 완료 — R1 호림박물관 실측, R2 아모레퍼시픽미술관 실측, R3 motion-parallax §9.
- 2단계 완료 — 카드 3장 중 A "세 개의 벽"(위임으로 선택).
- 3단계 완료 — `styles/tokens.css`.
- 4단계 완료 — 레이아웃 → 듀오톤·유약 결 → scroll-driven.
- 5단계 완료 — html-validate·stylelint·no-hanja·showcase-audit·design-gate 통과, 루브릭 17/20.
- 6단계 완료 — 이 문서.
## 브리프
- 무엇을: 고려청자 특별전 "비색, 1,280°C" 안내 페이지 한 장. 전시실 두 곳(빙렬·상감)과 관람 안내.
- 누구에게: 전시를 보러 갈지 정하려는 관람객. 유약 접사를 보고 전시실 구성을 읽은 뒤 기간·시간을 확인한다.
- 제약: 정적 HTML/CSS, JS 없음. 기존 이미지 3장만 쓴다(새 이미지 생성 금지). 가상 전시라 장소·연락처·관람료가 없다. 기본 언어 ko-KR(대화 언어·기존 로컬라이제이션). 배정값(plan.md): 전면 이미지 히어로 · 한 줄 큰 낱말 · 표제부 차례 · 연락처·시간 카드 푸터 · Song Myung / Noto Sans KR · #0f1a18 · 167° · 4px · scroll-driven · feTurbulence · 듀오톤·풀블리드.
- 화면: `index.html` 하나. 2차 페이지 없음.
## 미확정
- `[관람료]` — 푸터 카드. 가상 전시라 값이 없다.
- `[전시 장소와 주소]` — 푸터 카드.
- `[문의 전화]` — 푸터 카드.
- 표식은 `--placeholder-line`(점선 밑줄) 하나로 통일했다. 실제 값이 오면 `index.html` 푸터 `dl` 세 자리만 바꾼다.
- 방향 선택은 위임이었다(아래 "방향").
## 레퍼런스
| 슬롯 | 출처 | 실측(2026-10-06, Playwright 1440×900) | 가져온 원리 |
|---|---|---|---|
| R1 구조 | 호림박물관 https://www.horimmuseum.org/ | 헤더 72px 아래 전시 포스터 1440×668 풀블리드. 푸터(높이 160)가 분관 2곳의 주소·개관 요일·시간·전화 카드 열, 14px | 전면 이미지 한 장 + 연락처·시간 카드 푸터가 실제 박물관 사이트의 조합이다. 카드 항목 순서(장소 → 시간 → 전화)를 따랐다 |
| R2 톤 | 아모레퍼시픽미술관 https://apma.amorepacific.com/ | body rgb(39,38,43) 위 1440×900 전면 이미지 한 장이 첫 화면 전부 | 어두운 바탕 + 전면 이미지. 예약 모달이 떠 표제 위치는 미검증 |
| R3 디테일 | `references/motion-parallax.md` §9, `motion.md` §3 [WEB-BASELINE] | 최상단 요소는 `scroll(root block)`, `@supports` 가드 안에 초기 상태, `transform`만 | 히어로 접사의 확대·이동 구현 계약 |
못 연 곳: 리움(게이트 페이지), 국립중앙박물관(리다이렉트 루프), The Met(429). "표제가 사진 하단에 있는 전시 페이지"의 실제 사례는 미검증이고 layout.md §2-b("글은 사진 위 띠나 사진 아래로")를 근거로 썼다. 장르 필수 블록은 genre-conventions §9.
## 방향
**지문**: 전면 이미지(유약 접사 풀블리드 100svh, 표제 하단) · Song Myung / Noto Sans KR · 청록빛 먹 #0f1a18 · 강조 #84c3a9(OKLCH 167°) · radius 4px · 흐름 전면 접사(차례) → 제1실(글 + 주자 세로 사진) → 제2실(상감 접사 풀블리드 띠 → 글) → 관람(동선·해설·예약) → 푸터 카드 · 내비 표제부에 녹인 차례(번호 + 이름 + 한 줄) · 푸터 연락처·시간 카드 · 이미지 듀오톤 3장, 풀블리드 2곳, 캡션 아래 · 모션 scroll-driven 확대·이동 2곳, 그 밖에 없음.
- 한 문장 컨셉: 관람객이 유약 접사를 화면 가득 보고, 전시실 두 곳의 차례를 그 자리에서 읽은 뒤 기간·시간을 확인한다. 섹션 하나가 암실의 벽 하나다.
- 프리셋: editorial(콘텐츠가 주인공)을 지배로 두되 서체·배경·강조는 배정값. 보조 축 없음.
- 표현 리스크: 히어로 접사의 scroll-driven 확대(1 → 1.14)와 상감 띠의 세로 이동(±4%). 과업 적합 이유 — 유약 표면에 다가가는 동작이 "접사로 본다"는 컨셉 그 자체다. 검증 — 스크롤 50% 지점에서 computed transform `matrix(1.07, …)`, 상감 띠 `translateY -11px` 실측. 감소 모션·미지원 브라우저는 정지.
- 히어로 글 묶음: 라벨 없음 / 한 줄 큰 낱말(전시명) / 한 문장 리드 / 행동 없음(차례가 다음 정보로 이어진다).
제시한 카드(위임): A 세 개의 벽 · B 접사 한 장, 아래는 도록(전시실 2열 격자) · C 가로 띠 차례(사진 아래 단색 띠에 전시명+차례, 분할 2회). **A를 골랐다** — 브리프의 "전시실마다 조명 하나와 청자 한 점"이 섹션 = 벽 구조와 맞고, R1 호림이 포스터를 풀블리드로 두고 글을 아래 둔 구조였으며, 배정 "듀오톤·풀블리드"가 A에서만 두 곳에 쓰인다. 기각 — B는 접사가 작아져 결이 안 보이고, C는 분할 반복으로 05 계측 수렴 군에 다시 붙는다. 카드 전문은 `outputs/rework-2026-10-06/baekje-celadon.md`.
반사실 점검(5단계 렌더): 고유 요소 — 빙렬 접사 전면 사진, h1의 "1,280°C", 차례 "1 빙렬 / 2 상감"(이 전시의 전시실 구성). 같은 업종 치환(다른 도자 전시)에서 셋 다 바뀌어야 한다. 다른 업종(세무사무소)에서 전면 접사·차례·카드 푸터가 모두 쓸모없다 → 통과. B-1 5축(이전 baekje·다른 쇼케이스 대비): 구도 다름·표제 서체 다름·eyebrow 없음(다름)·CTA 없음(다름)·캡션 문장형 마침표(다름) → 0/5. B-2 6축: 섹션 흐름·글 묶음·내비·푸터·이미지 처리·모션 전부 다름 → 0/6. `tools/similarity.mjs`(읽기 전용 실행) 상위 30쌍에 baekje 없음.
보존 자산: 전시명, 모든 사실 문구·수치(1,280°C, 철분, 백토·자토, 기간·시간·해설), 이미지 3장, 앵커 id `room-1`·`room-2`·`visit`·`main`, 파비콘 주자 실루엣, 가상 전시 고지 1회.
## 토큰과 예산
값은 `styles/tokens.css`. 역할과 이유:
- 타입: 본문 16/1.7(Noto Sans KR 400 하나), 리드 19, 섹션 제목 24→36, h1 44→120(한 줄 큰 낱말, 1440에서 본문의 7.5배), 전시실 번호 64→144. 캡션 13px이 한글 하한.
- 색: `--surface` #0f1a18(배정), `--ink` #e8ece9, `--ink-muted` #aab6b0(8.9:1), `--ink-faint` #8a9892(5.6:1, 캡션), `--accent` #84c3a9 — similarity.mjs의 OKLCH 기준으로 167°에 맞췄다(sRGB HSL 기준 165°). 강조는 차례 번호·전시실 번호·포커스·hover 밑줄에만.
- 듀오톤 램프: 그림자 #0f1a18 → 중간 #589a8a → 하이라이트 #cfe3da. `index.html`의 `#duotone` 필터 값과 같다.
- 간격: 8px 리듬, 벽 사이 `--space-8` 5→11rem이 의도된 극단.
- radius 4px(배정) — 주자 사진과 푸터 카드에만.
- `--measure` 34em.
예산(tokens §5)과 실측(로컬 file://, Playwright Chromium, 2026-10-06):
| 항목 | 예산 | 실측 | 판정 |
|---|---|---|---|
| 히어로까지 JS | 150KB | 0KB(스크립트 없음) | 통과 |
| 첫 화면 전송량 | 1MB | 이미지 115KB + 폰트 438KB + 폰트 CSS(압축 전 151KB) ≈ 0.7MB | 통과 |
| LCP(lab proxy) | 2.5s | 1440: 308ms(h1) · 390: 260ms(.lead). 크롬은 필터 걸린 히어로 이미지를 LCP 후보로 잡지 않았다 | 통과(lab) |
| CLS(lab proxy) | 0.1 | 1440: 0.0002 · 390: 0.024 | 통과 |
| 폰트 패밀리 | 2 | Song Myung 400 + Noto Sans KR 400 | 통과 |
| **폰트 전송량** | 100KB(기본) → **200KB(데모 등급으로 올림)** | **438KB** — Noto Sans KR 17슬라이스 176KB + Song Myung 12슬라이스 263KB | **초과** |
폰트 초과를 숨기지 않는다. Google Fonts 한글 슬라이스는 Noto Sans KR 하나만으로도 176KB라 100KB 기본선은 이 서체 배정 자체로 닿을 수 없다. 줄이는 선택지: 섹션 제목(h2) 세 줄을 Noto Sans KR로 바꾸면 Song Myung이 4슬라이스 80KB로 줄어 총 255KB(실측). 표제 서체가 전시실 제목까지 이어져야 한 전시로 읽힌다고 판단해 유지했고, 결정은 호출자에게 넘긴다. Noto Sans KR 500은 지워 144KB를 줄였다(강조는 색으로).
## 이펙트와 폴백
- 듀오톤(`#duotone`, feColorMatrix + feComponentTransfer, `color-interpolation-filters="sRGB"`): 사진 3장. 필터를 끄면 원본 사진 그대로 보인다(`final-1440-nofx-first.png`로 확인).
- 유약 결(`#glaze`, feTurbulence 2옥타브, 필터 영역 100%): `.hero-glaze` 정적 오버레이 한 장, soft-light 0.7. 움직이는 래퍼와 분리했다. 렌더 확인 — 오버레이만 찍어 G 채널 26~108 변동.
- scroll-driven: `@media (prefers-reduced-motion: no-preference)` 안의 `@supports (animation-timeline: scroll())`에만 있다. 초기 상태(transform 없음)가 가드 밖이므로 Firefox·감소 모션에서는 정지 화면이 완성본이다. 상감 띠는 scale 대신 높이 112%로 두고 세로로만 밀어 가로 오버플로를 만들지 않는다(감사가 clip 전 rect를 잰다 — 실측 실패 후 수정).
- `transform`·`opacity` 외 애니메이션 없음. `backdrop-filter` 없음(고정 바가 없다).
## 하지 않기로 한 것
- 상단 바·sticky 헤더·backdrop-filter: 섹션이 셋이고 차례가 곧 내용이라 표제부에 녹였다(layout §2-c).
- 스크롤 리빌(`.reveal` 19곳): 배정표에 없다. 전부 지웠다.
- 라벨(eyebrow)·버튼: 표제만으로 무엇의 페이지인지 알 수 있고 목표 행동이 "읽고 확인"이라 없다. 전시실 번호 옆 "제1실" 낱말은 라벨이 아니라 차례의 반복이다.
- 가운뎃점 메타 문자열: 가시 텍스트에서 0곳.
- 은유 표제 "환원 불에서만 남는 색": h1은 전시명으로 바꾸고 환원 불·철분은 리드의 사실 문장으로 옮겼다. 페이지에 은유 0곳.
- 장소·관람료·문의 값: 지어내지 않고 placeholder.
- MaruBuri 로컬 폰트(900KB)와 `fonts.css`: 배정 서체로 바뀌어 죽은 자산이라 지웠다.
- 새 이미지·og.png 생성: 금지. og:image는 빙렬 접사 webp 절대 URL.
## 검증
검증 줄: html-validate 0건 · stylelint 0건 · no-hanja PASS(3파일) · showcase-audit PASS 6/6(320·390·768·1440·1920·2560, 대비·오버플로·h1 1줄·깨진 이미지 0) · design-gate 충족 13 / 미검증 0 / 실패 0(죽은 선택자 0, 색 리터럴 0/0, radius 리터럴 0, 메타, 오버플로 5폭, h1 1줄(375·390 ×1·1.3), 수축 없음, 리듬, 대비 AA 46요소, 터치 타깃 4개, axe 0, 왼쪽 인셋 20px, 런타임 0) · 설정·리포트는 프로젝트 밖 스크래치.
실측(자동 검사 밖): 히어로 글자 뒤 실제 픽셀 대비(글자를 투명하게 하고 상자 안 최대 휘도) — 1440: h1 9.6:1, 리드 8.2:1, 차례 11.6:1 / 390: h1 9.4:1, 리드 7.7:1(수정 전 3.98:1 → 스크림 강화), 차례 14.4:1 / 1920: h1 12.4:1 · 표제 마지막 줄 어절 ≥2(h1·h2 전부, 390·1440) · 키보드: 스킵 → 차례 3 → 끝, 포커스 outline solid · 768·1920·2560 레이아웃 확인(2560에서 상감 띠 폭이 줄던 결함 수정) · 200% 확대 근사(720×450) 가로 스크롤 없음, h1 1줄.
시각 루브릭(critique §2-1, 약한 축부터, 캡처 `scratchpad/baekje/shots/final-*`):
| 축 | 점수 | 근거 | 다음 행동 |
|---|---|---|---|
| R3 묶음·정렬 | 1 | 1440 시작선이 넷(표제 열 80px, 번호 열, 본문 열, 차례 열 1099px). 묶음 사이 간격 > 안 간격은 성립 | 차례를 표제 열에 붙이면 셋이 되지만 표제부 차례의 뜻이 약해진다. 유지 |
| R9 디테일 | 1 | 200% 크롭에서 닿는 글리프·여백 0 없음. 2560에서 1600px 원본이 업스케일돼 접사가 무르다 | 원본 교체 전까지 유지 |
| R2 위계 | 1 | 1440 회색조: 사진 → h1 → 차례(의도와 같음). 390 회색조에서는 h1과 리드 3줄이 무게를 다툰다 | 390 리드를 2줄로 줄이는 안 검토 |
| R1 첫인상 | 2 | 3초 문장: "고려청자 특별전 '비색, 1,280°C', 유약 접사를 보고 빙렬·상감 두 전시실로 간다" — 컨셉 명사·동사와 일치, 1440·390 모두. 반례: "왜 좋은가"는 사실(1,280°C)로만 답한다 |
| R4 타이포 | 2 | 합성 굵기·사체 없음(400 하나씩), 마지막 줄 어절 ≥2, measure 34em, 제목은 서체+크기+색으로 대비. 반례 못 찾음 |
| R5 여백 리듬 | 2 | 100svh 히어로 → 벽 사이 11rem → 카드 안 2.5rem로 전환이 정보 단위와 일치. 극단은 h1 120px/본문 16px와 전면 사진/먹. 반례: 제3실 오른쪽 열이 빈다 |
| R6 이미지 | 2 | 슬롯 역할 셋(접사=히어로, 주자=제1실, 상감=제2실 띠), 크롭에서 주자·꽃이 남음, 듀오톤으로 한 세계. 반례: 320×568 첫 화면은 사진이 거의 안 보인다 |
| R7 카피 | 2 | 합니다체 하나, 표제·제목이 사실 문장, 은유 0, 경쟁 전시로 바꾸면 h1·차례·리드가 깨진다. 반례: "비색"은 청자 일반 용어 |
| R8 구분성 | 2 | 고유 요소 셋, B-1 0/5, B-2 0/6, similarity 상위 쌍 없음. 반례 못 찾음 |
| R10 모바일 | 2 | 390 첫 화면에 사진·제목·차례(이동 수단·다음 정보) 모두, h1 top 392px. 스크림·차례 목록을 좁은 화면용으로 다시 짰다. 반례: 320×568 |
합계 17/20, 0점 없음, R1·R8 2점 — 통과선 충족.
미검증: 실기기 INP·field CWV(RUM 없음) · WebKit 렌더(gate webkit=false) · 스크린리더 실청취(읽기 순서는 소스가 시각 순서와 같음) · Windows 고대비(forced-colors) · 실제 200% OS 확대(720×450 근사만).
## 피드백 기록 · 보존 목록
- 2026-10-06 재작업 전 피드백 없음. 보존: 전시명, 사실 문구, 이미지 3장, 앵커 id.
## 변경 기록
- 2026-10-06 · 05 계측 수렴 축 재작업(plan.md 배정) · 분할 히어로 → 전면 접사, 상단 바 → 표제부 차례, 고지 푸터 → 연락처·시간 카드, MaruBuri/Pretendard → Song Myung/Noto Sans KR, `.reveal` 19곳 삭제, 가운뎃점 5곳 삭제, h1 "환원 불에서만 남는 색" → 전시명, 섹션 제목을 사실 문장으로.
- 2026-10-02 · 카피 교정 · 번역체·잠언형 문장을 사실 문장으로("유약이 남긴 지도", "빛으로 읽습니다" 등 제거).
- 2026-10-02 · 레드팀 06 · 전시명 "비색의 침묵" → "비색, 1,280°C", 900px 미만에서 사진을 표제 앞으로, "예시" 표기 6회 → 1회.
- 2026-08 · 최초 제작 · editorial-archival, 암실 사진 주연.